Skip to content

Questio: Research Orchestration

Questio is a research orchestration layer that connects projio's subsystems around the scientific reasoning cycle: question, evidence, answer, manuscript.

The gap questio fills

Projio's subsystems cover pipeline execution (pipeio), literature (biblio), notes (notio), code intelligence (codio), search (indexio), and manuscript assembly (manuscripto). But no subsystem understands why work is being done. An agent can run a pipeline and capture a note, but cannot answer:

  • "What pipeline runs are needed to test hypothesis H3?"
  • "Is there enough evidence to draft the Results section?"
  • "What is the highest-impact unblocked work right now?"

Questio provides this reasoning layer.

Research workflow ontology

Research follows a cyclic workflow. Each phase maps to a projio subsystem:

graph LR
    P[Plan] --> E[Execute]
    E --> O[Observe]
    O --> I[Interpret]
    I --> W[Write]
    W -.-> P
Phase Subsystem Questio role
Plan questio Track questions, milestones, dependencies
Execute pipeio Questio recommends which pipelines to run
Observe notio Questio captures structured result notes
Interpret biblio + notio Questio checks evidence against literature
Write manuscripto Questio reports which sections are draftable

Architecture

Questio is not a separate package. It's implemented as three lightweight layers:

flowchart TD
    C[Convention<br/>plan/questions.yml + milestones.yml] --> T[MCP Tools<br/>questio_status, questio_gap, questio_docs_collect]
    N[Note Type<br/>result notes in docs/log/result/] --> T
    T --> S[Skills<br/>questio-next, questio-ground, questio-record, questio-report, questio-session]
Layer What Where
Convention YAML schemas for questions and milestones plan/questions.yml, plan/milestones.yml
Note type Dedicated result note type with structured frontmatter docs/log/result/
MCP tools Structured queries: status overview, gap analysis, docs generation src/projio/mcp/questio.py
Skills Prompt-based workflows composing existing tools .projio/skills/questio-*.md

Data model

Research questions

Questions are the top-level entity. A hypothesis is a specific type of question.

# plan/questions.yml
questions:
  H1:
    text: "Do cortical delta waves precede ripple initiation?"
    type: hypothesis        # hypothesis | exploratory | descriptive
    prediction: "Large, spatially coherent cortical delta waves precede ripple initiation"
    pipelines: [spectrogram_burst, sharpwaveripple, coupling_spindle_ripple]
    milestones: [swr-detection-validated, delta-event-detection, delta-ripple-coupling]
    manuscript_section: results/h1-delta-ripple
    status: not_started     # not_started | in_progress | blocked | sufficient | confirmed | refuted
    depends_on: []
    citations: ["@sirota_2003", "@isomura_2006"]

Milestones

Milestones are decoupled from questions — multiple questions can share a milestone. They form a dependency graph.

# plan/milestones.yml
milestones:
  swr-detection-validated:
    description: "SWR detection validated across all subjects"
    pipelines: [sharpwaveripple]
    depends_on: [preprocessing-stable]
    status: not_started
    evidence: []            # list of result note IDs

Evidence (result notes)

Evidence is captured as notio notes with a dedicated result type:

# docs/log/result/result-arash-20260415-143022-123456.md
---
title: "SWR detection rate across subjects"
tags: [result]
series: sharpwaveripple
question: [H1, H3]
milestone: swr-detection-validated
metric: detection_rate_per_minute
value: "12.3 +/- 2.1"
confidence: validated       # preliminary | validated | final
---

The question and milestone frontmatter fields are the semantic links that make evidence queryable.

MCP tools

Three tools provide the structured query interface:

Tool Purpose
questio_status Overview of research state: questions, milestone completion %, evidence counts, blockers
questio_gap Per-question gap analysis: unmet milestones, blocked vs actionable items, recommendation
questio_docs_collect Generate docs/plan/ pages (questions table, milestones tracker, mermaid roadmap, evidence index)

Skills

Skills compose MCP tools into research workflows:

Skill When to use
questio-session Full research session: orient, plan, ground, execute, record, report
questio-next "What should I work on?" — dependency-aware prioritization
questio-ground Before starting work: gather literature context, find code, check prior attempts
questio-record After producing results: create structured evidence note, update milestone
questio-report Progress summary for supervisor: milestones hit, key results, blockers

Workflow loops

Research operates as nested loops at different timescales:

graph TD
    subgraph "Outer: Research Cycle (days-weeks)"
        O_orient[Orient] --> O_next[questio-next]
        O_next --> ML
        ML --> O_report[questio-report]
        O_report -.-> O_orient
    end

    subgraph ML["Middle: Milestone Completion (hours-days)"]
        M_gap[questio-gap] --> M_pick[Pick unblocked milestone]
        M_pick --> NL
        NL --> M_update[Update milestone]
        M_update -.-> M_gap
    end

    subgraph NL["Inner: Notebook Development (minutes-hours)"]
        N_ground[questio-ground] --> N_dev[Create/update notebook]
        N_dev --> N_exec[pipeio_nb_exec]
        N_exec --> N_inspect[Inspect results]
        N_inspect -->|unsatisfactory| N_dev
        N_inspect -->|satisfactory| N_record[questio-record]
    end
Loop Automation Agent autonomy
Inner (notebook) Fully automatable High — iterate until quality criteria met
Middle (milestone) Semi-automated Medium — pause at checkpoints
Outer (research cycle) Agent-guided Low — human approves direction

Docs site rendering

questio_docs_collect generates five auto-generated pages in docs/plan/:

Page Content
index.md Overall progress summary with links
questions.md Question registry table with status and evidence counts
milestones.md Milestone tracker grouped by question with evidence links
roadmap.md Mermaid dependency diagram with status-colored nodes
evidence.md Per-question evidence dossier with linked result notes

These are output artifacts (like compiled.bib) — regenerated from YAML, not hand-edited.

Relationship to worklog

Questio is project-local research reasoning. Worklog is cross-project coordination. The boundary is strict:

Concern Questio Worklog
"What should I investigate?" questio-next --
"Which project should I work on?" -- focus()
"How is H3 progressing?" questio_status("H3") --
"How is pixecog overall?" -- get_project("pixecog")

Worklog may optionally read plan/questions.yml and plan/milestones.yml to derive goal progress. Data flows project to worklog, never the reverse.

Design spec

The full design spec with all open questions is at docs/specs/research-orchestration/design.md.