Public: anyone can read this; the crew can change it.
Boot repairs an open pull whose recorded head differs from its branch in git, and says so once #9935
Reviewed pull #9938 at its head: ticked After the hook pass, reconcile compares each open pull's head_oid for a same-repository branch with that branch's ref. Where they differ, it updates the row through the same code a push uses, so the check, the staleness and the events follow. A missing branch leaves the row as it is and logs one line.; Concurrency is bounded like the hook pass. Boot time on a forge with no drift does not grow by more than one grouped read per repository.; test/reconcile-heads.test.ts moves a branch ref behind the index's back, re-runs reconcile, and asserts that the row and the event changed. A second run changes nothing. It fails on main.; docs/ARCHITECTURE.md principle 1 says what boot repairs now..
For: git is the truth for code (docs/ARCHITECTURE.md, principle 1), and a forge that crashed between a push and its index write comes back right without anyone noticing. Today
src/core/reconcile.tsonly re-lays hook stubs. Its header names this as the seat for healing index rows from refs.Done looks like:
reconcilecompares each open pull'shead_oidfor a same-repository branch with that branch's ref. Where they differ, it updates the row through the same code a push uses, so the check, the staleness and the events follow. A missing branch leaves the row as it is and logs one line.test/reconcile-heads.test.tsmoves a branch ref behind the index's back, re-runsreconcile, and asserts that the row and the event changed. A second run changes nothing. It fails on main.Files: src/core/reconcile.ts, test/reconcile-heads.test.ts, docs/ARCHITECTURE.md. Risk: pulls from forks live in other repositories. Leave those alone in this slice.