feat(next): carry explicit session lifecycle receipts

Merged
TE
19d ago
+130-13

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 --check
  • rustfmt --edition 2024 --check on changed Rust files
  • git diff --check
  • Focused Bun test attempted but the checkout lacks the existing @base-ui/utils/useIsoLayoutEffect dependency; 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.


View with [code]smith Autofix with [code]smith
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, and source to be non-empty and sequence to 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/useIsoLayoutEffect dependency in the checkout.