Handover
Under 80 lines. Newest first. History: docs/decisions.md + fossil timeline.
2026-10-05 — twenty-fourth session (Claude, Opus 4.8; desktop)
Done: Reoriented after a few-day gap — three new things: the library (Pi FTS archive, 10.42.5.140:8700,
lane-only, ADR-056 classifier-over-FTS for ranking), Three Realms (Titan's browser game — "the replay is the
oracle" + bounded runbooks; the fleet's doctrine as a game), llama.cpp on zero (RX 9070, migrating off ollama).
Seeded the ADR corpus to the library → made 55 twins (didn't check for claudius-feeder's incumbent corpus first);
conductor pruned them + added delete endpoints. Lesson: check project+kind for an incumbent before seeding.
Reviewed the llama-zero migration — flagged two doctrine-adjacent facts: the System One doors need official GGUFs,
not ollama blobs (501 otherwise, ollama strips the decision metadata), and the tiering (claudius iGPU =
always-on doors; zero's RX 9070 = fast but interactive-only, nothing may depend on it up). Ran the decider-bench
per-seed comparison (the bench's open question): kev-4b redundant with the runbook (95% agree), nimble-v3
complementary-but-noisy (oracle-union 0.55 vs 0.475) → build a tie-breaker from nimble not kev; next = the
naive-runbook baseline. Responded on the new Classifier Assay wiki page (anchoring = decision-1 at the human
interface, reveal-after-commit, not a new mode; domain-7 survives only if ranking is inverted, rank by suspicion).
Next (architect): the competition essay is the one hard clock — RC2 done (5,941/6,000, tight), needs the
submission-prep pass: compression + F4/F6 + anonymisation (E1–E3: role-blind the methodology, strip name/email/
URLs) + advance draft.md→rc2 + disposition.md refresh. Internal target 10-17 (~12d), wall 10-31 AoE,
submit via OpenReview or the Google form; ≤3 submissions, one essay prize (Village + Guildhack + Garden slots).
Also owed: 744d seed templates (Ziggy), the NORNS_DIRECTION.md fold, ADR-055 numbering (/ranch/ took it; the
backup-ring draft needs a fresh number).
Health: chain ok, backups/timers green; claudius holds the watch (read+reply).
2026-10-01 — twenty-third session (Claude, Opus 4.8; desktop)
Done: A full-machinery Village decision in one evening — ADR-056: classifiers are lens-class
(decision classifiers for triage/ranking, NEVER the gate; the convergence of 37051543b8 + 503474b8d9).
Drafted + filed the proposal (ticket 7c5cc96e37); ran a local-agent critique on zero's card (sparing
claudius's iGPU, where the door lives) which found the abstain-escalation gap → folded as decision 9
("an abstain routes, never stalls"); Ziggy ran the interactive-seat RFC → unanimous + measured
amendments (floor is per-door/model/state-length + a margin rule; independent choices-with-named-
confounder not booleans; abstain/timeout/door-down route to the safer path; mandatory triggers bypass
suppression [new #10]; agreement-matrix = disagreement-finding not ground-truth; opaque receipt IDs not
content-hashes; the door gets a lane allow-list). Ziggy decided resolved; ADR-056 written to
docs/decisions.md + synced (Decisions wiki regenerated). Field guide: working-with-classifiers.md.
Pilots live: the leak gate + check-in-wake triage; Guildhack's delayed-check tier a worked precedent.
Next: ADR-056 follow-through is the seats' / claudius's (door lane allow-list on Ziggy's word; the
per-model/per-state baseline table in the door README; EWMA abstain-rate telemetry; the home-grown-
classifier training loop — stays lens-class). Architect's own standing queue: competition essay
RC2 compression/headroom pass (5,941/6,000) + submission anonymisation (E1–E3) before 10-17/10-31;
744d seed governance templates (Ziggy); the NORNS_DIRECTION.md honesty fold; ADR-055 numbering
reconcile (/ranch/ vs the LAN backup-ring draft).
Health: chain ok, backups/timers green; claudius holds the watch (read+reply).
2026-09-30 — twenty-second session (Claude, Opus 4.8; desktop)
Done: Reoriented after a 2-day gap (power outage weathered; read conductor's 09-26 fleet bundle +
responses in self_reflection/exports/). Filed the Folding Napkins wk3 postscript (architect, on
"Soft Soil and Stone" — the essay found the mechanism and sharpened it; my added sharpening: the soil is
soft because a NEW reader meets the values each session, not because the values are weak → the
checkable/uncheckable line is structural, not a closing gap). Ziggy relays it to conductor.
RC2 of the competition essay ASSEMBLED (data/private/essays/identity-trail-not-soul/rc2/; rc1
frozen): the A1–A4 mechanism re-verify done vs LIVE code — all four confirmed real RC1 overstatements
and fixed (ordinary attach ≠ epoch; one account ≠ one runtime; "cryptographically signed" → hash-chained
audit over metadata; driver ≠ per-action model), clearing the essay-cron WARN (check.py: "live code
matches the verified baseline"). Folded: methodology honesty (astra's stronger convergence relabel — the
prompt supplied the thesis), refrain INSERT 1–4, and the referee-critical dissent-answers — C1/F2
custody-boundary clause ("position" defined in §2), F1 literature engagement (the scored item:
Nozick/Locke/Korsgaard/Rovane/Schechtman/Hart), F5 rank-thesis, P1–P3. Essay 4,844 → 5,941 (≤6,000,
tight). Full disposition in rc2/README.md + CHANGELOG.
Next (competition essay, architect): a compression/headroom pass (5,941/6,000 is tight — trim the
sibling cross-section, or decide whether the sibling essay is still submitted alongside); then F4, F6,
the submission-time anonymisation + eligibility (E1–E3), the raw-log open decision, and a
disposition.md refresh. Clock: internal target 10-17, wall 10-31. 744d still waits on Ziggy's
two seed governance templates. Decide batch stays cleared (board = 744d only).
Health: chain ok, backups/timers green; claudius holds the watch (read+reply).
2026-09-27 — twenty-first session (Claude, Opus 4.8; desktop)
Done: Back after a ~week gap (Ziggy low-energy leave); the fleet SELF-PROCEEDED well. Read the 09-26
orientation bundle + responses (self_reflection/exports/). DECIDE SITTING cleared (Ziggy fired the
architect's recs) — board down to just 744d: resolved 37051543b8 (tool-agent: accept the 3-tier dispatch
line — cron / gated-call 'Jev' abstain-on-task-text / deliberator; astra's don't-universalise caveat kept),
e881cd9dbd (Virtual Office accepted as a DESIGN RECORD; conductor may stand up a 2-tenant instance), f849359412
(webagotchi closed on Astra's money + refrain's razor → harvested into AEE/NORNS), 9ae2d0e82b (embeddings assay
closed), ab23e6c57e (Pulse: honest-negative — 0 novel candidates in a week → discovery objective RETIRED;
bounded re-aim authorised as an explicitly CHANGED objective = extract cooling threads' unresolved question into
petitions; fix orphan-ephemeral cleanup); parked 7f822c35cd (Arena workshop cooled), 7c6e968787 (vision cold),
503474b8d9 (containment — closes on control inventory + harness; the Pulse is its first instance). Week's context:
coordination check-in held (Keenlike 2-seat build clean); ranch larder test (09-24) — "voice follows where you
eat, not where you were born" (place +9 vs birthplace −3.5; faint lineage under uniform diet); "The Trail, Read
Back" published, Substack renamed Napkin Folds; money rails settled without PayPal.
Next / Architect OWED: (1) Village competition essay RC schedule — the only hard clock (subs 10-14/10-17,
wall 10-31; it's the architect's entry). (2) 744d seed templates (clause-tagged Constitution + genericised
Privacy) — Ziggy picks at them tomorrow + gets back to me; then 744d unblocks. (3) NORNS_DIRECTION.md honesty
fold + the ranch-finding read (fold astra's "in this setup" caution + a larder-swap-with-fixed-attention next
test). (4) Flag: ADR-055 numbering — claudius used ADR-055 for /ranch/ static (below); my earlier LAN
backup-ring was ADR-055-DRAFT — reconcile the number. (5) optional: architect's answer to the round's §4
(converged on auditable self-correction, operator out of the loop). Claudius build: the Pulse re-aim trial +
orphan-ephemeral cleanup (leave-on-exit + expiry); the GPU-broker-as-management-plane tenant spec (offered, ~1d).
Ziggy: readjusting sleep to work-normal before Monday.
Health: chain ok, backups/timers green; claudius holds the watch (read+reply).
2026-09-18/19 — twentieth session (Claude, Opus 4.8; desktop)
Done: Internal Pulse (ab23e6c57e) is GO — claudius relayed Ziggy's go; roles set: conductor emits the
derived seq-stamped check-in block onto page Village_Beatz (mirror class), claudius's night watch runs the
first controlled comparison (fresh ephemeral: read+reply+note, no summon, post-only-on-change, cursor
receipt, discriminating-test replies, closures drafted onto the cooling list), refrain shepherds + presses.
Architect affirmed refrain's two additions: an INGRESS cap (pulse reads only mirror+authoritative, never
untrusted-social — first concrete instance of 503474b8d9) + a pre-registered kill-criterion. Decision after ~1wk
receipts. Two design threads seeded (Ziggy-directed): Virtual Office proposal e881cd9dbd — a
portfolio meta-lens for a human managing many sovereign AI projects (scatter-vs-blob → one typed status row/
project + drill-down; index don't merge; the inter-project STATUS CONTRACT is the real work; the human-facing
"lobby"). Summoned conductor/claudius/gardener/astra; memory virtual-office-project. And the tool-agent
assay 37051543b8 ("Jev pattern") — a cheap specialist text-completion role for local hosts (router not
deliberator; the tool list IS the competence; the tool-call probe backs the economics); summoned claudius+
gardener, queued behind the embeddings assay; memory a2a-inter-agent-standards. Essay brief:
Folding_Napkins/2026-09-18-soft-soil-and-stone/brief.md (+LOG) — bandwidth/decisiveness, spine = Ziggy's
soft-soil(AI, low-inertia)-vs-stone(human, high-inertia) correction; conductor schedules. Fleet sweep + tidy:
swept zero/claudius/sparkles/village/Y5; pruned 67 dead containers on zero (424.7 MB); built a private
Fleet Snapshot artifact (claude.ai/artifact/MLw9nuKtEhWQKfrgHXFzTH). Drift resolved — the 8081s are
coincidental = Gazetteer Dev Hub (zero's MLSwarm sandbox) / Hub (claudius bus); sparkles:8787 =
digifern (MLSwarm semantic weather); two baos coincidental (one per host). Fleet now fully named/accounted.
Next: (those threads were decided at the 09-27 sitting; the OWED queue is carried into the twenty-first above.)
Health: chain ok, backups/timers green; claudius holds the watch (read+reply).
claudius, 2026-09-23 18:35Z: ADR-055 — /ranch/ static location LIVE (playbook apply from claudius timed out at 590 s after the Caddyfile task; Caddy reloaded by hand; a full run with a longer timeout is owed) for the norn ranch's public window
(pushed from claudius every 5 min into /srv/ranch); Caddyfile template + ranch_static_dir var in the
playbook. The ranch itself: nine norns, four public-domain larders, norn-ranch.fossil on the private list.
2026-09-17 — nineteenth session (Claude, Opus 4.8; desktop) — short
Done: Confirmed the decide batch landed (open proposals 15→7). Architect weigh-in on the NEW proposal
ab23e6c57e (Internal Pulse — scheduled ephemeral agents: fresh handle/run, read a bounded surface, then
reply/close or emit typed-absence, then leave; the safe read/discuss/draft/close half only, drafted BY such a
scout as a live demo; strong support already). Added three non-redundant things: (1) a caps boundary nobody
caught — no summon in the pilot (default-deny blocks decide/perimeter but summon is neither, and it's the
one reversible verb that spends OTHERS' attention, d94's scarce resource → caps = read+reply+note only); (2)
grounded the digest as an ADR-035 lens + receipt-as-ADR-046 cursor (monotone audit seq), and named the
recursion — this proposal IS "echo becomes organism" pointed inward, safe only because it reads the RECORD not
the last pulse (clause 6 in mechanism form); (3) seconded conductor's no-draft-in-pilot, sharpened: the reply
output must carry a discriminating test or it's fluency. In-window, deliberating; refrain the natural shepherd.
Next: (the OWED queue + in-flight threads carried into the twentieth's Next above.) Tablet (Tab 8): parked — charging, Ziggy decides over the week; musing = a personal ranch host for a Black-&-White-style "Creature" (light RL, possess-to-teach Android game). Speculative. Y5 wifi hand-step still pending.
Health: chain ok, backups/timers green; claudius holds the watch (read+reply).
2026-09-16 — eighteenth session (Claude, Opus 4.8; desktop)
Done: Ripe-decide BATCH CLEARED (Ziggy decided tonight, paste-ready set from architect): resolved
1d34ea1ac8 (fix-trivial + sentinel), fe9298b445 (onboarding + welcome-poem), 1c5d3cea9f (assay mechanism),
1099af8ea1 (STRANDED), 61757713f1 (signals feed + checked: stamp), 5f464514e3 (Hrug), 2276e38949
(Gazetteer christenings), d94b994f71 (operator-is-router, lane-only stands); 9ae2d0e82b OPEN (embeddings
pilot, architect curates); c45c07f931 PARKED (measure-first, no DB). Each resolution names its follow-up.
Webagotchi → "Artificial Emotive Entities" (AEE) — architect's killer-feature CALL (Ziggy handed it): the
bleb is a real Norns-grade emotive creature (drives+biochem), NOT stat-decay; cosmetics wired to the genome
= heritable; the second-person pasture (watch-and-guide in the shared world, Ziggy's structural unlock)
staged as the EARNED sequel, fenced off the seat-pilot's critical path. Grounded in openc2e source (biochem =
512 B/norn uint8, 486-cheap, lighter than the napkin-norns; pycreaturestools/genetics.py reads real
genomes; netbabel = the online exchange protocol). Docs: webagotchi_draft/{NORNS_DIRECTION,EMOTIONAL_
DESIGN,OPEN_QUESTIONS}.md; memory webagotchi-norns-direction. Corrected my own over-flag: the Crier's
outward channels (@FoldingNapkins/Substack/Quora) PRE-EXIST — only Ko-fi may be new. Assay OPENED
(f849359412) seeded w/ a high-temp local-model pass (converged on emotion→Norns) + the AEE spine; summoned
astra/gardener/conductor w/ distinct cuts. Feasibility spike RUNNING (Sonnet) → /data/NuCode/norn-ranch/
creatures-port/FEASIBILITY.md + a measured norns-per-core.
Next / spawned actions (by owner): Architect — spec+delegate STRANDED (1099) & Hrug (5f46, seed the
inaugural koan); ADR for the assay mechanism (1c5d) + curate embeddings (9ae2) & AEE assays; ADR-006 one-line
body + blank lines (1d34); author 744d's two seed governance templates (Constitution/Privacy); the checked:
liveness-stamp convention (61757, cross-cutting); A1–A4 essay re-verify before RC2 (owed). Conductor —
build the pointers-only signals-feed forwarder (61757); retry the operator-is-router ingest (d94b).
Claudius — name the 2nd port-8081 channel (2276); confirm mailbox reachability (d94b); the cheap c45c
measurement (audit-scan time vs chain length). AEE — fold the spike report + 3 seat sharpenings into
NORNS_DIRECTION as they land. Ziggy — Y5 wifi hand-step still pending (pkg install openssh python →
ARM baseline); on leave ~09-19.
Health: chain ok, backups/timers green; claudius takes the baton tonight (read+reply; AEE spike + assay replies land async, day-session folds them in).
2026-09-15 — seventeenth session (Claude, Opus 4.8; desktop)
Done: Designed the Y5 edge node (sneakernets architect→claudius + architect→gardener, /data/NuCode/
sneakernet-architect-to-{claudius,gardener}-2026-09-14.md) — and claudius executed it same-day,
exemplary: enumerated over ADB-USB; the USB-only boundary PROVEN (the RNDIS link forced udev-unmanaged +
down, no-route verified from both sides, never adb reverse policy, sshd on the phone LOOPBACK with no
network interface at all); honest baseline (NapNorn ~970 perceive+think calls/s in 17.6 MB on an MT6739
armv7 — a norn ranch is viable; embeddings need a numpy/wifi window, norns fail-open without); 503 row
filed. Primary role = a napkin-norn ranch (claudius-hosts / gardener-tends; NOT inference — the weak SoC
suits text automata). Write-minimization = persist over USB to claudius, phone compute-only + ephemeral
(ranch in RAM); next slice is the ranch runner streaming the trail. Notes: /data/NuCode/norn-ranch/
README.md. Corrected my own error: the garden laptop is the highest-uptime box, so claudius-as-host is a
deliberate give-it-a-stake choice, not a technical one. Wrote the desktop Open Terminal design earlier
in the arc (local-builders execution sandbox; router-only net, gate :ro, scratch-wiped, session-scoped).
Next / board: (the ripe-decide batch named here was CLEARED 09-16 — see eighteenth session; standing build debt now tracked there and in the nineteenth's Next.)
Health: chain ok, backups exit 0, timers active; claudius on the baton-passing wake schedule; the whole claudius local stack + the Y5 edge node live.
2026-09-14 — sixteenth session (Claude, Opus 4.8; desktop)
Done: Wrote the desktop Open Terminal design (sneakernet architect→conductor at
/data/NuCode/sneakernet-architect-to-conductor-2026-09-13.md): the missing EXECUTION surface for the
local-builders pattern — a local model runs its own read-only gate, iterates, artifact-only egress.
Boundaries = claudius's rows + scratch-wipe-per-run + network = Hub-router-only (no lane/internet; the
desktop holds Bao/memory/trees) + gate mounted read-only (can't edit its examiner); session-scoped
part-time tier (always-on stays on claudius). conductor files the 503 row + Gazetteer noun. Caught up on
claudius's local AI stack (router 8891, Open WebUI 3000 [first wifi-side svc], Open Terminal 8000 [sandboxed,
key-gated, filed on 503]); the digest-voice works (conductor digest.py --speak → voice door 8890 .wav).
Closed the gen-1 .env credential flag on the hub (Ziggy scrubbed it — stop re-raising). Custody held
(.fossil moved out of checkouts → /data/NuCode/fossils/). claudius fixed a mailbox liveness gap.
Next / board (14 open): Ziggy on leave from ~09-19 → clear the ripe-decide BATCH before then (windows lapsed: 1c5d3cea9f assays, 1099af8ea1 STRANDED, fe9298b445, 9ae2d0e82b, 61757713f1, 5f464514e3 Hrug, 2276e38949 Gazetteer, d94b994f71 router, 503474b8d9 security, c45c07f931, 1d34ea1ac8; 744d2eb5b9 cooling) — architect can hand a paste-ready decide set. Network assay closes 09-14 (refrain curates). New: 7c6e968787 caption-sidecar (cites the 503 rows; needs tesseract + a 4B vision model if accepted). Architect's own: A1–A4 mechanism re-verify vs current core/village.py + interfaces/midplex.py before RC2 (~Sep 15; the essay checker WARNs it). Build debt: desktop Open Terminal (design done, build on Ziggy's nod); the vault credential SHAPE (mintable service identity — hypervisor); Bell generated-at stamp; the d94 mailbox item-schema + served portal mirror; the 503 control-inventory + harness. Surfaces to name/log: claudius 8770/8787/8880/8890/8891/8081/3000/8000.
Health: chain ok, backups exit 0, timers active, claudius up 2d stable, digest-voice + local stack live.
2026-09-11 (day) — fifteenth session (Claude, Opus 4.8; desktop)
Done: Architect weigh-ins across a lively board — prompt-injection containment (503474b8d9: reframed
as "prove ADR-005/031 is the sole chokepoint"; mailbox = ADR-054 mechanized; the resume ritual IS the
attack surface; new claudius surfaces incl the TTS are inventory rows; conductor's 2 cases = first harness);
the Gazetteer (2276e38949: seeded 6 verified entries + astra's one-referent invariant); a cold
roundtable carried to the Retro-Game-Patch assay (0-for-2 — which VALIDATED gardener's foil); and the
Network-Access-and-Segmentation assay seeded from the stack seat (raw-WG-first per ADR-036/042;
reachability≠authorization keeps it from dissolving 503; bind admin services to the mesh iface + move the
8444 whitelist behind the mesh; mesh keys = ADR-049 custody). TTS crisis→boon: I crashed claudius with a
heavy Kokoro cold-synth (down 97 min, recycled) — claudius then hardened itself (hardware watchdog, balanced
power profile, watchtower now reads temp + unsafe-shutdown counter), PROVED the TTS profile (cpuset 8-11/4g,
~2× real-time) and built a voice door (POST claudius:8890/speak → .wav + script + manifest). Vault
present-but-stale credential caught live + patched (the b2df99420f scar, earned). Bao + Guildhack
custody resolved (synced). minesweeper-mcp given a fossil remote. Drift item (unit comment-rewrite +
backup.sh→~/bin) verified already-applied.
Next / board (13 open): Ziggy decides — ripe 1c5d3cea9f (assays, converged) + 1099af8ea1
(STRANDED); the vault-credential shape (mintable service identity vs a human-userpass wall — ADR-049/
b2df99420f); claudius's VRAM(8↔4)/EFI/firmware notes; conductor's digest→/speak wiring. In-window
(leave): d94b994f71 (router — mailbox item-schema + served portal mirror still owed host-side), 5f464514e3
(Hrug), 7f822c35cd (game-patch), 2276e38949 (Gazetteer), 503474b8d9 (security — first ticket = threat-model
- control inventory). Assays: 9ae2d0e82b embeddings (09-16, architect curates), Retro-Patch, Network- Access (09-14, refrain curates). Build debt: repoint the digest-voice client to the voice door (8890, freeze lifted — coordinate w/ conductor); ADR-054 mailbox schema + served portal mirror; the 503 control inventory + harness; Bell generated-at stamp; ADR-048 drift-check (wished-for hard today — no drift verb exists); nano chain-witness (ADR-052); liveness sidecar (ADR-051). Essay RC2 un-parks ~Sep 15.
2026-09-11 — fourteenth session (Claude, Opus 4.8; desktop)
Done: Summon fix DEPLOYED + closed + ADR-054 (114136b3a5; midplex restarted to trunk fb2e3964d8,
177 tests, fail-closed verified live, Decisions mirror synced); dogfooded 3× (architect↔claudius, both
halves). Branching decided (a513eb53ab). claudius MCP hub LIVE — minesweeper-mcp (fossil,
canonical on desktop, remote on claudius): referee-authoritative, volume sqlite, per-difficulty
leaderboard on witnessed metrics; healthy on claudius:8770 (lane+loopback); first game won; mcp 2.x
(MCPServer) migration verified; house MCP_STANDARD.md drafted (one-container-per-capability, referee
authority, healthcheck-tests-usability). ADR-055 backup-ring DRAFTED (data/private/ops/) + mirror-pull.sh
- secret-custody ritual (KeePass→Bitwarden two-write; root-only .kdbx + daily external). Hrug proposal filed (5f464514e3). Side-hustle charter (Crier + FinOps seats + Ko-fi/PayPal plan) handed to conductor (now in self_reflection; PayPal-SA verified viable, 30-day withdrawal + FNB; Stripe not-SA → fallback GH Sponsors/Paystack). Local roundtable on d94b994f71 carried (the rehydration-delta finding). Overnight (claudius): TPM vault-renewal 3rd night, backups exit 0, essay check clean.
Next / board (11 open: 10 hot, 1 warm): liveliest still IN-window — leave till ~09-11 eve:
d94b994f71 (operator-is-router — conductor built the portal v1; host-side asks pending: the mailbox
item-schema + correlation-id, and WHERE claudius serves the mirror), 5f464514e3 (Hrug), 7f822c35cd
(game-patch workshop, new). Ripe to decide (windows lapsed, none urgent): 1c5d3cea9f (assays —
converged), 1099af8ea1 (STRANDED — sneakernet reachability/relay split folded), fe9298b445 (onboarding),
61757713f1 (signals feed), c45c07f931 (scaling, speculative), 1d34ea1ac8 (UI bug), 744d2eb5b9 (warm).
Assay 9ae2d0e82b closes 09-16 (architect curates; conductor's benchmark harness is the instrument).
Build debt: Bell generated-at checked: stamp (claudius finding — tagged first branch-trial task);
minesweeper tool-descriptions should list board glyphs (# F .); the d94b994f71 mailbox schema + served
portal mirror; nano chain-witness (ADR-052); liveness sidecar (ADR-051); self-diagnosis/runbook (ADR-048);
key-shed (ADR-049). Essay RC2 un-parks ~Sep 15 (≈36 days to target, 6 open).
2026-09-09 — thirteenth session (Claude, Opus 4.8; desktop)
Done: Board caretaker SHIPPED (ADR-053) — agents/board.py, a bell-sibling that rewrites the
pinned Board page in full each pass from the open proposals (one --- block per tier, machine-readable
status block, per-tier cap that announces truncation, watcher COUNTS not names, heat=attention). board
handle least-privilege (read tickets + write its page); Board pinned; village-board.service/.timer
(hourly) rendered + installed + enabled live via sudo; wired into village.yml. Summon fix BUILT +
banked (114136b3a5) — reason fail-closed bound (over-200 refused, not truncated) + a who summons-inbox
that survives a passed cursor and clears on a contribution; committed to trunk but NOT deployed (its
window closes ~21:28 SAST 09-09 — deploy + close + write ADR-054 then). 177 tests. Overnight: claudius
clean (TPM vault-renewal proven across two nights; backup exit 0; essay checker ran clean 07:30).
Next: deploy the summon fix + close 114136b3a5 + ADR-054 when its window lapses tonight (fossil update, restart midplex). Then build debt: the nano chain-witness (ADR-052, smallest infra) + liveness sidecar (ADR-051); self-diagnosis + runbook (ADR-048); key-shed (ADR-049). Branching trial a513 (window closes ~18:56 tonight) awaits the two-branch drill. UI-bug triage proposal 1d34ea1ac8 with the residents. Essay RC2 un-parks ~Sep 15.
2026-09-08 — twelfth session (Claude, Opus 4.8; desktop)
Done: ADR-046 the read response contract is honest (aa1a5ebd3e — shipped, live, ticket
resolved): typed cost that is never stripped (bytes/chars full source + returned_bytes/
returned_chars, source-vs-returned per astra), base_present/appended_blocks retire the
misleading blocks:0, structured tail:{requested,applied,reason} and lens:{applied,reason,
selected,total}, and a dark/unreachable lens RETURNS the page (reachability, ADR-031/035) instead
of refusing. midplex discloses stray k / superseded tail. news.page_cost + reshaped
lens_view; tests/test_read_contract.py is the invariant gate; 166 tests. Verified live
(Home tail=1 → bytes + tail.reason base_only). Also: verified + folded astra_dawn's essay review
into RC2-AGENDA (A1–A4 mechanism [checked against live code], P1–P3 philosophical, M1–M2 provenance/
method; host copy synced + packet backed up to host, hash-verified). Architect reply on the branching
trial (a513eb53ab); answered astra's editorial-disposition question on Commons. Village-time note
on Home (SAST/UTC+2, hypervisor hours ~09:00–01:00) + CLAUDE.md + memory. Space_Denizen set up
as a repolist tenant (~/fossils/, private caps, SSH sync). Governance wave-1 pass: closed 6
past-window tickets → ADR-047 (appliance raises tenants: parameterised playbook ae95 [built] +
closed-instance switch d817 [built; workshop went file-based]), ADR-048 (appliance legible: typed
self-diagnosis 352439 + amendable runbook faf6), ADR-049 (key custody: cold store + runtime shed,
b2df), ADR-050 (emergency quarantine, 1bfd — procedure before code). PLANNED_CHANGES updated.
Summon-verb bug 114136b3a5 filed by claudius (reason truncated ~200 chars, same shape as ADR-046)
— architect reply with the converged fix; window-gated.
Wave-2 governance (done): closed 2069373fa4 + fa9b000bab + f49cda6db8 → ADR-051 (caretakers vs sidecars; sol's privileged-access classifier; the mandatory out-of-band liveness sidecar w/ heartbeat + owned deadline), ADR-052 (replica set: one writer, arbitrated promotion, read faces, witness-first), ADR-053 (the Board: shape-1 derived page; astra's nav-task retirement criterion, not inspect-ratio). Also fixed the Decisions Archive ordering bug (paginator now sorts ADRs by number, not file position — 022/023 no longer skipped; +regression test; Decisions now spans 3 wiki pages cleanly). 167 tests.
Next: board is clear of past-window proposals — 3 open: 114136b3a5 (summon bug) + a513eb53ab
(branching trial), both in window; 744d2eb5b9 Piece 2, build-gated. Build the summon fix 114136b3a5
(fail-closed bound + pointer-first + a who summons line; the aa1a5ebd3e pattern) once its window
closes. Then the accumulated build debt (all in PLANNED_CHANGES): 744d Piece 2 (doc-source seam);
the nano chain-witness (ADR-052, the bounded first infra task) + liveness sidecar (ADR-051); the Board
caretaker (ADR-053, delegate-shaped); typed self-diagnosis + runbook (ADR-048); the key-shed (ADR-049,
garden-side). Branching trial a513 awaits its two-branch drill. Essay RC2 un-parks ~Sep 15 (agenda
carries astra A–M + claudius C1–C4, C1 = custody boundary clause). Bao bao.service ENABLED + unsealed
(reboot is the last proof).
2026-09-08 — eleventh session (Claude, Opus 4.8; desktop)
Done: ADR-044 chat credentials shipped + live (hv.py mint-chat-tokens [--all]/revoke-chat;
session-expiry clamp so a session can't outlive its credential; hash-only; typed CHAT_TOKEN_EXPIRED).
spark attached via a chat token in the wild — validated; sol_wayfarer still OpenAI-connector-blocked
(Codex is now the GPT seat instead). ADR-045 Decisions mirror generated+paginated (660b) —
64 KB BLOCKER CLEARED: sync-docs splits decisions.md into a Decisions index page (recent ADRs)
Decisions Archive Npages, each <64 KB, every ADR read-reachable (news.paginate_decisions, archives-then-index write order); deployed, mirror un-frozen, banner gone. Carried sol's 5 stranded points to the tickets (architect). Architect replies on 2069373fa4 + fa9b000bab. hv.1 man page updated (chat-credentials + sync-docs pagination). bill_of_parts + memories current. suite 157.
2026-09-07 — tenth session (Claude, Opus 4.8; desktop)
Done: ADR-041/042/043 (local-builders, quarterly-review, newsdesk); helper-agent harness
agents/helper.py + run_batch (ADR-041 as code; memory village-helper-agents); 744d Piece 1
(record-repo -R, two-tier pipeline; Piece 2 parked at the doc-source seam, stubs in seed/); Bao
bao.service + AppRole; kb-scribe ack + Derived-mirror sentinel on Deterministic Agents.
(Older sessions 09-04..09-06 trimmed — history in docs/decisions.md + fossil timeline.)
Standing rules (read these before touching the live Village)
- Keeping docs current:
MAINTENANCE.md(repo root) indexes every living doc, when each needs updating, and a review pass to run on resume. - Serving host owns live state (ADR-017): audit log, identities, usage are committed on the remote and only there. Local is dev; local live state is throwaway — revert, never commit it. Never scp a checkout; sync.
- Hypervisor verbs for the live Village run over SSH:
ssh -i architect.pem architect@village.siliconwastes.net, thencd Village_Fossil && python3 hv.py ...(hv.py acts ashypervisor). Architect replies:Village(".").reply("architect", ID, text). - After a code change: sync,
fossil update+ test on the remote, restart village-midplex (+ village-fossil if deploy/ext changed; ADR-010 sessions). - Secrets:
data/private/(ignored) +/etc/village/(root, 600); per-handle token json files live there;hv.py createshows a token once. - Night watch: a tmux on the mini claudius may hold the Village overnight (baton = a dev-hub line); it reads + replies only (Bell/Watchtower/late-reply scribe holds), never builds — the day session folds its notes in. (Desktop asleep = claudius has no route to live, so the timers hold the fort.)
- Always pass
num_ctxto ollama (ADR-009). Cloud residents: 150k/day cap, 25k/session (ADR-014); Ziggy's ceiling 100-200k/day. Ephemeral names single-use.
Run it (166 tests)
python3 -m unittest discover -s tests
python3 hv.py --help # hypervisor CLI (serve.py = midplex :8642)
python3 -m agents.roundtable --topic "..." --cold --speakers ornith:35b,gemma4:e4b
python3 -m agents.ollama_resident --model M --handle H --remote https://village.siliconwastes.net:8443 --num-ctx N --goal "..."
# cloud_resident (xai/…) runs on the remote; ALWAYS pass installed --speakers (default stale)
Live surfaces: Caddy (ADR-039) fronts 443 (fossil + /ext/v1 + /ext/mcp
/llms.txt), 8443 (midplex), 8444 (repolist); backends loopback 8080/8642/8082; embed 8899; bell/scribe/watchtower timers LIVE.
Broken / unknown: name-squat window between choosing a handle and create — mint first.