da7cde3ef9
CI / Lint (ruff check) (push) Successful in 27s
CI / Format (ruff format) (push) Successful in 28s
CI / Sync project version with tag (push) Has been skipped
CI / Lint (ruff check) (pull_request) Successful in 36s
CI / Type check (ty) (push) Successful in 39s
CI / Format (ruff format) (pull_request) Successful in 30s
CI / Sync project version with tag (pull_request) Has been skipped
CI / Type check (ty) (pull_request) Successful in 30s
CI / Tests (pull_request) Successful in 2m50s
CI / Tests (push) Successful in 2m58s
Works through docs/v0.3.0-followups.md item by item, closing the gap between the design doc and the shipped v0.3.0-stage2-autoregressive code: 1. validate.py: 7-tuple batch unpacking, sample_stage1/sample_stage2 dispatch, stage-2 particle-type-class marginal. 2. Stage-prefixed --stage1-*/--stage2-* CLI flags for train/new-run. 3. Thread stage2_model.k_max through loader/transforms/dataset/pipeline/ train instead of the hardcoded K_MAX constant. 4. Mixed conditioning.particle.type / conditioning.material.type support end-to-end (data pipeline + dwarf warm-cache). 5. conditioning.share_stages = true: one shared ConditionEncoder instance across both stages. 6. stage2_model.generator = "ddpm" formally deferred into design doc §11.2 (was silently unimplemented). 7. giant predict/rollout: implement conditioning.*.type = "onehot" via the checkpoint's saved pdg_topn_map/mat_topn_map. 8. network.py's checkpoint-path model_config migration now fails loudly on non-zero legacy expert_hidden_dim/expert_n_blocks, matching config.py's TOML-load path (§4.2). 9. validate_config now rejects stage2_model.n_sec.mode = "truth" for a rollout-capable checkpoint (§9). Also cleared all pre-existing `ty check` noise (44 -> 0 diagnostics), mostly a test-helper dict-unpack pattern that made every unrelated constructor keyword look like a type error. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2.0 KiB
2.0 KiB
v0.3.0 — post-implementation audit: open discrepancies
Status: steps 1–7 of docs/v0.3.0-design.md §12 are implemented (branch
v0.3.0-stage2-autoregressive, commits eb6dd27..200c6d2). This document
tracked discrepancies found between that implementation and the design contract
during a 2026-08-07 audit, as concrete work items. All items (1-9) are now
resolved — either implemented (1-5, 7-9) or explicitly deferred into
docs/v0.3.0-design.md §11.2 (6: stage2_model.generator = "ddpm"). Step 8
(estimate_batch_size recalibration) was intentionally still outstanding per
§12 and was never tracked here.
Confirmed correct during the audit (no action needed)
For reference — these were explicitly checked against the design doc and match it, including two spots the doc itself flagged as likely stale that turned out fine:
- Config schema,
DEFAULT_CONFIG,migrate_configtable (§4),save_config/merge_cli_overridesrecursion,default_out_dir_name,Conditioningenum,n_sec.mode = "stop_token"error (§9, §11.2). network.py's full class decomposition (§5.3), dict-returningbuild_models/build_critics(§5.4),ExpertTrunkseparate in/out dims, ST-Gumbel wiring (§2.1), AR token layout (§6.1), Markov/Attention history encoders (§6.2).- Shared PDG top-N type map (one map, not two, per §8),
other_policysample/modal/drop (§11.1), embedding L1-nearest decode, and the L1-distance diagnostic surfaced ingiant analyze(§11.3). analysis/render.py/analysis/router_gating.pycorrectly branch old-flat vs new-nestedmodel_config["router"]location — doc flagged this as a likely stale spot (§10) but it's actually fine.train.py's per-stage trainers, mixed flow+wgan runs, WGAN critic cadence, per-stage router auxiliary losses, stage-prefixed metrics, stage-2-only training via ground-truthx1_s1(§7).pipeline.py's deleted wgan+router rejection, per-stagecenters_initseeding, removed stale expert-size warning (§9, §10).