Skip to content

Task #542: negative-panel composition vs #537 testbed (marker row)#448

Draft
superkaiba wants to merge 29 commits into
mainfrom
issue-542
Draft

Task #542: negative-panel composition vs #537 testbed (marker row)#448
superkaiba wants to merge 29 commits into
mainfrom
issue-542

Conversation

@superkaiba

Copy link
Copy Markdown
Owner

Closes task #542.

superkaiba and others added 2 commits June 11, 2026 12:37
… reconcile library drift

Checkout @ issue-537 9daa2d5: the 7 i537_* scripts + 5 experiments/i537_*
modules the marker row reuses verbatim (dispatch recipe/MARKER_TRAIN_KWARGS,
contexts registry, cache contract, four-float slot eval, scoring harness).
Library reconciliation BOTH directions: branch-only TrainLoraConfig.max_steps
+ marker_band_overshoot_stops + MarkerBandStopCallback overshoot_stops +
chunked probe forwards (icl_k8 OOM fix) ported ON TOP of main's newer
sft.py/callbacks.py (log_only/trajectory/completion_only_loss/wandb-lifecycle
kept); main's marker_logprob.py reused as-is (additive). build_marker gains
--negatives/--extra-contexts panel injection + the floor/ceil contiguous
row split (reduces byte-identically to the parent 75x4 at count 4).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…mpler, registered reads, figures)

Plan #542 v2: i542_panels.py (16 new negative contexts, nested c2/arm1/c8/c16
panels, 300-row floor/ceil split, payload-disjointness asserts vs all 30 eval
columns); i542_sample_contexts.py (parent-stream replay past consumed payloads
+ Sonnet near-twins); i542_dispatch.py (p0prime/train/eval/gate/assemble/
analyze; smoke IS the sweep with one cell; pod sentinels + [phase=done];
checkpoint-per-pair; parent base slots reused with V2 parity check; G1' gate;
per-arm tensors + reduced clouds uploaded to the HF data repo, npz gitignored
per the parent pattern); i542_registered_reads.py (per-arm stats, pinned
H-default arm3-vs-arm2 gate, raw-vs-strength-adjusted claim rule, count-axis
cluster bootstrap, 8-pair seed-noise floor, --ladder re-scoring incl
dist_to_panel rows); i542_figures.py (heroes + exploratory). arm1_xfam tensor
assembled from the parent's git G_cells through the same code path (480/480
cells match parent G_meta; broad-row default column reproduces the +4.5896
plan anchor exactly; npz HF-bound, G_meta.json committed).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
explore-persona-space-dashboard Ready Ready Preview, Comment Jun 16, 2026 6:30am

Request Review

superkaiba and others added 3 commits June 11, 2026 14:04
…hase_analyze, registered c8 add-back gate

Addresses the two round-1 binding concerns:
- all15-default-col-read-drops-binst: arm_summary's all-15-row default-column
  mean now spans all 15 non-default train rows (binst_marker included),
  reproducing the parent #537 anchors +3.3032 full mask / +3.2547
  quarantine-passing exactly; new default_col_all15_quarantine key.
- ladder-not-wired-into-analyze-phase: phase_analyze now passes --ladder to
  i542_registered_reads.py, producing the §6.5 baselines/ladder_scores_542.json
  deliverable (incl. the 2 new dist_to_panel rows) on every analyze run.

Plus related hardening from the same fix line: the registered c8 add-back
gate (--phase gate --steps c8; realized GPU-h ledger in
runtime/gpu_runtimes.jsonl written by every p0prime/train/eval process,
threshold 62 GPU-h, decision persisted to p1/c8_gate.json and consulted by
_arm_list so the add-back is never silently dropped), the _hf_fetch_parent
symlink fetch helper (clouds + first-token caches resolvable on VM-side
reruns), the n_cells->n_pairs throughput-metadata rename, and a fail-loud
empty-conversation-hash assert for F2 negatives.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
superkaiba and others added 2 commits June 11, 2026 17:05
Round-2 verification evidence at HEAD for the two round-1 binding concerns
(commit a9b5664): analysis/registered_reads_542.json regenerated through
the production analyze entrypoint reproduces the parent #537 anchors
(default_col_all15 = +3.3032 full mask, default_col_all15_quarantine =
+3.2547) over all 15 non-default rows incl. binst_marker; baselines/
ladder_scores_542.json is the --ladder deliverable (now wired into
phase_analyze) incl. the 2 new dist_to_panel rows; issue_542_smoke
manifests + runtime/gpu_runtimes.jsonl evidence the p0prime smoke rerun
and the c8 add-back gate ledger.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…so smoke closeness resolves

Smoke p0prime crashed at _centroid('sp_swe'): the smoke fetch early-return
skipped the clouds_parent staging while the closeness step still needs the
16 train-context + 4 arm-1 parent centroids. Parent #537 clouds are read-only
parent INPUTS (like DATA537), so they now live at ONE canonical location
(CLOUDS_PARENT = eval_results/issue_542/clouds_parent) that does NOT rebind
under --smoke, are fetched BEFORE the smoke early-return (same loop in both
modes), and _centroid's parent fallback reads the same constant. Idempotent
on the pod (the real run already staged exactly that path).
…ded 5xx retry)

