# CLAUDE-schema-full.md — Schema Canônico dos 24 Tipos

> Versão `0.1.0` · Companheiro de [`CLAUDE.md`](CLAUDE.md). Toda página `.md` em `wiki/` e `case/` valida contra um dos 24 tipos abaixo.

## 0.1 Bilingual field convention

For every narrative text field listed below, there is an implicit `<field>_pt_br` sibling holding the **Brazilian Portuguese** translation. The vision call generates both at once. Examples:

| EN field | PT-BR sibling |
|---|---|
| `vision_description` | `vision_description_pt_br` |
| `narrative_summary` (events) | `narrative_summary_pt_br` |
| `executive_summary` (documents — when present as a structured field) | `executive_summary_pt_br` |
| `description` (gaps) | `description_pt_br` |
| `definition_short` (concepts) | `definition_short_pt_br` |
| `verdict_rationale` (witnesses) | `verdict_rationale_pt_br` |
| `connection_description` (relations) | `connection_description_pt_br` |

Fields that are NEVER translated (always in source language):

- OCR text, `verbatim_excerpt`, `verbatim_quotes`, `caption_ocr`
- Enums (`page_type`, `content_classification`, `evidence_grade`, etc.)
- Classification markings (`SECRET//NOFORN`), redaction codes (`(b)(1) 1.4(a)`)
- `canonical_name` (use `aliases[]` for PT-BR forms)

## 0.2 The `war_gov` frontmatter block (injected by 02b-enrich-with-web-metadata.py)

Documents matched against the war.gov metadata JSON get a `war_gov` block injected into the top-level frontmatter. The block is **never overwritten** by re-runs — only created or updated as new fields appear.

```yaml
war_gov:
  record_id: record-061              # canonical war.gov id (record-001..record-NNN)
  title_official: "DOW-UAP-D054, ..."  # title as listed on war.gov (uppercase, comma-separated)
  agency_official: "DEPARTMENT OF WAR"
  release_date_official: "2026-05-08"  # ISO YYYY-MM-DD (parsed from "5/8/26")
  release_date_raw: "5/8/26"           # verbatim from portal
  incident_date_official: "1947-12-30" # ISO; "NA" when source is "N/A" or empty
  incident_date_raw: "12/30/47"
  incident_date_confidence: high       # high | medium | low | none | speculation
  incident_location_official: "MEDITERRANEAN SEA"
  document_type_official: ".PDF"       # .PDF | .VID | .IMG
  match_reason: "primary-id=dow-uap-d54"  # how the matcher tied this doc to the record
  availability: downloaded             # downloaded | pending-upstream (placeholder bug on portal)
  extracted_from_war_gov_at: "2026-05-13T14:43:22Z"
```

When `incident_date_official ≠ "NA"` and the document still has `document_date: "NA"` at top-level, the enricher promotes the incident_date to fill `document_date`.

Records `record-140`, `record-154`, `record-155`, `record-156` get `availability: pending-upstream` because the war.gov backend serves placeholder files for them (see `memory/project-war-gov-placeholders.md`).

## 0. Common types

```yaml
# ConfidenceBand
confidence_band: high | medium | low | speculation

# EvidenceGrade (Locard)
# A = primary source, autenticada, cadeia limpa
# B = primary source, cadeia com 1 gap menor
# C = secondary source, paraphrase oficial
# D = secondary source, terceira mão
# E = uncorroborated single witness
# F = anecdotal, hearsay

# BBox (normalizado 0..1 nas coordenadas da página)
bbox:
  x: 0.123
  y: 0.456
  w: 0.234
  h: 0.089

# ClassificationMarking
classification_markings:
  - level: SECRET                # UNCLASSIFIED | CUI | CONFIDENTIAL | SECRET | TOP SECRET
    caveats: [NOFORN, ORCON]
    location: header             # header | footer | banner | stamp
    bbox: { x: 0.0, y: 0.0, w: 1.0, h: 0.04 }

# Redaction
redactions:
  - code: "(b)(1) 1.4(a)"
    description: "national defense"
    bbox: { x: 0.2, y: 0.45, w: 0.4, h: 0.03 }
    text_inferred: null
```

## 1. `document` — `wiki/documents/<doc-id>.md`

