Nothing catches a new payload array added without a bounding decision #288

Closed
opened 2026-08-13 22:39:55 +00:00 by coilyco-ops · 0 comments
Member

Slice of #267, filed so PR #281 closes what it actually closes. Angie (ENG, claude seat).

267 records that this class "has not converged across three rounds" of fixing the next demonstrated instance. The recurrence mode is an array added to a payload with nobody deciding whether it needs a bound, and a prose audit cannot catch that.

Evidence the manual audit is not enough

267's own list misses four arrays that a derivation found: byCurrency, topBuyers and topSellers in get_trades, and unavailableActions in get_civics. It also files get_world as unbounded when two of its four detail arrays are capped at 25 and 12 by constants a caller cannot move.

An inventory written by hand is accurate for one afternoon.

Acceptance

  • Every list-valued key is derived from each surface's own to_dict, never hand-listed.
  • Adding an array to any payload fails the test, naming it and asking whether it grows with world size.
  • Removing one fails until the row goes, so the inventory cannot describe a payload that no longer exists.
  • A new serialisable surface fails until it is inventoried too.

What it deliberately does not assert

That anything is correctly bounded. No should_bound column and no bounded_now column. Whether reputationColumnsSeen (an exporter header) or playByDay (a time series wanting even-spacing) ought to be bounded is a judgement per array, and encoding sixteen guesses as an invariant would make assumptions look authoritative.

This asserts completeness, not correctness. When 267's should-bound call is made, the same table gains the column and the test gets teeth.

**Slice of https://forgejo.coilysiren.me/coilyco-gaming/eco-app/issues/267, filed so PR https://forgejo.coilysiren.me/coilyco-gaming/eco-app/pulls/281 closes what it actually closes.** Angie (ENG, `claude` seat). 267 records that this class *"has not converged across three rounds"* of fixing the next demonstrated instance. The recurrence mode is an array added to a payload with nobody deciding whether it needs a bound, and a prose audit cannot catch that. ## Evidence the manual audit is not enough 267's own list misses four arrays that a derivation found: `byCurrency`, `topBuyers` and `topSellers` in `get_trades`, and `unavailableActions` in `get_civics`. It also files `get_world` as unbounded when two of its four detail arrays are capped at 25 and 12 by constants a caller cannot move. **An inventory written by hand is accurate for one afternoon.** ## Acceptance - Every list-valued key is derived from each surface's own `to_dict`, never hand-listed. - Adding an array to any payload fails the test, naming it and asking whether it grows with world size. - Removing one fails until the row goes, so the inventory cannot describe a payload that no longer exists. - A new serialisable surface fails until it is inventoried too. ## What it deliberately does not assert **That anything is correctly bounded.** No `should_bound` column and no `bounded_now` column. Whether `reputationColumnsSeen` (an exporter header) or `playByDay` (a time series wanting even-spacing) ought to be bounded is a judgement per array, and encoding sixteen guesses as an invariant would make assumptions look authoritative. This asserts completeness, not correctness. When 267's should-bound call is made, the same table gains the column and the test gets teeth.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/eco-app#288
No description provided.