Intent: the { items, next_cursor } promise in src/http/api.ts's header stays kept after the list issues land.
Done:
[ ] a test in test/ calls each GET route that answers a list and fails when one answers a JSON array. Routes come from the API router's own table where it can be read, or from a list in the test
[ ] the routes that answer a bare array today are named in one allowlist in the test, each with the open issue that will change it. The test fails when an allowlisted route already answers { items }, so the list only gets shorter
[ ] docs/ or AGENTS.md has one line saying a new list answers { items, next_cursor }
Other pulls change list routes at the same time; a builder whose route leaves the allowlist removes its line.
Intent: the
{ items, next_cursor }promise in src/http/api.ts's header stays kept after the list issues land.Done:
{ items }, so the list only gets shorter{ items, next_cursor }Other pulls change list routes at the same time; a builder whose route leaves the allowlist removes its line.