DILATION / BRAIN / HANDOFF

back to the organism

docs/HANDOFF.md, 77109 bytes, 9 sections, rendered by web/handoff.mjs at build time. the raw file

HANDOFF

Generated by node tools/handoff.mjs from what is on this machine at 2026-09-29T01:06:36.511Z. Nothing below is typed from memory: each count is read from the file named beside it, each command was checked to exist (the last section says how many, and names any that do not). Regenerate it any time with the same command; node web/build.mjs renders it at /handoff on the site.

WHAT RUNS BY ITSELF

Two Windows scheduled tasks run this tree every day with nobody at the keyboard. Their state below is schtasks /Query /TN <name> /FO LIST /V, read at generation; the register line is the one the tool that registered the task prints.

BrainLadder (daily 04:00)

Register, remove, query (the tool prints each schtasks line before it runs it):

node tools/schedule-ladder.mjs --register
node tools/schedule-ladder.mjs --remove
node tools/schedule-ladder.mjs --status
schtasks /create /tn BrainLadder /tr "cmd /c cd /d C:\Users\ybmic\Downloads\claudeskillsvideo-to-website\brain && node bench\ladder.mjs --log" /sc daily /st 04:00 /f

BrainAutopilot (daily 05:00)

Register, remove, query (the tool prints each schtasks line before it runs it):

node tools/schedule-autopilot.mjs --register
node tools/schedule-autopilot.mjs --remove
node tools/schedule-autopilot.mjs --status
schtasks /create /tn BrainAutopilot /tr "cmd /c cd /d C:\Users\ybmic\Downloads\claudeskillsvideo-to-website\brain && node tools\schedule-autopilot.mjs --tick" /sc daily /st 05:00 /f

The registered command matches the tool's own line: BrainLadder yes, BrainAutopilot yes. The autopilot task runs a guarded tick that then runs exactly this (tools/schedule-autopilot.mjs tickArgv), its transcript appended to bench/verdicts/autopilot/<date>.log:

node tools/budget.mjs --ram-mb 6000 --disk-mb 2000 --dir state/self -- node --max-old-space-size=6000 bin/brain.mjs self-code --auto --soak 90 --author on --json

HOW TO CHECK

node daemon/health.mjs --gaps
node daemon/health.mjs
node bench/ladder.mjs
node tools/schedule-autopilot.mjs --status
node tools/schedule-ladder.mjs --status
node bin/brain.mjs self-code --auto --dry --json

node daemon/health.mjs --gaps prints the gap counters in one line with no server; with no flag it serves GET /health on 127.0.0.1:8080 (HEALTH_PORT overrides). node bench/ladder.mjs with no flag prints the board from the verdicts on disk. The dry self-code run lists every candidate the loop would try, writes nothing and asks no model.

node self/gaps.mjs

node self/gaps.mjs rebuilds the ledger from the verdicts, the gate, the ladder and the notes; the loop also rebuilds it at the start of a soak when it is older than 24 h and after every kept patch.

HOW TO STOP AND RESTART

Stop the loop, then start it again:

node -e "require('fs').writeFileSync('state/self/STOP', 'stopped by hand')"
node -e "require('fs').rmSync('state/self/STOP', {force: true})"

Take the tasks off the machine, or put them back (the same lines as above), or run the autopilot task once now:

node tools/schedule-autopilot.mjs --remove
node tools/schedule-autopilot.mjs --register
node tools/schedule-autopilot.mjs --run-now
node tools/schedule-ladder.mjs --remove
node tools/schedule-ladder.mjs --register
schtasks /delete /tn BrainAutopilot /f
schtasks /delete /tn BrainLadder /f
schtasks /run /tn BrainAutopilot

A soak that was killed continues from its checkpoint (state/self/soak-<runId>.json) with:

node bin/brain.mjs self-code --auto --resume

WHAT IS UNDONE

Every line of state/self/gaps.jsonl (285 gaps, sha256 7392f1ba2576eb99, written 2026-09-28T13:29:19.809Z), grouped by kind, each with its trial command and its minutes. A gap with no trial has no bounded form yet; its reason is printed instead. Board items are unfinished items of docs/boards/board-N.js; partial bars are kind "bar never completed"; missed bars are kind "missed".

board item (70)

missed (26)

unreadable bar (10)

ladder (7)

gate red (2)

gate slow (8)

dead share (2)

open (160)

HOW THE UNDONE WORK GETS DONE WITHOUT CLAUDE

The loop is self/autopilot.mjs (run by the 05:00 task through bin/brain.mjs self-code --auto --soak 90). Each candidate passes five walls in order, ceiling, patch, evidence, gate, record, and stops at the first it fails; a kept patch is written to the real tree only after the whole gate is GREEN, and a red gate reverts it byte for byte. The model cell, when one is asked, is qwen3 on Ollama at localhost:11434; a model name or base naming Claude or Anthropic is refused before any socket opens.

