Batch 4
Agent workspace
The right column of the workbench, where the agent's work becomes legible: what it knows about the build, what it found, what it did, and the tool call underneath each sentence. Not a chatbot — the conversation happens elsewhere. This panel shows the context the page shares with the agent, and the effect of every action it takes.
Five of these fifteen materials are named “card” in the inventory. None of them is one. The rule the batch settled on: a surface contains the user's input or a countable object, never the agent's output. The one ground change in the whole panel is the knowledge check — and it goes down, into a sunken band, because that region belongs to the person answering it.
Drive the agent
Every material in its real place, with the agent actually working. The same run(tool, input) a WebMCP callback calls on the workbench — same payload, same commit, same canvas move.
Drive the agent
Build Coach
Agent not connectedPress Inspect my build and watch: the pulse goes to its lattice, the tool name shimmers, each phase names itself, the timeline fills in order, the tab slides to Findings and the canvas glides to the two pins. Then it stops — because the next thing that has to happen is you moving a wire, and on this bench the agent cannot: chapter six is laid out by its author, so attach_lead refuses every call here. On the five chapters you assemble yourself it does not refuse; it moves the lead. What keeps that honest is not that the agent has no hands — it is that the move lands as a commit Ctrl+Z takes back, that the timeline says the agent made it rather than you, and that the finished build counts how many it made.
The panel
The frame the agent writes into: header with the live pulse, three tabs that never scroll away, one pinned action, and a tool count you can open.
The panel
Assembled
Build Coach
Agent connectedDrive it
Findings are what the agent noticed, not what is true. Move the wire and the row changes state in place rather than vanishing; forget the findings and the panel goes back to never having looked.
360px, exactly as it will sit in the workbench. Sticky header, one scrolling body, a pinned action that never scrolls out of reach. The tabs live in the header so the agent can switch them without the navigation moving, and the underline slides — an agent that changes the view without you seeing it move has, as far as the user is concerned, done nothing.
Header, tools and the offline notice
Tool inventory
WebMCP unavailable
The tool count in the header below opens the case: WebMCP is meant to be the structure of this product rather than a badge on it, and a count nobody can check is exactly a badge. So the number is never written down anywhere — it is the length of whatever list the panel is handed, and the specimen below is handed the bench's own seven. The note quoted a literal `6` for a while, above a header that had said 7 since `attach_lead`, which is the failure it is arguing against. When the API is missing the pulse goes to its hollow ring — absence drawn as absence — and the notice reassures rather than warns, because every manual control still works.
The coach figure
A face for the agent, on the bench. It changes with the tool the browser is calling and says in a word what the ring only points at — the first thing on screen a newcomer reads as the agent.
Three bodies, one face
The first draft borrowed another company's mascot — a cloud head with a terminal for a face — and was stopped for it. These three come from things the product already draws. Halo is a ball with the bench ring floating over it, index dot and crosshair arms included: the same agent that lands on a hole. Pad is the ball inside the ring, a plated pad with a face, and it has no arms — the ring's own arms come out when it points. Lamp is a 5 mm LED with eyes, dome, flange and two legs of unequal length, and it lights up while a test runs.
Eleven moods
Waiting for an agent
offline
Listening
idle
Reading your build
looking
explain_project · get_build_context · inspect_build · verify_current_step · find_projects · get_project_requirements
Thinking it over
thinking
comparingSketch · comparingExpected · checkingAlignment
Pointing at it
showing
show_correction · point_at
Working on the bench
touching
attach_lead
Running the test
testing
run_functional_test
Moving on
moving
navigate_build_step · open_project · start_project
Found something
found
Looks good
passed
That did not work
failed
Five are the acts in model.ts — one verb per tool, eleven tools. Thinking is not an act but a phase of looking: the face only thinks while the handler is comparing, because the page cannot see the model think between calls, and a face that pretended to would be a badge measuring nothing. The last three are held for under two seconds after a call lands, read off the note the runner logs beside it.
On the shelf, and on the mat
Comparing against the sketch
Carrying the lead across
On a chapter with a kit the coach is the last thing on the shelf and the shelf is its plate. The capstone has no shelf, so it brings the shelf's colours with it. Either way it stands at the top right of the well, where the sketch put it, and the phase under the word is the same sentence the timeline prints under a running row.
Guidance and teaching
What the agent knows about the step, the three-rung ladder from a nudge to the exact fix, the correction that opens inside its finding, and the one question the interface asks back.
Guidance and coaching level
Blocked
Clear
Not yet inspected
Coaching level
The agent moves this control too, through show_correction's detail_level. The thumb slides, so you see it happen.
The panel carries what the agent knows; the canvas carries what to do. Saying `Connect the sensor's Echo pin to D7.` in both places would halve its authority, so the instruction stays above the board and this stays a report. Four connections are countable, so they get four ticks rather than a bar — and finishing is a state change, not a bar reaching its end.
Teaching ladder
Hint first
Notice
Explain
Exact fix
Explain
Notice
Explain
Exact fix
Show exact fix
Notice
Explain
Exact fix
Always three rungs tall. A closed rung keeps its label and its dashed pad instead of collapsing to nothing: two filled pads and one dashed circle say there is another level of help available without a word being read. Collapse them and the product's headline claim — three levels of teaching, you pick how much — becomes an invisible feature.
Correction
Finding with its correction open
What `Show me` opens, and where it opens: inside the finding it explains, not in another tab. An indent and one accent rule down the left — the quotation device — rather than a box. A box would say separate object; the correction is not a separate object, it is the finding, elaborated. Raising a rung here raises the coaching level in the header, so one state change is confirmed in two places.
Knowledge check
Before and after answering
The one place in the panel where the ground changes — and it changes down, into a sunken band with a hairline top and bottom, no radius and no side edges. Everywhere else the agent is telling you something; here the interface is asking, and the region belongs to you. Real radios inside a real fieldset, so arrow keys and grouping cost nothing.
Findings
What an inspection reports: severity in the disc, the evidence understated beneath the title, and the affected pins as chips that take the canvas there. The rejected card direction stays on the page.
Open decision · finding register
A · Editorial
B · Card
Connection mismatch
Camera frame94% confidence
D6. This build expects D7.Servo horn is 90° off
Visual alignment check91% confidence
Both directions carry the same two findings, derived from the same graph, in a column exactly as wide as the shipping panel. The left one is built on the alert's shell: one filled disc holds all the colour, and a hairline separates the two. The right one is the Batch 2 card draft. The question is not which looks better on its own — it is which one still reads as one calm account of one build when the agent adds a third.
States
Open → resolved
Nothing open
No open findings for this step.
Run an inspection when you think the wiring is done.
A resolved finding does not vanish — it changes state in place. A row that disappears on click is a change the user never saw happen, and the whole panel exists to make the agent's work visible.
Activity and tool details
Every tool call, in human language, on a copper trace — with the machinery folded underneath each sentence and the raw result shut until asked for.
The spine
Reading, finding, fixing, verifying
Agent read the current build context
14:31Agent inspected wiring for Step 3
14:311 connection mismatch found
14:31Agent pointed at the connection
14:32Correction highlighted on the workbench
You moved the Echo wire to D7
14:33Agent verified Step 3
Comparing with the expected graph
A call that failed
Agent ran the check: barrier
14:36Not a generic dot-and-line timeline. The spine is a copper trace and every entry is a plated pad: hollow where the agent only looked, blue where it changed the workbench, dark where you did — the record says which of you moved it, at a glance. The running entry's marker is the activity pulse itself, so there is no second in-progress animation to invent; above it the trace runs blue because that is the segment being laid, and below it there is none, because that route does not exist yet.
Developer details
Open
The human sentence first, the machinery underneath it, and raw JSON shut until asked for — the product's teaching contract applied to its own plumbing. Each disclosure carries its entry's headline in an sr-only suffix, because twelve controls all named Developer details are unusable in a screen-reader rotor.
Tool call badge
explain_projectget_build_contextinspect_buildshow_correctionpoint_atattach_leadverify_current_stepnavigate_build_steprun_functional_test
Mono, 4px radius, never a capsule: rule 1 keeps the capsule for things you press, and rule 13 files a tool name with D7 and 94% — a reading, not a control. The leading mark says whether the call only looks at the build or changes it.