Statuses
Every enumeration is a text column with a named CHECK (column IN (...)) constraint built by
enum_check() in api/app/db/models/_enums.py (ADR 0006). Values are lower-case snake_case and appear
in API bodies exactly as listed here; the web app renders them as sentence-case labels (“Under review”)
and the docs keep the database spelling in code. Coloured chips always carry a text label.
Enumerations
| Enumeration | Constant | Values |
|---|---|---|
| Release status (products, providers, tools) | RELEASE_STATUSES | available, preview, designed, planned, roadmap |
| Assertion kind | ASSERTION_KINDS | observation, interpretation, assumption, suggestion |
| Origin | ORIGINS | human, agent |
| Program status | PROGRAM_STATUSES | active, paused, completed, archived |
| Scope kind | SCOPE_KINDS | org, program |
| Subject type | SUBJECT_TYPES | user, group |
| Connection status | CONNECTION_STATUSES | pending, connected, error, disabled |
| Sync trigger | SYNC_TRIGGERS | test, webhook, manual, scheduled |
| Sync run status | SYNC_RUN_STATUSES | queued, running, succeeded, partial, failed, skipped |
| Agent run kind | AGENT_RUN_KINDS | evidence_compare, evidence_gaps, evidence_hypotheses, plans_draft_protocol, plans_draft_report, review_check |
| Agent run status | AGENT_RUN_STATUSES | queued, running, succeeded, failed, cancelled |
| Agent event level | AGENT_EVENT_LEVELS | debug, info, warning, error |
| Question status | QUESTION_STATUSES | open, answered, parked |
| Source kind | SOURCE_KINDS | publication, eln_entry, protocol, report, dataset, other |
| Source status | SOURCE_STATUSES | pending, ready, error, archived |
| Source link target | SOURCE_LINK_TARGETS | question, finding, hypothesis |
| Hypothesis status | HYPOTHESIS_STATUSES | proposed, under_review, accepted, rejected, retired |
| Hypothesis decision | HYPOTHESIS_DECISIONS | accepted, rejected |
| Gap status | GAP_STATUSES | open, addressed, dismissed |
| Evidence agent run kind | EVIDENCE_AGENT_RUN_KINDS | evidence_compare, evidence_gaps, evidence_hypotheses |
| Research plan status | PLAN_STATUSES | draft, review, approved, archived |
| Protocol status | PROTOCOL_STATUSES | draft, review, approved, superseded, archived |
| Experiment status | EXPERIMENT_STATUSES | planned, running, completed, aborted |
| Report status | REPORT_STATUSES | draft, review, approved, archived |
| Tool invocation status | TOOL_INVOCATION_STATUSES | queued, running, succeeded, failed |
| Plans agent run kind | PLANS_AGENT_RUN_KINDS | plans_draft_protocol, plans_draft_report |
| SOP status | SOP_STATUSES | draft, review, approved, superseded, archived |
| Check target type | CHECK_TARGET_TYPES | protocol, experiment, report |
| Check status | CHECK_STATUSES | queued, running, succeeded, partial, failed |
| Review finding kind | REVIEW_FINDING_KINDS | missing_metadata, unsupported_conclusion, inconsistent_entry, undocumented_deviation, other |
| Review severity | REVIEW_SEVERITIES | info, minor, major |
| Review finding decision | REVIEW_DECISIONS | open, accepted, dismissed, resolved |
| Deviation status | DEVIATION_STATUSES | suspected, confirmed, not_a_deviation, closed |
| Milestone status | MILESTONE_STATUSES | planned, in_progress, blocked, completed, cancelled |
| Dependency kind | DEPENDENCY_KINDS | blocks, informs |
| Open item status | OPEN_ITEM_STATUSES | open, answered, closed |
| Approval target type | APPROVAL_TARGET_TYPES | milestone, plan, protocol, report, hypothesis |
| Approval status | APPROVAL_STATUSES | requested, approved, rejected, withdrawn |
| Approval decision | APPROVAL_DECISIONS | approved, rejected |
Transition rule for plans, protocols, reports and SOPs: POST .../transition accepts any value of the
resource’s status enum other than approved (422 Invalid transition otherwise, 409 Conflict when the
row already has that status); approved is set only by the /approve route, which refuses rows that are
already approved, archived or superseded. The diagrams below show the intended path through each
lifecycle.
Program
active
paused
completed
archived
Source
pending
ready
error
archived
Hypothesis
proposed
under_review
accepted
rejected
retired
Plan
draft
review
approved
archived
Protocol
draft
review
approved
superseded
archived
Experiment
planned
running
completed
aborted
Report
draft
review
approved
archived
Check
queued
running
succeeded
partial
failed
Review finding decision
open
accepted
dismissed
resolved
Deviation
suspected
confirmed
not_a_deviation
closed
Milestone
planned
in_progress
blocked
completed
cancelled
Approval
requested
approved
rejected
withdrawn
Agent run
queued
running
succeeded
failed
cancelled
Sync run
queued
running
succeeded
partial
failed
skipped
Connection
pending
connected
error
disabled
Tone map
One function, mirrored in web/lib/status.ts (toneFor) and docs/lib/content.ts. Unknown values are
neutral, so nothing renders without a tone. Release words use info for available and preview and
neutral for the rest.
| Tone | Statuses |
|---|---|
| pass | connected, succeeded, approved, accepted, completed, ready, resolved, answered, active |
| review | pending, queued, draft, review, proposed, under_review, requested, suspected, planned, open |
| fail | error, failed, rejected, blocked, confirmed, aborted |
| info | running, in_progress, partial |
| neutral | disabled, skipped, archived, retired, dismissed, parked, cancelled, withdrawn, superseded, not_a_deviation, closed, paused |
Source: api/app/db/models/_enums.py, api/app/db/models/_agentic.py, api/app/db/models/org.py, api/app/db/models/rbac.py, api/app/db/models/connection.py, api/app/db/models/agent.py, api/app/db/models/evidence.py, api/app/db/models/plans.py, api/app/db/models/review.py, api/app/db/models/progress.py, api/app/services/_status.py, api/app/worker.py, web/lib/status.ts