build-gate: per-node verify stage, rebased onto main (supersedes #192) - #195
Conversation
Rebase of PR #192 (claude/telos-verify-stage) onto current main. The branch had forked well before main and carried stale build-gate copies; this replays its two commits (WIP + finish) as one clean commit on top of main and resolves the conflicts against main's proposal-lifecycle work. Conflict resolutions (keep-both throughout — the verify stage adds a blocking-only scrutiny layer; Rule 3 / defaultVerifyNode stays the sole settle authority): - build-orchestrator.mjs: keep main's runProposalLifecycle import + lifecycle delegation and merge in the branch's reverifyRecord import, readArtifactFiles, runVerify, and the verify-team routing; buildProject's params are the union of both (callWorkshopSeat/callParallelSeat/nowMs/maxRevisions + callVerify/requireVerify). - schemas.mjs: keep DAEDALUS_RESPONSE/PROPOSAL_REVIEW_PACKET/EVIDENCE_CLAIM and add VERDICT_SCHEMA; SCHEMAS registry gains `verdict`. - teamPrompts.mjs: keep main's prompts.json refactor (drop the removed PACKET_INSTRUCTION) and add promptForVerify/verifyPrompt/parseVerdict/makeLiveCallVerify. - package.json: keep main's full check/test script list, add test-verify-stage. - test-verify-stage.mjs: opt the keyless dossier into trust_mode "advisory" (main's gate is signed-by-default now), matching test-build-orchestrator.mjs. Verification (Node 22.22.2, on the rebased tree): - cd build-gate && npm test -> exit 0 (includes test-verify-stage 6/6 and breakout) - cd merkle-dag && npm test -> exit 0 - node docs/institutional-memory/verify-contracts.mjs -> 313/313 contracts match - node .github/scripts/check-portable-paths.mjs -> 0 violations Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013rxfYqddLk2NykrPkjy1Pr
CI status:
|
Manual code review (the automated
|
|
Correction to the earlier CI diagnosis: the The public log does not reveal whether the OAuth credential was rejected, an account entitlement/limit intervened, or another provider-side error occurred. The secret was last updated July 30. A fresh OAuth credential is the next useful test, followed by one rerun of the failed job. Please do not treat green package CI or the failed Evidence: failing run, |
|
Patch on
Evidence: targeted tests cover missing callback, live error text, malformed object, and lifecycle blocking. The full The separate automated review run still failed before model work ( |
Repair status at
|
Bring the per-node verify stage up to date with main (079e77e), which now carries #193 (repo code trace + keyless evidence fixes), #196 (gate verdict surfacing + runBuild refusals as phased results, F1/F5), and #194 (trace docs). build-orchestrator.mjs auto-merges cleanly: the verify-stage changes and the F1/F5 changes touch different regions. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013rxfYqddLk2NykrPkjy1Pr
Summary
This is PR #192 (
claude/telos-verify-stage) rebased onto currentmain, opened on a fresh branch because #192's branch could not be force-updated from this session. It carries the same change — the per-node verify stage for the autonomous builder — with the merge conflicts against main's proposal-lifecycle work resolved and CI-relevant checks green locally.Supersedes #192. Once this is reviewed, #192 can be closed (or its branch force-updated to this commit if you prefer to keep that PR number).
Why a rebase was needed
#192 forked well before current
mainand carried stalebuild-gatecopies, so it showedmergeable_state: dirty(conflict) and CI never ran. Its two commits (WIP + finish) are replayed here as one clean commit on top ofmain.Conflict resolutions (keep-both throughout)
The verify stage is a blocking-only scrutiny layer; Rule 3 /
defaultVerifyNodestays the sole settle authority. Nothing here weakens a fail-closed guarantee.build-orchestrator.mjs— keep main'srunProposalLifecycleimport + lifecycle delegation; merge in the branch'sreverifyRecordimport,readArtifactFiles,runVerify, and verify-team routing.buildProject's parameters are the union of both sides (callWorkshopSeat/callParallelSeat/nowMs/maxRevisions+callVerify/requireVerify).schemas.mjs— keepDAEDALUS_RESPONSE_SCHEMA/PROPOSAL_REVIEW_PACKET_SCHEMA/EVIDENCE_CLAIM_SCHEMA; addVERDICT_SCHEMA;SCHEMASregistry gainsverdict.teamPrompts.mjs— keep main'sprompts.jsonrefactor (drop the removedPACKET_INSTRUCTION); addpromptForVerify/verifyPrompt/parseVerdict/makeLiveCallVerify.package.json— keep main's full check/test script list; addtest-verify-stage.scripts/test-verify-stage.mjs— the one substantive follow-on: the keyless test dossier now opts intotrust_mode: "advisory", because main's gate is signed-by-default (an absenttrust_modewould block at approval). This matchestest-build-orchestrator.mjsand keeps the test focused on the verify stage, not gate signing.Verification (Node 22.22.2, on the rebased tree)
cd build-gate && npm test→ exit 0 (includestest-verify-stage6/6 andbreakout)cd merkle-dag && npm test→ exit 0node docs/institutional-memory/verify-contracts.mjs→ 313/313 contracts matchnode .github/scripts/check-portable-paths.mjs→ 0 violationsGovernance note
This touches trust-spine code, so merge remains The Eye's decision. This PR only replays already-authored work onto
mainand resolves conflicts; it adds no new scope. Left as draft, no merge.🤖 Generated with Claude Code
https://claude.ai/code/session_013rxfYqddLk2NykrPkjy1Pr
Generated by Claude Code