The append-only research ledger backing the Deep-dive → Report view — what was surveyed, round by round, plus the per-position/per-assist research state. Append-only `rounds[]` is what makes the iterative loop (Plan 15 MR-4) representable: new evidence is added, never overwritten. Instance extensions narrow via allOf + $ref to this $id with unevaluatedProperties:false.
node _methodology/contract/assemble.mjs assemble data).
research-index.schema.json — change the schema, and this page changes.| Field | Type | Description |
|---|---|---|
meta
|
object | Header for the research view. |
title
|
string | Title of the research cockpit/view. |
subtitle
|
string | Optional subtitle. |
stand
|
string | As-of date of the synthesis. |
note
|
string | Synthesis note — what the research shows so far (no ranking, no winner). |
rounds
|
array<object> | The research rounds, in order — each a survey wave with what it looked at, what it found, and what shifted. Append-only. |
when required
|
string | When/which round (e.g. 'Phase 3 · Round 2 — Deep Re-survey (2026-06-17)'). |
focus
|
string | What this round set out to survey. |
found
|
string | What the round found. |
shifted
|
string | What the round changed in the overall picture. |
findings
|
array<object> | Structured findings the round produced — referenceable hypothesis/finding records (e.g. H1, S2). |
id required
|
string | Finding id (referenced by architectures verdict.basis etc.). |
revisedIn
|
string | Round in which the finding was last revised. |
note required
|
string | The finding itself. |
positions
|
array<object> | Per-architecture research state (proposition, confidence, standouts, open questions). Item shape is largely instance-specific (mirrors the architecture vocabulary); kept permissive here, pinned in an extension if needed. |
id
|
string | Position id (aligns with the architecture it describes). |
name
|
string | Position name. |
assists
|
array<object> | Per-AI-assist research state (the ✨ assist questions and what the survey found about each). Item shape is instance-specific; kept permissive. |
id
|
string | Assist id. |
label
|
string | Assist label. |
researchFiles
|
array<object> | The raw research artifacts linked as source material from the report view. |
label required
|
string | Human label for the file. |
path required
|
string | Path to the artifact (relative to the engagement). |
what
|
string | What the file contains. |
meetingQuestions
|
array<string> | The open questions to put to the client at the review — the research's distilled agenda. |
research
|
map<object> | Registry of research units (Plan 19) — one entry per research unit, where a unit is a brief ≡ round: the question it set out to answer, the run, and its output. Keyed by a stable research id (e.g. 'r4-spine-grounding'). The per-research page renders ONE unit (brief/summary/method) plus the facts[] whose `research` points at it. Designed to ABSORB rounds[]/assists[]/researchFiles[] in the migration; the output is flexible — `summary` may be absent (fact-only research) and `facts` may be empty (prose-only research). |
[each value]
|
object | |
title
|
string | Display title of the research unit. |
brief
|
string | The question/scope this research set out to answer (the brief — same entity as the round). |
date
|
string | When it ran. |
method
|
string | How it was run (workflow id, manual sweep, fetch + audit, …). |
internal
|
string | Where our research lives in the repo (path) — the breadcrumb to go back to it. |
summary
|
string | OPTIONAL prose synthesis. Absent for fact-only research. |
focus
|
string | Carry-over from rounds[] — what the wave set out to survey (history timeline). |
found
|
string | Carry-over from rounds[] — what it found. |
shifted
|
string | Carry-over from rounds[] — what it changed in the overall picture. |
order
|
number | OPTIONAL explicit ordering for the history timeline (else by date/insertion). |
files
|
array<object> | Raw artifacts this research produced/used (absorbs researchFiles[]). |
label
|
string | Human label for the file. |
path required
|
string | Path to the artifact (relative to the engagement). |
what
|
string | What the file contains. |
questions
|
array<string> | OPTIONAL open questions this research raised (finer than top-level meetingQuestions). |
facts
|
map<object> | The fact store (Plan 19) — a FLAT map keyed by a provenance-encoding id (e.g. 'r4/A7-assfinet/F-CONTACTS-01'). One entry = one atomic research output. Referenced from solutions coverage[*].facts[] (later also scores/cost). The KEY is the internal breadcrumb back to our research; `links` are the ADDITIONAL external proof. Only `claim` is required — `links` is absent for inference facts, `confidence`/`subject` are optional. |
[each value]
|
object | |
research
|
string | The `research` id that produced this fact — groups it onto that unit's page. Resolved in the semantic tier. |
claim required
|
string | The fact itself — the ONLY required field. |
subject
|
string | OPTIONAL — what the fact is about (a tool/spine/filler). |
revisedIn
|
string | OPTIONAL round-marker (e.g. 'R4') of this fact's last material change — feeds the staleness check (a verdict that cites this fact via verdict.basis goes stale when this moves past the verdict's asOf). Carried over from the former rounds[].findings[].revisedIn. |
confidence
|
enum |
OPTIONAL confidence in the fact (same scale as the knowledge facets).offen · geschätzt · bekannt |
links
|
array<object> | OPTIONAL external direct proof links — additional to the internal locator (the key). |
url required
|
string | The external URL that proves the fact. |
title
|
string | Human label for the link. |