BORN ON THE BOX ENES
LIVE LAB WEBv3.3.0 EP000411 ROVEROFF NEXT PROOFLOOP CLOSURE IN CM REWARD DATA11 CONFIRMED POLICY0 RUNS
B.O.B. — A SELF-DIRECTED RL + ROS TEACHING LAB

Teaching Bob to learn. Then to move.

Bob is my live RL and ROS laboratory: a local assistant learning from human correction today, and a robot learning to perceive, map and navigate next. Every milestone is published with the evidence — or the failure — that earned it.

EPISODE411 RATE0% REWARD−9 RULES DISTILLED8 READ LIVE FROM THE MACHINE
BOB, RIGHT NOW
VOICELOCAL
REWARDLIVE FEED
ROSIN BRING-UP
B.O.B.

Waiting for word from the lab.

Awake. The voice loop is up on the lab machine. It does not mean a person is with him.
Thinking. A turn is being worked on right now — a model is reading, or an answer is being spoken.
Asleep. He has been put to sleep, or the lab has not reported for five minutes.
THE STATE IS REAL, PUSHED OUT FROM THE LAB NETWORK, COARSE ON PURPOSE.
THE DRIFT AND THE BLINKING ARE ANIMATION — WHERE HE IS ACTUALLY LOOKING IS NEVER PUBLISHED.
CURRENT EXPERIMENT
THE NEXT CLAIM HAS A GATE

Make the map mean something. The lidar gate is paid for — /scan has been publishing on the robot since 18 August. Since 19 August the odometry gate is paid too: the wheels report 64 times a second and the robot has driven its first metres. What is not paid for is the number — no driven circuit has come back to its start with the error measured in centimetres.

LOC-04 · REV 02 · EP 000411OPEN

Map a floor the robot actually drove.

Wheel odometry now reaches the mapper at 64 Hz — encoder packets stream off the base every 15 ms — and the robot has driven while mapping: commanded 45.8°, measured 45.3°. What remains is the claim itself: drive a circuit, return to the start, publish the gap in centimetres. A map nobody has checked against a return is not yet a localization result.

SUCCESS = REAL ODOMETRY + DRIVEN CIRCUIT + LOOP CLOSURE IN CM
KNOWN
/scan is live

1,080 bins a revolution, 987 with a return, 360.0° at 0.334°, out to 9.34 m.

BLOCKER
Odometry runs at 2 Hz

Scans arrive at 22. The base turns about 53° between two odometry samples, and a straight line drawn through that is how a map smears on every turn.

AFTER THIS
Bounded navigation

A driven goal, behind a bumper switch that can stop it in hardware.

01BenchmarkARTIFACT EXISTS
02Policy searchHYPOTHESIS
03ObservationPASSED 18 AUG
04LocalizationCURRENT GATE
REGISTERED PROTOCOL · LOC-04 / REV 02ONE CONTROLLED CHANGE · ONE CLAIM
QUESTIONDoes the map survive the robot moving?

A map built from a stationary scanner tests the scanner, not the mapping.

CONTROLLED CHANGEReal wheel odometry — done, 19 August

The stand-in node is deleted. The base streams encoders every 15 ms; /odom publishes at 64 Hz. Scanner, mount and mapper unchanged.

OBSERVATIONLoop-closure error

Drive a circuit of one floor and measure where the start wall and the end wall land.

PASS CONDITIONA driven map + an error in cm

Both. A map that looks right in a screenshot is not a measurement.

FAIL CONDITIONThe map smears on turns

Record the odometry rate, the turn rate and the divergence, and say which one was wrong.

CLAIM UNLOCKEDMapping only

Navigation stays locked until a bumper signal can stop the robot in hardware.

OBS-03 · REV 01OBSERVED
Serial identity established

Model, firmware and health returned successfully.

OBS-03 · REV 03PASSED
First light, 18 August 2026

The blocker was never the jumper. The launch file asked for a scan mode this firmware does not have, so the topic existed and never published. In Boost mode the same sensor went from 720 points at 47.5 per cent to 1,080 at 91.4.

LOC-04 · REV 01PASSED
Mapping on stand-in odometry

The mapper ran and one map was saved — 7.6 × 9.65 m at 5 cm. It proved the stack, not the localization.

LOC-04 · REV 02CURRENT
Real odometry, first drives — 19 August 2026

The stand-in node is deleted: encoders stream every 15 ms, /odom publishes at 64 Hz. Commanded 45.8°, measured 45.3. 80 m² of one floor mapped while driving; four rosbags hold the runs.

THE SCIENCE OF BOB
FOUR DISCIPLINES · ONE TESTABLE SYSTEM

The project crosses four fields. The tabs separate what each one contributes, what is running now and what evidence is still missing.

Reinforcement learning

Human correction becomes a reward signal, then a confirmed example, then a candidate policy change. Today the data and evaluation layers exist; policy optimization has not run.

STATE11 confirmed grades

32 machine proposals still await a person.

METHODBlack-box search first

A six-dimensional bandit and 9–22 supervised episodes/hour do not justify policy gradient yet.

PROOFCandidate beats baseline

A finished run must improve the locked benchmark without regressing held-out cases.

Robot Operating System

ROS is the nervous system: sensors publish observations, transforms say where they happened, and navigation turns a policy decision into a bounded command.

OBSERVE/scan is publishing

987 ranges a revolution at 22 scans/s, since 18 August. Four rosbags since 20 August — runs now outlive their sessions.

LOCALIZEFrames, clocks and SLAM

The mapper runs on real 64 Hz wheel odometry. The unmeasured loop-closure error is the current gate.

ACTSafe velocity commands

Navigation waits behind localization and a physical bumper signal.

AI reasoning

Reasoning is not a personality claim. It is the observable path from a question, through relevant context and checks, to an answer or action that can be graded.

CONTEXTRetrieve only what matters

Memory and current sensor state enter the turn without dumping the full corpus.

CHECKVerifier before confidence

Code decides measurable facts; a model may propose or critique them.

MEASURETrace the failure mode

Wrong tool, wrong context and wrong conclusion are counted separately.

AI intelligence in use

Bob becomes useful by choosing and operating tools: voice, retrieval, vision and eventually ROS. Intelligence here means completing a bounded task with a replayable trace.

SELECTChoose the smallest tool

Do not run vision for a question that needs only memory.

OPERATERespect permissions and state

A tool call is allowed only when its inputs and current hardware are real.

VERIFYKeep the receipt

Tool output, latency and result become part of the episode record.

01ConversationA real turn on the box
02RewardA reaction becomes a proposal
03ConfirmA person admits it to training
06ROSA bounded command reaches hardware
07ResultThe physical outcome returns as evidence
EVIDENCE, NOT CLAIMS
EVERY MILESTONE LEAVES AN ARTIFACT

Green means the artifact exists. Amber means the hardware or code exists but the proof does not.

BENCHMARKLOCKED

Frozen trial evaluation

Inputs and scoring exist before optimization.

trial_eval.py
FEEDBACKLIVE

Human confirmation

Only operator-confirmed rows may enter the policy pass.

11 grades
POLICYNOT RUN

Finished update

The live count moves only after a completed training row.

0 runs
LIDARLIVE

ROS range stream

Publishing on the robot since 18 August, 91.4 per cent of bins carrying a return.

987 points
REPLAYLIVE

Dated sensor record

Four rosbags written 20 August — 34 minutes, 420,422 messages of /scan, /odom, /tf, /cmd_vel, /bumper. The mapper can be retuned against a drive instead of re-driving the house.

4 bags · 508 MB
SLAMPARTIAL

Loop-closure error

Maps now come from driven runs on real odometry — 80 m² of one floor at 5 cm. No circuit has returned to its start with the gap measured; that is the pass condition.

not measured
BUILDING THE ROVER
WHAT THE HARDWARE CAN PROVE TODAY

The robot senses and does not yet move under its own map. Each component stays attached to the limitation that matters — and a bumper switch, the one part that could stop it in hardware, is still not wired.

LIDARLIVE

360° scanner on /scan

Health OK, firmware 1.25. The motor overspeeds at 21.9 rev/s against a nominal 10.

987 points
OAK-D PROON BOARD

Stereo vision

Moved off the desk onto the robot. Useful at distance, blind at bumper range.

450 mm
PI 5RUNNING

Onboard compute

Scanner, camera, mapper and console on one 4 GB board, load about 4.4.

