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>
50 lines
1.8 KiB
Markdown
50 lines
1.8 KiB
Markdown
# 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`](../../decisions/process.md#d-040-python-stopgap-under-toolsscriptsplan)
|
|
and [`R-011`](../../decisions/rejected.md#r-011-permanent-stopgap),
|
|
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`](../../decisions/questions-architecture.md#q-021-pql-absorbs-planning-vs-keeps-separate)
|
|
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`](../../decisions/questions-architecture.md#q-022-ticket-persistence-strategy)
|
|
for the markdown-mirror question.
|