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
I2300
A head is judged against what it changes, not against GitHub's live state
Where it stands
devtask.issue- Readiness
- complete completion is recorded and every required evidence token is present
- Status
- DONE
- Can start
- not now
- Milestone
- Milestone status
- VERIFY
- Wave
0- Waiting on
- none
- Holds back
- none
- Behind it in all
0- Evidence
2of2
Moves
plan.transitionWhat it is
- Objective
- Make scripts/ci/github-check report as pending, and not refuse, the drift an apply would write on the records a head changed since its merge base, and on the trunk on the records that changed in a landing younger than a declared window; refuse the same drift on every other record, and on the trunk past the window with the remedy named.
- Why
- The gate github-projection runs scripts/github-sync --check against live GitHub and refuses every record that is behind. The adapter projects only the trunk and nothing applies it automatically, so a pull request that edits an already projected record is red from birth and cannot go green on its own head. Measured on 2026-10-10: pull request #855 changed one line of I1900 and failed with 'DRIFT behind issue I1900 (#753) body is behind the canonical record'; pull request #820 failed with '8 record(s) state'. The only way out was to not edit the record. Had such a change landed, the trunk's own ci would have been red until somebody applied by hand, which blocks the next release tag. The ratcheting baseline covers only missing and adopt, and there is no label or base comparison for behind.
- Now
- scripts/ci/github-check refuses behind, state, milestone and closed on every run, whatever the run is of. scripts/github-sync --apply is run by hand from master.
- Wanted
- On a head, drift on a record the head changed is reported PENDING with the words 'projected after merge'. On the trunk it is PENDING while the landing is younger than apply.window in .ai/repo/ci/github.yaml, and refused afterwards with scripts/github-sync --apply named. A record counts as changed when its file or its rendering differs. A change that cannot be measured refuses as before. docs/INTEGRATION.md tells the executor to apply after such a landing.
- Done when
- unknown: the record declares no `completion`
- Risk
- unknown: the record declares no `risk`
Acceptance
- A pull request head that changes a projected record passes the gate with that record reported PENDING
- Drift on a record the head did not change is refused on the same run
- The trunk reports a landed change PENDING inside the declared window and refuses it past the window, naming scripts/github-sync --apply
- The window is read from .ai/repo/ci/github.yaml and the gate carries no copy of it
- A base or a window that cannot be read refuses what the gate refused before
- Validation
bin/majordomus plan validatebash test/run.sh 1038_a_head_is_judged_against_what_it_changes 97_github_gate 45_github_projection- Evidence required
pending_class_casemutations_fail_the_case- Evidence present
pending_class_casemutations_fail_the_case
Scope
- Touches
scripts/ci/github-check.ai/repo/ci/github.yaml.ai/repo/ci/README.md.ai/repo/rules/project/github-projection-gated.v1.md.ai/repo/automation/inventory.jsonltest/cases/1038_a_head_is_judged_against_what_it_changes.shdocs/INTEGRATION.mddocs/PLANNING.mddocs/CLAIMS.yamldocs/claims/projected-record-edit-is-landable.mddocs/claims/github-projection-gated.md- Not
- unknown: the record declares no `non_scope`
- Depends on
- none
- 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-10
- Updated
- 2026-10-14T08:02:42Z
- Started
- 2026-10-14T08:02:34Z
- Verified
- unknown: the record declares no `verified_at`
- Completed
- 2026-10-14T08:02:42Z
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
Nothing is wrong with these records.