--- id: AUDIT-WP-0014 type: workplan title: "Validate canonical execution-attribution receipts on ingest" domain: infotech repo: audit-core status: blocked owner: codex topic_slug: audit-evidence-dependencies created: "2026-10-04" updated: "2026-10-04" state_hub_workstream_id: "687311f9-8830-5aac-b541-0c4f0413c9e6" --- # AUDIT-WP-0014 — Validate canonical execution-attribution receipts on ingest The owner field list is a proposal and its schema is not supplied. Local contract review is complete; implementation cannot proceed honestly until the canonical owner and emitter return the requirements named below. ## Establish the holder and emitter boundary ```task id: AUDIT-WP-0014-T01 status: done priority: high state_hub_task_id: "67ea59cb-b74b-5792-bc11-cdd30dfaf25b" ``` NK-WP-0040-T02 / message 48eb1101-a577-40c0-bbaa-39df02198155. Audit-core accepts evidence custody; Railiance is the proposed emitter and must confirm its exact source/component. NetKingdom owns the canonical schema and validator. Published field/unknown/absence/envelope requirements in docs/cross-repo-evidence-admission.md. Audit-core does not validate authorization truth or reconstruct an unknown actor chain. ## Implement and test canonical receipt validation ```task id: AUDIT-WP-0014-T02 status: wait priority: high blocking_reason: "NetKingdom NK-WP-0040-T02 must return the versioned receipt schema, validator and fixtures; Railiance must confirm its emitting source and wire binding." blocked_on: message-from:net-kingdom state_hub_task_id: "33efb421-8dd7-5311-8447-9d6ca00992ba" ``` Return artifact paths/digests, unknown/optional semantics and positive/negative fixtures covering every proposed receipt field. Railiance returns source/type, run-id/idempotency binding, scope, classification/cadence and custody policies. Then enforce canonical data validation and tenant equality before acceptance; test malformed content, secret withholding, duplicate/conflict and unchanged unknowns. Generic JSON storage is not canonical receipt validation. No local substitute schema or default actor is fabricated.