Disciplines · Audits

Eve watcher semantics record — 2026-09-09

Product consumers of this watcher API: 0.

5sections2 minread

On this page
  • Task: 7.3
  • Scope: pre-ui watcher semantic contract and persistence boundary
  • Record digest: 51b65cb7dc4b1355318f36220ee6d21a83c8dd844ae34c4ee0a607487cc47f69
  • Product admission: not-admitted
  • Phase/gaps: open

Semantic decisions#

Area Decision
Source and truth Event and polling sources are distinct; truth is a bounded declarative DSL with no code or model.
Evidence Past age is definition-bound; future skew is 30000 ms. Unauthorized evidence cannot advance a checkpoint.
Delivery at-least-once; canonical SHA-256 key; no exactly-once claim. Dispatch requires authority, durable CAS, invocation, then settlement.
Missed runs and time skip, latest, bounded backfill; IANA zones; real-instant DST traversal; local quiet hours.
Budgets Fixed window over evaluations, unique-deliveries, delivery-attempts, tokens, cost-microusd.
Failure Capped exponential retry, categorical errors, terminal dead_letter.
Authority Rechecked for evaluate, deliver-every-attempt, manage, erase across every exact subject/resource/time binding.
Lifecycle active, paused, cancelled, expired; cancellation is terminal and expiry covers active/paused.
Restart Initial creation cannot overwrite; interrupted dispatch returns pending with the same key/attempt count; revisions use compare-and-set.
Privacy Only allowlisted scalar evidence paths persist; cancellation/retention/exact-subject erasure are explicit; credentials are excluded.

Implementation boundary#

  • libs/oshun/assistant/src/watchers/watcher-contract.ts
  • libs/oshun/assistant/src/watchers/watcher-engine.ts
  • libs/oshun/assistant/src/watchers/watcher-store.ts
  • libs/oshun/assistant/src/watchers/postgres-watcher-store.ts
  • libs/oshun/assistant/src/watchers/index.ts

Product consumers of this watcher API: 0. No UI tool is present and no worker starts. Tasks 7.4 and 7.5 own admission and live reliability.

Automated verification#

  • libs/oshun/assistant/src/watchers/watcher-contract.spec.ts
  • libs/oshun/assistant/src/watchers/watcher-engine.spec.ts
  • libs/oshun/assistant/src/watchers/watcher-store.spec.ts

Layers: contract, state-machine, in-memory-restart, postgres-sql-boundary.

Source evidence#

Path Digest of SHA-256 Bytes
EVE_SOTA_GAP_CLOSURE_TODOS_2026-09-01.md task-requirement 8acf66c44561ed36aa456a6bdca78903b09a3411ae807565d46466534c5f5f0c 316
libs/oshun/assistant/src/watchers/watcher-contract.ts file-bytes 17cbfdfe938f975b6a35b575572236b62ce51b5ee87507ef81b33a40f218100c 26900
libs/oshun/assistant/src/watchers/watcher-engine.ts file-bytes 07c5b254279e0f140ffc7851b4fa878cfbf7a9730b480036e317ca052a3639f6 20053
libs/oshun/assistant/src/watchers/watcher-store.ts file-bytes dbeb189921200125e2efb6a857f6310bde2da9d03ad61662b3c79c5ed39d209a 9916
libs/oshun/assistant/src/watchers/postgres-watcher-store.ts file-bytes 43a5f5fe3faed7b8018a0bdb5ae4fc42576f002cc1e4f83b49a3cc394a8113a1 6354
libs/oshun/assistant/src/watchers/index.ts file-bytes 303b3e3c3a483b6a976e017b76c2a7e8af650da0d3a62139b97044513a8810c8 145
docs/adr/ADR-0081-eve-watcher-semantics-before-ui.md file-bytes 9c19467c4ea22a8b102e1d6ecceb3fcf2eb3e33f7cac79346b821c309fdd019b 7439
libs/oshun/assistant/src/watchers/watcher-contract.spec.ts file-bytes b018a96649ee65dd6ee3d991a58c352f928f8697483f51eeaa9f92604e8a8195 11783
libs/oshun/assistant/src/watchers/watcher-engine.spec.ts file-bytes 30c635008d919d54b1895e8772795edd1f9ae73f03e778178327f3cb3c288a5a 14011
libs/oshun/assistant/src/watchers/watcher-store.spec.ts file-bytes c5321d58a073358a1cb767a48beb2700602c4b127ac4809fb88db6a9c93cfb99 10907

Honest limits#

  • No real event stream, polling source, destination, or Postgres service ran for Task 7.3.
  • Cron occurrence enumeration and worker orchestration are not implemented by this semantic substrate.
  • The SQL boundary is tested, but a live database restart and distributed race remain unproved.
  • At-least-once delivery can redeliver after an acknowledgement crash; downstream adapters must honor the stable idempotency key.
  • User-facing tools and notifications remain gated to Task 7.4; live reliability breadth remains Task 7.5.

Task 7.3 is closed by this contract. Phase 7 and G3/G11/G12/G13/G14/G15/G16/G17/G18 remain open.