Context
T3.11 sub-slice of Epic #14560, extracted from #14606 during PR #14827's cross-family review (@neo-gpt). #14606 bundled a unit-provable component with host-gated live wiring. V-B-A confirmed the split is real, not cosmetic: no cockpit host view exists yet (apps/agentos/view/fleet/ is all leaf components — no container mounting them), and the activity adapters are server-side services (ai/services/fleet/fleetA2AActivityAdapter.mjs, fleetPrLaneActivityAdapter.mjs), not client stores the component binds to directly. So #14606's live-binding + NL-mount ACs are structurally blocked on a host that isn't built. This leaf is the component half — unit-provable in isolation, no host required.
Scope (delivered by PR #14827)
apps/agentos/view/fleet/ActivityStream.mjs:
boundActivity(events, maxVisible) — the pure backpressure core (newest maxVisible, newest-first, folded overflowCount); unit-provable in isolation.
- The component (
extends Container) — liveness header, bounded event rows (time · kind chip · text), "N more" fold; rebuilt bounded on every events change so the rendered child count never exceeds the window.
- Kind rendering delegates entirely to #14594 EventChip (zero local kind logic; unknown → neutral).
- Honest degrade —
adapterState: 'stale' renders a stale header, never a blanked/frozen feed (component-level, config-driven).
.fm-activity-stream CSS anatomy (token-only, per the cockpit-plan stream).
Acceptance Criteria
Out of Scope (remain OPEN on #14606)
- Live binding to the #14572/#14573 activity adapters.
- NL-verifiable live mount.
- Burst e2e (T3.13).
All three are gated on the cockpit host view (not yet built); tracked on #14606, which stays open.
Related
Epic #14560 (parent) · extracted-from #14606 (stays open for binding/mount) · composes #14594 (EventChip) · #14592 (density numbers) · delivered by PR #14827.
Live latest-open sweep this turn (newest #14830); no equivalent component-slice ticket exists.
Origin Session ID: 3bc21462-8122-4b02-81e4-324ed781e1ac (@neo-opus-vega · Opus 4.8)
Context
T3.11 sub-slice of Epic #14560, extracted from #14606 during PR #14827's cross-family review (@neo-gpt). #14606 bundled a unit-provable component with host-gated live wiring. V-B-A confirmed the split is real, not cosmetic: no cockpit host view exists yet (
apps/agentos/view/fleet/is all leaf components — no container mounting them), and the activity adapters are server-side services (ai/services/fleet/fleetA2AActivityAdapter.mjs,fleetPrLaneActivityAdapter.mjs), not client stores the component binds to directly. So #14606's live-binding + NL-mount ACs are structurally blocked on a host that isn't built. This leaf is the component half — unit-provable in isolation, no host required.Scope (delivered by PR #14827)
apps/agentos/view/fleet/ActivityStream.mjs:boundActivity(events, maxVisible)— the pure backpressure core (newestmaxVisible, newest-first, foldedoverflowCount); unit-provable in isolation.extends Container) — liveness header, bounded event rows (time · kind chip · text), "N more" fold; rebuilt bounded on everyeventschange so the rendered child count never exceeds the window.adapterState: 'stale'renders a stale header, never a blanked/frozen feed (component-level, config-driven)..fm-activity-streamCSS anatomy (token-only, per the cockpit-plan stream).Acceptance Criteria
adapterState, not the live adapter).Out of Scope (remain OPEN on #14606)
All three are gated on the cockpit host view (not yet built); tracked on #14606, which stays open.
Related
Epic #14560 (parent) · extracted-from #14606 (stays open for binding/mount) · composes #14594 (EventChip) · #14592 (density numbers) · delivered by PR #14827.
Live latest-open sweep this turn (newest #14830); no equivalent component-slice ticket exists.
Origin Session ID: 3bc21462-8122-4b02-81e4-324ed781e1ac (@neo-opus-vega · Opus 4.8)