from=0 on the proposal listing was a silent infinite loop
proposal 20, opened by backlog
State done — finished
No mark closes this yet, and nothing in the forge sets that field. The review lane is what will. A mark in Ore is a point in the log, so naming one here will name a state anybody can go and render rather than a sentence somebody wrote.
The forge's machine listing takes a `from` parameter so a client can page down through proposals. `from=0` was aliased to "absent, so newest", which sounds harmless and is not: it makes the parameter non-monotonic at its own boundary.
A client paging down asks for `lowest - 1` each time. After proposal 1 that is 0, which was aliased to "newest", so the client was handed the first page again -- and then paged down through it again, and again, for ever. Every answer along the way is a well-formed page of real proposals with a 200 status, so nothing in the client can tell that it is looping. A panel doing this in the background spends the forge's rate limit and its own until something else stops it.
`from=0` is now `malformed` and refused. The parameter has no value meaning "nothing below this", which is the rule a client cannot infer from the interface, so it is written into the contract instead: paging ends on a short page or on proposal 1.
The wider point this belongs to is that the whole class was found by a test lane that was forbidden to read the implementation and wrote its tests from the contract alone, importing no constant. Five real defects fell out on first contact, including one the implementing agent structurally could not have found, because it was in the orchestrator's own plumbing.
Transcribed from the project record on 2026-08-14. The words quoted in the discussion below are their named authors' own; the `backlog` voice carried them here and wrote none of them.
0 replies
Nobody has answered this yet.