feat(pattern): add Confidential Policy Verdicts - #183
Open
mzf11125 wants to merge 1 commit into
Open
Conversation
Covers pre-execution allow/deny for agent actions, proven in zero knowledge against a committed policy that is never disclosed on-chain. No existing pattern card covered agent policy compliance. Tracks draft ERC-8354 (ethereum/ERCs#1919), which requires ERC-165, ERC-7812 for the policy commitment root, and ERC-8004 for agent identity. Set maturity: testnet. The reference implementation has a Noir circuit and generated UltraHonk verifier, and a real proof verifies through consume across 23 passing Foundry tests. The card states plainly that nothing is deployed to a public network and the contracts are unaudited. CROPS is deliberately unflattering where it should be: cr low because denial is the pattern's function, and p partial because the standard hides the policy rather than the action.
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.
Adds
patterns/pattern-confidential-policy-verdicts.md. Across 69 pattern cards, none covers agent policy compliance or confidential allow/deny verdicts.What it covers
Gating an autonomous agent action on a policy the agent is not allowed to read. A verifier learns that some committed ruleset was evaluated and returned allow, and learns nothing about its contents.
The motivating shape is a standing ruleset that governs actors who never individually signed it, and that would be defeated by publication. Fraud rules at a corporate card issuer are the clean example, because a published rule is an evasion guide. Existing agent standards are either retrospective (attestation after the fact) or mandate-based (a principal pre-signs a specific grant). Neither fits.
Standards
Tracks draft ERC-8354 (ethereum/ERCs#1919), which has an assigned editor number and sits in
s-draft. It requires ERC-165, ERC-7812 (ZK Identity Registry, supplying the policy commitment root) and ERC-8004 (Trustless Agents, supplying the agent identity).Disclosure: I am an author of that ERC.
On the maturity claim
Set to
testnet, and I want to be precise about what backs it, because the honest version is narrower than it might look.The reference implementation has a Noir circuit with a generated UltraHonk verifier, and a real proof verifies through
consumeacross 23 passing Foundry tests. What it does not have is any deployment: no contract addresses on any network, and the README states the circuit, verifier and contracts are unaudited and not for production use.So
testnetis claimed against the template gloss of "PoC/pilot". The## Examplesection says the proof verifies in an EVM test harness and that nothing is deployed or audited. The card never says "deployed" or "mainnet". If reviewers would rather seeconceptuntil something is on a public testnet, I will change it without argument.CROPS
Deliberately unflattering where the pattern deserves it:
cr: low, because denial is the pattern function. It is a censorship mechanism by construction. It stays abovenonebecause the Guard bounds one execution path and the principal keeps whatever authority it holds outside that path.p: partial, because the standard hides the policy, not the action. A permitted action executes publicly and is fully visible. Overclaiming here seemed like the fastest way to make the card useless.s: medium, since the code is unaudited and the ERC-165interfaceIdis still a placeholder pending finalisation.post_quantum: high, since UltraHonk is pairing-based over BN254 with KZG commitments. The reference implementation already carries an SP1 program alongside the Noir circuit, which is the practical migration route.The
visibilityblock maps onto the ERC verdict envelope directly.Checks
CI_MODE=strict npm run validatepasses with zero warnings against this file, 675 body wordscheck-termscleanCHANGELOG entry added under
[Unreleased].