```yaml
---
schema_version: "0.1.0"
type: document
doc_id: dow-uap-d54-mission-report-mediterranean-sea-na
canonical_title: "Mission Report — Mediterranean Sea (date NA)"
original_filename: "DOW-UAP-D54-Mission-Report-Mediterranean-Sea-NA.pdf"
raw_path: "../raw/DOW-UAP-D54-Mission-Report-Mediterranean-Sea-NA.pdf"
sha256: "a3f2..."
size_bytes: 20095
page_count: 7
mime_type: "application/pdf"

collection: DOW-UAP             # DOW-UAP | DOS-UAP | NASA-UAP | FBI-Vault | FBI-Photo | Incident-Summaries | FOIA-059UAP | Numeric-Files | Other
document_class: mission-report  # mission-report | range-fouler-debrief | email-correspondence | diplomatic-cable | apollo-transcript | crew-debriefing | photograph | incident-summary | foia-release | composite-sketch | event-slides | unknown

content_classification:
  - text-only
  - contains-tables
  - redaction-heavy

provenance:
  source_url: "https://war.gov/ufo/..."
  agency: "Department of War"
  release_authority: "DoD AARO"
  release_date: "2024-11-15"
  foia_request_id: null

document_date: "NA"             # YYYY-MM-DD | YYYY-MM | YYYY | "NA"
ingest_date: "2026-05-13"
last_ingest: "2026-05-13T14:22:11Z"
last_lint: "2026-05-13T15:04:00Z"
wiki_version: "0.1.0"

highest_classification: "SECRET//NOFORN"
has_redactions: true
redaction_codes_present: ["(b)(1) 1.4(a)", "(b)(3)"]
languages_detected: ["en"]

executive_summary_confidence: medium
key_claims:
  - text: "F/A-18 piloto observa objeto esférico a 25.000 ft no Mediterrâneo"
    confidence_band: high
    evidence_refs: ["[[evidence/E-0042]]", "[[evidence/E-0043]]"]
    page_refs: ["[[dow-uap-d54-.../p003]]", "[[dow-uap-d54-.../p007]]"]

pages:
  - page: 1
    page_id: "[[dow-uap-d54-.../p001]]"
    page_type: cover
    classification: "SECRET//NOFORN"
  # … até page_count

key_entities:
  people: ["[[people/redacted-pilot-01]]"]
  organizations: ["[[org/aaro]]", "[[org/uss-gerald-r-ford-cvn-78]]"]
  locations: ["[[loc/mediterranean-sea]]"]
  events: ["[[event/EV-XXXX-XX-XX-mediterranean-sphere]]"]
  uap_objects: ["[[uap/OBJ-EVMED-01]]"]

evidence_extracted: ["[[evidence/E-0042]]"]
witnesses_extracted: ["[[witness/W-0007]]"]
gaps_flagged: ["[[gap/G-0012]]"]
related_documents: ["[[dow-uap-d3-mission-report-arabian-gulf-2020]]"]

external_sources:
  - url: "https://media.defense.gov/aaro/uap-historical-record-2024.pdf"
    fetched_at: "2026-05-13T14:30:00Z"
    summary: "AARO Historical Record cita este caso na p.47"
    confidence_band: high
---
```

**Corpo:** `# Title` · `## Sumário Executivo` (com footnotes `[^E-NNNN]`) · `## Índice de Páginas` · `## Entidades-Chave` · `## Conexões com Outros Documentos` · `## Gaps e Anomalias` · `## Procedência` · `## Footnotes`.

## 2. `page` — `wiki/pages/<doc-id>/p<NNN>.md`

```yaml
---
schema_version: "0.1.0"
type: page
page_id: "dow-uap-d54-mission-report-mediterranean-sea-na/p007"
doc_id: "dow-uap-d54-mission-report-mediterranean-sea-na"
page_number: 7
total_pages: 7

png_path: "../../processing/png/dow-uap-d54-.../p007.png"
png_sha256: "9c2e..."
png_dpi: 200
png_width: 1700
png_height: 2200

ocr_raw_path: "../../processing/ocr/dow-uap-d54-.../p007.txt"
vision_raw_path: "../../processing/vision/dow-uap-d54-.../p007.json"
vision_model: "claude-haiku-4-5"
vision_run_at: "2026-05-13T13:45:22Z"

page_type: body  # cover | toc | body | signature | photo | sketch | map | stamp | blank | appendix | redaction-heavy | table-page | mixed
content_classification:
  - text-only
  - contains-tables

language_detected: "en"

classification_markings:
  - level: SECRET
    caveats: [NOFORN]
    location: header
    bbox: { x: 0.0, y: 0.0, w: 1.0, h: 0.035 }
  - level: SECRET
    caveats: [NOFORN]
    location: footer
    bbox: { x: 0.0, y: 0.965, w: 1.0, h: 0.035 }

redactions:
  - code: "(b)(1) 1.4(a)"
    description: "national defense"
    bbox: { x: 0.18, y: 0.42, w: 0.42, h: 0.025 }
    text_inferred: null
  - code: "(b)(6)"
    description: "personal privacy"
    bbox: { x: 0.21, y: 0.51, w: 0.18, h: 0.022 }
    text_inferred: "[pilot name]"

signatures_observed:
  - signer_inferred: "[[people/redacted-co-pilot-01]]"
    confidence_band: low
    bbox: { x: 0.55, y: 0.88, w: 0.20, h: 0.04 }
    notes: "Assinatura ilegível, anotação datilografada abaixo: 'LCDR'"

tables_detected:
  - table_id: "[[table/TBL-DOWD54-0003]]"
    bbox: { x: 0.10, y: 0.30, w: 0.80, h: 0.35 }
    spans_multi_page: true
    continues_from: "[[dow-uap-d54-.../p006]]"
    continues_to: null

images_detected:
  - image_id: "[[image/IMG-DOWD54-p007-01]]"
    image_type: sketch  # photo | sketch | map | chart | stamp | signature | redaction | logo | seal | diagram | other
    bbox: { x: 0.20, y: 0.68, w: 0.60, h: 0.22 }
    caption_ocr: "Fig. 3 — Object trajectory as observed"

entities_extracted:
  people: ["[[people/redacted-pilot-01]]"]
  organizations: ["[[org/cvw-7]]", "[[org/uss-gerald-r-ford-cvn-78]]"]
  locations: ["[[loc/mediterranean-sea]]"]
  events: ["[[event/EV-XXXX-XX-XX-mediterranean-sphere]]"]
  uap_objects: ["[[uap/OBJ-EVMED-01]]"]
  vehicles: ["[[vehicle/fa-18-super-hornet]]"]
  operations: []
  concepts: ["[[concept/range-fouler]]"]

uap_observation_fields:           # presente apenas quando aplicável
  date_time_utc: "NA"
  duration_seconds: 180
  shape: sphere
  color: "white-metallic"
  size_estimate: "1-3 m"
  altitude_ft: 25000
  speed_kts: "stationary-then-300"
  bearing_deg: 270
  distance_nm: 2.5
  coordinates:
    lat: null
    lon: null
    confidence_band: low

ocr_quality_score: 0.87
vision_quality_score: 0.92
flags: []                          # ["low-ocr", "heavy-redaction", "rotated", ...]

last_ingest: "2026-05-13T13:45:22Z"
last_lint: "2026-05-13T15:04:00Z"
wiki_version: "0.1.0"
---
```

**Corpo:** `# [[doc-id]] — Página N de M` · imagem `![Page N](png_path)` · `## Texto OCR (raw, idioma original)` em blockquote · `## Descrição Vision` (idioma original) · `## Tabelas` · `## Imagens` · `## Entidades nesta página` · `## Observações de Investigação` (curto, PT-BR).

## 3. `person` — `wiki/entities/people/<id>.md`

```yaml
---
schema_version: "0.1.0"
type: entity
entity_class: person
person_id: "david-grusch"
canonical_name: "David Charles Grusch"
aliases: ["David Grusch", "D. Grusch"]
display_name: "David Grusch"

roles:
  - title: "Intelligence Officer"
    organization: "[[org/nro]]"
    period: { start: "2021", end: "2023", confidence_band: medium }

dates:
  born: null
  died: null
  active_period: { start: "~2000", end: "ongoing", confidence_band: low }

mentioned_in:                     # populado pelo Lint
  - page: "[[dow-uap-d54-.../p007]]"
    mention_count: 2
    role_in_page: subject         # subject | witness | author | signer | mentioned
total_mentions: 3
documents_count: 2

signatures_observed:
  - page: "[[dow-uap-d54-.../p022]]"
    bbox: { x: 0.55, y: 0.88, w: 0.20, h: 0.04 }
    confidence_band: medium

verbatim_quotes:                  # idioma original
  - text: "We are not alone in the cosmos."
    page: "[[dow-uap-d54-.../p015]]"
    bbox: { x: 0.10, y: 0.30, w: 0.80, h: 0.04 }
    context: "Congressional testimony, July 2023"
    confidence_band: high

related_people:
  - person: "[[people/karl-nell]]"
    relation_type: colleague      # colleague | superior | subordinate | family | source | adversary | unknown
    confidence_band: medium
    evidence_refs: ["[[evidence/E-0051]]"]
related_organizations: ["[[org/nro]]", "[[org/uaptf]]"]
related_events: ["[[event/EV-2023-07-26-grusch-testimony]]"]

enrichment_status: deep           # none | shallow | deep
external_sources:
  - url: "https://oversight.house.gov/release/transparency-on-uaps/"
    fetched_at: "2026-05-13T14:50:00Z"
    summary: "Transcript do testimony de Grusch ao House Oversight."
    confidence_band: high

profile_dossier: "[[profile/AP-0001]]"
witness_analyses: ["[[witness/W-0007]]"]
evidence_anchored: ["[[evidence/E-0042]]"]

disambiguation_note: null

last_ingest: "2026-05-13T14:22:11Z"
last_lint: "2026-05-13T15:04:00Z"
wiki_version: "0.1.0"
---
```

**Corpo:** `# Display Name` · `## Identidade` · `## Biografia Interna` (extraída dos PDFs, footnotes) · `## Biografia Externa` (enrichment, footnotes) · `## Quotes Verbatim` · `## Relações` · `## Aparições no Corpus` · `## Procedência Externa`.

## 4. `organization` — `wiki/entities/organizations/<id>.md`

```yaml
---
schema_version: "0.1.0"
type: entity
entity_class: organization
organization_id: "aaro"
canonical_name: "All-domain Anomaly Resolution Office"
aliases: ["AARO"]
parent_organization: "[[org/dod-ousd-i-and-s]]"
child_organizations: []
organization_type: government-agency   # government-agency | military-unit | intelligence-agency | corporation | ngo | think-tank | other
country: "USA"
founded: "2022-07-15"
dissolved: null
predecessors: ["[[org/aoimsg]]"]
successors: []

mentioned_in: [...]
total_mentions: 47
documents_count: 23

key_people:
  - person: "[[people/jon-kosloski]]"
    role: Director
    period: { start: "2024", end: ongoing, confidence_band: high }

related_organizations: ["[[org/dod]]", "[[org/odni]]"]
operations_run: ["[[op/aaro-historical-record-report]]"]

enrichment_status: deep
external_sources: [...]

last_ingest: "..."
last_lint: "..."
wiki_version: "0.1.0"
---
```

## 5. `location` — `wiki/entities/locations/<id>.md`

```yaml
---
schema_version: "0.1.0"
type: entity
entity_class: location
location_id: "strait-of-hormuz"
canonical_name: "Strait of Hormuz"
aliases: ["Estreito de Ormuz"]
location_type: strait     # city | region | country | sea | strait | airbase | naval-base | mountain | desert | other
country: ["IR", "OM", "AE"]
region: "Persian Gulf"
parent_location: "[[loc/persian-gulf]]"

coordinates:
  lat: 26.566667
  lon: 56.25
  confidence_band: high
  source: "Wikipedia, cross-checked"

mentioned_in: [...]
total_mentions: 12
documents_count: 4

events_here: ["[[event/EV-2020-09-XX-strait-of-hormuz-sphere]]"]
related_locations: ["[[loc/persian-gulf]]"]

enrichment_status: shallow
external_sources: [...]

last_ingest: "..."
wiki_version: "0.1.0"
---
```

## 6. `event` — `wiki/entities/events/<id>.md`

