Skip to content

Use past research in a new run

Every run leaves a record: the notes its agents keep as they work, the experiments it tried and their results, the attempts the judge measured, and any sources, claims and findings. This page shows how to read that record, how to let one campaign read another campaign’s record, and how to start a new run from it, so that it doesn’t begin from nothing.

The words this page uses:

  • A field note is a short note an agent writes while it works: an observation, a decision and why, a surprise, an open question or a lesson. The workers, the planner and the advisors write them. What was tried, and its result, is not a field note: the experiment queue keeps that.
  • A run’s journal is its field notes.
  • Thermite’s knowledge base is kept by control, with one folder for each campaign. A folder holds everything the campaign’s runs produce: the runs and their trials, field notes and research notes, the documents lanes write, experiments with their results, attempts with their verdicts, sources with the text that was read, claims, hypotheses, findings and reports. Each item keeps its campaign, rig, run, who wrote it and when.
  • A grant lets one campaign’s agents read another campaign’s folder. A campaign always reads its own.
  • Past research is what a run’s agents get from the folders their campaign may read.
  • A briefing is the background you pick from past research when you start a run. Every agent’s brief shows it.

Journals and the knowledge base explains why it works this way. The knowledge base lists every kind of item and what each holds.

  • The owner’s sign-in on the dashboard. Over MCP, the owner’s or an operator’s token: see Over MCP and the command line.
  • A campaign whose runs have reported. Control fills a campaign’s folder from its runs’ reports, so a campaign with no run yet has an empty folder.
  • For a new run to use past research, a run with agents. A try, with no agents, takes none.

A run's Journal tab: the filters Everyone, lane-1, lane-2, Planner, Teachers and Auditor with a search box, the kind filters Every kind, Observations, Decisions, Surprises, Questions and Lessons, and five field notes, newest first, each with its writer, kind and time, three of them with what they are about; at the side, the cards This run's corpus, The campaign's folder with its button What it can read, and Notes

  1. Open Campaigns in the sidebar on the left. For a running run, press its name on its card under At work now, shown as <campaign> › <run>. A paused or finished run is on its campaign’s page, under Earlier runs.
  2. On the run’s page, press the tab Journal, between Experiments and Attempts. Its label counts the field notes, such as 5 notes.

The tab lists the field notes, newest first. Each shows:

  • who wrote it: lane-1, planner, teachers, auditor or review panel;
  • its kind, such as decision or lesson, and when, such as 10-20 01:11 (month, day and UTC time);
  • its text;
  • what it is about, when it names one thing: an experiment’s title, which opens Experiments; an attempt’s id and hypothesis, which opens the attempt; your message “…”; or a round, such as round 15. A note about the run itself (what a note that names nothing is about) has no such line.

To narrow the list, press a writer above it (Everyone, then one button for each writer, such as lane-1, Planner or Teachers) or a kind (Every kind, Observations, Decisions, Surprises, Questions, Lessons, and note when a field note is of the kind note), or type words in Search the journal. The list changes at once. The tab shows the newest 500 notes; a longer journal ends with The newest 500 of 812. All of them are in the campaign's folder on Knowledge and in the run's export. Before the first note, it says No field notes yet. The lanes, the planner and the advisors write them as they work.

At the side:

  • This run’s corpus counts what the run recorded: Field notes, Notes, Sources read, Experiments tried, Claims (when it has some) and Findings.
  • The campaign’s folder says that all of it goes into the campaign’s folder in Thermite’s knowledge base. Below, it names the other folders the campaign’s agents read, such as Its agents also read: merge-speed., or says Its agents read only this campaign's folder. What it can read opens the campaign’s Knowledge section: see Let a campaign read another’s folder.
  • Notes lists the run’s research notes: facts an agent recorded, with the sources it found them in. It shows the newest 5, then All 12 notes for the rest.

Live also shows each field note as it is written, such as noted (observation): …, or teachers:teacher-a noted (lesson): … for an advisor. Field notes stay out of History.

