Skip to Content
PlatformReferenceAssertion kinds

Assertion kinds

Every statement a person or an agent records is classified. assertion_kind says what kind of claim it is; origin says who made it. Both are text columns with named CHECK constraints (ASSERTION_KINDS in api/app/db/models/_agentic.py), and both are printed by the assertion chip of the web app, so a reader never mistakes an agent’s interpretation for an observed result.

The four kinds

KindMeaningSource requirement
observationA result that was observed and can be traced to a sourcecite a source (source_ids[])
interpretationA reading of one or more observationscite a source
assumptionSomething taken as given for nowmay stand without a source
suggestionA proposed next step or line of inquirymay stand without a source

ADR 0004 records the rule that a statement without a source is allowed only as an assumption or a suggestion; the API stores source_ids[] on every finding and the web form asks for the kind explicitly. The hypothesis form defaults to interpretation (“Interpretation (default)” in the picker) so an author has to choose observation deliberately.

The two origins

OriginChip labelSet by
humanRecorded by a personevery record a person creates
agentAgent-generated, for reviewevery record an agent run writes; agent_run_id points at the run

Agent-origin records never use the success tone until a person accepts them. Copy says “agent-generated” or “proposed”; the label “AI” joined to “generated” is rejected by the attribution word list and is not used anywhere.

Where they appear

Recordassertion_kindoriginDecision by a person
Finding (FindingOut)yesyesedited with evidence.findings.manage
Hypothesis (HypothesisOut)yesyesaccepted or rejected with evidence.hypotheses.approve
Gap (GapOut)noyesaddressed or dismissed with evidence.gaps.manage
Protocol draft (ProtocolOut)noyestransition and /approve with plans.protocols.*
Report draft (ReportOut)noyestransition and /approve with plans.reports.*
Review finding (ReviewFindingOut)noyesaccepted, dismissed or resolved with review.findings.approve

Findings carry source_ids[] and a confidence_note; hypotheses carry supporting_finding_ids[] and contradicting_finding_ids[]; review findings carry source_ref and requirement_code. Every one of these records also carries illustrative; seeded records set it and show the label “Illustrative”.

Source: api/app/db/models/_agentic.py, api/app/db/models/evidence.py, api/app/db/models/plans.py, api/app/db/models/review.py, web/lib/content.ts, web/components/evidence/hypotheses.tsx, decisions/0004-assertion-model.md