```yaml
---
schema_version: "0.1.0"
type: entity
entity_class: event
event_id: "EV-2004-11-14-tic-tac-nimitz"
canonical_name: "Encontro Tic-Tac do Nimitz"
aliases: ["Nimitz Encounter", "Tic Tac Incident"]
event_class: uap-encounter   # uap-encounter | testimony | hearing | foia-release | crash-recovery | photograph | declassification | other

date_start: "2004-11-14"
date_end: "2004-11-14"
time_start_utc: "approx 11:00"
duration_estimate_minutes: 180
date_confidence: high

primary_location: "[[loc/pacific-ocean-off-san-diego]]"
locations_involved: ["[[loc/pacific-ocean-off-san-diego]]"]
coordinates: { lat: 31.42, lon: -117.13, confidence_band: high }

observers:
  - person: "[[people/david-fravor]]"
    role: "primary witness, pilot"
witnesses_analyses: ["[[witness/W-0001]]"]
organizations_involved: ["[[org/uss-nimitz-cvn-68]]"]
vehicles_involved: ["[[vehicle/fa-18-super-hornet]]"]
uap_objects: ["[[uap/OBJ-EV2004-NIMITZ-01]]"]

documented_in: [...]
total_mentions: 18
documents_count: 7

narrative_summary: |
  Em 14 de novembro de 2004, durante exercícios do CSG-11...
narrative_summary_pt_br: |
  Em 14 de novembro de 2004, durante os exercícios do CSG-11...

# Synthesis pipeline status (Fase 0+3). Replaces the older
# `narrative_summary_confidence` field which conflated provenance and quality.
#
#   none        — narrative absent. Renderer must show badge "sem síntese ainda"
#                 and link to chunks via entity_mentions. NEVER emit placeholder
#                 text like "_Stub. Will be enriched in Phase N._".
#   synthesized — produced automatically by scripts/synthesize/20_entity_summary.py
#                 via Claude Code OAuth (Sonnet). summary_confidence default 'medium'.
#   curated     — written or revised by hand (or by scripts/synthesize/01_anchor_events.py
#                 for canonical anchor events). summary_confidence default 'high'.
#   red_teamed  — curated + reviewed by chief-detective for factual accuracy.
summary_status: curated           # none | synthesized | curated | red_teamed
summary_confidence: high          # high | medium | low | null

related_events: ["[[event/EV-2015-XX-XX-gimbal]]"]
preceded_by: []
followed_by: ["[[event/EV-2017-12-16-nyt-publication]]"]

evidence_anchored: ["[[evidence/E-0010]]"]
hypotheses_addressing: ["[[hypothesis/H-0001]]"]
gaps_flagged: ["[[gap/G-0003]]"]

enrichment_status: deep
external_sources: [...]

last_ingest: "..."
wiki_version: "0.1.0"
---
```

## 7. `uap_object` — `wiki/entities/uap-objects/<id>.md`

```yaml
---
schema_version: "0.1.0"
type: entity
entity_class: uap_object
uap_object_id: "OBJ-EV2004-NIMITZ-01"
canonical_name: "Tic-Tac Object — Nimitz 2004"
observed_in_event: "[[event/EV-2004-11-14-tic-tac-nimitz]]"
secondary_events: []

shape: elongated-ellipsoid  # sphere | disc | triangle | cylinder | cube | elongated-ellipsoid | cigar | irregular | unknown
shape_aliases: ["tic-tac", "pill-shape"]
color: "white-matte"
size_estimate_m: { min: 12, max: 14, confidence_band: medium }
features:
  - "no visible exhaust"
  - "no visible wings"

altitude_ft: { min: 80000, max: 80000, observed_descend_to_ft: 50, confidence_band: medium }
speed_kts: { min: 0, max: "supersonic-instantaneous", confidence_band: medium }
acceleration_g: { estimate: extreme, confidence_band: low }
maneuver_descriptors:
  - instantaneous-direction-change
  - hover
  - descent-80kft-to-50ft-in-seconds

sensor_observations:
  - sensor: "AN/SPY-1 radar (USS Princeton)"
    type: radar
  - sensor: "ATFLIR (F/A-18)"
    type: infrared
  - sensor: "Mark I eyeball"
    type: visual
    observers: ["[[people/david-fravor]]"]

visual_records: ["[[image/IMG-DOC65-p014-01]]"]
documented_in: [...]
total_mentions: 12

evidence_anchored: ["[[evidence/E-0010]]"]
hypotheses_addressing: ["[[hypothesis/H-0001]]"]

confidence_band_overall: medium
last_ingest: "..."
wiki_version: "0.1.0"
---
```

## 8. `vehicle` — `wiki/entities/vehicles/<id>.md`

```yaml
---
schema_version: "0.1.0"
type: entity
entity_class: vehicle
vehicle_id: "fa-18-super-hornet"
canonical_name: "F/A-18 Super Hornet"
aliases: ["F/A-18E", "F/A-18F", "Super Hornet"]
vehicle_class: aircraft   # aircraft | ship | submarine | spacecraft | satellite | ground | other
manufacturer: Boeing
operator: "[[org/us-navy]]"
service_period: { start: "1995", end: ongoing }

mentioned_in: [...]
total_mentions: 38
events_involved: ["[[event/EV-2004-11-14-tic-tac-nimitz]]"]

sensors: ["ATFLIR", "AN/APG-79 AESA radar"]

enrichment_status: shallow
external_sources: [...]

last_ingest: "..."
wiki_version: "0.1.0"
---
```

## 9. `operation` — `wiki/entities/operations/<id>.md`

