mosaic-coder
65692ccd49
fix(wake): #934 mount-free, privilege-invariant seq-integrity fault injection (T9/T11 run in non-priv CI)
...
ci/woodpecker/pr/ci Pipeline was successful
The seq-integrity fault-injection tests T9 (#908 arrow-1 no-burn) and T11 (#917
final-cursor gate + observed.set rollback) forced a write to fail via
`unshare --mount --user --map-root-user` + a bind-mount EBUSY-on-mountpoint. The
real Woodpecker runner is NON-privileged and DENIES mount-in-userns, so both
injections SKIPPED in CI — the allocator's most safety-critical invariants were
not exercised by the pipeline that gates merges (skipped-trust-layer, the class
#912 cured for the digest suite).
Replace the mount-based mechanism with a MOUNT-FREE, PROD-INERT fault seam in
_wake-common.sh _atomic_write, honored ONLY when the test-only env var
WAKE_TEST_FAULT explicitly names a write point (pending->pending.jsonl,
cursor->observed_seq). It forces the ALREADY-EXISTING fail-loud/rollback PATH
(#908/#917) to be taken for that one target and RUNS UNPRIVILEGED. No production
input can set a process env var, so with WAKE_TEST_FAULT unset the seam is a
no-op: on-disk format + allocator semantics are byte-for-byte unchanged in prod.
T9/T11 are converted to the seam; the unshare+bind-mount path and its
skip-when-unavailable guard/witness-marker are REMOVED. Both tests now RUN and
ASSERT their failure paths in every environment including non-priv CI.
Verified in a NON-privileged node:24-alpine container (unshare --mount DENIED):
T9 and T11 execute their injection (no SKIP), the failure paths fire, and the
fail-loud/rollback assertions pass; full `pnpm run test:framework-shell` rc=0.
Closes #934
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_0158NZqN2n2ymKFeJAZ4GUCb
2026-07-26 11:12:44 -05:00
9e81ffd7fc
fix(wake): #932 stop reconciler re-enumerating already-CONSUMED detector state ( #935 )
...
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:48:40 +00: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
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
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
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