Measured per source and evidence mode (attempts, kept, reverted, refused), from the decision files:

Where the refusals stopped (wall: count): stale 206, evidence 189, census 100, patch 84, ceiling 53, trial 36, author 2, budget 2, bar 1.

Kept patches, from state/self/authored.jsonl (1 line):

Soaks run (state/self/soak-*.json):

Run one bounded soak by hand (the author off asks no model; the task itself runs 90 minutes with the author on):

node bin/brain.mjs self-code --auto --soak 1 --author off --json
node bin/brain.mjs self-code --auto --soak 60 --author on --json

HOW TO RESUME THE PUBLIC CHAIN

The whole-set public chain (GSM8K on qwen3:1.7b, then HumanEval, then GSM8K on qwen3:30b-a3b) is paused. The cut, first line of bench/verdicts/public/chain-cut.txt: "PAUSED 2026-09-26T12:54:20.745Z by self/resume.mjs (organism (resume)) after a bounded resume of 45 min (exit 0): public-gsm8k, step 1 of the chain in bench/verdicts/public/whole-chain.cmd.txt."

Resume it only when nothing else is using Ollama (one Ollama is one queue). --resume continues each set from its journal. The exact command, from bench/verdicts/public/whole-chain.cmd.txt, run from any cmd window:

cmd.exe /c cd /d C:\Users\ybmic\Downloads\claudeskillsvideo-to-website\brain && (C:\PROGRA~1\nodejs\node.exe tools\budget.mjs --ram-mb 6000 --disk-mb 200 --dir bench\verdicts\public --wait-free-ram-mb 16384 --wait-max-s 21600 --record bench\verdicts\public\budget-whole-gsm8k.json -- C:\PROGRA~1\nodejs\node.exe --max-old-space-size=6000 bench\public.mjs --set gsm8k --limit 0 --resume > bench\verdicts\public\whole-gsm8k.log 2>&1 & C:\PROGRA~1\nodejs\node.exe tools\budget.mjs --ram-mb 6000 --disk-mb 200 --dir bench\verdicts\public --wait-free-ram-mb 16384 --wait-max-s 21600 --record bench\verdicts\public\budget-whole-humaneval.json -- C:\PROGRA~1\nodejs\node.exe --max-old-space-size=6000 bench\public.mjs --set humaneval --limit 0 --resume > bench\verdicts\public\whole-humaneval.log 2>&1 & C:\PROGRA~1\nodejs\node.exe tools\budget.mjs --ram-mb 6000 --disk-mb 200 --dir bench\verdicts\public --wait-free-ram-mb 16384 --wait-max-s 21600 --record bench\verdicts\public\budget-whole-gsm8k-30b.json -- C:\PROGRA~1\nodejs\node.exe --max-old-space-size=6000 bench\public.mjs --set gsm8k --limit 0 --resume --model qwen3:30b-a3b --tag 30b > bench\verdicts\public\whole-gsm8k-30b.log 2>&1)

HOW TO DEPLOY THE SITE

node web/build.mjs
node tools/deploy.mjs web/dist

node web/build.mjs writes web/dist (the organism page, findings, portfolio, ladder and this file at /handoff). node tools/deploy.mjs web/dist runs the Vercel CLI through npx (npx vercel@latest), links the project "dilation" and deploys to production, aliased to dilation.dev; it prints every command before it runs it. The CLI login made once on this machine by device login lives in the CLI's own data folder under %APPDATA% (com.vercel.cli); present now: yes. This file never reads it and carries no credential. If the deploy prints that the CLI is not logged in, he runs the login himself:

npx vercel@latest login

HOW TO PUSH THE REPOSITORY

Pushing is his to do: the GitHub login and the remote are his, and no credential is written anywhere in this tree. With the GitHub CLI (it opens a browser for his login), or with a remote URL he already has:

git remote -v
gh auth login
gh repo create <name> --private --source . --remote origin --push
git remote add origin <url>
git push -u origin master

COMMANDS CHECKED

Commands listed in this file: 129 (311 checks: script files under the tree, executables on PATH, registered tasks). Missing: 0, none. Bar commands whose bench an undone board item is still to build: 0.

Secret filter: 2 replacement(s) by [withheld] in text carried from the ledger and the logs (the patterns are SECRET_PATTERNS in tools/handoff.mjs).

Generated 2026-09-29T01:06:36.511Z under: GATE RED: test files 137/137, assertions 1857 pass / 0 fail, authored code lines 225637 in 612 files, prose lines 1709056, generated organism lines 10986227 in 321 files, em-dash files 0, bad imports 0, budget GREEN, compress GREEN, his data GREEN, load-bearing GREEN, boundary GREEN, autonomy RED, handoff GREEN, contamination GREEN, vision GREEN (bench/verdicts/gate.json, at 2026-09-29T01:06:21.525Z)