Repository navigation
tasks v1.4.0 — collision-resistant ID allocation
Collision-resistant ID allocation — the prevention leg of the multi-branch ID-collision story (renumber in v1.3.0 is the cleanup leg).
Added
new … --id T-42(#13) — create with an explicit ID (short forms normalized). Refused if the ID is already taken (primary or@shadow) or the kind doesn't match. No--force: a forced duplicate ID is file corruption, never a feature.new … --base <git-ref>(#13) — auto-allocatemax(local, ref) + 1by readingTASKS.mdat the ref, so a branch forked frommaincan't re-issue IDsmainalready handed out. Fails closed on any git problem — no silent fallback to local-only allocation. Combined with--id, the explicit ID must be free at the ref too.reserve N(persisted ranges) stays deferred — it would add a new concept to the file format.
Typical multi-branch flow: new task "..." --base origin/main on every branch, or hand branches disjoint --id ranges; clean up any survivor with renumber.
Design doc: docs/superpowers/specs/2026-07-15-id-allocation-design.md.
Upgrading
Vendored copies: ./tools/tasks.py selfupdate (1.3.0 → 1.4.0). New opt-in flags only; no behavior or format changes.
Full changelog: https://github.com/budhash/tasks/blob/main/CHANGELOG.md