760 MB
ODOMETRYSTAND-IN

Where it thinks it is

A node publishes the identity transform on purpose. Until the wheels report, no map survives a turn.

2 Hz
DRIVE LOG
EVERY EPISODE, GRADED OR NOT

The training ledger for the body, same rules as the conversation lane: every run is a row, the failures ship with the wins, and a grade only appears after a human confirms it.

DATE DRIVER DIST BUMPS OUTCOME GRADE
2026-08-20 21:12explore+bump-memory14.00 m20Biggest map yet: 87.5 m2, incl. a 3.3 m ten-goal ZERO-BUMP round - but kept re-electing the same wall corner until boxed
2026-08-20 13:55beacon-route1.50 m9aborted - operator requested shutdown for updates
2026-08-20 13:40beacon-route1.30 m1FALSE ARRIVAL - phantom blue: kitchen LED reflection hue 134-140
2026-08-20 13:25sweep0.00 m0KITCHEN CONFIRMED: oven 4.9m + microwave 2.7m; waypoint banked
2026-08-20 13:05beacon-route0.70 m16couch/fridge route failed - started inside pocket
2026-08-20 12:55explore+camfusion2.60 m117jailed by own glove keep-out disc at reset area
2026-08-20 11:52patrol+explore12.70 m20wedged in reset pocket; extraction into wall alcove

Ungraded rows are honest rows — the dash means no human has judged that run yet. Full sensor recordings of every episode exist as rosbags on the robot; what is published here is the ledger, never the house.

OPEN THE FULL ENGINEERING RECORDMETHODS, COST, FAILURES AND BUILD LOG
THE LOOP — RUNNING ON THE BOX RIGHT NOW
ACT → REWARD → PAIR → UPDATE
01 RUNNING

Act

Bob listens and answers on the box. Every turn — what it heard, what it said — is logged as an episode step.

411TURNS
02 RUNNING

Reward

A reply is graded +1 or −1 with a failure tag, and that grade is the reward signal — no rating scale, no crowdworkers. The count below was entered by an operator over a backlog; the queue waiting on a person is larger than it.

11GRADES
03 RUNNING

Pair

Each bad answer is linked to what should have been said instead. Bad → better becomes a preference pair.

1PAIR
04 BANKED

Update

Pairs and grades are banked for the next policy update. Nothing trained yet — the badge stays amber until a run actually consumes them, and the count below is read from the machine, not typed here.

0RUNS
← A TRAINED POLICY GOES BACK ON THE BOX AND THE LOOP CLOSES ←

Stage four says banked because it is banked: grades and pairs are accumulating, and no run has consumed them yet. When the first one does, that badge flips — and this page will show it the same way it shows everything else.

THE WORK — WHAT HAS ACTUALLY BEEN BUILT

Training since January 2026. The results are internal and they vary; what is public is the work itself, and every item below is running, not planned.

A grading console anyone on the team can use LOGIN-GATEDLIVE
Reward capture from ordinary conversation NO RATING SCALESLIVE
Human confirmation before anything counts MACHINE PROPOSESLIVE
Nightly distillation into behaviour rules 03:30 DAILYLIVE
Versioned policy, so a change can be traced EVERY RUN KEPTLIVE
Trainer disagreement surfaced, not averaged BUILT, NEVER FIREDIDLE
Voice in, voice out, over the open web MIC AND CAMERALIVE
A second trainer account, created and never used NO LOGIN SINCE 31 JULEMPTY

There is no chart of a rising line here. Eleven grades do not make a curve, and a graph that steps up and then falls over is a picture of a small sample, not of progress. When there is enough signal to plot honestly, it will be plotted.

THE RECEIPT
Turns logged ALL TIME411
Counted as grades ENTERED BY OPERATOR11
Marked good 1
Marked bad 10
Machine-proposed NEVER RULED ON32
Preference pairs BAD → BETTER1
Behaviour rules DISTILLED NIGHTLY8
Still ungraded IN QUEUE400

Ten of the first eleven grades were failures — grading started with the backlog of known mistakes. Published as-is, because a learning curve that starts at the top isn’t one.

Corrected 14 August 2026. This row used to read “graded by hand”. It was not: all eleven were written through an operator account in a single twenty-three millisecond pass over a transcript backlog, not typed into the console one at a time. The console is built for people and has barely been used — the last login of any kind was 31 July. Meanwhile the grades that did come from real conversation are the row below them, and not one has ever been ruled on. The number was not inflated, but it was described as something it was not, and this page does not get to do that.

WHAT IT GETS WRONG — THE TAXONOMY
TAGGED ON EVERY GRADE
wrong timing 4
repeated itself 3
misheard 2
hallucinated 1
nailed it 1

Every grade carries a reason, not just a sign. The tag is what makes a failure countable — and what tells the nightly run which behaviour to write a rule against.

WHAT IT COSTS TO RUN
MEASURED AT THE WALL, NOT ESTIMATED
EXCHANGES
823
ANSWERED ON THE BOX
ENERGY
114.4
WATT-HOURS, TOTAL
ELECTRICITY
$0.019
WHAT IT ACTUALLY COST
SAME TOKENS, RENTED
$13.19
AT FRONTIER API RATES
RATIO
678×
CHEAPER TO OWN

823 answers for 0.019 dollars of electricity, drawn from measured wattage rather than a spec sheet. The comparison is the same token volume priced at frontier per-token API rates — not a like-for-like capability claim: a model on a desk is not a frontier model. What it is like-for-like on is this workload, in this building, with nothing leaving it.

WHAT IT ACTUALLY IS
THREE MACHINES, FOUR ORGANS
THE MIND
Every ordinary turn is reasoned by an open-weights model on a small desktop machine we own. A larger one wakes only when someone asks for depth, and evicts the small one when it does — both will not fit at once.
THE SENSES
A desktop GPU sits next to the room and does the hearing: microphone array in, transcription, speaker identity, retrieval, and a local voice back out. Three to five seconds end to end, nothing leaving the building.
THE BODY
A Raspberry Pi 5 on the robot carries a 360° scanning lidar and a stereo camera, and runs their drivers, the mapper and its own console. Range data is not asked to cross wifi before it is believed.
THE REACH
A second head travels off-site and still answers through the same mind over a private tunnel. Nothing is relayed through a vendor.
HOW IT WORKS — THE METHODS
STATED SO THEY CAN BE CHECKED
SPEECH, END TO END, ON THE BOX
A microphone array picks up the room, transcription runs locally, a multimodal model answers on our own GPU, and a local voice speaks it back. Three to five seconds, start to finish, with no packet leaving the building.
360° SCANNING LIDAR, ON THE ROBOT
A 2D scanner on the robot publishes ROS /scan: 1,080 bins a revolution, 987 of them carrying a range, a full 360.0° at 0.334°, farthest return 9.34 m in a room the sensor is rated to 12 in. First light 18 August 2026. The number we are not proud of ships with the rest: it spins at 21.9 rev/s against a nominal 10, because the motor-speed line is tied to a 5 V rail instead of being driven at 3.3 V logic.
THREE-DIMENSIONAL RECONSTRUCTION
Multi-pose depth capture, median-filtered across frames to kill sensor noise, registered into one coordinate frame by two-stage ICP, fused at 6 mm voxel resolution — then measured off the resulting point cloud.
HUMAN FEEDBACK, BEFORE POLICY OPTIMIZATION
Every reply can carry a reward signal and a named failure tag. Corrections become preference pairs; confirmed grades can change behaviour rules. This is the data and evaluation layer an RL system needs — not a claim that policy optimization has already run.
SENSOR-AGNOSTIC BY CONSTRUCTION
Five different eyes have fed one endpoint — a depth camera, a structured-light camera, a plain webcam, a phone, and now a stereo camera with its own vision chip. The stereo camera and the scanner both moved off the desk onto the robot and kept working; the interface did not change when the hardware did, which was the entire point of building it that way.

18 August 2026. This paragraph used to refuse two claims: that any of this was scanning LiDAR, and that any of it was stereo depth. Both refusals are now spent — the scanner publishes ranges, the stereo camera publishes depth, and the figures above were read off both. The date is on it, as promised. What is still refused is the one that matters most: this does not have a map it can trust. The mapper runs, and one map has been saved, but the odometry is real now — 64 Hz off the wheel encoders since 19 August — and four rosbags hold the drives that built it. What has never happened is the check: a driven circuit returning to its start with the error published in centimetres. Mapping and navigation stay locked until it does.

