vault-sync: 2026-10-14 11:24 (leonard)

This commit is contained in:
2026-10-14 11:24:10 -07:00
parent 1c08293902
commit d3a3086e21
30 changed files with 2942 additions and 518 deletions
+30 -1
View File
@@ -22,18 +22,42 @@
- **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.
- **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.
- **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-13):** 201 skills, 0 eligible for archive, 0 stale-watchlist; merge candidates flagged were mostly false positives (pairs that share a domain but not a purpose — `source-driven-development`/`spec-driven-development`, `writing-for-agents`/`writing-fragments`, `omh-ralph-driver`/`omh-ralplan-driver`). The one real hit is a **duplicate name**: `test-driven-development` at similarity 1.00 across two directories.
- **Recurring-defect reality check (2026-10-13 trace miner):** 305 sessions / 21,833 messages → 25 findings, and the top finding by an order of magnitude is *the same* behavioral error in three tool families — ignoring a prescriptive tool error and re-issuing the call (`write_file` pagination refusal 172 sessions; `terminal` blocked-command 32+10+6; `execute_code` blocked 26). One behavioral fix, not more instrumentation.
- **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
@@ -43,3 +67,8 @@
- 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.
- **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.