jlevy / jlevy/tbd

Bulk update refuses --parent and --spec, so a spec move is three commands and N single calls

Open
#269 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
TypeScript
Stars
79
Forks
9
Avg merge
1d 14h
Merged PRs (30d)
42

Description

## Summary

`tbd update … --parent X` and `… --spec PATH` are refused in the bulk form. Both are needed in bulk far more often than the fields that are allowed.

## What happened

```
$ tbd update p-aaaa p-bbbb p-cccc --parent p-epic
Error: Cannot use --parent when updating multiple issues. These apply to a single issue;
use `tbd close`/`tbd reopen` for status changes. Bulk update supports shared fields:
--priority, --assignee, --delegate, --hold, --type, --add-label, --remove-label, --due, --defer.
```

During one reconciliation pass:

- re-parenting the 12 children of a retired epic onto its replacement took 12 calls
- moving 17 plan specs between lifecycle folders left 165 beads pointing at the old paths, and repointing them took 165 single calls at roughly a second each

Both had to be shell loops, which the skill text itself says never to write ("if you are about to shell-loop or pipe around tbd, stop; the bulk or filter form exists"). Here it does not.

## Suggested change

1. Accept `--parent` and `--spec` in the bulk form. Both are shared-value fields exactly like `--priority`.
2. A `tbd spec move ` command that does the three things a move always needs together: `git mv` the file, rewrite inbound Markdown links (the `specs//` fragment form and bare or `./` sibling links), and repoint every bead whose `spec_path` names the old file. Today the third step is invisible when skipped and corrupts the next reconciliation (a bead pointing at a missing file reads as a never-decomposed spec).

Environment: tbd 0.8.1, Node v24.19.0, macOS 26 (Darwin 25.5), Linear integration enabled. Repository scale when observed: 7,156 beads, 137 open epics, 171 tracker links, about 110 plan specs in `active/`.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing the bulk form of `tbd update` and the handling of `--parent`, `--spec`, and `spec_path`. Then inspect how plan-spec links and files are represented before evaluating the proposed `tbd spec move` behavior. Done means bulk updates accept both shared fields and a move keeps the file, inbound links, and bead references consistent.

Written by the indexing model from the issue text.

Assessment

Tech stack
git, markdown, typescript
Domain
cli, tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.