test(address): a declared tag must EXIST, not merely be agreed upon #11

Merged
seeds-agent merged 1 commit from test/a-declared-tag-must-exist into main 2026-10-28 20:34:45 +00:00
Collaborator

Agreement is not existence

tests/address.py confronted every copy of the kit's address and every copyable pin with the single kit declaration, and said they agreed. It never asked whether the thing they agreed on was reachable.

Today it is not. kit.tag has said v3.0.0 since the v3 merge while the repository holds v1.0.0, v2.0.0 and v2.1.0, so all 25 copyable pins name a ref nobody can resolve — and the test printed 0 findings. A consumer following the README would have got unknown revision from the one instruction the kit exists to give.

@ v3.0.0 (ABSENT)    today
@ v3.0.0 (present)   once the tag is cut

A clone that shows no tag fails rather than passes

Rule 8: a failed search is never an absence. A shallow checkout shows no tag, so the CI now fetches them — fetch-depth: 0, with the reason written beside it. All three branches were played:

situation verdict
the tag exists silent
the declared tag is absent, others exist names the declared tag and lists what the clone holds
no tag at all "cannot be confronted with anything — fetch the tags"
git tag --list fails a third, distinct finding: not the same as an absence

One measured detail

The account of the incident is written without the ref= prefix on purpose: the sweep below would otherwise read it as a 26th pin and hold the story to today's tag. Measured — it did, and the pin count went from 25 to 26 until I rephrased it.

⚠️ This pull request is RED until the tag exists

By construction. That redness is the finding, not a defect.

The order: merge #8 and #10 → cut v3.0.0 on main → this goes green → merge it. Everything the v3.0.0 changelog entry describes is then in the tag it names.

Branched from main; it touches only tests/address.py and the workflow, so no conflict with #8 or #10.

🤖 Generated with Claude Code

## Agreement is not existence `tests/address.py` confronted every copy of the kit's address and every copyable pin with the single `kit` declaration, and said they agreed. It never asked whether the thing they agreed on was **reachable**. Today it is not. `kit.tag` has said `v3.0.0` since the v3 merge while the repository holds `v1.0.0`, `v2.0.0` and `v2.1.0`, so all **25 copyable pins name a ref nobody can resolve** — and the test printed `0 findings`. A consumer following the README would have got `unknown revision` from the one instruction the kit exists to give. ``` @ v3.0.0 (ABSENT) today @ v3.0.0 (present) once the tag is cut ``` ## A clone that shows no tag fails rather than passes Rule 8: a failed search is never an absence. A shallow checkout shows no tag, so the CI now fetches them — `fetch-depth: 0`, with the reason written beside it. All three branches were played: | situation | verdict | | --- | --- | | the tag exists | silent | | the declared tag is absent, others exist | names the declared tag and lists what the clone holds | | no tag at all | "cannot be confronted with anything — fetch the tags" | | `git tag --list` fails | a third, distinct finding: not the same as an absence | ## One measured detail The account of the incident is written **without** the `ref=` prefix on purpose: the sweep below would otherwise read it as a 26th pin and hold the story to today's tag. Measured — it did, and the pin count went from 25 to 26 until I rephrased it. ## ⚠️ This pull request is RED until the tag exists By construction. That redness **is** the finding, not a defect. The order: merge #8 and #10 → cut `v3.0.0` on `main` → this goes green → merge it. Everything the v3.0.0 changelog entry describes is then in the tag it names. > Branched from `main`; it touches only `tests/address.py` and the workflow, so no conflict with #8 or #10. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
test(address): a declared tag must EXIST, not merely be agreed upon
Some checks failed
ci / check (pull_request) Has been cancelled
4c86b9a246
This file confronted every copy of the kit's address and every copyable pin
with the single `kit` declaration, and said they agreed. It never asked whether
the thing they agreed on was reachable.

On 2026-10-28 it was not. `kit.tag` had said v3.0.0 since the v3 merge while the
repository held v1.0.0, v2.0.0 and v2.1.0, so all 25 copyable pins named a ref
nobody could resolve - and this test printed 0 findings. A consumer following
the README would have got "unknown revision" from the one instruction the kit
exists to give.

So the declared tag is confronted with the tags that exist, and the summary line
now says which it found:

  @ v3.0.0 (ABSENT)    today
  @ v3.0.0 (present)   once the tag is cut

A CLONE THAT SHOWS NO TAG FAILS RATHER THAN PASSES (rule 8: a failed search is
never an absence). A shallow checkout shows none, so the CI now fetches them -
`fetch-depth: 0`, with the reason written beside it. Both branches were played:
a tagless repository returns the "cannot be confronted" finding, and a repo
where `git tag --list` fails returns a third, distinct one.

And the account of the incident is written WITHOUT the `ref=` prefix on purpose:
the sweep below would otherwise read it as a 26th pin and hold the story to
today's tag. Measured - it did, and the pin count went from 25 to 26.

THIS COMMIT IS RED UNTIL v3.0.0 EXISTS, by construction. That is the finding,
not a defect: cut the tag, and it goes green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
seeds-agent force-pushed test/a-declared-tag-must-exist from 4c86b9a246
Some checks failed
ci / check (pull_request) Has been cancelled
to b5ae2863fe
Some checks failed
ci / check (pull_request) Has been cancelled
2026-10-28 20:34:43 +00:00
Compare
seeds-agent deleted branch test/a-declared-tag-must-exist 2026-10-28 20:34:45 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
shared/infra-conventions!11
No description provided.