EPS
← All docs·Activity

Daily — 2026-06-04 (#490 → awaiting_promotion; #489 blocked at SP-identity gate; 3 workflow fixes shipped)

updated: 2026-06-05

What happened

  • #490 (dose-matched midpoint coupling) went proposed → awaiting_promotion in a single day: planned, approved, ran a full 7-pair × 3-seed sweep on a 4×H100 pod, then through the analyzer / interpretation-critic / clean-result-critic loop to a clean-result. Title: "Dose-matched midpoint coupling is indistinguishable from zero at small A-B separations (MODERATE confidence)." Hit one smoke-cell crash mid-flight (missing lora_targets field in sft.py, ported from #478, commit d1294cedd) → relaunched clean. Merged to main via the guard-3 surgical-additive path (branch was 215 commits behind; full rebase deferred — the standard guard-3 outcome).
  • #489 (does an ICL-context cosine read predict marker transfer) cleared 5 code-review rounds (one reconciler-bound FAIL on two real bugs in the Phase 5 analyzer), got approved and launched, then crashed in Phase 0a on a bad Anthropic model id; after the fix its SP-identity gate BLOCKED the run (SP03 draft 1 + draft 2 both verdict=different). Pod stopped to avoid idle 8×H100 burn. Currently parked (see Other problems).
  • #474 followups drove a long interactive analysis session: cos-sim / JS-divergence vs log-prob across all prompts, per-class breakdown, quintile summaries, persona vs non-persona split, functional-form (log-x) fit comparison. Lots of figure rework (fix y-label clipping, overlap fixes, drop format class — singleton C1 n=15).
  • 3 workflow fixes auto-applied + merged to main today (no re-proposal needed): (a) codex-code-reviewer now inlines the implementation-marker body in its prompt — fixed #489 rounds 1-2 false-positive marker-shape/smoke FAILs; (b) experimenter clears stale pod-side sentinel files before launch (#477); (c) poll_pipeline.py graceful-degrades oversize (>50k) sentinel notes (#477).
  • #491 created (ICL vs finetuning equivalence: do in-context examples == SFT). #477 hit its planned H0 off-ramp at rank_pick → blocked (working as designed). PM session smoke-tested autonomous-session env propagation + /loop auto-continuation.

Proposed workflow improvements

  1. Target: .claude/skills/paper-plots/SKILL.mdwhat: add a "Scatter & regression-figure legibility" subsection codifying the figure fixes Thomas requested ~10 times today. Why: session 36f40d22 was a long loop of figure corrections that all map to missing rules: "This plot still has overlapping things", "Make clearer what the y axis is exactly", "Remove format from that plot" (a singleton n=1 class), "for cosine non stylized i feel like it looks like a straight vertical line", "can we test how well the fit is for logarithmic?", "can you show the p values on the plots". Mirrored in commits 12682a63a (y-label clipping), 6968fe6d2 (overlap fixes), 3c00d8bb3/3d112c0b2 (drop singleton format class C1, n=15). SKILL.md currently covers plain-English labels and styling but says nothing about overlap, explicit y-axis quantity, singleton classes, or x-scale choice. Proposed edit:

    + ## Scatter & regression-figure legibility
    +
    + For any predictor-vs-outcome scatter (the recurring cos-sim / JS-divergence
    + vs log-prob / leakage figures are the canonical case):
    +
    + - **Never ship overlapping points.** If markers pile up, use alpha<1,
    +   small x-jitter, OR a quintile/bin summary (mean ± CI per bin) shown
    +   ALONGSIDE the raw scatter — never the dense scatter alone.
    + - **Name the y-axis quantity in full.** The y-label must state the exact
    +   measured quantity (e.g. "bystander marker log-prob, trained − base (nats)"),
    +   not a bare "leakage" / "ΔG".
    + - **Drop or explicitly label singleton classes.** A level with n=1 (e.g. a
    +   single "format" context) must not get its own series/panel — pool it or
    +   annotate "n=1, not fit".
    + - **Choose the x-scale before fitting.** If the cloud is a near-vertical wall
    +   on a linear x, try log-x and report fit quality for both; don't fit a line
    +   through a degenerate x-range.
    + - **Show p-values on the figure** whenever a correlation is the claim.
    
  2. Target: .claude/rules/code-style.mdwhat: add a one-line guard against hardcoding invalid Claude/Anthropic model ids in experiment scripts. Why: #489 Phase 0a crashed at first launch (failure_class: code reason: phase0a_sp_identity_check_invalid_anthropic_model_id): scripts/i489_phase0_sp_identity_check.py:121 hardcoded claude-sonnet-4-5-20251001 — but the 20251001 suffix is Haiku 4.5's id, not Sonnet's. A wrong model id crashes at the first API call, wasting a launch + relaunch. code-style.md loads on every *.py edit and has no model-id guidance today; a canonical list already exists in CLAUDE.md and the global claude-api skill. Proposed edit:

    + - **Never hardcode an invented Claude/Anthropic model id.** The judge default
    +   is `claude-sonnet-4-5`; canonical ids live in CLAUDE.md / the global
    +   `claude-api` skill. A `*-20251001` suffix is **Haiku 4.5**, not Sonnet — do
    +   not graft a date suffix onto a Sonnet id. Verify any hardcoded model string
    +   against the canonical list before committing; a wrong id crashes the run at
    +   the first API call (#489 Phase 0a, 2026-06-04).
    

Other problems & notes

  • #489 is parked at status:running with its pod stopped — after the model-id fix, the Phase 0a SP-identity gate blocked the run (SP03: both drafts verdict=different). The status never moved off running, so the board/PM see it as live when it isn't. Action: the #489 session needs to decide — repair the SP03 system prompt and relaunch, or task.py set-status 489 blocked and surface the gate failure. (Borderline workflow gap: a session that posts epm:failure code + stops the pod arguably should set blocked before exiting; left as a note because whether an SP-identity-gate block is recoverable is a per-experiment judgment, not a clean status-machine rule.)
  • #459 looks stuckstatus:running but no events since 2026-06-02T01:02 (last marker = code-review round-2 PASS). Its plan gated pod execution on parent #458 finishing; #458 is now in awaiting_promotion (done), yet #459 never posted epm:run-launched. Action: re-invoke /issue 459 — the session that was holding it likely died after the code build.
  • #489 model-id bug is experiment code (scripts/i489_phase0_sp_identity_check.py:121) — out of scope for workflow-improver; fix the script directly via the #489 session / experiment-implementer. The recurring-class guard is Proposal 2.
  • Codex post-spawn probe failed fired twice today (#489 job task-mq00rboz, #490 job task-mq0bize9) — both auto-retried and the next dispatch succeeded, so the retry-once policy held. No action; watch for it climbing (would point to a codex_task.py probe-timeout that needs raising).
  • #490 and #471 both deferred their full rebase at merge (full_rebase_deferred: true, surgical additive checkout of figures + eval_results). This is the documented guard-3 outcome, not a bug — but the non-artifact commits on those issue branches won't reach main until their parent branches merge. Action: none required; re-invocation retries the rebase once parents land. Noted for awareness only.
  • #477 oversize sentinel note (52,001 chars > 50,000 cap) surfaced today but was the trigger for one of the workflow fixes already merged (poll_pipeline graceful-degrade). Resolved.

My thoughts

Highlighted results

  • no results promoted today