Skip to content

tasks v1.4.0 — collision-resistant ID allocation

Choose a tag to compare

@budhash budhash released this 16 Jul 06:19
· 3 commits to main since this release
97dc350

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-allocate max(local, ref) + 1 by reading TASKS.md at the ref, so a branch forked from main can't re-issue IDs main already 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