# 0039 answer-shape transcript — RESEARCH's instrument (independent of dev's)
# generated 2026-09-12 (research's instrument, re-run by dev)  against veracium @ a0215d3
# RE-PINNED 2026-09-12 after the doctor's procedural tripwire (doctor.py only): body BYTE-IDENTICAL again.
# RE-PINNED 2026-09-12 after 0037 v16 (the quote gate in ingest; no procedural triple in these answers): body BYTE-IDENTICAL again.
# RE-PINNED 2026-09-12 after 0006 v8 (the default flip; `ingest_event` called directly): body BYTE-IDENTICAL again.
# RE-PINNED 2026-09-12 after 0006 v7 `require_source_id` (default-off branch in ingest): body BYTE-IDENTICAL again.
# script: proposals/0039-answer-shapes-research-instrument.py
# Real ingest_event with a scripted provider. Not a simulation of the loop.
# research's instrument as committed: ONE row moved — `R bare array of dicts` is now a
# research's instrument as committed: THREE rows moved — `P triples null`, `number` and
# REGENERATED by dev at the round-5 fold (the pin above) by re-running research's instrument as
# committed: the same seven primary rows back to `"unparseable": null`, body BYTE-IDENTICAL to the
# pre-widening transcript.
# REGENERATED by dev 2026-09-11 (the pin above) after the retry handler's sentinel fix
# (9a590d6): body BYTE-IDENTICAL to the round-5 transcript; no row moves.
# RE-PINNED 2026-09-12 after `veracium why` (no ingest change): body BYTE-IDENTICAL again.
# RE-PINNED 2026-09-12 after `veracium doctor` (no ingest change): body BYTE-IDENTICAL again.
# RE-PINNED 2026-09-12 after `remember --dry-run` (no ingest change): body BYTE-IDENTICAL again.
# RE-PINNED 2026-09-12 after the confirmation-episode id fix (no ingest change): body BYTE-IDENTICAL again.
# RE-PINNED 2026-09-12 after 0027 v11's policy lane (no ingest change): body BYTE-IDENTICAL again.
# RE-PINNED 2026-09-12 after the doctor's sources check (no ingest change): body BYTE-IDENTICAL again.

  primary answer shape     outcome                                             
  ------------------------ ----------------------------------------------------
  P valid non-empty        RETURNS {"facts": 1, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P valid empty            RETURNS {"facts": 0, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P missing key            RETURNS {"facts": 0, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P triples string         RETURNS {"facts": 0, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P triples dict           RETURNS {"facts": 0, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P triples null           RETURNS {"facts": 0, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P triples number         RETURNS {"facts": 0, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P triples bool           RETURNS {"facts": 0, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P bare array of dicts    RETURNS {"facts": 1, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P bare array scalars     RETURNS {"facts": 0, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P top-level number       RETURNS {"facts": 0, "unparseable": true, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P top-level string       RETURNS {"facts": 0, "unparseable": true, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P prose, no JSON         RETURNS {"facts": 0, "unparseable": true, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P instructions string    RETURNS {"facts": 0, "unparseable": true, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P mixed member types     RETURNS {"facts": 1, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P empty dict members     RETURNS {"facts": 0, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi
  P nested triples         RETURNS {"facts": 0, "unparseable": null, "invalid": 0, "retried": 0, "recovered": 0, "resi

  retry answer shape       outcome                                             
  ------------------------ ----------------------------------------------------
  R valid repair           RETURNS {"facts": 1, "unparseable": null, "invalid": 1, "retried": 1, "recovered": 1, "resi
  R valid empty            RETURNS {"facts": 1, "unparseable": null, "invalid": 1, "retried": 1, "recovered": 0, "resi
  R missing key            RETURNS {"facts": 1, "unparseable": null, "invalid": 1, "retried": 1, "recovered": 0, "resi
  R triples string         RETURNS {"facts": 1, "unparseable": null, "invalid": 1, "retried": 1, "recovered": 0, "resi
  R triples null           RETURNS {"facts": 1, "unparseable": null, "invalid": 1, "retried": 1, "recovered": 0, "resi
  R bare array of dicts    RETURNS {"facts": 1, "unparseable": null, "invalid": 1, "retried": 1, "recovered": 1, "resi
  R bare array scalars     RETURNS {"facts": 1, "unparseable": null, "invalid": 1, "retried": 1, "recovered": 0, "resi
  R prose, no JSON         RETURNS {"facts": 1, "unparseable": null, "invalid": 1, "retried": 1, "recovered": 0, "resi
  R top-level number       RETURNS {"facts": 1, "unparseable": null, "invalid": 1, "retried": 1, "recovered": 0, "resi
