Review 172 on PR #1278 (head 99b8f6ea): forge suite 116/116 executed at
head, workspace typecheck 45/45, consumer sweep clean, digest gate
before==after. CI red on the PR is the lane-wide fleet-test failure only
and carries no information about the change (fred, log-content analysis).
Continuation by fargo (sb-it-1-dt) per Jason; identity incident and fred's
ruling recorded in the scratchpad. Wave 2 (RI-2-002 + RI-4-001) next.
12 KiB
Scratchpad — RI-050 orchestrator (jarvis, dragon-lin)
Mission: alpha 0.0.50 release-integrity floor. Issue #1275. Base next @ 476db12b.
Design SSOT: jarvis-brain docs/plans/2026-08-16_mosaic-stack-sdlc-protocol.md (SDLC-D-033..038).
Mode (Jason's directives)
- Orchestrator: jarvis (this session, dragon-lin). NOT mos-claude; work stays on this host.
- Workers: local pi headless —
pi --model zai/glm-5.3:high -pin the card's worktree, tools read,bash,edit,write. - Delegation override of stack AGENTS.md
agentcolumn: rows carrypi-glm-5.3(outside cron table so no auto-claim). - Target branch:
next. Cards branch fromorigin/next, squash-merge via PR.
Operational constraints (measured this session)
- Main checkout at
/home/jwoltje/src/mosaic-stackis a dirty divergedmain(ahead 1139/behind 711) — NEVER touched. All work in/home/jwoltje/src/mosaic-stack-worktrees/<branch>. - Disk: /home 187G free. /tmp only 8.7G — keep pnpm stores/node_modules under /home.
mainandnexthave DIVERGED; PRs targetnext.- Identity: pin
GITEA_LOGIN=mosaicstack-jarvisfor all wrapper ops. Issue #1275 verified authored by @jarvis. ci-queue-wait.shon this host is fail-open (board: fix #1032 not installed) — substitute SHA-status checks via/commits/{sha}/statusand diff failing step names.- CI on PRs runs
pull_requestpipelines (any branch) incl. ci-postgres service. Push CI runs on main only; publish runs on push/tag to next + manual. - Wrapper gaps on this host per board (7 gaps; e.g. no pr-review-list, issue-assign broken, pr-merge makes no trailers): verify outcomes by reading back provider state, never trust rc alone.
- Publish pipeline currently: install → build → publish-npm/publish-next-npm (+image). No verify. CI steps: install, sanitization, upgrade-guard, typecheck, lint, format, test, ci-postgres.
Budget
Soft cap 250K. Projected 190K across 10 cards. Track per-card used vs estimate in TASKS.md notes.
Progress log
- 2026-08-16 23:52 — Issue #1275 created (@jarvis verified).
- 2026-08-16 23:5x — Bootstrap branch
docs/ri-050-mission-bootstrapfrom origin/next@476db12b; PRD section + TASKS.md + this scratchpad written. RI-0-001 in-progress.
Wave 1 dispatched (2026-08-17 00:35)
- RI-1-001 worker: pi glm-5.3:high, pid 2322125, worktree ri-1-001, log /var/tmp/ri-050/ri-1-001-run.log
- RI-2-001 worker: pi glm-5.3:high, pid 2322126, worktree ri-2-001, log /var/tmp/ri-050/ri-2-001-run.log
- Gotcha recorded: pi has no -f flag (that's pi-do.sh); pass brief as positional message. First launch died "Unknown option: -f" — relaunched.
- CI lane: PR #1276 (bootstrap) fails
testat base like every next PR — fred's green #1270 unblocks (comms sent 2026-08-17T05:21Z,comms/20260817T052148Z__from-jarvis__650fe8.md). Merge gate for all RI PRs queues behind #1270. - Live RI-N1 evidence posted to #1275 (comment 22915): pipeline 2439 publish-next-npm SUCCESS beside build-gateway FAILURE.
HANDOFF — RI-050 continuation (written 2026-08-17 ~08:45 UTC, jarvis/dragon-lin)
You are taking over the alpha 0.0.50 release-integrity workstream in place. Everything you
need is on the remote. Read this whole file, then docs/release-integrity/TASKS.md (same
branch), then the PRD section (docs/PRD.md § Release Integrity Workstream, same branch).
Identity / mode
- Orchestrator identity:
jarvis(dragon-lin). You continue as the RI-050 orchestrator under whatever identity Jason gives you — if you are NOT jarvis, say so in comms and PR bodies. - Jason's standing directives for this mission: work happens on THIS repo (mosaicstack/stack),
PRs target
next(NOT main), workers are local pi headless sessions onzai/glm-5.3:high. Do not hand this to mos-claude. Do not borrow other seats' lanes. - All wrapper ops: pin
GITEA_LOGIN=mosaicstack-jarvis(issue #1275 was verified authored by @jarvis; keep identity consistent or verify yours with issue-view and READ BACK user.login). - CI substitution rule (this host's ci-queue-wait.sh is fail-open; fix #1032 not installed):
judge CI by SHA-status via
/api/v1/repos/mosaicstack/stack/commits/{sha}/statusor the woodpecker API (pipeline-status.sh -r mosaicstack/stack -n N -f json), and DIFF THE FAILING STEP NAMES rather than trusting rc.
Mission state at handoff
Mission: alpha 0.0.50 release-integrity floor. Issue #1275 (open, has live-evidence comment).
Decisions SDLC-D-033..038 live in jarvis-brain
docs/plans/2026-08-16_mosaic-stack-sdlc-protocol.md (normative text also mirrored in the
PRD section on this branch, so this repo is self-sufficient).
Base: origin/next @ 476db12b. NOTE: main and next have DIVERGED — never base on main.
Branches (all pushed, all clean trees):
docs/ri-050-mission-bootstrap@5114faa2→ PR #1276 (open, mergeable) — bootstrap docs + this scratchpad + TASKS.md DAG. STATUS: CI red ontestonly, which is the known lane-wide failure (see blocker below); own prettier issue already fixed.feat/ri-050-publish-gate@0aa5ed35→ PR #1277 (open, mergeable) — RI-1-001 COMPLETE (worker reported success, orchestrator review PASSED: verify step asserts CI_COMMIT_SHA == git rev-parse HEAD then runs canonicalpnpm verify:release; every publish/image step depends_on verify directly, confirmed by parsing the DAG: publish-npm, publish-next-npm, build-gateway/appservice/web all -> [build, verify]; invariant test scripts/verify-release.test.mjs passes 7/7 locally with negative fixtures). CI: same known lane-redteststep only.fix/ri-050-forge-fail-closed@99b8f6ea→ PR #1278 (open, mergeable) — RI-2-001 worker reported success (typedFORGE_*capability errors, --simulate typed simulated everywhere, vacuous true/echo gates replaced, closed ForgeOutcome set, 116 tests green incl. 16 new). ORCHESTRATOR REVIEW NOT YET DONE — your first job. Review the diff (1391 insertions across forge src), check the fail-closed paths and that simulated results cannot satisfy any consumer, runpnpm --filter @mosaicstack/forge test.
The one blocker
Every next PR pipeline is red on ONE assertion:
packages/mosaic/framework/tools/fleet/test-start-agent-session.sh:103 ("host provides 'pi'
in the system path"). Pre-existing at base; affects PRs #1276/#1277/#1278 identically.
fred's PR #1270 ("unblocks every PR on next") is green and open — it is HIS to merge; do not
merge it yourself. jarvis sent comms (comms/20260817T052148Z__from-jarvis__650fe8.md in
jarvis-brain) asking merge timing; no reply yet as of handoff. Merge gates for ALL RI PRs
queue behind #1270 landing. Until then: review/develop freely, merge nothing that needs the
green gate (docs-only #1276 arguably could merge red-lane with Jason's explicit call — ask,
don't assume).
Remaining DAG (docs/release-integrity/TASKS.md is canonical)
Wave 2 (next): RI-2-002 MACP fail-closed (brief pattern: mirror RI-2-001 for
packages/macp/src/gate-runner.ts — empty commands, stub executors, unimplemented CI-provider
gates fail closed; explicit simulate) and RI-4-001 PRD authority (one PRD service;
@mosaicstack/prdy docs/prdy authoritative via mosaic mission --plan; mosaic prdy routes
or becomes named Markdown adapter; mission<->PRD linkage persists — see PRD RI-N3).
Wave 3: RI-3-001 probe inventory (docs), RI-5-001 web stale-safety.
Wave 4: RI-1-002 negative-control tests, RI-3-002 TS evaluator absorbs shell probes.
Final: RI-V-001 evidence pack (real green next publish run post-gate + all cards verified).
Worker mechanics (measured, reuse)
- Dispatch: create worktree
git -C /home/jwoltje/src/mosaic-stack worktree add /home/jwoltje/src/mosaic-stack-worktrees/<id> -b <branch> origin/next, write a brief to /var/tmp/ri-050/, then run from INSIDE the worktree:pi -p --no-session --model zai/glm-5.3:high --tools read,bash,edit,write "$(cat brief.md)"(pi has NO -f flag — pass the brief as a positional message; first dispatch died on that). - Briefs for 1-001/2-001 are at /var/tmp/ri-050/ on dragon-lin (may not survive; the pattern is fully described above and in TASKS.md).
- Briefs must carry: worktree path, branch, base, requirements, known base-red list (so the worker doesn't chase it), gates to run, PR creation command with GITEA_LOGIN pin, "do NOT merge, do NOT touch docs/TASKS.md", and the JSON report format.
- Verify worker claims: read the PR, run their tests yourself, parse pipeline step names.
Do-not-touch
- Main checkout at /home/jwoltje/src/mosaic-stack (dirty diverged main) — never touch.
- fred's open PRs (#1270 and others) — review evidence welcome, merging his is not yours.
- Other RI PRs' authors' lanes: #1277/#1278 are yours to gate and merge ONCE lane is green and review is recorded.
- Never
--no-verify; never bypass the wrapper-fails-closed rule (wrapper failure ⇒blocked + report exact command + stop).
Session-restore command sequence
git -C /home/jwoltje/src/mosaic-stack-worktrees/ri-050 fetch origin --prune- Read this file +
docs/release-integrity/TASKS.md+ PRD section. - Check PR states (#1270, #1276, #1277, #1278) and lane CI (SHA-status per above).
- Review RI-2-001 (PR #1278) if not yet done; then dispatch wave 2.
— jarvis, 2026-08-17
CONTINUATION — fargo (sb-it-1-dt)
Orchestrator seat is now fargo on sb-it-1-dt (Jason, 2026-08-17): Claude seat, worktree discipline
per fred's ruling (~/agent-work/<slug>, create → work → commit → push → remove as one act; the
helper's /src refusal is a web1 convention, does not bind here). fred supports; lane rulings are
his. Workers remain local pi zai/glm-5.3:high + limited Claude per Jason.
2026-08-17 — RI-2-001 independent review DONE
- PR #1278 APPROVED (Gitea review 172, pinned to head
99b8f6ea). Executed evidence, not read-only: forge suite 116/116 at head (matches PR claim), forge lint green, forge typecheck green after building@mosaicstack/macpdist (TS2307 on barepnpm install --frozen-lockfileis a minimal-install build-order artifact — the macp import is type-only, vitest passes unbuilt; CI installs build workspace deps, hence green there), workspace typecheck 45/45 at head, consumer sweep: no external type consumers of RunManifest/StageStatus/ForgeTaskResult/ TaskExecutor; only importer of the package is packages/mosaic via registerForgeCommand (smoke test asserts registration/help only — cannot break). Digest gate (shaggy's) before==after with both-arm reactivity controls. - CI red on #1276/#1277/#1278: lane-wide
testfailure only (test-start-agent-session.sh:103, fred's guard mis-wired; #1270 unwires it). Fred measured log content: one real byte-identical failure per pipeline (2456/2457/2458); 13 of ~14FAILgrep hits are passing fail-loud test NAMES. The red carries no information about the RI changes. - Non-blocking finding: README L141-143 + skills/mosaic-forge/SKILL.md document bare
mosaic forge run/resume, which now exits 1 FORGE_NO_EXECUTOR — fast-follow docs touch. - Identity incident, ruled on by fred: review 172 recorded under shared host principal mos-dt-0, not fargo. Mechanism (measured, wrapper source): pr-review.sh resolves its acting login from the tea login list only; no fargo tea login on this host → silent host-default fallback; MOSAIC_GIT_IDENTITY is only read in detect-platform.sh get_gitea_token's fallback arm, never reached. Exact-id read-back verifies against the writing token, so it passed while attribution was wrong — durable-provenance machinery proves the write, not the seat. Fred's ruling: review 172 stands (substance/verdict/pin correct; label wrong); NO re-approval (one approval, annotated, is the stronger record); fred posts the provenance correction under @fred with --login fred-ms (hard-fail path); no fargo tea login ever (freeze + Jason's to authorize); tooling gap filed by fred. Also explains (does not reopen) #1228's mos-dt-0 attribution.
- Merge gate: all RI PRs queue behind fred's green #1270 (Jason's call).
Next
- Wave 2 dispatch: RI-2-002 (MACP fail-closed, mirror RI-2-001 pattern for packages/macp/src/gate-runner.ts) + RI-4-001 (PRD authority). Two parallel workers max.
- Docs fast-follow (README + mosaic-forge skill) — fold into #1276 or a tiny docs card.
- RI-V-001 evidence at the end.
— fargo, 2026-08-17