Task: Give every marketdata entity its shell commands
Table of Contents
This page documents a task in the Rewrite the oresmd grammar as a hand-written codec checked against ORE story. It captures the goal, current status, acceptance, and any notes or results.
1. Goal
Every marketdata entity and the junction can be driven from the shell, and every command is proved against the live fleet.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Rewrite the oresmd grammar as a hand-written codec checked against ORE |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-10-02 |
3. Acceptance
- S01:
feed_binding,market_observation,market_fixingand the asset-class junction have generated shell command units and tests. - S02: each has a generated recipe, and the recipe inventory lists them.
- V04: every marketdata shell command runs against the live fleet, and the run log is on the task. Any command that cannot run is recorded with its reason.
4. Plan
Bind the models to the shell surface, regenerate, then run the recipes.
- Opt
feed_binding,market_fixingandmarket_observationintoores.cpp.shell-commandin their property drawers. Their profiles,readonly-timeseriesand none, do not turn the facet on. - Give the junction a list read. Codegen withholds every messaging facet, the
protocol and the shell unit from a junction that declares no
list_byside, somarket_series_idgets:list_by: true. - Regenerate marketdata at the
oresaddress, wire the new registrar and the four shell units into their hand-written aggregators, and seed the two permissions the junction's handler checks. - Regenerate the cmake lists, the recipe inventory and the script library, then run every marketdata script against the live fleet.
5. Measurements
Every number this task claims about a tree, with the command that produced it
and the commit it was measured at. A number without both is not a measurement,
because a clean-up record describes a tree and trunk moves under a branch: a
consumer count, a gate's component count and a suite's size all change with no
code changing, and the reader of a bare number cannot tell which tree it came
from. Where the raw output matters, put it in an evidence/ file beside the
task and name that file in the Command column.
| What | Value | Command | Commit |
|---|---|---|---|
| Marketdata models with shell commands, before and after | 3 before, 7 after | ls projects/ores.shell/marketdata/src/app/commands/marketdata/ |
ec7c5bdff4 |
| Scripts the tangle added | 26, in 4 new folders; no existing script changed | compass build --direct tangle_shell_scripts, then git status |
ec7c5bdff4 |
| Marketdata scripts run against the live fleet | 73: 32 ok, 19 missing, 18 failed, 4 aborted; each with its reason | evidence/marketdata_shell_commands_run.txt |
ec7c5bdff4 |
| Shell unit tests | 16 of 16 suites pass | compass test run -R ores.shell |
ec7c5bdff4 |
| Marketdata tests | 5 of 5 suites pass | compass test run -R ores.marketdata |
ec7c5bdff4 |
6. Notes
6.1. The live run
Each of the 73 marketdata scripts ran in its own ores.shell --load
invocation, logged in as the ACME tenant administrator, because the shell
stops at the first failing command. The full table is
evidence/marketdata_shell_commands_run.txt.
- 32
ok: the command reached its service and decoded. That includes the threemarketdata importscripts, whose hand-written command prints counts rather than an outcome. - 19
missing: the sentinel key addresses no row. - 18
failed: each is the database refusing a sentinel, never a fault. The nil UUID breaks theidcheck onsetandput-many;__none__is not a series subclass; the lineage sentinel is not JSON; the junction's nil series is no series. - 4
aborted: thecrm_rates_*scripts. No shell menu answerscrmsince commitee4e739a65deleted the hand-written CRM commands, so these cannot run. Recorded as The CRM shell recipes call a command that no longer exists.
Today only market_series, observation_lineage and
series_classification_rule have shell commands. See the 2026-10-02 review, section 4.
7. Test Scenarios
Manual QA scenarios (scaffolded via compass add test_scenario)
that verify this task. Link
new ones here as they're created; the scenario doc itself links back
via its "Verifies task" field.
| Scenario | State | Notes |
|---|---|---|
8. PRs
| PR | Title |
|---|---|
| #2643 | [marketdata] Give every marketdata entity its shell commands |
9. Review
| Comment summary | File | Decision | Notes |
|---|---|---|---|
10. Result
Every marketdata entity and the asset-class junction now has generated shell commands, tests and a recipe that the inventory lists. The junction gained its NATS surface on the way, because codegen gives a junction no protocol until a side declares a list read. Every marketdata script ran against the live fleet, and each verdict has a reason; the four CRM scripts cannot run and are a capture of their own.