I3240 — A pull request's browser audit visits the pages its change can reach, and a shared-layout change sweeps them all
Map each route to the templates, styles and scripts it renders from, and audit on a pull request only the routes whose inputs changed plus one representative per route class. Any change to the shared layout, CSS or JS escalates to the full sweep, which also runs on the combined top.
BLOKOVÁNO wave 6 · p2 · implementation profile · parallel safe
Blocked. This issue cannot start until I2350, I3242 are done. The status is derived from that, not declared.
Cíl
Map each route to the templates, styles and scripts it renders from, and audit on a pull request only the routes whose inputs changed plus one representative per route class. Any change to the shared layout, CSS or JS escalates to the full sweep, which also runs on the combined top.
Proč
c228#3: ui-audit was about 39 min on 2026-10-11; its bound is 3600 s in validate.yml. It extends milestone ci-critical-path. Proposed in ADR 0186 (A pull request's required verdict is the feedback lane, a gate whose inputs did not change is reused as inputs_unchanged, and the proof lane judges the combined top before it lands); ADR 0187 (Tests are selected by the impact of a change, derived from what each case declares it reads, and a change of unknown impact runs every case) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c228#3, chatgpt-majordomus:c019#4.
Aktuální stav
On master 707a04c, 2026-10-18 the ui job runs `scripts/ci/timed --bound 3600 ui-audit ... scripts/ui audit --report` over every page and width.
Cílový stav
The route-class map is derived from templates, not a hand list, and the selection is printed.
Rozsah
- scripts/ui
- scripts/lib/ui-routes.mjs
- .github/workflows/validate.yml
- test/cases/334_ui_audit_hears_uncaught_errors.sh
- test/cases/349_a_step_reports_its_own_time.sh
Mimo rozsah
- Lowering what a full sweep checks
Závislosti
- I2350READY One gate model names what a local check, a pull request, an integration and a release must run, and no second inventory exists
- I3242BLOCKED The pull-request critical path has a committed GitHub baseline and a budget per required job, and a run's summary names its critical path and every cache state
Kritéria přijetí
- A leaf-page change audits that page and its class representatives
- A shared CSS change audits every page
- An empty selection is a failure, never a pass
- Validation runs 349_a_step_reports_its_own_time, 334_ui_audit_hears_uncaught_errors and the ui_audit_selection case this issue adds, in place of 3220_the_idd_loop_is_walked_in_a_browser
Validace
- bash test/run.sh 349_a_step_reports_its_own_time 334_ui_audit_hears_uncaught_errors
Požadované důkazy
- ui_audit_selection_case
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3240.yaml. Read it back with majordomus plan show I3240.