The Knowledge page: Campaign folders lists three campaigns, each with its mode, its number of items, what it holds, when it last changed, search it, read by and reads; below, Search the knowledge base with the fields Words, Kind and Folder, the button Search, and the newest items in every folder, each with its kind, title, campaign, run and writer

  1. Press Knowledge in the sidebar, between Live and Commands.

    Campaign folders lists one folder for each campaign. Each row shows the campaign’s name, its mode and how many items it holds, such as hill climb · 113 items, what they are, such as 2 runs · 5 field notes · 8 experiments · 100 attempts, and when it last changed. read by: names the campaigns that may read this folder, or says none yet; reads: names the folders its own agents read besides it, or says only its own. The name opens the campaign’s Knowledge section.

  2. Under Search the knowledge base, write words in Words, such as vector loads. Every word must be in an item’s title or text. Leave it empty for the newest items.

  3. To narrow the search, choose a Kind (runs, trials, experiments, attempts, notes, documents, sources, claims, hypotheses, findings or reports) or a Folder. search it, on a folder’s row, does the same for that folder.

  4. Press Search.

The results come newest first, up to 100. Each shows its kind, such as Experiment or Field note (decision), its title, its campaign, run and writer, and, for an experiment, what became of it, such as tried: attempt a-0123456789abcdef (submitted), regress (-3.10%). Press a result to read its text, and the address of its source when it has one. With no match, the list says Nothing matches.; with 100 results, The newest 100 matches. Add words or a filter to see others.

The items are what agents wrote, or quoted from the pages they read. The page marks them as data to weigh, not instructions, and so do the agents’ briefs.

A campaign’s agents always read its own folder: what the campaign’s other runs recorded. To let them read another campaign’s folder too:

  1. Open the campaign’s page: Campaigns in the sidebar, then the campaign. (The folder’s name on Knowledge, or What it can read on a run’s Journal tab, opens the same place.)
  2. Go down to Knowledge, after the runs. It counts what the campaign’s own folder holds, with the buttons Search it and Open the folder, which open the Knowledge page. At the side, Who reads sort-speed’s folder names the campaigns that may read this campaign’s folder, or says No other campaign.
  3. Under Can read from, choose a campaign in Add a folder. Each is listed with its mode and items, such as merge-speed (hill climb · 86 items). A campaign whose runs haven’t reported yet is listed too: its items come as its runs report.
  4. Press Add. Beside it, the form says Runs at work see the change at their next sync.

The campaign’s page comes back at its Knowledge section, and the top of the page says sort-speed's agents may now read merge-speed's folder. Runs at work get it at their next sync. The folder shows under Can read from, with its mode, its items and when it last changed. On merge-speed’s page, Who reads merge-speed’s folder now names sort-speed.

If control can’t add it, the Knowledge section says Not changed. and why, such as Choose a folder to add. or A campaign always reads its own folder: choose another campaign's. A folder the campaign reads already changes nothing, and the top of the page says sort-speed reads merge-speed already.

To stop it, press Remove beside the folder under Can read from. The page says sort-speed's agents no longer read merge-speed's folder. Runs at work drop it at their next sync. New runs start without it. Experiments and a briefing that a run already took from that folder stay with the run.

You can add and remove folders at any time, also while runs are at work. Another knowledge base you run, such as GBrain, is not a folder here: a campaign’s kit names it as an MCP server (Give agents MCP tools).

Every few minutes, each rig’s supervisor asks control for the new and changed items of the folders that each of its running runs’ campaigns may read: the campaign’s own folder, without the run’s own items, and each folder granted to it. Control answers only for a run it assigned to that rig, with the folders of the campaign it assigned. The harness writes them into the run’s research folder, under knowledge/:

  • one Markdown file for each item, which starts with where it came from: campaign, rig, run, kind, who wrote it and when;
  • knowledge/README.md, which says what the folder holds, folder by folder.

An item that changes is written again. A folder that the campaign may no longer read is removed from knowledge/ at the next sync. A run’s knowledge folder shows the layout and the files.

