I0008 — Project the model to GitHub milestones and issues
Create and update GitHub milestones and issues from the canonical model, report drift instead of overwriting human edits, and keep every network call out of the tool itself.
DONE wave 5 · p1 · implementation profile · parallel safe
Part of M000 — Milestone and DAG driven development.
Objective
Create and update GitHub milestones and issues from the canonical model, report drift instead of overwriting human edits, and keep every network call out of the tool itself.
Why
GitHub is where collaboration happens, so it must show the plan. It is not where the plan lives, so it must never be the thing that defines it.
Current state
The repository had no GitHub issues or milestones at all.
Desired state
scripts/github-sync renders the projection from majordomus plan body, creates what is missing, updates what changed, and reports what a human has edited.
Scope
- scripts/github-sync
Out of scope
- Writing GitHub state back into the canonical files
- Any network call inside bin, lib, share or test
Dependencies
What waits on this
Acceptance criteria
- The adapter runs offline against a fixture and produces the exact payload it would post
- A managed issue whose body differs from the projection is reported as drift, not overwritten
- A closed issue whose canonical status is not DONE is reported
- The tool itself contains no network client
Validation
- bash test/run.sh 45_github_projection
- scripts/github-sync --plan
Evidence required
- projection_test
- github
Evidence
| covers | type | command | result | at commit |
|---|---|---|---|---|
| projection_test | test | bash test/run.sh 45_github_projection | 1 passed, 0 failed | 2dd5915 |
| github | manual | scripts/github-sync --apply && scripts/github-sync --check | created milestone M000 and every issue belonging to it on korczis/prismatic-majordomus, each open or closed according to its derived status; check exited 0 with no drift. A hand edit inside a generated region was detected (exit 11), refused by --apply, and overwritten only under --force | 82f23ef |
Risk
A sync that overwrites a human comment thread would make GitHub hostile to use.
Timeline
- started
- 2026-09-04T03:13:04Z
- verified
- 2026-09-04T03:13:05Z
- completed
- 2026-09-04T04:08:51Z
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/I0008.yaml. Read it back with majordomus plan show I0008.