release: v2.0 public-release cleanup - #45
Open
seanrivera wants to merge 38 commits into
Open
Conversation
The analysis planner deliberately had no DROP edge because R1 never exposed DROP to the model, which is what makes a decoy-key pickup 'doomed'. The 2026-07-30 rerun did expose it, so scoring those episodes on a DROP-free graph would call a recoverable state unwinnable. drop_available defaults to False, so every existing caller is unchanged. The dropped key stays in collected_keys (gone from the world, not re-acquirable): conservative, and sufficient because no corpus episode ever emitted a DROP. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0123tBVPUyVJA5NsocRCYTmU
…c banner I-1 from the final results-corpus review: gridworld/baselines.py's DROP transition keeps a dropped key in collected_keys, so the planner can never model re-acquiring it, while the runtime (custom_env.py:549) genuinely allows re-pickup. That makes the model over-report doomed states in the drop_available=True case (456 doomed states on the D2 spec, 304 false). No current row is affected, but this must be revisited before scoring any episode where the model actually drops and later retrieves a key. Comment rewritten to say so plainly; behavior unchanged. Also added a dated SUPERSEDED banner to docs/r1-kimi-rerun-package.md, a pre-launch planning doc whose 3-arm launch has since completed — the "PREPARED, NOT LAUNCHED" framing and the "excluded from R1 failure stats" language are pre-launch state, not current. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0123tBVPUyVJA5NsocRCYTmU
…ignore The tracked .swp leaked username/hostname/home-path metadata; prompts.txt is a regenerable preview dump with absolute local paths (regenerate via multinet-preview-prompts). New ignore rules close every observed accidental-commit vector (.claude/ and scratchpad/ were previously protected only by machine-local excludes). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Self-declared NOT RUNNABLE; named speculative model ids and referenced an analysis file that doesn't exist in this repo. Regenerable from selection metadata if the probe is ever scheduled. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… repo launch_kimi_rerun.sh / run_qwen_backfill.sh hard-code a finished run's worktree, run-id, and archive paths — ops residue, not reusable tooling. Rerun fixtures stay for provenance. Copies live in Multinet-v2-results/docs-archive/ops/. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ariant mazes/exp_maze_jsons/ was a stale byte-drifted duplicate of the ogbench procgen corpus (195 identical / 9 drifted / 0 unique) and carried a live maze.goal != goal.target violation in D3 that the D1-scoped assertion could not catch. New corpus-wide invariant test proved the defect red before the repoint; maze-family tests now read the corpus the R1 manifests actually resolve, and the one-shot disjointness scan covers it too. Known corpus defects found during the repoint are FROZEN, not fixed: the submodule is the exact corpus the paid R1 runs resolved, so its files must not change pre-release. tests/maze_test_utils.py's KNOWN_CORPUS_DEFECTS registry pins each known-bad value (S4-vs-M goal desync from the 31a0549 half-fix; M2/D1/D2 metadata regressions from 271bf47) so any future change, including the eventual fork-side fix, fails loudly. Runtime impact: none — chain_pattern/difficulty_tier are unread labels and every file is self-consistent on maze.goal == goal.target. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
branch=master didn't contain the pinned commit, so 'git submodule update --remote' silently reverted the d3/S4 goal-correctness fixes out of the live R1 corpus. Merging fix/d3-goal into the fork's master and repinning is post-release work (Appendix B). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
multinet-vlm-sanity pointed at a main() that didn't exist; three scripts defaulted their task path under scripts/mazes/ (parent vs parents[1]). New test loads every declared multinet-* entry point so this class of breakage can't ship again. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The hex step-throughput threshold went fail/fail/pass across three same-machine runs — load-sensitive, so it can't sit inside the documented install check. Opt back in with: pytest -m slow. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… in the wheel pip show previously reported 0.1.0/UNKNOWN; the wheel shipped the eval-maze package and GCP deploy tooling into site-packages; MANIFEST.in pruned a path that never existed; the CLI still introduced itself as the 2026-Q1 "tests 1-3" milestone. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…test run Dropping deploy* from packaging (9bca8fb) removed `deploy` from the editable finder map; eight test modules import it and full-suite collection survived only because an alphabetically-early test inserts the repo root on sys.path. A root conftest.py makes the path setup explicit and order-independent. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1045 tests, zero automation until now — the broken entry point this branch fixes is exactly the class of defect a 25-line workflow catches. Suite is verified green without any API keys, so fork PRs are safe. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Archive 14 campaign/ops/stale docs to the results repo (cost projections, runbooks, launch checklists, 261-test-era status snapshots, local-path notes); rewrite docs/README.md as an honest index over the kept design references; remove three image links to diagrams that never existed; reword the analysis tombstone for a public audience; annotate the relocated candidate-maze provenance paths in the R1 manifests. Also drop test_future_directions_doc_flags_vllm, a hard file-existence guard on the now-archived docs/future_directions.md (caught by the full-suite run; the doc's relocation is intentional per this triage). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
smoke_qwen's verdict message (and the test that pinned it) referenced the archived future_directions doc; the kept two-tier design doc referenced two archived siblings without saying where they went. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The old guide documented only the legacy run_eval/Ollama harness and claimed 261 tests (actual: 1045). Canonical pipeline now leads: submodule clone, green pytest, cheap smoke run, paid R1 reproduction with cost warning, scoring, fleet rails. Legacy harness demoted to a labeled appendix. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
run_eval takes --benchmark tiers --tier N (not --tiers); play_task takes the task file as a positional argument (not --task). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s; honest BYO-model steps The documented smoke command omitted --manifest and died in check_run_config_expectations; the R1 section claimed 64k caps for all three models (Qwen tier is 8k phase-1); adding a model also requires a provider branch in _build_agent_from_spec, not just a run-config entry. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ledgments Replaces the stub with the finalized draft: submodule-aware install, cheap smoke quickstart with the paid R1 reproduction split out under a cost warning, corrected structure table (analysis/ moved out; mazes/ vs ogbench corpus), explicit eval-data note (panels public now, rotate at R3), Limitations, OGBench/MiniGrid attribution, MIT license section. Remaining HUMAN markers (logo, links, final headline numbers, BibTeX) gate the merge. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
test_results_repo_is_gitignored only passed when the ignored results repo existed on disk (dir-only gitignore pattern) — fresh clones and CI failed; check-ignore now gets the trailing slash. Annotate the remaining comments that pointed at relocated scripts, archived docs, and unpublished local design notes. CI now asserts the wheel ships neither mazes/ nor deploy/. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
origin/main's only commit not in this line is merge 325dc0b (PR #33, text-summary-and-last3), whose branch tip 8423912 is already an ancestor here; the feature line carried that work forward ~100 commits. -s ours keeps this branch's tree wholesale and makes the release PR mergeable. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Preserves PRs #39/#40 (demo/ package, enhanced play_task.py, watchdog and checkpoint changes, expanded default manifest). Conflicts: RUNME.md kept from the release rewrite (demo section re-added on top); the D3 maze kept deleted — main's in-tree goal fix is already present in the canonical ogbench submodule copy that replaced the duplicate corpus. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s + document the demo The playable-demo rows added on main sourced the retired in-tree duplicate corpus; the same files (canonical, goal-fixed) live in the ogbench submodule the R1 manifests already resolve. RUNME gains the demo section lost in the merge resolution. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The demo's default task and R1-folder hint referenced the retired duplicate corpus; the R1-comparison table loader hard-required a sibling Multinet-v2-results checkout and crashed play_task.py at startup without one. It now also finds the nested layout and degrades to comparison-off when no table exists. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…l; RUNME reconcile Episode end on any task outside the R1 results table (the default on a fresh clone) raised out of the render path and killed the window, losing --record trajectories. play_task.py became a shim over demo/ but the wheel didn't package demo/. RUNME's legacy appendix still advertised the pre-demo play_task; SS3 gains a cost note about the expanded default manifest catalog. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
demo/api subpackage + r1_config/r1_tasks modules from main. pyproject resolved as the union of the release metadata/packaging trims and PR #44's additions; demo/ui.py takes main's refactor with the release line's two semantic fixes re-verified (no retired-corpus paths, no launch-blocking raise without an R1 table). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Operator directive: internal docs (archived runbooks/campaign records, local design notes, relocated analysis paths) must not be referenced from public files at all — prior rounds only annotated them. Prose reworded to stand alone; manifest selection provenance reduced to bare set names; run-config notes keep only citations of docs that ship. Task rows, model blocks, and experiment configs are byte-identical (episode-hash safety). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…_DEFECTS The fork now carries the (8,1) goal correction across the 10x10_dense_1 skeleton (mechanisms mandatory again) plus the restored sg-family metadata, so the pinned-known-bad-value exemptions come out and every family assertion runs strict. S4/D3 specs change vs what R1 ran (they ran at the wrong-direction (8,8) goal, possibly mechanism-bypassable — an analysis caveat, not a scoring error); cached episodes for changed tasks invalidate by design via the task-spec hash. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- gridworld/baselines.py: drop the dangling RUN_NOTES_incidents_and_findings.md pointer from the DROP-model caveat comment (the caveat itself is already inlined; the cited file lives only in the private results repo) - manifest.r1_kimi_rerun.json: reword selection.evidence from a results-repo CSV path to a standalone description (task rows untouched) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0123tBVPUyVJA5NsocRCYTmU
…tures
Audit-verified zero-reference deletions (grep for importers, console scripts,
docs, dynamic filename construction in sweep_state.py):
- First-prototype-era code (2026-04/05, superseded by custom_env.py /
run_pipeline.py / demo/): gridworld/demo.py, gridworld/envs/ (tier_envs),
multigrid/demo.py, example_usage.py, interactive_demo.py,
visualize_grid{,s_proper}.py, scripts/render_*_maze{,s}_jsons.py,
scripts/render_ogbench_mazes.py, scripts/demo_baselines.py; pyproject
py-modules pruned to match; backends doc tree updated
- Retired campaign fixtures (archived to the results repo docs-archive/
fixtures-retired/ first): the pre-R1 ogbench_50 draft run-config, two
superseded Qwen3.5-HF run-configs, the ctxfix backfill run-configs
(context_window_{claude,kimi}_only) and their one-off kimi_missing
manifests
Kept deliberately: all conditional_*_{claude_kimi,qwen}.json split configs
(sweep_state.py constructs these names per SWEEP_TOPO), the documented
legacy harness cluster (run_eval/evaluation_harness/model_interface/
adapters/gridworld runner+tasks), and frozen cross_domain/.
Suite: 1032 passed (was 1034; the two removed cases are
test_all_committed_manifest_sources_resolve params for the two deleted
diagnostic manifests).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0123tBVPUyVJA5NsocRCYTmU
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Consolidated release-cleanup PR derived from five independent model audits (fable / opus / sonnet / codex-gpt5 / gpt5.6-terra, 2026-08-05; review reports are local-only under docs/release_cleanup_reviews/). One commit per workstream, plus a live-main integration (below):
mazes/exp_maze_jsons/retired — a stale, byte-drifted duplicate of the ogbench corpus carrying amaze.goal != goal.targetviolation in D3 that the D1-scoped assertion couldn't catch; maze tests now read the corpus the R1 manifests actually resolve; new corpus-wide goal-invariant test; one-shot disjointness scan extended to the live corpus--recurse-submodulesinstall docs;.gitmodulestracks the branch containing the pin; all 10 console entry points work (regression-tested); perf benchmarks opt-in (-m slow) sopytestis a deterministic install check; repo-root conftest.py makes unpackaged modules importable in any pytest invocationdocs-archive/; docs index, RUNME, and public README rewritten around the canonicalscripts.run_pipelinestack; smoke quickstart verified to pass the manifest guard end-to-endSuite: 1034 passed, 21 perf tests deselected by default (opt-in via
pytest -m slow). Verified from a fresh--recurse-submodulesclone with no API keys.🔀 Live-main integration (playable demo)
While this branch was in flight,
maingained the playable demo (PRs #39/#40:demo/package,play_task.pyrewrite, watchdog/checkpoint refactor, +463-line default-manifest catalog). This PR merges it in rather than clobbering it:ogbenchcorpus (same filenames; every target verified to exist).Multinet-v2-resultscheckout and crashedplay_task.pyat startup (now sibling-or-nested, degrades to comparison-off), and episode end raised for any task outside the R1 table (now renders a plain end card;--recordno longer loses trajectories).demo*added to the wheel (play_task became a shim over it); watchdog auto-merge verified coherent (singleProgressStallWatchdogdrives live, resume, and demo paths — DROP-era progress signature preserved).demo_api) merged as well:demo/api/HTTP subpackage +r1_config/r1_tasksmodules; pyproject resolved as the union (release metadata/trims kept, theirwebextra adopted); the no-R1-table raise-removal re-applied where their refactor relocated it.gridworld/fixtures/manifest.jsoncatalog grew 16 → 58 tasks (incl. the R1 panel) — it's a demo browse catalog; always pass explicit--run-config/--manifestfor pipeline runs (RUNME §3 now says so).The current maze panels —
mazes/validation_10, the conditional blind probe,gridworld/tasks, and the ogbench procgen corpus — are public by design for R1 reproducibility. These are NOT long-term held-out targets: evaluation panels rotate at the R3 release. When building the proper data pipeline, design for panel rotation and treat everything currently public as burned for held-out purposes.✅ Corpus defects: fixed at source (was: frozen + tracked)
Retiring the duplicate corpus surfaced real defects in the pinned ogbench corpus; they are now fixed in the fork (
fix/d3-goal@8d8cecd, pin bumped) and theKNOWN_CORPUS_DEFECTStracking registry is retired — every family assertion runs strict again:10x10_dense_1skeleton (S4, D3; M1–M6 confirmed already correct). Investigation showed (8,8) — the direction of the earlier31a0549/319b902fixes — is reachable via an always-open bottom corridor, making every mechanism optional; (8,1) is the designed, mechanism-mandatory goal that 208/214 of the corpus uses.271bf47).S4/10x10_dense_1andD3/10x10_dense_deadend_ky_dy_1ran R1 at the wrong-direction (8,8) goal and may have been mechanism-bypassable — worth checking those episodes and their BFS baselines. Recorded episodes remain valid records of what was run; the corrected task specs invalidate caches for changed tasks by design (task-spec hash).Merge blockers (human inputs —
grep -n 'HUMAN:' README.md)docs/figures/multinet_logo.png(or drop the img tag)Notes for reviewers
docs-archive/— commit that repo separately. Per operator directive, all references to internal/unpublished documents were removed from tracked files (prose reworded to stand alone; manifest provenance reduced to bare set names; task rows / model blocks byte-identical — hash-verified).selection.source_setprovenance strings were annotated.Release-cut runbook (after approval — NOT part of this diff)
git filter-repomessage rewrite onmainto strip the 62 pre-existingClaude-Session:trailer lines; force-push (coordinated).postmortem/r1-teardown,fix/drop-key-bookkeeping,revert-*,cursor/*,pr*/) after checking each for unmerged work.v2.0.0.fix/d3-goal->masterand repin to master (corpus fixes already landed onfix/d3-goal); optionally ask GitHub support to gc unreferenced objects.🤖 Generated with Claude Code