feat(next): carry explicit session lifecycle receipts
What changed
Carries an optional, explicitly produced lifecycle receipt through the current ACPmux session summary and the session sidebar mapper. Malformed evidence is dropped at the mapper boundary; existing status, placement, and icon rendering are unchanged.
Validation
bun scripts/acpmux-protocol-codegen.ts --checkrustfmt --edition 2024 --checkon changed Rust filesgit diff --check- Focused Bun test attempted but the checkout lacks the existing
@base-ui/utils/useIsoLayoutEffectdependency; no test failure from this change was observed.
This is protocol/data plumbing only; it does not resurrect the stale run-board stack or wire controller scheduling.
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Carries an optional, explicitly produced lifecycle receipt through the ACPmux session summary and the session sidebar mapper, replacing the old always-synthesized receipt. Summaries no longer always include qualifiedSessionId and sessionReceipt; only a valid explicit LifecycleReceipt is kept, and malformed evidence is dropped at the mapper boundary. Existing status, placement, and icon rendering are unchanged.
Protocol changes
- Adds an optional
LifecycleReceipt(id,sequence,source,state) to the session summary, present only when a producer supplies validated evidence; the hub no longer synthesizes receipt fields from local host data. - The sidebar mapper requires
id,state, andsourceto be non-empty andsequenceto be a positive safe integer, dropping the receipt otherwise.
Validation
- Adds Bun tests covering valid receipt preservation and malformed-evidence dropping; the focused suite is blocked by a missing
@base-ui/utils/useIsoLayoutEffectdependency in the checkout.