fix(verification): skip the upgrade path test for extensions with no manifest (swamp-club #2696) #383

Merged
seth merged 1 commit from cue/2696-check-upgrades-path into main 2026-09-30 17:17:59 +00:00
Owner

Fixes swamp-club #2696.

Problem

pathTest in scripts/check_upgrades.ts returned no manifest name, cannot pull it when an extension had no manifest.yaml. It returned before reaching the "not published before this change, path test skipped" branch. gatorwalk-factory deliberately has no manifest until go-live (no_manifest_test.ts enforces this), so any model version bump there failed verify-build's upgrade-path-test. #2687 reverted its bump to get around it.

Change

The manifest decision moves into an exported pure function, pathTestTarget(headManifest, baseManifest):

Manifest at HEAD At merge base Result
none none skip: never published (new)
none present error: manifest removed from a published extension (new)
present, no name either error: no manifest name (as before)
named none skip: not published before this change (as before)
named present pull and path-test (as before)

pathTest calls it; the pull/create/source/method/typeVersion sequence is unchanged. There is one unit test per row in scripts/check_upgrades_test.ts.

Why the new skip is safe

check_upgrades.ts is a trust-root script, and this makes the upgrade gate skip one case it used to fail. The skip is narrow. It applies only when there is no manifest at HEAD and none at the merge base, and an extension like that cannot have been published, so there is nothing to pull or upgrade from. The module comment (skipped for extensions with no published version), agent-constraints/verification-conventions.md and implementation-conventions.md already promised this skip. Removing the manifest from a published extension, or a nameless manifest, still fails. The static upgrade-entry check is untouched.

Verification

  • Issue repro in a throwaway worktree (gatorwalk-factory work_item.ts bumped to 2026.09.30.1 with a matching upgrades entry): exit 1 before the fix, now exit 0 with gatorwalk-factory: no manifest, never published, path test skipped. The bump itself is not part of this PR.
  • verify-build 164b7f44-a139-4ce6-a80f-3a9d51032ef5 and verify-reviews fc30f809-da64-4732-9f30-957765066a51: 12 passed, 2 skipped by guard, 0 failed. code-review and ci-security-review both passed.
  • Attestation c6d1f7fe-bff6-40d0-9e75-743b87d8c08f posted for 1929514e1.

🤖 Generated with Claude Code

Fixes swamp-club #2696. ## Problem `pathTest` in `scripts/check_upgrades.ts` returned `no manifest name, cannot pull it` when an extension had no `manifest.yaml`. It returned before reaching the "not published before this change, path test skipped" branch. gatorwalk-factory deliberately has no manifest until go-live (`no_manifest_test.ts` enforces this), so any model version bump there failed verify-build's `upgrade-path-test`. #2687 reverted its bump to get around it. ## Change The manifest decision moves into an exported pure function, `pathTestTarget(headManifest, baseManifest)`: | Manifest at HEAD | At merge base | Result | |---|---|---| | none | none | **skip**: never published (new) | | none | present | **error**: manifest removed from a published extension (new) | | present, no name | either | **error**: no manifest name (as before) | | named | none | **skip**: not published before this change (as before) | | named | present | **pull** and path-test (as before) | `pathTest` calls it; the pull/create/source/method/typeVersion sequence is unchanged. There is one unit test per row in `scripts/check_upgrades_test.ts`. ## Why the new skip is safe `check_upgrades.ts` is a trust-root script, and this makes the upgrade gate skip one case it used to fail. The skip is narrow. It applies only when there is no manifest at HEAD and none at the merge base, and an extension like that cannot have been published, so there is nothing to pull or upgrade from. The module comment (`skipped for extensions with no published version`), `agent-constraints/verification-conventions.md` and `implementation-conventions.md` already promised this skip. Removing the manifest from a published extension, or a nameless manifest, still fails. The static upgrade-entry check is untouched. ## Verification - Issue repro in a throwaway worktree (gatorwalk-factory `work_item.ts` bumped to `2026.09.30.1` with a matching upgrades entry): exit 1 before the fix, now exit 0 with `gatorwalk-factory: no manifest, never published, path test skipped`. The bump itself is not part of this PR. - verify-build `164b7f44-a139-4ce6-a80f-3a9d51032ef5` and verify-reviews `fc30f809-da64-4732-9f30-957765066a51`: 12 passed, 2 skipped by guard, 0 failed. code-review and ci-security-review both passed. - Attestation `c6d1f7fe-bff6-40d0-9e75-743b87d8c08f` posted for `1929514e1`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(verification): skip the upgrade path test for extensions with no manifest (swamp-club #2696)
All checks were successful
CI / Validate Attestation (pull_request) Successful in 1m23s
CI / Review Integrity (pull_request) Successful in 1m51s
1929514e14
pathTest failed with "no manifest name, cannot pull it" when an extension
had no manifest.yaml, before reaching the unpublished-extension skip. An
extension with no manifest at HEAD or at the merge base has never been
published, so it is now skipped, as the module comment and
verification-conventions.md already said. A manifest removed from a
published extension, or one without a name, still fails.

The decision moves into an exported pure function, pathTestTarget, with a
unit test per case.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seth merged commit 20da4f68e9 into main 2026-09-30 17:17:59 +00:00
seth deleted branch cue/2696-check-upgrades-path 2026-09-30 17:17:59 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
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
swamp-club/swamp-extensions!383
No description provided.