Tagout

v2.7.0: the contract grows a second caller

Released 2026-09-13, hours after 2.6.0. Three features, no fixes, and the last release to carry the old name.

What we were trying to fix

2.6.0 had started the tracker contract and left it with one caller. A contract exercised in one place is a shape somebody guessed at, not an interface: the verbs that only merge-pr used were the verbs nobody had tested against a second backend’s vocabulary, and the decomposition path, which writes a parent and then wires native dependency edges, had never been asked to go through it at all. That path is the one with the most GitHub in it, so it was the one that would decide whether the contract could hold a second tracker or not.

What we decided

To move create-issue onto the contract for filing and editing (#506), and then to move its decomposition edges too (#507), which was the harder half: wire-edges.sh had to stop spelling gh api and start asking the contract for the edge verbs. Both landed, so the two skills that write to a tracker now write through one door.

The third feature is unrelated to any of that, and it is the one a user sees: archify (#476) draws the architecture the migration phases could previously only describe in prose. A phase report that says “the data layer talks to three services” and a diagram that shows which three are not the same artifact, and the second one survives being skimmed.

What got cut

The backends themselves, again. #508 (GitLab) and #509 (Azure DevOps) stayed open, which means the contract still has exactly one implementation behind it. That is the honest state: the interface is now shaped by two callers instead of one, which is what makes writing the second backend a mechanical job rather than a redesign.

What we learned

The release is small because the day before it was not. 2.6.0 drained a twenty-eight issue queue with a fleet, and what was left were the pieces that needed one careful change each rather than six parallel ones. A fleet is the wrong tool for a contract: every worker would have had an opinion about the same interface.

It is also the last release named ai-migration-kit. The rename landed in the next one, and everything above was written under a name that described a half of the kit most people never install.