AI Initiative logoAI Initiative
Reading room / Manthan

D-311 — Signature-scope string unification

D-311 — Signature-scope string unification. Covers The inconsistency; Why underscored identifiers win; Naming change, not just spelling; Fix applied.

Historical audit / evidence record
This is the retained source text, not a new validation of its claims. Numerical results and comparative claims require the accompanying source review before public reuse.

Read the connected case study or article →

Not explicitly stated in source · Date not established

Provenance, authorship and editorial notes

D-311 — Signature-scope string unification

Id

manthan-herald-protocol-audits-scope-string-fix

Project

Manthan

Source path

manthan/herald-protocol/audits/scope-string-fix.md

Source sha256

d8394571953f7dc83ca43bbc85b29c4c4f2c7caf837d71e2d9843d125667203c

Local copy sha256

d8394571953f7dc83ca43bbc85b29c4c4f2c7caf837d71e2d9843d125667203c

Repo head

3a94084024a3434cef331fecac91c2c3b43f0313

Date
Not recorded
Date basis

Original publication date not established; Git revision date retained separately.

Author

Not explicitly stated in source

Author basis

Unknown; Git committer not substituted for document author.

Last source commit

8b75d1b0157c20a0a463f0e31008ef9f73099beb

Last source commit date

2026-06-08T07:40:14Z

Document status

Historical audit / evidence record

Summary

D-311 — Signature-scope string unification. Covers The inconsistency; Why underscored identifiers win; Naming change, not just spelling; Fix applied.

Topics
  • Adversarial review and case studies
  • The inconsistency
  • Why underscored identifiers win
  • Naming change, not just spelling
Theme

Adversarial review and case studies

Priority

reference

Related ids
  • manthan-herald-protocol-audits-manthan-cohort1-postmortem
Evidence concerns
  • Recovered source text is preserved verbatim. Assertions, comparisons, commands and results belong to its original context; they were not re-executed or externally re-verified during this corpus review.
  • Historical record: current deployment, task completion and test status must not be inferred from this date-bound document.
Word count

969

Bytes

7709

Source relative

herald-protocol/audits/scope-string-fix.md

Remote mirror

manthan/herald-protocol/audits/scope-string-fix.md

Full text preserved

True

D-311 — Signature-scope string unification

Decision: underscored identifiers are canonical (tool_sandbox, conduit_receipt, human_approval, herald_endorsement). SPEC §3.4 had drifted to a hyphenated, partly-misnamed list (tool-sandbox, conduit-receipt, human-approval, herald-lineage). EXT §6.1 is and remains the canonical scope registry. SPEC and THREATS prose are now aligned.


The inconsistency

Two places in the canon enumerated the signature-scope set:

1. SPEC §3.4 (line 186) — pre-fix:
tool-sandbox, conduit-receipt, human-approval, herald-lineage.
2. EXT §6.1 (lines 414–424) — canonical, unchanged:
origin, tool_sandbox, conduit_receipt, human_approval, herald_endorsement.

Plus two occurrences in THREATS.md (lines 268 and 596 — the residual-risk and consolidated-recommendations lists) using SPEC's hyphenated form, and one quoted policy label in SPEC §3.4 (line 190) ("human-approved") that was easy to mis-read as a literal scope value.

Worker-B (T-012) flagged this as F-4 in their submission notes.

Why underscored identifiers win

EXT §6.1 is the formal registry section. It is the source for:

Everywhere else in EXT and SPEC, multi-token identifiers use underscores: conduit_receipt, audit_sth, lineage_endorsement, capability_manifest, trace_parent, model_hash. CBOR map keys are text strings (SPEC §3.5) and the underscore convention is uniform.

The hyphenated SPEC §3.4 list was therefore the outlier. Its position in a non-normative recap paragraph (pointing forward to EXT §6) makes it a typo rather than a competing convention.

Naming change, not just spelling

herald-lineage (old SPEC) → herald_endorsement (canonical) is a name change, not just punctuation. EXT §6.1 line 422 explains why: a Herald can endorse any envelope claim, with lineage being only one example ("e.g. lineage"). The general scope name is more accurate than the lineage-specific one. Toolchains that already implemented herald-lineage from the SPEC must update both the spelling and the noun.

