Files
2026-10-15 06:01:00 -07:00

18 KiB
Raw Permalink Blame History

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.

  • Factual placeholders do not authorize synthetic testimony. A draft can require real values for brackets yet still invent a first-person customer journey or professional credential; do not generate or publish such claims without an actual authorized source.

  • 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 resource lifecycle on the restart path, not just the happy path. The recovery report must distinguish “PID found” from “process query failed/unavailable”; an ambiguous combined alert preserves safety but leaves no actionable next step.

  • 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.

  • A prescriptive tool error is an instruction, not an obstacle (2026-10-13). When a tool fails by naming its own fix ("content is required — use action='remove'", "read the file first"), change the argument on the next call. Re-issuing the identical call is the most-flagged recurring error in this agent's own traces (2026-10-13 trace-miner: the write_file pagination refusal alone hit 172 sessions; blocked-command patterns another ~50) — treat it as a standing behavioral defect, not an accident. Never retry unchanged.

  • Artifact in the message, decision in the prompt (2026-10-13). Any approval-gated write must ship its exact diff/payload in the reply body; the approval prompt is a bare yes/no. If the reviewer has to open a prompt to see what they're approving, the 60-min window burns and the work stalls a day — that is exactly how the OpenCode+DeepSeek request died on 10-13 with zero writes.

  • Name the absence of a gate instead of inventing a milestone (2026-10-13). "When do we go live?" for a paper-only research artifact is a design question, not a status question. The honest answer is the structural one ("no go-live gate exists by design; here are the missing pieces"), followed by an offer to write the gate — that preserves honesty and momentum.

  • Third-party-agent text pasted into a session may be addressed to a different worker (2026-10-13). Check the addressee before acting on imperative phrasing; a relayed recommendation can look like a direct instruction to Hermes.

  • Match the destructive action's scope to the promise, then prove it (2026-10-13). A "strip 2 only" request was honoured as exactly one entry replaced (7 → 7 entries, −18 chars), with the before/after shown. Scope discipline like this is enforced by showing the diff, not by asserting restraint.

🛠️ 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. 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.
  • 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.
  • 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).

🧰 Skills / Tooling Notes

  • Skill-review telemetry (2026-10-15): 196 total skills; 0 eligible for idle archive, 0 archived, 0 stale-watchlist. The same five merge candidates remain; description review confirms the duplicate-name test-driven-development pair shares the same TDD purpose but has complementary coverage (strict iron law vs repository discovery/browser verification), so merge only with approval. The 2026-10-14 curator report records 6 auto-archives + 3 reactivations among 47 checked; LLM consolidation was disabled and run.json lists no archive names.
  • Recurring-defect reality check (updated 2026-10-14 trace miner): 379 sessions / 27,588 messages → 25 findings. The same behavioral error dominates: paginated write_file refusal in 230 sessions; terminal script-execution blocks in 38; execute_code blocks in 27. Change the call after a prescriptive error; this is one behavioral fix, not an instrumentation shortage. The miner also logged 12 self-corrections across 3 sessions.
  • 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 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 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.
  • OpenCode + DeepSeek — PENDING Tony (opened 2026-10-13 19:16). Needs: (a) which DeepSeek as default — v4.1-flash (matches Hermes default), v4-pro, r1, or all three with none set; (b) go / key-only / show-diff-first. Exact diff is recorded under 🛠️ Technical Notes. No writes made.
  • killcorpus "ready for capital" gate — offered 2026-10-13, unanswered. Draft a formal in-repo gate spec (doc only: K1–K5 at pre-registered N → matched-lag clean → replication on a second regime + sample → live-fill-validated execution path with verified fee schedule → risk limits + kill-switch → capped live tranche with pre-registered stop)? Or keep the corpus paper-only with no written gate?
  • killcorpus minor open item: equity + stats tables declared but never written (variance logged textually). Fix at a natural gap vs after N=967 — Tony's call.
  • Search OS Phase 5 authenticity gap (2026-10-14): the example.com/test report's Reddit/Quora drafts use unsupported first-person resident/expert personas despite placeholder factual fields. No publishing is evidenced. Add a source-and-authorization gate before drafts are treated as publishable.
  • Sorter cron gap (open ≥2 reports): the daily Sorter triage reads 00_system/user-profile.md, which does not exist (vault root is C:\Users\fight\Documents\Obsidian Vault). Create the file or repoint the skill.
  • Duplicate skill: test-driven-development exists twice at similarity 1.00 (software-development/ and software-development/agent-skills/). Proposed for consolidation; not merged unattended.