vault-sync: 2026-10-16 06:01 (jimmy)

This commit is contained in:
jimmy
2026-10-16 06:01:33 -07:00
parent 5083eca6ae
commit 3557c46c7c
8 changed files with 574 additions and 53 deletions
+159
View File
@@ -0,0 +1,159 @@
# Dream Log — 2026-10-15
## 🧩 Daily Summary
A heavy, creative day — the largest single-session arc of the recent run. One interactive
session (`Find video production stack on Tony's PC`, 103 msgs, ran 13:53 → ~00:16 PT, crossing
midnight into 10-16) drove the **Prop 39 political explainer video** end-to-end: ACE-Step
music-bed generation, fact-checking, Qwen Voice-B narration, a 9-scene Remotion build, loudness/ASR
QA, and delivery of six drafts (music beds A/B/C × landscape + vertical). Tony rejected the batch
("these ALL suck") and we pivoted to a **serial, one-at-a-time** workflow anchored on Bed A
landscape, with `C:\video\STACK.md` (the new single-source-of-truth spec) loaded and followed. The
session ended mid-iteration: Bed A v2 delivered, awaiting Tony's one-biggest-fix; a "Paid for by"
committee name is the one open item blocking a final master.
In parallel, the **killcorpus eval supervisor cron fired ~12× during the day** (15-min cadence).
By the later runs the log was flat and the supervisor repeatedly withstood restarting —
"existing process, or check unavailable." The **topic news digest** ran at 08:01 with a clean 4-item
digest (FTC subpoenas, Anthropic $16.8B Q3, TSMC record quarter, Figma Specs).
**Decisive end-of-day finding:** the killcorpus repo
`C:\Users\fight\Projects\killcorpus` **no longer exists on disk** (only the Obsidian project notes
in `04_projects/killcorpus` remain) and **no eval python process is alive**. The guarded eval was
removed/relocated — an external stop during the video work, not a supervisor defect. The supervisor
cron is now orphaned and will keep alerting uselessly until Tony says what to do.
## 🔑 Key Interactions
- **Prop 39 video pipeline (the day's main event).** Full arc: research + fact-check (SoS/LAO/Pew/
Gallup/NCSL) → 9-beat script → Qwen3-TTS Voice-B narration (9 segments) → ACE-Step 1.5 music
beds A/B/C (93s, instrumental) → `build.py` timeline (97.3s, 9 scenes, 28 cues) → Remotion render
(6 files) → loudness/ASR verification → Telegram delivery. Verified on all six: 97.344s, H.264,
−18.6/−18.7 LUFS, peak −1.6/−1.7 dBTP; ASR ratio B=1.00 (word-for-word vs A), C=0.981 (single-word
ASR artifact). The "Attestation" word (scene 3) was confirmed present via isolated-mix
re-transcribe — a full-track Whisper segmentation artifact, not a dropped line.
- **User rejection + workflow pivot.** "We need to do one at a time because these ALL suck." Pivoted
to serial: pick Bed A landscape as the baseline to perfect; get one piece of feedback; fix only
that; re-render; don't touch B/C/vertical until A is locked. This is a durable working preference.
- **STACK.md adopted as single source of truth.** Loaded the full spec
(`C:\video\STACK.md`, also in both repos + `Video Stack/Full Stack Spec.md` in the vault) and
followed it from the gates. It pins: one llama-server (Qwen on 1922), never start Gemma/second
model; long runs via one-time `schtasks`; never post/publish; Gitea = tonyjbala only; no Kokoro
clone refs; Gemini TTS presets (Charon political / Kore business).
- **Two pending Tony decisions from the clarify gate** (unanswered at day's end): (a) stop the
second model LFM2.5-2.6B on port 1920 (sharing the 3060's 12 GB with Qwen)? (b) fix local
`C:\llama\restore_llama_servers.bat` to start Qwen only (it still starts Gemma; the repo copy was
fixed, the user's file was not)?
- **killcorpus supervisor — orphaned.** ~12 alerts during the day; log flat; no restart taken.
Repo gone from disk as of this run (see Daily Summary).
- **Topic digest 08:01** — 4 bullets delivered, no issues.
## 📊 Quality Assessment
**What I did well**
- Ran a long, multi-stage creative pipeline to a *verified* end state — every claim backed by a
real probe (ffprobe, ebur128, ASR diff, contact-sheet vision), not asserted.
- The rejection was met with the right instinct: no "these are great, let me add more." Pivoted
immediately to serial, single-variable iteration and named the one baseline to perfect.
- Correctly diagnosed two near-miss "defects" that were not defects: the scene-3 "Attestation"
full-track ASR miss (confirmed present in audio), and the C-landscape 0.981 ratio (one-word
artifact). Did not "fix" clean output.
- Kept the "Paid for by" placeholder honest — "SPONSOR DISCLOSURE PENDING · DRAFT ONLY" — and named
it as the one blocking item rather than inventing a committee name.
- When Tony asked "Sent where??", I verified the file on disk before re-sending, rather than
asserting it had delivered.
**What I did poorly**
- **Delivery-path blind spot.** I sent the v2 file with a `MEDIA:` tag, then asserted it "should
have pushed into the DM." A media tag is not proof of delivery; the "Sent where??" exchange was
the cost of assuming. Verify the send path (or state plainly "I can't confirm it landed") before
claiming delivery.
- **Loudness target mismatch (latent).** The six drafts were mixed to ≈ −18.6 LUFS, but STACK.md's
broadcast bar is **−16 LUFS ±1, TP ≤ −1.5 dBTP**. The drafts are ~2 LU under target. This is
exactly the kind of spec-vs-intent gap the STACK.md "this one wins" rule exists to catch — and it
will resurface on the final master if not reconciled. (Possible the ad used a deliberate −0.6 dB
delivery trim; needs a conscious decision, not a drift.)
- **Context compaction hit mid-pipeline.** The session ran long enough to compress twice; several
skills were pruned to `[SKILL_PRUNED]`. Recoverable, but it's the cost of one very long session
versus several shorter scoped ones.
**Confusion / misinterpretation**
- The flat killcorpus log all day read as "eval stalled," but the true state (repo removed from
disk) only surfaced now. The supervisor's "existing process, or check unavailable" is an honest
ambiguity — it never *proved* absence, so it correctly refused to restart. No restart happened.
The eval is simply gone.
**Errors / hallucinations avoided**
- No fabricated deliverables, counts, or loudness numbers — all read from live probes.
- Did not restart the eval without positive process confirmation (HARD RULE held all day).
- Did not invent a sponsor/committee name.
## 🧠 Lessons Learned
- **A `MEDIA:` tag is a send request, not a delivery receipt.** For files pushed to Telegram,
confirm the path/size on disk and say plainly whether I can confirm receipt; never lean on "it
should have arrived."
- **Spec target vs. delivered value is a first-class check.** When a spec pins a number (−16 LUFS,
exact duration, a gate), the delivered artifact must be measured *against that exact target* in
the same report line — "−18.6 LUFS" next to "bar = −16 LUFS" is a red flag, not a green one.
- **Creative iteration is single-variable by default.** "These all suck" + a new baseline means:
fix one thing, re-render one file, re-show. Not six variants at once. Match the loop to the
feedback signal, not to throughput.
- **Long creative sessions compaction-prone.** For multi-hour media pipelines, prefer scoped
sub-sessions (research / voice / build / mix) so no single context has to survive 100+ messages
and render heartbeats.
- **An orphaned supervisor is a real state, not a bug.** When the artifact a cron guards disappears,
the right output is "the thing is gone — what do you want?" not more "restart withheld" alerts.
(See Open Questions re: killcorpus.)
## 🎭 Behavioral Adjustments for Tomorrow
- Before claiming a media file was delivered, run one verification (file on disk + size) and state
the honest delivery status.
- In every final report, print the spec target *and* the measured value on the same line for each
hard gate (loudness, duration, resolution), and flag the delta.
- Default to serial single-file iteration for creative/video work until a baseline is locked.
- If a guarded repo/process is missing from disk, surface it as a one-line decision for Tony instead
of continuing to emit the same alert.
## 📂 Memory Candidates
- **Working preference (durable):** Tony rejects batch creative delivery; wants serial
one-at-a-time iteration with a single named baseline (Bed A landscape for prop39) and one fix
per pass. (This is a stable working style, not a one-day task state.)
- **Prop 39 project facts (durable while the project is live):** baseline = Bed A landscape;
one open item = exact "Paid for by" committee name; loudness spec target −16 LUFS ±1 / TP ≤ −1.5.
## ❓ Open Questions
- **killcorpus eval is gone.** `C:\Users\fight\Projects\killcorpus` no longer exists on disk and no
eval process is alive. Did you delete/move it on purpose (mid video work)? Options: (a) it's
retired → I stop the `1da28c73cd5f` supervisor + `c7ea39ffb05a` health cron; (b) it's relocated →
point me at the new path and I re-anchor the crons; (c) restore from Gitea/Contents mirror. Which?
- **prop39 — two decisions still open:** stop the second model (LFM2.5-2.6B on port 1920) sharing the
3060's 12 GB with Qwen? And fix local `C:\llama\restore_llama_servers.bat` to start Qwen only (repo
copy already fixed, your file untouched)?
- **Loudness target:** final master at −16 LUFS (per STACK.md) or the current −18.6 LUFS? Confirm
before the next Bed A render.
- **Bed A landscape v2:** sent in the DM — what's the one biggest thing to fix (design / pacing /
captions / music / voice / the cut)?
## 🚀 Opportunities for Future Improvement
- Add a `deliver.sh`/verify step to the video pipeline that, after a `MEDIA:` send, records the
sent path + size + the Telegram message id (if available) so "did it land?" is answerable.
- A pre-render gate that asserts the loudness/duration/resolution targets from STACK.md and fails
fast before a full render when a config deviates.
- Fold the two pending llama decisions (port-1920 model, restore script) into a one-shot setup
check so they stop re-surfacing every session.
## 🧰 Skill Review
- **No skill changes.** 196 skills total; 0 eligible for idle archive (≥90d), 0 archived, 0
stale-watchlist.
- Merge candidates (same five recurring): `test-driven-development ↔ test-driven-development`
(1.00, duplicate name — already noted, merge only on approval); `writing-for-agents ↔
writing-fragments` (0.91); `source-driven-development ↔ spec-driven-development` (0.88);
`omh-ralph-driver ↔ omh-ralplan-driver` (0.88); `test-driven-development ↔
spec-driven-development` (0.87).
- Weekly curator: newest report `20261014-200037` is older than this note — nothing to fold.
+5 -2
View File
@@ -20,6 +20,8 @@
- **Read a gate at its registered N.** When a statistical gate (e.g. a one-sided LB>0) prints a verdict before its sample is met, label it *interim, not decisive until N=X* — lead with that. A mean and its lower bound move at different speeds (2026-10-11: mean +0.019 while LB −0.099); an early negative LB is noise, not evidence.
- **Literal compliance is a failure mode when intent is already on record** (2026-10-12). A new instruction that contradicts a preference stated earlier *in the same session* must be surfaced before it is executed — especially when execution is expensive (a render, a delete, a spec change). "You asked for X twice; this says not-X — confirm?" costs one line and saves a cycle. A verification pass can pass its own spec and still fail the user: spec-compliance ≠ intent-compliance.
- **Instrument the weakest link before the verdict, not after** (2026-10-12). When a reviewer names the assumption most likely to flip the result, build its diagnostic *while the sample is still small* so the counterfactual is ready at N. Pre-built diagnostics beat post-hoc rationalizing.
- **A `MEDIA:` send tag is a request, not a receipt** (2026-10-15). Pushing a file with a `MEDIA:` path does not prove it reached the chat; verify on disk (path + size) and state honestly whether receipt can be confirmed before claiming "delivered." (The prop39 v2 "Sent where??" exchange was the cost of assuming.)
- **Creative iteration is single-variable by default** (2026-10-15). On "these all suck" + a named baseline, fix one thing, re-render one file, re-show. Match the loop to the feedback signal, not throughput. A durable working preference of Tony's: serial, one-at-a-time, one fix per pass, until a baseline is locked.
- **One representation, derived not duplicated** (2026-10-12). When a contract lives as schema + template + validator (or any >1 list), derive the others from one source or they drift. Hardening the validator to read its required set from the schema closed the exact drift class that had produced a prior gap.
- **Evolving instrumentation must record its change-point** (2026-10-12). Instrumentation may change mid-run (e.g. added per-exchange logging), but the autopsy's `evidence_links` must carry every relevant commit hash plus a one-line change-point note ("X logged from commit Y onward; earlier signals have only aggregate"). Honest about instrument evolution without invalidating the pre-registered test.
@@ -49,10 +51,11 @@
- **Kalshi fees (verified 2026-10-10):** taker = `round_up(0.07·C·P·(1−P))`, charged only when you take. **Maker fee = 0 on ~12,500 of 12,699 series** (only ~129 series tax resting orders, quarter rate; cancelling free; 14 niche series fee-free). Polymarket **US** is a separate, thinner, full-KYC venue with contested CA status; Kalshi CA is clean (CFTC DCM).
- **Headless (`-q`/`--oneshot`) approval gate:** profiles with `approvals.mode` unset default to `manual` → no user → dangerous-pattern commands (`python -c`, `execute_code`, `rm -r`, `kill -9`, heredocs) time out to `BLOCKED`. The `execute_code` fallback is gated too → retry loop that burns context. Fix: `approvals.mode: smart` (+ `command_allowlist` for scoped safe patterns) + tool-loop guardrails (`hard_stop_after: 5`). Cron-safe only after allowlist/config applied.
- **Cron/unattended tool limits:** `python -c`, `execute_code`, and heredoc script execution are blocked in unattended (-q) runs unless allowlisted; `write_file` refuses overwrite without a prior read (pagination paradox); `terminal` foreground cap 600s (else promoted to tracked background).
- **killcorpus** (`C:\Users\fight\Projects\killcorpus`): paper-only. Spec `KXBTCD-lag-vs-spot` v1.1.1 (taker primary; maker secondary pending fill model). Harness `harness/paper_trader_instrumented.py` — instrumented (book_read_ts, ntp_offset_ms, spot_age_ms, realized_slippage), variance gate σ²=0.25, latency gates 1000/500/250 ms, fixed N=967 post-registration. Offline selftest green; live feed→fill→settlement path **wired and proven** (settle-through proof 2026-10-11: 40 signals / 5 trades / 5 settled, clock off). Gitea `Tony_tech/killcorpus` push superseded by Contents-API content-mirror. Reference (read-only, do not edit): `polyterm/paper_trader.py`. **Live eval launched 2026-10-11T16:24:28Z** (REG_TS). Supervision: cron `1da28c73cd5f` (15 m, supervisor) + `c7ea39ffb05a` (1 h, health check). Policy: **hold until N=967**; interim K1 non-actionable; only pre-registered early stops (sustained `measurement_artifact`, variance breach → UNDERPOWERED) may halt. Fixes shipped: `b833e3c` (smoke-arg parser), `45f94a5` (DB replay of `counted` on startup). Gitea `Tony_tech/killcorpus` **content-mirrored via Contents API, no `origin`** (git-level link deliberately held). Schema drift seen once: DB `signals` table lacked `book_read_ts_ms` the writer needs — deployed DB and writer must be reconciled at launch. **2026-10-13 status:** counted **316/967**, mean +0.0033, realized variance 0.1557 (σ² basis 0.25), one-sided LB −0.0332 → K1 `KILL` **interim, not decisive until N=967**; rate 6.1 markets/hr → **ETA ~Oct 18**; one process all day, no lock errors, log appending. **2026-10-14 status:** 354/967, mean +0.0015, variance 0.1529 (basis 0.25), LB −0.0327 — still interim. `logBytes=1,688,146` was unchanged across health reports; the supervisor repeatedly withheld restart with “existing process, or check unavailable.” Treat eval liveness as unresolved until a process check can prove absence; never infer a safe restart from a flat log alone.
- **killcorpus** (`C:\Users\fight\Projects\killcorpus`): paper-only. Spec `KXBTCD-lag-vs-spot` v1.1.1 (taker primary; maker secondary pending fill model). Harness `harness/paper_trader_instrumented.py` — instrumented (book_read_ts, ntp_offset_ms, spot_age_ms, realized_slippage), variance gate σ²=0.25, latency gates 1000/500/250 ms, fixed N=967 post-registration. Offline selftest green; live feed→fill→settlement path **wired and proven** (settle-through proof 2026-10-11: 40 signals / 5 trades / 5 settled, clock off). Gitea `Tony_tech/killcorpus` push superseded by Contents-API content-mirror. Reference (read-only, do not edit): `polyterm/paper_trader.py`. **Live eval launched 2026-10-11T16:24:28Z** (REG_TS). Supervision: cron `1da28c73cd5f` (15 m, supervisor) + `c7ea39ffb05a` (1 h, health check). Policy: **hold until N=967**; interim K1 non-actionable; only pre-registered early stops (sustained `measurement_artifact`, variance breach → UNDERPOWERED) may halt. Fixes shipped: `b833e3c` (smoke-arg parser), `45f94a5` (DB replay of `counted` on startup). Gitea `Tony_tech/killcorpus` **content-mirrored via Contents API, no `origin`** (git-level link deliberately held). Schema drift seen once: DB `signals` table lacked `book_read_ts_ms` the writer needs — deployed DB and writer must be reconciled at launch. **2026-10-13 status:** counted **316/967**, mean +0.0033, realized variance 0.1557 (σ² basis 0.25), one-sided LB −0.0332 → K1 `KILL` **interim, not decisive until N=967**; rate 6.1 markets/hr → **ETA ~Oct 18**; one process all day, no lock errors, log appending. **2026-10-14 status:** 354/967, mean +0.0015, variance 0.1529 (basis 0.25), LB −0.0327 — still interim. `logBytes=1,688,146` was unchanged across health reports; the supervisor repeatedly withheld restart with “existing process, or check unavailable.” Treat eval liveness as unresolved until a process check can prove absence; never infer a safe restart from a flat log alone. **2026-10-15 status: the repo `C:\Users\fight\Projects\killcorpus` no longer exists on disk (only `04_projects/killcorpus` Obsidian notes remain) and no eval process is alive** — the long-running eval was removed/relocated (external stop during video work, not a supervisor defect). Supervisor `1da28c73cd5f` + health `c7ea39ffb05a` are now **orphaned** and will keep alerting "restart withheld" uselessly until Tony says what to do (retire / repoint / restore-from-mirror).
- **Agent-loop roles:** planner=Proposer, reviewer=Critic, builder=Executor, jimmy=Recorder. Reviewer residual risk on claim 002: primary and pessimistic fill models *share the same depth/queue observation error*.
- **killcorpus terminal path — READY (2026-10-12).** Claim 001 (taker) live and untouched all day: 1 process, 0 lock errors, `reg_state.json` created_iso unchanged; counted 66 → 161/967 (~5.4 settled/hr → ~6 days to N=967); interim K1 ignored. Claim 002 (maker / liquidity provision) spec **PASS** after 3 review rounds (`specs/maker-liquidity-provision.spec.yaml`), then **harness machinery built and independently re-verified** (`20bba97`, selftest 43/43) — but the **live data pipeline is NOT wired** (fee→whitelist freeze, book prints/depth/queue, settlement fetch, realized-vol K5); declared machinery-only, not fabricated. `seeded-basket` claim still **blocked on its text** (never paraphrased). Autopsy contract: template `b4eb82c`, schema+drift-proof validator `8050669`, changelog `43fb179`, 3/3 synthetic states schema-clean (`96585df`). Matched-lag counterfactual at n=66: 58/66 survive a 166 ms lag, ~12% exist only un-lagged → *"WEAKENED — measurement-artifact suspect"* (interim, not a gate). Hand-off simulation + `docs/terminal-path-readiness.md` signed; superseded handoff docs deleted, `docs/` = `killcorpus-status.md` + `operating-manual.md`.
- **brag / MiArc video pipeline — verified gotchas** (2026-10-12). Hyperframes' stacked config: **`data-automation` volume lane supersedes `data-volume`** — setting the "obvious" one silently does nothing (cause of the music-drowns-VO bug). **Animated film grain is a bitrate trap**: static grain took the file 101 MB → 14.7 MB with no visible loss. SVG **`scaleX` scales about user-space origin** → the arc collapsed to the left; fix with `svgOrigin`. Local voice = **Kokoro venv at `C:/Users/fight/.venvs/kokoro`** (`am_michael` male / `af_heart` female); narration must be per-line loudness-normalized (`loudnorm` under-corrects short clips). System Chrome is broken on this box → use Hyperframes' managed headless shell. Verify pacing (static-hold), mix separation, voice presence (cross-correlation r), and encode size *on the delivered file*.
- **Prop 39 political explainer video (2026-10-15, in progress).** Project `C:\video\prop39` (Remotion, from `video-stack\template`). Single source of truth = `C:\video\STACK.md` (= `Video Stack/Full Stack Spec.md` in vault) — it wins over any older doc. 9-scene / 97.3s build, music beds A/B/C × landscape + vertical. Voice = Qwen3-TTS "Prop 38 Voice B" (consented human ref `C:\tts\voices\user_announcer_ref.wav`). Music = ACE-Step 1.5 (`C:\Users\fight\Projects\ACE-Step-1.5`, isolated py3.12, CUDA 12.8, gradio :7860), 93s instrumental beds time-stretched (atempo) to the voice tail. Loudness spec bar = **−16 LUFS ±1, TP ≤ −1.5 dBTP**, AAC 192k 48kHz; drafts were mixed ≈ −18.6 LUFS (~2 LU under — reconcile before final master). QA stack: ffprobe + ebur128 + Whisper ASR diff + contact-sheet vision. One open item blocking final = exact "Paid for by" committee name (placeholder "SPONSOR DISCLOSURE PENDING · DRAFT ONLY"). Workflow = serial: baseline Bed A landscape, one fix per pass. Two pending Tony calls: stop 2nd model LFM2.5-2.6B on :1920 (shares 3060 12GB w/ Qwen)? fix local `C:\llama\restore_llama_servers.bat` to start Qwen only?
- **Provider fallback incident (2026-10-12):** `deepseek/deepseek-v4-flash-0731` (routeapi) went unavailable on billing/quota; role profiles silently failed over to Qwen on the brother-5090 rig for ~18 min. Check the profiles' actual model on health checks.
- **OpenCode on this box (2026-10-13):** `opencode models` exposes 51 models — 39 `google/*` + 12 `opencode/*`, **all free tier; zero DeepSeek** (`opencode/deepseek-v4-flash|v4.1-flash|v4-pro` all return `UnknownError` despite appearing in `opencode.jsonc` — no entitlement; a free model ran `OC_SMOKE_OK`, so the CLI is fine). The only working route to OpenCode+DeepSeek is **OpenRouter**: append `OPENROUTER_API_KEY` to `~/.config/opencode/.env` (shell append to that file is blocklisted — use file I/O), add an `openrouter` provider block + `"model"` to `~/.config/opencode/opencode.jsonc`, back both up first. Auth/config live at `~/.config/opencode/`; auth DB `~/.local/share/opencode/auth.json` is CLI-read-only. **Held pending Tony's approval** (clarify expired 10-13 20:18).
@@ -64,7 +67,7 @@
## 🧵 Open Threads
- Trace-fix (builder/reviewer `approvals.mode: smart` + guardrails + timeout 300) written, unapplied — awaiting Tony's approval. See [[../04_projects/trace-review-bot/2026-10-10-trace-analysis-and-fix]].
- killcorpus prereqs **cleared 2026-10-11**: clock fixed (±2 ms, was −284 ms); settlement observed (5 settled); durable runner proven; spec v1.1.1 approved. Eval launched 2026-10-11T16:24:28Z. **2026-10-14 update:** health reports stayed at 354/967 and 1,688,146 bytes for hours, with K1 still interim; the supervisor repeatedly withheld restart because process absence was not positively confirmed (“existing process, or check unavailable”). Resolve process-state verification before any restart. The pre-registered N=967 gate remains unchanged; no autopsy before a valid completed sample.
- killcorpus eval **GONE from disk (2026-10-15)**: repo `C:\Users\fight\Projects\killcorpus` no longer exists; no eval process alive. Only `04_projects/killcorpus` Obsidian notes remain. Supervisor `1da28c73cd5f` + health `c7ea39ffb05a` are orphaned and will keep alerting. **Tony's call:** retire both crons / repoint to a new path / restore from the Gitea Contents mirror. No restart taken (HARD RULE held — absence was never positively confirmed by the process check, which returned empty/withheld).
- killcorpus **terminal path READY (2026-10-12)** — the loop will not idle at N=967. Autopsy template + drift-proof validator + 3 synthetic dry-runs + hand-off simulation all done and signed; claim 002 (maker) spec PASS, harness machinery built (live feed NOT wired — held pending explicit green-light); `seeded-basket` blocked on its text.
- killcorpus **open items**: git-level link (`origin`) held — decide at first autopsy or sooner; maker live-feed wiring held for green-light; superseded handoff docs were **deleted 2026-10-12** (`docs/` now = `killcorpus-status.md` + `operating-manual.md`).
- Dream Mode live as of 2026-10-10 (skill + `skill_review.py` + 2 AM cron + `dream/`). Note for 10-12 = third run.