Two pod-side crashes (~30 min apart) on transient HF Hub 504s
(create_commit, then _fetch_upload_modes) killed assemble_upload with
zero resume -- every relaunch replayed all ~300 upload_file ops. Now:
(a) pre-fetched list_repo_files skips ops already on the Hub (final
fail-loud verification still re-fetches a FRESH listing); (b) each
upload_file retries HfHubHTTPError 5xx with 30/60/120s backoff, while
4xx (e.g. 403 quota) and status-less errors stay fail-loud.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…1 gates (G1' PASS 14/16, c8 INCLUDE @5.32 GPU-h), runtime ledger, v2 parity, prereg

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
…g (VM run), figures incl. analyzer-round h_default_paired + ladder_oof_forest
superkaiba added a commit that referenced this pull request Jun 12, 2026
Branch was 2,265 commits behind main (over the 200-commit threshold),
unsafe to blind-rebase despite mainline merge-base. Cherry-picked this
task's own added files only (eval_results/issue_542/, docs/methodology/
issue_542.md); shared src/ / scripts/ unchanged; PR #448 left open for
a future full rebase.
superkaiba added a commit that referenced this pull request Jun 12, 2026
Branch was 2,265 commits behind main (over the 200-commit threshold),
unsafe to blind-rebase despite mainline merge-base. Cherry-picked this
task's own added files only (eval_results/issue_542/, docs/methodology/
issue_542.md); shared src/ / scripts/ unchanged; PR #448 left open for
a future full rebase.
…ve builder branch, opt-in dispatch, pin-fetched v1 freeze, smoke-root guard, registered contrast + figures

- i542_panels: PANELS["pos_only"]=[] (opt-in only; ARM_TRAIN_ORDER untouched)
- i537_build_training_data: --negatives none -> [] (empty string still fails loud);
  build_marker negative block guarded by `if negatives:`
- i542_dispatch: --arm pos_only opt-in allowance; _builder_cmd panel join `or "none"`;
  _fetch pulls the v1 freeze i542_negatives.json at pin 18dc6a8d (never re-runs
  _contexts_step); --smoke asserts EVAL root ends in _smoke (setdefault trap)
- i542_registered_reads: pos_only added to the cross_arm_contrasts comparator tuple
- NEW i542_posonly_figures: hero dots (v1 six-arm envelope + 0.5-nat floor band),
  pos_only-vs-control heatmap pair, three-space twin table from npz sidecars
- smoke-evidence JSONs under eval_results/issue_542_smoke/posonly_fu/analysis/
  (real arm1 tensor at the pin + synthetic pos_only twin)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…G_cells/G_arm pos_only, p0/p1 gates, runtime ledger, V2 parity (GCP run, workload exit 0)
…inistic near-twin freeze (append, no LLM, --only per-member)
…ms — opt-in nt_close/xfam_long/repl_nt, longer-budget train (band-stop log-only + bystander-headroom early-stop), manipulation gate (ratio<=0.5 abort), K1'' non-saturation gate, near-twin freeze append
…ad — partial rho(L, dist-to-neg | dist-to-source) per arm, collinearity gate + tercile fallback + cluster bootstrap + repl_nt noise floor (--nt-proximity)
…correlation forest + leakage-vs-distance scatter (raw+residualized) + K1'' landing-table abort figure
…REPO_ROOT thread, manip-gate abort, K1'' gate, serial 1-GPU) + epm:results sentinel with reproducibility card
…XIT-trap to upload workload log to HF Hub on failure (round 2 diagnostic patch)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…n EXIT trap (set +xeuo) + breadcrumb upload-skipped disambiguation (round 3, union fix for code-review v2 FAIL)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… in dispatcher to bypass vLLM 0.11.0 ZeroDivisionError in _run_engine (root-caused from HF Hub debug log)

Root-caused from crash log att-20260616-025803 on the HF data repo: vLLM
0.11.0 _run_engine (llm.py:1609) computes total_in_toks / format_dict["elapsed"];
a disabled tqdm never sets start_t so elapsed==0 -> ZeroDivisionError -> engine
core dies -> VM auto-DELETE (reproduced on all 4 prior GCP launches).

Fix is in the single task-local file scripts/i542_nt_dispatch.sh: UNSET
TQDM_DISABLE (not set=0). tqdm.std.__init__ is @envwrap("TQDM_")-wrapped and
coerces the env value via bool() against the disable=False default; bool("0")
is True, so TQDM_DISABLE=0 would STILL disable the bar. Only unsetting leaves
disable=False -> start_t set -> elapsed>0. Verified by a local calibrated
regression (bug/no-fix/fix conditions) against vLLM 0.11.0 + tqdm 4.67.3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
superkaiba added a commit that referenced this pull request Jun 27, 2026
…s + wrapper)

Add data-parallel sharding to the Phase-2 dispatcher so the independent
(source x behavior x arm x dose) cells fan across 8 GPUs instead of running
serially on one (the ~30h/7-idle-GPU recovery). Pure orchestration -- per-cell
science is unchanged; cells partitioned by i % num_shards == shard_id after the
post-P2.0 drop filter.

- issue664_dispatch.py: --shard-id/--num-shards args (default 0/1 = no sharding,
  backward-compatible); _validate_shard + _shard_filter helpers; shard-0-only
  gates on phase0/manifest/readability-assert/live-judge/upload over the FULL
  post-drop fleet (all_cells), train/extract/eval loops over the shard subset.
- Refactor the epm:results sentinel into _write_results_sentinel and fire it on
  --phase p3 shard 0 too: the 8-way wrapper runs phased (never --phase all), so
  the terminal contract would otherwise never be written (poll_pipeline #448).
- issue664_launch_parallel.sh: pod-side wrapper sequencing p0 (1 GPU) ->
  p2 8-way (CVD-pinned per shard) -> p3 (1 GPU); emits the watched
  [phase=...]/[phase=done] contract + PID file; aborts before p3 on any shard
  failure (rc=1 -> poll reads NOT-done).
- tests/test_issue664_sharding.py + tests/manual/print_issue664_shards.py: unit
  test + dry-run pinning disjoint-union cell coverage + validation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant