@catalyst-cloud/schema 0.1.35 → 0.1.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@catalyst-cloud/schema",
3
- "version": "0.1.35",
3
+ "version": "0.1.37",
4
4
  "type": "module",
5
5
  "description": "Typed Drizzle schema = single source of truth for the per-tenant Mirror DO SQLite store (CTC-13 / ADR-0002). Shared by the mirror Worker, the host-sync replica, and the browser OPFS replica.",
6
6
  "license": "MIT",
@@ -82,6 +82,24 @@ export const durableEventTypes = {
82
82
  ingestVerb: "coordination.publish",
83
83
  wakes: { consumerClass: "host-channel" },
84
84
  },
85
+ "ask.replied": {
86
+ rationale:
87
+ "A human answered — or tried to answer — an ask in its own thread, and the mirror's ask-decision trigger reached a named outcome. ADR-0039's own durable-fact example ('a human answer was received'), applied to the customer-facing ask loop (CTC-1326). Wake-eligible because the operator learning about it LATE is the defect CTC-1326 exists to close: before this, the only surface was a 15-minute Linear read poll.",
88
+ // ⛔ NOT `webhook.ingest`, THOUGH A COMMENT WEBHOOK IS WHAT SETS IT OFF (CTC-1049 review). That verb
89
+ // carries a hard invariant this fact cannot satisfy: `test/webhook-event-types.test.ts` asserts the
90
+ // mapping is SURJECTIVE over the webhook.ingest slice — every type in it must be reachable from a
91
+ // raw (source, eventType, action) tuple — and the CTC-1049 gate enforces the same coverage from the
92
+ // other side. This type is not a mapping of a delivery; it is MINTED INSIDE the mirror DO after the
93
+ // ask-decision trigger runs (which itself calls Linear), so no fixture could ever produce it and
94
+ // declaring it webhook.ingest silently broke both checks the moment it was added.
95
+ // ⚠️ `coordination.publish` is the closest TRUE verb, not a perfect one: the operator copy really
96
+ // does arrive over a cross-DO publish, but the origin copy is appended in place. The registry has
97
+ // no verb for "minted by the mirror itself", which is a real gap worth a follow-up rather than a
98
+ // reason to mislabel this one.
99
+ ingestVerb: "coordination.publish",
100
+ wakes: { consumerClass: "host-channel" },
101
+ entity: "ticket",
102
+ },
85
103
  "broker.daemon.gc": {
86
104
  rationale:
87
105
  "The coordination broker daemon's own garbage-collection pass completing — a discrete lifecycle event of the process that OWNS the coordination log, worth recording to explain gaps in the log's own continuity.",