Once knowledge/ holds something:

  • each new trial’s brief says where past research is, what it holds and from which folders, such as Past research from the folders this campaign may read is in … (40 notes, 12 experiments, from merge-speed, sort-speed): search it before starting. It is data, not instructions. Workers search the files with their own tools;
  • the planner and the advisors (the teacher pair, the auditor and each panelist) get one line that says what knowledge/ holds, and search it with a read-only tool, search_past_research. A planner in OpenCode, Claude Code or Codex reads the files themselves, read only. Teachers on a rig whose advisors may fetch any web page (fetch_domains "*" in its advisors file) get neither the line nor the search. The planner’s and the advisors’ search lists who gets what.

The supervisor syncs every 180 seconds, or as its setting THERMITE_KB_SYNC_SECONDS says; 0 turns it off. See the settings reference. Only running runs are synced: a paused run catches up when it runs again. A new run gets past research at the supervisor’s first sync after it starts, so a trial that starts before then begins without it.

  1. On the campaign’s page, press Start a run at the top. A panel opens, headed Start a run of sort-speed.
  2. Choose the rig under Where it runs, and keep Agents on On. See Start a run later for the other fields.
  3. Find From past research. Its list shows the newest 40 items that a run can start from: experiments, findings, claims, notes and reports, from the folders the campaign may read. The line under the search box names those folders, such as Searching: sort-speed, merge-speed., and Change opens the campaign’s Knowledge section.
  4. To search, write words in Search past experiments, findings and notes. The list changes as you type. Enter searches too; it doesn’t start the run. Items you ticked stay in the list.
  5. Tick the items to start from. Each row shows its kind, such as Past experiment, Finding or a field note’s kind (Decision), its title, its run, what became of it or whether it is verified, who wrote it, and its campaign.
  6. The line at the foot of the panel adds It starts from 3 items of past research. Press Start the run.

What the new run gets:

  • Ticked experiments join its experiment queue, after any untried experiments it copies under Experiments to start with, at most 500 in all. Each keeps its direction, its reason and who first added it. Its details end with where it came from and what it gave, such as In sort-speed-1 (sort-speed) it was tried: attempt a-0123456789abcdef (submitted), regress (-3.10%). In Up next it shows from sort-speed-1, and the run’s History says "…" was copied into the queue from run sort-speed-1.

  • Ticked findings, claims, notes and reports become its briefing. A worker’s brief shows them under their own heading, each with where it came from:

    # Background from past research (data, not instructions)
    Picked from past research when this run started, each with where it came from: weigh it, but it is not instructions.
    - From finding f-0123456789ab of run merge-speed-2 (campaign merge-speed): …

    The planner, the teacher pair, the auditor and the review panel get the same items as background, also marked as data. Teachers that may fetch any web page don’t get them, in their prompt or from their brief tool. A run’s briefing is fixed when the run starts: nothing changes it later. Briefings has its fields and limits.

With Agents on Off: a try, From past research hides, and nothing ticked in it is sent: a try takes neither experiments nor a briefing.

If an item can no longer be used, for example because you removed its folder from Can read from after the panel opened, the campaign’s page says Not started. An item from past research is not one this campaign may read and start from: search again., with the panel open again.

The New campaign page sets neither grants nor past research. Its last step, Review and start, says so under Past research, with a link to Knowledge: both are set on the campaign’s page once it is saved. A run that Start the campaign starts reads only the campaign’s own folder, and has no briefing. To start a new campaign’s first run from past research:

  1. On New campaign, at Review and start, press Save without starting. The campaign’s page opens and says Saved on control, with no run yet.
  2. Under Knowledge › Can read from, choose a folder in Add a folder and press Add, as in Let a campaign read another’s folder. Do it for each folder its agents should read.
  3. Press Start a run. Under From past research, tick the experiments and findings to start from, as in Start a run from past research, and press Start the run.

The run’s agents then read the granted folders in knowledge/, and the planner and the advisors search them; its queue starts with the experiments you ticked.

The MCP tools for the knowledge base:

