Files
stack/docs/scratchpads/ri-050.md
T

9.1 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 -p in the card's worktree, tools read,bash,edit,write.
  • Delegation override of stack AGENTS.md agent column: rows carry pi-glm-5.3 (outside cron table so no auto-claim).
  • Target branch: next. Cards branch from origin/next, squash-merge via PR.

Operational constraints (measured this session)

  • Main checkout at /home/jwoltje/src/mosaic-stack is a dirty diverged main (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.
  • main and next have DIVERGED; PRs target next.
  • Identity: pin GITEA_LOGIN=mosaicstack-jarvis for all wrapper ops. Issue #1275 verified authored by @jarvis.
  • ci-queue-wait.sh on this host is fail-open (board: fix #1032 not installed) — substitute SHA-status checks via /commits/{sha}/status and diff failing step names.
  • CI on PRs runs pull_request pipelines (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-bootstrap from 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 test at 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 on zai/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}/status or 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 on test only, 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 canonical pnpm 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-red test step only.
  • fix/ri-050-forge-fail-closed @ 99b8f6ea → PR #1278 (open, mergeable) — RI-2-001 worker reported success (typed FORGE_* 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, run pnpm --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

  1. git -C /home/jwoltje/src/mosaic-stack-worktrees/ri-050 fetch origin --prune
  2. Read this file + docs/release-integrity/TASKS.md + PRD section.
  3. Check PR states (#1270, #1276, #1277, #1278) and lane CI (SHA-status per above).
  4. Review RI-2-001 (PR #1278) if not yet done; then dispatch wave 2.

— jarvis, 2026-08-17