I0832 — generate-site-data instrumented and its hot spots removed
Declare phases per section of the site generator, rank them, and remove the repeated work in the two most expensive sections.
DONE wave 2 · p0 · implementation profile · runs alone
Part of M004 — Performance is executable evidence, and the hot path does no canonical work twice.
Objective
Declare phases per section of the site generator, rank them, and remove the repeated work in the two most expensive sections.
Why
The generator's --check runs in CI and in case 51; it costs 27 s on this repository.
Current state
No phase inside the generator is timed.
Desired state
--check under 8 s on this repository, output byte-identical.
Scope
- scripts/generate-site-data
- test/cases/10_site_data.sh
- test/cases/51_derived_artifacts_committed.sh
Out of scope
- Changing the generated data
Dependencies
- I0817DONE Phase timing and work counters behind MJ_TIMING
- I0819DONE The project model is loaded with one flatten per file and no per-file lookups
What waits on this
- I0842BLOCKED Before and after evidence for every optimisation
- I3235BLOCKED The site generator reads the use-case catalogue once per run
Acceptance criteria
- Byte-identical site/data/generated before and after
- The phase ranking is printed under MJ_TIMING
Validation
- MJ_TIMING=1 scripts/generate-site-data --check
Evidence required
- batch_reads
Evidence
| covers | type | command | result | at commit |
|---|---|---|---|---|
| batch_reads | ci | validate run 39645593645 (attempt 2) at master 97391192dbb: suite-shard (2) job 119428809679 ran bash test/run.sh --no-skips; case 3836_a_repeated_scenario_is_read_from_its_cache ok | success | 9739119 |
Risk
The generator shares lib/common.sh, so the flatten cache and the batch loaders apply to it directly.
Timeline
- started
- 2026-10-21T19:26:43Z
- verified
- 2026-10-21T19:27:06Z
- completed
- 2026-10-21T19:29:03Z
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/I0832.yaml. Read it back with majordomus plan show I0832.