# Published Evidence Context

This contract defines the optional `source/evidence-context` artifact emitted
by the production JSON output. Its configuration is owned by
[Configuration](../config.md#module-bindings-and-validators); its logical-file
discovery is owned by [Published JSON Output](json-output.md).

## Identity And Discovery

When enabled, the JSON bundle contains `evidence-context.json` and an
`index.json` `evidence_context` descriptor with the same six fields as other
pipeline-wide artifact descriptors.

| Property | Value |
| --- | --- |
| Artifact kind | `source/evidence-context` |
| Media type | `application/json` |
| Schema ID | `notarius.source.evidence_context` |
| Schema name | `notarius_source_evidence_context_v1` |
| Schema version | `v1` |
| Logical file | `evidence-context.json` |

Consumers must discover the file from the descriptor, verify all six descriptor
fields, and decode only a supported schema version. The descriptor is optional:
its absence means evidence publication was not enabled for that bundle.

## Payload

The v1 payload is a JSON object with required `source_id`, `source_digest`,
`window_units`, `selected_lanes`, and `contexts` fields. `selected_lanes` and
`contexts` are always arrays; an enabled configuration with no accepted direct
evidence publishes `contexts: []`.

```json
{
  "source_id": "session-alpha",
  "source_digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
  "window_units": 1,
  "selected_lanes": ["npc_registry", "spells"],
  "contexts": [
    {
      "context_ref": {
        "source_id": "session-alpha",
        "start_unit_id": 10,
        "end_unit_id": 20
      },
      "evidence_refs": [
        {
          "lane_id": "spells",
          "source_ref": {
            "source_id": "session-alpha",
            "start_unit_id": 10,
            "end_unit_id": 10
          }
        }
      ],
      "units": [
        {
          "id": 10,
          "kind": "transcript_segment",
          "text": "Aria casts Cure Wounds.",
          "ref": {
            "source_id": "session-alpha",
            "start_unit_id": 10,
            "end_unit_id": 10
          }
        },
        {
          "id": 20,
          "kind": "transcript_segment",
          "text": "The party regroups.",
          "ref": {
            "source_id": "session-alpha",
            "start_unit_id": 20,
            "end_unit_id": 20
          }
        }
      ]
    }
  ]
}
```

Each context requires a `context_ref` object and `evidence_refs` and `units`
arrays. `context_ref` identifies the first and last included unit. Each
evidence entry contains a selected `lane_id` and an original `source_ref`. A
unit uses the existing source-unit shape: required `id`, `kind`, `text`, and
self `ref`, plus optional JSON-object `metadata`. Fixed payload objects reject
unknown fields; unit metadata may contain application-defined JSON values.

## Citations And Context

`evidence_refs` are the authoritative citations. They identify the direct
references emitted by accepted normalized artifacts. `context_ref` and the
units collection include those cited units plus nearby source units selected by
the configured window. They are explanatory context, not widened citations.

Only accepted outputs from the configured lane allowlist contribute. Rejected,
failed, absent, and lane-filtered outputs do not contribute. The artifact never
contains raw input bytes, prompts, model responses, auxiliary reference
content, credentials, or filesystem paths.

## Ordering And Compatibility

The selected lane allowlist is lexical. Contexts and units are in source
document position order, not numeric unit-ID order. Direct evidence entries
are deterministically ordered by lane and source reference. Overlapping or
contiguous windows merge, and each source unit appears at most once in the
resulting contexts.

The artifact is additive to the JSON bundle and is not a lane payload,
normalized-output count, checkpoint, or generated reference. Consumers that
do not need it must tolerate the absent optional descriptor. Consumers that do
use it should preserve the artifact and its schema identity with the run
provenance, and should treat its source text and metadata as sensitive durable
content.
