Story: Generate the shell surface of the remaining components
Table of Contents
This page documents a story in Sprint 26. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
1. Goal
Each of diff, compute, telemetry, history, scheduler, ore, variability and workspace either renders the shell units generation produces or states, model by model, the reason it renders none, and every hand-written command that survives is recorded with its reason.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 26 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. The three batches carry the work. |
| Last touched | 2026-10-01 |
3. Acceptance
- Every entity, junction and operation model in these components either renders a generated shell unit or states the reason it renders none in its own Physical space section.
- Every hand-written command in the component's orbit is compared with the generated units and either retired as superseded or recorded with its reason.
- Each component's shell suite passes and the codegen gates are green.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Generate the diff shell surface | DONE | 2026-10-01 | Check every diff command the shell answers, make each model state why it renders no unit, and record every hand-craft with its reason. | |
| Generate the compute shell surface | DONE | 2026-10-01 | 2026-10-01 | Check every compute command the shell answers, generate the units its entities should have, and record every hand-craft with its reason. |
| Generate the telemetry shell surface | DONE | 2026-10-01 | 2026-10-01 | Check every telemetry command the shell answers, make each operation state why it renders no unit, and record every hand-craft with its reason. |
| Generate the history shell surface | DONE | 2026-10-01 | 2026-10-01 | Check every history command the shell answers, make each model state why it renders no unit, and record every hand-craft with its reason. |
| Generate the scheduler shell surface | DONE | 2026-10-01 | 2026-10-01 | Check every scheduler command the shell answers, make each model state why it renders no unit, and record every hand-craft with its reason. |
| Generate the ore shell surface | DONE | 2026-10-01 | 2026-10-01 | Check every ore command the shell answers, make each model state why it renders no unit, and record every hand-craft with its reason. |
| Generate the variability shell surface | DONE | 2026-10-01 | 2026-10-01 | Check every variability command the shell answers, make each model state why it renders no unit, and record every hand-craft with its reason. |
| Generate the workspace shell surface | DONE | 2026-10-01 | 2026-10-01 | Check every workspace command the shell answers, make each model state why it renders no unit, and record every hand-craft with its reason. |
5. Notes
- Survey on 2026-10-01 at
30251f222c. The eight components and what each holds:
| Component | Models with no unit | Shell part |
|---|---|---|
| diff | 4 entities, all table-less records | none |
| compute | 3 entities, 2 operations | 8 units |
| telemetry | 3 operations | none |
| history | 1 operation | none |
| scheduler | 1 entity, 1 operation | none |
| ore | 1 operation, 1 entity | none |
| variability | 1 operation | 1 unit |
| workspace | 1 operation | 1 unit |
- The decisive fact is the shell part. A component with no part under
projects/ores.shell/cannot host a generated unit at all, and five of the eight have none.scheduler/job_definitionalready states that reason in its own Physical space, which is the shape the rest of these tasks follow. reportingis out of scope. Its five unbound entities are the ones bright_faraday's task "Bind the standard profiles to the configuration entities that carry none" is binding now, and the shell facet follows from the profile.httpis out of scope by decision.
6. Decisions
- 2026-10-01. Where a model renders no shell unit and should not, the reason goes
in the model's own
* Physical spacesection, not on a task page. The repo already does this inores.scheduler.job_definition, and a reason beside the thing it explains survives the reader who never opens the sprint.
7. Out of scope
reporting, whose profiles another environment is binding now.http, by decision.tradingandmarketdata, which are large enough to want their own story.
8. Result
Merged in three batches, with every check green: PR #2477 for the scaffold and diff, #2479 for compute and telemetry, and #2480 for history, scheduler, ore, variability and workspace.
Nineteen models across the eight components now state, in their own Physical
space, why no shell command reaches them. That was the story's whole shape: five
of the eight have no part under projects/ores.shell, so generation could not
land a unit in them, and the work was to record that rather than to build the
parts.
Nothing was retired. None of the eight has a generated unit that duplicates one of its hand-written commands, which is where this story differs from the first: the first seven had eighteen superseded verbs, and these have none.
Two findings came out of it that are worth more than the records.
The first is a defect. Three compute models named | ores.cpp.shell | false |
in their Physical space tables. There is no ores.cpp.shell facet; the address is
ores.cpp.shell-command. The rows did nothing, and the shell units were withheld
only because ores.cpp.protocol happened to be off too. A validator over every
model's Physical space now reports no address that does not exist.
The second is a gap with a name. The scheduler's hand-written menu sends exactly
the requests the job_definitions unit and the scheduling_operations unit would
send, across five of its six verbs. It is the one place in the story where
generation would supersede a hand-written command the moment the component has a
shell part. Both models now say so, so the follow-up is written where the next
reader meets it.