I3114 — A merge past the required check is observed from the forge and matched to the owner's recorded authorisation
From the forge's merged pull requests, list each merge whose head had no successful run of the verdict check that .ai/repo/ci/gates.yaml declared at the merge commit's parent tree. Match each to the decision record that carries the owner's order (rule an-expedited-landing-is-the-owners-word, point 1) and to the lander's landing claim. An unmatched merge is a finding of integration and of the evidence view.
BLOCKED wave 1 · p2 · implementation profile · parallel safe
Blocked. This issue cannot start until I3113 is done. The status is derived from that, not declared.
Objective
From the forge's merged pull requests, list each merge whose head had no successful run of the verdict check that .ai/repo/ci/gates.yaml declared at the merge commit's parent tree. Match each to the decision record that carries the owner's order (rule an-expedited-landing-is-the-owners-word, point 1) and to the lander's landing claim. An unmatched merge is a finding of integration and of the evidence view.
Why
The owner asked that every override be explicit and recorded: who, what, why and against which rule (c148#1). Admin merges happen under ADR 0155, but they are run by hand with gh pr merge --admin. integration/drain.rs never passes --admin, so no typed record of an expedited merge exists. It extends milestone architecture-is-enforced. Sources: chatgpt-majordomus:c148#1.
Current state
Rule an-expedited-landing-is-the-owners-word requires the authorisation to be recorded, but nothing reads the merges themselves. Case 2999 holds that the executor never expedites.
Desired state
majordomus prs (or integration events) lists expedited merges with authorisation, lander and judged-tree reference. A missing authorisation is red after a declared window.
Scope
- apps/majordomus-cli/src/capability/builtin/integration.rs
- docs/INTEGRATION.md
- docs/CLAIMS.yaml
- apps/majordomus-cli/src/integration/forge.rs
- apps/majordomus-cli/src/integration/mod.rs
- apps/majordomus-cli/src/integration/model.rs
- apps/majordomus-cli/src/integration/drain.rs
- apps/majordomus-cli/src/integration/tests.rs
Out of scope
- Forbidding expedited landings
- A new override record kind (read the forge and the existing decision records)
Dependencies
Acceptance criteria
- A fixture forge with one admin merge and no authorisation yields one finding
- One with a matching decision yields none
- The list is the same on CLI, MCP and HTTP
- A merge is judged against the verdict check that .ai/repo/ci/gates.yaml declared at the merge commit's parent tree, not against the forge's protection at merge time, which the API cannot return after the fact
- A new case carrying evidence case_expedited_merge_accounted (its number from scripts/case-numbers next, announced on the board when the issue starts) is added to the docs/CLAIMS.yaml claim a-bypass-is-observed that I3113 creates
Validation
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib integration
- MJ_TEST_JOBS=4 bash test/run.sh 2999_delivery_is_expedited_only_where_the_rule_says
Evidence required
- case_expedited_merge_accounted
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
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/I3114.yaml. Read it back with majordomus plan show I3114.