I2350 — One gate model names what a local check, a pull request, an integration and a release must run, and no second inventory exists
Model the fast local, the pull-request impacted, the complete integration and the release-level checks as selections of the existing gate dispatch and claim and evidence system, with a conservative, reproducible affected-test selection that falls back to the full plan when impact cannot be proved, and diagnostics that name the cause, the reproducing command and the owner.
PŘIPRAVENO vlna 0 · p1 · profil implementation · bezpečné souběžně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I2350 bude přijato.
Cíl
Model the fast local, the pull-request impacted, the complete integration and the release-level checks as selections of the existing gate dispatch and claim and evidence system, with a conservative, reproducible affected-test selection that falls back to the full plan when impact cannot be proved, and diagnostics that name the cause, the reproducing command and the owner.
Proč
The gate model is one file, and what each tier runs is still decided in four places: that file, the core-check script, the workflows and the release model. A gate added to one and not the others is the duplicated inventory the pack names. Source: convergence prompts/04-policy-gates-and-completion.md Issue 04.1 'Single authoritative quality policy'; autopilot prompts/04-pr-drain.md Issue 4 'Review and checks' (the non-impacting check). Revived on 2026-10-18 from the delivery-packs rescue sweep into ci-critical-path, because its milestone delivery-is-held-by-evidence never landed.
Aktuální stav
gates.yaml declares gates, jobs and path classes and scripts/ci-plan reads nothing else to plan a change (test/cases/94_ci_plan.sh). scripts/ci/core-check carries its own ordered list of checks; the release has its own model (.ai/repo/ci/release.yaml); a task's gates are recorded and enforced at finish (lib/gates.sh, apps/majordomus-cli/src/gates/judge.rs). The tiers are not named.
Cílový stav
Each gate declares the tiers it belongs to, and the local check, the pull-request plan, the integration plan and the release plan are each a selection of the one model. core-check and the release model read their lists from it. A gate's failure prints why it was selected, the command that reproduces it and the rule or owner it answers to. Amended on 2026-10-18 by the derive-performance plan: each gate in gates.yaml declares its lane (feedback, proof, release); the pull-request verdict waits on the feedback lane, and the proof lane must be green on the combined top before it lands (ADR 0167); structure is split into an instant and a proof tier, master already running no cargo run per gate except scripts/rust-check; and case-level affected selection moves out of this issue into the derive-performance plan's drv-06.
Rozsah
- .ai/repo/ci/gates.yaml
- .ai/repo/ci/release.yaml
- scripts/ci-plan
- scripts/ci/core-check
- lib/gates.sh
- apps/majordomus-cli/src/gates/model.rs
- apps/majordomus-cli/src/gates/judge.rs
- docs/CI.md
- scripts/ci/verdict
Mimo rozsah
- Reusing recorded results, which is I2348.
- A tier an adopter must declare: a repository with no model keeps today's behaviour.
- Case-level affected-test selection, which the derive-performance plan moves to its drv-06
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
- I2348BLOCKED A gate's result is reused only for the exact inputs it judged, and a skipped gate carries the proof that nothing it reads changed
- I3238BLOCKED A pull request runs the cases its change can affect, chosen from what each case declares it reads, and a change of unknown impact runs them all
- I3240BLOCKED A pull request's browser audit visits the pages its change can reach, and a shared-layout change sweeps them all
- 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 gate added to the model with its tiers appears in the local check, the plan and the release selection with no other file edited
- No script outside the model carries a list of gates, proved by a check that finds one when it is put back
- A change whose impact cannot be proved runs the full plan, and the plan says which path caused it
- A failing gate's output names the selection reason, the reproducing command and its owner
- Every gate in gates.yaml declares one lane of feedback, proof and release, the pull-request verdict waits on the feedback lane alone, and a combined top lands only with its proof lane green
- The structure job is split into an instant tier on the feedback lane and a proof tier
Validace
- bin/majordomus plan validate
- scripts/ci-plan --check
- MJ_TEST_JOBS=4 bash test/run.sh 94_ci_plan <the cases this issue adds>
Požadované důkazy
- tier_selection_case
- no_second_gate_list_check
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/I2350.yaml. Read it back with majordomus plan show I2350.