Skip to content

docs(aid-emit-1): note the self-describing content digest form (1.1.1) - #585

Merged
Levaj2000 merged 2 commits into
mainfrom
claude/blissful-maxwell-gnw45t
Oct 1, 2026
Merged

Levaj2000 merged 2 commits into
mainfrom
claude/blissful-maxwell-gnw45t

Conversation

@Levaj2000

@Levaj2000 Levaj2000 commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Why

#584 moved the OCSF audit plugin onto the keyed content digest praxis-proxy/policy#84 now records, and noted that AID-EMIT-1 pins no digest scheme under cpex.content. That is still true, and it is the right rule, but a verifier reading a record should not have to discover from the reference implementation what the two forms mean and when they are comparable. This writes it down.

What

  • docs/specs/aid-emit-1.md, section 9.2: an informative paragraph on unmapped."cpex.content". Both members are the host's values, opaque strings inside the hashed bytes; the emitter defines no scheme and a verifier MUST NOT require one or recompute either value. The two self-describing forms are named: hmac-sha256:<key_id>:<hex> (feat(audit): decision and effect auditing praxis-proxy/policy#84 at 2d717e8 and later, keyed under a deployment secret the sink never sees, comparable only under one key id) and sha256:<hex> (cpex, feat: first-class decision & effect auditing (the audit seam) contextforge-org/cpex#166, and PPE under its explicit unkeyed setting, with the caveat that an unkeyed digest of redacted content is guessable). A null output_hash means nothing was digested, never "unchanged". The committed vectors do not enable provenance.
  • Section 13: the patch is recorded. Version 1.1.1-draft, date 2026-10-01.

Informative text only. No covered byte, vocabulary, or vector changes, so no verifier or emitter change follows from it.

Generated with Claude Code

https://claude.ai/code/session_019BKU46zuw1Yu8E8yBQj4DP

Levaj2000 and others added 2 commits October 1, 2026 19:54
An informative note in section 9.2 on unmapped."cpex.content": the two
members, input_hash and output_hash, are the host's values carried as
opaque strings inside the hashed bytes, and the emitter defines no digest
scheme. The form self-describes: hmac-sha256:<key_id>:<hex> for the keyed
digest praxis-proxy/policy PR #84 (2d717e8 and later) records under a
deployment secret the sink never sees, with key ids that make digests
comparable only under one key; sha256:<hex> for the unkeyed digest cpex
PR #166 records and PPE records under its explicit unkeyed setting, with
the caveat that an unkeyed digest of redacted content is guessable. A
verifier must not require a scheme, recompute either value, or read a
null output_hash as "unchanged". The committed vectors do not enable
provenance, so no vector changes.

Patch bump to 1.1.1-draft, recorded in section 13; no covered byte
changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019BKU46zuw1Yu8E8yBQj4DP
@Levaj2000
Levaj2000 marked this pull request as ready for review October 1, 2026 19:58
@Levaj2000
Levaj2000 merged commit 4b15b38 into main Oct 1, 2026
9 checks passed
@Levaj2000
Levaj2000 deleted the claude/blissful-maxwell-gnw45t branch October 1, 2026 19:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant