Context
Scope-split from #14606, directed by Euclid's PR-#15030 review: density and liveness are separate contracts. This ticket owns the density contract the #14592 evidence froze; #14606 stays open for the liveness remainder (production activity-source composition, recurring refresh ownership beyond the one construction call, and a behavior-witnessing live-mount proof — its 2026-07-05 scope-correction comment remains that ticket's AC authority).
The Problem
Measured live rates (0.5–1 events/min sustained on a sprint day; ~3.6/min p95 burst) falsify the component's original bounds: a 15-row window over an UNBOUNDED held-event array with one-row-per-event rendering floods the glass under a same-actor burst and grows memory without limit.
The Fix (= PR #15030's delta)
- The ring —
bufferSize (200 ≈ 55min of the worst measured burst) caps the HELD events drop-oldest with the drop COUNTED; reactive INCLUDING the held payload (a runtime shrink re-bounds held events with cumulative drop accounting; invalid bounds refused — slice(-0) must never silently disable the ring).
- Coalescing — pure
coalesceActivity(events, gapMs) groups only PROVEN same-actor >2/min runs into one ×N row (missing/out-of-order timestamps and anonymous events stand alone).
- The window —
maxVisible 12 rows (evidence: 10–12); the fold is the honest "N earlier events" line counting EVENTS (folded runs + ring drops), never rows.
- The sample-fixture order fix (
FIXTURE_ACTIVITY rode against its own oldest→newest contract; the sample feed rendered upside-down).
Acceptance Criteria
Out of Scope
- Live activity-source composition + refresh ownership + live-mount behavior witness — #14606 (open).
- The burst e2e — #14607 (drives exactly these bounds once merged).
Related
Parent #14560 · split-from #14606 (stays open, liveness-scoped) · #14592 (the evidence) · #14607 (the falsifying sibling) · PR #15030 (resolves this).
Release classification: not release-blocking standalone (rides the cockpit epic).
Live latest-open sweep: newest #15036 checked 2026-07-11T13:1xZ; no equivalent. Structure-map gate: N/A — app-layer component scope, files exist.
Authored by Vega (Claude Fable 5, Claude Code). Session d2fbbdb4-404b-47e1-bbb3-1b9e0330894b.
Retrieval Hint: "ActivityStream density ring coalescing window re-freeze split"
Context
Scope-split from #14606, directed by Euclid's PR-#15030 review: density and liveness are separate contracts. This ticket owns the density contract the #14592 evidence froze; #14606 stays open for the liveness remainder (production activity-source composition, recurring refresh ownership beyond the one construction call, and a behavior-witnessing live-mount proof — its 2026-07-05 scope-correction comment remains that ticket's AC authority).
The Problem
Measured live rates (0.5–1 events/min sustained on a sprint day; ~3.6/min p95 burst) falsify the component's original bounds: a 15-row window over an UNBOUNDED held-event array with one-row-per-event rendering floods the glass under a same-actor burst and grows memory without limit.
The Fix (= PR #15030's delta)
bufferSize(200 ≈ 55min of the worst measured burst) caps the HELD events drop-oldest with the drop COUNTED; reactive INCLUDING the held payload (a runtime shrink re-bounds held events with cumulative drop accounting; invalid bounds refused —slice(-0)must never silently disable the ring).coalesceActivity(events, gapMs)groups only PROVEN same-actor >2/min runs into one ×N row (missing/out-of-order timestamps and anonymous events stand alone).maxVisible12 rows (evidence: 10–12); the fold is the honest "N earlier events" line counting EVENTS (folded runs + ring drops), never rows.FIXTURE_ACTIVITYrode against its own oldest→newest contract; the sample feed rendered upside-down).Acceptance Criteria
Out of Scope
Related
Parent #14560 · split-from #14606 (stays open, liveness-scoped) · #14592 (the evidence) · #14607 (the falsifying sibling) · PR #15030 (resolves this).
Release classification: not release-blocking standalone (rides the cockpit epic).
Live latest-open sweep: newest #15036 checked 2026-07-11T13:1xZ; no equivalent. Structure-map gate: N/A — app-layer component scope, files exist.
Authored by Vega (Claude Fable 5, Claude Code). Session d2fbbdb4-404b-47e1-bbb3-1b9e0330894b. Retrieval Hint: "ActivityStream density ring coalescing window re-freeze split"