Update E2E tests for registry-based skill resolution#4202
Merged
JAORMX merged 6 commits intojaosorior/skill-install-registry-lookupfrom Mar 19, 2026
Merged
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## jaosorior/skill-install-registry-lookup #4202 +/- ##
========================================================================
Coverage 68.74% 68.75%
========================================================================
Files 468 468
Lines 47174 47179 +5
========================================================================
+ Hits 32432 32437 +5
- Misses 12035 12037 +2
+ Partials 2707 2705 -2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
e1f26f2 to
452461e
Compare
0fe2e7a to
66a114b
Compare
Plain name installs without a prior build now return 404 instead of creating a dead-end "pending" record. Update all E2E tests that relied on the pending path to use the build-then-install flow, and add a test verifying the 404 behavior for unresolvable names. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Exercises the full registry lookup chain end-to-end:
1. Start an in-process OCI registry (go-containerregistry/pkg/registry)
2. Build a skill and push it to the in-process registry
3. Create an upstream-format registry JSON with a skill entry pointing
to the in-process registry
4. Configure the thv server to use that registry file
5. Install by plain name and verify the skill resolves through the
registry, pulls from OCI, and installs with full metadata
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two fixes for CI failures: 1. Enable plain HTTP for the OCI registry client when TOOLHIVE_DEV=true so E2E tests can push/pull to an in-process httptest registry without TLS. 2. Update duplicate/overwrite tests to expect 201 (idempotent no-op) instead of 409 Conflict. With real build-then-install, reinstalling the same digest is correctly idempotent. The old 409 was an artifact of the removed pending-install path. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The skill push API returns 204 No Content on success. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The upstream registry JSON schema validation rejects the test fixture. The in-process OCI registry, plain HTTP push, and registry update plumbing all work (verified in prior CI runs), but the upstream format schema requires fields beyond what the test provides. Mark as pending until the exact schema requirements are debugged. All other E2E tests (48/49) pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The upstream registry file validator requires at least one server or group. Our test JSON had only skills with an empty servers array, which was rejected with 502. Add a minimal dummy server entry to satisfy the validation while keeping the focus on skill resolution. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
452461e to
eea80f1
Compare
54f40ba
into
jaosorior/skill-install-registry-lookup
117 of 122 checks passed
JAORMX
added a commit
that referenced
this pull request
Mar 19, 2026
* Update E2E tests for registry-based skill resolution
Plain name installs without a prior build now return 404 instead of
creating a dead-end "pending" record. Update all E2E tests that relied
on the pending path to use the build-then-install flow, and add a test
verifying the 404 behavior for unresolvable names.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add E2E test for registry-based skill name resolution
Exercises the full registry lookup chain end-to-end:
1. Start an in-process OCI registry (go-containerregistry/pkg/registry)
2. Build a skill and push it to the in-process registry
3. Create an upstream-format registry JSON with a skill entry pointing
to the in-process registry
4. Configure the thv server to use that registry file
5. Install by plain name and verify the skill resolves through the
registry, pulls from OCI, and installs with full metadata
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix E2E test failures: plain HTTP for dev, idempotent installs
Two fixes for CI failures:
1. Enable plain HTTP for the OCI registry client when TOOLHIVE_DEV=true
so E2E tests can push/pull to an in-process httptest registry without
TLS.
2. Update duplicate/overwrite tests to expect 201 (idempotent no-op)
instead of 409 Conflict. With real build-then-install, reinstalling
the same digest is correctly idempotent. The old 409 was an artifact
of the removed pending-install path.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix push assertion: expect 204 No Content, not 200
The skill push API returns 204 No Content on success.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Temporarily skip registry lookup E2E test
The upstream registry JSON schema validation rejects the test fixture.
The in-process OCI registry, plain HTTP push, and registry update
plumbing all work (verified in prior CI runs), but the upstream format
schema requires fields beyond what the test provides. Mark as pending
until the exact schema requirements are debugged.
All other E2E tests (48/49) pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix registry lookup E2E: add dummy server to pass validation
The upstream registry file validator requires at least one server or
group. Our test JSON had only skills with an empty servers array, which
was rejected with 502. Add a minimal dummy server entry to satisfy the
validation while keeping the focus on skill resolution.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
JAORMX
added a commit
that referenced
this pull request
Mar 19, 2026
* Update E2E tests for registry-based skill resolution
Plain name installs without a prior build now return 404 instead of
creating a dead-end "pending" record. Update all E2E tests that relied
on the pending path to use the build-then-install flow, and add a test
verifying the 404 behavior for unresolvable names.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add E2E test for registry-based skill name resolution
Exercises the full registry lookup chain end-to-end:
1. Start an in-process OCI registry (go-containerregistry/pkg/registry)
2. Build a skill and push it to the in-process registry
3. Create an upstream-format registry JSON with a skill entry pointing
to the in-process registry
4. Configure the thv server to use that registry file
5. Install by plain name and verify the skill resolves through the
registry, pulls from OCI, and installs with full metadata
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix E2E test failures: plain HTTP for dev, idempotent installs
Two fixes for CI failures:
1. Enable plain HTTP for the OCI registry client when TOOLHIVE_DEV=true
so E2E tests can push/pull to an in-process httptest registry without
TLS.
2. Update duplicate/overwrite tests to expect 201 (idempotent no-op)
instead of 409 Conflict. With real build-then-install, reinstalling
the same digest is correctly idempotent. The old 409 was an artifact
of the removed pending-install path.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix push assertion: expect 204 No Content, not 200
The skill push API returns 204 No Content on success.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Temporarily skip registry lookup E2E test
The upstream registry JSON schema validation rejects the test fixture.
The in-process OCI registry, plain HTTP push, and registry update
plumbing all work (verified in prior CI runs), but the upstream format
schema requires fields beyond what the test provides. Mark as pending
until the exact schema requirements are debugged.
All other E2E tests (48/49) pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix registry lookup E2E: add dummy server to pass validation
The upstream registry file validator requires at least one server or
group. Our test JSON had only skills with an empty servers array, which
was rejected with 502. Add a minimal dummy server entry to satisfy the
validation while keeping the focus on skill resolution.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
JAORMX
added a commit
that referenced
this pull request
Mar 20, 2026
* Update E2E tests for registry-based skill resolution
Plain name installs without a prior build now return 404 instead of
creating a dead-end "pending" record. Update all E2E tests that relied
on the pending path to use the build-then-install flow, and add a test
verifying the 404 behavior for unresolvable names.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add E2E test for registry-based skill name resolution
Exercises the full registry lookup chain end-to-end:
1. Start an in-process OCI registry (go-containerregistry/pkg/registry)
2. Build a skill and push it to the in-process registry
3. Create an upstream-format registry JSON with a skill entry pointing
to the in-process registry
4. Configure the thv server to use that registry file
5. Install by plain name and verify the skill resolves through the
registry, pulls from OCI, and installs with full metadata
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix E2E test failures: plain HTTP for dev, idempotent installs
Two fixes for CI failures:
1. Enable plain HTTP for the OCI registry client when TOOLHIVE_DEV=true
so E2E tests can push/pull to an in-process httptest registry without
TLS.
2. Update duplicate/overwrite tests to expect 201 (idempotent no-op)
instead of 409 Conflict. With real build-then-install, reinstalling
the same digest is correctly idempotent. The old 409 was an artifact
of the removed pending-install path.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix push assertion: expect 204 No Content, not 200
The skill push API returns 204 No Content on success.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Temporarily skip registry lookup E2E test
The upstream registry JSON schema validation rejects the test fixture.
The in-process OCI registry, plain HTTP push, and registry update
plumbing all work (verified in prior CI runs), but the upstream format
schema requires fields beyond what the test provides. Mark as pending
until the exact schema requirements are debugged.
All other E2E tests (48/49) pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix registry lookup E2E: add dummy server to pass validation
The upstream registry file validator requires at least one server or
group. Our test JSON had only skills with an empty servers array, which
was rejected with 502. Add a minimal dummy server entry to satisfy the
validation while keeping the focus on skill resolution.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
JAORMX
added a commit
that referenced
this pull request
Mar 23, 2026
* Update E2E tests for registry-based skill resolution
Plain name installs without a prior build now return 404 instead of
creating a dead-end "pending" record. Update all E2E tests that relied
on the pending path to use the build-then-install flow, and add a test
verifying the 404 behavior for unresolvable names.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add E2E test for registry-based skill name resolution
Exercises the full registry lookup chain end-to-end:
1. Start an in-process OCI registry (go-containerregistry/pkg/registry)
2. Build a skill and push it to the in-process registry
3. Create an upstream-format registry JSON with a skill entry pointing
to the in-process registry
4. Configure the thv server to use that registry file
5. Install by plain name and verify the skill resolves through the
registry, pulls from OCI, and installs with full metadata
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix E2E test failures: plain HTTP for dev, idempotent installs
Two fixes for CI failures:
1. Enable plain HTTP for the OCI registry client when TOOLHIVE_DEV=true
so E2E tests can push/pull to an in-process httptest registry without
TLS.
2. Update duplicate/overwrite tests to expect 201 (idempotent no-op)
instead of 409 Conflict. With real build-then-install, reinstalling
the same digest is correctly idempotent. The old 409 was an artifact
of the removed pending-install path.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix push assertion: expect 204 No Content, not 200
The skill push API returns 204 No Content on success.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Temporarily skip registry lookup E2E test
The upstream registry JSON schema validation rejects the test fixture.
The in-process OCI registry, plain HTTP push, and registry update
plumbing all work (verified in prior CI runs), but the upstream format
schema requires fields beyond what the test provides. Mark as pending
until the exact schema requirements are debugged.
All other E2E tests (48/49) pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix registry lookup E2E: add dummy server to pass validation
The upstream registry file validator requires at least one server or
group. Our test JSON had only skills with an empty servers array, which
was rejected with 502. Add a minimal dummy server entry to satisfy the
validation while keeping the focus on skill resolution.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
JAORMX
added a commit
that referenced
this pull request
Mar 23, 2026
* Update E2E tests for registry-based skill resolution
Plain name installs without a prior build now return 404 instead of
creating a dead-end "pending" record. Update all E2E tests that relied
on the pending path to use the build-then-install flow, and add a test
verifying the 404 behavior for unresolvable names.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add E2E test for registry-based skill name resolution
Exercises the full registry lookup chain end-to-end:
1. Start an in-process OCI registry (go-containerregistry/pkg/registry)
2. Build a skill and push it to the in-process registry
3. Create an upstream-format registry JSON with a skill entry pointing
to the in-process registry
4. Configure the thv server to use that registry file
5. Install by plain name and verify the skill resolves through the
registry, pulls from OCI, and installs with full metadata
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix E2E test failures: plain HTTP for dev, idempotent installs
Two fixes for CI failures:
1. Enable plain HTTP for the OCI registry client when TOOLHIVE_DEV=true
so E2E tests can push/pull to an in-process httptest registry without
TLS.
2. Update duplicate/overwrite tests to expect 201 (idempotent no-op)
instead of 409 Conflict. With real build-then-install, reinstalling
the same digest is correctly idempotent. The old 409 was an artifact
of the removed pending-install path.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix push assertion: expect 204 No Content, not 200
The skill push API returns 204 No Content on success.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Temporarily skip registry lookup E2E test
The upstream registry JSON schema validation rejects the test fixture.
The in-process OCI registry, plain HTTP push, and registry update
plumbing all work (verified in prior CI runs), but the upstream format
schema requires fields beyond what the test provides. Mark as pending
until the exact schema requirements are debugged.
All other E2E tests (48/49) pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix registry lookup E2E: add dummy server to pass validation
The upstream registry file validator requires at least one server or
group. Our test JSON had only skills with an empty servers array, which
was rejected with 502. Add a minimal dummy server entry to satisfy the
validation while keeping the focus on skill resolution.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
JAORMX
added a commit
that referenced
this pull request
Mar 23, 2026
* Update E2E tests for registry-based skill resolution
Plain name installs without a prior build now return 404 instead of
creating a dead-end "pending" record. Update all E2E tests that relied
on the pending path to use the build-then-install flow, and add a test
verifying the 404 behavior for unresolvable names.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add E2E test for registry-based skill name resolution
Exercises the full registry lookup chain end-to-end:
1. Start an in-process OCI registry (go-containerregistry/pkg/registry)
2. Build a skill and push it to the in-process registry
3. Create an upstream-format registry JSON with a skill entry pointing
to the in-process registry
4. Configure the thv server to use that registry file
5. Install by plain name and verify the skill resolves through the
registry, pulls from OCI, and installs with full metadata
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix E2E test failures: plain HTTP for dev, idempotent installs
Two fixes for CI failures:
1. Enable plain HTTP for the OCI registry client when TOOLHIVE_DEV=true
so E2E tests can push/pull to an in-process httptest registry without
TLS.
2. Update duplicate/overwrite tests to expect 201 (idempotent no-op)
instead of 409 Conflict. With real build-then-install, reinstalling
the same digest is correctly idempotent. The old 409 was an artifact
of the removed pending-install path.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix push assertion: expect 204 No Content, not 200
The skill push API returns 204 No Content on success.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Temporarily skip registry lookup E2E test
The upstream registry JSON schema validation rejects the test fixture.
The in-process OCI registry, plain HTTP push, and registry update
plumbing all work (verified in prior CI runs), but the upstream format
schema requires fields beyond what the test provides. Mark as pending
until the exact schema requirements are debugged.
All other E2E tests (48/49) pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix registry lookup E2E: add dummy server to pass validation
The upstream registry file validator requires at least one server or
group. Our test JSON had only skills with an empty servers array, which
was rejected with 502. Add a minimal dummy server entry to satisfy the
validation while keeping the focus on skill resolution.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
JAORMX
added a commit
that referenced
this pull request
Mar 23, 2026
* Resolve plain skill names from registry during install When `thv skill install <name>` does not find the skill in the local OCI store, the code previously created a dead-end "pending" DB record. Now it queries the configured skill registry/index for an exact name match and, if found, extracts the OCI reference and installs from it. If no match is found anywhere, a 404 with an actionable error message is returned. This is Phase 2 of #4015. The resolution cascade is now: 1. Local OCI store (from `thv skill build`) 2. Registry/index lookup (new) 3. Actionable 404 error (replaces silent pending record) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Use lazy skill lookup to pick up registry config changes The SkillLookup was created once at server startup from the config at that point. If the registry was changed at runtime (via the API or thv config set-registry), the skill lookup still used the old provider, so plain-name installs could not find skills in the new registry. Replace the eager buildSkillLookupOption with a lazySkillLookup that calls GetDefaultProviderWithConfig on each SearchSkills invocation. After ResetDefaultProvider (called on every registry config change), the next lookup creates a fresh provider from the current config. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Update E2E tests for registry-based skill resolution (#4202) * Update E2E tests for registry-based skill resolution Plain name installs without a prior build now return 404 instead of creating a dead-end "pending" record. Update all E2E tests that relied on the pending path to use the build-then-install flow, and add a test verifying the 404 behavior for unresolvable names. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Add E2E test for registry-based skill name resolution Exercises the full registry lookup chain end-to-end: 1. Start an in-process OCI registry (go-containerregistry/pkg/registry) 2. Build a skill and push it to the in-process registry 3. Create an upstream-format registry JSON with a skill entry pointing to the in-process registry 4. Configure the thv server to use that registry file 5. Install by plain name and verify the skill resolves through the registry, pulls from OCI, and installs with full metadata Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix E2E test failures: plain HTTP for dev, idempotent installs Two fixes for CI failures: 1. Enable plain HTTP for the OCI registry client when TOOLHIVE_DEV=true so E2E tests can push/pull to an in-process httptest registry without TLS. 2. Update duplicate/overwrite tests to expect 201 (idempotent no-op) instead of 409 Conflict. With real build-then-install, reinstalling the same digest is correctly idempotent. The old 409 was an artifact of the removed pending-install path. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix push assertion: expect 204 No Content, not 200 The skill push API returns 204 No Content on success. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Temporarily skip registry lookup E2E test The upstream registry JSON schema validation rejects the test fixture. The in-process OCI registry, plain HTTP push, and registry update plumbing all work (verified in prior CI runs), but the upstream format schema requires fields beyond what the test provides. Mark as pending until the exact schema requirements are debugged. All other E2E tests (48/49) pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix registry lookup E2E: add dummy server to pass validation The upstream registry file validator requires at least one server or group. Our test JSON had only skills with an empty servers array, which was rejected with 502. Add a minimal dummy server entry to satisfy the validation while keeping the focus on skill resolution. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Document selection policy for registry package resolution Add a comment explaining that the first OCI package in registry order is chosen when exactly one skill matches, addressing review feedback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix Skills API E2E test polluting api-clients CI job The Skills API Describe had the `api-clients` label, causing it to run in the api-clients CI job. The registry lookup test modified the shared config directory's registry to a test-only file but never restored it. Subsequent client tests failed with 404 because "osv" could no longer be resolved from the corrupted registry. Move Skills API tests to the `api-registry` label where registry mutations are expected, and add DeferCleanup to reset the registry config after the test (matching the pattern in api_registry_test.go). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
yrobla
pushed a commit
that referenced
this pull request
Mar 23, 2026
* Resolve plain skill names from registry during install When `thv skill install <name>` does not find the skill in the local OCI store, the code previously created a dead-end "pending" DB record. Now it queries the configured skill registry/index for an exact name match and, if found, extracts the OCI reference and installs from it. If no match is found anywhere, a 404 with an actionable error message is returned. This is Phase 2 of #4015. The resolution cascade is now: 1. Local OCI store (from `thv skill build`) 2. Registry/index lookup (new) 3. Actionable 404 error (replaces silent pending record) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Use lazy skill lookup to pick up registry config changes The SkillLookup was created once at server startup from the config at that point. If the registry was changed at runtime (via the API or thv config set-registry), the skill lookup still used the old provider, so plain-name installs could not find skills in the new registry. Replace the eager buildSkillLookupOption with a lazySkillLookup that calls GetDefaultProviderWithConfig on each SearchSkills invocation. After ResetDefaultProvider (called on every registry config change), the next lookup creates a fresh provider from the current config. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Update E2E tests for registry-based skill resolution (#4202) * Update E2E tests for registry-based skill resolution Plain name installs without a prior build now return 404 instead of creating a dead-end "pending" record. Update all E2E tests that relied on the pending path to use the build-then-install flow, and add a test verifying the 404 behavior for unresolvable names. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Add E2E test for registry-based skill name resolution Exercises the full registry lookup chain end-to-end: 1. Start an in-process OCI registry (go-containerregistry/pkg/registry) 2. Build a skill and push it to the in-process registry 3. Create an upstream-format registry JSON with a skill entry pointing to the in-process registry 4. Configure the thv server to use that registry file 5. Install by plain name and verify the skill resolves through the registry, pulls from OCI, and installs with full metadata Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix E2E test failures: plain HTTP for dev, idempotent installs Two fixes for CI failures: 1. Enable plain HTTP for the OCI registry client when TOOLHIVE_DEV=true so E2E tests can push/pull to an in-process httptest registry without TLS. 2. Update duplicate/overwrite tests to expect 201 (idempotent no-op) instead of 409 Conflict. With real build-then-install, reinstalling the same digest is correctly idempotent. The old 409 was an artifact of the removed pending-install path. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix push assertion: expect 204 No Content, not 200 The skill push API returns 204 No Content on success. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Temporarily skip registry lookup E2E test The upstream registry JSON schema validation rejects the test fixture. The in-process OCI registry, plain HTTP push, and registry update plumbing all work (verified in prior CI runs), but the upstream format schema requires fields beyond what the test provides. Mark as pending until the exact schema requirements are debugged. All other E2E tests (48/49) pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix registry lookup E2E: add dummy server to pass validation The upstream registry file validator requires at least one server or group. Our test JSON had only skills with an empty servers array, which was rejected with 502. Add a minimal dummy server entry to satisfy the validation while keeping the focus on skill resolution. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Document selection policy for registry package resolution Add a comment explaining that the first OCI package in registry order is chosen when exactly one skill matches, addressing review feedback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix Skills API E2E test polluting api-clients CI job The Skills API Describe had the `api-clients` label, causing it to run in the api-clients CI job. The registry lookup test modified the shared config directory's registry to a test-only file but never restored it. Subsequent client tests failed with 404 because "osv" could no longer be resolved from the corrupted registry. Move Skills API tests to the `api-registry` label where registry mutations are expected, and add DeferCleanup to reset the registry config after the test (matching the pattern in api_registry_test.go). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
buildAndInstallSkillhelper to reduce boilerplate across API testsDepends on #4200
Type of change
Test plan
task lint-fix)task test-e2e) -- requires Resolve plain skill names from registry during install #4200 to be merged firstChanges
test/e2e/api_skills_test.gobuildAndInstallSkillhelper; replace pending-status test with 404 test; update all tests that installed by plain name to build first (install, list, info, uninstall, group integration, overwrite protection, lifecycle)test/e2e/cli_skills_test.goSpecial notes for reviewers
--groupwon't be in any group, but the group integration tests explicitly pass a group so they are not affected.Generated with Claude Code