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_definition already states that reason in its own Physical space, which is the shape the rest of these tasks follow.
  • reporting is 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.
  • http is 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 space section, not on a task page. The repo already does this in ores.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.
  • trading and marketdata, 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.

Emacs 29.3 (Org mode 9.6.15)