Batch 7
Workbench and inspection
The batch with the least new drawing in it and the most risk. The canvas, the agent panel and the device dock were each approved on their own; this is the first time all three are on one screen, inside a frame that has to hold at 1280 as well as at 1440.
The question it turns on is how much the camera should look like a camera. The product's hardest promise is that it never behaves as though real hardware were attached. §7 then asks for an image of the physical circuit on the desk — which is exactly where that promise comes under load.
The control bar
One way back, the build's identity, where you are in it, and the three things the session is honest about.
Both states
The demo menu is the recessive icon on the right. §10 wants it reachable without looking like part of the product, and those two pull against each other — a menu nobody can find is not a demo control, and a bar of nine buttons is a second product.
The fraction is said twice on purpose, and it is the only thing here that is: Step 3 of 7 is the sentence, the seven ticks beside it are the instrument. They cannot disagree, because both are derived from one BuildStep list. Demo feed and Board simulated stay for the whole session — they are §6.1's requirement, not decoration. Agent connected is the one badge that can change, and when it does it changes glyph as well as word: absence gets its own mark rather than the connected one greyed out.
The step rail
Seven steps in the order they happen, and — pinned at the foot — what the step you are standing on actually touches.
Four states, four words
- Check your kitCompleted2 min
- Learn the layoutCompleted4 min
- Wire the distance sensorIssue6 min
- Connect and mount the servoActive5 min
- Add status LEDsNot started4 min
- Upload and calibrateNot started8 min
- Run the full system testNot started6 min
The rail does not navigate. Three things already move the build between steps — the agent through navigate_build_step, the demo menu, and the topbar's progress control, whose expanded list has been a step picker since Batch 1. A fourth would be a fourth thing to keep in step with the other three, and the rail's job here is orientation.
Position carries three of the four states on its own: behind you, here, ahead. It does not carry the one that matters. A step you have already walked past can still be Issue, and keeping that visible is most of why the rail exists — so all four are written out, quietly, in the line where the estimate already lives. Writing them down is what caught the fourth: upcoming reads Not started, because the agent can move the build to step 4 with step 3 still unverified, and a row above the active one calling itself upcoming is the rail saying something untrue. The disc is the same StepMark the topbar's expanded list draws, exported rather than redrawn: two pictures of one state is how the rail and the topbar end up disagreeing about which step is blocked.
Components in this step
Wire the distance sensor
Components in this step
- Sensor
- 6 jumper wires
PinsD8D75VGND
Connect and mount the servo
Components in this step
- Micro servo
- 3 jumper wires
PinsD9
Add status LEDs
Components in this step
- LEDs
- 2 jumper wires
PinsD3D2
Derived from the connections the step owns, never listed by hand — a written list stops matching the graph the moment a wire moves. The board and the breadboard are deliberately not in it: they are the substrate, seated in step 2 and never fetched again. What the derivation cannot see is the two resistors in the LED step; they have no node in the graph because they sit in series inside a leg, and the step's own instruction names them one line above the canvas.
Four regions, one screen
The riskiest step in the batch. Nothing here is new — it is Batch 3, 4 and 5 standing beside each other for the first time.
The workbench, live
Smart Parking Barrier
- Check your kitCompleted2 min
- Learn the layoutCompleted4 min
- Wire the distance sensorActive6 min
- Connect and mount the servoNot started5 min
- Add status LEDsNot started4 min
- Upload and calibrateNot started8 min
- Run the full system testNot started6 min
Connect the sensor's Echo pin to digital pin D7.
Echo measures how long the reflected pulse takes to return.
Build Coach
Agent not connectedThe pressure is vertical, not horizontal. At 1280 the canvas has 1280 − 252 − 360 = 668px across and, with the dock open, 900 − 64 − 224 = 612 down — and the instruction takes another 70 of that. Which is why the canvas controls float over the well instead of sitting in a bar above it: horizontally there is room to spare, and that is where the controls take their space.
Open and close the dock while the agent is pointing at a pin. The canvas does not move. It fits itself once, when it first has a size, and never again — Batch 4's note: refitting on every resize looks tidy and throws away the focus the agent just asked for, which is a change the user did see undone by one they did not.
Everything works: inspect, show, fix, verify, run the test, open the dock, switch the view, open the inspection. Every button runs the same tool a WebMCP callback will call — there is no second path on this page.
How much should the camera look like a camera?
The question the batch turned on, built both ways against the same content. Settled: B. The frame is evidence rather than a photograph, and the direction it was chosen over is still here.
A · The capture
The frame is a photograph. Viewfinder corners, the label burned into the top left, the time in its corner, a scan you feel rather than see. It says this is what the camera saw, and the vision result is drawn on top of an image. The cost is exactly the product's hardest promise: the more it reads as a real frame, the more work Demo vision result has to do on its own.
B · The plate
14:32The frame is evidence, not a photograph. Nothing is printed on the image; the label and the time move underneath it, into the interface's own voice. What keeps it from being a second canvas is that it is fixed — no controls, no view switch — and that it carries annotations the canvas never draws. The cost is the other one: if it is only a still canvas with boxes on it, the modal has to justify itself some other way.
What is not in question, and is identical in both: the picture inside is CircuitSceneView. There is no second drawing of this circuit and there will not be one — a camera pane that redrew the build would be a second opinion about it, and the first time a wire moved one of the two would be wrong.
The detection boxes are neutral in both directions. A box says the vision found this part here; it does not say whether the part is right. Colouring it would put a third amber-against-teal signal on top of the error ring and the target ring the canvas already draws for the same finding — one fact in three shapes. Corners rather than a closed rectangle for a related reason: a full outline reads as a border belonging to the part.
The inspection
Camera on the left, the correct build beside it, the findings underneath — and the angle comparison, when there is an angle to compare.
The findings are FindingRow — the actual G-05 component, reading the actual Finding objects the panel behind the modal is reading. §7 says the detections in here use the same central state; the strongest way to keep that true is for there to be one component, so a change to how a finding reads cannot land in one place and not the other.
Two transforms, not three. The camera pane is a real viewport with its own handle, because the agent has to be able to take it to a pin. The reference beside it is a fixed viewBox — a reference view is something you compare against, not something you fly around in. It is cropped to the same focus box the agent uses, because the whole board at 380px is a picture of nothing: the correct answer has to be drawn beside the wrong one at the same magnification.
M-07 fed, not rewritten: focus trap, Escape, scroll lock and focus return are already paid for. Open it, press Show me, close it — the workbench behind is looking at what you were just shown, because the modal's Show me is the same show_correction call the panel makes.
The horn, twice
Horn angle
- Observed
- 0°
- Expected
- 90°
The second fault is not a wire and cannot be shown as one. This is the canvas cropped — same MicroServo, same 1:1 scene units, same mat underneath — rather than a diagram drawn for this panel, which would have been a fourth drawing scale in a product that has decided it has three. The ghost is C-18 unchanged, so the expected horn is green here and green on the workbench. The arc is the only addition, and it earns its place by carrying the quantity: you can see two horns without being able to say how far apart they are.
The nine scenarios
Everything a filmed take needs to be able to reach, and not one line of separate flow behind any of it.
Press one and watch the timeline
- Check your kitCompleted2 min
- Learn the layoutCompleted4 min
- Wire the distance sensorActive6 min
- Connect and mount the servoNot started5 min
- Add status LEDsNot started4 min
- Upload and calibrateNot started8 min
- Run the full system testNot started6 min
No agent activity yet.
Every tool the agent runs is recorded here.
Nine items in a flat list is a wall. They come in the three groups the demo itself has, each reading jump to it · put it back · fix it, which is the shape of a take. Reset sits above them on its own, because it is the only one that throws away what the others set up.
The two inject actions are the only thing here that is not a tool call, and they cannot be one: no tool in this product breaks a build. They go through the same act() as I fixed it, which is the right neighbourhood — in the fiction they are the same gesture in the other direction, and they land in the timeline as the person's own line.
Every entry that appears is a real tool call against the real store. §10: the demo buttons do not run a second flow. That is also why Complete project takes several seconds rather than being a state assignment — it repairs both faults through inspect_build and then verifies each remaining step, which is what completing the project is.
Below the fold width
What happens under 1120px, which is where layout.workbenchMin has said the workbench folds since Batch 0.
A sentence, not a box (rule 4). Same job as You can continue in guided demo mode: nothing is broken and nothing is blocked, so a warning-shaped container would say the opposite of the words inside it. Info rather than warning, for the same reason — a narrow window is not a fault in the build.
The canvas is not hidden — it is not rendered. §16 says the circuit is never shrunk to the point of meaninglessness, and a viewport mounted inside a 380px column would fit itself to that width once and keep the result. The steps, the findings and the agent are all still reachable, which is the other half of what §16 asks for, and the agent panel becomes the right drawer Batch 5 declined to spend on the dock — precisely so that it would still be here.