Files
clide/tools/scripts
jpmschweitzerandClaude a96a54ec7f add Python stopgap planning tooling under tools/scripts/plan
Ports settled-reach's decisions_sync.py + ticket + decision scripts,
Scrum-stripped. Writes to .pql/pql.db (gitignored). Verb shape
mirrors the eventual `pql` subcommands so migration is a call-site
find-replace once pql ships feature parity (D-040, R-011).

Ticket IDs are T-NNN (TEXT PKs) — reshape from settled-reach's
integer auto-increment so the stopgap's writes are compatible with
pql's future reads without a data migration. No `sprints` table; the
pyramid is kanban / waterfall (D-035).

Verified end-to-end: sync parses 71 records (39 confirmed, 23 open
questions, 9 rejected) with 62 cross-refs and zero broken links;
`ticket new`, `ticket status`, `ticket board`, and `decisions show
--with-refs` all round-trip correctly.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-21 17:28:10 +02:00
..

STOPGAP — Planning tooling

This directory is a time-limited stopgap. The Python scripts here port settled-reach's decisions_sync.py + ticket + decision scripts, Scrum-stripped, and write to .pql/pql.db (gitignored).

Sunset clause

Per D-040 and R-011, this stopgap deletes when pql ships:

  • pql decisions sync | validate | list | show | claim | coverage
  • pql ticket new | list | show | status | assign | block | board

with feature parity on the same .pql/pql.db file this stopgap wrote.

Migration is a call-site find-replace:

tools/scripts/plan decisions sync        →  pql decisions sync
tools/scripts/plan ticket new task "…"   →  pql ticket new task "…"
tools/scripts/plan ticket board          →  pql ticket board

See Q-021 for the open gate on whether pql absorbs planning long-term.

Entrypoint

plan is a Python executable. Support modules live under planning/.

plan decisions sync | validate | claim D|Q|R <domain> [title] | list | show <id> | coverage
plan ticket    new <type> "title" | list | show <id> | status <id> <new> | assign <id> <agent>
plan ticket    block <id> --by <other> | unblock <id> --from <other>
plan ticket    team <id> <team> | label <id> add|rm <label> | board | search "query"
plan sqlite-query "SELECT …"

Needs Python 3.9+ (f-strings + pathlib). No third-party deps.

Where things live

  • DB: .pql/pql.db (gitignored, per-dev)
  • Records (source of truth): decisions/*.md
  • Tickets: today SQLite-only; see Q-022 for the markdown-mirror question.