OPERATORS SUPPLY THE REWARD SIGNAL
The people in the feedback loop are the people the system serves. Today that produces graded examples and rules. Calling it RLHF would be premature until an optimizer has consumed those rewards and a held-out evaluation shows the policy changed.
THE PIPELINE FITS ON HARDWARE I OWN
Inference, logging, grading, pair-building and evaluation happen on local hardware. A training run has not consumed these pairs yet; the zero in the live ledger is part of the lesson, not a number to hide.
THE RECORD IS PUBLISHED, NOT SMOOTHED
This page reads the same feed as the training console. Small samples, failed jobs and missing evidence stay visible so that learning the method never becomes performing a result.
HOW THE WORK IS DIVIDED
THREE MACHINES · ONE NETWORK · NO CLOUD

Bob is not one computer, and since August he is not two. A graphics box next to the room does the hearing and the remembering; a small desktop machine does all the thinking; and a single-board computer on the robot carries the scanner and the camera and runs their drivers itself. The rule between the first two has not changed: if nobody else is using the graphics card, Bob may. The moment a real job wants it, he moves both his eyes and his brain to the other machine and gets out of the way. The third one is not negotiable in the same way — range data that has to cross wifi before anyone believes it is range data nobody should believe.

MACHINE ONESENSES

Hears and remembers

Hearing, speaker identity and retrieval run on the GPU, next to the room: a microphone array, transcription, and a voice back out.

a retrieval modelPINNED
speaker identityLOCAL ONLY
GPUEARS AND MEMORY
MACHINE TWOTHINKING

Answers

A small model takes every ordinary turn. A larger one wakes only when someone asks for depth — and evicts the small one when it does, because both will not fit at once.

small modelEVERY TURN
larger modelON REQUEST
3MACHINES, ONE NETWORK
MACHINE THREEBODY

Scans and maps

A single-board computer on the robot runs the scanner, the stereo camera, the mapper and its own console — on four gigabytes, because everything it does is sensing rather than thinking.

scanner + cameraON BOARD
the mapperON BOARD
22SCANS A SECOND

That rule was in the code for weeks and quietly broken by how it was measured. It asked whether the card was full — and Bob's own models filled it, so the card looked busy to Bob and he exiled his own eyes to the slower machine all day. It now asks whether someone else is on it, which is what the rule always meant.

HOW THE LEARNING RUNS
REACT → CONFIRM → DISTILL → LOAD

Nothing in this loop is a simulation. The reward comes from people talking to him, the confirmation comes from a person, and the update happens at half three in the morning on a machine in the lab.

01

Reactions are rewards

What a person says next grades the reply before it. A correction is a negative; carrying on is not. Nobody is asked to rate anything out of five, because nobody does that honestly for long.

02QUEUE STANDING

A human confirms it

The automatic grade is a proposal with a status of its own. It becomes training data only when a human confirms it — and right now 32 proposals are sitting unconfirmed, because nobody has opened the console since 31 July. The gate works. It is the queue behind it that is the problem.

03NEVER FIRED

Splits are kept

When two trainers split on the same reply it is meant to be shown as a split, not smoothed into a mean. It has never happened. There has only ever been one grader, so the most informative rows in the table are rows that do not exist yet.

04

Updates are versioned

Overnight the confirmed rewards distil into behaviour rules that load with him the next day. Every version is kept, so a trainer can see that their grade moved a rule.

05

Both are visible

His character is a document a person wrote; the policy is what grading distilled. The policy loads last, so on a contradiction it wins. The console now names those pairs instead of letting it happen in the dark.

Found on 14 August, published the same day. The nightly distillation does not read the confirmed grades — it reads the raw reward stream, unconfirmed rows and all. On 8 August a bad wake word opened a listening window that a live football broadcast then held open for seven minutes, and the commentary was transcribed as if it were a person reacting to Bob. Two of those rows scored positive. So the rules count in the strip at the top of this page was distilled from a pool that is roughly three-quarters unconfirmed machine grades, some of which are a television. The fix is a voice check that was installed weeks ago and never wired to anything. Until it is, that number is the least trustworthy figure here, and it is labelled as such rather than quietly removed.

