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.