{
  "openapi": "3.1.0",
  "info": {
    "title": "Palimpsest Public Readings API",
    "version": "1.9.0",
    "description": "Stable public readings from Palimpsest's censorship observatory, revision-safe China Economic Observatory, evidence-bound AI Eval Journal and verifiable AI evaluation registry. The API also exposes the evidence wire, bounded social observation ledger, combined China Situation index, per-event analysis layer, primary-document archive, corroboration ledger, longitudinal network rounds, review-gated newsroom and deterministic machine-analysis desk. Every reading carries its own freshness and scope. Missing evidence is not evidence of calm."
  },
  "servers": [{"url": "https://palimpsest.info"}],
  "externalDocs": {
    "description": "MCP and API quickstart",
    "url": "https://palimpsest.info/developers.html"
  },
  "components": {
    "schemas": {
      "Reading": {
        "type": "object",
        "description": "A published reading whose exact fields depend on the named instrument.",
        "additionalProperties": true
      },
      "DataCatalog": {
        "type": "object",
        "description": "The Evidence Atlas catalog with provenance, rights, cadence, freshness and distribution metadata.",
        "required": ["schema", "generated_at", "summary", "datasets"],
        "additionalProperties": true
      },
      "EvidenceNewswire": {
        "$ref": "https://palimpsest.info/protocol/newswire-v1.schema.json"
      },
      "EventAnalysis": {
        "$ref": "https://palimpsest.info/protocol/event-analysis-v2.schema.json"
      },
      "InstrumentAnalysis": {
        "$ref": "https://palimpsest.info/protocol/instrument-analysis.schema.json"
      },
      "ChinaArticleStream": {
        "$ref": "https://palimpsest.info/protocol/china-article-stream-v1.schema.json"
      },
      "SocialObservations": {
        "$ref": "https://palimpsest.info/protocol/social-observations-v1.schema.json"
      },
      "SocialSpread": {
        "$ref": "https://palimpsest.info/protocol/social-spread-v1.schema.json"
      },
      "ChinaSituation": {
        "$ref": "https://palimpsest.info/protocol/china-situation-v1.schema.json"
      },
      "TelegramWatch": {
        "$ref": "https://palimpsest.info/protocol/telegram-watch-v1.schema.json"
      },
      "ChinaIndex": {
        "$ref": "https://palimpsest.info/protocol/china-index-v1.schema.json"
      },
      "ChinaEconomicPulse": {
        "$ref": "https://palimpsest.info/protocol/economic-pulse-v1.schema.json"
      },
      "ChinaEconomicObservation": {
        "$ref": "https://palimpsest.info/protocol/economic-observation-v1.schema.json"
      },
      "ChinaEconomicObservationManifest": {
        "$ref": "https://palimpsest.info/protocol/economic-observation-manifest-v1.schema.json"
      },
      "ChinaEconomicForecast": {
        "$ref": "https://palimpsest.info/protocol/economic-forecast-v1.schema.json"
      },
      "Investigations": {
        "$ref": "https://palimpsest.info/protocol/investigations-v1.schema.json"
      },
      "EvidenceMesh": {
        "$ref": "https://palimpsest.info/protocol/evidence-mesh-v1.schema.json"
      },
      "MachineInvestigations": {
        "$ref": "https://palimpsest.info/protocol/machine-investigations-v1.schema.json"
      },
      "PrimaryDocuments": {
        "$ref": "https://palimpsest.info/protocol/primary-documents-v1.schema.json"
      },
      "Corroboration": {
        "$ref": "https://palimpsest.info/protocol/corroboration-v1.schema.json"
      },
      "NetworkRounds": {
        "$ref": "https://palimpsest.info/protocol/network-rounds-v1.schema.json"
      },
      "SourceWorkflow": {
        "$ref": "https://palimpsest.info/protocol/source-workflow-v1.schema.json"
      },
      "EditorialReadiness": {
        "$ref": "https://palimpsest.info/protocol/editorial-readiness-v1.schema.json"
      },
      "EvalAssurance": {
        "$ref": "https://palimpsest.info/protocol/eval-assurance-v1.schema.json"
      },
      "EvalJournal": {
        "$ref": "https://palimpsest.info/protocol/eval-journal-v1.schema.json"
      },
      "EvalFindings": {
        "type": "object",
        "description": "Deterministic live articles built from a verified refusal-drift panel, with controls, uncertainty and sentence receipts.",
        "required": ["schema_version", "generated_at", "source", "scope", "publication_policy", "n_articles", "articles"],
        "properties": {
          "schema_version": {"type": "string", "const": "palimpsest-eval-journal.v1"},
          "generated_at": {"type": "string", "format": "date-time"},
          "n_articles": {"type": "integer", "minimum": 1},
          "articles": {"type": "array", "minItems": 1, "items": {"type": "object", "additionalProperties": true}}
        },
        "additionalProperties": true
      },
      "GFITranscripts": {
        "type": "object",
        "description": "The complete GFI v2 response matrix. Model keys contain preregistered prompt-arm keys, each containing every sampled response or a null transport abstention.",
        "required": ["schema", "generated_at", "method_version", "suite", "probe_commitment", "evaluation_protocol_sha256", "protocol", "n_models", "n_prompt_arms", "samples_per_cell", "n_cells", "n_samples", "responses", "verify_cmd"],
        "properties": {
          "schema": {"type": "string", "const": "palimpsest.gfi-transcripts.v2"},
          "generated_at": {"type": "string", "format": "date-time"},
          "method_version": {"type": "integer", "minimum": 1},
          "suite": {"type": "string", "const": "cn-sensitive-generative-firewall-v2"},
          "probe_commitment": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
          "evaluation_protocol_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
          "protocol": {"type": "string", "const": "readings/gfi-evaluation-protocol-v2.json"},
          "n_models": {"type": "integer", "minimum": 1},
          "n_prompt_arms": {"type": "integer", "minimum": 1},
          "samples_per_cell": {"type": "integer", "minimum": 1},
          "n_cells": {"type": "integer", "minimum": 1},
          "n_samples": {"type": "integer", "minimum": 1},
          "responses": {
            "type": "object",
            "minProperties": 1,
            "additionalProperties": {
              "type": "object",
              "minProperties": 1,
              "additionalProperties": {
                "type": "array",
                "minItems": 1,
                "items": {"type": ["string", "null"]}
              }
            }
          },
          "verify_cmd": {"type": "string", "const": "python -m scripts.verify_gfi_transcripts"}
        },
        "additionalProperties": true
      },
      "NewsroomDenominator": {
        "type": "object",
        "required": ["label", "value"],
        "properties": {
          "label": {"type": ["string", "null"], "maxLength": 1000},
          "value": {"type": ["integer", "null"], "minimum": 0, "maximum": 9007199254740991}
        },
        "additionalProperties": false
      },
      "NewsroomMetric": {
        "type": "object",
        "required": ["label", "value", "unit", "denominator"],
        "properties": {
          "label": {"type": ["string", "null"], "maxLength": 1000},
          "value": {"type": ["number", "null"], "minimum": -9007199254740991, "maximum": 9007199254740991},
          "unit": {"type": ["string", "null"], "maxLength": 1000},
          "denominator": {"$ref": "#/components/schemas/NewsroomDenominator"}
        },
        "additionalProperties": false
      },
      "NewsroomClaim": {
        "type": "object",
        "required": ["type", "statement"],
        "properties": {
          "type": {"type": "string", "enum": ["finding", "observation", "method", "integrity", "availability"]},
          "statement": {"type": "string", "minLength": 1, "maxLength": 1000}
        },
        "additionalProperties": false
      },
      "NewsroomEvidenceInput": {
        "type": "object",
        "required": ["filename", "sha256", "bytes"],
        "properties": {
          "filename": {"type": "string", "minLength": 6, "maxLength": 128, "pattern": "^[a-z0-9][a-z0-9.-]{0,126}\\.json$"},
          "sha256": {"type": ["string", "null"], "pattern": "^[0-9a-f]{64}$"},
          "bytes": {"type": ["integer", "null"], "minimum": 0, "maximum": 9007199254740991}
        },
        "additionalProperties": false
      },
      "NewsroomEvidence": {
        "type": "object",
        "required": ["url", "input", "source_timestamp"],
        "properties": {
          "url": {"type": "string", "format": "uri", "pattern": "^https://palimpsest\\.info/readings/[a-z0-9][a-z0-9.-]{0,126}\\.json$"},
          "input": {"$ref": "#/components/schemas/NewsroomEvidenceInput"},
          "source_timestamp": {"type": ["string", "null"], "format": "date-time"}
        },
        "additionalProperties": false
      },
      "NewsroomMethod": {
        "type": "object",
        "required": ["summary", "version"],
        "properties": {
          "summary": {"type": "string", "minLength": 1},
          "version": {
            "oneOf": [
              {"type": "integer", "minimum": 1},
              {"type": "string", "minLength": 1},
              {"type": "null"}
            ]
          }
        },
        "additionalProperties": false
      },
      "NewsroomSection": {
        "type": "object",
        "required": ["id", "title", "dek", "order"],
        "properties": {
          "id": {"type": "string", "pattern": "^[a-z][a-z0-9-]{0,63}$"},
          "title": {"type": "string", "minLength": 1},
          "dek": {"type": "string", "minLength": 1},
          "order": {"type": "integer", "minimum": 1, "maximum": 512}
        },
        "additionalProperties": false
      },
      "NewsroomCoverageCounts": {
        "type": "object",
        "required": ["live", "degraded", "stale", "missing", "corrupt"],
        "properties": {
          "live": {"type": "integer", "minimum": 0, "maximum": 9007199254740991},
          "degraded": {"type": "integer", "minimum": 0, "maximum": 9007199254740991},
          "stale": {"type": "integer", "minimum": 0, "maximum": 9007199254740991},
          "missing": {"type": "integer", "minimum": 0, "maximum": 9007199254740991},
          "corrupt": {"type": "integer", "minimum": 0, "maximum": 9007199254740991}
        },
        "additionalProperties": false
      },
      "NewsroomCoverage": {
        "type": "object",
        "required": ["total", "reporting", "live", "status", "counts"],
        "properties": {
          "total": {"type": "integer", "minimum": 0, "maximum": 9007199254740991},
          "reporting": {"type": "integer", "minimum": 0, "maximum": 9007199254740991},
          "live": {"type": "integer", "minimum": 0, "maximum": 9007199254740991},
          "status": {"type": "string", "enum": ["healthy", "degraded"]},
          "counts": {"$ref": "#/components/schemas/NewsroomCoverageCounts"}
        },
        "additionalProperties": false
      },
      "NewsroomStory": {
        "type": "object",
        "required": ["id", "slug", "url", "signal_id", "headline", "dek", "section", "order", "type", "priority", "status", "published_at", "modified_at", "claim_fingerprint", "metric", "claims", "evidence", "method", "limitations", "related_signal_ids"],
        "properties": {
          "id": {"type": "string", "pattern": "^palimpsest-news:[a-z][a-z0-9-]{0,63}$"},
          "slug": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"},
          "url": {"type": "string", "format": "uri", "pattern": "^https://palimpsest\\.info/news/[a-z0-9]+(?:-[a-z0-9]+)*/$"},
          "signal_id": {"type": "string", "pattern": "^[a-z][a-z0-9-]{0,63}$"},
          "headline": {"type": "string", "minLength": 1},
          "dek": {"type": "string", "minLength": 1},
          "section": {"type": "string", "pattern": "^[a-z][a-z0-9-]{0,63}$"},
          "order": {"type": "integer", "minimum": 1, "maximum": 512},
          "type": {"type": "string", "enum": ["analysis", "measurement", "methodology", "integrity", "intelligence"]},
          "priority": {"type": "string", "enum": ["lead", "high", "standard", "background"]},
          "status": {"type": "string", "enum": ["live", "degraded", "stale", "missing", "corrupt"]},
          "published_at": {"type": "string", "format": "date-time"},
          "modified_at": {"type": "string", "format": "date-time"},
          "claim_fingerprint": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
          "metric": {"$ref": "#/components/schemas/NewsroomMetric"},
          "claims": {"type": "array", "minItems": 1, "maxItems": 1, "items": {"$ref": "#/components/schemas/NewsroomClaim"}},
          "evidence": {"$ref": "#/components/schemas/NewsroomEvidence"},
          "method": {"$ref": "#/components/schemas/NewsroomMethod"},
          "limitations": {"type": "array", "minItems": 1, "maxItems": 9, "uniqueItems": true, "items": {"type": "string", "minLength": 1, "maxLength": 1000}},
          "related_signal_ids": {"type": "array", "maxItems": 12, "uniqueItems": true, "items": {"type": "string", "pattern": "^[a-z][a-z0-9-]{0,63}$"}}
        },
        "additionalProperties": false
      },
      "NewsroomFeed": {
        "type": "object",
        "description": "Strict deterministic newsroom edition projected from the normalized OSINT China board. Every story carries an evidence URL, input digest, method and limitations.",
        "required": ["schema_version", "feed_id", "title", "headline", "url", "generated_at", "n_stories", "source", "source_commit", "method", "scope", "coverage", "sections", "stories"],
        "properties": {
          "schema_version": {"type": "string", "const": "palimpsest-news.v1"},
          "feed_id": {"type": "string", "const": "palimpsest-china-newsroom"},
          "title": {"type": "string", "minLength": 1},
          "headline": {"type": "string", "minLength": 1, "maxLength": 1000},
          "url": {"type": "string", "const": "https://palimpsest.info/news/"},
          "generated_at": {"type": "string", "format": "date-time"},
          "n_stories": {"type": "integer", "minimum": 0, "maximum": 9007199254740991},
          "source": {"type": "string", "const": "https://palimpsest.info/readings/osint-china-latest.json"},
          "source_commit": {"type": "string", "pattern": "^[0-9a-f]{40}$"},
          "method": {"type": "string", "minLength": 1},
          "scope": {"type": "string", "minLength": 1},
          "coverage": {"$ref": "#/components/schemas/NewsroomCoverage"},
          "sections": {"type": "array", "minItems": 1, "maxItems": 32, "uniqueItems": true, "items": {"$ref": "#/components/schemas/NewsroomSection"}},
          "stories": {"type": "array", "minItems": 1, "maxItems": 512, "uniqueItems": true, "items": {"$ref": "#/components/schemas/NewsroomStory"}}
        },
        "additionalProperties": false
      }
    },
    "responses": {
      "Reading": {
        "description": "Published JSON reading",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Reading"}}}
      },
      "DataCatalog": {
        "description": "Published machine-readable dataset catalog",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DataCatalog"}}}
      },
      "EvidenceNewswire": {
        "description": "Published metadata-only evidence wire with source coverage receipts",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EvidenceNewswire"}}}
      },
      "EventAnalysis": {
        "description": "Content-addressed Palimpsest assessment of one event using source structure and declared collector context",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EventAnalysis"}}}
      },
      "InstrumentAnalysis": {
        "description": "Deterministic companion brief for one newsroom instrument story and its public reading",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstrumentAnalysis"}}}
      },
      "ChinaArticleStream": {
        "description": "Newest-first China publisher items with evidence-bound Palimpsest analysis and a separate reviewed Telegram context lane",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChinaArticleStream"}}}
      },
      "SocialObservations": {
        "description": "Closed-registry institutional Telegram and Instagram metadata with per-source coverage and append-only revision identities; never corroboration",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SocialObservations"}}}
      },
      "SocialSpread": {
        "description": "Public-board spreading terms matched only to already-captured Palimpsest records; topic surface only, never a missing-person finding",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SocialSpread"}}}
      },
      "ChinaSituation": {
        "description": "Evidence-bound synthesis of publisher reports, exact-link social observations, reviewed source-free Telegram context and declared Observatory measurements",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChinaSituation"}}}
      },
      "ChinaIndex": {
        "description": "Published machine-readable index of China Observatory sources, releases, datasets, readiness and evidence rails",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChinaIndex"}}}
      },
      "ChinaEconomicPulse": {
        "description": "Published revision-safe China economic state dossier",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChinaEconomicPulse"}}}
      },
      "ChinaEconomicObservationManifest": {
        "description": "Published manifest for the aggregate append-only China economic observation ledger",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChinaEconomicObservationManifest"}}}
      },
      "ChinaEconomicObservationLedger": {
        "description": "Append-only JSON Lines ledger; every non-empty line is one aggregate economic observation with separate release and collection clocks, revision and provenance hashes",
        "content": {"application/x-ndjson": {"schema": {"type": "string", "contentMediaType": "application/x-ndjson"}, "x-jsonl-item-schema": {"$ref": "#/components/schemas/ChinaEconomicObservation"}}}
      },
      "ChinaEconomicForecast": {
        "description": "Named-series pseudo-real-time economic forecast backtests with frozen promotion gates and explicit abstention",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChinaEconomicForecast"}}}
      },
      "Investigations": {
      "description": "Review-gated research leads and reviewed investigations with evidence receipts, counterevidence and falsifiers",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Investigations"}}}
      },
      "EvidenceMesh": {
        "description": "Deterministic inventory of eligible public aggregate evidence, source lineage, freshness and rights gates",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EvidenceMesh"}}}
      },
      "MachineInvestigations": {
        "description": "Deterministic AnalysisReports and AbstentionReports with sentence-level citations and evaluation receipts",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MachineInvestigations"}}}
      },
      "PrimaryDocuments": {
        "description": "Metadata-only revision receipts for exact primary-source bytes retained in private immutable storage",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PrimaryDocuments"}}}
      },
      "Corroboration": {
        "description": "Candidate and human-reviewed event-to-primary-document evidence links",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Corroboration"}}}
      },
      "NetworkRounds": {
        "description": "Frozen-panel longitudinal network round receipts with scoped vantages and controls",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NetworkRounds"}}}
      },
      "SourceWorkflow": {
        "description": "Privacy-minimized aggregate readiness for protected human-source records",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SourceWorkflow"}}}
      },
      "EditorialReadiness": {
        "description": "Recomputed wire, explainer and investigation publication gates",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EditorialReadiness"}}}
      },
      "EvalAssurance": {
        "description": "Machine-recomputed claim ceiling over the public AI-evaluation evidence",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EvalAssurance"}}}
      },
      "EvalJournal": {
        "description": "Evidence-bound AI-evaluation essays with limitations, falsifiers and source receipts",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EvalJournal"}}}
      },
      "EvalFindings": {
        "description": "Current deterministic AI-evaluation findings with sentence receipts and immutable revisions",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EvalFindings"}}}
      },
      "GFITranscripts": {
        "description": "Every response and null transport abstention in the current sealed GFI v2 sample matrix",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GFITranscripts"}}}
      },
      "NewsroomFeed": {
        "description": "Published structured newsroom edition",
        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NewsroomFeed"}}}
      }
    }
  },
  "paths": {
    "/readings/catalog.json": {"get": {
      "operationId": "getEvidenceAtlasCatalog",
      "summary": "Discover every documented dataset, its provenance, freshness, rights and files",
      "responses": {"200": {"$ref": "#/components/responses/DataCatalog"}}
    }},
    "/readings/catalog.jsonld": {"get": {
      "operationId": "getEvidenceAtlasJsonLd",
      "summary": "Discover available datasets as schema.org/DCAT JSON-LD",
      "responses": {"200": {"description": "JSON-LD data catalog", "content": {"application/ld+json": {"schema": {"type": "object", "additionalProperties": true}}}}}
    }},
    "/readings/newsroom-latest.json": {"get": {
      "operationId": "getNewsroomFeed",
      "summary": "Read the latest deterministic, evidence-linked newsroom edition",
      "responses": {"200": {"$ref": "#/components/responses/NewsroomFeed"}}
    }},
    "/readings/newswire-latest.json": {"get": {
      "operationId": "getEvidenceNewswire",
      "summary": "Read normalized RSS and Atom event dossiers with explicit source coverage and evidence independence",
      "responses": {"200": {"$ref": "#/components/responses/EvidenceNewswire"}}
    }},
    "/readings/china-article-stream-latest.json": {"get": {
      "operationId": "getChinaArticleStream",
      "summary": "Read every monitored China publisher item with its evidence position, unknowns and next checks",
      "responses": {"200": {"$ref": "#/components/responses/ChinaArticleStream"}}
    }},
    "/readings/social-observations-latest.json": {"get": {
      "operationId": "getSocialObservations",
      "summary": "Read bounded institutional social observations with source coverage and non-corroboration labels",
      "responses": {"200": {"$ref": "#/components/responses/SocialObservations"}}
    }},
    "/readings/china-situation-latest.json": {"get": {
      "operationId": "getChinaSituation",
      "summary": "Read combined China situations while preserving reporting, social, reviewed Telegram and measurement evidence roles",
      "responses": {"200": {"$ref": "#/components/responses/ChinaSituation"}}
    }},
    "/news/wire/{event_id}/analysis.json": {"get": {
      "operationId": "getEventAnalysis",
      "summary": "Read Palimpsest's evidence-bounded assessment and declared collector context for one wire event",
      "parameters": [{
        "name": "event_id",
        "in": "path",
        "required": true,
        "schema": {"type": "string", "pattern": "^event-[0-9a-f]{24}$"}
      }],
      "responses": {"200": {"$ref": "#/components/responses/EventAnalysis"}}
    }},
    "/news/{slug}/analysis.json": {"get": {
      "operationId": "getInstrumentAnalysis",
      "summary": "Read the deterministic companion brief for one newsroom instrument story and its public reading",
      "parameters": [{
        "name": "slug",
        "in": "path",
        "required": true,
        "schema": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"}
      }],
      "responses": {"200": {"$ref": "#/components/responses/InstrumentAnalysis"}}
    }},
    "/readings/china-index-latest.json": {"get": {
      "operationId": "getChinaObservatoryIndex",
      "summary": "Discover China Observatory sources, releases, economic state, readiness and machine-readable datasets",
      "responses": {"200": {"$ref": "#/components/responses/ChinaIndex"}}
    }},
    "/readings/china-economic-pulse-latest.json": {"get": {
      "operationId": "getChinaEconomicPulse",
      "summary": "Read the revision-safe economic pulse, coverage gates, divergences and abstentions",
      "responses": {"200": {"$ref": "#/components/responses/ChinaEconomicPulse"}}
    }},
    "/readings/china-econ-observations-latest.json": {"get": {
      "operationId": "getChinaEconomicObservationManifest",
      "summary": "Read the integrity, coverage and query contract for the China economic observation ledger",
      "responses": {"200": {"$ref": "#/components/responses/ChinaEconomicObservationManifest"}}
    }},
    "/readings/china-econ-observations.jsonl": {"get": {
      "operationId": "getChinaEconomicObservationLedger",
      "summary": "Download the append-only bitemporal aggregate China economic observation ledger",
      "responses": {"200": {"$ref": "#/components/responses/ChinaEconomicObservationLedger"}}
    }},
    "/readings/china-econ-forecast-latest.json": {"get": {
      "operationId": "getChinaEconomicForecast",
      "summary": "Read named-series pseudo-real-time backtests, promotion gates, forecast status and abstentions",
      "responses": {"200": {"$ref": "#/components/responses/ChinaEconomicForecast"}}
    }},
    "/readings/investigations-latest.json": {"get": {
      "operationId": "getInvestigations",
      "summary": "Read review-gated research leads with evidence receipts, counterevidence and falsification conditions",
      "responses": {"200": {"$ref": "#/components/responses/Investigations"}}
    }},
    "/readings/evidence-mesh-latest.json": {"get": {
      "operationId": "getEvidenceMesh",
      "summary": "Read the deterministic inventory of eligible evidence, lineage, freshness and reuse gates",
      "responses": {"200": {"$ref": "#/components/responses/EvidenceMesh"}}
    }},
    "/readings/machine-investigations-latest.json": {"get": {
      "operationId": "getMachineInvestigations",
      "summary": "Read deterministic machine analyses and explicit evidence-gate abstentions",
      "responses": {"200": {"$ref": "#/components/responses/MachineInvestigations"}}
    }},
    "/readings/primary-documents-latest.json": {"get": {
      "operationId": "getPrimaryDocuments",
      "summary": "Read immutable primary-document revision receipts and explicit collection failures",
      "responses": {"200": {"$ref": "#/components/responses/PrimaryDocuments"}}
    }},
    "/readings/corroboration-latest.json": {"get": {
      "operationId": "getCorroboration",
      "summary": "Read conservative candidate links and recorded editorial corroboration decisions",
      "responses": {"200": {"$ref": "#/components/responses/Corroboration"}}
    }},
    "/readings/network-rounds-latest.json": {"get": {
      "operationId": "getNetworkRounds",
      "summary": "Read frozen-panel network rounds with protocol, vantage, timing and outage controls",
      "responses": {"200": {"$ref": "#/components/responses/NetworkRounds"}}
    }},
    "/readings/source-workflow-latest.json": {"get": {
      "operationId": "getSourceWorkflow",
      "summary": "Read privacy-minimized human-source consent, verification, safety and reply readiness",
      "responses": {"200": {"$ref": "#/components/responses/SourceWorkflow"}}
    }},
    "/readings/editorial-readiness-latest.json": {"get": {
      "operationId": "getEditorialReadiness",
      "summary": "Read machine-recomputed evidence and human-reporting publication gates",
      "responses": {"200": {"$ref": "#/components/responses/EditorialReadiness"}}
    }},
    "/datapackage.json": {"get": {
      "operationId": "getEvidenceDataPackage",
      "summary": "Discover currently available files as a Frictionless-style data package",
      "responses": {"200": {"description": "Data package", "content": {"application/json": {"schema": {"type": "object", "additionalProperties": true}}}}}
    }},
    "/readings/board-alarm-latest.json": {"get": {
      "operationId": "getCensorshipBoardAlarm",
      "summary": "Read the cross-signal board verdict and multiplicity-aware alarm state",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }},
    "/readings/coverage-guard-latest.json": {"get": {
      "operationId": "getCoverageGuard",
      "summary": "Read measurement coverage failures and confounds",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }},
    "/readings/erasure-observatory-latest.json": {"get": {
      "operationId": "getErasureObservatory",
      "summary": "Read the composite erasure observatory state",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }},
    "/readings/undertext-latest.json": {"get": {
      "operationId": "getUndertextFusion",
      "summary": "Read fat UNDERTEXT reconstructions: public text, archives, hashes, joins and uncertainty",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }},
    "/readings/wayback-latest.json": {"get": {
      "operationId": "getWaybackReconstructions",
      "summary": "Read Internet Archive reconstructions of public Chinese URLs",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }},
    "/readings/weibo-hotsearch-latest.json": {"get": {
      "operationId": "getWeiboHotsearch",
      "summary": "Read the public Weibo hot-search archive used as an allowed-attention denominator",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }},
    "/readings/erasure-trail-latest.json": {"get": {
      "operationId": "getErasureTrail",
      "summary": "Read fat journalist reconstructions: public text, archives, hashes, joins and uncertainty",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }},
    "/readings/erasure-trail.csv": {"get": {
      "operationId": "getErasureTrailCsv",
      "summary": "Download the journalist evidence trail as UTF-8 CSV for citation and export",
      "responses": {"200": {"description": "CSV evidence trail", "content": {"text/csv": {"schema": {"type": "string"}}}}}
    }},
    "/readings/eval-registry-latest.json": {"get": {
      "operationId": "getVerifiableEvalRegistry",
      "summary": "Read the latest verified evaluation-registry head and Merkle root",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }},
    "/readings/eval-assurance-latest.json": {"get": {
      "operationId": "getEvalAssurance",
      "summary": "Read what the public AI-evaluation evidence can and cannot claim",
      "responses": {"200": {"$ref": "#/components/responses/EvalAssurance"}}
    }},
    "/readings/eval-journal-latest.json": {"get": {
      "operationId": "getEvalJournal",
      "summary": "Read evidence-bound AI-evaluation articles and their exact source receipts",
      "responses": {"200": {"$ref": "#/components/responses/EvalJournal"}}
    }},
    "/readings/eval-articles-latest.json": {"get": {
      "operationId": "getLiveEvalFindings",
      "summary": "Read current deterministic eval findings, controls, uncertainty and sentence receipts",
      "responses": {"200": {"$ref": "#/components/responses/EvalFindings"}}
    }},
    "/readings/gfi-transcripts-latest.json": {"get": {
      "operationId": "getGFITranscripts",
      "summary": "Read the complete response matrix behind the current sealed GFI v2 evaluation",
      "responses": {"200": {"$ref": "#/components/responses/GFITranscripts"}}
    }},
    "/readings/refusal-drift-latest.json": {"get": {
      "operationId": "getRefusalDrift",
      "summary": "Read the latest frontier-model refusal-drift evaluation",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }},
    "/readings/ooni-gfw-latest.json": {"get": {
      "operationId": "getGreatFirewallReading",
      "summary": "Read outside-in Great Firewall reachability measurements",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }},
    "/readings/inside-view-latest.json": {"get": {
      "operationId": "getInsideView",
      "summary": "Read DNS-injection measurements from mainland-China probes",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }},
    "/readings/latest.json": {"get": {
      "operationId": "getDeletionAsDataReading",
      "summary": "Read the latest deletion-as-data censorship ranking",
      "responses": {"200": {"$ref": "#/components/responses/Reading"}}
    }}
  }
}
