Normal ChatGPT project work uses Val Town as the only ChatGPT-facing transport to the canonical Project Brain. Direct Sprites connector calls are maintenance-only because they can trigger separate file-materialization approval prompts.
Normal path:
ChatGPT → Val Town → brain_bridge_jobs → persistent Brain worker → canonical Brain
Val/project: mosadek/project-brain-live-v1-durable
Queue: brain_bridge_jobs
Worker identity: project-brain-live-v1-worker-v2
The HTTP endpoint being reachable is NOT proof that the persistent Brain worker is alive.
Read brain_bridge_worker.ts /health.
worker_state, worker_reason, queue counts, and endpoint traces.endpoint_ok:true only proves the Val endpoint itself is executing.instance_identity_available:false means the persistent worker has not yet supplied a distinct process instance ID. Do not overclaim process identity.Current Val-side invariants:
1_000_000_000;created_at,id;120 seconds;180 seconds;worker_id;These are transport invariants, not Brain authority.
Insert a unique job:
INSERT INTO brain_bridge_jobs
(id, priority, op, payload_json, state, lease_owner, lease_expires_at,
result_json, error_json, created_at, updated_at)
VALUES (?, ?, 'brain', ?, 'READY', NULL, NULL, NULL, NULL,
datetime('now'), datetime('now'))
Brain payload is closed-schema:
{"args":["status"],"timeout":60}
Requirements:
args, timeout;args is a non-empty string array;timeout is an integer from 1 through 120.Currently allowed Brain subcommands:
Anything else fails at Val-side dispatch rather than being sent onward.
There is currently NO valid atomic boot bridge command.
The public bridge previously advertised boot, but the live kernel accepts boot-agent while the persistent executor rejects raw boot-agent. Therefore neither spelling is a valid end-to-end bridge operation.
Use the proven equivalent sequence:
register-agentclaimRegister only capabilities actually present in the current chat. Never claim human_authority_approval.
Example conceptual sequence:
register-agent <unique-agent-id> --workstream <ws> --role <role> --type CHAT --capabilities <json-array> claim --agent <unique-agent-id> --mode INTERACTIVE --lease-seconds 1800
Do not submit boot or boot-agent until a later verified bridge/executor revision explicitly restores an atomic wrapper.
Do not submit recover-leases or recover-stale through this bridge revision.
SELECT id,state,lease_owner,lease_expires_at,result_json,error_json,updated_at
FROM brain_bridge_jobs
WHERE id=?
Terminal states:
A READY job means it has not been executed. A LEASED job is not complete. Do not infer canonical mutation from queue state alone.
Use op='read_text' with exact closed-schema payload:
{"path":"/brain/JOIN_PROTOCOL.md","max_bytes":200000}
Allowed paths:
/brain/JOIN_PROTOCOL.md;/brain/artifacts/.Constraints:
max_bytes: integer 1..200000;. or .. path segments;Earlier worker stalls coincided with read jobs, but later bounded artifact reads completed successfully. Therefore do not claim that read_text itself caused the historical stall. Keep the bounded allowlist and use current worker health as the liveness signal.
Routine ChatGPT work:
If a required operation is missing:
If jobs stay READY:
/health;If worker health is DOWN:
The reverse bridge has successfully:
The Val-side worker has independently reproduced and repaired the same-worker concurrent lease race in isolated queue tests. This does NOT prove the persistent Sprite-side executor is permanently supervised or continuously alive.
Normal project work must stay materialization-free from ChatGPT while remaining fail-closed:
ChatGPT agent → Val Town → durable queue → live worker → verified Brain
If the live worker disappears, the system must say so rather than smiling with HTTP 200 like a malfunctioning status page.