A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live
I2662
Validation leaves the deployment a runner: a branch's checks never hold the pool a publication or a release record needs
Where it stands
devtask.issue- Readiness
- ready no dependency and no gate holds it; nobody has started it
- Status
- READY
- Can start
- startable
- Milestone
- Milestone status
- ACTIVE
- Wave
0- Waiting on
- none
- Holds back
- none
- Behind it in all
0- Evidence
0of2
Moves
plan.transitionWhat it is
- Objective
- Bound what validation may occupy, so that the two things only the trunk can do, publish and record a release, start when they are ready.
- Why
- The owner, 2026-10-13: 'investigate what is slow ... solve it systemically, prevent it next time' and 'this must be analysed and solved through .ai/; it must not happen again'. Measured that day: a merge reached production 45 to 61 minutes later, and two landings of the evening were not served an hour after they merged.
- Now
- Measured 2026-10-13: jobs of the pages workflow waited 78 to 876 s for a runner in two finished runs and 20.5 minutes in a third, while several validate runs of branches were queued or running; each validate run starts about nineteen jobs. No rule says how much of the pool validation may take, and a run nobody will read is cancelled only by hand (ADR 0155 clause 7).
- Wanted
- The validate workflow declares how many of its jobs may run at once and cancels a branch's superseded run by itself; a run on the trunk, a deployment and a release run are never cancelled and never wait behind a branch's matrix. The wait of a pages job for a runner is recorded per run and has a declared bound.
- Done when
- unknown: the record declares no `completion`
- Risk
- unknown: the record declares no `risk`
Acceptance
- A new push to a branch cancels that branch's unfinished validate run; the trunk's runs are never cancelled
- The number of validate jobs running at once has a declared maximum, and a case holds the workflow to it
- Over a day of landings no pages job waits longer for a runner than the declared bound, read from the recorded timings
- Validation
bin/majordomus plan validatescripts/ci/github-checkscripts/ci-plan --check- Evidence required
runner_wait_per_pages_job_over_a_daysuperseded_run_cancelled_case- Evidence present
- unknown: the record carries no `evidence` entries
Scope
- Touches
.github/workflows/validate.yml.github/workflows/pages.yml.ai/repo/ci/gates.yamlscripts/ci-plandocs/CI.md.ai/repo/project/issues/I2662.yaml- Not
Buying runnersWhat the gates check- Depends on
- unknown: the record declares no `depends_on`
- Priority
- p1
- Profile
- implementation
- Parallel safe
- true
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-10-13
- Updated
- 2026-10-13
- Started
- unknown: the record declares no `started_at`
- Verified
- unknown: the record declares no `verified_at`
- Completed
- unknown: the record declares no `completed_at`
Synchronisation
- Adapter
scripts/github-sync- Repository
- unknown: the derived plan's header carries no repository
- External issue
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
- State there
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
Findings
| Level | Code | Message | Reproduce |
|---|---|---|---|
| WARN | scope_conflict | shares .ai/repo/ci/gates.yaml with I2716; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares .github/workflows/validate.yml with I2717; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares .github/workflows/pages.yml with I2786; they may not run concurrently | majordomus plan validate |