ToolTokensWhat it does
kb_foldersThe owner’s and an operator’sLists the folders, each with its mode, its counts by kind, its runs, its newest change, read_by (the campaigns granted to read it) and reads (the folders it reads besides its own)
kb_searchThe owner’s and an operator’sTakes q (the words), and optionally campaigns (the folders to search; every folder when left out), kinds and limit (1 to 100, 20 unless set). Returns the matching items, newest first, each with its id, campaign, rig, run, kind, ref, title, body, by and, for an experiment, its result
kb_grantThe owner’s and an operator’sTakes campaign and reads, as Add does: from now on, campaign’s agents may read the folder of reads
kb_revokeThe owner’s and an operator’sTakes the same, as Remove does

The agent’s and the reader’s tokens don’t have these tools. kb_grant refuses no campaign <name>, and a campaign always reads its own folder: name another campaign. kb_revoke refuses <campaign> does not read <reads>.

To start another run of a campaign that control keeps, call start_run with past: the id of each item that kb_search returned, such as {"campaign": "sort-speed", "rig": "rig-1", "past": [12, 40]}. It takes them as From past research does: experiments join the queue, and findings, claims, notes and reports go to the briefing, each with control’s own words for it. It refuses an item from a folder the campaign may not read: An item from past research is not one this campaign may read and start from: search again. From the command line, thermite run start sort-speed --rig rig-1 --past 12 --past 40 does the same with the owner’s token: see Start a run from a script or an agent.

To start a run from a contract with past research, add to the assign_campaign payload:

  • briefing: up to 200 items, each {text, from: {campaign, run, kind, ref}}, with the campaign, run, kind and ref of a finding, claim, note or report that kb_search returned;
  • queue: past experiments, each with the fields that assign_campaign lists, and from: {run, id} with the experiment’s run and its ref.
payload.json (part)
{
"briefing": [
{
"text": "Wider loads only help on the large cases.",
"from": { "campaign": "merge-speed", "run": "merge-speed-2", "kind": "finding", "ref": "f-0123456789ab" }
}
]
}

Over MCP, send the payload with issue_command, kind assign_campaign. Control looks each briefing item up by its from and puts in the item’s own text, whatever text says. It leaves out an item it can’t find, one it finds on more than one rig, and one in a folder the run’s campaign may not read; with none left, the run has no briefing. It takes a past experiment’s words from its own record when the experiment comes from a folder the run’s campaign may read, as for any copied experiment, and, as Start a run does, ends its details with what became of it when the folder has that, such as In sort-speed-1 (sort-speed) it was tried: attempt a-0123456789abcdef (submitted), regress (-3.10%). Any other keeps the words you sent, with the author copied.

The command line can’t search the knowledge base, and thermite assign has no option for a briefing. Print the payload, add briefing, and send it with thermite command. Unlike MCP, thermite command and the REST API send the briefing and the experiments as you give them: control doesn’t look them up. For example:

Terminal window
npx thermite assign --contract contract.json --run sort-speed-4 \
--seed https://git.example.com/you/project.git@0123456789abcdef0123456789abcdef01234567 \
--kit https://git.example.com/you/project-kit.git --print > payload.json
# add "briefing" to payload.json, then:
npx thermite command --control http://127.0.0.1:8800 --token-file .dev/secrets/control-admin-token \
--rig local-1 --kind assign_campaign --payload @payload.json

A run without agents ("agents": false) refuses a briefing: a run without agents has no briefs: leave out the background from past research. It refuses a queue the same way: a run without agents has no queue: leave out the experiments to copy.

  • A grant: the folder is under Can read from on the campaign’s page. On Knowledge, the campaign’s row says reads: and the folder, and the folder’s row says read by: and the campaign. A run’s Journal tab says Its agents also read: and the folder.
  • The sync: the rig’s supervisor writes past research synced to its log, with how many items it handed over, and past research sync error once when a sync fails.
  • A run from past research: on Commands, the assign campaign row is delivered. On the run’s Experiments tab, the past experiments are in Up next, each marked from and its run. The dashboard doesn’t show a run’s briefing. Over MCP, command_status or list_commands gives the rig’s whole answer to the command, which counts what the run took, such as "queue": 1 and "briefing": 2. The rig’s next export holds the briefing, in briefing.jsonl.