Skip to content

Drop the pre-0.3.0 pin path fallback - #54

Merged
sehkone merged 1 commit into
mainfrom
sehkone/issue-46
Aug 12, 2026
Merged

Drop the pre-0.3.0 pin path fallback#54
sehkone merged 1 commit into
mainfrom
sehkone/issue-46

Conversation

@sehkone

@sehkone sehkone commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

pin_file.py stops reading the pre-0.3.0 pin path. The fallback existed so the move out of .agents/ was not a flag day — both reusable workflows run these scripts from @main while each consumer carries whatever path its last apply wrote — and every consumer has since been carried across by an ordinary apply.

Precondition, re-checked before removing anything

All thirteen repositories in repos.json carry .agent-instructions.toml at ref = "0.3.0", and none has a file at .agents/instructions.toml. Checked against GitHub on 2026-08-12, after 0.3.1 was tagged.

Worth noting: aice-web-next and aimer-web do still keep .agents/skills/. That is the directory the pin was sitting inside, and the reason it left — the rmdir in write() would have quietly declined to remove it, which is what it was written to do.

What changes

  • scripts/pin_file.pypath_in() returns the current path unconditionally; LEGACY and the two-step lookup go, and write() stops deleting the old file and its directory.
  • scripts/test_pin_file.py — the fallback and migrating-write cases go. The superseded-path case stays but inverts: a repository on the old path now fails, naming .agent-instructions.toml. write keeps its coverage as a plain write against a repository with no pin, so removing the migration does not leave the function untested.
  • scripts/test_apply_blocks.py, scripts/test_sync.py — the migrating-consumer fixtures become ordinary ones on the current path.
  • README.md — the paragraph describing the fallback goes, along with its claim that it comes out "in its own release", which was wrong.

Reading a stale pin silently was the worse of the two failures: it reports a release from a file no driver has written since, and the repository carries on looking pinned. Failing names a file somebody can create.

Not a release

No block and no roster entry moves, so check_release_surface.sh refuses a tag for this — confirmed: git diff --name-only 0.3.1 HEAD -- blocks/ repos.json is empty. It reaches consumers through @main the moment it merges. The changelog entry opens a new [Unreleased], which is the first change to land since 0.3.1 and exactly what the rule that release added says happens.

One deviation from the issue

The acceptance criteria say no reference to .agents/ should remain in scripts/, but the scope section of the same issue says pin_file.py's docstring keeps why the file is named what it is — which is the paragraph about .agents/ being a generic name. I read the criterion as being about code paths, not prose, so:

  • every path that reads or writes .agents/ is gone
  • the naming history stays in the pin_file.py and README.md prose, as the scope section asks
  • scripts/test_pin_file.py still names the old path in a fixture, because the criterion that a repository on it must now fail cannot be tested otherwise

Verification

  • python3 scripts/lint_blocks.py — blocks OK
  • All seven script suites pass (the issue says six; check_drift has been added since it was filed)
  • markdownlint-cli2 "**/*.md" — 0 issues in 9 files

Closes #46

The pin moved to `.agent-instructions.toml` in 0.3.0, and `pin_file.py`
went on reading `.agents/instructions.toml` where that was the only file
present, with every write moving the repository across and deleting the
old one. That was never meant to last: both reusable workflows run these
scripts from `@main` while each consumer carries whatever path its last
apply wrote, so a hard switch would have turned every repository red at
once.

Every repository has since been carried across. Re-checked before
removing anything: all thirteen in repos.json carry
`.agent-instructions.toml` at `ref = "0.3.0"`, and none has a file at
the old path. Two of them -- aice-web-next and aimer-web -- do keep
`.agents/skills/`, which is the directory this pin was sitting inside
and the reason it left.

What the fallback covers now is a checkout restored from a branch older
than the move. Reading that one silently is the worse answer: it reports
a release from a file no driver has written since, and the repository
carries on looking pinned. It now fails naming
`.agent-instructions.toml`, which is a file somebody can create.

The `.agents/` name stays in the docstrings that explain why the pin is
called what it is. That history is why the file has an awkward name, and
a reader meeting it needs it; what goes is every path that reads or
writes there.

No block and no roster entry moves, so `check_release_surface.sh` would
refuse a tag for this, correctly. It reaches consumers through `@main`
the moment it merges, and the changelog entry opens a new
`[Unreleased]` -- the first change to land since 0.3.1, which is exactly
what the rule that release added says happens.

Closes #46
@sehkone
sehkone merged commit 8d93b15 into main Aug 12, 2026
1 check passed
@sehkone
sehkone deleted the sehkone/issue-46 branch August 12, 2026 02:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Drop the pre-0.3.0 pin path fallback

1 participant