Repository navigation
fix(releases): v2 kit provenance review follow-ups - #126
Merged
Merged
Conversation
…rust vectors The kit replay check reads the stored manifest with the bounded, validating reader of the read API, so a missing, oversized or corrupt manifest is 500 release.storage_inconsistent instead of a 409 claiming origin "none". Kit release slugs must not start with ak-: AgentKit maps the kit skill directory ak-<x> to @agentkit/<x>, so @agentkit/ak-<x> was a second identity for no composed directory. It is now 400 identity.invalid. The v2 golden vectors gain a trust array with the one positive signed-kit case (remote-signed, kit signature verified over its own tree) and the mismatched-digest, unverified, local-dev and skillx negatives. Kit publish tests cover an OIDC sxo_ token and two racing publishes of one version with different origins (the insert conflict path answers 409). Docs: the deployment guide requires SKILLX_SHARED_SKILL_ALIASES before the first production @agentkit release, and the API, CLI and publisher docs state that verifying v2 manifests needs skillx-sh 0.7.0 or later. Closes #123 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014PQVEqCxVprDuAk9suEGeh
The v2 manifest rules now reject a provider kit identity whose slug starts with ak- (identity.invalid), with a rejected golden vector, so other verifiers enforce what the registry refuses. skillx publish --kit-origin fails before packing on such a name. The kit replay check logs storage errors as "release publish replay" instead of "release read", and the racing-publish test gates the first insert until both publishes looked the version up, so it always exercises the insert conflict path. Refs #123 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014PQVEqCxVprDuAk9suEGeh
Contributor
Author
|
Heads-up from #125 / #128: once #128 lands, the shared-skill guard fails closed while Generated by Claude Code |
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.
Closes #123. Follow-ups to #121 / #100.
Changes, by item in #123
trustarray to the v2 golden vectors (release-manifest-v2.json). It covers the one positivesigned-kitcase, a remote-signed kit whose kit signature was verified over its own tree. The negatives are a mismatched digest, no verification, local-dev and skillx. The fixture is regenerated.sxo_token (plus a wrong-handle 403). Also adds a race of two publishes of one version with different origins. The race is deterministic: the first insert waits until both publishes have looked up the version, so the loser always takes theinsertReleaseconflict path and gets a 409.docs/deployment-guide.md: setSKILLX_SHARED_SKILL_ALIASESbefore the first production@agentkitrelease, with a smoke check.assertSameKitProvenancereuses the bounded, validatingreadManifestfromrelease-read.ts. A missing, oversized or corrupt stored manifest now returns 500release.storage_inconsistentinstead of a 409 claiming origin "none". The log is labelledrelease publish replay.ak-is refused for kit releases (400 identity.invalid, before auth). This matcheskitIdentity(ak-plan→@agentkit/plan). The same rule is in the v2 manifest contract, with a rejected golden vector and an invalid-manifest fixture, andskillx publish --kit-originnow fails before packing.Verification
pnpm typecheck: clean.pnpm test: 124 files, 2427 passed, 3 skipped.pnpm build: OK.@agentkit/ak-reviewgave 200. They pass now.Follow-up
SKILLX_SHARED_SKILL_ALIASESis unset, the default shared-skill guard matches no kit release. Changing that reverses a recorded design choice, so it needs a decision.docs/conformance/skillx/release-manifest-v1.json). The v2 vectors, now withtrust, are ready for it to adopt.Impact
docs/api-reference.md,docs/cli-reference.md,docs/deployment-guide.md, the/docs/publisherspage and CLAUDE.md.@agentkitrelease exists yet, so no stored@agentkit/ak-*rows are affected.Generated by Claude Code