Story: Make first-generation component scaffolding opt-in
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
(Describe the user-visible outcome this story delivers.)
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 26 |
| Now | Not yet started. |
| Waiting on | Nothing. |
| Next | Break the story into tasks. |
| Last touched | 2026-09-26 |
| End | 2026-09-26 |
3. Acceptance
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Make the first-generation scaffold opt-in | DONE | 2026-09-26 | 2026-09-26 | Move the stub trio and the umbrella header into a default-disabled ores.cpp.scaffold facet, so a normal regeneration of an existing component never recreates them. |
5. Decisions
- First-generation scaffolding is opt-in, and the opt-in is one line. The facet is `#+default: disabled`; a component asks for it with `:ores.cpp.scaffold.enabled: true`, which the overview scaffold writes for a new component and which the first real model retires.
- The address states the lifetime. The scaffold used to sit in `ores.cpp.component`, so "first-generation only" was a convention nobody could see. A facet of its own makes it structural.
- A component's umbrella header is scaffolding too. The same run showed it recreated for a component that had deleted it; it moved with the stubs.