feat(planning): import backlog state from GitHub issues with Prolog-verifiable mirror #288

Closed
nsaspy wants to merge 0 commits from chore/backlog-import into master
Owner

The hand-maintained planning/backlog.pl mirror went stale and mis-stated dependency gates (e.g. missing the #172←#156 edge), which mis-ranked the queue. This adds scripts/import-backlog.py: it regenerates the mirror from live GitHub issue state (open facts, closed references, Depends-on edges from open issues, Parent→epic children, priority from title prefixes) while preserving hand-curated phase/2 roadmap order and open pr/4 facts. Output is deterministic and Prolog-verified.

  • TDD: t/test_backlog_import.py (7 tests: edge/parent/priority parsing incl. Integrates-with exclusion and prose #refs, deterministic rendering incl. input-order independence, closed-reference derivation, epic children incl. closed issues so epic_progress stays honest, SWI load + blockers query on rendered output).
  • Regenerated planning/backlog.pl from live state (116 issues imported).
  • Queue-state corrections surfaced by the import (verified in Prolog):
    • epic_children(152) includes #194 (Samsung epic is a child of the Android client epic) — hand mirror had 10 children, truth is 11.
    • #170/#171/#195 closed on GitHub with merge evidence (PR #229 body lacked closing keywords).
    • With GitHub-accurate edges, blockers(172)=[156], blockers(173)=[159,172], blockers(196)=[173], blockers(206)=[134,179,205].
    • next/1 now resolves to #134 (P0 daemon release gate) — phase 1 outranks the phase-2 streaming chain once stale edges are corrected.

No runtime code touched; suite passes (ALL PHASES PASSED).

The hand-maintained planning/backlog.pl mirror went stale and mis-stated dependency gates (e.g. missing the #172←#156 edge), which mis-ranked the queue. This adds scripts/import-backlog.py: it regenerates the mirror from live GitHub issue state (open facts, closed references, Depends-on edges from open issues, Parent→epic children, priority from title prefixes) while preserving hand-curated phase/2 roadmap order and open pr/4 facts. Output is deterministic and Prolog-verified. - TDD: t/test_backlog_import.py (7 tests: edge/parent/priority parsing incl. Integrates-with exclusion and prose #refs, deterministic rendering incl. input-order independence, closed-reference derivation, epic children incl. closed issues so epic_progress stays honest, SWI load + blockers query on rendered output). - Regenerated planning/backlog.pl from live state (116 issues imported). - Queue-state corrections surfaced by the import (verified in Prolog): - epic_children(152) includes #194 (Samsung epic is a child of the Android client epic) — hand mirror had 10 children, truth is 11. - #170/#171/#195 closed on GitHub with merge evidence (PR #229 body lacked closing keywords). - With GitHub-accurate edges, blockers(172)=[156], blockers(173)=[159,172], blockers(196)=[173], blockers(206)=[134,179,205]. - next/1 now resolves to #134 (P0 daemon release gate) — phase 1 outranks the phase-2 streaming chain once stale edges are corrected. No runtime code touched; suite passes (ALL PHASES PASSED).
nsaspy closed this pull request 2026-09-04 23:08:52 +00:00
Some checks failed
CI / test (pull_request) Failing after 12s
CI / android skeleton gate (pull_request) Failing after 8s
CI / shared mic / Ubuntu 24.04 (pull_request) Failing after 5m27s
CI / shared mic / Arch Linux (pull_request) Failing after 11m47s

Pull request closed

Sign in to join this conversation.
No description provided.