fix: unbreak release.yml and adopt agent-manifest 0.12.0 - #616
Open
imran-siddique wants to merge 2 commits into
Open
fix: unbreak release.yml and adopt agent-manifest 0.12.0#616imran-siddique wants to merge 2 commits into
imran-siddique wants to merge 2 commits into
Conversation
My own regression, from #609. Hardening the tag interpolation added an env: block before run: on the "Attach evidence to release" step, which already had one after it. Two env keys in one mapping. GitHub Actions refuses to load a workflow with a duplicate key, so release.yml has produced "workflow file issue" failures on every push since #609 merged, and the v0.5.0 release event ran nothing. PyYAML's safe_load keeps the last value silently, which is why the validation I ran locally passed. The two variables merge into the single env block. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbDBXDWWvMFa7c2jGgyq9t
…epts 0.12.0 shipped today and cmcp's floor let CI pull it straight in. Two of its changes reach this repo. GHSA-6hjj-gh3c-r6wv makes the full-binding requirement enforceable independently of Pydantic's model validator. Five test fixtures here built manifests with no profile carrying only policy_bundle and tool_manifest, and they verified because a nested omission was suppressing the check. They are MISMATCH now, correctly, and declare all three required artifacts. That exposed a real integration question rather than only a fixture one. Once a manifest carries system_prompt and model_identity, the SDK's strict artifact verification returns INCOMPLETE for it, because those bindings are present and this verifier holds no runtime hash to check them against. A gateway holds the running policy bundle and tool catalog and nothing else, so under strict mode it could not accept any well-formed full-binding manifest. The gateway now declares its appraisal as scoped: strict_artifact_verification=False. Nothing is skipped as a result. _raise_for_sdk_result still requires policy_bundle and tool_manifest to be MATCH under require_runtime_artifacts, which is the whole of what this verifier can attest, and the SDK attaches a warning naming every binding it did not verify. GHSA-mp83-94pc-7wqh moved TPM AK chain appraisal onto the shared certificate-chain verifier, which changes the failure detail this repo asserts on. The behaviour is unchanged: an unpinned root is still rejected. Floor raised to >=0.12.0, since both behaviours are now depended on. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbDBXDWWvMFa7c2jGgyq9t
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.
Two things, both needed to get 0.5.0 out. Found while cutting the release.
1. My own regression: release.yml was unloadable
Hardening the tag interpolation in #609 added an
env:block beforerun:on the "Attach evidence to release" step. That step already had one afterrun:. Twoenvkeys in one mapping:GitHub Actions refuses to load a workflow with a duplicate key.
release.ymlhas produced "workflow file issue" failures on every push since #609 merged, and thev0.5.0release event ran nothing, so cmcp-runtime 0.5.0 never reached PyPI.Why local validation missed it: I checked with
yaml.safe_load, which keeps the last value for a duplicate key without complaining. I have since re-checked every workflow across the org with a loader that rejects duplicates; this was the only occurrence. Anactionlintstep in CI would catch this class directly — worth considering, not added here to keep the fix minimal.2. agent-manifest 0.12.0 changes what this gateway accepts
0.12.0 shipped today and this repo's floor let CI pull it in immediately. Two of its changes land here.
GHSA-6hjj-gh3c-r6wv makes the full-binding requirement enforceable independently of Pydantic's model validator. Five test fixtures here built manifests with no
profilecarrying onlypolicy_bundleandtool_manifest. They verified because a nested omission was suppressing the check. They areMISMATCHnow, correctly, and declare all three required artifacts.That exposed a real integration question, not just a fixture one. Once a manifest carries
system_promptandmodel_identity, the SDK's strict artifact verification returnsINCOMPLETE, because those bindings are present and this verifier holds no runtime hash to check them against. A gateway holds the running policy bundle and tool catalog and nothing else. Under strict mode it could not accept any well-formed full-binding manifest.So the gateway now declares its appraisal as scoped,
strict_artifact_verification=False. This is the judgement call in this PR and the part worth reviewing.Nothing is skipped as a result:
_raise_for_sdk_resultstill requirespolicy_bundleandtool_manifestto beMATCHunderrequire_runtime_artifacts, which is the whole of what this verifier can attestVALIDfrom this path is never mistakable for "all artifacts checked"The alternative — leaving strict on — means the gateway rejects correct manifests, which is a worse failure than being explicit about scope.
GHSA-mp83-94pc-7wqh moved TPM AK chain appraisal onto the shared certificate-chain verifier, changing the failure detail this repo asserts on. Behaviour is unchanged: an unpinned root is still rejected, with a different message.
Floor raised to
>=0.12.0, since both behaviours are now depended on.Verification
Full suite: 1628 passed, 23 skipped. One local failure,
test_distribution_smoke_script_exercises_installed_public_api, is the venv carrying cmcp-runtime metadata 0.4.0 against the tree's 0.5.0; CI reinstalls frompyproject.toml.Once this merges I will re-run the release so 0.5.0 reaches PyPI.
🤖 Generated with Claude Code
https://claude.ai/code/session_01XbDBXDWWvMFa7c2jGgyq9t