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.
DONE wave 3 · p0 · implementation profile · runs alone
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
Measured 2026-10-08 on master 4090b2b8ae: the backfill has been applied. scripts/github-sync --check finds 242 of 257 issues and 23 of 24 milestones in sync; 12 issues and 1 milestone, all records written since, are not on GitHub. .ai/repo/ci/github-drift-baseline.txt still reads missing 192 and adopt 19 as written on 2026-09-10, so the ceiling was never lowered with the run, and no evidence records the run that applied the projection. Still open: project the records that are missing, lower the baseline in the same commit, and record the run.
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
| covers | type | command | result | at commit |
|---|---|---|---|---|
| backfill_applied | artifact | scripts/github-sync --plan; scripts/github-sync --check; scripts/ci/github-check --write-baseline; scripts/ci/github-check | 2026-10-14 19:4xZ at master 97c4521f91: github-sync --plan exit 0 and --check exit 0 with 0 drift findings; 397 records insync (362 issues, 35 milestones), no record missing and none to adopt, so every canonical record holds the one GitHub number it was projected onto. The backfill itself was applied before 2026-10-08 (record's current state) and the records written since were projected by .github/workflows/github.yml on each landing. The ratchet .ai/repo/ci/github-drift-baseline.txt is lowered in this commit from missing 19 / adopt 0 to missing 0 / adopt 0, and scripts/ci/github-check then reports 0 missing and 0 adopt, at the baseline, exit 0. | 97c4521 |
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
- 2026-10-14T19:48:10Z
- verified
- 2026-10-14T19:48:46Z
- completed
- 2026-10-14T19:49:23Z
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.