docs(lab): CL-10 public evidence contract - #1510
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Deterministic PR hygiene checks passed. |
Ingwannu
left a comment
There was a problem hiding this comment.
Contract review on exact head e07ea0949ad528c9b4de3d1c6469cf7852d0339d against current dev@cbbfdd877.
The overall privacy/trust direction is conservative and valuable: public export is an allowlist-only projection, private route dimensions make evidence non-exportable instead of being silently generalized, local identifiers and arbitrary diagnostics are excluded, signatures prove integrity/continuity rather than truth, explicit consent is required, community evidence remains non-authoritative, and remote publishing is blocked on a later fixed-origin service contract. I found no runtime behavior change because this PR changes documentation only, and exact-head docs/hygiene CI is green.
I am not approving the contract yet because two normative boundaries need to be made exact before implementation starts:
-
Canonicalization and signature domain are underspecified. The contract names deterministic canonical bytes and Ed25519 signatures, but it does not freeze a concrete canonicalization algorithm/encoding or state whether
bundleDigestandsignatureare excluded from the signed payload. It also does not freeze domain-separation bytes and verification order. Different serializers could produce incompatible or ambiguously self-referential bundles. Define one exact byte contract (for example, a named canonical JSON profile with UTF-8, integer/string rules, object-key ordering, and duplicate-key rejection), the exact preimage forbundleDigest, the exact signature preimage/domain tag, and the validation order. -
Revocation trust needs an anti-substitution rule. “The same publisher key” is necessary but not sufficient if an importer accepts a valid signed revocation whose publisher identity or target IDs are not bound to the original imported bundle's verified signer and schema domain. Require the revocation preimage to include a dedicated domain tag, schema/version, publisher key identity, target bundle/record IDs, and issued day; importers must apply it only when the verified key exactly matches the target bundle's verified publisher key. Also define deterministic conflict/replay handling for repeated or contradictory revocations.
Please update both the normative CL-10 contract and the shorter design summary so they do not diverge. After those byte-level and revocation bindings are explicit, this remains a strong contract candidate. This comment does not authorize runtime export/publish/import implementation or remote service selection.
Summary
Defines the CL-10 contract for public Compatibility Lab evidence export, publishing, and community trust.
This is the final planned Compatibility Lab phase after merged CL-09.
Base
dev:4fed8d3fe431ad23be83f3aff2af18ef8b8ecd71feat/cl-10-public-evidence-contractScope
Contract/design only. No runtime export, upload, remote fetch, signing-key creation, community cache, API, CLI, or UI implementation is included or authorized by this PR alone.
The contract freezes:
PublicEvidenceBundleV1export schemapublic_exportartifact policy plus second-pass privacy scanningcommunity_untrusted_v1trust semantics for imported evidenceChosen architecture
Delivery sequence after contract acceptance
Files
devlog/_plan/260807_compatibility_lab/010_cl10_public_evidence_export.mddocs/superpowers/specs/2026-08-12-cl10-public-evidence-design.mdReview focus
Please review this primarily as a privacy/trust boundary, not as a product-surface proposal.
Key questions:
Validation
Contract PR minimum:
devDo not merge based only on the contract draft. Runtime CL-10 implementation starts only after independent contract acceptance.