Describe your idea
A read-only check that compares the ticket tree with the tracker and lists what has drifted.
Why is this needed?
query reads one ticket, a container's children, or a word search. Nothing shows a tracker item that is missing, closed on one side only, reparented, blocked by something after no longer names, filed twice, or filed outside BMad with no parent. With hooks not integrated yet, that drift builds up between runs, and #2956 is one way it starts. A check like this gives the person and the agent the same picture of the board before either of them acts on it.
How should it work?
tickets.py reconcile <folder> --tracker <listing>. Each store's query verb gains a sentence on producing the listing (number, state, parent, blocked-by, labels, and the id and parent lines from the body), and tickets.py compares it with the tree and prints JSON grouped by kind of drift. Fixing stays with write and the user.
PR
I'd like to write it, under 400 lines with tests, once the shape suits you.
Additional context
I run an independent BMad-to-GitHub sync in my agent harness (https://github.com/JakeSelby/agent-harness) that runs this check daily across more than 400 issues. It also taught me that ids handed out on two branches at once collide, so it surveys every branch before allocating one; I can propose that separately.
Describe your idea
A read-only check that compares the ticket tree with the tracker and lists what has drifted.
Why is this needed?
queryreads one ticket, a container's children, or a word search. Nothing shows a tracker item that is missing, closed on one side only, reparented, blocked by somethingafterno longer names, filed twice, or filed outside BMad with no parent. With hooks not integrated yet, that drift builds up between runs, and #2956 is one way it starts. A check like this gives the person and the agent the same picture of the board before either of them acts on it.How should it work?
tickets.py reconcile <folder> --tracker <listing>. Each store'squeryverb gains a sentence on producing the listing (number, state, parent, blocked-by, labels, and the id and parent lines from the body), andtickets.pycompares it with the tree and prints JSON grouped by kind of drift. Fixing stays withwriteand the user.PR
I'd like to write it, under 400 lines with tests, once the shape suits you.
Additional context
I run an independent BMad-to-GitHub sync in my agent harness (https://github.com/JakeSelby/agent-harness) that runs this check daily across more than 400 issues. It also taught me that ids handed out on two branches at once collide, so it surveys every branch before allocating one; I can propose that separately.