Skip to content

Add two-sided authority-decision evidence binding vectors - #5

Merged
wowlegend merged 2 commits into
tersignhq:mainfrom
mohammedmessaoudene-cmd:codex/authority-decision-evidence-vectors
Aug 11, 2026
Merged

wowlegend merged 2 commits into
tersignhq:mainfrom
mohammedmessaoudene-cmd:codex/authority-decision-evidence-vectors

Conversation

@mohammedmessaoudene-cmd

@mohammedmessaoudene-cmd mohammedmessaoudene-cmd commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Property

A protected record presented as evidence of an authority decision must commit to
the exact canonical decision-evidence object it represents. The structural rule
tested here is deliberately narrow: a missing commitment rejects, a commitment
to the presented object accepts, and substitution of a distinct object rejects.

This adds the separate decision_evidence_binding kind while reusing the existing
binding_reject reason and a private binding-arithmetic helper. offer_binding
continues to describe accepted payment terms; boundary_binding continues to
describe prefix, position and coverage. Their existing vectors, verdicts, reasons
and Python diagnostics remain unchanged.

Vectors

  • n27 exercises only the missing-commitment branch: no
    decisionEvidenceDigest is present, so the presented decision evidence is
    unbound and rejects;
  • p19 carries the positive half of the executable A/B contrast: the record
    commits to reduction A and A is presented;
  • n28 carries the substitution half: the record commits to reduction A while
    reduction B is presented.

The suite's Keccak-256/JCS instantiation and illustrative
decisionEvidenceDigest location are local test-profile choices. They do not
prescribe an MCP or AUEC field, digest, canonicalization, or extension shape.
This structural check does not validate the authority intersection, authenticate
the producer, prove policy correctness, establish historical position or
uniqueness, or constitute semantic or independent validation.

Executed validation

  • current PR head: 2f6bef0dc531ce9e1a8ae1dc3cef6704ec2b5df5;
  • correction applied to exact prior PR head:
    c23a985c51b99cf8ec71aebf5af9f53aa34747cc;
  • authenticated correction patch SHA-256:
    a41b5c96c9804be55c02696d775634a3329e3186892c190bd82ab98fa11846a5;
  • resulting tree: 08890c3483b3e8dfee9e2fc9bb385414497c9112;
  • five files changed; zero verifier/engine files changed;
  • Python: 47/47;
  • separate TypeScript-stack cross-check: 47/47;
  • direct Python/TypeScript differential: 299 cases (252 off-corpus), zero
    divergences;
  • hostile decision-binding parity: 24/24;
  • deterministic regeneration: 47 vectors plus MANIFEST.json, 48 artifacts
    byte-identical;
  • all 46 non-n27 vector files relative to the prior PR head are unchanged,
    including the load-bearing p19/n28 pair;
  • git diff --check: pass.

These are local/AUEC-Codex-controlled execution results. They are not external
CI, third-party review, merge approval, or independent validation. The current
external workflow run is 31337102263:
action_required with zero jobs pending maintainer approval.

I also cross-ran the exact Git blobs for existing Tersign vectors p18, n25
and n26 through a documented AUEC adapter without changing their expectations:
3/3. Those fixtures are third-party-authored; the adapter execution remains
AUEC/Codex-controlled and is not independent validation.

Origin and traceability: CG-DELTA-LOSS-01 in
MCP SEP-3004,
followed by the direct vector invitation in
this comment.
AUEC's implementation remains experimental, draft-aligned and non-conformant in
AUEC PR #2.

Disclosure

OpenAI ChatGPT and Codex assisted with implementation, testing, analysis and
drafting. Mohammed Messaoudene reviewed the executed evidence and remains
responsible for the contribution.

Remove the unused counterfactual object from n27 and narrow the documentation:
n27 covers the missing-commitment branch, while p19/n28 carry the executable
A/B substitution contrast. Also state that Keccak/JCS is local to this suite.
@wowlegend
wowlegend marked this pull request as ready for review August 11, 2026 10:52
@wowlegend
wowlegend merged commit 7963208 into tersignhq:main Aug 11, 2026
2 checks passed
@wowlegend

Copy link
Copy Markdown
Contributor

Merged at 7963208. Review notes, for the record:

  • Everything in the "Executed validation" section was re-run independently before merging: verify.py 47/47 with both verdicts and the full closure (10 reasons, 10 kinds), the TypeScript cross-check 47/47, tools/differential.py 299 cases (252 off-corpus) with zero divergences, and byte-identical regeneration from tools/gen_vectors.py. Every number in the PR body reproduced exactly.
  • The offer_binding refactor onto the shared helper is verdict-identical and diagnostic-identical on every path — including the KeyError('offer') detail string reproduced via the _MISSING sentinel. Checked line by line.
  • offer=absent-with-null-commitment is a genuinely good trap: a future .get() refactor that turns key absence into canonical null would silently accept, and nothing else in the corpus would have caught it.
  • Reusing binding_reject rather than minting a new reason is the right call: it is the same commitment arithmetic, and the kind carries the semantics. The pinned closure moves to 10 kinds, so a fork that drops the class goes red.

Thanks for bringing CG-DELTA-LOSS-01 here as an executable A/B contrast rather than prose — that is exactly what this suite is for.

@mohammedmessaoudene-cmd

Copy link
Copy Markdown
Contributor Author

Thank you for authorizing the workflow, rerunning and reviewing the contribution, and merging it.

I authenticated workflow 31337102263, attempt 2: both conformance and cross-implementation completed successfully before merge. The official logs record a 47-vector Python conformance pass, 47/47 cross-implementation agreement, 299 differential cases (252 off-corpus) with zero divergences, and byte-identical regeneration. Your review separately reports the independent rerun and diagnostic checks.

Immutable AUEC receipt: https://github.com/mohammedmessaoudene-cmd/AUEC/blob/3cabb79e2a9c84db2dd256b64c97134c385d187d/evidence/upstream/tersign/ci-review-merge-receipt.json

I am recording this as external CI, maintainer-reported rerun/review, and external merge for the narrow structural decision_evidence_binding property. It does not validate AUEC semantics, producer truth, or MCP field placement or adoption.

AI-assistance disclosure: ChatGPT and Codex assisted with verification and drafting. I reviewed the evidence and remain responsible.

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.

2 participants