{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/africanmarketos-com/json-schema/africanmarketos-com-decision-check-request-schema.json",
  "title": "DecisionCheckRequest",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/africanmarketos-com-openapi.yml#/components/schemas/DecisionCheckRequest",
  "type": "object",
  "not": {
    "required": [
      "evidence_pack",
      "compiled_pack"
    ]
  },
  "properties": {
    "attestation_refs": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "attestation_id",
          "tenant_id",
          "workspace_id",
          "reference_secret"
        ],
        "properties": {
          "attestation_id": {
            "type": "string",
            "pattern": "^ATT-[a-f0-9]{64}$"
          },
          "tenant_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "workspace_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "reference_secret": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$",
            "writeOnly": true,
            "description": "256-bit random bearer secret. Keep host-private, out of URLs/logs/prompts/exports; grants shared context, not authority."
          }
        }
      },
      "description": "Case-bound reviewer assertions, not proof, scoring or permission. Keep bearer references host-private; reattach only for the same case."
    },
    "review_case_ref": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "case_id",
        "tenant_id",
        "workspace_id",
        "reference_secret"
      ],
      "properties": {
        "case_id": {
          "type": "string",
          "pattern": "^RC-[a-f0-9]{64}$"
        },
        "tenant_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "workspace_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "reference_secret": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$",
          "writeOnly": true
        }
      },
      "description": "Host-private, case-bound read reference. Never put its secret into prompts, URLs, logs or exports. Grants no write or action authority."
    },
    "passage_interpretations": {
      "type": "array",
      "maxItems": 40,
      "description": "Attributed model readings of claim_review.interpretation_tasks. They route review and never set a value.",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "task_id",
          "stance",
          "source",
          "attribution"
        ],
        "properties": {
          "task_id": {
            "type": "string",
            "pattern": "^PT-[a-f0-9]{48}$"
          },
          "stance": {
            "enum": [
              "supports",
              "qualifies",
              "adverse",
              "unrelated"
            ]
          },
          "source": {
            "enum": [
              "model"
            ]
          },
          "attribution": {
            "type": "object",
            "required": [
              "provider",
              "model",
              "model_version",
              "prompt_sha256",
              "output_sha256"
            ]
          }
        }
      }
    },
    "claims": {
      "type": "array",
      "description": "Optional explicit target claims and source-specific support links. Reuses the governed claim-audit vocabulary. Public links are caller declarations, never authenticated reviewer attestations.",
      "items": {
        "type": "object",
        "required": [
          "claim_id",
          "claim"
        ],
        "properties": {
          "claim_id": {
            "type": "string",
            "description": "Opaque claim identifier."
          },
          "claim": {
            "type": "string",
            "description": "Minimal public-safe target proposition."
          },
          "support_links": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "claim_id",
                "evidence_id",
                "relationship",
                "locator"
              ],
              "properties": {
                "claim_id": {
                  "type": "string",
                  "description": "Must match the containing claim."
                },
                "evidence_id": {
                  "type": "string",
                  "description": "Must identify an item in this complete evidence pack."
                },
                "relationship": {
                  "type": "string",
                  "enum": [
                    "direct_support",
                    "qualifies",
                    "contradicts",
                    "context_only"
                  ]
                },
                "locator": {
                  "type": "string",
                  "description": "Specific page, cell or section. A locator is not proof."
                },
                "review_event_id": {
                  "type": "string",
                  "description": "Only the licensed review service can check this event; ignored as authority by public preflight."
                }
              }
            }
          }
        }
      }
    },
    "target_claim": {
      "type": "string"
    },
    "target_use": {
      "type": "string"
    },
    "requested_use": {
      "type": "string"
    },
    "decision_use": {
      "type": "string"
    },
    "output_use": {
      "type": "string"
    },
    "decision_stage": {
      "type": "string"
    },
    "decision_context": {
      "type": "string"
    },
    "analysis_date": {
      "type": "string",
      "description": "Declared analysis calendar date or ISO timestamp with timezone. No later than today in analysis_timezone."
    },
    "analysis_timezone": {
      "type": "string",
      "description": "IANA analysis timezone; defaults to UTC."
    },
    "context_freshness_window_days": {
      "type": "integer",
      "minimum": 1,
      "description": "Caller-declared maximum evidence age, not a calibrated universal cutoff."
    },
    "entity_name": {
      "type": "string"
    },
    "entity_archetype": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "sector": {
      "type": "string"
    },
    "use_case": {
      "type": "string"
    },
    "maturity_level": {
      "type": "string",
      "enum": [
        "startup",
        "mature",
        "scaled",
        "seed"
      ]
    },
    "workflow_id": {
      "type": "string",
      "pattern": "^MVRWF-[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
      "description": "Caller-carried operational correlation only, not authenticated lineage or authority."
    },
    "workflow_expires_at": {
      "type": "string"
    },
    "mode": {
      "type": "string",
      "enum": [
        "exploratory",
        "evidence_backed",
        "score_direct",
        "compiled_evidence",
        "backtest",
        "backtest_demo",
        "synthetic_fixture"
      ]
    },
    "sensitivity": {
      "type": "boolean",
      "default": false,
      "description": "Optional bounded pre-kernel scoring diagnostics: item removal, fixed 1/3/5-point adverse-value changes and one-item cap-to-20 scenario. Does not retest authorization, prove robustness or authenticate evidence. Public output exposes a privacy-minimized sensitivity_summary."
    },
    "case_type": {
      "type": "string",
      "enum": [
        "greenfield_entry",
        "partnership_trust_transfer",
        "scaling",
        "test_market",
        "fmcg_rollout",
        "channel_choice",
        "startup_readiness",
        "market_entry"
      ],
      "description": "Use a canonical case type. market_entry is an accepted compatibility alias for greenfield_entry and is disclosed as the original input in internal audit metadata."
    },
    "subject": {
      "type": "object",
      "properties": {
        "entity_name": {
          "type": "string"
        },
        "entity_id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "entity_type": {
          "type": "string"
        },
        "entity_archetype": {
          "type": "string"
        },
        "category": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "sector": {
          "type": "string"
        },
        "maturity": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        }
      },
      "additionalProperties": true
    },
    "market_scope": {
      "type": "object",
      "properties": {
        "country": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "district": {
          "type": "string",
          "pattern": "\\S"
        },
        "districts": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "\\S"
          }
        },
        "decision_scope_level": {
          "type": "string",
          "enum": [
            "country",
            "subnational"
          ],
          "description": "Explicit decision extent. Alternatively supply district(s). Subnational scope also requires local geography. Do not relabel or widen the decision to pass."
        },
        "town_or_zone": {
          "type": "string"
        },
        "micro_context": {
          "type": "string"
        },
        "corridor": {
          "type": "string"
        },
        "sector": {
          "type": "string"
        },
        "analysis_date": {
          "type": "string"
        },
        "geo_match_tolerance": {
          "type": "string",
          "enum": [
            "strict",
            "same_city",
            "region",
            "country"
          ],
          "default": "strict",
          "description": "Declare the actual decision geography. Do not widen it to obtain a verdict."
        }
      },
      "additionalProperties": true
    },
    "stakeholder_scope": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "agent",
          "anchor_customer",
          "bank_lender",
          "beneficiary",
          "board",
          "board_member",
          "chama_member",
          "channel_gatekeeper",
          "chief",
          "civil_society_org",
          "clinic",
          "community_guardian",
          "community_leader",
          "competitor",
          "competitors",
          "consumer",
          "cooperative_member",
          "court",
          "courts",
          "creditor",
          "creditors",
          "customary_land_authority",
          "customer",
          "customs",
          "customs_authority",
          "distributor",
          "donor",
          "donor_guardian",
          "enumerator",
          "farmer",
          "field_agent",
          "field_supervisor",
          "gatekeeper",
          "guarantor",
          "guardian",
          "guardian_node",
          "implementing_partner",
          "incumbent",
          "incumbent_competitor",
          "incumbents",
          "influencer",
          "informal_logistics",
          "informal_logistics_partner",
          "institutional_guardian",
          "internal_operations",
          "internal_operator",
          "investor",
          "investor_board",
          "investors",
          "journalist",
          "journalists",
          "judiciary",
          "judiciary_court",
          "labor_union",
          "labour_union",
          "land_custodian",
          "land_owner",
          "landlord",
          "landowner",
          "lender",
          "lender_creditor",
          "lenders",
          "market_queen",
          "media",
          "media_press",
          "member",
          "micro_logistics",
          "mobile_money_agent",
          "organized_labour",
          "platform_partner",
          "political_guardian",
          "press",
          "public_official",
          "regulator",
          "regulatory_body",
          "religious_leader",
          "research_respondent_group",
          "retail_partner",
          "retailer",
          "retailer_partner",
          "revenue_authority",
          "sacco_member",
          "school",
          "service_provider",
          "shareholder",
          "shareholders",
          "supplier",
          "suppliers",
          "tax_authority",
          "tax_revenue_authority",
          "teacher",
          "traditional_chief",
          "union",
          "upstream_supplier",
          "upstream_vendor",
          "vc",
          "vendor",
          "vendors",
          "venture_capital",
          "worker_association",
          "works_council"
        ]
      }
    },
    "evidence_pack": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/EvidenceItem"
      }
    },
    "compiled_pack": {
      "type": "object",
      "properties": {
        "public_reality_pack": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EvidenceItem"
          }
        },
        "telemetry_proxy_pack": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EvidenceItem"
          }
        },
        "localized_observed_pack": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EvidenceItem"
          }
        },
        "survey_pack": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EvidenceItem"
          }
        },
        "retail_audit_pack": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EvidenceItem"
          }
        },
        "ngo_program_pack": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EvidenceItem"
          }
        },
        "evaluation_pack": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EvidenceItem"
          }
        },
        "administrative_data_pack": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EvidenceItem"
          }
        },
        "partner_network_pack": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EvidenceItem"
          }
        },
        "social_listening_pack": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EvidenceItem"
          }
        }
      }
    },
    "unit_economics": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "ltv_cac_ratio": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 100
        },
        "cac_ltv_ratio": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 100
        },
        "payback_period_months": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0
        },
        "gross_margin_percent": {
          "type": [
            "number",
            "null"
          ],
          "minimum": -100,
          "maximum": 100
        },
        "capital_runway_months": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0
        },
        "monthly_burn_usd": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "not": {
            "maximum": 0
          }
        },
        "cash_conversion_cycle_days": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 730
        },
        "data_confidence": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "audited_financials",
            "projected",
            "management_estimate"
          ]
        }
      },
      "additionalProperties": true
    },
    "financial_context": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "runway_months": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1200
        },
        "ltv_cac_ratio": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 100
        },
        "gross_margin_pct": {
          "type": [
            "number",
            "null"
          ],
          "minimum": -100,
          "maximum": 100
        },
        "monthly_burn_local_currency": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0
        }
      },
      "additionalProperties": true
    },
    "competitive_context": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "incumbent_share_pct": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 100
        },
        "switching_cost_index_0_100": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 100
        },
        "price_war_risk": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "low",
            "moderate",
            "high",
            "extreme"
          ]
        }
      },
      "additionalProperties": true
    },
    "behavioral_signals": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "monthly_churn_rate": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        },
        "dau": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0
        }
      },
      "additionalProperties": true
    },
    "operational_readiness": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "sla_uptime_pct_90d": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 100
        }
      },
      "additionalProperties": true
    },
    "sentiment_velocity": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "delta_trust": {
          "type": [
            "number",
            "null"
          ],
          "minimum": -100,
          "maximum": 100
        },
        "delta_permission": {
          "type": [
            "number",
            "null"
          ],
          "minimum": -100,
          "maximum": 100
        }
      },
      "additionalProperties": true
    },
    "network_economics": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": true,
      "description": "Presence-only declared context in the current kernel; no metric keys are independently evaluated."
    },
    "b2b_context": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": true,
      "description": "Presence-only declared context in the current kernel; no procurement authorization is inferred."
    },
    "scaling_physics": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "expected_embeddedness_decay_at_scale_pct": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 100
        }
      },
      "additionalProperties": true
    },
    "market_education_profile": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "phase": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "discovery",
            "education",
            "early_adoption",
            "mainstream"
          ]
        }
      },
      "additionalProperties": true
    },
    "mvr_scores": {
      "type": "object",
      "properties": {
        "executive": {
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              }
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            }
          ],
          "description": "Prefer dimension-keyed scores. Legacy bounded scalar executive score is normalized separately and cannot fill missing evidence dimensions."
        },
        "dimensions": {
          "type": "object",
          "additionalProperties": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          }
        },
        "permission": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "trust": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "belonging": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "embeddedness": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "reciprocity": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "cultural_fit": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "guardian_strength": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "continuity": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "channel_permission": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "infrastructural_intimacy": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "absence_sensitivity": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "narrative_looping": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "whispered_credibility": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "fractal_trust": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "cultural_calibration": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        }
      },
      "additionalProperties": true
    },
    "case_id": {
      "type": "string"
    },
    "allow_non_decisive_operator_review": {
      "type": "boolean"
    },
    "baseline_period": {
      "type": "string",
      "enum": [
        "12m",
        "24m",
        "36m"
      ]
    },
    "backtest_window": {
      "type": "object",
      "properties": {
        "start": {
          "type": "string",
          "description": "ISO calendar date or timestamp."
        },
        "end": {
          "type": "string",
          "description": "ISO calendar date or timestamp."
        }
      },
      "additionalProperties": true,
      "required": [
        "start",
        "end"
      ]
    },
    "sector_metrics": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "sector": {
          "type": "string",
          "maxLength": 96
        },
        "metrics": {
          "type": "object",
          "maxProperties": 60,
          "additionalProperties": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ],
            "nullable": true
          }
        }
      },
      "additionalProperties": true,
      "required": [
        "metrics"
      ]
    },
    "project_id": {
      "type": "string",
      "minLength": 1,
      "description": "Tenant/workspace project context. Equivalent to subject.project_id; conflicting identifiers are rejected. Memory never supplies evidence or permission."
    },
    "use_project_memory": {
      "type": "boolean",
      "description": "Defaults to true when a project ID is supplied. Set false to disable contextual defaults."
    },
    "project_memory": {
      "type": "boolean",
      "description": "Compatibility alias for use_project_memory; either false disables loading."
    },
    "backtest_mode": {
      "type": "boolean",
      "description": "When true, response echoes backtest_mode and optional t0_date for replay transparency."
    },
    "t0_date": {
      "type": "string",
      "description": "Backtest as-of date echoed when backtest_mode is true."
    }
  },
  "$defs": {
    "EvidenceItem": {
      "type": "object",
      "additionalProperties": true,
      "description": "Extensible source metadata. Unknown item-level field names receive non-blocking input_interpretation notices on successful licensed evidence responses; acceptance is not proof that a control was evaluated. Suggested names require checking source facts and are never applied automatically. Nested open metadata is not recursively classified by this notice mechanism. Recovery: Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors; fix missing_fields. Never invent facts. These codes do not authenticate sources or authorize action. /docs/mcp-integration.md.",
      "x-compatible-item-field-names": [
        "provenance",
        "privacy",
        "modality",
        "pack_type",
        "source_type",
        "source_family",
        "source_locator",
        "source_hash",
        "upstream_source_ids",
        "parent_source_ids",
        "support_links",
        "source_relationship",
        "claim_id",
        "collected_at",
        "submitted_at",
        "public_metric_period_end",
        "collection_period_start",
        "collection_period_end",
        "score_scale",
        "value_scale",
        "scale",
        "category",
        "subject",
        "demographics",
        "independence_metadata",
        "dependence_metadata",
        "independence_group_id",
        "dependency_group_id",
        "independence_basis",
        "event_id",
        "dataset_id",
        "method_id",
        "instrument_id",
        "collector_id",
        "error_process_id",
        "source_review",
        "review",
        "reviewer_id",
        "extraction_method",
        "extraction_confidence"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "evidence_id": {
          "type": "string"
        },
        "claim": {
          "type": "string"
        },
        "load_bearing": {
          "type": "boolean"
        },
        "is_load_bearing": {
          "type": "boolean"
        },
        "source_date": {
          "type": "string",
          "minLength": 4,
          "maxLength": 32,
          "description": "Declared source date at its actual precision: YYYY, YYYY-MM, YYYY-MM-DD, or ISO timestamp with seconds and timezone (up to 6 fractional digits). Years 0001-9999; real calendar dates only. Partial dates describe inclusive calendar bounds, never an invented day. Source truth and current applicability remain unverified. Metadata only: typed scoring still requires an exact freshness date and excludes partial-date or range-bearing items."
        },
        "source_date_range": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "earliest",
            "latest"
          ],
          "properties": {
            "earliest": {
              "type": "string",
              "minLength": 4,
              "maxLength": 32,
              "description": "Declared source date at its actual precision: YYYY, YYYY-MM, YYYY-MM-DD, or ISO timestamp with seconds and timezone (up to 6 fractional digits). Years 0001-9999; real calendar dates only. Partial dates describe inclusive calendar bounds, never an invented day. Source truth and current applicability remain unverified."
            },
            "latest": {
              "type": "string",
              "minLength": 4,
              "maxLength": 32,
              "description": "Declared source date at its actual precision: YYYY, YYYY-MM, YYYY-MM-DD, or ISO timestamp with seconds and timezone (up to 6 fractional digits). Years 0001-9999; real calendar dates only. Partial dates describe inclusive calendar bounds, never an invented day. Source truth and current applicability remain unverified."
            }
          },
          "description": "Optional inclusive declared bounds, usable without source_date. Both endpoints must have the same precision and be ordered. Every supplied source_date/freshness_date must contain the whole range; an exact timestamp cannot be widened. Aliases must agree before narrowing. Unknown dates are not clipped to the analysis date. Bounds are declarations, not source verification."
        },
        "source_url": {
          "type": "string"
        },
        "source_doc_id": {
          "type": "string"
        },
        "sample_size": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991,
          "description": "Actual sample for collector-administered evidence, including groups. Sample aliases must agree; never invent counts for documentary or self-administered sources."
        },
        "population_size": {
          "type": "integer",
          "minimum": 1
        },
        "population_definition": {
          "type": "string"
        },
        "sampling_method": {
          "type": "string",
          "description": "Use census for a declared complete finite population; this does not override weighted sample admission."
        },
        "is_complete_population": {
          "type": "boolean"
        },
        "census": {
          "type": "boolean",
          "description": "Alias for is_complete_population. Only literal true with consistent positive integer sample_size = population_size enables the disclosure."
        },
        "collection_context": {
          "type": "object",
          "additionalProperties": true,
          "description": "Source-grounded collection declarations, not source authentication. Unknown facts must remain missing; do not invent values to pass. Field decision use requires source modality, collector relationship, interview mode, source-document identity and an explicit parent-source list. Collector-administered modes require staffing, duration, available minutes per collector and sample size. Group modes additionally require session_count, participants_per_session, session_duration_minutes and collectors_per_session, never inferred from an individual interview duration. Online, observation and administrative_record modes require collection_administration; self-administered online and automated observation/record sources do not need invented collector capacity. Explicit public/documentary origins are not caller fieldwork solely because evidence_type is survey; conflicting explicit field origins still block. Independent verification labels require a separate reviewer relationship; persisted review is still checked separately.",
          "properties": {
            "source_modality": {
              "type": "string",
              "enum": [
                "direct_observation",
                "documentary",
                "secondary_summary",
                "unknown"
              ]
            },
            "collector_relationship": {
              "type": "string",
              "enum": [
                "independent",
                "employee",
                "company_staff",
                "internal",
                "contractor",
                "partner",
                "self_collected",
                "unknown"
              ],
              "pattern": "\\S"
            },
            "reviewer_relationship": {
              "type": "string",
              "enum": [
                "independent",
                "employee",
                "company_staff",
                "internal",
                "contractor",
                "partner",
                "self_collected",
                "unknown"
              ]
            },
            "interview_mode": {
              "type": "string",
              "enum": [
                "face_to_face",
                "telephone",
                "online",
                "focus_group",
                "group_interview",
                "observation",
                "administrative_record",
                "unknown"
              ],
              "pattern": "\\S"
            },
            "collection_administration": {
              "type": "string",
              "enum": [
                "collector_administered",
                "self_administered",
                "automated",
                "unknown"
              ],
              "description": "Source-grounded administration, required for online, observation and administrative_record modes. self_administered is supported for online; automated for observation or administrative_record. Face-to-face, telephone and group modes are collector-administered and cannot opt out."
            },
            "enumerator_count": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            },
            "interview_duration_minutes": {
              "type": "number",
              "exclusiveMinimum": true,
              "description": "Collector time per individual interview or per observed/processed sample record for collector-administered non-group modes.",
              "minimum": 0
            },
            "fieldwork_window_minutes": {
              "type": "number",
              "exclusiveMinimum": true,
              "description": "Total available collection minutes per collector across the entire period, not daily or team-person-minutes.",
              "minimum": 0
            },
            "session_count": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991,
              "description": "Actual number of group sessions in the source records."
            },
            "participants_per_session": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991,
              "description": "Source-grounded maximum participants in any session. Sample size cannot exceed session_count times this bound; no default group size is assumed."
            },
            "session_duration_minutes": {
              "type": "number",
              "exclusiveMinimum": true,
              "description": "Source-recorded duration of each group session in this declaration, not an alias for individual interview duration.",
              "minimum": 0
            },
            "collectors_per_session": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991,
              "description": "Collectors required concurrently for each group session, drawn from enumerator_count. No default facilitator count is assumed."
            },
            "sample_size": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            },
            "source_extraction": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "source_ref",
                "fields"
              ],
              "description": "Optional caller-supplied second reading of source facts for conflict comparison only. Not independently authenticated; cannot supply missing primary declarations or establish source authenticity.",
              "properties": {
                "source_ref": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 512
                },
                "fields": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "source_modality": {
                      "type": "string",
                      "enum": [
                        "direct_observation",
                        "documentary",
                        "secondary_summary",
                        "unknown"
                      ]
                    },
                    "collector_relationship": {
                      "type": "string",
                      "enum": [
                        "independent",
                        "employee",
                        "company_staff",
                        "internal",
                        "contractor",
                        "partner",
                        "self_collected",
                        "unknown"
                      ]
                    },
                    "reviewer_relationship": {
                      "type": "string",
                      "enum": [
                        "independent",
                        "employee",
                        "company_staff",
                        "internal",
                        "contractor",
                        "partner",
                        "self_collected",
                        "unknown"
                      ]
                    },
                    "interview_mode": {
                      "type": "string",
                      "enum": [
                        "face_to_face",
                        "telephone",
                        "online",
                        "focus_group",
                        "group_interview",
                        "observation",
                        "administrative_record",
                        "unknown"
                      ]
                    },
                    "collection_administration": {
                      "type": "string",
                      "enum": [
                        "collector_administered",
                        "self_administered",
                        "automated",
                        "unknown"
                      ],
                      "description": "Source-grounded administration, required for online, observation and administrative_record modes. self_administered is supported for online; automated for observation or administrative_record. Face-to-face, telephone and group modes are collector-administered and cannot opt out."
                    },
                    "enumerator_count": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9007199254740991
                    },
                    "interview_duration_minutes": {
                      "type": "number",
                      "exclusiveMinimum": true,
                      "description": "Collector time per individual interview or per observed/processed sample record for collector-administered non-group modes.",
                      "minimum": 0
                    },
                    "fieldwork_window_minutes": {
                      "type": "number",
                      "exclusiveMinimum": true,
                      "description": "Total available collection minutes per collector across the entire period, not daily or team-person-minutes.",
                      "minimum": 0
                    },
                    "session_count": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9007199254740991,
                      "description": "Actual number of group sessions in the source records."
                    },
                    "participants_per_session": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9007199254740991,
                      "description": "Source-grounded maximum participants in any session. Sample size cannot exceed session_count times this bound; no default group size is assumed."
                    },
                    "session_duration_minutes": {
                      "type": "number",
                      "exclusiveMinimum": true,
                      "description": "Source-recorded duration of each group session in this declaration, not an alias for individual interview duration.",
                      "minimum": 0
                    },
                    "collectors_per_session": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9007199254740991,
                      "description": "Collectors required concurrently for each group session, drawn from enumerator_count. No default facilitator count is assumed."
                    },
                    "sample_size": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9007199254740991
                    }
                  }
                }
              }
            },
            "collection_tool": {
              "type": "string",
              "enum": [
                "structured_interview_protocol",
                "expert_ethnographic_observation",
                "field_observation",
                "survey_platform_verified",
                "survey_paper_based",
                "key_informant_interview",
                "team_consensus_estimate",
                "founder_intuition",
                "inferred_from_secondary",
                "direct",
                "inferred",
                "secondary_source",
                "corporate_telemetry",
                "database_aggregation",
                "expert_opinion",
                "intercept_interview"
              ]
            },
            "population_size": {
              "type": "integer",
              "minimum": 1
            },
            "population_definition": {
              "type": "string"
            },
            "sampling_method": {
              "type": "string",
              "description": "Use census for a declared complete finite population; this does not override weighted sample admission."
            },
            "is_complete_population": {
              "type": "boolean"
            },
            "census": {
              "type": "boolean",
              "description": "Alias for is_complete_population. Only literal true with consistent positive integer sample_size = population_size enables the disclosure."
            }
          }
        },
        "evidence_type": {
          "type": "string",
          "enum": [
            "public_filing",
            "survey",
            "interview",
            "observation",
            "telemetry",
            "admin_data",
            "evaluation",
            "retail_audit",
            "social_listening",
            "partner_network",
            "program_monitoring"
          ]
        },
        "entity_archetype": {
          "type": "string",
          "enum": [
            "telecom_operator",
            "mobile_money_operator",
            "fintech_platform",
            "financial_services_bank",
            "fintech_lending",
            "logistics_platform",
            "energy_utility",
            "extractives_operator",
            "real_estate_construction",
            "education_provider",
            "passenger_mobility",
            "b2b_saas_platform",
            "healthtech_platform",
            "insurance_platform",
            "fmcg_brand",
            "retail_chain",
            "ecommerce_platform",
            "manufacturer",
            "distributor_network",
            "ngo",
            "development_program",
            "public_institution",
            "survey_dataset",
            "solo_entrepreneur",
            "family_business",
            "cooperative_sacco",
            "cross_border_trader",
            "university_spinout",
            "diaspora_venture",
            "creator_economy_individual",
            "agritech_aggregator",
            "impact_enterprise",
            "religious_institution",
            "chama_savings_group"
          ]
        },
        "source_class": {
          "type": "string",
          "enum": [
            "entity_reported",
            "independently_audited",
            "regulator_published",
            "administrative_record",
            "probability_sample_survey",
            "nonprobability_survey",
            "structured_field_research",
            "third_party_evaluation",
            "retail_audit",
            "telemetry_internal",
            "media_reported"
          ],
          "description": "Source-evidence classes only. Model-inferred artifacts are context and are rejected with ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE."
        },
        "source_grade": {
          "type": "string",
          "enum": [
            "A",
            "B",
            "C",
            "D"
          ]
        },
        "stakeholder_class": {
          "type": "string",
          "enum": [
            "agent",
            "anchor_customer",
            "bank_lender",
            "beneficiary",
            "board",
            "board_member",
            "chama_member",
            "channel_gatekeeper",
            "chief",
            "civil_society_org",
            "clinic",
            "community_guardian",
            "community_leader",
            "competitor",
            "competitors",
            "consumer",
            "cooperative_member",
            "court",
            "courts",
            "creditor",
            "creditors",
            "customary_land_authority",
            "customer",
            "customs",
            "customs_authority",
            "distributor",
            "donor",
            "donor_guardian",
            "enumerator",
            "farmer",
            "field_agent",
            "field_supervisor",
            "gatekeeper",
            "guarantor",
            "guardian",
            "guardian_node",
            "implementing_partner",
            "incumbent",
            "incumbent_competitor",
            "incumbents",
            "influencer",
            "informal_logistics",
            "informal_logistics_partner",
            "institutional_guardian",
            "internal_operations",
            "internal_operator",
            "investor",
            "investor_board",
            "investors",
            "journalist",
            "journalists",
            "judiciary",
            "judiciary_court",
            "labor_union",
            "labour_union",
            "land_custodian",
            "land_owner",
            "landlord",
            "landowner",
            "lender",
            "lender_creditor",
            "lenders",
            "market_queen",
            "media",
            "media_press",
            "member",
            "micro_logistics",
            "mobile_money_agent",
            "organized_labour",
            "platform_partner",
            "political_guardian",
            "press",
            "public_official",
            "regulator",
            "regulatory_body",
            "religious_leader",
            "research_respondent_group",
            "retail_partner",
            "retailer",
            "retailer_partner",
            "revenue_authority",
            "sacco_member",
            "school",
            "service_provider",
            "shareholder",
            "shareholders",
            "supplier",
            "suppliers",
            "tax_authority",
            "tax_revenue_authority",
            "teacher",
            "traditional_chief",
            "union",
            "upstream_supplier",
            "upstream_vendor",
            "vc",
            "vendor",
            "vendors",
            "venture_capital",
            "worker_association",
            "works_council"
          ]
        },
        "guardian_tier": {
          "type": "string",
          "enum": [
            "macro_regulator",
            "meso_community",
            "micro_street"
          ],
          "description": "Guardian role classification, not an adverse score setting. Only guardian evidence activates guardian-specific analysis; stance, observed substance and actual veto authority determine applicable gates. A tier change need not change the verdict."
        },
        "evidence_origin": {
          "type": "string",
          "enum": [
            "public_osint",
            "field_research",
            "mixed",
            "corporate_telemetry",
            "platform_telemetry"
          ],
          "description": "Explicit public documentary survey tables do not require caller fieldwork metadata or become direct field coverage. Contradictory explicit field origins still require reconciliation."
        },
        "collection_method": {
          "type": "string",
          "enum": [
            "structured_interview_protocol",
            "expert_ethnographic_observation",
            "field_observation",
            "survey_platform_verified",
            "survey_paper_based",
            "key_informant_interview",
            "team_consensus_estimate",
            "founder_intuition",
            "inferred_from_secondary",
            "direct",
            "inferred",
            "secondary_source",
            "corporate_telemetry",
            "database_aggregation",
            "expert_opinion",
            "intercept_interview"
          ]
        },
        "source_confidence": {
          "type": "string",
          "enum": [
            "high",
            "medium",
            "low"
          ]
        },
        "stance": {
          "type": "string",
          "enum": [
            "hostile",
            "neutral",
            "friendly",
            "opposed"
          ],
          "description": "Declared stakeholder stance. Opposed or hostile load-bearing evidence requires stakeholder review even when linked as direct_support. This does not rewrite the factual claim relationship or authenticate the source."
        },
        "verification_status": {
          "type": "string",
          "enum": [
            "unverified",
            "self_reported",
            "document_supported",
            "independently_verified",
            "verified",
            "disputed"
          ],
          "description": "Caller declaration, not independent verification. No confidence boost from this label. Disputed evidence blocks authorization until reconciled or segregated."
        },
        "freshness_date": {
          "type": "string",
          "format": "date"
        },
        "evidence_geography": {
          "type": "object",
          "properties": {
            "country": {
              "type": "string",
              "enum": [
                "AD",
                "AE",
                "AF",
                "AG",
                "AI",
                "AL",
                "AM",
                "AO",
                "AQ",
                "AR",
                "AS",
                "AT",
                "AU",
                "AW",
                "AX",
                "AZ",
                "BA",
                "BB",
                "BD",
                "BE",
                "BF",
                "BG",
                "BH",
                "BI",
                "BJ",
                "BL",
                "BM",
                "BN",
                "BO",
                "BQ",
                "BR",
                "BS",
                "BT",
                "BV",
                "BW",
                "BY",
                "BZ",
                "CA",
                "CC",
                "CD",
                "CF",
                "CG",
                "CH",
                "CI",
                "CK",
                "CL",
                "CM",
                "CN",
                "CO",
                "CR",
                "CU",
                "CV",
                "CW",
                "CX",
                "CY",
                "CZ",
                "DE",
                "DJ",
                "DK",
                "DM",
                "DO",
                "DZ",
                "EC",
                "EE",
                "EG",
                "EH",
                "ER",
                "ES",
                "ET",
                "FI",
                "FJ",
                "FK",
                "FM",
                "FO",
                "FR",
                "GA",
                "GB",
                "GD",
                "GE",
                "GF",
                "GG",
                "GH",
                "GI",
                "GL",
                "GM",
                "GN",
                "GP",
                "GQ",
                "GR",
                "GS",
                "GT",
                "GU",
                "GW",
                "GY",
                "HK",
                "HM",
                "HN",
                "HR",
                "HT",
                "HU",
                "ID",
                "IE",
                "IL",
                "IM",
                "IN",
                "IO",
                "IQ",
                "IR",
                "IS",
                "IT",
                "JE",
                "JM",
                "JO",
                "JP",
                "KE",
                "KG",
                "KH",
                "KI",
                "KM",
                "KN",
                "KP",
                "KR",
                "KW",
                "KY",
                "KZ",
                "LA",
                "LB",
                "LC",
                "LI",
                "LK",
                "LR",
                "LS",
                "LT",
                "LU",
                "LV",
                "LY",
                "MA",
                "MC",
                "MD",
                "ME",
                "MF",
                "MG",
                "MH",
                "MK",
                "ML",
                "MM",
                "MN",
                "MO",
                "MP",
                "MQ",
                "MR",
                "MS",
                "MT",
                "MU",
                "MV",
                "MW",
                "MX",
                "MY",
                "MZ",
                "NA",
                "NC",
                "NE",
                "NF",
                "NG",
                "NI",
                "NL",
                "NO",
                "NP",
                "NR",
                "NU",
                "NZ",
                "OM",
                "PA",
                "PE",
                "PF",
                "PG",
                "PH",
                "PK",
                "PL",
                "PM",
                "PN",
                "PR",
                "PS",
                "PT",
                "PW",
                "PY",
                "QA",
                "RE",
                "RO",
                "RS",
                "RU",
                "RW",
                "SA",
                "SB",
                "SC",
                "SD",
                "SE",
                "SG",
                "SH",
                "SI",
                "SJ",
                "SK",
                "SL",
                "SM",
                "SN",
                "SO",
                "SR",
                "SS",
                "ST",
                "SV",
                "SX",
                "SY",
                "SZ",
                "TC",
                "TD",
                "TF",
                "TG",
                "TH",
                "TJ",
                "TK",
                "TL",
                "TM",
                "TN",
                "TO",
                "TR",
                "TT",
                "TV",
                "TW",
                "TZ",
                "UA",
                "UG",
                "UM",
                "US",
                "UY",
                "UZ",
                "VA",
                "VC",
                "VE",
                "VG",
                "VI",
                "VN",
                "VU",
                "WF",
                "WS",
                "YE",
                "YT",
                "ZA",
                "ZM",
                "ZW"
              ]
            },
            "region": {
              "type": "string"
            },
            "city": {
              "type": "string"
            },
            "district": {
              "type": "string",
              "pattern": "\\S"
            },
            "districts": {
              "type": "array",
              "items": {
                "type": "string",
                "pattern": "\\S"
              }
            },
            "town_or_zone": {
              "type": "string"
            }
          },
          "description": "Use a supported ISO country code, not a country name. Explicit districts declare source coverage, not authenticity or representativeness. Do not relabel geography to match the decision."
        },
        "geography": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "properties": {
                "district": {
                  "type": "string",
                  "pattern": "\\S"
                },
                "districts": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "\\S"
                  }
                }
              },
              "additionalProperties": true
            }
          ]
        },
        "temporal": {
          "type": "object",
          "properties": {
            "freshness_date": {
              "type": "string",
              "description": "ISO calendar date for the collection/freshness alias. Must satisfy the same runtime date checks as freshness_date."
            },
            "expired": {
              "type": "boolean",
              "description": "Literal true requires review for decision-relevant evidence, regardless of a recent source date."
            }
          }
        },
        "public_metric_scope": {
          "type": "string",
          "enum": [
            "entity_scale",
            "country_scale",
            "regional_scale",
            "city_scale",
            "site_scale"
          ]
        },
        "public_metrics": {
          "type": "object"
        },
        "structured_values": {
          "type": "object",
          "description": "Ingestible field-observed MVR dimension values. Canonical production scale is 0-100. Accepted core keys: permission, trust, belonging, embeddedness, reciprocity, cultural_fit, guardian_strength, continuity, channel_permission, infrastructural_intimacy, absence_sensitivity, narrative_looping, whispered_credibility, fractal_trust, cultural_calibration. Agent-safety note: if at least two valid core dimensions on the same evidence item are all between 0 and 1, the worker normalizes them from fractional 0-1 to 0-100 before scoring; production clients should still send 0-100 to avoid ambiguity. Do not submit derived concepts such as evidence_completeness, market_carry, local_legitimacy; submit the listed underlying dimensions instead.",
          "additionalProperties": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "x-ingestible-dimensions": [
            "permission",
            "trust",
            "belonging",
            "embeddedness",
            "reciprocity",
            "cultural_fit",
            "guardian_strength",
            "continuity",
            "channel_permission",
            "infrastructural_intimacy",
            "absence_sensitivity",
            "narrative_looping",
            "whispered_credibility",
            "fractal_trust",
            "cultural_calibration"
          ],
          "x-derived-concepts": [
            "evidence_completeness",
            "market_carry",
            "local_legitimacy"
          ],
          "x-canonical-scale": "0-100",
          "x-fraction-scale-normalization": "unambiguous 0-1 core-dimension rows are normalized to 0-100"
        },
        "structured_values_scale": {
          "type": "string",
          "description": "Optional hint for agents. Use '0-1 fraction' only when sending fractional structured_values; otherwise omit and send canonical 0-100 scores."
        },
        "behavioral_values": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "30_day_active_retention_percent": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            }
          },
          "description": "Supported on corporate telemetry. The current check pairs high consumer field permission with low 30_day_active_retention_percent under the configured maturity policy, caps scale at pilot_ready and emits severe_evidence_dissonance_survey_vs_telemetry in scale_recommendation.blueprint_codes. A lower existing pilot_only ceiling need not change. This is not a general trust/churn causal inference; unspecified churn, retention and frequency keys are rejected."
        },
        "structured_values_provenance": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "enum": [
              "observed",
              "proxy-derived",
              "imputed"
            ]
          },
          "description": "Per-dimension map using exact keys present in structured_values, for example {trust:\"observed\",permission:\"imputed\"}. input_score_provenance is not a blanket override and is rejected as an unknown dimension. Provenance affects admitted support and weights; other gates may keep headline scores or confidence unchanged."
        },
        "human_reviewed": {
          "type": "boolean",
          "description": "Caller-declared review required for AI-extracted material before strict or decisive use. Not identity verification, a signature, authenticated reviewer approval or independent source verification."
        },
        "review_status": {
          "type": "string",
          "enum": [
            "pending",
            "approved",
            "accepted",
            "verified",
            "reviewed",
            "rejected"
          ]
        },
        "reviewed_by": {
          "type": "string",
          "description": "Caller-supplied reviewer name for AI-extracted material when human_reviewed=true. The name is not authenticated; supplying it does not establish identity, independence or that review occurred."
        },
        "reviewed_at": {
          "type": "string",
          "format": "date"
        },
        "human_review": {
          "type": "object",
          "description": "Optional structured review record; may include by/reviewer_id, status, and reviewed_at."
        },
        "organ_attestation": {
          "type": "object",
          "description": "MVR Examiner or other organ-produced evidence attestation. The deterministic kernel treats unreviewed organ evidence as imputed/non-decisive."
        },
        "_verifier_attestation": {
          "type": "object",
          "description": "Verifier-organ attestation for extraction review. Internal/audit use; unreviewed AI extraction remains non-decisive."
        },
        "privacy_envelope": {
          "type": "object",
          "properties": {
            "contains_pii": {
              "type": "boolean"
            },
            "contains_sensitive_personal_data": {
              "type": "boolean"
            },
            "consent_basis": {
              "type": "string",
              "enum": [
                "consent",
                "contract",
                "legitimate_interest",
                "public_interest",
                "legal_obligation",
                "not_applicable"
              ]
            },
            "retention_class": {
              "type": "string",
              "enum": [
                "session_only",
                "30d",
                "90d",
                "1y",
                "7y",
                "contractual"
              ]
            },
            "redaction_status": {
              "type": "string",
              "enum": [
                "raw",
                "minimized",
                "redacted",
                "aggregated"
              ]
            },
            "safe_for_modeling": {
              "type": "boolean"
            }
          }
        },
        "uncertainty_envelope": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "source_uncertainty": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "sampling_uncertainty": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "extraction_uncertainty": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "temporal_uncertainty": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "archetype_fit_uncertainty": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "disagreement_uncertainty": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "interval_80": {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "items": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              }
            },
            "score_point_estimate": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "basis": {
              "type": "string"
            }
          },
          "description": "Named 0-1 components influence evidence weighting. interval_80, score_point_estimate and basis are caller-supplied descriptions, not calibrated output intervals or gate overrides. Unknown component names are rejected; uniform reweighting or another cap can leave headline confidence unchanged."
        },
        "survey_payload": {
          "type": "object",
          "properties": {
            "survey_name": {
              "type": "string"
            },
            "population_definition": {
              "type": "string"
            },
            "sample_frame": {
              "type": "string"
            },
            "sampling_method": {
              "type": "string",
              "enum": [
                "probability",
                "quota",
                "convenience",
                "panel",
                "census"
              ]
            },
            "sample_size": {
              "type": "number",
              "exclusiveMinimum": 0
            },
            "effective_sample_size": {
              "type": "number",
              "exclusiveMinimum": 0
            },
            "response_rate_pct": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "geo_resolution": {
              "type": "string",
              "enum": [
                "national",
                "regional",
                "district",
                "ward",
                "site"
              ]
            },
            "fieldwork_start": {
              "type": "string",
              "format": "date"
            },
            "fieldwork_end": {
              "type": "string",
              "format": "date"
            }
          },
          "description": "For survey evidence, include survey_name, population_definition, sampling_method and sample_frame. Panel and census are accepted sampling methods. Census additionally requires consistent declared population_size and sample_size; it never bypasses weighted admission or establishes representativeness."
        },
        "payload": {
          "type": "object",
          "description": "Generic typed evidence payload, including telemetry or evaluation details. Retains supplied context only; prose does not become observed numeric scores or authenticated proof. Evaluation payloads need evaluator_name.",
          "properties": {
            "evaluator_name": {
              "type": "string"
            },
            "evaluation_date": {
              "type": "string",
              "format": "date"
            },
            "methodology": {
              "type": "string"
            }
          }
        },
        "program_payload": {
          "type": "object",
          "required": [
            "program_name",
            "beneficiary_definition"
          ],
          "properties": {
            "program_name": {
              "type": "string",
              "minLength": 1
            },
            "beneficiary_definition": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "admin_data_payload": {
          "type": "object",
          "required": [
            "collection_authority"
          ],
          "properties": {
            "collection_authority": {
              "type": "string",
              "minLength": 1
            },
            "extraction_date": {
              "type": "string",
              "format": "date"
            },
            "reporting_completeness_pct": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            }
          }
        },
        "retail_audit_payload": {
          "type": "object",
          "required": [
            "outlet_frame",
            "coverage_universe",
            "stock_check_method"
          ],
          "properties": {
            "outlet_frame": {
              "type": "string",
              "minLength": 1
            },
            "coverage_universe": {
              "type": "string",
              "minLength": 1
            },
            "stock_check_method": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "provenance_ledger": {
          "type": "object",
          "properties": {
            "source_family": {
              "type": "string"
            },
            "collection_date": {
              "type": "string",
              "description": "ISO calendar date for the collection/freshness alias. Must satisfy the same runtime date checks as freshness_date."
            },
            "source_doc_id": {
              "type": "string"
            },
            "source_locator": {
              "type": "string"
            },
            "extraction_method": {
              "type": "string",
              "enum": [
                "human",
                "deterministic_parser",
                "llm_inferred",
                "automated_query"
              ]
            },
            "extraction_confidence": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "compiler_stage": {
              "type": "string"
            },
            "data_integrity": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "variance_anomaly_detected": {
                  "type": "boolean",
                  "description": "Caller-declared variance anomaly, not a numeric variance score. True constrains the decision ceiling and requires source corroboration."
                },
                "bot_or_farm_probability": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "description": "Caller-supplied finite 0-1 bot/farm-risk estimate from an upstream assessment. AMOS does not calculate this probability from source prose."
                }
              },
              "description": "Optional declared integrity signals, honored for flat evidence and compiled lanes. Unknown keys, null, invalid types and out-of-range values are rejected. Omission or an empty object means no assessment supplied, not a clean bill of health. In client_safe read scale_recommendation.blueprint_codes and decision_authorization, including data_integrity_gate.blocking_alerts when blocked. data_quality.integrity_alerts is an internal/full diagnostic path and may be omitted by projection. A confidence or candidate label alone is not the gate result. These are configured review controls, not independently verified anti-fraud detection."
            }
          }
        },
        "source_artifacts": {
          "type": "array",
          "maxItems": 20,
          "items": {
            "type": "object",
            "required": [
              "artifact_id",
              "media_type"
            ],
            "properties": {
              "artifact_id": {
                "type": "string"
              },
              "media_type": {
                "type": "string"
              },
              "storage_uri": {
                "type": "string"
              },
              "sha256": {
                "type": "string"
              },
              "extraction_method": {
                "type": "string",
                "enum": [
                  "human",
                  "deterministic_parser",
                  "llm_inferred",
                  "automated_query"
                ]
              },
              "extractor_version": {
                "type": "string"
              },
              "extracted_at": {
                "type": "string",
                "format": "date-time"
              },
              "human_reviewed": {
                "type": "boolean"
              }
            }
          }
        }
      }
    }
  }
}