I0835 — CI runs the structural performance checks
Add the flatten-once case, the cache-equivalence case and bench --check with the CI profile to validate.yml, with the wall-clock thresholds conservative and the counters exact.
BLOCKED wave 5 · p0 · implementation profile · runs alone
Part of M004 — Performance is executable evidence, and the hot path does no canonical work twice.
Blocked. This issue cannot start until I0822 is done. The status is derived from that, not declared.
Objective
Add the flatten-once case, the cache-equivalence case and bench --check with the CI profile to validate.yml, with the wall-clock thresholds conservative and the counters exact.
Why
A check that nobody runs is documentation.
Current state
CI runs the suite, the generator check and shellcheck.
Desired state
The counters gate strictly; bench --check gates on gross regressions only; results are uploaded as an artifact.
Scope
- .github/workflows/validate.yml
- test/cases/26_ci_wiring.sh
Out of scope
- Latency gates at millisecond precision
Dependencies
- I0822BLOCKED Every canonical file is flattened at most once per command
- I0826DONE bench --check refuses a regression by policy
What waits on this
Acceptance criteria
- Case 26 proves the new steps are wired
- A deliberately regressed baseline fails the workflow step locally
Validation
- bash test/run.sh 26_ci_wiring
Evidence required
- regression_refused
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Risk
GitHub runners are slower and noisier than a laptop; the CI profile has more warmup and wider thresholds, declared in the policy.
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/I0835.yaml. Read it back with majordomus plan show I0835.