```yaml
---
schema_version: "0.1.0"
type: entity
entity_class: operation
operation_id: "range-fouler"
canonical_name: "Range Fouler Program"
aliases: ["Range Fouler"]
operation_type: reporting-protocol  # military-operation | reporting-protocol | research-program | task-force | foia-disclosure | other
status: active
period: { start: "~2019", end: ongoing, confidence_band: medium }

run_by: ["[[org/us-navy]]", "[[org/aaro]]"]
key_people: []

description_summary: |
  Termo usado pela Marinha dos EUA...

documents: ["[[dow-uap-d38-...]]", "[[dow-uap-d42-...]]"]
total_mentions: 22

related_concepts: ["[[concept/uap-doctrine]]"]
related_events: ["[[event/EV-2019-04-XX-east-coast-incursions]]"]

enrichment_status: shallow
last_ingest: "..."
wiki_version: "0.1.0"
---
```

## 10. `concept` — `wiki/entities/concepts/<id>.md`

```yaml
---
schema_version: "0.1.0"
type: entity
entity_class: concept
concept_id: "foia-exemption-1-4-a"
canonical_name: "FOIA Exemption (b)(1) 1.4(a)"
aliases: ["1.4(a)", "EO 13526 1.4(a)"]
concept_class: legal-instrument  # legal-instrument | phenomenon-type | doctrine | scientific-term | jargon | program-name | other
domain: "FOIA / Executive Order 13526"

definition_short: |
  Categoria de classificação 'Military plans, weapons systems, or operations'
  sob Executive Order 13526 Section 1.4(a)...

mentioned_in: [...]
total_mentions: 84
documents_count: 41

related_concepts: ["[[concept/foia-exemption-b-3]]"]
related_organizations: ["[[org/national-archives]]"]

enrichment_status: deep
external_sources: [...]

last_ingest: "..."
wiki_version: "0.1.0"
---
```

## 11. `table` — `wiki/tables/<table-id>.md`

```yaml
---
schema_version: "0.1.0"
type: table
table_id: "TBL-DOWD54-0003"
canonical_title: "GENTEXT UAP Observation Fields — Mediterranean Sea"

source_doc: "[[dow-uap-d54-...]]"
spans_pages:
  - page: "[[dow-uap-d54-.../p006]]"
    bbox: { x: 0.10, y: 0.55, w: 0.80, h: 0.40 }
    role: start
  - page: "[[dow-uap-d54-.../p007]]"
    bbox: { x: 0.10, y: 0.30, w: 0.80, h: 0.35 }
    role: middle
  - page: "[[dow-uap-d54-.../p008]]"
    bbox: { x: 0.10, y: 0.10, w: 0.80, h: 0.20 }
    role: end
total_rows: 24
total_columns: 4
has_headers: true
multi_page: true

columns:
  - { name: "Field", type: string }
  - { name: "Value", type: string }
  - { name: "Unit", type: string }
  - { name: "Confidence", type: string }

row_count_extracted: 24
extraction_quality: 0.91

references:
  events: ["[[event/EV-XXXX-XX-XX-mediterranean-sphere]]"]
  uap_objects: ["[[uap/OBJ-EVMED-01]]"]

last_ingest: "..."
wiki_version: "0.1.0"
---
```

**Corpo:** tabela reconstruída em markdown nativo + bloco "Notas sobre reconstrução" (cells perdidas, ambiguidades).

## 12. `image` — `wiki/images/<image-id>.md`

```yaml
---
schema_version: "0.1.0"
type: image
image_id: "IMG-DOWD54-p007-01"
image_type: sketch  # photo | sketch | map | chart | stamp | signature | redaction | logo | seal | diagram | other

source_page: "[[dow-uap-d54-.../p007]]"
bbox_on_page: { x: 0.20, y: 0.68, w: 0.60, h: 0.22 }
extracted_png_path: "../../processing/images/IMG-DOWD54-p007-01.png"
extracted_sha256: "7a1f..."

caption_ocr: "Fig. 3 — Object trajectory as observed"   # idioma original
caption_inferred: null                                   # PT-BR opcional, futuro

vision_description: |
  Sketch a lápis em folha pautada. Mostra silhueta de F/A-18 à esquerda
  em perfil, com seta tracejada saindo de altitude alta e descendo em
  zig-zag até 'sea level'. Objeto esférico representado como círculo
  hachurado. Anotações manuscritas: 'observed 270° rel', 'descent ~5s'.

vision_quality_score: 0.94
ocr_quality_score: 0.62

contains:
  vehicles: ["[[vehicle/fa-18-super-hornet]]"]
  uap_objects: ["[[uap/OBJ-EVMED-01]]"]
  events: ["[[event/EV-XXXX-XX-XX-mediterranean-sphere]]"]

forensic_metadata:
  exif_present: false
  origin_camera: null
  date_taken: null
  geolocation: null
  manipulation_detected: null   # null | none | crop | color-shift | suspected

evidence_refs: ["[[evidence/E-0042]]"]
related_images: ["[[image/IMG-DOWD54-p012-01]]"]

confidence_band_overall: medium
last_ingest: "..."
wiki_version: "0.1.0"
---
```

## 13. `evidence` — `case/evidence/<E-NNNN>.md`

