RFC Proposal: Composable Zero-Knowledge Proofs for TRACE - #162
Conversation
Signed-off-by: Florian <florian@technotro.com>
imran-siddique
left a comment
There was a problem hiding this comment.
The orthogonal assurance model is the right abstraction, and the non-goals are unusually clear. I left four comments on points that should be tightened at the model level before the representation is deferred to follow-up work. These are distinct from the schema/trust-level/TCB concerns already documented on #161.
Signed-off-by: Florian <florian@technotro.com>
Signed-off-by: Florian <florian@technotro.com>
Signed-off-by: Florian <florian@technotro.com>
imran-siddique
left a comment
There was a problem hiding this comment.
The four inline points are addressed in the latest commits: the RFC now separates computation integrity from zero-knowledge privacy, requires same-values binding, binds proof-gated actions to request context, and correctly describes the mixed TEE + ZK hardware dependency.
Two issue-level blockers remain before I can sign off:
-
Compatibility still claims behavior the current verifier cannot provide. The RFC says the proposal is additive and that a verifier without ZK support “should continue to evaluate the existing TRACE evidence.” Since #156, the record schema is closed with
additionalProperties: false; an unknown ZK member causes whole-record rejection. Please rewrite Compatibility to say that a named schema member plus verifier support is required, and define the unsupported-mechanism behavior rather than promising graceful degradation that does not exist. -
The current trust-level model cannot remain unchanged as written. A ZK-only profile must currently use
runtime.platform: software-onlyand is capped at Level 0 byTR-RTE. That linear result does not express independently verified computation assurance. The informative RFC need not solve the replacement model, but it must acknowledge the required follow-up change to §7 /TR-RTErather than state that existing levels remain unchanged or must be preserved.
Please also remove the duplicated consecutive definition of “assurance profile.”
Once those statements match the implemented conformance behavior, the assurance-model direction is sound.
|
Flagging a state mismatch before this goes further: this PR is still the pre-review draft. Its head, Could you merge Trivo25#1 into One item from the #161 thread is still open and is not in the review-fixes branch either. A ZK-bearing record still carries This is the same shape as lywinged's compatibility finding, one layer up. #156 closed the additive path at the schema, and the profile URI closes it again at the version identifier. Both point the same way: composable assurance needs its own profile URI rather than an extension inside v0.2, and the RFC should say so in Compatibility rather than leaving a reader to assume a ZK block can ride along. The direction is still right and the model holds. This is about the RFC describing the constraints as they actually are today. |
RFC: Address assurance-model review feedback
Signed-off-by: Florian <florian@technotro.com>
see 1b56d15 |
|
Two small things in support of the direction The profile check also runs before schema validation, not only before the cryptographic work — so the distinct-profile decision changes which error a relying party sees, and it is already load-bearing today: A ZK-bearing record under its own profile URI tells a relying party "I do not implement this profile" rather than "this record is malformed". Since On the named-member shape, since Compatibility now points at it: I tried it — The last line is the concrete form of the integrity argument the section makes. One trap that is not obvious and cost me a run: |
Thanks for testing! I added a quick disclaimer 34e3bf6 |
|
Hey @imran-siddique @lywinged! I think all comments should now be addressed, let me know how you would like to continue 🙏 |
Thanks for turning all of that around so quickly - the revisions read well.
Nothing further from me - I'm satisfied on my side. One thing I'd put to @imran-siddique rather than to you, since it came out How to continue is Imran's call. Happy to pick up any of the follow-up work |
imran-siddique
left a comment
There was a problem hiding this comment.
The substantive compatibility and assurance-model revisions are now present. One blocker remains after #175 landed: this RFC declares itself informative but line 280 carries its only uppercase RFC 2119 MUST. Please lowercase that statement (or move a binding requirement into the normative spec through the spec-change process). On the next branch update, the new repository guard will enforce this distinction mechanically.
913b8b7 to
24bed3a
Compare
|
imran-siddique
left a comment
There was a problem hiding this comment.
All prior assurance-model and compatibility findings are addressed on the current head. The RFC now separates computation soundness from zero-knowledge privacy, requires same-values and request-context binding, treats TEE/ZK as orthogonal mechanisms, acknowledges the required conformance-model follow-up, and requires a distinct future EAT profile under the current closed-schema/versioning rules. It remains informative: the repository keyword audit finds no uppercase RFC 2119 requirements. Local evidence: python -m pytest -q -> 339 passed, 1 skipped. Approved.
8380993 ("unhide ten pages", 2026-08-19) added ten nav entries, one of them docs/rfcs/composable-zk-assurance.md, which had landed in agentrust-io#162 three days earlier without one. agentrust-io#184 merged four days after that sweep and did not touch mkdocs.yml, so docs/rfcs/a2a-delegation-profile.md is the eleventh page in the same state. Nothing in agentrust-io#184's description, comments or reviews mentions the nav. It is not unreachable — CHANGELOG.md links it, examples/delegation-link/README.md links it, it is in sitemap.xml, and the search index carries 13 entries. What it has no path from is the navigation. Measured by reproducing the deployed build rather than a local one: .docs_build assembled as docs.yml assembles it, the same sed applied to docs_dir, --strict added. baseline rc=0, no warnings; 2 pages link to it (CHANGELOG, and itself) with nav rc=0, no warnings; 49 pages link to it (all of them, via the sidebar) The RFC's page grows 87KB -> 93KB from the sidebar; its rendered <article> is byte-identical across the two builds (sha256 4d5b3cf2d6e94551, 35201 chars). sitemap.xml and the search index are identical in both. llms.txt is untouched by design: the llmstxt plugin takes an explicit sections list that names no RFC at all. Signed-off-by: Louielunz <48041247+lywinged@users.noreply.github.com>
47 nav entries, 48 built pages. docs/rfcs/a2a-delegation-profile.md is the page they do not cover. The same fix has been applied once already: 8380993 ("Adopt-the-shared-design-system-and-unhide-ten-pages", 2026-08-19) added ten nav entries, one of them docs/rfcs/composable-zk-assurance.md, which had landed in agentrust-io#162 three days earlier without one. agentrust-io#184 merged four days after that sweep and did not touch mkdocs.yml. Nothing in agentrust-io#184's description, comments or reviews mentions the nav. It is not unreachable — CHANGELOG.md links it, examples/delegation-link/README.md links it, it is in sitemap.xml, and the search index carries 13 entries. What it has no path from is the navigation. Measured by reproducing the deployed build rather than a local one: .docs_build assembled the way docs.yml assembles it, the same sed applied to docs_dir, --strict added. baseline rc=0, no warnings; 2 pages link to it (CHANGELOG, and itself) with nav rc=0, no warnings; 49 pages link to it (all of them, via the sidebar) Nothing else moves. 49 files differ, none added, none removed, no page loses a link. 48 gain exactly one — the sidebar entry. The forty-ninth is the RFC's own page, +17: its table of contents, which the theme renders only for a page it navigates to. The rendered <article> is byte-identical across both builds (sha256 4d5b3cf2d6e94551, 35201 chars); sitemap.xml and the search index are identical in both. llms.txt is untouched by design: the llmstxt plugin takes an explicit sections list that names no RFC at all. Signed-off-by: Louielunz <48041247+lywinged@users.noreply.github.com>
47 nav entries, 48 built pages. docs/rfcs/a2a-delegation-profile.md is the page they do not cover. The same fix has been applied once already: 8380993 ("Adopt-the-shared-design-system-and-unhide-ten-pages", 2026-08-19) added ten nav entries, one of them docs/rfcs/composable-zk-assurance.md, which had landed in #162 three days earlier without one. #184 merged four days after that sweep and did not touch mkdocs.yml. Nothing in #184's description, comments or reviews mentions the nav. It is not unreachable — CHANGELOG.md links it, examples/delegation-link/README.md links it, it is in sitemap.xml, and the search index carries 13 entries. What it has no path from is the navigation. Measured by reproducing the deployed build rather than a local one: .docs_build assembled the way docs.yml assembles it, the same sed applied to docs_dir, --strict added. baseline rc=0, no warnings; 2 pages link to it (CHANGELOG, and itself) with nav rc=0, no warnings; 49 pages link to it (all of them, via the sidebar) Nothing else moves. 49 files differ, none added, none removed, no page loses a link. 48 gain exactly one — the sidebar entry. The forty-ninth is the RFC's own page, +17: its table of contents, which the theme renders only for a page it navigates to. The rendered <article> is byte-identical across both builds (sha256 4d5b3cf2d6e94551, 35201 chars); sitemap.xml and the search index are identical in both. llms.txt is untouched by design: the llmstxt plugin takes an explicit sections list that names no RFC at all. Signed-off-by: Louielunz <48041247+lywinged@users.noreply.github.com>
What this changes
Adds an informative RFC proposing composable zero-knowledge proofs for TRACE.
The RFC describes ZK and TEE as peer assurance mechanisms that provide different properties and can be used independently or composed depending on the required security, privacy, verification and deployment properties.
In particular, the RFC covers:
The proposal is proof-system neutral and does not require a specific ZK proving system.
This PR is intentionally informative. It does not modify the TRACE wire format, schema, existing trust levels or conformance requirements. Follow-up changes can define normative fields and verification requirements after the assurance model is agreed.
Relates to #161
Type of change
Spec section
No normative section of
spec/trace-v0.2.mdis modified by this PR.The RFC is relevant to the specification's trust and verification model and proposes an assurance model that can inform future normative changes related to ZK evidence and its composition with existing TEE-backed TRACE evidence.
Checklist
git commit -s)CHANGELOG.mdupdated (for any normative change)<!-- CHANGED: #NNN — description -->in spec textThis PR is informative and non-breaking, so no
CHANGELOG.mdupdate, breaking-change marker or breaking-change compatibility statement is required.