What this page will not show you: the rules themselves, the transcripts they came from, or anything he has remembered about the people who live with him. The shape of the learning is the interesting part, and it is public. What it learned about a family is not.

THE TEACHING LAB — RL AND ROS
FROM EVALUATION HARNESS TO PHYSICAL POLICY

This is a curriculum built around a real machine, not a claim that the curriculum is complete. The discipline transfers from my production work: build the deterministic reference, lock the benchmark, instrument the run and make a failure reproducible. The new material is policy optimization and the ROS stack that turns a decision into motion.

TRANSFERPROVEN WORK

What I bring to the lab

Deterministic verifiers, seeded fault injection, held-out evaluation, production model serving and a repeatable fine-tune/evaluate/merge/serve pipeline. I know how to make a result falsifiable and how to find the harness bug that makes a model result look mysterious.

FRONTIERLEARNING NOW

What Bob is teaching me

Policy search beyond supervised fine-tuning; ROS messages, frames and clocks; sensor bring-up; SLAM; navigation; and the gap between a policy that scores in a frozen environment and one that can move safely in a room. I have not done RLHF or policy-gradient training. That is the gap this lab is designed to close.

THE CURRICULUM — FOUR EVIDENCE GATES
A LESSON PASSES ONLY WHEN AN ARTIFACT SURVIVES IT
01 · BENCHMARKEXISTS

Freeze the question

trial_eval.py already evaluates frozen map records. The first lesson is to lock inputs, seed and scoring before tuning anything, so a better score means a better policy rather than a moving test.

02 · SEARCHHYPOTHESIS

Use the right optimizer

The current controller is a six-dimensional bandit, with roughly 9–22 supervised episodes per hour. At that rate, black-box search is testable in hundreds of evaluations; policy gradient would demand evidence this setup cannot honestly supply yet.

03 · OBSERVEPASSED 18 AUG

Make ROS see

ROS publishes /scan: 987 ranges a revolution, 22 times a second. Half of this gate is still owed — no rosbag has been written, so the stream is live and nothing is preserved.

04 · LOCALIZECURRENT

Close the loop

Mapping passes when a driven circuit returns to its start and loop closure error is reported in centimetres. The mapper now runs on real 64 Hz wheel odometry and the robot has driven its first metres; the circuit and its error are still owed. Running the packages is not the experiment.

The order matters: benchmark before optimization, observation before mapping, localization before autonomy. A bumper switch will add a real safety signal; a television in the camera frame does not become a training environment just because the robot can read it.

THE PARTS, AND WHAT EACH ONE ACTUALLY DOES YET
ROBOT STATE · 18 AUGUST 2026
SCANNING LIDAR
987RANGES PER TURN
1,080 BINS · 91.4% CARRY A RETURN

The blocker was never the wiring. The launch file asked for a scan mode this firmware does not offer, so the topic existed and never published — which looks exactly like a dead sensor. In Boost mode the same scanner went from 720 points at 47.5 per cent valid to 1,080 at 91.4. One line of configuration was worth more than every hardware fix attempted before it.

STEREO CAMERA
450MM BLIND SPOT
MEASURED, NOT QUOTED

Two mono sensors 7.5 cm apart, with the disparity computed in fixed-function silicon on the camera's own chip. Accurate to about one per cent at six metres — and unable to see anything closer than 450 mm, which is bumper height. It now rides on the robot beside the scanner, which is the arrangement that makes the blind spot a scanner problem rather than a camera problem.

ONBOARD COMPUTE
RUNNING4 GB ON THE ROBOT
SCANNER + CAMERA + MAPPER + CONSOLE

The board that arrived is a 4 GB Pi 5, not the 8 GB one it was bought as, which matters because the mapper and the camera's object detection are being asked to share it. All four processes run today at about 760 MB and load 4.4. The robot needs onboard compute because mapping wants scan and wheel odometry on one clock.

THE MOUNTS
PRINTEDON THE BENCH
PARAMETRIC, REPRINTABLE

A sensor mast, a lidar cradle, a guard cage and a camera bracket, modelled to the sensors' real dimensions and printed here. One tripod thread carries the same part through bench, bin and rover, which is the only reason three phases do not need three brackets.

