Daily — 2026-06-17 (4 follow-up loops re-parked,
updated: 2026-06-18
What happened
- Heavy autonomous fleet day, mostly self-healing. Four same-issue follow-up loops completed and re-parked at
awaiting_promotion: #642 (onpolicy-matchedlr-rank-isolation — interp + clean-result ensembles both PASS), #545 (metric-race, after a 6-OOM grind that pivoted to a subprocess-isolated vLLM worker — the genuinely-correct fix), #654 (length-matched-dummy-query-control, a 0.5-GPU-h cheap-band auto-run folded into the parent), #653 (rank-ladder read/write — clean-result critique PASS, methodology doc generated). - #656 (infra) filed + auto-completed per Thomas's PM-session directive: the GCP auto-lane now walks a cost-ordered fallback ladder (on-demand A100-80 → on-demand A100-40 → spot A100-80 → spot A100-40 → SLURM → RunPod terminal rung), reversing the old no-auto-RunPod invariant. Landed in CLAUDE.md +
backends/gcp.py+ router tests. - #653 evening: Thomas manually kicked off a new same-issue follow-up loop (
install-validated-reladder) to fix the parent's 4 known defects (dose-to-target install with a per-cell floor, restored full-FT rung, upload per-cell install completions, ≥2 seeds on headline cells). - #651 blocked, needs_user: 5th HF Hub 504 gateway timeout after the dispatcher recovery cap exhausted (~13 h of intermittent Hub failures during multi-arm activation extraction).
- In-flight workflow hardening (already merged today, not by this run):
verify_task_body.pychecks 22/23 (#537, figure-SHA-vs-Reproducibility-commit consistency + HF revision-pin existence); multiple #653 GCP-salvage fixes (setsid+sudo PATH loss, pgrep self-match, subprocess decode, branch-pinned SLURM guard) auto-applied via the workflow-fix-on-bug protocol.
Applied workflow improvements
- Target:
.claude/skills/issue/SKILL.md— what: harden the Step 9a-quater methodology-doc no-secrets pre-scan to$REPO_ROOT-absolute paths — commit:04769f767bWhy: #654 sessiona9e2d80e05:19 — the documented barescripts/check_no_secret_shaped_strings.pyinvocation, run from a worktree (or after a removed-dirgetcwdmiss), resolved to/scripts/check_no_secret_shaped_strings.py: [Errno 2] No such file or directory(exit 2). Self-recovered 6s later by re-running with$REPO_ROOT, but the doc itself taught the fragile form. Matches the project's standing absolute-path discipline forscripts/...invocations. Applied edit:Lint gate (`.env` content — with the canonical scanner: - `uv run python scripts/check_no_secret_shaped_strings.py docs/methodology/issue_<N>.md` - (exit 0 = clean, exit 1 = hit). Do NOT use `redact_for_gist.py` for + `uv run python "$REPO_ROOT/scripts/check_no_secret_shaped_strings.py" "$REPO_ROOT/docs/methodology/issue_<N>.md"` + (exit 0 = clean, exit 1 = hit). Use `$REPO_ROOT`-absolute paths — a + bare `scripts/...` resolves against the orchestrator's cwd, which on a + worktree (or after a removed-dir `getcwd` miss) is NOT repo root and + resolves to `/scripts/...: No such file or directory` (incident #654, + 2026-06-17, self-recovered after a retry). Do NOT use `redact_for_gist.py` forworkflow_lint.py --check-references+--check-asks): both PASS.
Other problems & notes
- Auto-followup expectation mismatch (#653, session
33364133). Thomas: "run a followup to fix all the problems with this experiment, actually i feel like an automatic followup shouldve run." Diagnosis was correct: the free 0-GPU follow-up (epm:free-analysis-followup-run, Step 9a-ter) did fire, but the GPU-backed follow-up machinery (follow-up-proposer + cheap-band auto-run) lives at Step 10, which only runs after the user promotes — and #653 is parked atawaiting_promotionwaiting on Thomas. Held — judgment call: whether fix-up follow-ups should auto-propose/run before the promotion gate is a deliberate-gate-semantics / high-blast-radius design question, not an obvious bug. Suggested action: decide with Thomas whether the proposer should run at theawaiting_promotionpark point for flawed experiments (so cheap same-question fix-ups auto-fire pre-promotion), or whether promotion-first is intended. - Research-idea misroute (#655, PM session
07948087). A new exploratory idea ("Do persona/trait SAE features persist across token positions?") was filed as an EPS[exp]task; Thomas: "No I want you to add it as a research idea in the external research idea store" (~/personal-assistant/research-ideas). It was added there correctly after the correction. Held — judgment call: the boundary between external research-idea store vs EPSproposedtask vsdocs/research_ideas.mdisn't crisply defined in the routing rules; guessing a boundary risks misrouting future captures. Suggested action: Thomas defines the routing rule, then it goes intoresearch-pm.md/ the "Routing experiment intent" section. Also: #655 still lingers as akind: experimenttask in the EPS tree — Thomas wanted it only in the external store; considertask.py set-status 655 archived(held: status mutation needs explicit ask per /daily rules). - No
task.py set-backendsubcommand (PM session07948087). Flipping #654 to RunPod required hand-editingbackend:frontmatter ("Noset-backendsubcommand and #654'sbackendis null"). Held — judgment call: adding atask.pysubcommand is a public-API/contract change → architectural, needs greenlight. Suggested action: if backend-flipping recurs, addtask.py set-backend <N> <lane>(+ a workflow event), with Thomas's OK. gcloud logging readdead-end recurred despite being documented (#642, sessionse4d93701/870d603c, ~4+ retries × 2 sessions). Orchestrator triedgcloud logging read 'resource.type="gce_instance"...'to inspect a GCE instance and gotPERMISSION_DENIED: Permission denied for all log views(eps-router@ SA has no log-view IAM); recovered via SSHtail. The lesson IS already ingotchas.mdL52 (buried in a #640guestTerminateentry) — so this is a discoverability gap, not a missing rule. Suggested action (low priority): lift it into a short standalone greppable line if it recurs again; not worth a duplicate now.- HF Hub extract-dispatcher has no 429/504 rate-limit backoff (#651). Activation extraction over 40+ adapter cells hammered the Hub API →
429 Too Many Requests (2500/5min)killed the dispatcher pid (recovered via warm-cache restart), then a5045th-failure block at 22:12. Held — couldn't verify tonight: this is experiment-specific code (scripts/issue_651/...) on a currently-blocked task with no pod/data to smoke against. Suggested action: add HF-Hub rate-limit backoff to the extraction fetch path when #651 is unblocked (it's the same Hub-throttle class likely to recur on any multi-arm activation-extraction run). - SLURM lane can't serve branch-pinned runs (#642). Branch-pinned dispatchers need
/workspace; all three free SLURM lanes (nibi/fir/mila) refuse a non-mainrepo_branch, so a GCP stockout cascades straight tono_compute_availablewith no free-lane backstop. Held — architectural: the guard is already in (gotchas.mdL55,SlurmBackend._assert_repo_branch_synced); the full fix (rsync from a feature-branch worktree honoring--repo-branchon SLURM) is a tracked router-design infra task, not a same-turn edit.
My thoughts
Highlighted results
- no results promoted today — four follow-up loops (#642, #545, #653, #654) completed and re-parked at
awaiting_promotion; promotion is the manual user gate.