HERALD — Master TODO
Source of truth for the manthan coordination system. Every task has an ID, tier, status, and dependencies.
Statuses: pending · claimed · done · blocked
Tiers: 1 (weeks, doable now) · 2 (months) · 3 (research / ecosystem) · 4 (structural blocker — informational only)
To claim, work, and submit a task, see manthan/README.md.
Tier 1 — Buildable now
| ID | Title | Status | Depends-on | Output path |
|---|---|---|---|---|
| T-001 | Generate Ed25519 test vectors (3 keypairs, genesis, reply, tampered, replayed) | done | — | test-vectors/v0.2/ |
| T-002 | CBOR-deterministic encoder/decoder profile + conformance tests | done | — | lib/cbor-det/ |
| T-003 | Envelope build / sign / verify reference (TS) | done | T-001, T-002 | lib/herald-core-ts/ |
| T-004 | Envelope build / sign / verify reference (Python) — interop with TS | done | T-001, T-002, T-003 | lib/herald-core-py/ |
| T-005 | Trace-parent binding validation [SPEC §3.3a] | done | T-003 | lib/herald-core-ts/src/trace.ts |
| T-006 | Nonce / replay cache implementation [SPEC §3.7] | done | T-003 | lib/herald-core-ts/src/replay.ts |
| T-007 | Domain-separation tag enforcement in signing [SPEC §3.6] | done | T-003 | lib/herald-core-ts/src/sign.ts |
| T-008 | Pass-through conduit gateway (HTTP) — ~50 LoC Express | done | T-003 | demo/conduit/ |
| T-009 | Flat-file audit log (append-only, hash-linked, no STH yet) | done | T-003 | demo/audit-log/ |
| T-010 | herald verify <trace> CLI — replays from audit log | done | T-003, T-009 | demo/cli/ |
| T-011 | Two-agent demo end-to-end | done | T-008, T-009, T-010 | demo/two-agent/ |
| T-012 | Standard attestation registry (technical types: model, tools, temperature, confidence, birth, deprecation) | done | — | registries/standard-attestations.md |
| T-013 | Cultural attestation registry (vibe, haiku, mood, weather, dread, flinch, koan, colour, aphasia, citation, gratitude, dedication) | done | — | registries/cultural-attestations.md |
| T-014 | Apologia signer-binding validator [EXT §7.1] | done | T-003 | lib/herald-core-ts/src/apologia.ts |
| T-015 | Citation / derivation attestation handler | done | T-003 | lib/herald-core-ts/src/citation.ts |
| T-016 | Reserved-sigil registry file (sigil:none, sigil:dreamer, sigil:crier, …) | done | — | registries/reserved-sigils.md |
| T-017 | Conformance test runner (loads vectors, exercises lib) | done | T-001, T-003 | tests/conformance/ |
| T-018 | One-page envelope cheatsheet (visual diagram + field reference) | done | — | docs/envelope-cheatsheet.md |
| T-019 | Glossary cross-reference checker (SPEC ↔ EXT ↔ CHARTER) | done | — | tools/glossary-check.py |
| T-020 | Verifier return-code enum reference card [SPEC §6] | done | — | docs/verifier-codes.md |
Tier 2 — Months out
| ID | Title | Status | Depends-on | Output path |
|---|---|---|---|---|
| T-101 | HERALD CT log schema (RFC 6962-derived) [EXT §2] | done | T-009 | lib/herald-ct-log/SCHEMA.md |
| T-102 | Basic CT log implementation (single operator, single tree) | done | T-101 | lib/herald-ct-log/ |
| T-103 | Signed Tree Head (STH) publication [EXT §2.3] | done | T-102 | lib/herald-ct-log/src/sth.ts |
| T-104 | Inclusion proof (SIP) generation [EXT §2.4] | done | T-102 | lib/herald-ct-log/src/sip.ts |
| T-105 | Consistency proof generation [EXT §2.5] | done | T-102 | lib/herald-ct-log/src/consistency.ts |
| T-106 | LOTS template document for log operators [EXT §2.6] | done | T-101 | templates/LOTS.md |
| T-107 | Molt envelope handler with cool-off [EXT §1] | done | T-003, T-104 | lib/herald-core-ts/src/molt.ts |
| T-108 | Disputed-state resolution flow [EXT §1.4] | done | T-107 | lib/herald-core-ts/src/dispute.ts |
| T-109 | Multi-signature progressive signing (DKIM/ARC pattern) [EXT §6] | done | T-007 | lib/herald-core-ts/src/multisig.ts |
| T-110 | Per-signature scope validation [EXT §6.1] | done | T-109 | lib/herald-core-ts/src/scope.ts |
| T-111 | Capability manifest with replay protection [EXT §4] | done | T-003 | lib/herald-core-ts/src/manifest.ts |
| T-112 | Capability-string registry skeleton + governance doc [EXT §4.4] | done | — | registries/capabilities.md |
| T-113 | DNS TXT discovery resolver [EXT §11.1] | done | T-003 | lib/herald-core-ts/src/discovery.ts |
| T-114 | HPKE-bound whisper attestation [EXT §7.3] | done | T-003 | lib/herald-core-ts/src/whisper.ts |
| T-115 | Reference Herald (single operator) with Charter + CT log | done | T-102, T-106 | services/reference-herald/ |
| T-116 | Bestiary protocol-level due-process flow [EXT §8] | done | T-102 | lib/herald-core-ts/src/bestiary.ts |
| T-117 | Inheritance gating (live consent, challenge window, decay floor) [EXT §9] | done | T-102, T-107 | lib/herald-core-ts/src/inheritance.ts |
| T-118 | Refusal envelope with rate publishing [EXT §10] | done | T-008 | lib/herald-core-ts/src/refusal.ts |
| T-119 | The duress / black envelope [CHARTER §6.15] | done | T-003 | lib/herald-core-ts/src/duress.ts |
| T-120 | MCP wrapper — wraps any MCP server in HERALD envelopes | done | T-003, T-008 | wrappers/mcp/ |
| T-121 | LangChain middleware | done | T-003 | wrappers/langchain/ |
| T-122 | Cultural conduit exemplar: The Crier (broadcast) [CHARTER §5.3] | done | T-008 | services/the-crier/ |
| T-123 | Cultural conduit exemplar: The Mortician (tombstones) [CHARTER §5.5] | done | T-008, T-009 | services/the-mortician/ |
| T-124 | Cultural conduit exemplar: The Scribe (transcription digests) [CHARTER §5.6] | done | T-008 | services/the-scribe/ |
Tier 3 — Research / coordination
| ID | Title | Status | Depends-on | Output path |
|---|---|---|---|---|
| R-201 | Survey ZK provenance proof libraries; feasibility report for graph-structured claims | done | — | research/zk-provenance/ |
| R-202 | Survey HPKE library availability across TS/Python/Go/Rust | done | — | research/hpke-survey.md |
| R-203 | Draft Herald Charter template (operator transparency baseline) [EXT §3.5] | done | — | templates/Herald-Charter.md |
| R-204 | Threshold-attestation diversity-policy registry design [EXT §3.3] | done | — | registries/diversity-policies.md |
| R-205 | Model-hash canonical specification — research weight-canonicalisation across formats (safetensors / GGUF / HF / quantised / LoRA) | done | — | research/model-hash/ |
| R-206 | Vendor-Herald engagement strategy (how to talk to Anthropic/OpenAI/Google about being Heralds for their own models) | done | — | research/vendor-engagement.md |
| R-207 | Sybil-resistance economics — what does proof-of-service cost in practice? | done | T-111 | research/sybil-economics.md |
| R-208 | DKIM-analogy failure analysis (why agent-to-agent has no complaint loop and what to do about it) | done | — | research/dkim-analogy.md |
| R-209 | Time-locked attestation review — verifiable-delay-functions, threshold encryption, trusted seal-keepers comparison | done | — | research/time-lock.md |
| R-210 | Quorum aggregation: BLS vs Schnorr-MuSig vs sequential Ed25519 tradeoffs | done | — | research/quorum-agg.md |
| R-211 | Dialect-drift detection: literature review + corpus design | done | — | research/dialect-drift.md |
| R-212 | "Confession booth as alignment infrastructure" — k-anonymity & batched confessions design | done | — | research/confession-booth.md |
| R-213 | Memetic-fanout scoring algorithms — first sketch | done | T-015 | research/memetic-fanout.md |
Discovery / meta-work
| ID | Title | Status | Depends-on | Output path |
|---|---|---|---|---|
| D-301 | Re-audit SPEC.md v0.2 for ambiguities post-edit | done | — | audits/spec-v0.2-audit.md |
| D-302 | Threat-model coverage matrix (every THREATS attack → which SPEC/EXT clause defends it) | done | — | audits/threat-coverage.md |
| D-303 | Cross-doc inconsistency check (SPEC ↔ EXT ↔ CHARTER ↔ THREATS) | done | — | audits/cross-doc-consistency.md |
| D-304 | Recruit a second-team review pass (have a fresh agent implement T-003 from spec alone) | done | T-001, T-003 | audits/second-team-review.md |
| D-305 | Public-feedback intake template (how to receive issues from outside reviewers) | done | — | templates/feedback-intake.md |
Dropped / explicitly out-of-scope
These were considered and rejected. Listed for the record so they don't get re-added.
- ❌ Custom blockchain for audit log. RFC 6962 CT structure is sufficient; a chain adds operational cost without trust-model gains.
- ❌ DID URI scheme adoption.
sigil:flat namespace was chosen overdid:herald:to avoid the DID-method zoo. - ❌ JSON+JCS as canonical wire format. CBOR-deterministic chosen for compactness and unambiguous map-key ordering. JSON is display-only.
- ❌ 80-bit fingerprints by default. Below the 2026 collision floor; reserved for ephemeral sigils only.
- ❌ Agent-to-agent payment rails in core. Out of scope; refer to capability manifests + external rails.
Tier 4 (structural blockers) items are tracked in THREATS.md. They are informational; no work item closes them.
Cohort-1 follow-ups (added 2026-05-05)
Surfaced by D-302 (threat-coverage audit) and worker submissions on T-012, T-013, T-016.
Tier 1 follow-ups (new)
| ID | Title | Status | Depends-on | Output path |
|---|---|---|---|---|
| T-021 | Verifier-conformance rule: unproven lineage MUST render distinctly (TLS-style) [SPEC §2.3, THREATS §3.3] | done | — | lib/herald-core-ts/src/render-rules.ts |
| T-022 | Inverse-coverage index — given a SPEC/EXT clause, list every THREATS attack it defends | done | D-302 | audits/inverse-coverage.md |
| T-023 | Viewer/renderer conformance suite — apologia, unproven lineage, ghost-mode pre-render | done | T-021 | tests/renderer-conformance/ |
| T-024 | Cultural-attestation conformance test extension (extends T-017) | done | T-013, T-017 | tests/conformance/cultural/ |
| T-025 | Non-normative UI rendering guide for aesthetic attestation family | done | T-013 | docs/ui-aesthetic-rendering.md |
| T-026 | Reserved-sigil rejection conformance vectors (extends T-017) | done | T-016, T-017 | tests/conformance/reserved-sigils/ |
| T-027 | Reserved-sigil discovery / Herald-registry binding spec | done | T-016 | lib/herald-core-ts/src/reserved-resolution.ts |
Research follow-ups (new)
| ID | Title | Status | Depends-on | Output path |
|---|---|---|---|---|
| R-214 | Multi-conduit-receipt M-of-N timestamping for state-changing envelopes [THREATS §4.15] | done | — | research/m-of-n-timestamps.md |
| R-215 | Cross-recipient genesis-pinning gossip protocol [THREATS §4.14] | done | — | research/genesis-gossip.md |
| R-216 | Patina anti-farming reference formula [EXT §9.4, CHARTER §6.6] | done | — | research/patina-formula.md |
Discovery / hygiene follow-ups (new)
| ID | Title | Status | Depends-on | Output path |
|---|---|---|---|---|
| D-306 | Reconcile THREATS.md cross-references against current SPEC/EXT (citation drift) | done | D-302 | audits/threats-citation-fix.md |
| D-307 | Systemic-risk coverage matrix — vendor-Herald cartel, naming-office monopoly, mitigations beyond protocol | done | D-302 | audits/systemic-risk-matrix.md |
| D-308 | Reconcile domain-separation tag versions (.v1 vs .v2 between SPEC §3.6 and EXT §12) | done | T-012 | audits/dom-sep-version-fix.md |
| D-309 | Reconcile model_hash (SPEC §4.1) vs lineage_training (EXT §3.2) naming | done | T-012 | audits/model-hash-naming-fix.md |
| D-310 | Refusal reason-code registry document [EXT §10] | done | T-012 | registries/refusal-reasons.md |
| D-311 | Unify hyphenated vs underscored signature-scope strings (tool-sandbox ↔ tool_sandbox) | done | T-012 | audits/scope-string-fix.md |
| D-312 | Fully specify shapes for dream, silence, quorum_membership, revoke_capability_manifest | done | T-012, T-013 | audits/attestation-shape-fix.md |
| D-313 | CHARTER revision pass: succession_challenge schema, apprenticeship two-shape, JSON examples for un-schema'd lifecycle envelopes, verdict shape | done | T-013 | audits/charter-revision.md |
| D-314 | Reserved-sigil hygiene: decide on sigil:confessor_general and sigil:duress_witness; namespace claim-rejection rule | done | T-016 | audits/reserved-sigil-hygiene.md |
| D-315 | Manthan cohort-1 post-mortem: process improvements (gsed→perl fix, src==dest cp bug, agent-spawn patterns) | done | — | audits/manthan-cohort1-postmortem.md |
| D-316 | T-001/T-003 interop reconciliation: SPEC §3.5 must specify CBOR encoding for opaque values (id, parent, trace, nonce); regenerate T-001 vectors against post-D-308 .v1 tags; reconcile T-003 to whichever encoding SPEC adopts. Surfaced by T-017 conformance runner (5 of 7 vectors fail) | done | T-001, T-003, D-308 | audits/t001-t003-interop.md |
| D-317 | Apply D-316 reconciliation: regenerate test-vectors/v0.2/vectors.json (set DOM_SEP_ENVELOPE = b"herald.envelope.v1", opaque values stay raw bytes per new SPEC §3.5 opaque-value rule); refactor T-003 Envelope.id/parent/trace/nonce from string to Uint8Array, drop nonceToHex/bytesToHex from build path, update ORIGIN_DOMAIN constant from herald.sig.origin.v1 to herald.envelope.v1; re-run T-017 conformance runner — expect 6/7 pass (vector 7 stays skipped on rejected-lineage-cycle verdict gap). Unblocked by D-316 SPEC/EXT patches landing | done | D-316, T-001, T-003 | audits/t001-t003-applied.md + diffs |
| D-318 | Regenerate cultural and reserved-sigil conformance vectors against the post-D-316 library: re-derive signatures in tests/conformance/cultural/vectors/cultural-vectors.json (14 entries) and tests/conformance/reserved-sigils/vectors/reserved-sigil-vectors.json (9 entries) under herald.envelope.v1 with the new opaque-value encoding rule. Both files were generated against the pre-D-316 library and currently fail the conformance categories. | done | D-316, D-317, T-024, T-026 | audits/conformance-vectors-regen.md + regenerated JSON |
| D-319 | Add rejected-lineage-cycle to SPEC §6 verifier-verdict enumeration. Surfaced by T-001 INTERPRETATION I-4 and confirmed by T-017 (vector 7 currently skipped). Small SPEC clause addition: lineage-cycle detection per SPEC §2.3 needs a verdict code that's not in the current §6 list. | done | T-001 | audits/spec-6-verdict-fix.md (recommended SPEC patch) |