Weekly — 2026-W22 (2 results promoted;
What happened
- 2 clean-results promoted to
completed: #390 (refusal-style negatives install a persona gate that generalises across 9 of 11 OOD eval framings, MODERATE) and #391 (could not selectively implant sycophancy on Qwen2.5-7B-Instruct — trained source + 23 bystanders move in lockstep, LOW). Both promoted 2026-05-28. ~6 more clean-result drafts landed atawaiting_promotionthis week (#385, #404, #415, #416, #432, and #407 which then went back tointerpreting), but only the 2 above were actually promoted — the interpret/promote backlog Dan flagged is still real (53 tasks sitting inawaiting_promotion). - Heavy experiment churn, lots of recovery. 6 tasks
runningat week end (#406, #408, #444, #448, #451, #452), 1interpreting(#407), 1planning(#392). The two hardest threads: #408 (8+ code-review rounds, 6 sequential data-gen bugs, then a genuine fixed-seq-len-vs-verbose-corpus design flaw — k≥10 turn prefixes hit ~71k tokens vs the planned 4096, truncating the marker out of 47-91% of rows → needs a re-plan, not a patch); and #407 (a cross-regime methodology blowup reframed over 3 interpretation rounds). - Big mentor-facing dashboard build + clean-result-workflow evolution (mostly 05-26 → 05-29): the
/updates+/logresults timeline, Sagan-style anchored comments, per-card @claude chat, a TOC + collapsible task pages, and a wholesale clean-result body restructure (mentor-facing titles, Goal→Motivation, optional Next steps, one-takeaway/one-figure). Most of the 05-26 batch landed and is logged initerations.md; the larger #432-dictated overhaul (2026-05-31) did not propagate to SPEC.md — see proposal #1. - Large workflow-surface churn: a 10-workstream recurring-bug-fix batch (preflight disk-budget, pod_disk_guard, runpod retry+supply, bootstrap PATH, codex retry, watchdog PID, training-pipeline guards, hub artifact-verify, dashboard dep test), the living-docs machinery (Phases 1-4 +
living-docs-updater), reconciler marker canonicalization toepm:review-reconcile, the MDX-safety body gate (<httpsautolinks +<digit, applied), the setsid SSH-safe launcher, and a ~50% CLAUDE.md trim (the >40k-char performance warning is resolved). Hyperparameter-grounding (literature + past-issueSource:) was added to planner/critic. - My Goat genesis (2026-05-25): the OpenClaw→Claude Code personal-assistant migration session — one-time setup, not project friction.
- Pod money-leaks were the week's most expensive recurring class: #406 orphan 2×H100 idle ~24h, #382 leaked 1×H100 ~3 days (Step 8 skipped), pod-397 idle, pod-407 silently-failed launch sitting idle
3 days (0 GPU, no log), and #382 ran out of money mid-run with no checkpoints ($215 redo).
Proposed workflow improvements
Severity-ordered. #1 and #3 are merge/greenlight decisions, not one-shot
workflow-improveredits — flagged inline. Reply e.g. "do 2, 4, 5" / "do all" / "skip 1 — let's discuss".
-
Target:
.claude/skills/clean-results/SPEC.md(+ propagate to.claude/agents/analyzer.md,.claude/agents/clean-result-critic.md,scripts/verify_task_body.py) — what: adopt the clean-result body overhaul Thomas dictated against #432; SPEC.md was never touched and is now in large spec-vs-practice drift. LARGE / architectural — needs your explicit go-ahead and careful multi-file propagation; do not auto-apply. Why: verbatim (sessionad406932): "There should be no separate 'details' section. The parameters should go into reproducibility. Methodology corrections is not necessary... Basically it should just be: # Human TLDR (Empty) # TLDR Lesswrong style description... separated into different subheadlines with the result, one plot per result, with one example of raw completion per artifact, dropdown of more raw completions, and links to all the raw completions. Next steps shouldn't be there by default." Plus: "Remove why confidence is where it is"; "training data should be a drop down of 5 examples... and then a link to the full thing. Same for eval data"; "The TLDR should start with the motivation and it should be labeled as motivation"; "Every clean result, except in the motivation, should stand alone... Never use the phrase byte identical." He explicitly said "eventually we'll fix the entire clean result workflow so it follows all this." (Absorbs the 05-26 "Human TL;DR required at top" item.) Proposed edit:# SPEC.md — collapse 4 required H2s to two top-level sections - ## Human TL;DR / ## TL;DR / ## Details / ## Reproducibility + ## Human TL;DR (empty; Thomas authors/approves before promotion) + ## TL;DR (LessWrong narrative: Motivation -> What I ran -> per-result H3 + subheads; one plot per result; ONE relevant raw completion + a details + dropdown + full link; raw data co-located with its section — training + data near the training discussion, eval data near the eval discussion) + ## Reproducibility (absorbs Parameters) - require Details / "Methodology corrections" / "Why confidence is where it is" + drop those; Next steps only when Thomas requests them + standalone-framing rule: no "compared to #N" outside Motivation; ban "byte-identical" -
Target:
.claude/agents/upload-verifier.md(+ a paired check inscripts/verify_task_body.py) — what: verify that eval-result files a body's Reproducibility section claims are committed actually exist in that git tree / on the HF data repo before emitting PASS; "local"/on-pod-only is a FAIL. Why: #397's Step-8 upload-verification PASSed (2026-05-29) while the 72-cell derived JSONs lived only on the pod; the pod hit disk-full cleanup and the data was deleted, so the published clean-result is irreproducible and its Reproducibility section falsely claims the 72 files are "committed to main ateb7bc30e" (that commit contains 0 of them). Verbatim (session1a9086cd): "that Step-8 PASS was effectively false" / "#397 must NOT be promoted as-is." Data-integrity-warning marker already posted on #397. Proposed edit:## Verification checklist + - Eval JSONs / figures the body's Reproducibility section claims are committed + MUST be verified present (`git cat-file -e <sha>:<path>`) OR on the HF data + repo. On-pod-only is a FAIL — the pod is ephemeral. Cross-check every + checkable Reproducibility claim (named files exist at the named SHA; + pod-terminated marker matches the live API) before PASS. -
Target:
.claude/workflow.yaml(+scripts/task.py,scripts/verify_task_body.py) — what: the binding-concerns protocol (CONCERNS verdicts become fix-or-explicit-defer,concerns.jsonlpersistence, gateconcern_deferral_request) is fully drafted + reviewed but stranded on branchworktree-agent-a2da4775a3a1f5fbc, unmerged to main. MERGE decision — review then merge/cherry-pick; not a fresh edit. Why: Thomas asked directly (session42602fea): "How can we change the workflow so that if a concern is surfaced it must actually be fixed?" after #399's probe-position concern was flagged by code-review (Major #1), deferred as "advisory," and then proved claim-relevant — costing a full re-run. The fix exists (7 commits incl.aa15b2bd3 workflow.yaml: binding-concerns contract) butgit log mainshows none merged; until merged, CONCERNS still auto-passes and the incident class recurs. Proposed action: reviewworkflow.yaml § concerns_protocol+ the 5c/9a decision tables on the branch, then mergeworktree-agent-a2da4775a3a1f5fbcto main (or cherry-pick2880d3feb..710aa5600). -
Target:
CLAUDE.md(living-docs rule, ~line 14) — what: extend "state facts, not sources" fromdocs/to task/issue bodies, and ban spatial/anatomical metaphors in living docs. (Merges the unapplied daily-2026-05-29 proposal #1 with a fresh 05-29 finding.) Why: Thomas, verbatim (sessionf9b47ab7): "Stop mentioning Dan in notes. Save to CLAUDE.md to just add factual information not the sources" and "#444 and #445 task bodies still say 'Dan (2026-05-29)'... Want those scrubbed too"; plus (session156d1ff3) "Stop using weird metaphors like spine and hub + spokes. Make this more academic in flavor." The current rule scopes only todocs/open_questions.md. Proposed edit:- - **Living research docs state facts, not sources.** In `docs/open_questions.md` etc., write the claim directly — no person/meeting attribution. Provenance is the `#issue` evidence trailers; meeting provenance lives in `docs/mentor_updates/`. + - **State facts, not sources — everywhere except `docs/mentor_updates/`.** Living docs (`docs/open_questions.md`, `docs/research_ideas.md`, `SUMMARY.md`) AND task/issue bodies write the claim/idea directly — never "Dan said", "per the 2026-05-29 meeting", or any person/meeting attribution. Provenance lives only in the `#issue` evidence trailers and in `docs/mentor_updates/`. Keep the register plainly academic: no spatial/anatomical metaphors ("spine", "backbone", "hub-and-spoke", "scaffold") — name the mechanism directly. -
Target:
.claude/skills/issue/SKILL.md(cost-confirmation point before Step 6 pod-provision) — what: the post-code-review GPU-spend confirmation must NOT pre-provision the pod; provision only after the user repliesapprove. Why: #406's/issuesession posted the cost note, provisioned a 2×H100 "to save time," then exited awaiting approval and was never re-invoked — orphan pod idle ~24h at ~$5-6/hr (subagent diagnosis, sessionb07b02ab). The stale-pod audit can't reap a pod the workflow provisioned speculatively before approval. Proposed edit:+ **Cost confirmation does NOT pre-provision.** Do NOT call `pod.py provision` + until the user replies `approve`. If the session must exit at this gate, + post `epm:awaiting-spend-approval v1` and ensure NO pod exists yet + (incident #406: orphan 2xH100 idle ~24h). Alternatively fold this + confirmation into the plan-approval gate (id=4) so there is no second pause. -
Target:
.claude/agents/codex-interpretation-critic.md(+ twinscodex-clean-result-critic.md,codex-code-reviewer.md) — what: when the sandbox blocks file reads / DNS / HF fetches, the Codex critic must mark the affected lensBLOCKEDand NOT emit PASS — today it falls back to the body's own prose and drifts to PASS, which the reconciler then has to clean up. Why: session0880757a(#381 r1): "Codex interpretation-critic drifts to PASS when sandbox blocks data"; reconciler memoryfeedback_codex_passes_when_sandbox_blocks_data.mddocuments the #381 incident. The fix lives only in the reconciler tiebreak today, not in the critic's own prompt. Proposed edit:+ **If you CANNOT read a data file (sandbox read-only / DNS / denied Read or + Bash):** do NOT fall back to the body's prose to score that lens. Mark it + `BLOCKED — could not read <path>` and do NOT emit overall PASS. If the + overclaims lens or the raw-text lens is BLOCKED, the verdict must be REVISE + with a `data-access-blocked` note so the reconciler knows PASS was unreachable. -
Target:
.claude/agents/experiment-implementer.md(+.claude/agents/implementer.md) — what: when posting a 2nd/3rd review-round marker, first readevents.jsonlfor the highest existingversionof that marker key and pass--version <max+1>;post-markerdefaults to--version 1and does not auto-increment. Why: #389 compaction (session54d1d992): "task.py post-markerdoesn't auto-increment version: implementer's round-2 marker was posted asversion: 1duplicating round-1... User feedback: this trap should be in workflow." Confirmed live:task_workflow.py:617 post_marker(version: int = 1). (Robust alternative = auto-increment in the script — see Other problems & notes.) Proposed edit:+ ## Posting review-round markers + Before posting a second/third round marker, read events.jsonl for the + highest existing `version` of that marker key and pass `--version <max+1>`. + post-marker defaults to 1 and does NOT auto-increment; a duplicate version + silently breaks round detection (incident: #389 round-2 posted as version 1). -
Target:
.claude/agents/planner.md(+ cross-ref in.claude/skills/adversarial-planner/SKILL.md) — what: the plan should name the hero figure(s) the headline needs AND an "exploratory plot dump" the analyzer over-produces at the end; raise ONE AskUserQuestion at plan time only when the hero view is ambiguous. Why: recurring — Thomas (sessiond80d1ee7): "What the final result plots is often really bad. I'm thinking that during planning the agent should ask me exactly what to plot. Or maybe it should just plot a lot of things at the end?" #390's TL;DR took ~12 figure-rework rounds.what to plotis absent from planner.md + adversarial-planner SKILL.md. Proposed edit:+ **Figures to produce (over-produce, ask only when ambiguous).** List the + specific hero figure(s) the headline needs AND a short exploratory set the + analyzer generates at the end (per-cell bars, per-seed scatter, trajectory + lines, raw-alongside-residualized). When the hero view is non-obvious, raise + ONE AskUserQuestion at plan time. <!-- gate: gates.conditional.experiment_goal_refine --> -
Target:
.claude/agents/consistency-checker.md(comparability table) — what: add a "matched training budget" comparability check. (Carried forward — first proposed in daily-2026-05-29 #2, not yet applied.) Why: sessionf1d008c0: "Wait no there should be at least a comparable amount of gradient updates. Dispatch a subagent to check if this makes sense." A comparison was matched on epochs/example-counts but not total gradient updates — the confound that actually matters. (Recurred this week in #404's recipe-vs-pair split.) Proposed edit:+ | **Matched training budget** | WARN | When comparing recipes/conditions/cells, total gradient updates (steps x effective batch) should be comparable, not just epochs or example counts. Flag if one condition gets materially more updates than another and ask the planner to justify or rebalance. | -
Target:
.claude/agents/critic.md(Methodology lens) — what: add a marker-dynamics-logging design check. (Carried forward — first proposed in daily-2026-05-29 #3, not yet applied.) Why: session9e74ceaf: "We don't have information about the dynamics of marker emission right, the fact it's fully saturated at the end doesn't help us too much." CLAUDE.md already requires logging the trajectory, but designs keep shipping that measure only the endpoint. Proposed edit:+ N. **Marker-dynamics logging (marker-implant experiments).** If the experiment implants/tracks a marker, the design MUST log per-step marker log-prob + emission rate as a WandB trajectory. REVISE if the plan captures only end-of-training state — endpoint saturation alone can't distinguish recipes or locate when leakage emerges. -
Target:
.claude/agents/experimenter.md(fresh-pod launch checklist) — what: defaultsave_strategy=steps(with+save_steps/+save_total_limitHydra+-prefix) for any run estimated >~2h/seed, andmkdir -p logsbefore redirecting. Why: #382 (sessiondc47c348): pod died mid-run after ~215 redo); the fresh-pod relaunch then hit two avoidable startup failures in a row —logs/didn't exist (redirect failed) and Hydra rejected baresave_steps(needs+). Same class as the already-documented+gpu_idgotcha. Proposed edit:+ Before launching a multi-seed run estimated >~2h/seed: (a) `mkdir -p logs` + on the pod; (b) enable checkpointing with `+save_steps=N +save_total_limit=K` + (the `+` prefix is required, same as `+gpu_id`) so a mid-run pod death is + recoverable. A long run with no save_strategy is a money-loss hazard (#382: ~$215 redo). -
Target:
CLAUDE.md(§ Output format, ~line 252) — what: correct the false claim that the dashboard renderstasks/<N>/artifacts/<slug>.htmlat a browsable URL — it renders only the taskbody.md. Why: Thomas was handed.../tasks/402/artifacts/open_questions_v2.mdand replied "404 this page could not be found" (session43934e05); the assistant conceded the CLAUDE.md note was wrong. The stale note still sits at line 252 and will mislead again (same 404 class recurred on the docs route 05-29). Proposed edit:- reference from events.jsonl's `artifacts` array; the dashboard renders it at `https://eps.superkaiba.com/tasks/<N>/artifacts/<slug>.html`. Pair with the `frontend-design` plugin. + reference from events.jsonl's `artifacts` array. NOTE: the dashboard renders ONLY the task `body.md`, not files under `artifacts/`. To give Thomas a browser-viewable doc, put the content in the task body (snapshot the original first) or use a pushed GitHub blob link. Pair HTML artifacts with `frontend-design` for local viewing. -
Target:
.claude/agents/research-pm.md— what: promote the no-<options>-XML rule from the buried Voice section to a top-level hard output rule. Why: the guard exists (added 2026-05-10) yet the/pmsession emitted a 5-option<options>/<option>block 16 days later (session0081a8a7), which Happy renders as broken cut-off pills (forbidden perfeedback_no_options_block.md). Proposed edit:+ ## Output hard rule (read before every reply) + NEVER emit `<options>`/`<option>` XML in chat output — Happy renders each as a + separate cut-off pill. Present ranked next actions as a plain numbered markdown + list. Non-negotiable, every turn. -
Target:
.claude/skills/daily/SKILL.md— what: a manual/dailyrun must write a complete file including the## Proposed workflow improvementssection, since the 23:27 PT cron refuses to overwrite an existing file. Why: a manual/dailyearlier in the day makes the cron no-op, so the file ships missing its proposals section — exactly what happened to the 2026-05-27 daily (older format, no sweep). (Session5b38d51d.) Proposed edit:+ **Manual runs write the FULL file.** When `/daily` is invoked manually (not + via cron), always produce every section including `## Proposed workflow + improvements` — the nightly cron refuses to overwrite, so a partial manual + file permanently loses the sweep for that day.
Other problems & notes
Pod money-leaks / lifecycle (the week's most expensive recurring class):
- #406 orphan 2×H100 idle ~24h (root cause = proposal #5) — terminate/relaunch (session
b07b02ab). - #382 went
results→interpretingwith no Step-8 markers → auto-terminate never fired, 1×H100 leaked ~3 days (session1a9086cd). Terminated + markers backfilled; thepod_audit.pytask-status cross-reference fix was dispatched toworkflow-improver. - pod-397 idle 1d (provisioning never logged on the task); pod-407 silently-failed launch (0 GPU, no log) sitting idle ~3 days (sessions
dc93f209,1a9086cd). Suggested: confirm #407's interpreted results came from a valid run, then terminate the dead pod. - #382 ran out of money mid-run with no checkpoints → ~$215 redo (root cause = proposal #11).
Per-issue session liveness (recurring confusion, 4+ asks in one day):
- "is #396/#382 session dead or just hanging?" with no easy check (session
4152a850); #385/#382 stalled atinterpretingand lost their watch (sessiona60479f2). Suggested: atask.py session-health <N>helper (last-marker timestamp + pod PID + Happy session state) and/or a cron stall-watchdog, rather than relying on a live session. (interpreting-is-not-a-gatememory already flags idle-at-interpreting = stuck.)
Experiment-code bug cascades (caught by the review/failure machinery — system mostly working as designed):
- #408: 6 sequential data-gen bugs + a fundamental design flaw (verbose corpora → ~71k-token k≥10 prefixes vs planned 4096, marker right-truncated out of 47-91% of rows) (session
e1e53b47). Meta-lesson worth wiring into the smoke gate: end-to-end smoke of the assembled pipeline before expensive runs, not just per-function fixtures — especially when stitching multiple prior issues' code. - #404:
resolve_adapter_pathreturnedrepo@revisionpassed straight tovllm.LLM(model=)/AutoTokenizer(both reject it) → outcome-eval crashed and the pod-side sweep posted NO markers for 47h (sessionsf1d008c0/da974c77). Also a recipe-vs-pair confound (3 Turner-recipe "installs" vs 4 Betley "doesn't") and a plan-vs-code recipe divergence the consistency-checker didn't catch — re-examine #404's framing before promotion. Suggested fix: pod-side sweep scripts should always postepm:run-finished/epm:failure. - #385: 4 bugs across rounds (rmtree deleted step-list checkpoints before eval;
format_datasetcrashed on TRL conversational shape;epochs=-1 + max_steps=10→ silent zero-step run; per-checkpoint predictor crashed on PeftModel layer access) (sessions86da37a2/6abfe193). The zero-stepnum_train_epochs<=0guard + the conversational branch are portable regression-test candidates. - #407 round-1: A/B/C judge rubrics hardcoded to fictional-regime labels → silent
rate_canonical = 0.0for obscure-real cells (session6d614eee). Experiment-code; caught by review. - #382: KL-anchor CUDA OOM is LM-head full-sequence-projection-bound, not batch-bound — fix = chunked
lm_head+ in-loop backward (sessions07fb09aa/dc47c348). Worth a memory note so future anchor-OOMs skip the batch-size dead end. - #377: the corpus-length ±10% invariant fired after per-shard write but before the aggregate JSONL write → 4 shards intact but a misleading "file missing" crash; plus a stale
B-incontext@kplot key → KeyError (sessions09a7dc38/07fb09aa). Also: all 6 Phase-1 marker-install checkpoint repos 404'd on HF Hub (never uploaded / wrong names) — verify upstream uploads before downstream issues depend on them. - #406 C2:
_audit_marker_in_loss_maskassumed the marker token in row 0, but the shuffled 300-pos/300-neg dataset can put a negative there → spurious AssertionError (would intermittently crash C3/C4/C5) (session8e691b41). Fix landed (87916cff); confirm the regression test covers shuffled mixed datasets. - #448: poller integration gap — the dispatcher's final sentinel uses
"schema": "epm:results v1"butpoll_pipeline.pyrequires top-levelsentinel_schema_version/kind/version, and no[phase=done]emitter exists →epm:resultsnever auto-posts and the poller reports falsedeadat clean completion (session49bae5c4). Root cause: the smoke ran the dispatcher via SSH, never throughpoll_pipeline.py. Caveat recorded on the task; fix the dispatcher's sentinel schema + add a[phase=done]emitter.
RunPod infra / provisioning:
SUPPLY_CONSTRAINTdrove two near-identical deep-web-research detours (#333, #369), both recommending the samerunpod_api.pyGraphQL→REST migration (gpuTypeIds[]+gpuTypePriority:"availability", multi-DC, drop disk 200→100GB) — still unimplemented (memoryreference_runpod_supply_workarounds.md). Implement once so the research isn't re-done per stuck issue.runpod_api.pysentgpuTypePriority:availabilitytopodFindAndDeployOnDemand, which the schema rejects (HTTP 400) — fixed inline in #416 (session241b5e29); confirm a regression test pins the accepted input schema.- Recurring manual "import from sagan" dance opened 6 of 7 worktree sessions (#333/#355/#363/#365/#366/#369/#370) before
/issuecould run — a one-shottask.py import-from-sagan <N>helper would kill the repeated step. - Team-vs-personal account confusion needed mid-flight clarification on #363/#369/#370 — pin the default account in the provision path.
- Worktree
.envauth failure: driver ran from a worktree but.envlives only in the main worktree → 13 fabricate calls 401'd (session8e68dc9c, Thomas: "fix this so it never happens again"). Fix landed viaresolve_dotenv_path(); verify it's on main and preflight hard-asserts credentialed-call keys. task.py newbranch-guard blocked creation when the main checkout's HEAD was off main (session42602fea, Thomas: "Can't you just create it in main") — the agent should auto-detect non-main HEAD and surface the one-line workaround immediately.
Dashboard / sidecar (big build week; one security hole + several regressions):
- SECURITY (high): anonymous RCE on the production dashboard —
POST /api/chat-tokenminted sidecar tokens to anyone, drivingclaude --permission-mode bypassPermissions(+ Codex--dangerously-bypass-...) withcwd=~/explore-persona-space, no rate/cost cap ($600/hr loop possible), caused byDASHBOARD_AUTH_ENABLED=false(sessione8baca73). Thomas later switched to site-password auth — verify the token-mint hard-auth + per-IP rate limit + daily cost cap actually landed, not just the password gate. - Orphaned Vercel project still wired to the repo → "Failed production deployment" +
api-deployments-free-per-dayspam to Thomas AND Dan (sessions5bbf5a65/ed93f3c5). 2-min cleanup (delete project / disconnect GitHub integration), flagged P2-2 in the security audit, still not done. (Memory: eps.superkaiba.com is now local systemd; Vercel is orphaned.) - Dirty-
dashboard/-tree guard blocked Dan's live @claude code-edit twice on a mentor demo (sessionsfafa3c66/720dff3b) — the supposed auto-stash fix (commit1d5831d2) isn't working on the comment-anchor code-edit path in production. Re-check + redeploy + verify with a dirty tree. - No auto-rebuild on
git push origin main→eps-dashboard.serviceserves a stale.next/(sessione8baca73, P2-1). Add a post-merge hook/cron that runsnext build && systemctl restart eps-dashboard.servicewhendashboard/changes (automates memoryfeedback_dashboard_deploy_path). - Sidecar source lives in the orphan repo
~/explore-persona-space-dashboard, NOT~/explore-persona-space— edits to a sidecar file in the research repo silently no-op (sessione8baca73). Pull it in or document the split prominently. /updates/[id]route was missing → repeated 404s on/updates/380etc. (sessionse8baca73/c85bb118/ea7a71ef); later built. Standardize one canonical clean-result deep-link form and reflect it inissue/SKILL.md(the comment composer renders on/updates/<N>for active/clean-result tasks, not/tasks/<N>— aproposeddoc must be flipped toreviewingfirst; cost several turns on #417, sessione1762a38).- Comments not threaded as replies; ~15 sequential anchored-comment UI-correction turns (box jumping, comments swept away, fullscreen too wide/narrow) (session
e8baca73); dark mode removed at Dan's request; Cloudflare beacon blocked by adblock broke Dan's password input (session69ff6d23, make the sign-in form beacon-resilient). The anchored-comment component needs a focused design pass + test harness rather than turn-by-turn nudging.
Living-docs / results hygiene:
living_docs.py checkFAILs (168 problems) — see the Living-docs drift section below.RESULTS.mdheadline content is stale (frozen ~2026-05-05); CLAUDE.md still says update it after each experiment. Suggested: refresh headlines or formally demote it to historical (the canonical layer is now per-task clean-results).living_docs.pyitself crashed on every realdocs/open_questions.mdquestion (only parsed theState:trailer, not the live> **Belief:** … **Evidence:** #Xcarrier) — fixed in-session (sessiona1aa86f7, 627-LOC dual-format patch); verify merged to main.analyzer.mdTL;DR labels used period form (**Motivation.**) vs verifier's required colon form — fixed in-session (commit2573e250); stale period-form copies remain in.claude/cache/issue-240-clean-result.md.
Behavioral / one-offs / lower-grade:
- "Be more interactive, don't just go off on your own" — 2nd instance this week (Dan meeting-notes batch integration, sessions
4665922f/f9b47ab7; first flagged in daily-2026-05-29 My Goat notes). Cuts against the post-approval-autonomy policy, so not proposing an edit yet — but it's now approaching a pattern. If it recurs, an explicit "exploratory/interactive mode" carve-out (or a step-throughmeeting-notesskill) is warranted. post_markerauto-increment is the robust script-side fix paired with proposal #7 — add--version auto(or make it the default: look up max existing version for that marker key) inscripts/task.py/task_workflow.py(out of the.claudeworkflow surface, so logged here).workflow-improverwas dispatched once withoutisolation="worktree"and would have editedmaindirectly — its hard self-check caught it and it exited for re-spawn (sessionfd08eb30). Audit the dispatch site so the self-check stays a backstop, not the primary defense.planner.mddescribes an HTML plan but the real output is markdown (Thomas: "This isn't an HTML plan it should be a markdown plan... Fix planner md to match reality. But actually is this the same as adversarial planner?", session5085107a). Reconcile the plan-format description + clarify the planner-agent vs adversarial-planner-skill relationship. (Left as a request — verify if it landed; if not, it's a small Bucket-1 edit.)/dev/ttyStop-hook spams "cannot create /dev/tty" on every agent stop in headless/Happy sessions (~/.claude/settings.json:80) — guard with[ -t 1 ]. User-global settings, out of project scope — wire via/update-config.- Rate-limit (429) Stop-hook fired pervasively all week (94×/44×/34× in single sessions on 05-27) — the retry hook is working, but the volume was amplified by the >40k-char CLAUDE.md (since trimmed ~50% on 05-29, partly resolved). Worth confirming
/issueactually staggers ensemble spawns per the CLAUDE.md guidance. task_workflow.pymarker-registration plan deviation — implementer was told to register new marker types, but the marker system is free-form (no enum), so the edit was inert (session6d614eee). One-off; note for plan-author awareness.- "predicate" jargon in a #389 clean-result title (Thomas: "Don't use the word 'predicate' it's very confusing", session
54d1d992) — covered by the existing no-invented-jargon rule; no new edit. pod_audit.py/compute_deferred_stats_and_plot.pyNameError (F821) regressions from the worktree-staleness PR (tasks_dir()used unimported) — code-reviewer caught it (FAIL); confirm the import fix landed + add a smoke test (session65b3edec).
Living-docs drift
scripts/living_docs.py check → FAIL, 168 problems (exit 1). Categories:
- 6
appNquestions (app1–app6) have an anchor but no parseable> **State:**/**Evidence:**trailer — these question stubs are structurally incomplete. - ~95
task #N relates_to '<anchor>' but no question with that anchor exists— task frontmatter still points to the old anchor scheme (a1,b1,c5,e1,h2,app-trigger-discovery, …) that was renamed to the current descriptive slugs (leak-predictor,fact-teach-persona-transfer, …). - ~60 bidirectional mismatches — a question lists evidence
#Nbut task#N'srelates_todoesn't name that question (e.g.leak-predictorlists #396/#207/#368/#311/#380;fact-teach-persona-transferlists #192/#389/#390/#407/#381), and the inverse (task #102 relates_to 'app2' but #102 absent from app2's evidence). - Proposal: re-synthesize
docs/open_questions.md(run the living-docs updater/backfill) to reconcile the anchor-rename drift + bidirectional evidence ⇄relates_tomismatches, and fill the 6appNState/Evidence trailers — needs your ok; not auto-applied. This is a proposal only;/weeklynever runs the re-synthesis.
My thoughts
Highlighted results
- #390 — Refusal-style negatives install a persona gate that generalises across 9 of 11 OOD eval framings as a verbatim one-line refusal substitution (MODERATE confidence)
- #391 — Could not selectively implant sycophancy on Qwen2.5-7B-Instruct: training lifts the trained source and 23 bystander personas in lockstep, with four probable design-level confounds (LOW confidence)