Part of #82 (calibrated honesty).
Problem
There's no way to tell a raw LLM-extracted entity (unverified, possibly wrong like "pickup-point-manager is a domain") from one a human has actually reviewed and confirmed. Consumers treat both identically. The human-in-the-loop curation loop needs a state to track.
Goal
A review_state on every entity (and ideally relationship) so both curators and consuming agents know what a human has vetted.
Proposed states
unreviewed (raw LLM output, default) → verified (human confirmed) → corrected (human edited) → rejected/deprecated.
Acceptance Criteria
Out of scope
- The full curation UI/queue (separate) — this is the state model + transitions
- Propagating the state to retrieval/MCP (that issue)
Part of #82 (calibrated honesty).
Problem
There's no way to tell a raw LLM-extracted entity (unverified, possibly wrong like "pickup-point-manager is a domain") from one a human has actually reviewed and confirmed. Consumers treat both identically. The human-in-the-loop curation loop needs a state to track.
Goal
A
review_stateon every entity (and ideally relationship) so both curators and consuming agents know what a human has vetted.Proposed states
unreviewed(raw LLM output, default) →verified(human confirmed) →corrected(human edited) →rejected/deprecated.Acceptance Criteria
review_statefield on entities, defaulting tounreviewedon extractionverified/correctedentity tounreviewedwithout signallingOut of scope