Repository navigation
docs(specs): AID-EMIT-1 1.2.0-draft: aid.* replaces cpex.*, cmf.* kept, full RFC 8785 - #603
Merged
Merged
Conversation
…t, full RFC 8785 The praxis maintainers asked that the OCSF audit sink's unmapped keys not carry the name of an engine it is not (praxis-proxy/policy #171). The reference emitter's home is now the in-tree praxis port, and the first release that ships these records to a consumer is its 0.5.0, so the rename happens before any consumer keys on the old names. - Section 1.1 defines two prefixes: aid.* for the facts this format owns (stream, decision, span, taint.input_labels, content) and cmf.* for the Common Message Format gap fields and join key, which CMF hosts share. cpex.* is retired: emitters must not produce it, verifiers may read it as the aid member of the same name. - Section 1.2 is the member table with the host-prefix rules, replacing the two-vocabulary design; aid.<host>.* stays for hosts without CMF. - Section 4 widens the value space to the whole of RFC 8785: UTF-16 key order, ES6 floats, exact integers (the epoch exceeds 2^53), with the pre-1.2.0 ASCII-and-integers constraint withdrawn. - Sections 7, 8, 9 use the aid names; section 12 lists all three vectors and says where the aid vectors live; section 13 records why the 1.x line is kept for a wire-name change. - scripts/aid_emit1_validator.py canonicalizes with a full RFC 8785 implementation, reads aid.stream first and warns W-VOCAB-RETIRED on the retired name. The existing cpex vectors still validate, the signed dispatch vector included, and the Appendix B number vectors pass. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012BUhZ4ZG5jedf9ku6KuxNp
Levaj2000
marked this pull request as ready for review
October 12, 2026 22:42
Levaj2000
added a commit
that referenced
this pull request
Oct 13, 2026
…T-1 1.2.0 (#604) The #600 drafts were written against the two-vocabulary proposal (aid.* for AI Identity emitters, cpex.* for the CPEX family) that #603 replaced: 1.2.0 retires cpex.* for every emitter and widens the section 4 value space to the whole of RFC 8785. aid-emit-py.md: implements 1.2.0-draft; section 4.1 is now the section 1.2 member table with no vocabulary option (LiteLLM, a non-CMF host, writes aid.request_id and aid.litellm.*); the value-space check rejects only what JSON cannot carry; the in-tree canonicalizer is a full RFC 8785, ported from the validator, since sorted json.dumps no longer matches and the rfc8785 package rejects the stream epoch; the T1 note says the dispatch vector is unchanged by the rename; finding 2 is settled the other way by 1.2.0. litellm-aid-emit.md: field names per 1.2.0 section 1.2; the decision bullet records that 1.2.0 settled it. Docs only.
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.
Spec and validator revision requested by the praxis maintainers on praxis-proxy/policy#171: the OCSF audit sink's
unmappedkeys should not carry the name of an engine it is not. Sequence agreed with terylt: this document first, then the validator, then the rename in praxis, then the praxis pin moves to this commit on main.Spec (
docs/specs/aid-emit-1.md)aid.*is the format's own:aid.stream,aid.decision,aid.span,aid.taint.input_labels,aid.content.cmf.*stays for the Common Message Format gap fields and the join key, since CMF is a message format shared across hosts, not a product. It explains why a draft renames pinned strings: the reference emitter's home is now the in-tree praxis port, and praxis 0.5.0 is the first release to ship these records, so no consumer has keyed oncpex.*.cpex.*is retired: emitters must not produce it, verifiers may read it as theaidmember of the same name.aid.<host>.*remains for hosts that do not speak CMF (the LiteLLM adapter), and the join key iscmf.request.request_idon CMF hosts andaid.request_idelsewhere.aidnames. Section 12 lists all three vectors (the provenance vector was missing from the list) and says where theaidvectors live. Section 13 records why the 1.x line is kept for a wire-name change.Validator (
scripts/aid_emit1_validator.py)E-JCS-NUMBER.E-JCS-SPACEis gone with the constraint it enforced.aid.streamfirst and warnsW-VOCAB-RETIREDwhen stamps sit under the retiredcpex.stream.Verified
integrations/cpex-ocsf-audit/still pass through the new canonicalizer, including both DSSE signatures in the dispatch vector against the demo public key: 0 errors.aidnames: 0 errors.1e21cases from the praxis review.ruff checkandruff format --checkclean; added text is plain ASCII.Not in this PR
integrations/cpex-ocsf-audit/and itspraxis-port/patches still carry thecpexnames and the pre-1.2.0 vectors. Section 12 says so; syncing that copy from the praxis tree is a separate change.docs/specs/aid-emit-py.mdandlitellm-aid-emit.mdstill describecpexas a selectable vocabulary; they are design drafts and can follow.🤖 Generated with Claude Code
https://claude.ai/code/session_012BUhZ4ZG5jedf9ku6KuxNp
Generated by Claude Code