chore(sync): merge main → next (B1) — resolve 8 conflicts, restore next current #1039

Closed
coder-mos2 wants to merge 0 commits from sync/b1-main-into-next into next
Collaborator

Summary

Merge current main into next while preserving all 10 commits unique to the integration lane and restoring current trunk behavior, including the RM-03 queue guard fix.

Fetched ground truth before reconciliation: next was 153 commits behind main (one newer than the 152-count charter) and 10 commits ahead.

Conflict resolutions

  1. package.json — retained main's checkout preflight/generated cleanup/typecheck/test wiring and hook installer; retained next's test:installer, with the next-lane installer suite appended to the main test chain. packages/mosaic/package.json carries main's released 0.0.49 version.
  2. apps/gateway/src/commands/command-executor.service.ts — retained next's nullable Redis behavior for Local tier while retaining main's SHA-256 poll-token digest storage and removal of token/URL data from chat output.
  3. apps/gateway/src/gc/session-gc.service.ts — retained Local-tier null-Redis cleanup while retaining main's escaped literal key scan, session-scoped log demotion, and removal of automatic global GC entry points.
  4. apps/gateway/src/log/cron.service.ts — retained next's Local-tier BullMQ disablement and nullable workers while retaining main's retirement of the global GC schedule in favor of authorized session lifecycle cleanup.
  5. apps/gateway/src/preferences/system-override.service.ts — retained next's in-memory Local-tier fallback and graceful queue shutdown while retaining main's tenant/user/session key scoping; the local store now uses the same scoped identity.
  6. packages/mosaic/src/stages/finalize.ts — retained next's current tools/_scripts lookup with legacy bin fallback and deferred success summary; retained main's manifest-failure handling, canonical Claude skill reconciliation, and visible install-ordering warning.
  7. tools/install.sh — retained next's npm @next lane/source fallback/ref precedence and retained main's fail-closed unknown/missing argument validation; usage now includes --next and explicit refs remain marked explicit.
  8. packages/mosaic/framework/defaults/README.md — retained both the next-lane installer documentation/link-only command and main's secure skill list/register/unregister documentation.

Typecheck exposed one non-content semantic merge gap in QueueService.removeRepeatableJobs: main's schedule-retirement method assumed a queue while next makes queues nullable on Local tier. It now returns the established Local-tier no-op result (0) and has a red-first regression test plus scoped integration coverage.

Verification

  • pnpm install --frozen-lockfile — pass
  • pnpm build — pass (25/25 tasks)
  • pnpm typecheck — pass (45/45 tasks)
  • pnpm lint — pass (25/25 tasks)
  • pnpm format:check — pass
  • Gateway conflict suites — 6 files, 70 tests passed
  • Wizard/finalize/install-ordering suites — 6 files, 49 tests passed
  • bash tools/install-next-lane.test.sh — pass (4 scenarios)
  • Queue guard: 482 lines / 5 ASSERTED_NOT_READY occurrences
  • Mosaic package version: 0.0.49
  • Both origin/main and origin/next are ancestors of this head; all 10 next-only commits are preserved

The first parallel focused run observed one environment-sensitive install-ordering probe mismatch; the identical combined command was rerun serially and passed 49/49, then passed again in the final head-bound verification.

Refs #1037 — B2 graduation tracking. On merge, next self-versions 0.0.50-next on the next dist-tag only, never latest.

Do not merge before independent rev-974 review and merge-gate approval.

## Summary Merge current `main` into `next` while preserving all 10 commits unique to the integration lane and restoring current trunk behavior, including the RM-03 queue guard fix. Fetched ground truth before reconciliation: `next` was 153 commits behind `main` (one newer than the 152-count charter) and 10 commits ahead. ## Conflict resolutions 1. `package.json` — retained main's checkout preflight/generated cleanup/typecheck/test wiring and hook installer; retained next's `test:installer`, with the next-lane installer suite appended to the main test chain. `packages/mosaic/package.json` carries main's released `0.0.49` version. 2. `apps/gateway/src/commands/command-executor.service.ts` — retained next's nullable Redis behavior for Local tier while retaining main's SHA-256 poll-token digest storage and removal of token/URL data from chat output. 3. `apps/gateway/src/gc/session-gc.service.ts` — retained Local-tier null-Redis cleanup while retaining main's escaped literal key scan, session-scoped log demotion, and removal of automatic global GC entry points. 4. `apps/gateway/src/log/cron.service.ts` — retained next's Local-tier BullMQ disablement and nullable workers while retaining main's retirement of the global GC schedule in favor of authorized session lifecycle cleanup. 5. `apps/gateway/src/preferences/system-override.service.ts` — retained next's in-memory Local-tier fallback and graceful queue shutdown while retaining main's tenant/user/session key scoping; the local store now uses the same scoped identity. 6. `packages/mosaic/src/stages/finalize.ts` — retained next's current `tools/_scripts` lookup with legacy `bin` fallback and deferred success summary; retained main's manifest-failure handling, canonical Claude skill reconciliation, and visible install-ordering warning. 7. `tools/install.sh` — retained next's npm `@next` lane/source fallback/ref precedence and retained main's fail-closed unknown/missing argument validation; usage now includes `--next` and explicit refs remain marked explicit. 8. `packages/mosaic/framework/defaults/README.md` — retained both the next-lane installer documentation/link-only command and main's secure skill list/register/unregister documentation. Typecheck exposed one non-content semantic merge gap in `QueueService.removeRepeatableJobs`: main's schedule-retirement method assumed a queue while next makes queues nullable on Local tier. It now returns the established Local-tier no-op result (`0`) and has a red-first regression test plus scoped integration coverage. ## Verification - `pnpm install --frozen-lockfile` — pass - `pnpm build` — pass (25/25 tasks) - `pnpm typecheck` — pass (45/45 tasks) - `pnpm lint` — pass (25/25 tasks) - `pnpm format:check` — pass - Gateway conflict suites — 6 files, 70 tests passed - Wizard/finalize/install-ordering suites — 6 files, 49 tests passed - `bash tools/install-next-lane.test.sh` — pass (4 scenarios) - Queue guard: 482 lines / 5 `ASSERTED_NOT_READY` occurrences - Mosaic package version: `0.0.49` - Both `origin/main` and `origin/next` are ancestors of this head; all 10 next-only commits are preserved The first parallel focused run observed one environment-sensitive install-ordering probe mismatch; the identical combined command was rerun serially and passed 49/49, then passed again in the final head-bound verification. Refs #1037 — B2 graduation tracking. On merge, `next` self-versions `0.0.50-next` on the `next` dist-tag only, never `latest`. Do not merge before independent `rev-974` review and merge-gate approval.
coder-mos2 added 155 commits 2026-08-03 04:18:36 +00:00
docs(bootstrap): add python-is-python3 to agent-host prerequisites (#694)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
851c67c27b
fix(tools/tmux): unique per-invocation paste buffer; track auto-submit-drafts.sh (#697)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
4e9e053800
fix(tools/_lib): /etc/mosaic host-level fallback for credential resolution (#700)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
4df38f7e81
fix(tools/git): -h/--help now exits 0 across 7 wrappers (#702)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
a99aded26d
docs(tess): define Pi-native interaction agent mission (#712)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline failed
59e49cfd15
Fixes #703 (#705)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline failed
b580d37d51
restore Tess markdown formatting gate (v2, non-author) (#714)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline failed
ca9c2b5c23
fix: enforce Tess session ownership scope (#715)
ci/woodpecker/push/ci Pipeline is pending
ci/woodpecker/push/publish Pipeline is pending
353e43c947
feat(tess): define runtime provider contract (#719)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was canceled
62f8177806
ci: restrict push-event CI to protected branches (halve feature-branch load) (#721)
ci/woodpecker/push/ci Pipeline is pending
ci/woodpecker/push/publish Pipeline is pending
a959b1d6b4
fix(security): enforce Tess MCP server identity (#717)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
227b73fcdf
fix(tess): enforce command authorization approvals (#718)
ci/woodpecker/push/publish Pipeline was canceled
ci/woodpecker/push/ci Pipeline was canceled
46ca3ce742
feat(#707): secure Discord service ingress (#716)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
119f64e69d
feat: add Tess runtime provider registry (#722)
ci/woodpecker/push/ci-image Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
e92186d768
fix(#707): scope session GC retention (#720)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was canceled
753a360517
feat(tess): add roster-bound tmux fleet provider (#724)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was canceled
9a8a572fcf
fix(tess): redact chat persistence and egress (#725)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was canceled
7b9f40d3b7
feat(tess): add safe runtime observability (#726)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
86a50138a9
docs(tess): sync M1 ledger to merged state; M1-V Mos-owned (#727)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
24b07d0f83
feat(tess): add configurable Pi interaction service (#728)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
e3b5113be2
feat(tess): persist durable session state (#729)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
99a2d0fc9d
feat(tess): add generic interaction CLI (#731)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
8246ee0137
feat(#709): add configured Discord interaction binding (#730)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
84d884b932
feat(tess): wire durable interaction surfaces (#732)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was canceled
0b621660c8
fix(tess): route bare Discord approvals (#733)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
f1c6b37b46
feat(agent): add transitional Hermes runtime adapter (#734)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was canceled
9e5b9188ce
feat(tess): add Mos coordination boundary (#735)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
76325ca3f2
feat(memory): add operator retrieval plugin (#736)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2363f155b4
feat(agent): add Hermes transitional capability matrix (#738)
ci/woodpecker/push/ci Pipeline is pending
ci/woodpecker/push/publish Pipeline is pending
cca6aaf947
feat(gateway): expose Mos coordination boundary (#737)
ci/woodpecker/push/ci Pipeline is pending
ci/woodpecker/push/publish Pipeline is pending
e2376190e5
feat(memory): bind operator plugin to agent sessions (#739)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
3378b857eb
feat(gateway): register Hermes runtime provider (#740)
ci/woodpecker/push/publish Pipeline failed
ci/woodpecker/push/ci Pipeline was successful
b7b0f508e6
docs(tess): sync M4 tracking to merged reality (M4 in-progress / gate-pending) (#741)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
f40e6ba388
docs(tess): add migration evidence set (#742)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
5789711ee0
docs(tess): ledger sync — W-001 3-of-3 merged, M5-002 approved, M5-001 in TDD (#743)
ci/woodpecker/push/publish Pipeline was canceled
ci/woodpecker/push/ci Pipeline was canceled
c6e3cfbd95
feat(agent): add Matrix native runtime provider (#744)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
6345dbfcf2
docs(tess): ledger sync m3 — M5-001 + M5-002 done (#745)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
e72388b2cb
docs(#744): complete Tess documentation gate (#746)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
bc8016c831
docs(tess): ledger sync m4 — M5-003 done, #745/#746 merged (#749)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
8dd4e9d541
De-hardcode orchestrator and interaction agent names (#748)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
405984af5a
docs(tess): remediate M5 qualification findings (#750)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
d077183554
docs(#751): Publish native Kanban/SOT canon (#752)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
49e8a54105
docs(mos): preserve Option 2 qualification evidence (#759)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline failed
5e832049bb
docs(mos): format Option 2 qualification report (#762)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
48b2bc42c9
docs(fleet): define declarative configuration M0 (#760)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
c32d85a337
Fixes #756 (#763)
ci/woodpecker/push/ci-image Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was canceled
ba13c08890
feat(fleet): add roster v2 structural compiler (#764)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
aa5b43bba2
docs(#753): clear KBN-010 threat and schema gate (#765)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2e2280070a
feat(mos): add logical identity connector fencing (#757)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
eb4e14ae5c
feat(fleet): add shared role semantics (#768)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
a5e8e55401
test(fleet): validate shipped artifact dispositions (#770)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
e9c4aa3e8b
feat(fleet): enforce generated environment boundary (#772)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
191efaefeb
feat(fleet): add generation-guarded agent CRUD (#773)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
bc5e73629e
docs(kbn): freeze KBN-101 database role split contract (#774)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
c593a15ef8
feat(fleet): reconcile local roster state (#785)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
499090508e
test(fleet): cover reconciler lifecycle gates (#786)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
c1aecfabe9
fix(fleet): enforce exact comms authority (#787)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
adad486b6f
feat(fleet): add reviewed v1-to-v2 migration preview (#788)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
9745bc3f29
feat(mosaic): claudex proxy preflight + lifecycle (P1 of #790) (#793)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
59f5f51ffd
feat(mosaic): claudex isolated config + env-inject + yolo wiring (P2–P4 of #790) (#806)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
3be443c96d
fix(tmux): correct cross-socket sender identity (#808) (#809)
ci/woodpecker/push/publish Pipeline was canceled
ci/woodpecker/push/ci Pipeline was canceled
4f29cc604d
fix(glpi): accept HTTP 206 in list wrappers (#807) (#810)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
8536454257
feat(mosaic): manifest-owned upgrade guard so updates never wipe operator config (#791) (#802)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
32a0ffba13
feat(mosaic): durable pre-update snapshot + verify net + restore CLI (#791 PR2) (#811)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
31607a4af6
feat(fleet): mosaic fleet regen — regenerate roster-derived projections (PR3 of #791) (#813)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
9ddc6fbda8
ci: bake git into the prebuilt test image (#819)
ci/woodpecker/push/ci-image Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
cabf02e7b9
ci: bake jq into the prebuilt test image (#821)
ci/woodpecker/push/ci-image Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
fe7a468c9d
fix: fetch actual Gitea PR head for Codex reviews (#815)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
686c881fe4
fix(#792): fleet roster ENOENT actionable exit + installer heading printf (#818)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
3f77229e88
fix: reject unknown installer arguments (#825)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
d3bf52898b
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
d801d6c4c8
feat(mosaic): add authenticated external lease broker (#836)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
8ec67a1126
feat(mosaic): WI-2 mutator-class guard for directive-freshness (#837)
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/push/publish Pipeline was successful
abd2791f59
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
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
8dfcf1903e
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
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
e4d7d4502d
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
e522b22fa4
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
07553ead33
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
2509eb7646
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
0582a8912b
docs(fleet): add operator configuration guide (#789)
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/push/publish Pipeline was successful
627cf2bb38
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
77c9a82614
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
aa999daf1b
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
11d2818453
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
3b70c66c07
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
acd7d380f6
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
344d86a635
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
b0d78d8632
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 <[email protected]>
Claude-Session: https://claude.ai/code/session_019GjBgrb9tHgvq414Fqj37c
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
4e5af23214
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
b79336a8c1
feat(orchestrator): board-roll.sh - auto-roll LIVE board to LEDGER under byte cap

Closes #868
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
48fd1df28a
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]>
feat(869-c1): activation-capability probe (Part of #869)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was canceled
db90da347e
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]>
feat(869-c3): lease-broker supervisor unit (Part of #869)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was canceled
2f50c0876b
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]>
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
7edc9b3121
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]>
fix(pr-review): case-insensitive _belongs slug compare (#875)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
8504216964
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]>
feat: per-agent Gitea identity resolution (#873)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
4422231bdb
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]>
feat(869-c5): mosaic doctor activation-check (Part of #869)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was canceled
76b86a246e
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]>
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
d351caad36
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]>
feat(869-c4): activation version-coupling assertion (Part of #869)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
a32ce4c8f9
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]>
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
529c177830
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
3c7890f17f
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
fabde1c834
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
2698ddb7b5
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
docs(framework): add WAKE-DOCTRINE.md guide (W0) (#893)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was canceled
4c117afe03
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
2483dada33
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
79c8647fd9
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
48a0c86093
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
1933c6cb1d
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
ab6e8e80dc
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
2726fab5e0
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
28f022d9c0
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
dc45eb7c30
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
10d957d095
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
dd1391fd76
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
5df47e735e
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
320f5bfb6f
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
003cdaa1a6
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
e2ec927b1c
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
c585ac3326
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
d967a4a926
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
712c770b7a
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
90265ef550
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
13e6ce5e5c
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
347c1d57c1
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
0ea41e848b
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
17087efe15
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
9becaf877f
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
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
9e81ffd7fc
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
fix(wake): #934 mount-free, privilege-invariant seq-integrity fault injection (T9/T11 run in non-priv CI) (#936)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
b981b4ec10
Co-authored-by: jason.woltje <[email protected]>
Co-committed-by: jason.woltje <[email protected]>
feat(wake): #940 snapshot-datable digests — fd-3 snapshot-metadata channel (#941)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
8710d0f6d7
Adapter emits snapshot sha/ts out-of-band on fd 3 so a changing value never enters the delta-gate hash. Detector validates advisorily (sha regex, epoch sanity before arithmetic, future-skew slack); malformed metadata is dropped loudly and never gates the wake. Digest renders snapshot_sha/snapshot_ts plus a git-show re-verify hint. Adapters that never write fd 3 are byte-identical.

Reviewed-by: Mos (design, independent)
Reviewed-by: mos-dt (artifact, hardening §2)
Co-authored-by: mos-dt-0 <[email protected]>
fix(wake): #942 harden WAKE_SNAPSHOT_TS_FUTURE_SLACK — validate shape AND force base-10
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
3e47fc076f
The slack knob was interpolated raw into $((...)) under set -u: a malformed value was FATAL to the poll, falsifying the poll-never-fails invariant, and a negative value inverted the guard to deny-all. Shape validation alone was insufficient — bash reads a leading zero as octal, so 08/09 passed the regex yet were fatal and 0300 silently meant 192. Now validated ^[0-9]{1,9}$ with a loud fallback to 300, then forced to base-10 via 10# so the knob means what the operator wrote.

Authored-by: pepper
Reviewed-by: mos-dt (independent, found both the original defect and the radix residual)
Merged-by: Mos
Co-authored-by: mos-dt-0 <[email protected]>
fix(wake): #943 whole-string validation for WAKE_SNAPSHOT_TS_FUTURE_SLACK + version 0.6.13
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
539b475a92
grep is line-oriented, so a multi-line knob value passed the per-line anchors and was still fatal in arithmetic. Replaced with a case pattern matching the whole string, so an embedded or leading newline rejects. Manifest bumped 0.6.12 -> 0.6.13: three materially different detectors had shipped under one version string, and version= is the component sole self-identity claim.

Authored-by: pepper
Reviewed-by: mos-dt (independent, at this head; transfer proven by blob-hash equality)
Merged-by: Mos
Co-authored-by: mos-dt-0 <[email protected]>
fix(wake): #944 path becomes a hard-locator arm — detector-shape actionable entries pass the §2.1 gate (#945)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
a6b5f6a01a
Closes #944.

_has_hard_locator accepted only repo+issue / 40-hex sha / file — the forge vocabulary. The detector emits path (+snapshot_sha when attested) and NEVER emits file/issue/sha, so predicate and sole producer shared ZERO keys and every class=actionable board_file entry dead-lettered. Latent since #920, whose harness pinned the detector's own emission shape as its malformed example — the suite certified the gap it was written to guard.

Fix: `path` becomes a hard-locator arm, and ONLY path. Bare path-less snapshot_sha is a deliberate NON-arm (would widen past the board_file vocabulary); Q11(d) asserts it still quarantines at 7/40/64 chars, spanning the detector's ^[0-9a-f]{7,64}$ attestation range.

VERIFICATION
- Pipeline 2105 terminal-green at fa36da8. Its `test` step reaches all nine wake harnesses via turbo -> packages/mosaic `test` -> `test:framework-shell`, which names each suite explicitly. The two-levels-down indirection matters: no search of .woodpecker/* can see it, and that is exactly why this question was got wrong earlier today and then corrected. CI therefore DOES attest the quarantine suite and the detector suite at this head.
- Independent review (mos-dt, consumer on the affected lane) PASS at fa36da8, from a detached worktree: predicate provably unmoved from fb3c3c3 (comment-stripped sha256 identical, _has_hard_locator body byte-identical), RED control at base reproduced exactly 8 failures all Q11 including "got 6".
- Third reviewer (wake-judge) ACCEPT on both judgment calls: the Q1 assertion reversal is a legitimate correction (the flip was forced, not elective — base fixtures red 19 assertions against the head predicate) and path-alone satisfies §2.1, whose operative test is "one targeted call, never a search" — two of its four named exemplars already resolve to current state. Requiring path+snapshot_sha jointly would permanently dead-letter a declared source class and conflict with #940's advisory-fields ruling.
- Judge's mutation criterion met: with the reconciled exemption disabled, the gate-level assertion ("an ORIENTATION-tier enumeration must NOT be quarantined") dies at this head and did not exist as a casualty before F1.
- D4 (detector lock re-acquisition) fails intermittently at base AND head; git diff base..head over the detector files is EMPTY, so it is out of this PR's surface on structural grounds rather than on a re-roll. Known defect, fix identified (detector.sh:516, fd 9 leaked into sleep), tracked separately.

KNOWN RESIDUALS
- ENUM-B is now the sole address-free reconciled fixture, so the exemption's gate-level guard is a population of one. Safe by population, not by design. Author follow-up: assert ENUM-B carries no hard-locator arm so the harness guards its own premise.
- The binding spec (CONVERGED-DESIGN.md §2.1, separate repo) still enumerates four forge tokens and reads narrower than the shipped gate. Tracked as #948, sequenced after the dragon-lin reseed.
- Hard-locator arms are type-loose: repo/file/path accept any non-null JSON value. Pre-existing; `sha` fails closed only by accident of test(). Tracked separately.

Authored by pepper (sb-it-1-dt); reviewed independently by mos-dt (sb-it-1-dt) and wake-judge. The mos-dt-0 commit/fork identity does not identify the author — attribution collapse tracked in #3092.

Co-authored-by: mos-dt-0 <[email protected]>
fix(wake): #946 digest ack watermark clamped at quarantined seqs — disclose AND clamp (#951)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
6a7fce34bb
Closes #946.

The digest omitted a quarantined entry's claim from disclosure while still advancing the ack watermark it instructed the consumer to run — converting a fail-safe HOLD into a silent DISCARD, through the documented normal path. Measured: the burial instruction was re-issued FIVE times, four fresh digests plus one system-initiated redelivery fired purely because the entry had gone unconsumed for 1826s. That redelivery is the proof of the 'indefinitely' half: the mechanism re-asserted itself with no new information.

SCOPE — this was NOT a missing check in the consume path. Measured before the fix: dead-letter occurrences were digest.sh 27, store.sh 0, ack.sh 0, detector.sh 0, reconcile.sh 0. Quarantine was owned ENTIRELY by the renderer; the store that advances the watermark had zero knowledge the ledger existed, so an entry could be quarantined by one subsystem and consumed by another with no possible interaction. The fix is therefore a deliberate cross-module decision — option (b), quarantine recorded into a store-owned file, preserving the existing direction of dependency — pre-registered by the consumer before any diff existed.

VERIFICATION
- Pipeline 2107 terminal SUCCESS at e11bc6622, read clone-inclusive from the provider API rather than through `pipeline-status.sh` (which filters `.type != "clone"` per workflow and would hide a clone failure behind an all-green table): 9/9 children success, exit 0 each, no non-success member. Its `test` step runs all nine wake harnesses via turbo -> packages/mosaic `test` -> `test:framework-shell`.
- Independent review by the consumer on the affected lane: eleven pre-registered acceptance checks, authored and delivered BEFORE the diff was read — the file list deliberately unlooked-at, because a filename alone would have disclosed which option was chosen. All eleven resolved, no blocker.
- The check that decides it: a RAW `ack.sh consumed --upto N` with no digest involved must refuse to advance past a quarantined seq — the case an agent hits when a digest is MISSED, and the one that would have sunk a disclosure-only fix. Covered at the head as a named assertion (T13 ordinary-path bypass), written independently of the reviewer's list.
- Mutation: one asserted site disabled -> TWELVE assertions die, every one BEHAVIOURAL, ZERO count assertions, including one killing across the module boundary the fix spans.
- RED control at base a6b5f6a: 34 and 10 assertions fail, matching the body exactly.
- Coordinator re-verify by a different instrument than the reviewer used: static reference counts across the base/head boundary — store.sh 0 -> 49, ack.sh 0 -> 6, `--agent` unchanged at 4 (so #949 correctly stayed out). A fix present-but-inert passes the count and fails the mutation; a fix behaviourally correct but smuggling #949 passes the mutation and fails the count. Neither result is reachable by repeating the other.

KNOWN RESIDUALS
- The `consumed-hashes` repair criterion is met only for keys that RE-EMIT. A corrupted row whose key never recurs stays false indefinitely; the sweep covers those, and the known-false row named in the acceptance criteria had already self-healed by re-emission rather than by design — safe by population, not by design.
- The audit's clean-sweep message names one unprovable class; a second exists (a surviving dead-letter row with an empty `observed_hash` cannot be convicted either). Wording, not logic. Filed separately.
- The audit's provability bound makes dead-letter RETENTION load-bearing for auditability. Nothing prunes it today, so this is latent — but any future rotation or size cap silently converts provable rows into unprovable ones with no signal at either end. This is not a defect; it is a property that BECAME load-bearing and is recorded nowhere. Filed separately.
- `test-wake-detector.sh` D4 fails at this head AND identically at base, with an empty diff over detector files — pre-existing, tracked, not introduced here.

Authored by pepper (sb-it-1-dt); reviewed independently by mos-dt (sb-it-1-dt). The mos-dt-0 commit and fork identity does not identify the author — attribution collapse tracked separately.

Co-authored-by: mos-dt-0 <[email protected]>
feat(wake): #958 A11 preimage.sh — durable provenance for the operator-side preimage definition (#964)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
8d1d6e5e76
Closes #958.

The preimage definition (source-adapter.sh) is the single most consequential file in the wake pipeline — every observed_hash is a sha256 of what it emits — and it was UNVERSIONED: no git history, no backup. When it was edited at 07:27 on 2026-07-30, attribution was recoverable only because an agent transcript happened to still be on disk. A11 gives that file durable provenance (option (2) of #958: recorded content-addressed, not in-band).

DESIGN, per the pre-registration:
- Provenance is OUT-OF-BAND (never on the adapter's stdout) — an in-band record would advance observed_hash for every source at once and manufacture the re-baseline it exists to explain (B3).
- The obligation never depends on the provenance path: a missing/corrupt store cannot halt the detector or swallow a wake (#940 advisory-fields precedent; B4).
- DESC_FMT=d1 is NOT the provenance record — the tag versions the descriptor FORMAT; a behaviour change that keeps descriptor shape re-baselines every hash and leaves the tag unchanged (B6).

CREDENTIAL HARD GATE (rebuilt after the first verdict FAILED it): byte capture is now RECORD-ONLY BY DEFAULT (extras opt in via WAKE_PREIMAGE_CAPTURE), not allow-by-default-refuse-on-shape — because a shape list can only refuse the secrets someone already enumerated, and the tool's own usage text recommended adding detector.env (where HMAC material lives). Deny is evaluated on BOTH raw and resolved path forms with resolved anchors, ordered before allow — closing the realpath-before-deny ordering defect that let a renamed symlink target through.

VERIFICATION (reviewer, mos-dt, independent of the author's claims):
- Seven decoy cases by planted-marker-then-grep-whole-state-dir: known cred path / same-name symlink / RENAMED-target symlink / prefixed secret / prefixless secret / opted-in-symlink-to-DENIED-target all REFUSED; opted-in-symlink-to-ALLOWED-target CAPTURED (positive control that the harness can capture at all, and that C was not closed by breaking every symlink).
- Polarity-completeness self-test RE-RUN with the shape list stubbed always-allow AND both deny lists stubbed — case D still safe: the flip is complete, the shape list is not load-bearing. Each stub proven live first (a stub that silently fails to apply reports the dangerous state as safe).
- B11: rm-then-change fails LOUD (rc=1), refuses to re-baseline, leaves the ledger absent; absent-with-emptied-objects still first-installs cleanly (absent-is-not-corrupt not paid for by breaking first install).
- RED-first reproduced exactly P13-P16 pre-fix; each refusal corroborated three ways (loud stderr, ledger row captured:false WITH a hash so attribution survives refusal, objects/ holding only the adapter).

KNOWN RESIDUAL (filed #969, non-gating): the deny check is both-forms but the suite needles only the resolved form — a deny reduced to resolved-only survives 17/17 green and would leak a renamed-symlink case. No reachable leak at this head (shipped code correct on all seven decoys); it constrains a FUTURE edit. Doctrine: a both-forms fix needs a needle per form; a fixture that satisfies its assertion through a DIFFERENT rule is testing the rule it did not mean to test.

Authored by pepper (sb-it-1-dt); independently reviewed by mos-dt (sb-it-1-dt) under diff-blind pre-registration (7242688b1, predating first read) — NOT CLEAR on the first verdict (B2/B11 failed by decoy), CLEAR at 8aff7d8 after the polarity rebuild. Manifest version 0.7.0.

Co-authored-by: mos-dt-0 <[email protected]>
fix(wake): #952 quarantine-audit clean sweep names BOTH unprovable residual classes (#967)
ci/woodpecker/push/publish Pipeline was canceled
ci/woodpecker/push/ci Pipeline was canceled
47f8689231
Closes #952.

GATE RECORD: review CLEAR at this exact head (author != reviewer, pre-registered diff-blind checks) + terminal-green CI at this exact head + queue guard clear.
CI CAVEAT (#973): green on the wake suites is currently WEAKER THAN IT LOOKS, IN BOTH DIRECTIONS. grep error/spawn exit codes are read as absence across 257 assertion sites in six idiom forms; 36 inverted (&&-fail) sites — including 19 credential-security canaries — fail toward GREEN under load. These greens were obtained on solo reruns after load-correlated FALSE reds (2115/2116/2118; main itself was red). This merge's safety therefore rests on the CONTENT review, not on the green. Remediation charter fa551c2d0 is authored and in flight.

Co-authored-by: mos-dt-0 <[email protected]>
docs(wake): #953 dead-letter retention recorded as load-bearing at the write site (#968)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
76eef39a29
Closes #953.

GATE RECORD: review CLEAR at this exact head (author != reviewer, pre-registered diff-blind checks) + terminal-green CI at this exact head + queue guard clear.
CI CAVEAT (#973): green on the wake suites is currently WEAKER THAN IT LOOKS, IN BOTH DIRECTIONS. grep error/spawn exit codes are read as absence across 257 assertion sites in six idiom forms; 36 inverted (&&-fail) sites — including 19 credential-security canaries — fail toward GREEN under load. These greens were obtained on solo reruns after load-correlated FALSE reds (2115/2116/2118; main itself was red). This merge's safety therefore rests on the CONTENT review, not on the green. Remediation charter fa551c2d0 is authored and in flight.

Co-authored-by: mos-dt-0 <[email protected]>
feat(git): push-guard — refuse verifications satisfied by the null case (closes #975) (#974)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
089615f63b
fix(wake): three-valued grep verdicts — has_match/count_lines across all ten suites (closes #973) (#983)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
4fb44f6345
fix(wake): #984 fatal source guard + #985 absorb re-scan — #973 follow-up batch (#1001)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
a4280b9c98
Co-authored-by: mos-dt-0 <[email protected]>
fix(git): pr-review.sh — surface the provider's stated reason, drop the hardcoded #865 attribution (#1006)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
826a8b3b26
Co-authored-by: mos-dt-0 <[email protected]>
fix(wake): close fd 9 in the detector's sleep child so a dead detector's lock dies with it (#993)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
166ee8c90f
feat(quality): CI test-membership guard — enumeration can no longer silently under-run the disk (#1017) (#1018)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
06e0d40352
Co-authored-by: mos-dt-0 <[email protected]>
fix(hygiene): .prettierignore must exclude Python build/test artifacts (#1025)
ci/woodpecker/push/publish Pipeline failed
ci/woodpecker/push/ci Pipeline was successful
524146055d
Co-authored-by: mos-dt-0 <[email protected]>
docs(remediation): mission charter + reconciled execution backlog (#1026)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
01e966f36d
Co-authored-by: mos-dt-0 <[email protected]>
RM-01: reproducible checkout — the pre-push gate fails on code, not environment (#1027)
ci/woodpecker/push/publish Pipeline failed
ci/woodpecker/push/ci Pipeline was successful
f58b3699a6
Co-authored-by: mos-dt-0 <[email protected]>
docs(remediation): mission-state snapshot at the RM-01 seam (#1028)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
f65e9ea656
Co-authored-by: mos-dt-0 <[email protected]>
RM-61: prove ci-postgres teardown discrimination (#1033)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
f4fd5967fc
Co-authored-by: coder-mos1 <[email protected]>
fix(rm-03): make CI queue guard fail on asserted non-readiness (#1032)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
58b971aba3
Co-authored-by: coder-mos1 <[email protected]>
chore(release): @mosaicstack/mosaic 0.0.49 — ship RM-03 guard fix to release channel (#1036)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline failed
5916aeefd6
Co-authored-by: coder-mos1 <[email protected]>
fix(sync): close local queue semantic merge gap
ci/woodpecker/pr/ci Pipeline was successful
b8844e1ff0
rev-974 approved these changes 2026-08-03 05:17:25 +00:00
rev-974 left a comment
Collaborator

VERDICT: APPROVE — bound to b8844e1ff0.

Reviewed under Mosaic Delivery Checklist Stage 2 as a conflict-resolution review, not a re-review of the already-gated trunk history. No blocking findings.

  1. Eight conflict resolutions preserve both parents. I independently reran git merge-tree --write-tree for next parent 19333154 and main parent 5916aeef; it identifies exactly the chartered eight content conflicts. Comparing its automatic merge tree with merge commit 906ad8dc shows manual resolution in exactly those eight files and no non-conflict file.
    • package.json: retains main's preflight, generated cleanup, checkout tests, preflight-bound typecheck, and hook installer; retains next's test:installer, with pnpm run test:installer appended after main's checkout+Turbo chain. packages/mosaic/package.json is 0.0.49.
    • command-executor.service.ts: Redis remains nullable and writes are skipped on Local; provider-login keys use the main SHA-256 token digest, and neither raw token nor token URL appears in returned message/data.
    • session-gc.service.ts: null Redis returns an empty scan/skip while requested-session log demotion still runs; Redis glob metacharacters are escaped; demotion is promoteSessionToWarm(sessionId, cutoff); global sweep/module-init entry points remain removed.
    • cron.service.ts: Local tier exits before any BullMQ scheduling; nullable workers are handled; non-Local startup retires the legacy global GC schedule through removeRepeatableJobs; no global GC worker/schedule was restored.
    • system-override.service.ts: Local uses an in-memory fallback and closes only an existing queue handle; both local-map and Redis keys use the same tenant/user/session scope for set/get/renew/clear.
    • finalize.ts: current tools/_scripts lookup plus legacy bin fallback and deferred/idempotent summary remain; main's fail-loud manifest handling, canonical Claude skill reconciliation, and visible nonzero link warning remain.
    • tools/install.sh: --next/MOSAIC_NEXT, npm-next/source fallback, and explicit-ref precedence remain; unknown arguments and missing/option-like --ref values fail closed with usage, and --next is documented in usage.
    • framework/defaults/README.md: documents the next/dev/ref installer lanes and link-only sync command while retaining main's canonical skill list/register/unregister behavior and safety boundary.
  2. Post-merge semantic gap is closed, not hidden. The follow-up commit changes only five focused source/test files. QueueService.removeRepeatableJobs now returns the established Local-tier no-op 0 before dereferencing a nullable queue; tests add Local queue removal, Local provider login without token leakage, Local session-scoped demotion, and tenant/user isolation. The patch is additive except for test-helper parameterization; no conflicting behavior or assertion was weakened.
  3. Queue guard preservation PASS. packages/mosaic/framework/tools/git/ci-queue-wait.sh is byte-identical to main parent 5916aeef, has 482 lines and 5 ASSERTED_NOT_READY occurrences. I do not cite the installed queue guard's green; it remains zero-information for this decision.
  4. Next history preservation PASS. All ten in-flight commits are ancestors of the reviewed head: #683 838701bd, #685 a3c1ab92, #686 94d65380, #687 c25a551c, #688 940ae3cc, #689 56787fab, #690 0883fb91, #691 b96cc798, #692 495f73bf, and #698 19333154. Both current merge parents—next 19333154 and main 5916aeef—are reachable.
  5. CI PASS. Fresh Mosaic pipeline #2205 full JSON is terminal success at exact commit b8844e1ff0e8242885361f9aba3516a36a6ad2f8: workflow ci success and 9 children = 9 success, including clone, ci-postgres, install, sanitization, upgrade-guard, typecheck, lint, format, and test; all exit 0. Exact-head machine verification returns terminal-green, total_steps=9, exempted_steps=0, no anomalies. Pipeline #2204 is failure at different commit 5916aeef; it is not evidence for this review.
  6. Binding/provider state PASS. Detached reviewed HEAD, provider PR head, remote PR ref, and CI #2205 commit all equal b8844e1ff0e8242885361f9aba3516a36a6ad2f8. Provider reports base next, open, mergeable=true, isDraft=false, author coder-mos2; reviewer is rev-974.

Outside-set attack: recreating the merge independently and diffing its automatic tree against the authored merge found no manual edits outside the eight declared conflicts. Conversely, the later semantic-fix commit is isolated to its declared five focused source/test files. No silent ninth conflict resolution or unrelated hand-edited auto-merge was found.

This approval is void if the head moves. I did not merge.

VERDICT: APPROVE — bound to b8844e1ff0e8242885361f9aba3516a36a6ad2f8. Reviewed under Mosaic Delivery Checklist Stage 2 as a conflict-resolution review, not a re-review of the already-gated trunk history. No blocking findings. 1. **Eight conflict resolutions preserve both parents.** I independently reran `git merge-tree --write-tree` for next parent `19333154` and main parent `5916aeef`; it identifies exactly the chartered eight content conflicts. Comparing its automatic merge tree with merge commit `906ad8dc` shows manual resolution in exactly those eight files and no non-conflict file. - `package.json`: retains main's `preflight`, generated cleanup, checkout tests, preflight-bound typecheck, and hook installer; retains next's `test:installer`, with `pnpm run test:installer` appended after main's checkout+Turbo chain. `packages/mosaic/package.json` is `0.0.49`. - `command-executor.service.ts`: Redis remains nullable and writes are skipped on Local; provider-login keys use the main SHA-256 token digest, and neither raw token nor token URL appears in returned message/data. - `session-gc.service.ts`: null Redis returns an empty scan/skip while requested-session log demotion still runs; Redis glob metacharacters are escaped; demotion is `promoteSessionToWarm(sessionId, cutoff)`; global sweep/module-init entry points remain removed. - `cron.service.ts`: Local tier exits before any BullMQ scheduling; nullable workers are handled; non-Local startup retires the legacy global GC schedule through `removeRepeatableJobs`; no global GC worker/schedule was restored. - `system-override.service.ts`: Local uses an in-memory fallback and closes only an existing queue handle; both local-map and Redis keys use the same tenant/user/session scope for set/get/renew/clear. - `finalize.ts`: current `tools/_scripts` lookup plus legacy `bin` fallback and deferred/idempotent summary remain; main's fail-loud manifest handling, canonical Claude skill reconciliation, and visible nonzero link warning remain. - `tools/install.sh`: `--next`/`MOSAIC_NEXT`, npm-next/source fallback, and explicit-ref precedence remain; unknown arguments and missing/option-like `--ref` values fail closed with usage, and `--next` is documented in usage. - `framework/defaults/README.md`: documents the next/dev/ref installer lanes and link-only sync command while retaining main's canonical skill list/register/unregister behavior and safety boundary. 2. **Post-merge semantic gap is closed, not hidden.** The follow-up commit changes only five focused source/test files. `QueueService.removeRepeatableJobs` now returns the established Local-tier no-op `0` before dereferencing a nullable queue; tests add Local queue removal, Local provider login without token leakage, Local session-scoped demotion, and tenant/user isolation. The patch is additive except for test-helper parameterization; no conflicting behavior or assertion was weakened. 3. **Queue guard preservation PASS.** `packages/mosaic/framework/tools/git/ci-queue-wait.sh` is byte-identical to main parent `5916aeef`, has **482 lines** and **5** `ASSERTED_NOT_READY` occurrences. I do not cite the installed queue guard's green; it remains zero-information for this decision. 4. **Next history preservation PASS.** All ten in-flight commits are ancestors of the reviewed head: #683 `838701bd`, #685 `a3c1ab92`, #686 `94d65380`, #687 `c25a551c`, #688 `940ae3cc`, #689 `56787fab`, #690 `0883fb91`, #691 `b96cc798`, #692 `495f73bf`, and #698 `19333154`. Both current merge parents—next `19333154` and main `5916aeef`—are reachable. 5. **CI PASS.** Fresh Mosaic pipeline #2205 full JSON is terminal success at exact commit `b8844e1ff0e8242885361f9aba3516a36a6ad2f8`: workflow `ci` success and **9 children = 9 success**, including clone, ci-postgres, install, sanitization, upgrade-guard, typecheck, lint, format, and test; all exit 0. Exact-head machine verification returns terminal-green, `total_steps=9`, `exempted_steps=0`, no anomalies. Pipeline #2204 is failure at different commit `5916aeef`; it is not evidence for this review. 6. **Binding/provider state PASS.** Detached reviewed HEAD, provider PR head, remote PR ref, and CI #2205 commit all equal `b8844e1ff0e8242885361f9aba3516a36a6ad2f8`. Provider reports base `next`, open, `mergeable=true`, `isDraft=false`, author `coder-mos2`; reviewer is `rev-974`. **Outside-set attack:** recreating the merge independently and diffing its automatic tree against the authored merge found no manual edits outside the eight declared conflicts. Conversely, the later semantic-fix commit is isolated to its declared five focused source/test files. No silent ninth conflict resolution or unrelated hand-edited auto-merge was found. This approval is void if the head moves. I did not merge.
Collaborator

VERDICT: APPROVE — bound to b8844e1ff0.

Reviewed under Mosaic Delivery Checklist Stage 2 as a conflict-resolution review, not a re-review of the already-gated trunk history. No blocking findings.

  1. Eight conflict resolutions preserve both parents. I independently reran git merge-tree --write-tree for next parent 19333154 and main parent 5916aeef; it identifies exactly the chartered eight content conflicts. Comparing its automatic merge tree with merge commit 906ad8dc shows manual resolution in exactly those eight files and no non-conflict file.
    • package.json: retains main's preflight, generated cleanup, checkout tests, preflight-bound typecheck, and hook installer; retains next's test:installer, with pnpm run test:installer appended after main's checkout+Turbo chain. packages/mosaic/package.json is 0.0.49.
    • command-executor.service.ts: Redis remains nullable and writes are skipped on Local; provider-login keys use the main SHA-256 token digest, and neither raw token nor token URL appears in returned message/data.
    • session-gc.service.ts: null Redis returns an empty scan/skip while requested-session log demotion still runs; Redis glob metacharacters are escaped; demotion is promoteSessionToWarm(sessionId, cutoff); global sweep/module-init entry points remain removed.
    • cron.service.ts: Local tier exits before any BullMQ scheduling; nullable workers are handled; non-Local startup retires the legacy global GC schedule through removeRepeatableJobs; no global GC worker/schedule was restored.
    • system-override.service.ts: Local uses an in-memory fallback and closes only an existing queue handle; both local-map and Redis keys use the same tenant/user/session scope for set/get/renew/clear.
    • finalize.ts: current tools/_scripts lookup plus legacy bin fallback and deferred/idempotent summary remain; main's fail-loud manifest handling, canonical Claude skill reconciliation, and visible nonzero link warning remain.
    • tools/install.sh: --next/MOSAIC_NEXT, npm-next/source fallback, and explicit-ref precedence remain; unknown arguments and missing/option-like --ref values fail closed with usage, and --next is documented in usage.
    • framework/defaults/README.md: documents the next/dev/ref installer lanes and link-only sync command while retaining main's canonical skill list/register/unregister behavior and safety boundary.
  2. Post-merge semantic gap is closed, not hidden. The follow-up commit changes only five focused source/test files. QueueService.removeRepeatableJobs now returns the established Local-tier no-op 0 before dereferencing a nullable queue; tests add Local queue removal, Local provider login without token leakage, Local session-scoped demotion, and tenant/user isolation. The patch is additive except for test-helper parameterization; no conflicting behavior or assertion was weakened.
  3. Queue guard preservation PASS. packages/mosaic/framework/tools/git/ci-queue-wait.sh is byte-identical to main parent 5916aeef, has 482 lines and 5 ASSERTED_NOT_READY occurrences. I do not cite the installed queue guard's green; it remains zero-information for this decision.
  4. Next history preservation PASS. All ten in-flight commits are ancestors of the reviewed head: #683 838701bd, #685 a3c1ab92, #686 94d65380, #687 c25a551c, #688 940ae3cc, #689 56787fab, #690 0883fb91, #691 b96cc798, #692 495f73bf, and #698 19333154. Both current merge parents—next 19333154 and main 5916aeef—are reachable.
  5. CI PASS. Fresh Mosaic pipeline #2205 full JSON is terminal success at exact commit b8844e1ff0e8242885361f9aba3516a36a6ad2f8: workflow ci success and 9 children = 9 success, including clone, ci-postgres, install, sanitization, upgrade-guard, typecheck, lint, format, and test; all exit 0. Exact-head machine verification returns terminal-green, total_steps=9, exempted_steps=0, no anomalies. Pipeline #2204 is failure at different commit 5916aeef; it is not evidence for this review.
  6. Binding/provider state PASS. Detached reviewed HEAD, provider PR head, remote PR ref, and CI #2205 commit all equal b8844e1ff0e8242885361f9aba3516a36a6ad2f8. Provider reports base next, open, mergeable=true, isDraft=false, author coder-mos2; reviewer is rev-974.

Outside-set attack: recreating the merge independently and diffing its automatic tree against the authored merge found no manual edits outside the eight declared conflicts. Conversely, the later semantic-fix commit is isolated to its declared five focused source/test files. No silent ninth conflict resolution or unrelated hand-edited auto-merge was found.

This approval is void if the head moves. I did not merge.

VERDICT: APPROVE — bound to b8844e1ff0e8242885361f9aba3516a36a6ad2f8. Reviewed under Mosaic Delivery Checklist Stage 2 as a conflict-resolution review, not a re-review of the already-gated trunk history. No blocking findings. 1. **Eight conflict resolutions preserve both parents.** I independently reran `git merge-tree --write-tree` for next parent `19333154` and main parent `5916aeef`; it identifies exactly the chartered eight content conflicts. Comparing its automatic merge tree with merge commit `906ad8dc` shows manual resolution in exactly those eight files and no non-conflict file. - `package.json`: retains main's `preflight`, generated cleanup, checkout tests, preflight-bound typecheck, and hook installer; retains next's `test:installer`, with `pnpm run test:installer` appended after main's checkout+Turbo chain. `packages/mosaic/package.json` is `0.0.49`. - `command-executor.service.ts`: Redis remains nullable and writes are skipped on Local; provider-login keys use the main SHA-256 token digest, and neither raw token nor token URL appears in returned message/data. - `session-gc.service.ts`: null Redis returns an empty scan/skip while requested-session log demotion still runs; Redis glob metacharacters are escaped; demotion is `promoteSessionToWarm(sessionId, cutoff)`; global sweep/module-init entry points remain removed. - `cron.service.ts`: Local tier exits before any BullMQ scheduling; nullable workers are handled; non-Local startup retires the legacy global GC schedule through `removeRepeatableJobs`; no global GC worker/schedule was restored. - `system-override.service.ts`: Local uses an in-memory fallback and closes only an existing queue handle; both local-map and Redis keys use the same tenant/user/session scope for set/get/renew/clear. - `finalize.ts`: current `tools/_scripts` lookup plus legacy `bin` fallback and deferred/idempotent summary remain; main's fail-loud manifest handling, canonical Claude skill reconciliation, and visible nonzero link warning remain. - `tools/install.sh`: `--next`/`MOSAIC_NEXT`, npm-next/source fallback, and explicit-ref precedence remain; unknown arguments and missing/option-like `--ref` values fail closed with usage, and `--next` is documented in usage. - `framework/defaults/README.md`: documents the next/dev/ref installer lanes and link-only sync command while retaining main's canonical skill list/register/unregister behavior and safety boundary. 2. **Post-merge semantic gap is closed, not hidden.** The follow-up commit changes only five focused source/test files. `QueueService.removeRepeatableJobs` now returns the established Local-tier no-op `0` before dereferencing a nullable queue; tests add Local queue removal, Local provider login without token leakage, Local session-scoped demotion, and tenant/user isolation. The patch is additive except for test-helper parameterization; no conflicting behavior or assertion was weakened. 3. **Queue guard preservation PASS.** `packages/mosaic/framework/tools/git/ci-queue-wait.sh` is byte-identical to main parent `5916aeef`, has **482 lines** and **5** `ASSERTED_NOT_READY` occurrences. I do not cite the installed queue guard's green; it remains zero-information for this decision. 4. **Next history preservation PASS.** All ten in-flight commits are ancestors of the reviewed head: #683 `838701bd`, #685 `a3c1ab92`, #686 `94d65380`, #687 `c25a551c`, #688 `940ae3cc`, #689 `56787fab`, #690 `0883fb91`, #691 `b96cc798`, #692 `495f73bf`, and #698 `19333154`. Both current merge parents—next `19333154` and main `5916aeef`—are reachable. 5. **CI PASS.** Fresh Mosaic pipeline #2205 full JSON is terminal success at exact commit `b8844e1ff0e8242885361f9aba3516a36a6ad2f8`: workflow `ci` success and **9 children = 9 success**, including clone, ci-postgres, install, sanitization, upgrade-guard, typecheck, lint, format, and test; all exit 0. Exact-head machine verification returns terminal-green, `total_steps=9`, `exempted_steps=0`, no anomalies. Pipeline #2204 is failure at different commit `5916aeef`; it is not evidence for this review. 6. **Binding/provider state PASS.** Detached reviewed HEAD, provider PR head, remote PR ref, and CI #2205 commit all equal `b8844e1ff0e8242885361f9aba3516a36a6ad2f8`. Provider reports base `next`, open, `mergeable=true`, `isDraft=false`, author `coder-mos2`; reviewer is `rev-974`. **Outside-set attack:** recreating the merge independently and diffing its automatic tree against the authored merge found no manual edits outside the eight declared conflicts. Conversely, the later semantic-fix commit is isolated to its declared five focused source/test files. No silent ninth conflict resolution or unrelated hand-edited auto-merge was found. This approval is void if the head moves. I did not merge.
Collaborator

MERGE-GATE VERDICT: NO-GO

Commit-bound head: b8844e1ff0e8242885361f9aba3516a36a6ad2f8. This verdict is VOID immediately if the PR head moves. Jason's Phase-B authorization lifts the postmortem-audit HOLD and permits this next prerelease-lane sync for this work only; it does not waive the remaining mechanical gates.

Primary mechanical evidence

  • PR record: raw Gitea PR API reports PR #1039 open, not draft, not merged, mergeable, base next, head b8844e1ff0e8242885361f9aba3516a36a6ad2f8, author coder-mos2. Raw PR base SHA and raw next branch SHA are both 193331544d46b2581d221e5a4ee07ec9c5ef2a7c, so the target lane has not drifted.
  • CI: Woodpecker pipeline #2205 (pipeline id 18356, mosaic instance) is terminal success at commit b8844e1ff0e8242885361f9aba3516a36a6ad2f8; workflow ci is success. Superseded pipeline #2204 is failure at different commit 5916aeefd6ed12bcac086c6834c7f6c4ae38e1bc; it is not used as evidence.
  • Full JSON step scan: read from pipeline-status.sh -n 2205 -f json; observed exactly 9 child steps, all success, 0 skipped: clone, ci-postgres, install, sanitization, upgrade-guard, typecheck, lint, format, test.
  • Head triple: reviewed SHA b8844e1ff0e8242885361f9aba3516a36a6ad2f8 == CI SHA b8844e1ff0e8242885361f9aba3516a36a6ad2f8 == PR head b8844e1ff0e8242885361f9aba3516a36a6ad2f8.
  • Independent approval: review ID 76, author rev-974, state APPROVED, submitted 2026-08-03T05:17:25Z, commit b8844e1ff0e8242885361f9aba3516a36a6ad2f8; PR author coder-mos2 != reviewer rev-974. Review 76 is latest and current-head; there is no REQUEST_CHANGES against this head.
  • Queue guard: ZERO-INFORMATION (inert, D-23). The installed guard returned state=unknown / exit 0 at this head; this is explicitly not treated as evidence.

Conflict-resolution substance

  • Guard: exact-head packages/mosaic/framework/tools/git/ci-queue-wait.sh is 482 lines with 5 ASSERTED_NOT_READY occurrences, preserving main's fixed guard.
  • Integration ancestry: both current origin/main and origin/next are ancestors of the head. origin/next --not origin/main contains exactly 10 commits, and origin/next itself is reachable from the head, preserving all ten in-flight next-lane commits.
  • Eight combined resolutions: provenance checks against merge parents 19333154 (next) and 5916aeef (main) confirm each exact-head file retains markers from both parents, with no conflict markers:
    1. root package.json: next test:installer plus main preflight/checkout/hook wiring; test chain includes both; packages/mosaic/package.json is 0.0.49.
    2. command executor: nullable Local-tier Redis plus SHA-256 poll-token digest and dashboard-only login output; old token/URL chat output is absent.
    3. session GC: nullable Local-tier Redis plus escaped literal scans and promoteSessionToWarm; automatic fullCollect/sweepOrphans paths are absent.
    4. cron: Local-tier BullMQ disablement/nullable workers plus global-GC schedule retirement via removeRepeatableJobs; no new global GC schedule remains.
    5. system override: Local-tier in-memory fallback/graceful queue close plus tenant/user/session-scoped identity for both local and Redis paths.
    6. finalize: current tools/_scripts lookup with legacy fallback and deferred summary plus manifest fail-loud handling, canonical Claude skill reconciliation, and visible link warning.
    7. installer: --next/npm @next/source fallback/ref precedence plus fail-closed missing/unknown argument handling.
    8. defaults README: next-lane installer and link-only documentation plus secure skill list/register/unregister documentation.
  • Semantic merge gap: exact-head queue service returns established Local-tier no-op 0 from removeRepeatableJobs when no queue exists, and the exact-head local-tier spec asserts that behavior.
  • git diff --check passed.

Blocking finding

[BLOCKER] Missing required closing linkage. The live PR body contains only Refs #1037 and no Closes #N directive. The merge-gate role and Mosaic delivery checklist require a closeable delivery issue linked in the PR body; a reference to B2 graduation tracking is not a closing linkage.

Create a separate closeable B1 delivery issue and add Closes #N to the PR body. Keep Refs #1037 if #1037 must remain open for B2. This is metadata-only; the head need not move. Request re-verdict after correction.

Disposition: NO-GO. I did not merge.

## MERGE-GATE VERDICT: NO-GO **Commit-bound head:** `b8844e1ff0e8242885361f9aba3516a36a6ad2f8`. This verdict is VOID immediately if the PR head moves. Jason's Phase-B authorization lifts the postmortem-audit HOLD and permits this `next` prerelease-lane sync for this work only; it does not waive the remaining mechanical gates. ### Primary mechanical evidence - **PR record:** raw Gitea PR API reports PR #1039 `open`, not draft, not merged, mergeable, base `next`, head `b8844e1ff0e8242885361f9aba3516a36a6ad2f8`, author `coder-mos2`. Raw PR base SHA and raw `next` branch SHA are both `193331544d46b2581d221e5a4ee07ec9c5ef2a7c`, so the target lane has not drifted. - **CI:** Woodpecker pipeline **#2205** (pipeline id **18356**, mosaic instance) is terminal `success` at commit `b8844e1ff0e8242885361f9aba3516a36a6ad2f8`; workflow `ci` is `success`. Superseded pipeline #2204 is `failure` at different commit `5916aeefd6ed12bcac086c6834c7f6c4ae38e1bc`; it is not used as evidence. - **Full JSON step scan:** read from `pipeline-status.sh -n 2205 -f json`; observed exactly **9 child steps**, all `success`, **0 skipped**: `clone`, `ci-postgres`, `install`, `sanitization`, `upgrade-guard`, `typecheck`, `lint`, `format`, `test`. - **Head triple:** reviewed SHA `b8844e1ff0e8242885361f9aba3516a36a6ad2f8` == CI SHA `b8844e1ff0e8242885361f9aba3516a36a6ad2f8` == PR head `b8844e1ff0e8242885361f9aba3516a36a6ad2f8`. - **Independent approval:** review **ID 76**, author `rev-974`, state `APPROVED`, submitted `2026-08-03T05:17:25Z`, commit `b8844e1ff0e8242885361f9aba3516a36a6ad2f8`; PR author `coder-mos2` != reviewer `rev-974`. Review 76 is latest and current-head; there is no `REQUEST_CHANGES` against this head. - **Queue guard:** **ZERO-INFORMATION (inert, D-23)**. The installed guard returned `state=unknown` / exit 0 at this head; this is explicitly not treated as evidence. ### Conflict-resolution substance - **Guard:** exact-head `packages/mosaic/framework/tools/git/ci-queue-wait.sh` is **482 lines** with **5 `ASSERTED_NOT_READY` occurrences**, preserving main's fixed guard. - **Integration ancestry:** both current `origin/main` and `origin/next` are ancestors of the head. `origin/next --not origin/main` contains exactly **10 commits**, and `origin/next` itself is reachable from the head, preserving all ten in-flight next-lane commits. - **Eight combined resolutions:** provenance checks against merge parents `19333154` (next) and `5916aeef` (main) confirm each exact-head file retains markers from both parents, with no conflict markers: 1. root `package.json`: next `test:installer` plus main preflight/checkout/hook wiring; test chain includes both; `packages/mosaic/package.json` is `0.0.49`. 2. command executor: nullable Local-tier Redis plus SHA-256 poll-token digest and dashboard-only login output; old token/URL chat output is absent. 3. session GC: nullable Local-tier Redis plus escaped literal scans and `promoteSessionToWarm`; automatic `fullCollect`/`sweepOrphans` paths are absent. 4. cron: Local-tier BullMQ disablement/nullable workers plus global-GC schedule retirement via `removeRepeatableJobs`; no new global GC schedule remains. 5. system override: Local-tier in-memory fallback/graceful queue close plus tenant/user/session-scoped identity for both local and Redis paths. 6. finalize: current `tools/_scripts` lookup with legacy fallback and deferred summary plus manifest fail-loud handling, canonical Claude skill reconciliation, and visible link warning. 7. installer: `--next`/npm `@next`/source fallback/ref precedence plus fail-closed missing/unknown argument handling. 8. defaults README: next-lane installer and link-only documentation plus secure skill list/register/unregister documentation. - **Semantic merge gap:** exact-head queue service returns established Local-tier no-op `0` from `removeRepeatableJobs` when no queue exists, and the exact-head local-tier spec asserts that behavior. - `git diff --check` passed. ### Blocking finding **[BLOCKER] Missing required closing linkage.** The live PR body contains only `Refs #1037` and no `Closes #N` directive. The merge-gate role and Mosaic delivery checklist require a closeable delivery issue linked in the PR body; a reference to B2 graduation tracking is not a closing linkage. Create a separate closeable B1 delivery issue and add `Closes #N` to the PR body. Keep `Refs #1037` if #1037 must remain open for B2. This is metadata-only; the head need not move. Request re-verdict after correction. **Disposition: NO-GO.** I did not merge.
Collaborator

Superseding this PR with a re-opened copy from the identical head b8844e1f that carries the required Closes #1040 in its body. Reason: PR-body EDIT is blocked for all fleet accounts (Gitea 403/1010 — stale-login limitation, OWNER-HELD #1010/#1012 class); create works, edit does not. Re-open is the only way to add the Closes directive the merge-gate (c.20532) requires. rev-974 review 76 already APPROVED this exact SHA.

Superseding this PR with a re-opened copy from the identical head b8844e1f that carries the required `Closes #1040` in its body. Reason: PR-body EDIT is blocked for all fleet accounts (Gitea 403/1010 — stale-login limitation, OWNER-HELD #1010/#1012 class); create works, edit does not. Re-open is the only way to add the Closes directive the merge-gate (c.20532) requires. rev-974 review 76 already APPROVED this exact SHA.
mos-dt-0 closed this pull request 2026-08-03 08:20:44 +00:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.