mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
Two tokens naming one row is the case the axes exist for: a variant that failed in compose and in swarm comes back as web-app-x#1@compose+tor and web-app-x#1@swarm+tor, and both have to deploy. The applier could not express it. It walked the rows, took the first pin that matched and broke out, so the second token matched nothing, counted as a typo, and aborted the chunk's discovery with 'matches no discovered row'. Two CI runs died on it before the cause was clear, both reporting a token that was perfectly valid. Pins and rows are now paired both ways round: every pin that matches a row yields its own entry. Two tokens that narrow a row identically collapse into one, so a duplicate in the input cannot become two jobs racing for a single artifact name, and a bare role name loses to any token that narrows the same row -- asking for role#1@swarm should not also deploy a rotation-picked variant of that role. The old unit test paired two pins on two different variants, which is why it stayed green; the collision on one variant now has its own. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>