I1403 — Backfill the projection once, deliberately, and record what it created
Apply the projection so that every canonical record exists on GitHub exactly once, adopt the 19 records that already exist rather than duplicating them, and record the run as evidence.
READY wave 3 · p0 · implementation profile · runs alone
Ready. Every dependency is done, so majordomus plan start I1403 will be accepted.
Objective
Apply the projection so that every canonical record exists on GitHub exactly once, adopt the 19 records that already exist rather than duplicating them, and record the run as evidence.
Why
The gate that follows is only honest against a projection that has been applied. This is the one outward-facing mutation in the milestone: it creates roughly 172 public issues, and it must be a confirmed act with a dry run read first, not a side effect of any other issue.
Current state
GitHub holds 8 milestones and 19 issues against 15 milestones and 184 issues canonically. `scripts/github-sync --check` reports 191 findings at 867f3a9.
Desired state
`scripts/github-sync --check` exits 0. Every canonical record holds the number it was projected onto. The run is recorded as evidence with its date and the count it created.
Scope
- .ai/repo/project
- .ai/repo/ci/github-drift-baseline.txt
Out of scope
- Any change to the adapter, which I1401 and I1402 own
- Closing or reopening a GitHub issue by hand
Dependencies
- I1401DONE The identity of a projected record is what the record carries, not what its title says
- I1402DONE A finding says which of six states it found, and the state that could hide a person's edit is no longer one of them
- I1404DONE The drift check is a gate, so a projection that stops being applied cannot stay silent
Acceptance criteria
- The dry run is read and its counts agree with the check before anything is applied
- The 19 existing issues are adopted, not duplicated, and the issue count after the run equals the canonical count
- scripts/github-sync --check exits 0 immediately after the run
- The gate's baseline is lowered to zero in the same commit, so the backlog cannot silently return
- The run is recorded as evidence naming the date, the counts and the commit
Validation
- scripts/github-sync --plan
- scripts/github-sync --check
Evidence required
- backfill_applied
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Risk
High and outward-facing. It publishes 172 issues to a public repository in one run and cannot be undone cheaply. It requires the operator's explicit confirmation and must run after I1401, or the pagination ceiling will corrupt it.
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/I1403.yaml. Read it back with majordomus plan show I1403.