mosaic-coder and Claude Opus 4.8
ef43cc3be8
fix(wake): #912 exercise the digest/HMAC trust suite in real CI
...
Make the wake digest/HMAC suite RUN and PASS in the real Woodpecker CI
runner (Alpine/musl, root), then hard-require the HMAC legs in CI.
Root cause of the runner-only D1/D4/D5/D6 failures (a masked-local run
passed, so it was runner-specific): a TOOLCHAIN divergence, not locale or
root. digest.sh's _scrub_ctrl used GNU-sed `\xNN` hex-escape byte matching.
The CI runner is node:24-alpine, whose sed is BusyBox — BusyBox sed REJECTS
a `\xNN` character range ("bad regex ... Invalid character range"), aborting
the whole scrub sed and silently VOIDING the scrub. Every scrubbed value
collapsed to empty, cascading into D1 (blank locators), D4 (no scrub/redact,
SHA blanked), D5 (blank agent prefix), D6 (blank [digest] class). Confirmed
by reproducing the exact 9-assertion failure in the ci-base image as root.
Fix (at the correct layer — a wake digest must render identically on any
runner):
- digest.sh _scrub_ctrl: patterns are now LITERAL bytes (printf %b), matching
byte-identically under GNU sed (glibc dev) and BusyBox sed (Alpine CI).
Verified identical output on both. Contract preserved: two-tier trust,
exit-4 hard-locator FAIL-LOUD, secret-scrub, and 40-hex SHA preservation
all unchanged — deterministic, not weakened.
- test-wake-digest-hmac.sh D4: replaced PCRE `grep -qP` (BusyBox grep has no
-P; the `&&` silently skipped the check in CI) with portable literal-byte
`grep -E` ranges (two disjoint bidi/zero-width ranges, excluding legit
U+2014 em-dash).
CI enablement:
- Dockerfile.ci + .woodpecker/ci.yml test step: add openssl (the non-circular
HMAC signer) so H1/H2, beacon B12, install I8 can run. The apk add in the
test step covers PR pipelines before ci-base rebuilds.
- Flip the 3 openssl skip-guards (digest whole-file, beacon B12, install I8)
to HARD-REQUIRE openssl when CI is set (Woodpecker CI=woodpecker) and FAIL
loud if absent; KEEP the skip for openssl-less local dev.
- manifest.txt: wake 0.6.2 -> 0.6.3 (digest.sh scrub portability; precedent).
Red-first verified in the ci-base container (root): D4 catches a broken
redaction, H1 catches a tamper that doesn't break the MAC, B12/I8 catch a
corrupted signer.
Closes #912
Part of #892
Co-Authored-By: Claude Opus 4.8 <[email protected] >
Claude-Session: https://claude.ai/code/session_0158NZqN2n2ymKFeJAZ4GUCb
2026-07-26 02:49:44 -05:00
jason.woltje and Mos
d967a4a926
fix(wake): #914 digest renderer — WAKE_AGENT-prefixed ack line + digest-class locator threading ( #916 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-26 07:13:07 +00:00
jason.woltje and Mos
c585ac3326
test(wake): #918 de-flake T7 ack-no-network-block (sub-second timing) ( #919 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-26 06:46:28 +00:00
jason.woltje and Mos
e2ec927b1c
fix(wake): #908 unify observed_seq on a single store-side allocator (dissolve detector-private-counter seam) ( #915 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-26 06:02:02 +00:00
jason.woltje and Mos
2378665eaf
feat(wake): W7 A10 idempotent installer + mosaic-wake.service (component-manifest, Gate-A, blank-reset retire, snapshot-guard, fail-closed install-validate) ( #911 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-26 04:19:09 +00:00
jason.woltje and Mos
003cdaa1a6
feat(wake): W6 — off-host dead-man beacon + pluggable alarm-sink adapter ( #910 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-26 02:30:28 +00:00
jason.woltje and Mos
320f5bfb6f
feat(wake): W5 — synthetic-canary FN-oracle + source-parity reconciler ( #909 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-26 02:04:19 +00:00
jason.woltje and Mos
5df47e735e
feat(wake): W4 — per-host delta-gated detector daemon (fail-loud source semantics, enqueues to W2 store) ( #907 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-26 01:04:55 +00:00
jason.woltje and Mos
dd1391fd76
fix(wake): digest hard-locator gate covers top-level .claim entries ( Closes #905 ) ( #906 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-26 00:58:40 +00:00
jason.woltje and Mos
10d957d095
feat(wake): W3 — cumulative-state digest renderer + non-circular HMAC signer ( #904 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-26 00:32:12 +00:00
jason.woltje and Mos
28f022d9c0
feat(wake): W2 — three-cursor durable store + RECEIVED/CONSUMED ack-wrapper + watch-list schema ( #903 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-25 23:58:08 +00:00
jason.woltje and Mos
2726fab5e0
chore(framework): wire agent-send.test.sh into CI test:framework-shell (W1 follow-up) ( #901 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-25 23:23:24 +00:00
jason.woltje and Mos
ab6e8e80dc
fix(framework): send-message.sh fail-loud submission verdict + regression tests (Patch 6) ( #895 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-25 22:57:11 +00:00
jason.woltje and Mos
1933c6cb1d
feat(framework): accept digest message class in agent-send.sh (W1) ( #894 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-25 22:56:46 +00:00
jason.woltje and Mos
48a0c86093
fix(lease-broker): recovery_runtime_unittest wait_ready() connect-probe (co-equal CI flake, cherry-pick #898 ) ( #900 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-25 22:26:38 +00:00
jason.woltje and Mos
79c8647fd9
fix(lease-broker): wait_ready() polls real connect-readiness not socket-file existence (flaky CI race) ( #898 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-25 22:10:15 +00:00
jason.woltje and Mos
2483dada33
fix(framework): pr-review.sh -r/--repo + -H/--host overrides + UA + repo preflight (Patches 5/5c) ( #896 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-25 22:08:08 +00:00
jason.woltje and Mos
4c117afe03
docs(framework): add WAKE-DOCTRINE.md guide (W0) ( #893 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-25 21:57:51 +00:00
jason.woltje and Mos
2698ddb7b5
feat(comms): P1 presence — minimal Synapse + fleet presence room + mosaic.presence heartbeat + liveness ( #888 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-25 21:03:18 +00:00
jason.woltje and Mos
3c7890f17f
fix(framework): detect-platform get_gitea_token fail-loud on absent per-slot token (Patch 2b) ( #890 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-25 20:51:19 +00:00
jason.woltje and Mos
529c177830
fix(update): mosaic update runs the install-ordering guard post-reseed ( #882 --sync-only bypass) ( #883 )
...
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-23 22:18:34 +00:00
jason.woltje and Mos
a32ce4c8f9
feat(869-c4): activation version-coupling assertion (Part of #869 )
...
Part of #869
Mos (id-11) Gate-16 merge: independent APPROVE @90eb48fa (fail-closed identity locks byte-unchanged verified), author id2 != approver id11, clean mosaic-coder author, CI green wp1992. #869 Point-1 CODE COMPLETE (C1/C3/C5/C2/C4).
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-23 19:07:27 +00:00
jason.woltje and Mos
d351caad36
feat(869-c2): install-ordering enforcement-hook guard (Part of #869 )
...
Part of #869
Mos (id-11) Gate-16 merge: independent APPROVE @b6f36564 (8/8, verified vs real production settings template), author id2 != approver id11, clean mosaic-coder author, CI green wp1988.
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-23 18:48:33 +00:00
jason.woltje and Mos
76b86a246e
feat(869-c5): mosaic doctor activation-check (Part of #869 )
...
Part of #869
Mos (id-11) Gate-16 merge: independent APPROVE @e75e3238 (8/8), author id2 != approver id11, clean mosaic-coder author, CI green wp1987.
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-23 18:38:21 +00:00
jason.woltje and Mos
4422231bdb
feat: per-agent Gitea identity resolution ( #873 )
...
Closes #873
Mos (id-11) Gate-16 merge: independent APPROVE @4b472a22 (author-blocker dissolved via (a) re-author, identical tree hash to tech-approved head), author id2 != approver id11, clean mosaic-coder commit-author, CI green wp1985. Framework train COMPLETE 6/6.
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-23 18:09:34 +00:00
jason.woltje and Mos
8504216964
fix(pr-review): case-insensitive _belongs slug compare ( #875 )
...
Closes #875
Mos (id-11) Gate-16 merge: independent APPROVE @9d8d58ae, author id2 != approver id11, clean mosaic-coder commit-author, CI green wp1982.
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-23 17:53:26 +00:00
jason.woltje and Mos
7edc9b3121
fix(gitea): direct REST comment/review with fail-closed read-back ( #865 )
...
Closes #865
Mos (id-11) Gate-16 merge: fresh confirmatory independent APPROVE @8ac7e70f (1241-case fuzz 0 fail-open), author id2 != approver id11, clean commit-author, CI green wp1966.
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-23 17:25:32 +00:00
jason.woltje and Mos
2f50c0876b
feat(869-c3): lease-broker supervisor unit (Part of #869 )
...
Part of #869
Mos (id-11) Gate-16 merge: independent APPROVE @75235ef8 (9/9, no live host mutation), author id2 != approver id11, CI green wp1971.
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-23 17:19:48 +00:00
jason.woltje and Mos
db90da347e
feat(869-c1): activation-capability probe (Part of #869 )
...
Part of #869
Mos (id-11) Gate-16 merge: independent 3-round APPROVE @c5a2bcc5, author id2 != approver id11, CI green wp1973.
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-23 17:14:57 +00:00
jason.woltje and Mos
48fd1df28a
fix(ci-queue-wait): treat absent branch (404) as queue-clear ( #872 )
...
Closes #872
Mos (id-11) Gate-16 merge: independent review APPROVE @23cbdaf8, author jason.woltje(id2) != approver Mos(id11), CI green wp1974.
Co-authored-by: jason.woltje <[email protected] >
Co-committed-by: jason.woltje <[email protected] >
2026-07-23 17:08:57 +00:00
jason.woltje
b79336a8c1
feat(orchestrator): board-roll.sh — auto-roll LIVE board to LEDGER under byte cap ( #868 )
...
feat(orchestrator): board-roll.sh - auto-roll LIVE board to LEDGER under byte cap
Closes #868
2026-07-22 09:20:03 +00:00
jason.woltje
b0d78d8632
fix(mosaic): de-flake mutator-class lease gate TTL-expiry test ( #861 )
2026-07-20 10:32:45 +00:00
jason.woltje
344d86a635
fix( #812 follow-up): normalize detect-platform.sh host-match port comparison by scheme ( #859 )
2026-07-20 10:13:29 +00:00
jason.woltje
acd7d380f6
fix(framework): install deps on worktree bootstrap + legible deps-preflight at gate seam ( #856 ) ( #858 )
2026-07-20 09:38:12 +00:00
jason.woltje
3b70c66c07
fix(framework): drop unsupported --comment from tea pr approve/reject; route review body via durable comment ( #835 ) ( #857 )
2026-07-20 09:19:48 +00:00
jason.woltje
aa999daf1b
fix(framework): durable Gitea comment posting in pr-review.sh via REST + read-back verify ( #812 ) ( #852 )
2026-07-20 06:45:48 +00:00
jason.woltje
77c9a82614
fix(lease-broker): de-flake recovery_runtime b2 broker-socket ConnectionRefused race ( #849 ) ( #851 )
2026-07-20 06:44:37 +00:00
jason.woltje
627cf2bb38
docs(fleet): add operator configuration guide ( #789 )
2026-07-20 05:22:25 +00:00
jason.woltje
0582a8912b
WI-7 #834 : T-C server-side branch-protection posture + R1 honesty amendment ( #847 )
2026-07-20 04:20:02 +00:00
jason.woltje
2509eb7646
WI-6 ( #833 ): constrained recovery command + mosaic-context-refresh skill wrapper ( #846 )
2026-07-20 03:33:00 +00:00
jason.woltje
07553ead33
WI-5 #832 : Receipt-challenge protocol (compaction-refresh, milestone 188) ( #845 )
2026-07-19 23:18:56 +00:00
jason.woltje
e522b22fa4
WI-4 ( #831 ): verbatim-hashed normative fragments (B_payload/H_payload) ( #844 )
2026-07-19 20:34:20 +00:00
jason.woltje
e4d7d4502d
WI-3 ( #830 ): compaction observers → revoke + D4 same-PID generation auto-revoke ( #842 )
2026-07-19 19:46:28 +00:00
jason.woltje
8dfcf1903e
fix( #838 ): bound broker reply deadlines + fail-close empty-read; de-flake acceptance harness ( #839 )
...
Bound broker reply deadlines (separate read/lock/send budgets, BROKER_BUSY-before-mutation, fresh post-handle send budget → closes drop-after-commit window); fail-close empty/truncated read → GATE_UNAVAILABLE deny. De-flakes the 1917 acceptance surface. terra CODE APPROVE (pi) + Opus SECREV APPROVED (claude) — RoR comment 18143. Promote-lease-lost-ACK residual = fail-safe two-generals observability-gap, routed to WI-3 D2-v5 as named-disclosed-bounded-residual (route i). Gate-16 3-principal author=gpt-sol.
closes #838
2026-07-18 07:15:50 +00:00
jason.woltje
abd2791f59
feat(mosaic): WI-2 mutator-class guard for directive-freshness ( #837 )
...
WI-2: mutator-class guard for the compaction directive-freshness mechanism — command-position parser (prefix x var-indirection unified) + primitive-anchored invariant backstop + all-tools-hook fail-close. Parser-complete on principle: realistic evasion matrix RED-regression-covered, residual exotic evasions proven backstop-caught (B-tests), lens-convergence reached.
closes #829
2026-07-18 05:51:58 +00:00
jason.woltje
8ec67a1126
feat(mosaic): add authenticated external lease broker ( #836 )
2026-07-18 03:12:23 +00:00
jason.woltje
d801d6c4c8
feat(mosaic): add secure skill registration CLI ( #826 )
2026-07-17 23:45:35 +00:00
jason.woltje
d3bf52898b
fix: reject unknown installer arguments ( #825 )
2026-07-17 22:16:51 +00:00
jason.woltje
3f77229e88
fix( #792 ): fleet roster ENOENT actionable exit + installer heading printf ( #818 )
2026-07-17 21:36:36 +00:00
jason.woltje
686c881fe4
fix: fetch actual Gitea PR head for Codex reviews ( #815 )
2026-07-17 19:44:56 +00:00