Conversation
Pre-fills a conformance mapping for Signet (Prismer-AI/signet) as a
template the maintainer can confirm, correct, or extend. Avoids
blocking conformance on a cold start from zero.
Populated from the public Signet source at
crates/signet-core/src/{receipt.rs, canonical.rs, sign.rs}:
- FIELD-MAPPING.md: Signet -> draft-02 field-by-field mapping with
[CONFIRM] / [FILL] markers on each inferred entry.
- DEVIATIONS.md: four documented wire-format deltas (envelope shape,
signature prefix, chain linkage by ID vs hash, key identifier
format) with adapter guidance for each.
- ADAPTER.md: pseudocode sketch of a thin Signet -> draft-02 shim in
co-signer mode, plus open questions for the maintainer.
- README.md: what is here and what the maintainer needs to do to
turn this template into a conformance claim.
Updates IMPLEMENTATIONS.md: Signet row moves from "Under review" to
"Self-certification template staged" with a pointer to the template
directory.
Context: microsoft/agent-governance-toolkit#1201 (Tutorial 33 cross-
implementation table addition) triggered the conformance conversation
with @willamhou. The template is an artifact that lowers Signet-side
activation energy from "design a mapping from scratch" to "confirm or
correct a pre-filled mapping."
|
Thanks @tomjwxf — this is an extraordinary template. Resolving all markers below. FIELD-MAPPING.md — [CONFIRM] / [FILL] Responses
pub struct Authorization {
pub chain: Vec<DelegationToken>, // for storage/transfer
pub chain_hash: String, // "sha256:<hex>" of JCS(chain)
pub root_pubkey: String, // must match chain[0].delegator.pubkey
}Important: only Each
pub struct PolicyAttestation {
pub policy_hash: String, // "sha256:<hex>" of JCS(policy)
pub policy_name: String, // e.g. "production-agents"
pub matched_rules: Vec<String>, // rule names that matched
pub decision: RuleAction, // allow | deny | require_approval
pub reason: String, // human-readable
}Mapping:
Decision enum — Three values: DEVIATIONS.md — Maintainer PreferenceDeviation 3 (chain linkage): Option 2 — add ADAPTER.md — Open QuestionsQ1: Feature flag. Q2: Q3: Operator private key accessible at adapter site. Co-signer mode is the right default. ADAPTER.md — CorrectionThe pseudocode uses Happy to push commits directly to this branch, drop fixture receipts, or iterate on any of the above. This is clean work — appreciate you reading the source. |
|
Thanks @willamhou - Really appreciate the thoughtful review. The level of detail (source file references, full struct definitions, verifier-behaviour notes on exp and nonce) is beyond what my inital template deserved! Will push a commit to this branch incorporating all your answers (co-authored by you), then merge. Specifically: Flagging your aeoess/agent-governance-vocabulary#37 crosswalk in the Veritas Acta tracker too, with a note. On the Signet-side follow-ups (point release with parent_hash, --emit-draft02 flag, adapter crate): no rush from this side. Whenever you ship, we'll cross-reference. If I can help, lmk! Thanks again. |
Incorporates @willamhou's review of #1, which resolved every [CONFIRM] / [FILL] marker in the original template with production-source-level detail (struct definitions, source-file line references, verifier-behaviour notes on `exp` and `nonce`, and correction of inferred mappings that did not match reality). FIELD-MAPPING.md: - All markers resolved. - signer.owner reclassified from inferred holder_binding mapping to informational metadata only (confirmed by maintainer: not a cryptographic identity; multi-level authority lives in Authorization). - exp reclassified from "soft hint" to hard verification gate (verify() rejects expired; verify_allow_expired() exists for forensic contexts); adapter drops or carries as informational. - nonce reclassified from inferred nullifier mapping to 128-bit OsRng freshness token; not a VOPRF artifact; adapter carries as Signet-specific extension or omits. - authorization struct expanded with full Rust definition provided by the maintainer: chain + chain_hash + root_pubkey; only chain_hash and root_pubkey enter signature scope. - policy (PolicyAttestation) struct expanded with full Rust definition: policy_hash/policy_name/matched_rules/decision/reason. Mapping to draft-02: policy_hash → policy_digest, policy_name → policy_id, decision → decision; matched_rules and reason mapped to a suggested attestation_evidence extension. - Decision enum confirmed as {allow, deny, require_approval}, all direct-match draft-02. DEVIATIONS.md: - Deviation 3 (chain linkage by ID vs hash) resolved per maintainer preference: Option 2 (additive parent_hash alongside parent_receipt_id) in an upcoming Signet point release. ADAPTER.md: - Fix wrong PolicyAttestation field names in the pseudocode (policy_name / policy_hash, not id / digest) per maintainer catch. - Expand Authorization mapping to reflect chain_hash + root_pubkey as the signature-scope fields. - Replace "Open questions for the Signet maintainer" with the answered section: co-signer via `signet sign --emit-draft02`; in-workspace signet-draft02-adapter crate; operator key accessible at adapter site; co-signer mode is the default. README.md (conformance/signet/): - Lead with maintainer-confirmed status. - List Signet-side follow-ups (parent_hash field, --emit-draft02 flag, signet-draft02-adapter crate) in flight. - Cross-link maintainer's parallel crosswalk at aeoess/agent-governance-vocabulary#37. IMPLEMENTATIONS.md: - Signet row moves from "Self-certification template staged" to "Self-certified (adapter crate pending)". - Add pointers to the agt-integration-profile review PR and the aeoess vocabulary crosswalk. Co-Authored-By: Will.hou <8574759+willamhou@users.noreply.github.com>
Formalizes the template-based self-certification pattern that landed via Signet (PR #1): maintainers pre-fill a conformance directory with everything inferrable from public source, the implementer confirms markers + resolves FILL entries, merge and add to draft-02 appendix. Intent: reduce implementer activation energy from 'design a mapping from scratch' to 'confirm, correct, or extend a pre-filled mapping'. The Signet self-certification demonstrated this pattern works; this commit codifies it so the next implementer doesn't need anyone to pre-fill their template one-off. Covers: - Self-certification workflow (4 steps: open issue, maintainer pre-fills, implementer confirms, merge + appendix entry) - What self-certified means and doesn't mean - Alternative contribution paths (corrections, test vectors, consumer-only listings) - conformance/ directory layout with Signet as canonical example - Commit conventions (Conventional Commits + Co-Authored-By on incorporated review content) - Normative source references
Summary
Adds a pre-filled Signet conformance template under
conformance/signet/and updates the Signet row inIMPLEMENTATIONS.mdfrom "Under review" to "Self-certification template staged".Intent: lower @willamhou / Signet-maintainer activation energy from "design a conformance mapping from scratch" to "confirm, correct, or extend a pre-filled mapping."
What's in the template
conformance/signet/FIELD-MAPPING.md- Signet receipt fields mapped onto draft-farley-acta-signed-receipts-02 fields. Pre-populated from the public Signet source at crates/signet-core/src/.[CONFIRM]/[FILL]markers flag each inferred entry that needs maintainer sign-off.conformance/signet/DEVIATIONS.md- Four documented wire-format deltas that are adapter-addressable but not structural conformance blockers:{payload, signature}splited25519:<base64>vs<base64url>+algfieldparent_receipt_id(by ID) vspreviousReceiptHash(by hash of canonical envelope)signer.pubkeyin body vssignature.kid(JWK thumbprint) + external key discoveryconformance/signet/ADAPTER.md- Pseudocode sketch of a thin Signet -> draft-02 shim in co-signer mode. Includes open questions for the maintainer (live in Signet repo? out-of-tree crate? operator key-custody).conformance/signet/README.md- What's here and what the maintainer needs to do to turn this into a filed conformance claim.What this template is NOT
[CONFIRM]/[FILL]markers.ADAPTER.mdis pseudocode, not code.What triggered this
Thread on microsoft/agent-governance-toolkit#1201. Signet shares the same crypto primitives with draft-02 (JCS RFC 8785 canonicalization, Ed25519, SHA-256 hashing). The wire-format gap is isolated to field naming and encoding conventions. Template is the fastest way to confirm whether semantic conformance holds.
Next steps
This PR is a staging artifact - happy to hold it open for @willamhou to review, comment on, or push commits into. Once the maintainer signs off on the mapping (or counter-proposes where the inference is wrong), I will merge, update
IMPLEMENTATIONS.mdto "Self-certified", and add a Signet entry to the draft-farley-acta-signed-receipts-02 Implementation Status appendix.If an adapter implementation happens in parallel, that lives in its own PR.
Cc @willamhou - this is your canvas; please edit freely or tell me what I got wrong on the inferences.