Before any code runs on GPU, Thesis requires a structured experiment blueprint that makes the hypothesis falsifiable, the method reproducible, and the success criteria explicit. This guide walks through staging an empirical node, reviewing the proposal card, and understanding what happens when you approve or reject it.

Node kinds in Thesis

Thesis has three node kinds:
KindWhen to use
untypedPlanning nodes, literature summaries, root anchors
empiricalTestable experiments with a hypothesis and a method
insightSynthesis nodes that summarize conclusions across experiments
An empirical node is the only kind that can receive a compute grant. It carries a blueprint.json artifact with an 8-section experiment design and a status field that progresses from draftedawaiting_approvalin_progresscompleted (or failed).

The 8-section blueprint

When the agent stages an empirical node, it fills eight free-text sections:
SectionWhat belongs here
hypothesis_restatementA single falsifiable claim derived from the parent node
falsification_criterionThe exact condition that would disprove the hypothesis
method_sectionNarrative description of the procedure; the independent variable lives here
expected_outcomes_sectionWhat you expect to observe if the hypothesis is correct
baseline_control_sectionThe control condition or reference result to compare against
metrics_sectionPrimary, secondary, and tertiary metrics to record
data_config_sectionDataset paths, sampling strategy, random seeds
rigor_review_sectionA PASS or FAIL verdict against research standards, with reasoning
The rigor review is the agent’s self-critique pass. A FAIL there does not block the proposal, but it surfaces concerns for you to evaluate before approving.
1

Ask the agent to stage an empirical node

In the agent chat, describe the experiment you want designed. The agent will call thesis_stage_node_create with kind: "empirical" and produce a blueprint.json artifact on the new node.You can also call the MCP tool directly to create a minimal empirical node, then let the agent fill in the blueprint:
{
  "name": "thesis_stage_node_create",
  "arguments": {
    "title": "Cosine vs. linear LR decay, 1B GRPO convergence",
    "summary": "Test whether cosine decay reaches 90% of peak reward 20% faster than linear decay under identical GRPO hyperparameters.",
    "kind": "empirical",
    "parent_ids": ["<root-node-id>"]
  }
}
The agent then populates the full blueprint, writes it as artifacts/blueprint.json, and sets the node status to awaiting_approval.
The main agent does not run arbitrary code. Staging an empirical node only creates the blueprint, no compute is acquired at this step.
2

Review the proposal card in the UI

Once the agent emits a proposal event, a blueprint card appears in the agent chat. Switch to the Agents tab in the right pane to see all staged experiments in the drafted or awaiting_approval state.On the card, review each section of the blueprint. Pay particular attention to:
  • Falsification criterion, is it specific enough to produce a clear result?
  • Metrics, are primary metrics measurable without ambiguity?
  • Rigor review, if the agent marked FAIL, read its reasoning before approving.
The card also shows the proposed compute configuration: GPU SKU, provider, timeout, and budget.
3

Approve or reject the proposal

Click Run on the proposal card to approve, or Dismiss to reject.If you approve:The backend mints a short-lived approval token and injects a synthesized message into the chat. The agent receives the token, calls spawn_experiment_agent, and the compute acquisition flow begins. See Run a sub-agent on an approved experiment for the full execution flow.If you reject:The rejection is logged as a dead end in the research log, a permanent record that this direction was considered and declined, with a timestamp. The node remains in the graph so future work can trace the reasoning, but no compute is spent. You can ask the agent to revise the blueprint and re-propose.
Approval is irreversible in the short term. Once the approval token is consumed and a compute lease is acquired, the sub-agent begins executing. Use Dismiss if you want to revise the blueprint first.

What the approval mints

When you approve a proposal, Thesis writes two artifacts to the node:
  • compute_approval.json, the approval receipt, including the token, SKU, provider, budget, and timeout.
  • A proposal_approved entry in the research log, timestamped and tied to your user ID.
The approval token is the only thing that allows spawn_experiment_agent to proceed. A prompt alone cannot start compute, the token must be present and valid.