I2864 — The site generator reads no output of a later derive stage
scripts/generate-site-data (derive stage B) takes the editors projection's skill files from a source stage A has already written, not from docs/generated/artifacts.json, which stage C rewrites after it. No stage then reads another stage's later output, as scripts/derive's header already claims.
READY wave 0 · p2 · implementation profile · parallel safe
Part of derived-data-integrity — A committed derivation describes something it can be a projection of.
Ready. Every dependency is done, so majordomus plan start I2864 will be accepted.
Objective
scripts/generate-site-data (derive stage B) takes the editors projection's skill files from a source stage A has already written, not from docs/generated/artifacts.json, which stage C rewrites after it. No stage then reads another stage's later output, as scripts/derive's header already claims.
Why
Found on 2026-10-21 while closing I2847. scripts/generate-site-data reads docs/generated/artifacts.json (the .claude/skills/*/SKILL.md rows of the editors projection) to list the skills an agent reads by name. scripts/derive's header says stage C writes that manifest after stage B, and that 'no stage reads its own output; stage C's outputs are read by nothing but the site build'. So stage B reads the manifest the previous derive left. Declaring it an input (the first cut of I2847) moved the fingerprint on every derive, and the commit was refused as stale. I2847 therefore exempts it, and the ordering defect is left open here.
Current state
Stage B reads docs/generated/artifacts.json, which stage C writes after it. A derive that adds or removes a skill shows the change on the site only one derive later.
Desired state
Stage B lists the editors projection's skill files from stage A's output, or from the projection's own declaration, never from the manifest stage C writes. Case 3246 then drops docs/generated/artifacts.json from its exemptions, and a single derive after adding a skill shows it.
Scope
- scripts/generate-site-data
- test/cases/3246_every_file_the_site_generator_reads_is_an_input.sh
- .ai/repo/project/issues/I2864.yaml
Out of scope
- Reordering derive's stages
Dependencies
None. This issue is a root of the graph.
Acceptance criteria
- scripts/generate-site-data reads no file that scripts/derive's stage C writes
- Case 3246 carries no exemption for docs/generated/artifacts.json and passes
Validation
- bin/majordomus plan validate
- bash test/run.sh 3246_every_file_the_site_generator_reads_is_an_input
Evidence required
- no_stage_reads_a_later_output_case
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I2864.yaml. Read it back with majordomus plan show I2864.