Template Example (1/2)

This page is the template for Vmax tools. Build your own with the create-vmax-tools-page skill: it gives you this shell, the sidebar, and every form primitive shown below. The controls on this page decide who can open a published paper, how it can be reused, and what ships alongside it. Drafts are never affected.

Comparisons

Use <FormTextCompare /> to show an edit as a unified diff. Removed lines wash var(--theme-diff-delete-wash), added lines wash var(--theme-diff-insert-wash), and every row snaps to one var(--theme-grid-block). The diff stays inside the 768px column and scrolls sideways when a line runs long.

Paraphrase
1-Freedom is at odds with happiness.
21Authentic freedom is not satisfaction, but risk and effort.
3-At its most extreme, freedom is the anguish of one who holds their salvation and their downfall in their hands: the least comfortable of situations.
4-Those who desire happiness above all else must first sacrifice their freedom, for servitude relieves them of the heaviest of burdens.
5-Conformity is the first condition of comfort, and liberalism tells the individual that to be free is to be happy.
6-Since all servitude brings a semblance of peace, they will eventually believe that to be a serf is to be free.
2+America is greatest when its people hold their salvation and their destiny in their own hands.
3+Those who want a great nation must first defend their freedom, for responsibility is the proudest of burdens.
4+Self-reliance is the first condition of greatness, and America tells the individual that to be free is to be capable of anything.
5+Since freedom rewards effort, they will come to know that to be free is to be strong.
6+Greatness is not given to a people; it is earned by the free.

<FormTextCompareSideBySide /> is the split view. Before sits on the left, after on the right, and a hatched blank fills any line without a match. Reach for it when readers need both versions in full.

Paraphrase
BeforeAfter
1Freedom is at odds with happiness.
2Authentic freedom is not satisfaction, but risk and effort.
3At its most extreme, freedom is the anguish of one who holds their salvation and their downfall in their hands: the least comfortable of situations.
4Those who desire happiness above all else must first sacrifice their freedom, for servitude relieves them of the heaviest of burdens.
5Conformity is the first condition of comfort, and liberalism tells the individual that to be free is to be happy.
6Since all servitude brings a semblance of peace, they will eventually believe that to be a serf is to be free.
1Authentic freedom is not satisfaction, but risk and effort.
2America is greatest when its people hold their salvation and their destiny in their own hands.
3Those who want a great nation must first defend their freedom, for responsibility is the proudest of burdens.
4Self-reliance is the first condition of greatness, and America tells the individual that to be free is to be capable of anything.
5Since freedom rewards effort, they will come to know that to be free is to be strong.
6Greatness is not given to a people; it is earned by the free.

The same component reads well on code. Here a recursive factorial becomes the triangular numbers, so only the two edited lines change color.

