HAIOS Investigation Cycle for structured research and discovery. Use when starting or resuming an investigation. Guides HYPOTHESIZE->EXPLORE->CONCLUDE workflow with phase-specific tooling.
This skill defines the EXPLORE-HYPOTHESIZE-VALIDATE-CONCLUDE cycle for structured investigation of research questions. It composes existing primitives (Skills, Commands, Memory) into a coherent research workflow.
SHOULD invoke this skill when:
Invocation: Skill(skill="investigation-cycle")
EXPLORE --> HYPOTHESIZE --> VALIDATE --> CONCLUDE --> CHAIN
| | | | |
| | | | [route next]
| | | | |
evidence synthesize verdicts spawns /-------------\
gathering hypotheses per hypo + memory | |
type=inv has plan?
| |
investigation implement
-cycle -cycle
E2.4 EXPLORE-FIRST Pattern:
| Phase | Purpose | State |
|---|---|---|
| EXPLORE | Gather evidence before forming hypotheses | EXPLORE |
| HYPOTHESIZE | Synthesize hypotheses FROM evidence | DESIGN |
| VALIDATE | Test each hypothesis against evidence | CHECK |
| CONCLUDE | Synthesize findings, spawn work, store memory | DONE |
Parallel to Implementation Cycle:
| Implementation | Investigation | Purpose |
|---|---|---|
| PLAN | EXPLORE + HYPOTHESIZE | Define what to investigate |
| DO | (exploration done in EXPLORE) | - |
| CHECK | VALIDATE | Verify hypotheses |
| DONE | CONCLUDE | Capture and close |
On Entry:
mcp__haios-operations__cycle_set(cycle="investigation-cycle", phase="EXPLORE", work_id="{work_id}")
Goal: Gather evidence through unrestricted exploration before forming hypotheses.
Actions:
docs/work/active/{backlog_id}/WORK.md@docs/work/active/INV-052/ → Glob("docs/work/active/INV-052/**/*.md"))memory_search_with_experienceGoverned Activities (EXPLORE state):
Key Insight (Session 262, WORK-036): Unrestricted exploration produces deeper analysis than constrained subagent invocation. Main agent explores freely; investigation-agent invocation is OPTIONAL.
Exit Criteria:
Tools: Read, Glob, Grep, WebSearch, WebFetch, memory_search_with_experience
On Entry:
mcp__haios-operations__cycle_set(cycle="investigation-cycle", phase="HYPOTHESIZE", work_id="{work_id}")
Goal: Form hypotheses FROM the gathered evidence.
Actions:
Governed Activities (DESIGN state):
Key Insight: Hypotheses form AFTER exploration, not before. This is the inversion from the old HYPOTHESIZE-first pattern.
Exit Criteria:
Tools: Read, Edit, Write
On Entry:
mcp__haios-operations__cycle_set(cycle="investigation-cycle", phase="VALIDATE", work_id="{work_id}")
Goal: Test each hypothesis against the gathered evidence.
Actions:
Governed Activities (CHECK state):
Key Insight: VALIDATE is focused review, not exploration. Evidence already exists from EXPLORE phase. No new evidence gathering.
Exit Criteria:
Tools: Read, Grep, memory_search_with_experience
On Entry:
mcp__haios-operations__cycle_set(cycle="investigation-cycle", phase="CONCLUDE", work_id="{work_id}")
Goal: Synthesize findings, spawn work items, and reconcile epoch artifacts.
Actions:
/new-* commands with spawned_by: {this_investigation_id}ingester_ingeststatus: completememory_refs in work item frontmatterBefore spawning work, categorize all findings into three categories:
Step 1: Categorize findings
| Category | What to Include | Format |
|---|---|---|
| KNOWN | Facts verified from files, tests, or direct observation | Fact + citation (file:line, memory ID, URL) |
| INFERRED | Conclusions reached through reasoning | Premise → conclusion chain |
| UNKNOWN | Gaps in knowledge with impact assessment | Gap + impact (blocking / non-blocking) |
Step 2: Render verdict
| Verdict | Condition | Action |
|---|---|---|
| PROCEED | No blocking unknowns | Continue to spawn work items |
| DEFER | Significant unknowns exist | Present K/I/U to operator via AskUserQuestion for decision |
| INVESTIGATE-MORE | Critical unknowns block all progress | Spawn follow-up investigation before any implementation work |
Step 3: If DEFER
Present the K/I/U summary to the operator using AskUserQuestion:
After operator responds:
If AskUserQuestion fails or times out: treat as "Defer to next session" (fail-safe).
Rationale (WORK-082, Session 372):
Investigations reveal ground truth. Before closing, reconcile findings with epoch structure:
Step 1: Check related chapters
For each chapter referenced in work item (chapter: field or @ references):
| If findings show... | Then update chapter... |
|---|---|
| Chapter questions answered | status: Complete |
| Implementation exists and is correct | status: Complete + add evidence |
| Implementation exists but is wrong/suboptimal | status: Implemented-Deficient + document deficiencies + link remediation work |
| Chapter premise was wrong | status: Invalid + document why |
Step 2: Check related arc
Step 3: Check epoch
Rationale (Session 276): WORK-065/WORK-016 revealed that without this step, chapters stay "Planned" after code exists, findings get buried in WORK.md files, and epoch artifacts drift from reality. Investigations are the natural audit point.
Governed Activities (DONE state):
Exit Criteria:
ingester_ingest called)memory_refs populated in work item frontmatterTools: ingester_ingest, Edit, AskUserQuestion, /new-adr, /new-plan, /new-work
On Entry:
mcp__haios-operations__cycle_set(cycle="investigation-cycle", phase="CHAIN", work_id="{work_id}")
Goal: Close investigation and route to next work item.
Actions:
/close {backlog_id}mcp__haios-operations__queue_ready()documents.planstype field from WORK.mdrouting-gate skill):next_work_id is None → await_operatortype == "investigation" OR ID starts with INV- → invoke_investigationhas_plan is True → invoke_implementationinvoke_work_creationinvoke_investigation -> Skill(skill="investigation-cycle")invoke_implementation -> Skill(skill="implementation-cycle")invoke_work_creation -> Skill(skill="work-creation-cycle")await_operator -> Report "No unblocked work. Awaiting operator direction."MUST: Do not pause for acknowledgment - execute routing immediately.
Exit Criteria:
On Complete:
mcp__haios-operations__cycle_clear()
Tools: /close, mcp__haios-operations__queue_ready, Read, Skill(routing-gate)
| Phase | Primary Tool | Memory Integration | Command |
|---|---|---|---|
| EXPLORE | Read, Glob, Grep, WebSearch | memory_search (prior work) | /new-investigation |
| HYPOTHESIZE | Read, Edit | - | - |
| VALIDATE | Read, Grep | memory_search (verify patterns) | - |
| CONCLUDE | Edit, Write | ingester_ingest (findings) | - |
| CHAIN | Bash, Skill | - | /close |
| Phase | Question to Ask | If NO |
|---|---|---|
| EXPLORE | Is evidence gathered? | Continue exploring freely |
| EXPLORE | Memory queried? | Run memory_search_with_experience |
| HYPOTHESIZE | Are hypotheses formed from evidence? | Synthesize from EXPLORE notes |
| HYPOTHESIZE | Does each hypothesis cite evidence? | Add citations |
| VALIDATE | Do all hypotheses have verdicts? | Review evidence, render verdict |
| VALIDATE | Are verdicts supported by evidence? | Cite specific sources |
| CONCLUDE | Are findings synthesized? | Write answer to objective |
| CONCLUDE | Is Work Disposition table complete? | Complete disposition for all findings |
| CONCLUDE | Are epoch artifacts reconciled? | Update chapters/arc/epoch per findings |
| CONCLUDE | Are learnings stored? | Run ingester_ingest |
| CHAIN | Is investigation closed? | Run /close {backlog_id} |
| CHAIN | Is next work identified? | Run mcp__haios-operations__queue_ready() |
EXPLORE phase principles:
HYPOTHESIZE phase principles:
| Decision | Choice | Rationale |
|---|---|---|
| Four phases not three | EXPLORE→HYPOTHESIZE→VALIDATE→CONCLUDE | Separates evidence gathering from hypothesis testing |
| EXPLORE-FIRST | Evidence before hypotheses | Session 262 showed unrestricted exploration produces depth |
| No MUST investigation-agent | Main agent explores freely | Subagent constraint limited discovery in prior pattern |
| VALIDATE as separate phase | Focused verdict-rendering | Separates synthesis (HYPOTHESIZE) from verification (VALIDATE) |
| Memory query at start | EXPLORE includes prior work check | Avoid re-investigating solved problems |
| Spawned work items | Required exit criterion | Investigations should produce actionable output |
| Epoch artifact reconciliation | MUST in CONCLUDE phase | Session 276: Without this, chapters stay "Planned" after code exists, findings buried in WORK.md |
For detailed phase guidance, see fractured templates:
| Phase | Template |
|---|---|
| EXPLORE | .claude/templates/investigation/EXPLORE.md |
| HYPOTHESIZE | .claude/templates/investigation/HYPOTHESIZE.md |
| VALIDATE | .claude/templates/investigation/VALIDATE.md |
| CONCLUDE | .claude/templates/investigation/CONCLUDE.md |
Each template defines:
.claude/templates/investigation.md (monolithic, deprecated).claude/templates/investigation/ (preferred)