Add scaffoldingToStrip to pin the dod.md pr-ready strip - #2043
lore-agent[bot] wants to merge 4 commits into
Conversation
🔍 Lore Spec Impact — advisoryThis PR touches 9 statement(s) across 2 spec(s), and changes the validating tests alongside every one of them. Weaker signals (9) — linked by a spec, not proven by a test runFeature Specification: Dark Factory Mode · 2 statement(s)
FR6 — Assembly line identity
validated by FR6 — Assembly line identity
validated by Feature Specification: Implementation Loop · 7 statement(s)
FR4 — Waiting on the pull request
validated by FR14 — What a pod needs to hand work on
validated by FR14 — What a pod needs to hand work on
validated by FR14 — What a pod needs to hand work on
validated by FR14 — What a pod needs to hand work on
validated by FR14 — What a pod needs to hand work on
validated by FR12 — A line can hold its pull request in draft
validated by 1 changed statement(s) had no validating test, so no coverage broke. 1 new statement(s) have no test link yet. Deterministic · graph @ |
Exports scaffoldingToStrip(branchFiles) from spec-pr.ts so the deterministic pr-ready step can identify and delete .lore/dod.md from the branch before un-drafting the PR, whatever the agent pod did. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Spec anchors landing nowhere (deterministic check at the ready flip) These
|
.lore/dod.mdis scaffolding that each implementation-loop pod leaves on the branch for the next pod to read. Before #1914 squash-merged it ontomain, the only thing standing between the file and a reviewer was an agent prompt'sgit rm .lore/dod.mdin the pr-ready recipe — a discretionary act that #1914's pod skipped. Every implementation-loop branch opened since then hits an add/add conflict when it mergesmain.The fix lives in
markPrReady(the deterministic Floor-side step that updates the PR body and un-drafts the PR), not in the agent prompt. That step already imports its pure helpers fromapps/floor/src/work/assembly-run/spec-pr.ts, so the strip decision belongs there alongsidereadyPrBodyanddecideMarkReady. This branch adds the pure half:scaffoldingToStrip(branchFiles)filters a branch's file list down to the implementation-loop scaffolding that must never reach a reviewer — today just.lore/dod.md, expressed as theSCAFFOLDING_PATHSconstant so future scaffolding can be added in one place.The acceptance test in
spec-pr.test.tspins the contract: given a branch file list that includes.lore/dod.mdalongside real changes,scaffoldingToStripreturns only.lore/dod.md. The test is appended after the last existing describe block and uses a dynamicawait import("./spec-pr.js")inside theit()so no new static import shifts the file's existing line numbers (48 ESLint errors from stale spec anchors was the earlier failure mode here, documented in the dod/1987 memory). The spec statement inspecs/implementation-loop/spec.mdat the FR6 scaffolding line now carries a traceability link to that test at L540.The wiring — calling
scaffoldingToStripfrommarkPrReadyand deleting the returned paths via a new branch-delete port op — is the remaining facet.commitFiletoday only creates or updates; a delete op does not exist yet. That is the next pod's job; this branch gives it a tested, exported entry point to wire against.The strategy in
specs/implementation-loop/spec.mdhas not changed; the prose on the FR6 scaffolding statement still describes the agent's final commit rather than the deterministic strip. That amendment is also deferred to the next pod, which will have concrete code to describe.Refs #1987
Lore-Task: 0640f936-5df4-492b-aa9d-4aa199e4d328