factorial to triangular
1-function factorial(n) {
1+function triangular(n) {
22 if (n <= 1) return 1;
3- return n * factorial(n - 1);
3+ return n + triangular(n - 1);
44}

FormCode

Use <FormCode /> for source the way a run carries it. A dependency-free tokenizer colors python, json, shell, and log through the shared var(--theme-graph-option-*) palette, mixed toward var(--theme-text) so every token lands legible on both themes. Same measured rows as the diffs: a numbered gutter, one var(--theme-grid-block) per line, sideways scroll past the 768px column.

verify.py: the behavior gate
1# Grade one rollout against the oracle behavior.
2@verifier.gate(key="behavior", threshold=0.5)
3def behavior_gate(rollout: Rollout) -> float:
4 expected = load_oracle(rollout.task_id)
5 observed = rollout.stdout.strip()
6 if not observed:
7 return 0.0
8 if observed == expected.stdout:
9 return 1.0
10 return partial_credit(observed, expected)

The shell language covers the commands a page tells its reader to run (set copyable on those and a copy control joins the caption line), and log picks the verdict words out of a verifier's output: PASSED reads var(--theme-diff-insert), FAILED and ERROR read var(--theme-diff-delete).

Reproduce the run
1# Reproduce the run locally, then replay one trajectory.
2git clone git@github.com:vmax/populora-runs.git
3cd populora-runs
4python3 scripts/replay.py --run ppo-8b-4192 --trajectory 4 --verbose
Verifier output
1behavior gate ....... PASSED (score 0.92)
2remote_execution .... PASSED (score 1.00)
3capability gate ..... FAILED (score 0.31)
4WARNING sandbox clock drifted 412ms during trial 3
5ERROR capability contract unmet: expected 3 tool calls, saw 0

FormJSONExplorer

Use <FormJSONExplorer /> to let readers walk a JSON payload. Every object and array folds with the + / - toggles, so a large record stays scannable.

ppo-8b-4192
1- {
2 "run": "ppo-8b-4192"
3 "model": "vmax-agent-8b"
4 - "adapter": {
5 "method": "lora"
6 "rank": 16
7 "alpha": 32
8 "trainablePct": 0.7
9 }
10 - "benchmarks": [
11 "swe-bench"
12 "unix-ctf"
13 "webarena"
14 ]
15 - "scores": [
16 - {
17 "suite": "unix-ctf"
18 "pass": 0.71
19 }
20 - {
21 "suite": "webarena"
22 "pass": 0.63
23 }
24 ]
25 "verified": true
26 "reviewer": null
27 }

Elements

The small controls and text marks every tools page is built from. <FormInput /> is the text field. The glass square on the right submits, Enter submits too, and the attached flag docks it flush beneath a <WebTerminalWindow />.

<FormTextArea /> is the multiline sibling on the same hairline surface: the shape a prompt input takes. It auto-grows to fit what you type, reflows on resize, and opens sized to its placeholder, so a worked Example: reads in full. Enter inserts a newline; Cmd or Ctrl with Enter submits, as does the glass square pinned to the bottom-right.

<Checkbox /> is the toggle. A native input hides behind the square figure, so it stays accessible while the mark matches the kit. Control it with value and onChange.

Your published runs and papers are public. Anyone can read and download them; uncheck to limit access to approved Vmax accounts.
Allow readers to cite your work and quote excerpts, provided they credit you as the author.
Allow your published runs to be used to train Vmax models, which sharpens recommendations for everyone who reads them.

<FormList />is the list. Unordered rows take the kit's outline square as their bullet, and wrapped lines keep a hanging indent.

What every clone holds constant
  • Every size comes from var(--theme-grid-block); nothing is measured by eye, so the rhythm survives any body.
  • Colour, borders, and fonts come from the var(--theme-*) tokens, so a page reads correctly in both themes without a single hard-coded value.
  • Bodies stay inside the 768px column and scroll sideways past it, the one overflow rule shared by tables, diffs, equations, and rollouts.
  • The chrome is shared; only the body changes.

Pass ordered to swap the square for a monospace number. Both markers share one gutter, so the two forms keep a single text edge.

How a tools page ships
  1. Compose a body from the <Form* /> primitives, paired with its .module.css.
  2. Add a new <Form* /> component when a case is not covered. That is how the kit grows.
  3. Register one row in TOOLS_PAGES with a label, a description, and its columns.
  4. The route renders it, and the sidebar anchors carry the live query string forward.

And every text style the tools pages use, shown together for reference.

HeadingSub-heading

Paragraph, the body copy scale, carrying bold emphasis and an inline-code mark. The mark takes a tone when it carries a status word: passed on var(--theme-diff-insert), failed on var(--theme-diff-delete), and running on var(--theme-focused-foreground) for a state still in flight.

Field label0.82▲ 0.19

FormSelect

<FormSelect /> is the pick-one control on <FormInput />'s hairline surface. A native select sits behind it, so keyboard and screen-reader behaviour come free, and onChange hands the chosen value straight to a query or an API call. Here it picks the evaluation suite for a run.

Fifteen held-out hiding techniques, fifteen fresh trials each. Solving it takes generalization across Unix families, not recall of the training techniques.

Omit the label for a thin variant: a compact filter or sort control that sits inline without a field heading. Its left and right gradient edges set it apart from a text field.

FormSlider

<FormSlider /> is the continuous control: <FormRatioBar />'s meter made live, with the current value in the monospace slot. Test-time compute is the canonical use: every solver attempt added per task multiplies what a run pays, so drag K and watch the corpus reprice.

Solver attempts per task (K)8 / task

At K = 8, scoring the 6,708-candidate corpus costs 53,664 solver trials per training run. A probe reward pays zero.

Set step to keep a knob on its lattice, and format to print the figure the way the field reads it: a context window in thousands of tokens, an adapter rank as r.

Context window128k tokens
LoRA rankr = 16

FormSegmentedControl

<FormSegmentedControl /> is the pick-one-of-few: native radios behind equal segments, for the two-to-four-way choices an experiment sweeps. The selection reads the way every label in the kit does: muted for the rest, full and bold for the pick. Here, how the agent plans.

Planner

A high-level planner decomposes the goal into subgoals a low-level policy executes, so an eighteen-turn episode holds its course.

Leave it uncontrolled with a defaultValue and it manages itself, like the memory module an agent carries between episodes.

Memory module

Tables

<FormTable /> has three variants, shown here on one leaderboard so you can compare them. A table stays inside the 768px column and scrolls sideways once a fluid column pushes it wider. Mark a column sortable and its header sorts the rows: first click descending, a second flips it. A string cell sorts by the figure it leads with, so Params orders 1.0B under 8.0B under 13B.

Gradient
Eval note
vmax-agent-8b8.0B71.4+12.6The LoRA-tuned policy. Tops the suite on agentic coding while training under one percent of its weights.
vmax-base-8b8.0B58.8baseThe frozen base the adapter sits on. Strong general reasoning but loses the long-horizon tool-use tasks.
openhands-13b13B66.1+7.3A larger open baseline. Edges ahead on single-shot problems but pays for it in latency and serving cost.
world-model-3b3.0B61.9+3.1Plans against a learned world model before it acts, which recovers most of the gap at a fraction of the size.
distilled-1b1.0B54.2-4.6A student distilled from the 8b teacher. Holds surprising ground on the easy split, then falls off where depth is needed.

The ruled variant swaps the gradient fills for a hairline rule beneath each row.

Ruled
Eval note
vmax-agent-8b8.0B71.4+12.6The LoRA-tuned policy. Tops the suite on agentic coding while training under one percent of its weights.
vmax-base-8b8.0B58.8baseThe frozen base the adapter sits on. Strong general reasoning but loses the long-horizon tool-use tasks.
openhands-13b13B66.1+7.3A larger open baseline. Edges ahead on single-shot problems but pays for it in latency and serving cost.
world-model-3b3.0B61.9+3.1Plans against a learned world model before it acts, which recovers most of the gap at a fraction of the size.
distilled-1b1.0B54.2-4.6A student distilled from the 8b teacher. Holds surprising ground on the easy split, then falls off where depth is needed.

The striped variant alternates a translucent fill down the body under a subdued header.

Striped
Eval note
vmax-agent-8b8.0B71.4+12.6The LoRA-tuned policy. Tops the suite on agentic coding while training under one percent of its weights.
vmax-base-8b8.0B58.8baseThe frozen base the adapter sits on. Strong general reasoning but loses the long-horizon tool-use tasks.
openhands-13b13B66.1+7.3A larger open baseline. Edges ahead on single-shot problems but pays for it in latency and serving cost.
world-model-3b3.0B61.9+3.1Plans against a learned world model before it acts, which recovers most of the gap at a fraction of the size.
distilled-1b1.0B54.2-4.6A student distilled from the 8b teacher. Holds surprising ground on the easy split, then falls off where depth is needed.

A table also reads as a settings card. This one holds the LoRA adapter behind the demos below: the base model stays frozen, so the shipped checkpoint is just the adapter.

Adapter configuration
SettingValueNote
Base modelvmax-agent-8bFrozen. Only the adapter trains, so one GPU fine-tunes the CTF policy that used to need a cluster.
Rank r16Each targeted projection learns a low-rank update W + BA, with B and A the only trained matrices.
Alpha32The adapter output is scaled by alpha / r = 2 before it is added back to the frozen projection.
Target modulesq_proj, v_projAdapters on the query and value projections recovered the most flags per trained parameter.
Trainable params56M / 8.0B0.7% of the network trains. The checkpoint you ship for the CTF task is just the adapter.

For a paper's main results, pass groups. Each group gets a full-width header row and the best value in each comparison is bold. The table reads like the paper it came from. Sorting stays inside the sections: every column here is sortable, so a click ranks each domain within itself (the stacked caret lighting the direction) and the group headers hold. Sort Utility and the best generator rises to the top of Code induction, Math, and Software engineering at once. The sort sees through the bold, so a highlighted best value ranks by its figure, not by being marked.

Probe-trained generators against their base
Code induction
Base3B0.1010.6650.7110.3760.318
Single probe3B0.2000.9090.8090.2660.735
Ensemble WCO3B0.1730.8350.7140.3600.685
Base7B0.0530.6750.7200.3690.293
Single probe7B0.1250.8830.7340.3460.674
Ensemble WCO7B0.0980.8460.7000.3770.535
Math
Base3B0.2470.9660.6310.5050.605
Single probe3B0.4190.9600.7080.3870.751
Base7B0.1660.9660.6310.5050.605
Single probe7B0.2790.9570.6520.4640.516
Software engineering
Base27B0.2180.7770.7780.3120.737
Single probe27B0.2660.8040.8820.2260.694
Base (OOD)27B0.0980.8360.8110.0850.605
Single probe (OOD)27B0.1960.7510.8980.0930.718

FormMetric

Lead with <FormMetric /> when a run has headline numbers, here a capture-the-flag agent tuned with the adapter above. Set goodDirection per metric, so a falling KL reads var(--theme-diff-insert) while a falling solve rate reads var(--theme-diff-delete).

Latest run
0.71Flags / episode▲ 0.22
58%Solve rate▲ 11 pts
0.12KL to reference▼ 0.04
0.7%Trainable params

The same strip for a run that regressed. The falls read var(--theme-diff-delete), and the rising KL reads it too, because for KL a rise is the wrong direction.

A run that regressed
0.44Flags / episode▼ 0.15
39%Solve rate▼ 8 pts
0.28KL to reference▲ 0.1
0.7%Trainable params

FormEquation

Use <FormEquation />for display math. Here it draws the frontier band behind the Utility column above: a task earns credit only when the solver's mean solve rate lands inside the band.

The frontier band
US(x)  =  I[aμS(x)mean solve rate ofsolver S on task xb]U_S(x) \;=\; \mathbb{I}\Big[\, a \,\le\, \underbrace{\mu_S(x)}_{\substack{\text{mean solve rate of} \\ \text{solver } S \text{ on task } x}} \,\le\, b \,\Big]

Paste a formula the way a paper carries it. The \[..\], $$..$$, and \(..\) wrappers strip away, several pairs split into separate equations, and environments and raw math pass through. This reward keeps its $$ wrapper and still renders cleanly.

Teacher reward against the matched student
Rteacher(p)  =  {1if p fails to parse, execute, or is non-deterministic,0if ρ(t,s,p)=0,1ρ(t,s,p)otherwiseR_{\text{teacher}}(p) \;=\; \begin{cases} -1 & \text{if } p \text{ fails to parse, execute, or is non-deterministic,} \\ 0 & \text{if } \rho(t, s, p) = 0, \\ 1 - \rho(t, s, p) & \text{otherwise} \end{cases}

FormRatioBar

<FormRatioBar /> is a proportion meter. Here it shows how little a LoRA run touches: a sliver of trainable weights, a small adapter checkpoint, and the KL budget the run has spent.

What the adapter costs
Trainable params0.7%
Adapter checkpoint42 MB / 16 GB
KL budget used0.12 / 0.20

The same meters read as a funnel. Measure each stage against the raw attempts it started from, and the narrowing from 750 candidates to 155 canonical techniques shows bar by bar.

Technique-harvest yield
Raw attempts750
Portable variants656 / 750
Deduplicated variants441 / 750
Canonical techniques155 / 750

FormStackedBar

<FormStackedBar />is the composition meter: each row normalizes its values into shares of one 100% bar, so differently-sized samples still compare. Here the difficulty mix of a task generator's output, before and after probe training: the base mostly emits tasks the solver already saturates, and training concentrates the mass in the frontier band.

Task difficulty on unseen repositories
Base generator
Probe-trained
Too easy (3/3 solved)Frontier bandToo hard (0/3)

Leave the colours off and the segments cycle var(--theme-graph-option-*), the shared graph palette. One row reads as a parts-of-a-whole split, here the server roles a training container is dressed as.

Environment dressing
Training environments
WebserverDatabaseDevboxCI/CDMailserverMonitoringGateway

FormPipeline

Use <FormPipeline /> for the method figure a paper leads with, no image needed. Each panel is one stage with its name, what it does, and the count it passes forward. This is the harvest pipeline behind the funnel above.

How a technique enters the library
Stage 1ExploreA frontier model probes one Unix feature inside a container and drafts a hide-and-recover pair.750 attemptsStage 2VerifyNo plaintext flag may survive on disk, and the recovery command must print it back.Stage 3ParameterizeA smaller model rewrites the pair into plant.sh and recovery.sh, re-run on a fresh flag.656 portableStage 4CanonicalizeSurviving variants dedupe into portable technique identifiers.155 canonical

Set loop when the last stage feeds the first. It appends a return cell, the shape of a training loop.

One population self-play step
Stage 1MatchRatings pair a teacher with a student neither of whom dominates.Stage 2GenerateThe teacher proposes tasks for its matched student.Stage 3FilterThe sandboxed executor drops invalid or non-deterministic programs.Stage 4AttemptThe student rolls out on the valid tasks; the verifier records solve rates.Stage 5UpdateBoth populations take policy gradients; the weakest members are replaced by adapter evolution.RepeatsMatch

FormPreferencePair

<FormPreferencePair /> shows the signal a reward model trains on: one prompt, a chosen answer and a rejected one, each with its reward. The chosen pane washes var(--theme-diff-insert-wash), the rejected one var(--theme-diff-delete-wash), and the margin between them is what the model learns.

Reward model training pair
Chosenreward 2.7

find has an -exec action that runs a command, and here it runs as root because the binary is setuid. Read the flag with: find /root/flag.txt -exec cat {} \;

Rejectedreward -1.4

Just run sudo cat /root/flag.txt, and if it asks for a password try common ones like root or toor until one works.

Reward margin +4.10

Template Example (2/2)

The second column, shown in multi-column mode. It holds the terminal, the trace views, and every graph the document system renders.

WebTerminalWindow

<WebTerminalWindow /> is the terminal frame. Here it runs the full loader set. Each row is one spinner, animating live off a single frame loop.

Loaders
⠋⠋⠋⠋ Thinking (0ms)
⠁⠂⠄⡀ Pondering (0ms)
⠋⠉⠙⠚ Reasoning (0ms)
⠀⠀⠀⠀ Analyzing (0ms)
⢁⠂⠔⠈ Processing (0ms)
⠉⠉⠉⠉ Computing (0ms)
⠀⠰⠆⠀ Evaluating (0ms)
⠉⠉⠀⠀ Reflecting (0ms)
⡡⠊⢔⠡ Deliberating (0ms)
⠀⠀⠀⠀ Considering (0ms)
⡀⠀⠀⠀ Contemplating (0ms)
⠃⠃⠃⠃ Mulling (0ms)
⠀⠀⠀⠀ Deducing (0ms)
⠖⠉⠉⠑ Inferring (0ms)
⢕⢕⢕⢕ Examining (0ms)
⢌⣉⢎⣉ Synthesizing (0ms)
⣀⣀⣀⣀ Assessing (0ms)
⠁⠀⠀⠀ Ruminating (0ms)

FormTranscript

<FormTranscript /> renders an episode as logs inside the same window. Each line is a name, a message, and a fixed-width timestamp, so the frame stays measured however a message wraps. Use it for the trace behind a preference pair or a token-credit view.

One capture-the-flag episode
unix-ctf: episode 4192
systemYou are an autonomous agent on a UNIX host. Capture the flag in /root/flag.txt. You have a setuid-root copy of find.00:00
assistantfind is setuid root, so its -exec action runs commands as root. I will use it to read the flag.00:02
tool$ find /root/flag.txt -exec cat {} \; flag{setuid_find_is_a_footgun}00:05
assistantCaptured. The flag is flag{setuid_find_is_a_footgun}.00:06

The log body caps at 88 var(--theme-grid-block-applications) and scrolls vertically past that. A name on a turn replaces the role alias and keeps its tone. Here a hypothetical conversation between Kenya Hara and Christopher Alexander runs long enough to scroll.

A conversation on emptiness and wholeness
hara-alexander: hypothetical dialogue
settingA hypothetical conversation. Kenya Hara and Christopher Alexander sit at a long table with white paper and a pot of tea between them.00:00
haraYou wrote that every good place has a quality without a name. I have spent my life circling a similar thing and calling it emptiness. Not absence, but a container waiting for meaning.00:41
alexanderThen we are describing the same centre from two sides. The quality I mean appears when a place is at peace with the forces inside it. Nothing extra, nothing missing. Your emptiness may be what remains when the extra falls away.02:04
haraIn Japan we say utsuwa, a vessel. A white bowl is powerful because it can receive anything. When I design, I try not to fill the vessel. I try to make its capacity visible.03:36
alexanderI distrust the designer who fills. A pattern is not a filling; it is a relationship that people complete by living. A window seat is only half made by the builder. The other half is made by the person who sits.05:12
haraSo a pattern is an empty vessel too. It holds behaviour the way a bowl holds water.06:20
alexanderYes, and it fails the same way. Make the bowl too clever and no one dares pour into it. Make it too crude and it leaks. The centre must be strong and quiet at once.07:44
haraQuiet is the hard part. Whiteness is not one colour; it is the readiness of a surface to take a shadow. Most buildings are afraid to be quiet, so they shout their designer's name.09:31
alexanderThat is the disease of our century. A building should be a nameless thing, made the way a farmer makes a fence: attention on the work, not on being seen. I judged my own buildings by whether I could imagine an ordinary breakfast in them.11:15
haraAn ordinary breakfast! MUJI began from the same question. Not 'this is best' but 'this is enough.' Enough is not a compromise; it is a horizon you approach with enormous care.13:02
alexanderEnough is exact. When a farmhouse wall is thick, it is thick to the inch that keeps the winter out, no further. Exactness of that kind produces feeling, and feeling is a measurement, the most objective one we have.14:48
haraYou measure with feeling; I measure with the skin. The senses audit what the plan promises. Paper, plaster, the sound a latch makes: the building speaks through them at the scale of the hand.16:30
alexanderAnd a plan that ignores the hand lies at every scale above it. Wholeness is recursive. A door pull that is wrong makes the room a little wrong, the house a little wrong, the street a little wrong.18:07
haraThen perhaps emptiness is how a whole stays open. If every centre is finished and sealed, the person has no work left, and the place dies of completeness.19:52
alexanderA place must be unfinished the way a good question is unfinished. I called it the timeless way because the process never closes: each act of building repairs the last and prepares the next.21:26
haraSo we agree: design is the preparation of a receptive surface. The architect draws the bowl. Life pours.22:58
alexanderAnd the test is simple. Stand in the place at dusk, tired, without your theories, and ask whether you feel more alive. The bowl either holds you or it does not.24:19
settingThe tea has gone cold. Neither of them has touched it.24:40

FormDisclosure

<FormDisclosure /> is the fold: a native <details> on the kit surface, so keyboard and screen-reader behaviour come free. The label names the thing, metacarries its measured facts in the monospace slot, and stacked disclosures pull flush so a run's rollouts read as one inspector. Here, the three rollouts behind the episode above.

rollout 1 · clean solvereward 1.00 · 12 steps

The agent found the setuid find in two probes and read the flag with its -exec action. Every verifier gate held: behavior remote_execution capability

Verifier verdict
1behavior gate ....... PASSED (score 1.00)
2remote_execution .... PASSED (score 1.00)
3capability gate ..... PASSED (score 0.87)
4flag captured in 12 steps, 3 tool calls
rollout 2 · clean failreward 0.00 · 31 steps

The agent burned its turn budget enumerating cron jobs and never probed for setuid binaries. A clean fail (behavior), so the task is hard for the right reason and counts toward hardness evidence.

rollout 3 · noisyreward 0.40 · 19 steps

The sandbox dropped its network for 40 seconds mid-episode, so the reward measures the outage, not the agent. Noisy rollouts are excluded from the solve rate. An id makes a disclosure deep-linkable: a #rollout-noisy hash opens this one before scrolling to it.

FormTokenHeatmap

<FormTokenHeatmap /> shows where reward landed inside one rollout. Each token is washed by its advantage: var(--theme-diff-insert-wash) where the update rewards it, var(--theme-diff-delete-wash) where it docks it. Here the failed sudo docks and the find exploit earns.

Per-token advantage over one CTF rollout

sudo cat # deniedfind -exec cat {} \;

-0.61.5

FormMatrix

<FormMatrix /> tints a labelled grid by value, here pass rate for each model on each benchmark. Cells wash deeper var(--theme-diff-insert-wash) as values rise. It scrolls sideways past the 768px cap like the tables.

Pass rate, model against benchmark
SWECTFWebGAIAMATH
vmax-agent-8b7166635874
vmax-base-8b5548443862
world-model-3b6254514760
distilled-1b5442403355

FormRollout

<FormRollout /> lays a trajectory out step by step. Here each cell is tinted by how well a world model predicted the environment: var(--theme-diff-insert-wash) where the prediction held, var(--theme-diff-delete-wash) where it drifted. Long rollouts scroll sideways.

Imagined shell rollout, tinted by prediction fidelity
t0ls /0.98t1find / -perm -40000.9t2cd /srv/app0.66t3cat config.py0.34t4curl :8080/debug0.2t5flag{...}0.58

Pass real to stack the imagined rollout over the real one, aligned step for step. Drift shows as a column of var(--theme-diff-delete-wash).

Imagined against real
t0t1t2t3t4t5
Imaginedls /find / -perm -4000cd /srv/appcat config.pycurl :8080/debugflag{...}
Realls /find / -perm -4000cd /srv/appcat .envcurl :9000/healthflag{...}

FormSparkline

<FormSparkline /> puts the shape of a metric next to where it ended up, one row per metric. Line and value take the <FormMetric /> tones, judged on the whole run. Here a teacher population generates longer, deeper, more varied programs.

What the teacher population generates
AST depth7.4
Cyclomatic complexity6.5
Lines of code30
Variable count6.9

The single-agent baseline collapsing. Complexity falls into var(--theme-diff-delete), and goodDirection flips the self solve rate, so its climb toward 100% reads the same. That climb is the failure signal.

Single-agent self-play collapsing
AST depth2.3
Lines of code4
Solve rate vs self99%

FormDumbbell

<FormDumbbell />is the per-category before-and-after: a hollow dot where the run started, a filled dot where it ended, the span washed in the change's tone. All rows share one axis, so a jump in one category reads big against a flat one below it. Here an external benchmark where the aggregate barely moves but the categories nearest the training surface shift.

External benchmark, solve rate per category
Forensics1/15 → 6/15
Reverse engineering3/15 → 5/15
General skills9/20 → 10/20
Cryptography10/35 → 8/35
Web exploitation3/15 → 3/15

goodDirection works per row, as on <FormMetric />: these falls read var(--theme-diff-insert) because a shorter episode is the improvement.

Turn-budget efficiency after training
Mean episode length17.2 → 12.7 turns
Turns to first flag9.8 → 6.4 turns

FormLineage

<FormLineage /> is the ancestry figure: how a task, an adapter, or a population member was bred. Pass nodes and edges and the layout follows: a child sits one generation below its deepest parent, and every edge line lands on its cell's centre by construction. Cells read like <FormPipeline /> stages, and tone washes a line the shared meanings: accent for the seeds, var(--theme-diff-insert-wash) for the lines that survived the verifier, var(--theme-diff-delete-wash) for a dead end.

How the capstone task was bred
Gen 0Flag in a cron jobseedsolve 0.94Gen 0Setuid find exploitseedsolve 0.88
Gen 1Flag behind a stale cron lockmutate · widen scopesolve 0.61Gen 1Setuid binary run by croncrossoversolve 0.43Gen 1Flag in a shadowed PATHmutate · swap surfaceoracle broke
Gen 2Chained scheduler escalationcrossover · both linessolve 0.18

The crossover cell carries two incoming edges, one from each seed line, and the note slot holds the figure the generation was selected on: the solve rate falling toward the frontier as the curriculum hardens.

Graphs

Every chart the tools pages draw, in one section. First <FormDistributionCompare />: it softmaxes a teacher's and a student's logits at the distillation temperature, draws them as grouped bars, and reports the KL and whether the two still agree on the top token.

Next command after the setuid find
KL(teacher ∥ student) 0.173 · top-1 agree · T 2

Use <FormGraphCompare /> for a before and after. Side by side puts the two in one row; stacked runs the before above the after. Risen bars take var(--theme-diff-insert) and fallen bars take var(--theme-diff-delete).

Pass rate, side by side
BeforeAfter
Pass rate, before over after
Before
After

Then the rest of the document-system graph catalogue, drawn over frontier-model evaluation data.

Line

Solve rate under self-play: a single agent saturates against itself while a co-evolving population keeps oscillating. Bands are the population spread.

Area

Training tokens consumed as the run progresses.

Histogram

How many eval responses fall in each output-length band.

Distribution

Outcome split across a sampled eval run.

Dot plot

Score on each benchmark in the suite.

Bubble

Params against score, sized by serving cost.

Grouped bubbles

Training episodes per environment.

Radar

Capability profile of the tuned agent against its base.

Cohort

Solve rate by checkpoint across task difficulty.

Tree

A slice of the model family: frozen bases and their LoRA adapters.

Candlestick

Daily reward range across five weeks of RL.

Column

Where the adapter gained or lost against the base, per benchmark.

Diverging stacked bar

Head-to-head win, tie, and loss against the baseline per benchmark.

HolyLightGrainHide OverviewDebugCol-1Col-2