POLICY-ISSUE-INTAKE (#840) made ownership a gate: every row of
.agents/issue-index.md must name an owning row ID, or name a spec that lists
the issue under ## Owed. The gate reads the index.
An issue that is never appended to the index is invisible to it. #829, #848
and #822 were all open and none of them had a row. Filing an issue on GitHub and
simply not indexing it bypasses the ownership rule completely, which is the rule
the row existed to enforce.
The checker cannot close this by itself. Comparing the index against the real
set of open issues needs a GitHub query, and no gate in this repository may
query the network. check_issue_index states the reason: "Querying GitHub would
make this gate fail on connectivity, which is exactly the class of flake this
protocol exists to remove."
A second, smaller defect from the same change: the index is append-only, so a
row that lands with a dash can never be edited to name an owner later. The
## Owed escape hatch covers it, and that is by design, but it means a row's
Row column is fixed at append time forever. A closed issue with a dashed row
also counts against the unowned ratchet permanently.
Candidate shapes
- An operator-cadence report, not a gate, that uses
gh to list open issues
with no index row. Visible debt, never a CI blocker. This matches how the
ungateable lane is handled elsewhere in the protocol.
- A pull-request-lane check that every issue number referenced in the branch's
commit messages has an index row. Network-free, and it catches the common case
where an agent files and cites an issue without indexing it.
- Accept the gap and record it. The index is a claim surface, not a mirror of
GitHub, and the ratchet only ever constrains what was claimed.
POLICY-ISSUE-INTAKE(#840) made ownership a gate: every row of.agents/issue-index.mdmust name an owning row ID, or name a spec that liststhe issue under
## Owed. The gate reads the index.An issue that is never appended to the index is invisible to it. #829, #848
and #822 were all open and none of them had a row. Filing an issue on GitHub and
simply not indexing it bypasses the ownership rule completely, which is the rule
the row existed to enforce.
The checker cannot close this by itself. Comparing the index against the real
set of open issues needs a GitHub query, and no gate in this repository may
query the network.
check_issue_indexstates the reason: "Querying GitHub wouldmake this gate fail on connectivity, which is exactly the class of flake this
protocol exists to remove."
A second, smaller defect from the same change: the index is append-only, so a
row that lands with a dash can never be edited to name an owner later. The
## Owedescape hatch covers it, and that is by design, but it means a row'sRow column is fixed at append time forever. A closed issue with a dashed row
also counts against the unowned ratchet permanently.
Candidate shapes
ghto list open issueswith no index row. Visible debt, never a CI blocker. This matches how the
ungateable lane is handled elsewhere in the protocol.
commit messages has an index row. Network-free, and it catches the common case
where an agent files and cites an issue without indexing it.
GitHub, and the ratchet only ever constrains what was claimed.