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.

6. Out of scope

Emacs 29.3 (Org mode 9.6.15)