Files
personal-agent-os/memory-systems/agent-os/dream/insights.md
T
2026-10-13 06:00:58 -07:00

46 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Insights — Dream Mode Consolidated Learnings
> Living, de-duplicated knowledge base. Themes, not an append log. Newest evidence strengthens or replaces existing entries.
> Opened 2026-10-10 (first Dream Mode run).
## 🏛️ Standing Principles (epistemics & discipline)
- **Pre-registration is load-bearing.** For any falsification loop ("what died and why"), kill criteria + cost assumptions must be timestamped *before* the run. Post-hoc autopsies re-import survivorship bias through the writer. Schema must force the field.
- **The critic must be a different engine than the proposer of the claim.** Hard-wiring one model (even a strong one) as permanent critic creates correlated blind spots → sycophancy collapse. Rotate roles (planner proposes, reviewer critiques — separate profiles count).
- **Optimize for honest falsification, not PnL.** Success metric = cleanly-falsified claims per week at bounded cost. PnL is a rare lagging output; chasing it un-disciplines the only durable asset.
- **Measurement integrity gates the experiment.** If the instrument is broken (clock skew, unmeasured latency), the run is void — fix the instrument *before* running. Refuse to start a clock that would void every result.
- **The durable asset is failures-with-autopsies**, not strategies. Wins are published (survivorship bias + marketing); a fee-adjusted record of what died and why is scarce and never has to be re-learned.
- **Honest-gap ledger.** Every build report names what's wired, what's offline-only, what remains. Never claim live behavior that hasn't run.
- **Name which cost/branch you're invoking before concluding.** E.g. a *taker* fee says nothing about a *maker* edge's viability.
- **A known root cause with a cheap fix should not survive the day it was found** — diagnose → propose → ask in the same turn; apply on approval.
- **A defect in the instrument is not a death of the claim** (strengthened 2026-10-11). When a claim fails because the *spec/test* was wrong, the honest record is `withdrawal (never-tested)` — never an autopsy with a cause of death. Filing a death for an unrun claim is the corpus's own survivorship-bias back door. The schema must carry a `never-tested`/`withdrawn` status so a documentation defect can't be written up as evidence of death.
- **Durable-run integrity triad** (2026-10-11). Any multi-day/unattended run must: (a) keep its progress counter in the durable store and **replay it on startup** (in-memory `counted` reset → the run can never reach its N, silently); (b) key liveness/stall detection on a **quantity that changes when healthy** (log *file-size growth*, never "last log line unchanged" — constant verdict lines make that a false stall); (c) make the recovery action **idempotent and non-leaking** ("confirm zero live before starting one" — a restart-on-stall cron that never reaps the prior process compounds the fault it exists to repair).
- **A cron's own recovery action is a code path that needs testing.** Treat every self-healing action as a first-class artifact: unit-check the idempotency guard and the resource-lifecycle on the restart path, not just the happy path.
- **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.
- **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.
## 🛠️ Technical Notes
- **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.
- **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*.
- **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.
## 🧰 Skills / Tooling Notes
- **brag skill split (2026-10-12, done by hand on approval):** official hub skill `brag` installed as authority (`hermes skills install official/creative/brag`); local skill renamed `brag-launch-video` → **`brag-local-addendum`** and slimmed 34.1 KB → 15.9 KB (box-specific deltas only). Lint: a frontmatter-only rename is invalid — skill name must match its directory.
## 🧵 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 **live** since 16:24:28Z, accruing toward N=967. Next gate = a valid run at N=967 → first autopsy (kept/killed/parked/inconclusive). Nothing else halts it except the pre-registered early stops.
- 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.