```yaml
---
schema_version: "0.1.0"
type: evidence
evidence_id: "E-0042"
canonical_title: "F/A-18 piloto observa esfera branco-metálica a 25.000 ft no Mediterrâneo"

evidence_grade: B            # A | B | C | D | E | F
evidence_class: testimonial-primary  # physical | testimonial-primary | testimonial-secondary | documentary-primary | documentary-secondary | photographic | sensor-data | sketch | inferential

source_page: "[[dow-uap-d54-.../p007]]"
source_doc: "[[dow-uap-d54-...]]"
source_bbox: { x: 0.10, y: 0.30, w: 0.80, h: 0.18 }
verbatim_excerpt: |
  "...observed a single, stationary, white object approximately 1-3 meters
  in diameter at angels 25. Object remained stationary for approximately
  180 seconds before departing on bearing 270 at estimated 300 knots…"

chain_of_custody:
  - step: 1
    action: "Original observation"
    actor: "[[people/redacted-pilot-01]]"
    location: "[[loc/mediterranean-sea]]"
    timestamp: "NA"
    confidence_band: medium
  - step: 2
    action: "Debrief recorded"
    actor: "[[org/cvw-7-intelligence]]"
    timestamp: "NA"
    confidence_band: medium
  - step: 3
    action: "Document released via war.gov"
    actor: "[[org/dod]]"
    timestamp: "2024-11-15"
    confidence_band: high
custody_gaps:
  - between_steps: [1, 2]
    gap_description: "Intervalo entre observação e debrief desconhecido."
    severity: minor

corroborating_evidence: ["[[evidence/E-0043]]"]
contradicting_evidence: []

supports_claims:
  - claim: "Objeto esférico branco-metálico observado no Mediterrâneo"
    confidence_band: high
  - claim: "Velocidade observada: estacionário → 300 kts"
    confidence_band: medium

relevant_to_hypotheses: ["[[hypothesis/H-0001]]"]
locard_principle_applied: [transfer, individuality]

catalogued_by: evidence-officer
catalogued_at: "2026-05-13T14:30:00Z"
reviewed_by: chief-detective
reviewed_at: "2026-05-13T15:00:00Z"

wiki_version: "0.1.0"
---
```

## 14. `witness_analysis` — `case/witnesses/<W-NNNN>.md`

```yaml
---
schema_version: "0.1.0"
type: witness_analysis
witness_id: "W-0007"
witness_person: "[[people/david-fravor]]"
event_witnessed: "[[event/EV-2004-11-14-tic-tac-nimitz]]"

statements:
  - statement_id: "S-0007-01"
    source_page: "[[doc-.../p015]]"
    bbox: { x: 0.10, y: 0.20, w: 0.80, h: 0.40 }
    verbatim: "I have no idea what I saw…"
    date_given: "2017-12-16"
    venue: "NYT interview"
    confidence_band_authenticity: high

paraphrase: |
  Fravor descreve aproximação ao objeto, manobras em "L" e desaparecimento
  do radar...

corroboration:
  - corroborator: "[[witness/W-0008]]"
    overlap_pct: 78
    divergences:
      - "Dietrich estima altitude inicial 20kft; Fravor estima 80kft"
        severity: minor
contradictions: []

lexical_shifts:
  - between_statements: ["S-0007-01", "S-0007-02"]
    shift_type: certainty   # certainty | tense | emotional-valence | technical-vocabulary | role-attribution
    description: "Em 2017 disse 'no idea'; em 2023 caracterizou como 'tecnologia'."
    confidence_band: medium

verdict: credible-with-caveats  # credible | credible-with-caveats | inconclusive | inconsistent | likely-fabrication
verdict_rationale: |
  Testemunho técnico, consistente em núcleo factual ao longo de 6 anos...

reviewed_by: witness-officer
reviewed_at: "2026-05-13T14:40:00Z"
quality_gate_score: 0.89
wiki_version: "0.1.0"
---
```

## 15. `timeline` — `case/timelines/<scope>.md`

```yaml
---
schema_version: "0.1.0"
type: timeline
timeline_scope: global  # global | event-cluster | region | actor | decade
scope_id: global
canonical_title: "Timeline Mestre — UFO/UAP Corpus war.gov 1940s-2025"

period: { start: "1940-01-01", end: "2025-12-31" }
entries_count: 187

entries:
  - timestamp: "1947-07-XX"
    timestamp_confidence: medium
    event: "[[event/EV-1947-07-XX-roswell-incident]]"
    location: "[[loc/roswell-new-mexico-usa]]"
    actors: ["[[org/usaaf]]"]
    summary: "Recuperação de destroços em rancho perto de Roswell."
    evidence_refs: ["[[evidence/E-0001]]"]
    confidence_band: high

clusters:
  - cluster_id: C-001
    label: "1947 Wave"
    period: { start: "1947-06", end: "1947-09" }
    entries_count: 14

reconstructed_by: timeline-analyst
reconstructed_at: "..."
wiki_version: "0.1.0"
---
```

## 16. `hypothesis` — `case/hypotheses/<H-NNNN>.md`

```yaml
---
schema_version: "0.1.0"
type: hypothesis
hypothesis_id: "H-0001"
canonical_title: "Tic-Tac é tecnologia humana avançada sob teste"
scope_event: "[[event/EV-2004-11-14-tic-tac-nimitz]]"
hypothesis_class: prosaic-advanced-tech  # prosaic-mundane | prosaic-advanced-tech | misidentification | sensor-artifact | psyop | hoax | extraterrestrial | extradimensional | unknown

status: active                          # active | eliminated | confirmed-best-explanation | dormant
elimination_reason: null
prior_probability: 0.35
posterior_probability: 0.18
posterior_updated_at: "..."
posterior_method: "Tetlock-style structured judgment, 3 detectives"

falsification_tests:
  - test_id: "FT-0001-01"
    description: "Se for tech US, deve haver registro orçamentário em SAP."
    status: untestable-current-data
  - test_id: "FT-0001-02"
    description: "Se for tech adversária, deve haver capacidade em outros teatros."
    status: weakly-falsified

evidence_for: ["[[evidence/E-0015]]"]
evidence_against: ["[[evidence/E-0010]]"]
competes_with: ["[[hypothesis/H-0002]]"]

elimination_logic: |
  "Quando você elimina o impossível..." — Esta hipótese sobrevive ao teste...
steel_man: |
  Defesa mais forte: programa black SAP US...
red_team: |
  Ataque mais forte: SAP US não testaria contra ativos próprios...

evaluated_by: hypothesis-lead
last_reviewed: "..."
quality_gate_score: 0.87
wiki_version: "0.1.0"
---
```

