Ask, inspect and run from the assistant
Ask about the run on screen and the assistant reads it through the same tools the interface uses. Ask for a figure and it opens the panel. Ask for a test and it builds the graph, registers the hypothesis and launches the engine, one action at a time, each one visible on the desk.
A validation conversation in the workspace
Ask the assistant to examine the validation protocol. Its reply stays next to the strategy, and names the evidence it needs before drawing a conclusion.
Open full sizeThe tools it serves
- Measured
Each tool is either a read of what the app already holds or an action on the desk. The reads return the graph, the results and the readings of a finished run, the engine log, the catalogue search, the instruments a data source lists and the quality of a series. The actions build a graph, wire a family, set a parameter, open a figure, launch a backtest, save or open a desk, and write a custom node file. An action is echoed on the desk as it happens, in the status bar and in the session journal.
The two lines above are computed from the served list at build time. The runtime keeps the same list next to its dispatch table, and a test fails when one drifts from the other, because a list copied by hand is a promise that expires without a sound.
Open full sizeA run has a pre-flight card
Before the assistant launches a backtest, the desk shows a card that names what the graph lacks: a market without a cost declaration, a split without purge, a validation node missing. The card warns, then allows. The run button reads the same card, so a graph the assistant repaired and a graph you repaired by hand pass the same check.
A bespoke rule that no catalogue node expresses is written as a custom node file, and the file is the node: the engine re-reads it at run time, a decision at bar t reads bars up to t minus one and no later bar, and an import outside numpy, pandas, math and statistics is refused at compile time.
Two commands that change the frame
/verdict <one hypothesis, with the market and the data available> /research [@agent ...] [rounds=N] [budget=N] <topic> /stop
/verdict carries one hypothesis from a fresh build to the engine verdict. The assistant inventories the data, searches the catalogue, builds the complete graph, then registers the hypothesis and the exact graph before any result exists. The command authorizes that one run; after launch the graph is frozen and a second trial is refused. The deterministic adversarial battery runs on its own once the run ends and appends its receipt. The assistant explains the evidence and its limits; the verdict is assigned by the engine and the assistant has no tool that changes it.
/research opens a session with several agents on the topic, described on its own page. /stop ends a running session at the next turn, and reaches it even while the assistant is answering.
Where it stops
The model answers through a relay
- Scope
- the assistant calls of the desk and of a Research session
- Effect
- the relay keeps the provider key and applies a per-licence rate; a burst of tool calls can hit that rate, and the refused call is shown as such in the conversation
- Control
- the token counter under the input shows the tokens of the current turn; the relay refusal is displayed as an error in the conversation, never as an empty answer
An action is proposed by the model, executed by the app
- Scope
- the graph, the figures, the runs and the desk files
- Effect
- a tool call outside the served list is refused with the list; a graph change after a /verdict launch is refused as frozen
- Control
- the served list is compared to the dispatch table by a unit test, and the frozen state is read from the command record