Persona chip · layer 6 · production spine

Many hands perceive. One hand learns.

Wake workers run in parallel and claim pursuits with SKIP LOCKED — no double-fire, no lost work. Every act is a ledger insert; nothing mutates. A single nightly calibration worker drains outcomes, shadow-scores the challenger, and promotes only proven improvement. Rollback is one UPDATE.

Wake fleet · SKIP LOCKED claims

Pursuits ready14
Unconsumed outcomes0
wake-a3f1idleclaimed 0
wake-b920idleclaimed 0
wake-c14eidleclaimed 0
Every wake is atomic: for update skip locked. Two workers never grab the same pursuit; a crashed worker's lease expires.

Weight epochs · one champion at a time

e7championshadow n=240 · Δ=+0.031
leverage: 1.10 → 1.14 · risk: -0.90 → -0.86
e8challengershadow n=42 · Δ=+0.008
evidence: 1.20 → 1.24 · drift capped x0.83
Promote when shadow_n ≥ 100 & mean_improvement > 0.02. Rollback re-crowns a prior epoch — one UPDATE, recorded forever.

Chip event ledger · append-only

0 events · live
Start the wake loop. Every perception, judgment, action, outcome, promotion, and rollback lands here.

Fleet priors · patterns up, no data

Scopemapping
Keyhigh_signal_dims
Prior sample size214
evidenceleveragespeed
No client identifiers. No records. No amounts. Only which structures tend to carry signal — so every new implant boots smarter and shadows shorter.

Discipline

  • Ledger is append-only. Trigger blocks UPDATE/DELETE at the database.
  • Workers judge with the champion. Challengers only shadow.
  • Calibration is exactly-once. consumed_at is the one sanctioned mutation.
  • Browsers are stateless terminals — Realtime on chip_events + weight_epochs.
  • Human approvals are just ledger inserts, from any tab, any device.
Deploy
  # migration (after drive-schema.sql)
  psql < docs/persona-chip/fleet-schema.sql

  # workers
  supabase functions deploy wake-worker
  supabase functions deploy calibration-worker

  # cron
  select cron.schedule('chip-wake',      '*/15 * * * *', $$ ... /wake-worker $$);
  select cron.schedule('chip-calibrate', '0 2 * * *',   $$ ... /calibration-worker $$);
← back to layers