## 17. `actor_profile` — `case/profiles/<AP-NNNN>.md`

```yaml
---
schema_version: "0.1.0"
type: actor_profile
actor_profile_id: "AP-0001"
actor: "[[people/david-grusch]]"
actor_type: person   # person | organization

motive:
  description: "Whistleblower motivado por convicção de cover-up sistêmico."
  evidence_refs: ["[[evidence/E-0050]]"]
  confidence_band: medium
means:
  description: "Acesso a NRO e UAPTF; clearance TS/SCI."
  evidence_refs: ["[[evidence/E-0051]]"]
  confidence_band: high
opportunity:
  description: "Janela 2019-2023 com acesso direto a programas relevantes."
  confidence_band: high
modus_operandi:
  description: "Disclosure via canal oficial IC IG, seguido de testimony público."
  patterns:
    - "Procedural-first disclosure"
  confidence_band: medium

baseline: "Intelligence officer típico mantém silêncio pós-clearance."
deviation_signal: "Quebra significativa: testimony público sob juramento."
deviation_severity: high

connections:
  - actor: "[[people/karl-nell]]"
    nature: professional-corroborator
    confidence_band: medium

profiled_by: profiler
profiled_at: "..."
quality_gate_score: 0.88
wiki_version: "0.1.0"
---
```

## 18. `gap` — `case/gaps/<G-NNNN>.md`

```yaml
---
schema_version: "0.1.0"
type: gap
gap_id: "G-0012"
canonical_title: "Ausência de timestamp em DOW-UAP-D54"
gap_class: missing-data  # missing-data | inconsistency | unexplained-redaction | chronology-conflict | actor-not-identified | sensor-mismatch | other

description: |
  Documento DOW-UAP-D54 referencia 'date NA' no título e omite timestamp...

detected_in: ["[[dow-uap-d54-.../p001]]"]
detected_by: archivist
detected_at: "..."

severity: medium  # low | medium | high | critical
investigative_impact: |
  Sem timestamp, correlação com sensor data de outras plataformas fica impedida.

possible_explanations:
  - { explanation: "Redaction pré-release não documentada", confidence_band: medium }
  - { explanation: "Erro de processing OCR", confidence_band: low }

recommended_actions:
  - "Cross-check com FOIA request log war.gov"

related_gaps: ["[[gap/G-0008]]"]
wiki_version: "0.1.0"
---
```

## 19. `relation` (connect-the-dots) — `case/connect-the-dots/<R-NNNN>.md`

```yaml
---
schema_version: "0.1.0"
type: relation
relation_id: "R-0028"
canonical_title: "DOW-UAP-D54 e D55 descrevem o mesmo cluster Mediterrâneo"
relation_class: documentary-overlap  # documentary-overlap | actor-bridge | location-cluster | sensor-corroboration | temporal-sequence | other

nodes:
  - "[[dow-uap-d54-...]]"
  - "[[dow-uap-d55-...]]"
  - "[[event/EV-XXXX-XX-XX-mediterranean-sphere]]"

connection_description: |
  D54 (date NA) e D55 (Syria, Nov 2016) ambos referenciam observações de
  objeto esférico branco-metálico, mesma assinatura visual...

connection_strength: 0.72
strength_method: "Jaccard sobre descritores UAP + co-location ± 2000 km"
confidence_band: medium

supporting_evidence: ["[[evidence/E-0042]]", "[[evidence/E-0048]]"]
illuminates_hypotheses: ["[[hypothesis/H-0007]]"]

drawn_by: chief-detective
drawn_at: "..."
wiki_version: "0.1.0"
---
```

## 20. `case_report` — `case/case-report.md`

```yaml
---
schema_version: "0.1.0"
type: case_report
case_id: "CASE-0001"
canonical_title: "O Departamento da Guerra — Memorando ao Dr. Watson sobre 129 Documentos UAP"
narrative_style: holmes-watson
narrator_persona: "Dr. John H. Watson"
detective_persona: "Sherlock Holmes (composite: Holmes/Poirot/Dupin)"

investigation_period: { start: "2026-05-13", end: null }
documents_analyzed: 129
pages_analyzed: null
entities_catalogued: null
evidence_catalogued: null
hypotheses_evaluated: null

executive_finding: |
  Após exame de cento e vinte e nove documentos, este investigador conclui...
executive_finding_confidence: medium

chapters:
  - chapter: "I — O Recebimento dos Autos"
    summary: "..."
  - chapter: "II — A Catalogação Forense (Locard)"
    summary: "..."
  - chapter: "III — As Testemunhas"
    summary: "..."
  - chapter: "IV — As Linhas do Tempo"
    summary: "..."
  - chapter: "V — O Tribunal de Hipóteses"
    summary: "..."
  - chapter: "VI — Conexões Improváveis"
    summary: "..."
  - chapter: "VII — Lacunas Inegáveis"
    summary: "..."
  - chapter: "VIII — Conclusão e Incerteza Residual"
    summary: "..."

top_evidence: ["[[evidence/E-0010]]"]
top_hypotheses_surviving: ["[[hypothesis/H-0001]]"]
top_hypotheses_eliminated: ["[[hypothesis/H-0004]]"]
critical_gaps: ["[[gap/G-0012]]"]
residual_uncertainty_ref: "[[case/residual-uncertainty]]"

quality_rubrics:
  evidence_chain_complete: true
  hypothesis_tournament_diverse: true
  contradictions_addressed: true
  confidence_calibrated: true
  procedure_documented: true
  falsifiability_explicit: true
overall_quality_score: 0.91

written_by: case-writer
reviewed_by: [chief-detective, hypothesis-lead, evidence-officer]
last_revised: "..."
wiki_version: "0.1.0"
---
```

