mosaic-coder
ce53b0e646
feat(wake): W7 (vi) fold in W6 monitor-integration hardening in beacon.sh
...
ci/woodpecker/pr/ci Pipeline failed
Separate, clearly-labeled commit for observation set (vi) from the #910 review.
The HMAC-verify half is a non-trivial blast radius (emit must sign, record must
verify-and-bind), so it is isolated here rather than expanding the installer diff.
Both changes are additive and backward-compatible (the legacy unsigned path and
emit_ts fallback are preserved when no key is configured).
(vi-a) Monitor-side ingested_ts: `record` stamps the monitor's own receive-time,
and `check` computes staleness from ingested_ts (falling back to emit_ts
only for a legacy record). A host shipping a far-future emit_ts to defer
its own staleness can no longer fool the off-host dead-man clock.
(vi-b) Beacon HMAC-verify at record: when a key name is configured
(WAKE_BEACON_HMAC_KEY_NAME / WAKE_HMAC_KEY_NAME), `emit` signs the beacon
core via the existing sign.sh sign-digest path and `record` verifies via
sign.sh verify AND binds the envelope to this beacon (content_hash ==
sha256(core), seq/emit_ts match). A spoofed or unsigned beacon is REJECTED
fail-loud and never advances the received clock. Key is by-name only —
beacon.sh inlines no key material.
test-wake-beacon.sh extended with B11 (ingested_ts staleness) and B12 (HMAC-verify
+ spoof/unsigned rejection); test-wake-install.sh gains I7/I8 for the same
invariants. Both harnesses shown red-first under targeted mutation, then green.
Part of #892
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_0158NZqN2n2ymKFeJAZ4GUCb
2026-07-25 22:07:46 -05:00
mosaic-coder
231ba2ef32
feat(wake): W7 A10 idempotent component installer + mosaic-wake.service
...
Framework install machinery for the wake component (EPIC #892 W7, the last
build slice). ADDITIVE per #869 : adds an `install.sh --component wake` early
dispatch that never enters the full-framework sync, never alters
framework-manifest ownership behavior, and touches nothing the #869
install-ordering-guard covers (no runtime-asset linking, no lease-enforcement
hook wiring).
(i) Idempotent component-manifest install + Gate A (wake-install.sh install):
the wake manifest.txt is VERSION METADATA ONLY; the component file set is
INTERSECTED-AND-VALIDATED against the single SSOT framework-manifest.txt.
A candidate the SSOT does not own is REFUSED fail-closed with no partial
write. Re-running writes zero files (no diff).
(ii) systemd/user/mosaic-wake.service — the long-lived detector daemon
(detector.sh run). Per-class SLO lives inside the daemon, not a systemd
interval; it is a SERVICE not a timer, so blank-reset does not apply.
(iii) blank-reset idiom on the legacy mosaic-heartbeat@<agent>.timer cadence
drop-in during the §5 overlap->retire lifecycle (empty OnUnitActiveSec=
reset before the new value => exactly one OnUnitActiveUSec), with a
reset->verify->retire acceptance path (retire LAST, only on §4-vector pass).
(iv) snapshot-guard — a reap/clean-checkout of a deployed unit is REFUSED
without a prior snapshot (the deployed-from-uncommitted failure class).
(v) fail-closed alarm-target + HMAC-key install-validation (G1/G2a): the
operator W6 alarm sink must be configured + reachable and the W3/W7 HMAC
key must resolve BY NAME; missing/unreachable => FAIL LOUD. The installer
ships/writes NO endpoint value and NO secret, and echoes neither.
Red-first harness test-wake-install.sh (6 groups) wired into test:framework-shell;
Gate-A parity extended to prove bash+TS both resolve the wake component paths
framework-owned. wake component manifest bumped 0.5.0 -> 0.6.0.
Part of #892
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_0158NZqN2n2ymKFeJAZ4GUCb
2026-07-25 22:00:48 -05: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
dc45eb7c30
feat(kbn): land KBN-101 Envelope A v6 (rc.20) — declarative sink-RBAC + RLS write-source (Form A) ( #902 )
...
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-25 23:58:18 +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
2726fab5e0
chore(framework): wire agent-send.test.sh into CI test:framework-shell (W1 follow-up) ( #901 )
...
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-25 23:23:24 +00:00
ab6e8e80dc
fix(framework): send-message.sh fail-loud submission verdict + regression tests (Patch 6) ( #895 )
...
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-25 22:57:11 +00:00
1933c6cb1d
feat(framework): accept digest message class in agent-send.sh (W1) ( #894 )
...
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 22:56:46 +00:00
48a0c86093
fix(lease-broker): recovery_runtime_unittest wait_ready() connect-probe (co-equal CI flake, cherry-pick #898 ) ( #900 )
...
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-25 22:26:38 +00:00
79c8647fd9
fix(lease-broker): wait_ready() polls real connect-readiness not socket-file existence (flaky CI race) ( #898 )
...
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-25 22:10:15 +00:00
2483dada33
fix(framework): pr-review.sh -r/--repo + -H/--host overrides + UA + repo preflight (Patches 5/5c) ( #896 )
...
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 22:08:08 +00:00
4c117afe03
docs(framework): add WAKE-DOCTRINE.md guide (W0) ( #893 )
...
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-25 21:57:51 +00:00
2698ddb7b5
feat(comms): P1 presence — minimal Synapse + fleet presence room + mosaic.presence heartbeat + liveness ( #888 )
...
ci/woodpecker/push/ci-image Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline failed
Co-authored-by: jason.woltje <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-25 21:03:18 +00:00
fabde1c834
docs(rfc): add RFC-001 (MACP/Matrix-native comms) + RFC-002 (install/config/topology) ( #886 )
...
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 21:02:54 +00:00
3c7890f17f
fix(framework): detect-platform get_gitea_token fail-loud on absent per-slot token (Patch 2b) ( #890 )
...
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-25 20:51:19 +00:00
529c177830
fix(update): mosaic update runs the install-ordering guard post-reseed ( #882 --sync-only bypass) ( #883 )
...
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-23 22:18:34 +00:00
a32ce4c8f9
feat(869-c4): activation version-coupling assertion (Part of #869 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
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 <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-23 19:07:27 +00:00
d351caad36
feat(869-c2): install-ordering enforcement-hook guard (Part of #869 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
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 <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-23 18:48:33 +00:00
76b86a246e
feat(869-c5): mosaic doctor activation-check (Part of #869 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was canceled
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 <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-23 18:38:21 +00:00
4422231bdb
feat: per-agent Gitea identity resolution ( #873 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
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 <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-23 18:09:34 +00:00
8504216964
fix(pr-review): case-insensitive _belongs slug compare ( #875 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
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 <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-23 17:53:26 +00:00
7edc9b3121
fix(gitea): direct REST comment/review with fail-closed read-back ( #865 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
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 <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-23 17:25:32 +00:00
2f50c0876b
feat(869-c3): lease-broker supervisor unit (Part of #869 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was canceled
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 <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-23 17:19:48 +00:00
db90da347e
feat(869-c1): activation-capability probe (Part of #869 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was canceled
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 <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-23 17:14:57 +00:00
48fd1df28a
fix(ci-queue-wait): treat absent branch (404) as queue-clear ( #872 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was canceled
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 <jason@diversecanvas.com >
Co-committed-by: jason.woltje <jason@diversecanvas.com >
2026-07-23 17:08:57 +00:00
b79336a8c1
feat(orchestrator): board-roll.sh — auto-roll LIVE board to LEDGER under byte cap ( #868 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline failed
feat(orchestrator): board-roll.sh - auto-roll LIVE board to LEDGER under byte cap
Closes #868
2026-07-22 09:20:03 +00:00
4e5af23214
Merge pull request 'skills: add glpi-* family (solve, followup, sweep, list, create)' ( #863 ) from feat/glpi-skills into main
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-21 01:09:50 +00:00
Hermes Agent
880c28b191
docs(glpi-skills): genericize operator-specific content per review
ci/woodpecker/pr/ci Pipeline was successful
2026-07-20 19:45:50 -05:00
Jason Woltje
7bc2dfb6c8
skills: add glpi-* family (solve, followup, sweep, list, create)
...
ci/woodpecker/pr/ci Pipeline was successful
GLPI helpdesk workflow skills written against the portable
tools/glpi/ tooling (session-init.sh, ticket-list.sh, ticket-create.sh),
cross-linked via [[glpi-*]]:
- glpi-solve — close a ticket by setting status Solved (5); GLPI auto-closes
- glpi-followup — add a followup via the top-level /ITILFollowup endpoint
- glpi-sweep — read-only hunt for done-but-open tickets needing Solve
- glpi-list — query tickets by status/recency
- glpi-create — open a new ticket
Core rule encoded: completing work means setting status Solved, not just
posting a resolution followup (a followup documents; only Solved auto-closes).
Note: illustrative examples in the bodies are USC-flavored (M2M / helpdesk
ticket numbers) and can be genericized in review if preferred.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_019GjBgrb9tHgvq414Fqj37c
2026-07-20 18:04:53 -05:00
b0d78d8632
fix(mosaic): de-flake mutator-class lease gate TTL-expiry test ( #861 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-20 10:32:45 +00:00
344d86a635
fix( #812 follow-up): normalize detect-platform.sh host-match port comparison by scheme ( #859 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-20 10:13:29 +00:00
acd7d380f6
fix(framework): install deps on worktree bootstrap + legible deps-preflight at gate seam ( #856 ) ( #858 )
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/push/publish Pipeline was successful
2026-07-20 09:38:12 +00:00
3b70c66c07
fix(framework): drop unsupported --comment from tea pr approve/reject; route review body via durable comment ( #835 ) ( #857 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-20 09:19:48 +00:00
11d2818453
docs(tasks): FCM-M5-001 done — verified completion evidence (supersedes #848 ) ( #853 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-20 07:45:08 +00:00
aa999daf1b
fix(framework): durable Gitea comment posting in pr-review.sh via REST + read-back verify ( #812 ) ( #852 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-20 06:45:48 +00:00
77c9a82614
fix(lease-broker): de-flake recovery_runtime b2 broker-socket ConnectionRefused race ( #849 ) ( #851 )
ci/woodpecker/push/publish Pipeline was canceled
ci/woodpecker/push/ci Pipeline was canceled
2026-07-20 06:44:37 +00:00
627cf2bb38
docs(fleet): add operator configuration guide ( #789 )
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/push/publish Pipeline was successful
2026-07-20 05:22:25 +00:00
0582a8912b
WI-7 #834 : T-C server-side branch-protection posture + R1 honesty amendment ( #847 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-20 04:20:02 +00:00
2509eb7646
WI-6 ( #833 ): constrained recovery command + mosaic-context-refresh skill wrapper ( #846 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-20 03:33:00 +00:00
07553ead33
WI-5 #832 : Receipt-challenge protocol (compaction-refresh, milestone 188) ( #845 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-19 23:18:56 +00:00
e522b22fa4
WI-4 ( #831 ): verbatim-hashed normative fragments (B_payload/H_payload) ( #844 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-19 20:34:20 +00:00
e4d7d4502d
WI-3 ( #830 ): compaction observers → revoke + D4 same-PID generation auto-revoke ( #842 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-19 19:46:28 +00:00
8dfcf1903e
fix( #838 ): bound broker reply deadlines + fail-close empty-read; de-flake acceptance harness ( #839 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
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
abd2791f59
feat(mosaic): WI-2 mutator-class guard for directive-freshness ( #837 )
...
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/push/publish Pipeline was successful
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
8ec67a1126
feat(mosaic): add authenticated external lease broker ( #836 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-18 03:12:23 +00:00
d801d6c4c8
feat(mosaic): add secure skill registration CLI ( #826 )
ci/woodpecker/push/ci-image Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-07-17 23:45:35 +00:00