# Session Log -- 2026-08-02 ## Summary Built the idle-draft writing-pipeline tooling (driven from the writing/oreillyconsulting session; full narrative log lives there): extended `agent-subscriptions`, ported `score-paragraphs` from GOES, and created `idle-draft` — a cron dispatcher spending idle subscription capacity. Six commits, all implementation by Sonnet subagents, every test suite re-run by the orchestrator before commit. ## Decisions - Decision: `elapsed_pct` is null when a window lacks a reset timestamp (MiniMax v1 fallback); consumers fail closed -- Rationale: never assume pacing data that isn't there. - Decision: idle-draft replicates claude-profile's provider.env parsing instead of shelling out to claude-profile -- Rationale: claude-profile has interactive pickers and WezTerm theming; a headless cron dispatcher needs neither. - Decision: per-(work type × provider) model/effort config, precedence entry > work-type > profile -- Rationale: owner wants MiniMax at elevated effort to offset capability gap. ## Gotchas Discovered - **[idle-draft]** Symptom: valid citations like `SPEC.md:1-80` rejected as dead paths -- Fix: strip trailing `:\d+(-\d+)?` before existence check (pilot #1 catch). - **[score-paragraphs]** Symptom: hash-skip branch structurally unreachable; scored paragraphs never re-examined, `--force` ineffective (bug in goes original too) -- Fix: documented as known limitation in spec; port-not-rewrite mandate. - **[claude-cli]** Symptom: needed the valid `--effort` set -- Fix: pass a bogus value with `-p ""`; the CLI errors locally listing low, medium, high, xhigh, max (no API call). - **[idle-draft]** Symptom: killed dispatcher orphans claude children; deterministic `.tmp` names collide with the next instance -- Fix: start_new_session + SIGTERM/atexit process-group kill; per-invocation `.tmp.` names; startup sweep of stale tmp files. ## Key Context - New scripts: `idle-draft` (185 test assertions), `score-paragraphs` (57); extended `agent-subscriptions` (33). All spec-first, all offline-testable, symlinked to ~/sbin. - Deployment config/state live in `~/dev/claude/writing/oreillyconsulting/` (see that repo's CONTEXT.md for pipeline operations). - Pre-existing uncommitted work in this repo (auto-draft, bg-model-call, wait-for-version, README.md) deliberately untouched — commits were pathspec-limited.