**Corpo:** narrativa Holmes-Watson em **PT-BR**, prosa elaborada, com inline `[^E-NNNN]`, `[^H-NNNN]`, `[^G-NNNN]` apontando para os artefatos. Cada chapter um `##`. **Quotes verbatim no idioma original** (sem tradução).

## 21. `residual_uncertainty` — `case/residual-uncertainty.md`

```yaml
---
schema_version: "0.1.0"
type: residual_uncertainty
linked_case: "[[case/case-report]]"

unknowns_known:
  - unknown: "Identidade dos pilotos redacted em DOW-UAP-D54"
    mitigations: ["Cross-ref com squadron rosters públicos"]
    confidence_band: low
unknowns_unknown_disclaimer: |
  Existem domínios deste corpus não tocados por nenhum dos 8 detetives...

calibration_table:
  - claim: "Tic-Tac é tecnologia humana"
    probability: 0.18
    confidence_band: low

what_would_change_conclusion:
  - "Documento desclassificado com link direto entre Range Fouler e SAP US"

black_swan_scenarios:
  - scenario: "Disclosure massivo em 2026-2027 reordena o corpus."
    p_in_36_months: 0.20
    impact: extreme

written_by: chief-detective
last_revised: "..."
wiki_version: "0.1.0"
---
```

## 22. `index` — `wiki/index.md`

```yaml
---
schema_version: "0.1.0"
type: index
canonical_title: "Wiki UFO/UAP — Departamento da Guerra (war.gov/ufo)"
generated_at: "..."
wiki_version: "0.1.0"

stats:
  documents: 129
  pages: null
  entities:
    people: null
    organizations: null
    locations: null
    events: null
    uap_objects: null
    vehicles: null
    operations: null
    concepts: null
  tables: null
  images: null
  evidence: null
  witnesses: null
  hypotheses: null
  gaps: null

hubs:
  - { label: "Caso central — Holmes Report", target: "[[case/case-report]]" }
  - { label: "Timeline mestre", target: "[[case/timelines/global]]" }
  - { label: "Hipóteses ativas", target: "case/hypotheses/" }
  - { label: "Documentos por coleção", target: "#por-colecao" }
  - { label: "Eventos canônicos", target: "#eventos-canonicos" }
---
```

## 23. `log` — `wiki/log.md`

```yaml
---
schema_version: "0.1.0"
type: log
canonical_title: "Append-Only Log — Ingest / Query / Lint"
wiki_version: "0.1.0"
---
```

**Corpo (append-only):**

```
## 2026-05-13T13:45:22Z — INGEST
- operator: archivist
- pdf: DOW-UAP-D54-Mission-Report-Mediterranean-Sea-NA.pdf
- doc_id: dow-uap-d54-mission-report-mediterranean-sea-na
- pages: 7
- vision_model: claude-haiku-4-5
- duration_seconds: 412
- new_entities: { people: 1, organizations: 2, locations: 1, events: 1, uap_objects: 1 }
- new_evidence: 2
- warnings: ["page 12 OCR quality 0.61"]

## 2026-05-13T15:04:00Z — LINT
- operator: archivist
- scope: full
- broken_links: 0
- orphan_entities: 3
- duplicate_canonical_names: 0
- missing_required_fields: 0
- backlinks_rebuilt: 1247
- duration_seconds: 38
```

## 24. Validação — must-have vs nice-to-have

### Universal (todos os tipos)

- `schema_version` (lint bloqueia se ausente)
- `type` (lint bloqueia)
- `canonical_title` OU `canonical_name`
- `wiki_version`
- `last_ingest` OU `last_revised` (warning, não bloqueia)

### Regras estruturais (lint adicional)

1. Todo `[[link]]` resolve. Broken link → **bloqueia**.
2. `entity.mentioned_in` ↔ `page.entities_extracted` consistente. **Bloqueia**.
3. Dois `person_id` distintos com mesmo `canonical_name` sem `disambiguation_note` → **bloqueia**.
4. Evidence grade A → ≥3 custody steps; B → ≥2; C → ≥1.
5. Hypothesis com `posterior_probability > 0.50` → ≥2 `evidence_for`.
6. Para cada `document`, `pages[]` contínuo `1..page_count`.

### Owners (Investigation Bureau)

| Agente | Owners |
|---|---|
| archivist | doc, page, index, log, lint, naming, location, vehicle, operation, concept, table |
| evidence-officer | evidence, image forensic_metadata, uap_object |
| witness-officer | witness_analysis, verbatim_quotes em person |
| timeline-analyst | timeline, event |
| profiler | actor_profile, person, organization |
| hypothesis-lead | hypothesis, falsification_tests |
| chief-detective | relation, gap escalation, residual_uncertainty |
| case-writer | case-report |
