You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
One writer for derived contract files: README contract count, contracts/contracts.nt and the ONT-5 witness (the T21 roadmap.yaml rule) #4781
Every PR that adds or renames a contract also regenerates three derived files:
the contract count in README.md (make readme-sync),
contracts/contracts.nt (the regen step of contracts_gate.sh),
the ONT-5 witness contracts/witness/<census hash>.json (pv lint gate 18 fails when it is stale).
Two such PRs conflict on these files even when their contracts have nothing in common. Each merge makes every other open contract PR stale, so each one has to regenerate and re-run. T21 removes the same churn for docs/roadmaps/roadmap.yaml.
Rule, the same one T21 applies to roadmap.yaml:
No PR writes these three files. A PR commits its contract only.
The checks accept a lagging aggregate. CI regenerates the three files in its own clone before any reader, and judges the PR against the regenerated copies (contract validity, census, witness, count). Every existing verdict still blocks.
One writer: a nightly job opens at most one PR, from main, that changes only these files.
The release refuses a commit whose committed files are not the aggregate (publish preflight), so a release never ships a stale count, witness or graph.
Until the writer exists: at most one refresh PR a day for the derived files, and that PR holds nothing else.
Measure: each morning, count the open PRs in conflict with main, and how many of them conflict only on generated files (roadmap.yaml, the README count, contracts.nt, the witness). Target 0 for the second number.
This changes what a gate accepts. It needs two reviewers who are not the author, plus a quorum sign-off. Any new judge lands as report-only from today's measured value, and blocks only after three green nights.
Folded into #4741 as a checklist row (TRIAGE-100, 2026-10-14): the open-ticket cap is 100, so this ticket is now tracked on that master and closed as not planned. Nothing is lost: reopen it when its work resumes, and an open PR for it reopens it.
Activity
noahgift commentedon Oct 14, 2026
Folded into #4741 as a checklist row (TRIAGE-100, 2026-10-14): the open-ticket cap is 100, so this ticket is now tracked on that master and closed as not planned. Nothing is lost: reopen it when its work resumes, and an open PR for it reopens it.
Agent: aprender-clerk