I3235 — The site generator reads the use-case catalogue once per run
Parse the use-case catalogue once in scripts/generate-site-data and hand the parsed form to every section that needs it, with output byte-identical.
BLOCKED wave 3 · p2 · implementation profile · parallel safe
Blocked. This issue cannot start until I2521, I0832 are done. The status is derived from that, not declared.
Objective
Parse the use-case catalogue once in scripts/generate-site-data and hand the parsed form to every section that needs it, with output byte-identical.
Why
Board p3 (Codex) audit 2026-10-18: stage B parses the catalogue four times. Rule project.hot-path-reads-once. Past derive wins came from removing repeated passes and spawns (c265#8). It extends milestone M004. Sources: chatgpt-majordomus:c292#2.
Current state
scripts/generate-site-data is 2638 lines (wc -l on master 707a04c, 2026-10-18). The board p3 audit (2026-10-18) counted four parses of the use-case catalogue per run; that count is the audit's, not re-measured here. I0832 'generate-site-data instrumented and its hot spots removed' (READY, p0) times the generator's phases and removes the repeated work in its two most expensive sections; this issue is the catalogue-parse delta on top of it.
Desired state
One parse per run, counted by MJ_TIMING work counters.
Scope
- scripts/generate-site-data
- test/cases/10_site_data.sh
Out of scope
- Scenario reuse (I2526)
- Porting the generator off shell
- Phase timing and ranking of the generator, and its two most expensive sections (I0832)
Dependencies
- I2521READY What a derive costs is measured per stage and per kind of change, and every file a stage reads is listed
- I0832READY generate-site-data instrumented and its hot spots removed
Acceptance criteria
- The work counter shows one catalogue parse per run
- Site data is byte-identical before and after
- generate-site-data --check passes
Validation
- MJ_TIMING=1 scripts/generate-site-data --check
- bash test/run.sh 10_site_data
Evidence required
- catalogue_read_once_counter
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/I3235.yaml. Read it back with majordomus plan show I3235.