Skip to content

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

Part of work-graph-github — The projection to GitHub is gated, identified and traversable, and a merged pull request leads back to the outcome it served.

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

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

coverstypecommandresultat commit
backfill_appliedartifactscripts/github-sync --plan; scripts/github-sync --check; scripts/ci/github-check --write-baseline; scripts/ci/github-check2026-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.

Searches the titles and descriptions of every page this site publishes.