AI Initiative logoAI Initiative
Reading room / Manthan

SPEC §6 Verifier-Verdict Fix — `rejected-lineage-cycle`

SPEC §6 Verifier-Verdict Fix — `rejected-lineage-cycle`. Covers 1. Problem; 2. Surfacing references; 3. Proposed amendment; 3.1 Where in §6.

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 →

worker-glossary-par-18 · 2026-05-05

Provenance, authorship and editorial notes

SPEC §6 Verifier-Verdict Fix — `rejected-lineage-cycle`

Id

manthan-herald-protocol-audits-spec-6-verdict-fix

Project

Manthan

Source path

manthan/herald-protocol/audits/spec-6-verdict-fix.md

Source sha256

6f48b67f5b682a666f1916e85cef3be71b501d7b98fde25c3c06dc10fc72fe1a

Local copy sha256

6f48b67f5b682a666f1916e85cef3be71b501d7b98fde25c3c06dc10fc72fe1a

Repo head

3a94084024a3434cef331fecac91c2c3b43f0313

Date

2026-05-05

Date basis

Explicit document metadata

Author

worker-glossary-par-18

Author basis

Worker

Last source commit

8b75d1b0157c20a0a463f0e31008ef9f73099beb

Last source commit date

2026-06-08T07:40:14Z

Document status

Historical audit / evidence record

Summary

SPEC §6 Verifier-Verdict Fix — `rejected-lineage-cycle`. Covers 1. Problem; 2. Surfacing references; 3. Proposed amendment; 3.1 Where in §6.

Topics
  • Adversarial review and case studies
  • 1. Problem
  • 2. Surfacing references
  • 3. Proposed amendment
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

780

Bytes

5947

Source relative

herald-protocol/audits/spec-6-verdict-fix.md

Remote mirror

manthan/herald-protocol/audits/spec-6-verdict-fix.md

Full text preserved

True

SPEC §6 Verifier-Verdict Fix — rejected-lineage-cycle

Audit ID: D-319
Worker: worker-glossary-par-18
Date: 2026-05-05
Scope: Propose a minimal patch to SPEC §6 (../../../../../SPEC.md) (verifier-verdict enumeration) so that a verifier rejecting a lineage cycle has a normative verdict code to return. This is a paper proposal — no SPEC.md edit is performed by this audit.


1. Problem

SPEC.md §2.3 lines 110-113 (../../../../../SPEC.md) state, normatively:

Verifier MUST reject lineage that:
- Contains the new sigil itself (self-as-ancestor).
- Closes a cycle.
- References sigils in deprecated state at the birth timestamp.

But SPEC.md §6 lines 316-336 (../../../../../SPEC.md) — the canonical verdict enumeration that conformant verifiers MUST surface — contains no code for this rejection class. The 14 enumerated verdicts are:

valid, partial, signature-invalid, tampered, orphaned, parent-trace-mismatch, replayed-nonce, expired-envelope, expired-key, deprecated-sigil, unknown-sigil, unknown-alg, clock-skew, lineage-unverified.

None of these fit a lineage-cycle rejection:

The §2.3 MUST clause therefore has no §6 surface, and §6 line 338 — "Verifiers MUST surface ALL applicable reasons" — cannot be honoured for §2.3 rejections.

2. Surfacing references

This gap was independently surfaced twice:

1. T-001 INTERPRETATION I-4 — see learning/herald-protocol/manthan/state/findings/T-001/INTERPRETATION.md lines 105-123. The T-001 vector author flagged the missing code while constructing test vector 7 (lineage-cycle-birth) and recommended a follow-on task to "Extend SPEC §6 verifier return codes to enumerate lineage-validation failure modes." D-319 is that follow-on.

2. T-017 conformance runner — see learning/herald-protocol/manthan/state/findings/T-017/RECEIPT.md. The runner's expected column for vector 7 currently has no §6-conformant value to assert against, so the vector is skipped. Adding the proposed verdict closes this skip.

3. Proposed amendment

3.1 Where in §6

Insert a new row immediately after the current lineage-unverified row (current SPEC.md line 336, the last row of the verdict table). Rationale: the two lineage-related verdicts cluster together, and lineage-unverified (informational) precedes rejected-lineage-cycle (failure) in the same rough increasing-severity order the table already uses (informational/partial codes earlier, hard rejections later within the lineage cluster).

3.2 Exact row text

| `rejected-lineage-cycle` | Birth-envelope `lineage` violates §2.3: contains self-as-ancestor, closes a cycle, or references a deprecated-state ancestor at birth `ts`. |

The single verdict deliberately covers all three §2.3 MUST-reject bullets rather than splitting into three codes (rejected-self-as-ancestor, rejected-lineage-cycle, rejected-deprecated-ancestor). The lineage-cycle name in the task brief and in T-001 vector 7 (lineage-cycle-birth) is canonical; the third bullet (deprecated ancestor) is rare and folding it under the same code keeps the enumeration small. Reviewers who want finer granularity can split later via an additional D-task without breaking conformance.

3.3 One-line rationale (for inclusion in the SPEC patch commit message)

[SPEC §2.3] requires verifiers to reject lineage cycles, self-as-ancestor, and deprecated-state ancestors; §6 lacked a verdict code for this rejection, forcing conformant verifiers (T-017 vector 7) to skip — rejected-lineage-cycle is the missing surface.

4. Non-goals (explicitly out of scope for D-319)

5. Migration / compatibility

The amendment is strictly additive to the §6 enumeration. Existing verifiers that don't implement lineage-cycle detection will still pass cycles silently — that was already a §2.3 conformance violation before this audit, and remains one. Verifiers that do detect cycles (e.g. T-003 reference library) gain a normative name for the verdict they were already returning ad-hoc.

No envelope on the wire changes. No signing/canonicalisation changes. The patch is a single table-row insert in SPEC.md.

1. Human reviewer applies the §6 table-row insert above.
2. T-017 conformance runner removes the vector-7 skip and asserts expected === "rejected-lineage-cycle".
3. Follow-on D-task (optional): audit T-003 reference library to confirm it returns the new verdict string verbatim, not an ad-hoc local name.

Continue exploring