mosaic-coder
009e78a190
fix(wake): #932 stop reconciler re-enumerating already-CONSUMED detector state
...
ci/woodpecker/pr/ci Pipeline was successful
Wake-pilot finding #7 (safe-but-noisy G2a alarm-hygiene): after
consume-truncation a consumed detector-observed state matched NO accounting
record — the inbox was truncated, the reconciler's seen-ledger only covers its
OWN enumerations, and the detector hash-file is correctly DISTRUSTED — so the
reconciler treated it as UNACCOUNTED and re-enumerated it: one DUPLICATE
orientation wake + one SPURIOUS rc=1 CRITICAL per detector-active window per
cycle (functionally safe, no lost obligation, but cry-wolf erosion at fleet
scale).
Fix (Mos ruling, built exactly):
1. store.sh records the last-consumed observed_hash per (kind,id) at
consume-truncation into a NEW store-owned durable record
consumed-hashes.jsonl (atomic write; ADDITIVE — existing on-disk format
unchanged/read-compatible; #908 allocator untouched).
2. reconcile.sh adds a THIRD accounting source alongside the inbox and its
seen-ledger: a detector-observed state whose observed_hash MATCHES the
store's recorded last-consumed hash for that (kind,id) is ACCOUNTED — not
re-enumerated (no dup wake, no spurious CRITICAL).
3. Trust boundary (load-bearing): the 3rd check consults ONLY the
store-written record. Its existence implies the state was durably
enqueued+consumed, so it structurally cannot exhibit the §5
hash-advance-without-enqueue swallow signature. Trusting DETECTOR
hash-files STAYS REJECTED.
4. G3 not weakened: only states the store RECORDED as consumed are
suppressed. A genuinely-unaccounted state (enqueued-but-unconsumed, still
in the inbox, OR a real gap) still re-enumerates + alarms.
Red-first tests:
- store-ack T12: consume writes the store-owned last-consumed record
(per-(kind,id), monotonic last-seq wins, lazily created).
- reconcile R10: a consumed state is ACCOUNTED (rc=0, UNACCOUNTED=0, no
re-enumeration).
- reconcile R11: pilot repro — consumed state SUPPRESSED while a distinct
unconsumed/gap state STILL re-enumerates (G3 teeth intact; no
over-suppression).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_0158NZqN2n2ymKFeJAZ4GUCb
2026-07-26 10:34:39 -05:00
9becaf877f
fix(wake): #917 gate the final observed_seq cursor write + observed.set/cursor consistency (defense-in-depth) ( #933 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 15:14:38 +00:00
17087efe15
fix(wake): #925 framework-ship canon fallback-wake (systemd timer + schema bound + A10 install/validate) — F7 out of the box ( #931 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 13:44:51 +00:00
0ea41e848b
fix(wake): #913 installer adoption gaps — _lib dep-check fail-loud + mosaic-wake.service systemd-search-path link+validate ( #930 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 12:37:29 +00:00
347c1d57c1
fix(wake): #924 route dead-letter quarantine alarm via WAKE_ALARM_SINK_CMD with per-observed_seq dedup (G2a) ( #929 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 11:45:09 +00:00
13e6ce5e5c
fix(wake): #927 enqueue TOCTOU — move stale-tmp cleanup off the hot enqueue path (no concurrent in-flight-write clobber) ( #928 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 10:56:40 +00:00
90265ef550
test(wake): #923 de-flake T10 concurrent-enqueue race (deterministic barrier) ( #926 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 10:23:07 +00:00
937a276208
fix(wake): #920 quarantine render-refused drain entry (no head-of-line block) + reconciler enumerations render orientation-tier (reconciled:true, render-tier not class=digest) ( #922 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 08:45:51 +00:00
712c770b7a
fix(wake): #912 exercise the digest/HMAC trust suite in real CI (fix runner divergence + openssl + hard-require) ( #921 )
...
ci/woodpecker/push/ci-image Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 08:11:28 +00:00
d967a4a926
fix(wake): #914 digest renderer — WAKE_AGENT-prefixed ack line + digest-class locator threading ( #916 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 07:13:07 +00:00
c585ac3326
test(wake): #918 de-flake T7 ack-no-network-block (sub-second timing) ( #919 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 06:46:28 +00:00
e2ec927b1c
fix(wake): #908 unify observed_seq on a single store-side allocator (dissolve detector-private-counter seam) ( #915 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 06:02:02 +00:00
2378665eaf
feat(wake): W7 A10 idempotent installer + mosaic-wake.service (component-manifest, Gate-A, blank-reset retire, snapshot-guard, fail-closed install-validate) ( #911 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 04:19:09 +00:00
003cdaa1a6
feat(wake): W6 — off-host dead-man beacon + pluggable alarm-sink adapter ( #910 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 02:30:28 +00:00
320f5bfb6f
feat(wake): W5 — synthetic-canary FN-oracle + source-parity reconciler ( #909 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 02:04:19 +00:00
5df47e735e
feat(wake): W4 — per-host delta-gated detector daemon (fail-loud source semantics, enqueues to W2 store) ( #907 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 01:04:55 +00:00
dd1391fd76
fix(wake): digest hard-locator gate covers top-level .claim entries ( Closes #905 ) ( #906 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was canceled
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 00:58:40 +00:00
10d957d095
feat(wake): W3 — cumulative-state digest renderer + non-circular HMAC signer ( #904 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-26 00:32:12 +00:00
28f022d9c0
feat(wake): W2 — three-cursor durable store + RECEIVED/CONSUMED ack-wrapper + watch-list schema ( #903 )
...
ci/woodpecker/push/publish Pipeline was canceled
ci/woodpecker/push/ci Pipeline was canceled
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-25 23:58:08 +00:00