Every lane's final porch write is a chore(porch): <id> PR #<n> merged commit that touches only codev/projects/<id>-<slug>/status.yaml. Because it necessarily happens after the PR merges, it lands on a branch that is already merged and is then deleted at cleanup — so it can never reach main. Observed independently on pir-1191 and pir-1410; by construction it applies to every completed lane.
Effect on main's record. The shipped copy of a completed project is frozen one step short of done. For 1191 (merged, issue closed, protocol verified) main carries:
phase: verified
build_complete: false
pr_history:
- { phase: review, pr_number: 1427, branch: builder/pir-1191, created_at: ... } # created, never merged
pr_ready_for_human: false
Sampling completed projects on main, 12 of the first 40 with a pr_number show build_complete: false. So anyone reading project history from main — a person, a future dashboard, or an audit script — sees a repo full of lanes that appear to have stalled at 'PR opened'.
The question to settle is which of two things codev/projects/*/status.yaml is:
- Ephemeral orchestration state — in which case shipping it to main at all is arguably noise, and the durable record is the PR + issue + review artifact (already true today).
- Part of the shipped project record — in which case the merge outcome belongs in it, and the final stamp needs to land somewhere reachable: write the merge record before merging (the PR carries it), or have the merge step amend it on main, or drop the fields that can never be accurate post-merge.
Not urgent and nothing is lost today (the PR and issue are the real record), but the current shape quietly publishes a wrong answer, and it is cheap to make honest either way. Surfaced by the streamdeck architect during pir-1410 cleanup; filed here as porch's own design call.
Every lane's final porch write is a
chore(porch): <id> PR #<n> mergedcommit that touches onlycodev/projects/<id>-<slug>/status.yaml. Because it necessarily happens after the PR merges, it lands on a branch that is already merged and is then deleted at cleanup — so it can never reachmain. Observed independently on pir-1191 and pir-1410; by construction it applies to every completed lane.Effect on main's record. The shipped copy of a completed project is frozen one step short of done. For
1191(merged, issue closed, protocol verified) main carries:Sampling completed projects on main, 12 of the first 40 with a
pr_numbershowbuild_complete: false. So anyone reading project history frommain— a person, a future dashboard, or an audit script — sees a repo full of lanes that appear to have stalled at 'PR opened'.The question to settle is which of two things
codev/projects/*/status.yamlis:Not urgent and nothing is lost today (the PR and issue are the real record), but the current shape quietly publishes a wrong answer, and it is cheap to make honest either way. Surfaced by the streamdeck architect during pir-1410 cleanup; filed here as porch's own design call.