{
  "type": "record",
  "Aspect": {
    "name": "evalDocumentReferences"
  },
  "name": "EvalDocumentReferences",
  "namespace": "com.linkedin.pegasus2avro.eval",
  "fields": [
    {
      "Relationship": {
        "/*": {
          "entityTypes": [
            "document"
          ],
          "name": "EvalReferencesDocument"
        }
      },
      "Searchable": {
        "/*": {
          "addToFilters": true,
          "fieldName": "referencedDocuments",
          "fieldType": "URN",
          "queryByDefault": false
        }
      },
      "type": {
        "type": "array",
        "items": "string"
      },
      "name": "referencedDocuments",
      "doc": "Documents the agent referenced during the most recent non-proposal run.",
      "Urn": "Urn",
      "urn_is_array": true
    }
  ],
  "doc": "Documents whose contents the eval's agent retrieved during its most\nrecent passing non-proposal run, or \u2014 for evals that have never passed\nyet \u2014 the URNs from the first non-proposal run that retrieved any docs.\n\nAuto-populated by the eval executor on non-proposal runs:\n  - PASS  \u2192 UPSERT (authoritative replace, including with empty list)\n  - FAIL/ERROR with URNs \u2192 CREATE (cold-start only; no-op if exists)\n  - FAIL/ERROR without URNs \u2192 no-op (no signal)\n  - Proposal-mode runs (actionRequestUrn set) \u2192 no-op\n\nThe cold-start path ensures a brand-new eval whose first run fails is\nstill surfaced in reverse-doc-search until it eventually passes; the\nskip-on-FAIL path ensures a flaky failure on an established eval does\nnot wipe its curated association list.\n\nStored as a dedicated aspect (not a field on EvalInfo) so executor\nwritebacks don't race with user edits to the eval definition."
}