Context and Problem Statement
Spec Kitty currently contains a vendored events module while also depending on external spec-kitty-events. This creates risk of contract drift and ambiguous authority for envelope/reducer semantics.
Additionally, consumer version pins are currently inconsistent across repositories.
Decision
spec-kitty-eventsis the sole contract authority.- CLI and SaaS MUST pin the same exact
spec-kitty-eventsversion. - Vendored event module in CLI is deprecated and scheduled for removal after migration gates pass.
- CI parity checks are required to prevent version drift.
- Runtime mission-next implementation is gated on mission-next contracts being published in
spec-kitty-events. - Consumers MUST NOT emit local-only mission-next event names outside published contracts.
Decision Drivers
- Deterministic cross-repo replay.
- Single source of truth for event contracts.
- Reduced semantic ambiguity during incident/debug workflows.
- Better release discipline across repositories.
Consequences
Positive
- Replay/projection parity becomes enforceable.
- Event contract evolution is explicit and auditable.
- Lower chance of hidden drift bugs.
Negative
- Requires coordinated release cadence and contract-bump workflow.
- Migration work to remove vendored compatibility layer.
Neutral
- Temporary compatibility shims may be needed during transition.
Enforcement
- Add CI checks for exact version parity in consumers.
- Add CI checks rejecting vendored-only contract extensions.
- Document contract-bump process in release notes.
- Add CI checks ensuring runtime mission-next event types map to published
spec-kitty-eventsconstants/payloads.