THE STACK
80.2M² MAPPED WHILE DRIVING
LOOP-CLOSURE ERROR UNMEASURED

The first maps built by a moving robot landed 19 August: 80.2 m² of one floor at 5 cm a cell, on wheel odometry streaming at 64 Hz. Commanded 45.8°, the encoders measured 45.3. That proves the robot can map while it moves; it does not prove the map is right. The number that will count is whether a driven circuit of one floor has the start wall and the end wall land in the same place.

The honest summary of the robot is that it now has good eyes and the beginning of a memory. It has driven tens of metres, found a person, and read a logo off a television — then failed three times running to reach the kitchen, because it steered toward whatever looked clear and had no map of where it had already been. Since 19 August it builds the map while it moves: the two-a-second wheel reports that blocked this are gone, replaced by an encoder stream at 64 a second. The number still owed is the loop-closure error of a driven circuit — that measurement is the whole of the current experiment.

The training console puts ROS beside reinforcement learning deliberately. The lesson is the bridge: how a correction becomes data, how data becomes a policy candidate, and how a candidate is evaluated before it is allowed to move hardware. I am building that bridge in public because it is the part I am here to learn.

WHAT CHANGED THIS WEEK
MEASURED ON THE MACHINE · SAME QUESTION, SAME FRAME

Most of the speed was not bought. It was found.

LOOKING
5.4sPER LOOK
WAS 91.5s

The eyes moved back onto the free graphics card, and the model was told it is looking at a person rather than at an object being held up.

RESTRAINT
0sWHEN NOT ASKED
WAS EVERY TURN

The frame only reaches the vision model when the question is about seeing. Most turns are not, and now cost nothing.

CONTEXT
8,192TOKENS
WAS 4,096

His character alone filled 86 per cent of the old window, leaving almost nothing for the conversation itself.

TRAINING DATA
170TOKEN REPLY CAP
WAS 70

Graders were marking down sentences that had been guillotined by a setting rather than by Bob running out of things to say.

INTEGRITY
holdsON FACTS
WAS AGREED WITH ANYONE

Told the wrong name for his own hardware, the old model agreed and wrote it into memory. The new one says no, and says why.

The look was the interesting one. It had been reasoning in circles hunting for an object that was not in the frame, returning nothing at all, and being asked a second time — so the cost was doubled by a sentence of prompt rather than by anything about the hardware.

The one that is not solved: he still re-reads his entire character before writing a word, and on an ordinary turn that is most of the wait. Streaming the answer out sentence by sentence would take the first word from about thirty seconds to under ten without changing a single model. It is written down, it is not built, and this page will say so until it is.

WHO IS BUILDING THIS
A DIVISION OF CARECOMPILE

One person, one lab, and a system that has been in training since January 2026. This page used to say two. A second trainer account was created on 31 July and has never been logged into, so the second name came off rather than stay on a page that counts things for a living.

FOUNDER · CARECOMPILE

Mario Casamalhuapa

Runs the project, and is the whole of it: writes the code, wires the hardware, grades the replies, and decides what the system is allowed to become.

OPEN · UNFILLED

The second grader

The console was built for more than one person, and the disagreement machinery behind it has never run because a second person has never used it. The seat is real, the account exists, and it is empty.

THE OUTPUT

Bob

Not the company and not the product — the result. What a correctable system looks like when the person correcting it is the one who lives with it.

WHAT COMES NEXT
STAY TUNED

This page changes as the work does, and the work is not finished. The next thing we are building is the part that makes him answer while he is still thinking, instead of after. After that, the same loop pointed at movement.

If you want to watch it happen rather than read about it later, ask for a walkthrough — or an account on the training console and grade him yourself.

On method, plainly: we train on GPUs we own, using a mix of open-source and commercial models. We do not publish which, because the models are the replaceable part. Results are internal and they vary. The part worth showing is the loop, and that is on this page.

Born on the Box

A division of CareCompile. Reinforcement learning and robotics, trained on hardware we own, in the place it runs.

THE PROJECT

COMPANY

CONTACT

© 2026 CARECOMPILE · BORN ON THE BOX · v3.3.0 · 2026-08-18 TRAINING SINCE JANUARY 2026 · NO CLOUD · ONE NETWORK