Fix applied

SPEC.md changes (2 lines)

Line 186 (the scope enumeration):

- - Subsequent signatures MAY come from: tool sandboxes (`scope: "tool-sandbox"`), conduits (`scope: "conduit-receipt"`), humans-in-the-loop (`scope: "human-approval"`), Heralds (`scope: "herald-lineage"`).
+ - Subsequent signatures MAY come from: tool sandboxes (`scope: "tool_sandbox"`), conduits (`scope: "conduit_receipt"`), humans-in-the-loop (`scope: "human_approval"`), Heralds (`scope: "herald_endorsement"`). See [EXT §6.1] for the full scope registry; underscored identifiers are canonical.

Line 190 (the policy-label example, ambiguous as quoted):

- - An envelope is `valid` only if the origin signature verifies AND every signature an application's policy *requires* (e.g. "human-approved") verifies. ...
+ - An envelope is `valid` only if the origin signature verifies AND every signature an application's policy *requires* (e.g. a `scope: "human_approval"` signature) verifies. ...

THREATS.md changes (2 lines)

Line 268 (residual-risk list):

- ... a per-signature `scope` field in addition (origin, tool-sandbox, conduit-receipt, human-approval, herald-lineage) so verifiers refuse to treat scopes as interchangeable [EXT §3.4 / recommendation 11]. A captured tool-sandbox key without ...
+ ... a per-signature `scope` field in addition (`origin`, `tool_sandbox`, `conduit_receipt`, `human_approval`, `herald_endorsement`) so verifiers refuse to treat scopes as interchangeable [EXT §6.1]. A captured `tool_sandbox` key without ...

(Citation also updated: [EXT §3.4 / recommendation 11] → [EXT §6.1] since the actual registry now lives in §6.1.)

Line 596 (consolidated-recommendations item 18):

- 18. **Per-signature `scope` field (origin, tool-sandbox, conduit-receipt, human-approval, herald-lineage).** ...
+ 18. **Per-signature `scope` field (`origin`, `tool_sandbox`, `conduit_receipt`, `human_approval`, `herald_endorsement`).** ...

EXT.md

No changes. EXT §6.1 was already canonical.

CHARTER.md

No scope-string references. Untouched.

Out-of-scope: English-compound prose

Five hits in THREATS.md remain hyphenated:

These are English-compound noun-phrase usage ("the receipt issued by a conduit"), not the literal scope-identifier value. EXT.md style for prose uses "conduit receipt" (no hyphen, no underscore — see EXT §5.5 heading "Mandatory conduit receipts on state-transition envelopes"). A future copy-edit pass over THREATS could normalise prose-style to match EXT (drop the hyphen), but that's stylistic, not a correctness fix. Out of scope for D-311.

Verification

$ grep -nE '\b(tool|conduit|human|herald)-(sandbox|receipt|approval|lineage)\b' SPEC.md EXT.md CHARTER.md THREATS.md
THREATS.md:42:  ... conduit-receipt timestamp on `birth`/...        # English compound
THREATS.md:46:  ... requires conduit-receipt for non-repudiation... # English compound
THREATS.md:296: ... unless a conduit-receipt is used...             # English compound
THREATS.md:298: ... a conduit-receipt timestamp on every envelope...# English compound
THREATS.md:595: ... Mandatory conduit-receipt timestamps on...      # English compound
# (no scope-identifier hits remain)

$ grep -cE '\btool_sandbox\b|\bconduit_receipt\b|\bhuman_approval\b|\bherald_endorsement\b' SPEC.md EXT.md THREATS.md
SPEC.md:5
THREATS.md:3
EXT.md:15

All identifier-form hits are now underscored and consistent.

Implications for downstream work

Closes

Future maintenance

If a new scope is added to the registry (EXT §6.1), it MUST use the same convention: lowercase, underscore-separated, single-token nouns or short noun-phrases. No hyphens, no camelCase, no dots (dots are reserved for the domain-separation-tag namespace, e.g. herald.sig.sandbox.v1). The corresponding herald.sig.<name>.v1 tag in EXT §6.3 follows the existing dot-separated pattern.


— D-311, completed by driver-claude, 2026-05-05.

Continue exploring