Story: Eight columns in the trading models hold JSON blobs where th…
Table of Contents
This page documents a story in Sprint 30. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
1. Goal
Eight columns in the trading models hold JSON blobs where the domain should hold rows, and each is a place where the store cannot answer a question about the trade without parsing text.
2. Status
| Field | Value |
|---|---|
| State | BACKLOG |
| Parent sprint | Sprint 30 |
| Now | Not yet started. |
| Waiting on | Nothing. |
| Next | Break the story into tasks. |
| Last touched | 2026-11-08 |
3. Acceptance
- Each of the eight columns is named, with its decision: rows, or kept with a reason.
- A column that becomes rows has no JSON left in the model, the store or the wire.
- The store answers a question about a trade from those rows, without parsing text.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Model the basket constituents | DONE | 2026-10-26 | 2026-10-27 | Four trading entities hold their baskets, prices, barriers and levels as JSON blobs. This replaces the basket blob with constituent rows that say what kind each constituent is and which vocabulary it belongs to, so a mixed basket is representable and a constituent can be checked against the catalogue it names. |
| State the kind of a basket constituent | DONE | 2026-10-27 | 2026-10-27 | A constituent names a code but not the vocabulary that code belongs to, so a worst-of basket whose constituents are FX pairs cannot be told apart from one whose constituents are equities. This adds the kind and refuses a constituent whose code the kind's catalogue does not hold. |
5. Decisions
- Reviewed on 2026-11-08 at sprint 30 start. Acceptance written, because it was empty. The audit lists the story as ready to close, but only the basket column is done. It needs a task for each remaining column.