fix: restore the feature stack lost in the stacked-PR merge - #294
Merged
Conversation
PRs #278 through #290 were stacked on #276. When #276 squash-merged and its branch was deleted, the rest of the stack merged into each other's now-deleted feature branches instead of main: they show MERGED but none of their content reached main. Main was missing the bearer-token wiring (every endpoint unauthenticated), upstream MCP forwarding (every tool call denied via a nonexistent AGT method), Cedar advice, session close + TRACE claim issuance, the egress workflow context, the silent-mode contract, cmcp verify, and the fail-closed hardware verifiers. This restores the verified stack tip (45 files across src/, tests/, docs/configuration.md, and example configs), with em dashes scrubbed per repo style. pyproject (cedarpy fix from #291) and .github workflows are untouched. Full suite: 679 passed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The stacked branches never ran CI (no checks trigger on non-main-target PRs), so these two mypy findings surface only now: narrow deny_reason before removeprefix, and annotate the deliberate benchmark seam mock. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This was referenced Jun 12, 2026
imran-siddique
added a commit
that referenced
this pull request
Jun 12, 2026
Adds a dedicated paragraph explicitly stating the silent-mode behavioral contract: PolicyEvaluator suppresses application-level log lines but still returns would_have_denied=True, and the proxy writes advisory_deny entries into the hash-chained audit log. Auditable evidence is preserved in silent mode; only operational logs are quiet. The contract is already enforced and tested in tests/unit/test_silent_mode_contract.py (landed in #294). Closes #284
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.
What happened
PRs #278 -> #279 -> #280 -> #282 -> #285 -> #286 -> #287 -> #290 were stacked on #276. When #276 squash-merged and its branch was deleted, the rest merged into each other's now-deleted branches: all show MERGED, but none of their content reached main. The same thing happened in the examples repo (fixed there in examples#19).
Main is currently missing, among other things: the bearer-token wiring (AUTH-001 -- every endpoint unauthenticated in production), upstream MCP forwarding (every tool call denied), Cedar @annotation advice, POST /sessions/{id}/close + TRACE claim issuance, the egress workflow context fix, the silent-mode contract and tests,
cmcp verify, and the fail-closed hardware verifiers.What this restores
The verified stack tip: 45 files across src/cmcp_runtime, src/cmcp_verify, tests/, docs/configuration.md, and the example configs. Em dashes scrubbed per repo style. pyproject (keeps #291's cedarpy fix) and .github workflows untouched.
Test plan
Process note
Stacked PRs on GitHub: merge the TOP of the stack into its base branch first and walk down, or retarget each PR to main after the one below merges. Merging the bottom first deletes the base branch and strands the rest.
Generated with Claude Code