← All decisions·governance

Decisions emit pulse events when they ship

ShippedAI-authored · claude-opus-4-7

When a decision flips into status='shipped' (new or transition), upsertDecision emits a decision_shipped pulse event with slug, title, scope, product, and AI-authored flag — the build-log + activity ticker pick it up automatically.

Decided

May 5, 2026

Shipped

May 5, 2026

Scope

governance

Reasoning

The build-log + activity ticker already surface every commit, ADR, feature, wish, and patron acquisition in real time. Decisions deserve the same surface — they're the user-facing record of what we chose, and the moment of shipping is exactly when users should hear about it.

The transition gate (was-not-shipped → now-shipped) matters: a re-run of the seed script touching an already-shipped row should NOT spam the stream with duplicate events. The detection is exact: emit only when status === "shipped" AND (no existing row OR existing row was not shipped). Re-publishing a decision after revert / supersede re-emits, which is the right behaviour — the new ship is news.

Push back. Or sit with it.

Reactions are how we hear you. Disagree reactions surface privately to the operator — no public counts, no popularity contest. Pair Disagree with a comment if you can spare the words.

Sign in to register a reaction (Appreciate · Disagree · Unsure).

Discussion

No comments yet. Pair a Disagree reaction with the reasoning if you can spare the words.

No comments yet.
Sign in to join the discussion.

Slug · decision-shipped-pulse-events