File size: 42,064 Bytes
a60f931 55604d4 a60f931 1650732 a60f931 8b49de3 a60f931 8b49de3 a60f931 f55ce77 8b49de3 a60f931 55d5d4d a60f931 55d5d4d a60f931 55d5d4d a60f931 55d5d4d a60f931 55d5d4d a60f931 6ffbf48 f55ce77 a60f931 ec445d9 a60f931 e323159 ec445d9 a60f931 e323159 b0aad87 55d5d4d a60f931 55d5d4d a60f931 55d5d4d a60f931 e323159 a60f931 ec445d9 a60f931 ec445d9 d671906 a60f931 e323159 5f5c316 7b4940e a0e02c1 a60f931 d92cbb7 a60f931 8b49de3 a60f931 7ce12a3 a60f931 1650732 a60f931 6ffbf48 f55ce77 a60f931 ec445d9 b0aad87 a60f931 ec445d9 7ce12a3 55604d4 d671906 6b62d84 a60f931 8b49de3 a60f931 ec445d9 805065b 1650732 ec445d9 1650732 805065b ec445d9 f55ce77 805065b f55ce77 805065b f55ce77 805065b f55ce77 6d91e5c 1650732 6d91e5c 1650732 6d91e5c 1650732 6d91e5c a60f931 b0aad87 ec445d9 7ce12a3 55604d4 a60f931 1dbca63 0d8d60e 1dbca63 0d8d60e 1dbca63 0d8d60e 1dbca63 0d8d60e a60f931 55d5d4d a60f931 55d5d4d a60f931 55d5d4d a60f931 55d5d4d a60f931 55d5d4d a60f931 55d5d4d a60f931 d92cbb7 a60f931 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 | # VLA / CIL-Atlas / Causal Tangent Transport
This repository is the working codebase for a robot-learning research project
around same-state counterfactual action charts and Causal Tangent Transport
(CTT).
The single spine of the project is:
> Standard VLA training observes one demonstrated action per state. CIL-Atlas
> restores the same state, executes multiple action chunks, and measures which
> local action tangents causally improve, recover, fail, collide, or succeed.
> CTT turns this measured local causal geometry into deployment-clean proposal
> generation by transporting measured positive do-action tangents from
> train-only neighboring charts into the target chart.
The current evidence is intentionally written as a diagnostic method paper, not
as an overclaimed final success. K=16 `env_clip` support is strong on held-out
test (`proposal_oracle_success = 0.5694`, `OutcomePTR@16 = 0.5486`), while the
selector/dominance side remains the bottleneck. The strongest current
train-clean K=16 selector reaches `selected_success = 0.3542` against a
`0.5694` proposal oracle, leaving a `0.2431` success selector gap. The
score-source LCB dominance fallback is safe under action-bound labels but
negative as a selector (`0.2778` auto, `0.2917` tau0). Additional K=8 tanh
and per-dimension trainmax selector sweeps completed on 2026-07-04; the best
tanh selector reaches `0.3819` selected success, but its proposal oracle is
only `0.3819`, so it does not replace the K=16 `env_clip` outcome gate.
All project-authored Markdown files outside vendored/tool caches were removed
and consolidated into this README. The canonical paper is `latex/main.tex` plus
`latex/main.pdf`; experiment evidence lives in JSON, TeX, logs, configs, and
command files under `runs/`.
## Research Goal
The paper target is not "a bigger stack." The target is a clean method story:
1. Same-state CIL charts define local do-action causal geometry.
2. Causal Action Regret decomposes deployment failure into support gap plus
selector gap.
3. CTT proposes candidates by transporting measured train positive tangents,
not by Gaussian noise or verifier optimization off support.
4. Utility energy and calibrated dominance decide whether a transported tangent
should replace the base action.
5. Every main claim must have a method, implemented script/module, metric table,
leakage audit, and reproducible run log.
Current strategic diagnosis:
| Area | Current status | Meaning |
| --- | --- | --- |
| Same-state chart data | Implemented and leakage-audited | Good scientific primitive |
| Metrics | Implemented with measured/proxy separation | OutcomePTR and PPTC are not confused |
| CTT residual transport | Implemented and measured | K=16 support is real |
| Gated/residual proxy variants | Implemented | Mostly diagnostic |
| `env_clip` execution convention | Implemented | Action-bound-clean current convention |
| Learned dominance selectors | Implemented | Best current selector still leaves large gap |
| LCB calibrated dominance | Implemented | Safe fallback diagnostic, not successful selector |
| Object-layout hand features | Implemented | Negative measured result |
| Theory notes/section | Implemented | Honest support-regret framing |
| Paper | Implemented in LaTeX | Must remain diagnostic until selector improves |
## High-Level Layout
```text
.
|-- cil/ Core CTT metrics, chart features, and small models.
|-- dovla_cil/ Broader CIL/VLA framework: data, sims, models, eval.
|-- configs/ YAML/JSON configs for baselines, CTT, large jobs, toy jobs.
|-- data/ Exported CIL chart indexes and shards.
|-- latex/ Main paper source, tables, references, and PDF.
|-- paper/ Theory section used by the LaTeX paper.
|-- scripts/ Training, export, audit, rollout, evaluation, HF sync.
|-- manifests/ Job/run manifests and active templates.
|-- runs/ Reproducible experiment artifacts and metrics.
|-- logs/ Cluster/stdout/stderr logs and local sync logs.
|-- outputs/ Scratch-like local outputs and HF sync manifests.
|-- reports/ Legacy non-Markdown report data and CSVs.
|-- results/ Legacy non-Markdown result artifacts, if any remain.
|-- tests/ Unit/regression tests.
|-- Makefile Convenience command entrypoint.
```
## Folder And File Inventory
### Root
- `README.md`: this file. The only Markdown document kept in the workspace.
- `Makefile`: convenience wrapper for common commands.
- `pyproject.toml`: Python packaging/tooling metadata for tests and local dev.
- `.env.example`: example environment variables; do not store secrets here.
- `.gitignore`: ignored local artifacts, caches, and generated files.
- `.claude/`, `.codex/`, `.agents/`, `.remember/`: local assistant/tool state.
- `.pytest_cache/`, `.ruff_cache/`: local test/lint caches.
### `cil/`
Core research implementation for CTT and canonical metrics.
- `cil/__init__.py`: package marker.
- `cil/chart_features.py`: deployment-visible chart feature construction.
Feature modes include `base`, `base_context`, `base_context_obs`,
`base_context_obj`, and `base_context_obs_obj`. This file is important
because it controls what information the selector/generator may see.
- `cil/metrics.py`: canonical metrics:
- BranchCAR / branch causal action regret.
- OutcomePTR@K for measured executed generated candidates.
- PPTC@K for distance-only proxy positive tangent coverage.
- SelectorRegret@K.
- SupportGap.
- ProxySupportDistance.
- NegativeNear.
- PosCloserThanNeg.
- Pairwise Causal Calibration Error.
- safety label coverage and unsafe-rate helpers.
- `cil/models/__init__.py`: model package exports.
- `cil/models/chart_encoder.py`: chart encoder used by CTT/utility energy.
- `cil/models/tangent_encoder.py`: tangent encoder and normalization helpers.
- `cil/models/ctt.py`: Causal Tangent Transport model definitions, including
residual/gated transport variants.
- `cil/models/utility_energy.py`: utility energy scorer used by ranking and
dominance.
### `dovla_cil/`
General CIL/VLA framework code. This is older and broader than the compact
`cil/` CTT layer.
- `dovla_cil/config/defaults.yaml`: default project config.
- `dovla_cil/config/schema.py`: config schema.
- `dovla_cil/effects/extractors.py`: outcome/effect extraction utilities.
- `dovla_cil/effects/failure_classifier.py`: failure classifier logic.
- `dovla_cil/effects/rewards.py`: scalar reward/utility helpers.
- `dovla_cil/eval/causalstress.py`: causal stress evaluation.
- `dovla_cil/eval/external_vla_baseline.py`: external VLA baseline eval.
- `dovla_cil/eval/lattice_eval.py`: CIL lattice evaluation.
- `dovla_cil/eval/libero_eval.py`: LIBERO eval adapter.
- `dovla_cil/eval/maniskill_eval.py`: ManiSkill eval adapter.
- `dovla_cil/eval/maniskill_policy_rollout.py`: policy rollout harness.
- `dovla_cil/eval/metrics.py`: legacy eval metrics.
- `dovla_cil/eval/simpler_eval.py`: simpler eval adapter.
- `dovla_cil/eval/smolvla_cil_baseline.py`: SmolVLA CIL baseline eval.
- `dovla_cil/eval/smolvla_runtime.py`: SmolVLA runtime wrapper.
- `dovla_cil/experiments/baselines.py`: baseline experiment definitions.
- `dovla_cil/experiments/manifest.py`: manifest execution helpers.
- `dovla_cil/experiments/reports.py`: legacy report generation helpers.
- `dovla_cil/experiments/scaling.py`: scaling experiment helpers.
- `dovla_cil/generation/distributed.py`: distributed generation utilities.
- `dovla_cil/generation/maniskill_lattice.py`: ManiSkill lattice generation.
- `dovla_cil/generation/maniskill_parallel.py`: parallel ManiSkill generation.
- `dovla_cil/generation/maniskill_render.py`: rendering utilities.
- `dovla_cil/generation/pipeline.py`: generation pipeline orchestration.
- `dovla_cil/generation/tangent_chart_synthesis.py`: chart synthesis baseline.
- `dovla_cil/generation/tangent_cvae.py`: raw/positive tangent CVAE baseline.
- `dovla_cil/generation/tangent_local_atlas.py`: local atlas memory baseline.
- `dovla_cil/generation/tangent_memory.py`: tangent memory utilities.
- `dovla_cil/generation/tangent_spline_cvae.py`: spline-CVAE baseline.
- `dovla_cil/generation/tangent_spline_flow.py`: spline flow baseline.
- `dovla_cil/generation/tangent_spline_guided_flow.py`: guided spline flow.
- `dovla_cil/generation/tangent_targets.py`: tangent target construction.
- `dovla_cil/interventions/language_counterfactuals.py`: language CIL changes.
- `dovla_cil/interventions/perturbations.py`: action/scene perturbations.
- `dovla_cil/interventions/physics_counterfactuals.py`: physics interventions.
- `dovla_cil/interventions/samplers.py`: intervention samplers.
- `dovla_cil/interventions/schema.py`: intervention data schema.
- `dovla_cil/models/action_encoder.py`: action encoder.
- `dovla_cil/models/dovla.py`: base DOVLA model.
- `dovla_cil/models/dovla_attention.py`: attention model variant.
- `dovla_cil/models/dovla_attention_enhanced.py`: enhanced attention variant.
- `dovla_cil/models/dovla_hybrid.py`: hybrid model variant.
- `dovla_cil/models/dovla_transformer.py`: transformer model variant.
- `dovla_cil/models/effect_heads.py`: effect prediction heads.
- `dovla_cil/models/openvla_adapter.py`: OpenVLA adapter.
- `dovla_cil/models/policy_heads.py`: policy output heads.
- `dovla_cil/retrieval/embeddings.py`: retrieval embedding utilities.
- `dovla_cil/retrieval/eval.py`: retrieval evaluation.
- `dovla_cil/retrieval/index.py`: retrieval index.
- `dovla_cil/retrieval/prompting.py`: retrieval prompt helpers.
- `dovla_cil/retrieval/retriever.py`: retriever implementation.
- `dovla_cil/sim/base.py`: simulator interface.
- `dovla_cil/sim/genesis_backend.py`: Genesis simulator backend.
- `dovla_cil/sim/maniskill_backend.py`: ManiSkill backend.
- `dovla_cil/sim/registry.py`: simulator registry.
- `dovla_cil/sim/toy_backend.py`: toy backend.
- `dovla_cil/tasks/library.py`: task library.
- `dovla_cil/tasks/predicates.py`: task predicates.
- `dovla_cil/tasks/schema.py`: task schema.
- `dovla_cil/tasks/validators.py`: task validation.
- `dovla_cil/training/collate.py`: data collation.
- `dovla_cil/training/losses.py`: training losses.
- `dovla_cil/training/metrics.py`: training metrics.
- `dovla_cil/training/trainer.py`: trainer implementation.
- `dovla_cil/transfercritic/*`: transfer critic labels, model, training,
selection, and evaluation.
- `dovla_cil/utils/*`: hashing, IO, logging, seeding, language embeddings,
and OpenClaude client helpers.
- `dovla_cil/vlm/*`: VLM annotation, prompts, clients, and task generation.
- `dovla_cil/py.typed`: marks the package as typed.
### `configs/`
Configuration files for experiments.
- `configs/ctt/residual_smoke.yaml`: small residual CTT smoke config.
- `configs/ctt/residual_full.yaml`: full residual CTT config.
- `configs/ctt/residual_ot_smoke.yaml`: residual CTT smoke config with
entropic OT alignment enabled.
- `configs/ctt/residual_ot_full.yaml`: full residual CTT + OT config.
- `configs/ctt/residual_no_cycle_smoke.yaml`: residual CTT smoke config with
cycle consistency disabled.
- `configs/ctt/residual_no_cycle_full.yaml`: full residual CTT no-cycle
ablation config.
- `configs/ctt/gated_residual_smoke.yaml`: small gated CTT smoke config.
- `configs/ctt/gated_residual_full.yaml`: full gated CTT config.
- `configs/baselines/*.yaml`: baseline configs for expert-only BC,
cross-state negatives, random negatives, label-only counterfactuals, and
world-model auxiliary baselines.
- `configs/external/*.json`: SmolVLA aligned/full/smoke external configs.
- `configs/hpc/nvidia_icd.json`: HPC GPU/ICD runtime config.
- `configs/large/*.yaml`: large-scale generation/training templates.
- `configs/toy/*.yaml`: toy generation/eval/training configs.
### `data/`
Exported CIL chart databases. These are generated artifacts, not source code.
- `data/cil_charts/{train,val,test}/`: original chart indexes/shards.
- `data/cil_charts_rgb_refs/{train,val,test}/`: non-destructive RGB-reference
chart export with observation refs and deterministic RGB/object features.
- `index.json` inside each split records split hashes, content hashes,
retrieval permissions, and evaluator-only outcome contracts.
- NPZ shards store chart rows, base actions, branch actions, utility labels,
outcome vectors, residual action tangents, spline tangent codes, and metadata.
### `latex/`
Paper source and build artifacts.
- `latex/main.tex`: canonical paper draft. This is the single main paper source.
- `latex/main.pdf`: compiled PDF.
- `latex/references.bib`: bibliography.
- `latex/tables/*.tex`: hand-maintained or generated tables used by `main.tex`.
- `latex/main.aux`, `main.bbl`, `main.blg`, `main.fdb_latexmk`, `main.fls`,
`main.log`, `main.out`: LaTeX build intermediates.
### `paper/`
Paper sections that are included or copied into the LaTeX draft.
- `paper/sections/theory.tex`: formal theory section with same-state causal
contrast identifiability, CAR decomposition, support/sample-complexity
arguments, and transport smoothness/support-regret bounds.
- `paper/notes/`: reserved for non-Markdown theory notes if needed. Markdown
notes were removed to keep this README as the single textual overview.
### `scripts/`
Main executable research pipeline.
Data/chart export and audits:
- `scripts/export_cil_charts.py`: exports train/val/test CIL chart DB.
- `scripts/build_data_accounting.py`: builds data accounting artifacts. Use
`--no-markdown-report` for README-only runs.
- `scripts/audit_cil_charts.py`: leakage audit for chart indexes and run
hashes. Use `--no-markdown-report` for README-only runs.
- `scripts/audit_leakage.py`: legacy leakage audit.
- `scripts/audit_action_bounds.py`: action-bound validity audit. Use
`--no-markdown-report` for README-only runs.
- `scripts/audit_chart_feature_sources.py`: audits feature source availability.
Use `--no-markdown-report` for README-only runs.
- `scripts/check_tangent_reconstruction.py`: verifies spline tangent
reconstruction exactly matches stored residuals. Use `--no-markdown-report`
for README-only runs.
- `scripts/build_action_scale_vector.py`: builds per-dimension action scaling.
Use `--no-markdown-report` for README-only runs.
CTT training/proxy/rollout:
- `scripts/train_ctt.py`: trains residual or gated residual CTT. It logs
configured loss weights plus per-epoch component losses for Chamfer positive
alignment, optional entropic OT alignment, negative boundary, ranking, cycle,
and diversity terms. Use `--no-markdown-report` for README-only runs.
- `scripts/eval_ctt_proxy.py`: proxy support evaluation with PPTC,
NegativeNear, PosCloserThanNeg, distance, diversity, and collapse metrics.
Use `--no-markdown-report` for README-only runs.
- `scripts/eval_ctt_generated_rollout.py`: measured rollout harness that
restores states, decodes generated tangents, executes candidates, and writes
measured candidate rows. Use `--no-markdown-report` for README-only runs.
- `scripts/eval_ctt_rollout.py`: measured-output wrapper. Use
`--no-markdown-report` for README-only runs.
- `scripts/build_ctt_proxy_comparison.py`: proxy comparison/gate table with
by-task/by-seed JSON outputs. Use `--no-markdown-report` for README-only
runs.
- `scripts/build_ctt_rollout_comparison.py`: measured rollout aggregation.
Use `--no-markdown-report` for README-only runs.
- `scripts/build_ctt_outcome_gate.py`: measured outcome acceptance gate that
combines rollout support and train-clean selector artifacts.
- `scripts/summarize_ctt_runs.py`: global CSV summary. Use
`--no-markdown-report` so the persistent prose overview remains this README.
Dominance and utility:
- `scripts/train_utility_energy.py`: train-only utility energy model. Use
`--no-markdown-report` for README-only runs.
- `scripts/calibrate_dominance.py`: conformal-style dominance calibration rule.
Use `--no-markdown-report` for README-only runs.
- `scripts/eval_dominance_selector.py`: LCB dominance fallback evaluation.
Reports selected success, coverage, fallback, unsafe execution, PCCE,
selector regret, and support/selector gaps. Use `--no-markdown-report` for
README-only runs.
- `scripts/eval_learned_dominance_selector.py`: ridge learned dominance
selector with basic/context/tangent/source/chart-compat and score-shape
features. Use `--no-markdown-report` for README-only runs.
- `scripts/eval_nonlinear_dominance_selector.py`: nonlinear selector sweep.
Use `--no-markdown-report` for README-only runs.
- `scripts/build_selector_diagnostic_sweep.py`: non-cherry-picked selector
diagnostic summary builder. It reads completed selector `metrics.json`
artifacts, keeps all candidate rows, selects the best row per action
convention by held-out selected success, and writes JSON/TeX/log outputs.
Metric and paper artifacts:
- `scripts/eval_metrics.py`: canonical measured/proxy metric evaluator. It
writes JSON, TeX, config, command, hash, and log artifacts; use
`--no-markdown-report` for README-only runs.
- `scripts/audit_ctt_paper_artifacts.py`: claim-to-artifact audit for the CTT
paper. It scans forbidden wording, paper table inputs, implementation paths,
run artifact contracts, and the README-only Markdown invariant, then writes
JSON/TeX audit outputs without creating extra persistent Markdown files.
- `scripts/backfill_paper_run_artifacts.py`: transparent non-Markdown
backfill for paper-referenced run dirs that are missing grouped metric
placeholders, config metadata, or log stubs. It preserves existing files and
intentionally does not recreate deleted `report.md` files.
- `scripts/reproduce_v0_report.py`: V0 reproduction artifact.
- `scripts/make_paper_artifacts.py`: generated paper tables/artifacts.
- `scripts/build_paper_analysis.py`: paper analysis builder.
- `scripts/build_paper_table_status.py`: paper table status builder.
- `scripts/report_dataset.py`, `report_eval.py`, `report_hpc_clean_results.py`:
structured reporting helpers.
Generation and baseline scripts:
- `scripts/generate_cil.py`: CIL generation entrypoint.
- `scripts/generate_cil_distributed.py`: distributed CIL generation.
- `scripts/generate_maniskill_lattice.py`: ManiSkill lattice generator.
- `scripts/generate_metaworld_lattice.py`: MetaWorld lattice generator.
- `scripts/generate_rlbench_lattice.py`: RLBench lattice generator.
- `scripts/generate_12task_collection.py`: larger task collection generator.
- `scripts/make_cil_collection.py`: collection builder.
- `scripts/merge_task_datasets.py`: merge task datasets.
- `scripts/prepare_baseline_dataset.py`: baseline dataset prep.
- `scripts/run_baseline.py`: baseline launcher.
- `scripts/run_external_vla_baseline.py`: external VLA baseline launcher.
- `scripts/run_manifest.py`: manifest executor.
- `scripts/run_master_workflow.sh`: legacy master workflow.
Positive tangent baselines:
- `scripts/export_positive_tangent_targets.py`: exports positive tangent targets.
- `scripts/eval_positive_tangent_memory.py`: memory baseline eval.
- `scripts/eval_positive_tangent_local_atlas.py`: local atlas baseline eval.
- `scripts/eval_positive_tangent_chart_synthesis.py`: chart synthesis eval.
- `scripts/train_positive_tangent_cvae.py`: CVAE baseline training.
- `scripts/train_positive_tangent_spline_cvae.py`: spline-CVAE training.
- `scripts/train_positive_tangent_spline_flow.py`: spline flow training.
- `scripts/train_positive_tangent_guided_spline_flow.py`: guided flow training.
- `scripts/summarize_positive_tangent_*`: sweep summarizers.
Legacy DOVLA training/eval:
- `scripts/train_dovla.py`: base DOVLA training.
- `scripts/train_dovla_attention.py`: attention variant.
- `scripts/train_dovla_enhanced.py`: enhanced variant.
- `scripts/train_dovla_transformer.py`: transformer variant.
- `scripts/train_hybrid_direct.py`: hybrid direct model.
- `scripts/train_transformer_with_language.py`: language transformer training.
- `scripts/eval_*checkpoint.py`: checkpoint evaluators.
- `scripts/evaluate_phase_a*.py`: legacy phase evaluators.
HF sync and operations:
- `scripts/hf_push_once.sh`: one-shot HF upload of workspace/scratch roots.
It also removes stale remote Markdown by default, keeping only
`workspace/README.md` unless `HF_SYNC_REMOTE_MARKDOWN_KEEP` is changed.
- `scripts/hf_push_every_15m.sh`: local 15-minute HF sync daemon.
- `scripts/hf_sync_daemon.sh`: alternate daemon wrapper.
- `scripts/auto_sync_hf.py`: legacy auto-sync helper.
- `scripts/check_hf_sync.sh`: HF sync check.
- `scripts/quick_start.sh`, `run_eval.sh`, `run_inference.sh`,
`run_train_debug.sh`, `smoke_test.sh`: convenience shell entrypoints.
### `scripts/slurm/`
Cluster job templates. Important groups:
- CTT: `train_ctt_proxy_sweep.sbatch`, `train_ctt_feature_proxy.sbatch`,
`train_ctt_ot_proxy.sbatch`, `train_ctt_no_cycle_proxy.sbatch`,
`eval_ctt_generated_rollout.sbatch`.
- Dominance: `eval_tanh_train_dominance.sbatch`,
`eval_perdim_trainmax_dominance.sbatch`,
`eval_bundle_consensus_dominance.sbatch`,
`train_utility_energy_selector.sbatch`.
- Rendering/export: `render_six_task_chart_observations.sbatch`,
`reexport_rgb_ref_cil_charts.sbatch`, `render_maniskill_observations.sbatch`.
- Baselines/generation: `generate_6task_h16.sbatch`,
`make_maniskill_collection.sbatch`, `train_maniskill_*`.
- Legacy model training/eval: `train_dovla*.sbatch`, `train_transformer*.sbatch`,
`eval_*`.
- HF sync: `hf_push_daemon.sbatch`.
### `manifests/`
Run manifests and templates.
- `manifests/cil_1b_template.yaml`: active large template opened in the IDE.
- `manifests/cil_160m.yaml`: smaller CIL manifest.
- `manifests/baselines_full.yaml`: full baseline manifest.
- `manifests/scaling_k_sweep.yaml`: scaling/K sweep.
- `manifests/source_score_bonus_pick001_stack005.*`: source-score bonus configs.
### `runs/`
Reproducible experiment artifacts. Each serious run should contain:
```text
config.yaml
command.txt
git_hash.txt
data_hash.txt
split_hash.txt
train.log
eval.log
metrics.json
metrics_by_task.json
metrics_by_seed.json
table.tex
```
Markdown `report.md` files were removed per the current cleanup request. Use
`metrics.json`, `table.tex`, logs, and this README instead.
High-value run directories:
- `runs/data_accounting`: verified data counts.
- `runs/leakage_audit`: original leakage audit.
- `runs/leakage_audit_rgb_refs`: RGB-ref leakage audit.
- `runs/tangent_reconstruction`: original tangent reconstruction check.
- `runs/tangent_reconstruction_rgb_refs`: RGB-ref tangent reconstruction check.
- `runs/action_bound_audit_rgb_refs`: action-bound audit.
- `runs/chart_observation_embeddings_rgb_refs`: RGB-stat embedding export.
- `runs/chart_object_embeddings_rgb_refs`: object-layout embedding export.
- `runs/chart_feature_audit*`: feature-source audits.
- `runs/ctt_residual_full_seed{0,1,2}`: full residual CTT training.
- `runs/ctt_residual_ot_full_seed{0,1,2}`: completed full residual CTT + OT
ablation from Slurm job `15203117`; it passes the proxy gate but is worse
than plain residual CTT on PPTC and mean positive distance.
- `runs/ctt_residual_no_cycle_full_seed{0,1,2}`: completed no-cycle residual
CTT ablation from Slurm job `15204363`; it passes the proxy gate with lower
NegativeNear@0.20 but slightly weaker positive support than cycle residual
CTT.
- `runs/ctt_gated_residual_full_seed{0,1,2}`: full gated residual CTT training.
- `runs/ctt_residual_component_smoke`: real-data CTT training smoke with
`--no-markdown-report`; logs configured loss weights and per-component loss
means for Chamfer/OT positive alignment, negative boundary, ranking, cycle,
and diversity terms.
- `runs/ctt_base_context_obs_test_envclip_k16_rollout_comparison`: current
strongest measured support artifact.
- `runs/ctt_val_proxy_comparison`: CTT-vs-local-atlas proxy support gate.
- `runs/ctt_outcome_acceptance_gate`: measured Part-F outcome acceptance gate.
- `runs/ctt_base_context_obs_train_cal_envclip_k16_rollout_comparison`: train
calibration rows for K=16 `env_clip`.
- `runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test`: K=16 LCB
dominance auto threshold, negative selector result.
- `runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test_tau0`: K=16
LCB tau0 fallback, matches base but does not improve.
- `runs/ctt_base_context_obs_learned_dominance_chartcompat_obs_utility_task_envclip_k16_train_to_test`:
best current train-clean selector diagnostic.
- `runs/ctt_base_context_obs_learned_dominance_score_*_envclip_k16_train_to_test`:
score-shape selector diagnostics; these did not improve the best selector.
- `runs/ctt_base_context_obs_learned_dominance_*bundle*_envclip_k16_train_to_test`:
bundle-consensus selector diagnostics. These test whether agreement among
transported train-positive tangents is a useful deployment-visible confidence
signal.
- `runs/ctt_base_context_obs_learned_dominance_*_tanh_train_to_test`: K=8
tanh selector diagnostics from Slurm job `15149814`; best selected success
is `0.3819`, but proposal oracle is also only `0.3819`.
- `runs/ctt_base_context_obs_learned_dominance_*_perdim_trainmax_train_to_test`:
per-dimension trainmax selector diagnostics from Slurm job `15149815`; these
are below the current K=16 `env_clip` support setting.
- `runs/ctt_selector_diagnostic_sweep`: generated selector summary table used
by the paper to compare K=8 tanh, K=8 per-dim trainmax, K=16 env-clip, and
K=16 checkpoint utility-energy selector diagnostics without cherry-picking a
single row.
- `runs/ctt_base_context_obs_nonlinear_dominance_chartcompat_obs_*`: fixed
nonlinear selector diagnostics.
- `runs/summary_ctt.csv`: global run summary table.
### `logs/`
Cluster stdout/stderr and daemon logs.
- `logs/*.out` and `logs/*.err`: Slurm job output/error files.
- `logs/auto_sync_hf.log`: legacy HF auto-sync log.
- `logs/auto_sync_hf.pid`: legacy auto-sync PID file.
- `logs/workflow/`: workflow logs.
### `outputs/`
Local generated outputs and HF sync state.
- `outputs/hf_sync/hf_sync.log`: one-shot HF sync log.
- `outputs/hf_sync/hf_sync_daemon.log`: 15-minute daemon log.
- `outputs/hf_sync/last_manifest.json`: latest HF sync manifest.
- `outputs/hpc/`: HPC outputs.
- `outputs/external_vla*`: external VLA export/probe outputs.
- `outputs/manifest_*`: manifest smoke outputs.
- `outputs/phase5_*`: legacy phase-5 outputs.
- `outputs/smoke_*`, `outputs/train_smoke_*`: smoke outputs.
- `outputs/wheels`: local wheel/cache outputs.
### `reports/`
Legacy non-Markdown reports and CSV/JSON summaries.
- `reports/phase_a2_evaluation.json`: legacy Phase-A2 evaluation artifact.
- `reports/phase_a4_results.json`: legacy Phase-A4 result artifact.
- `reports/hpc_clean_results/clean_result_manifest.json`: file manifest for
the HPC-clean result sweep.
- `reports/hpc_clean_results/clean_result_rows.csv`: row-level clean-result
table.
- `reports/hpc_clean_results/clean_result_summary.csv`: aggregate
clean-result summary.
- `reports/hpc_clean_results/excluded_unclean_paths.txt`: paths excluded from
the clean-result sweep.
### `results/`
Legacy result files. Markdown summaries were removed. Any remaining non-Markdown
files are legacy evidence or machine-readable artifacts. Current CTT evidence
should be read from `runs/`, not `results/`.
### `tests/`
Regression tests. Key tests:
- `tests/test_metrics.py`: canonical metric behavior.
- `tests/test_causal_action_metrics.py`: causal action metric checks.
- `tests/test_ctt.py`: CTT model/training/eval checks.
- `tests/test_chart_features.py`: chart feature leakage invariants.
- `tests/test_dominance_selector.py`: dominance selector, PCCE, safety fields.
- `tests/test_cil_schema.py`, `test_cil_images.py`: CIL data/image schema.
- `tests/test_maniskill_*`: ManiSkill backend/lattice/render/rollout tests.
- `tests/test_tangent_*`: positive tangent generator baselines.
- `tests/test_transfercritic.py`: transfer critic checks.
- `tests/test_slurm_templates.py`: Slurm template sanity.
## Current Best Evidence
### K=16 `env_clip` measured support
Run:
```text
runs/ctt_base_context_obs_test_envclip_k16_rollout_comparison
```
Key held-out test values:
| Metric | Value |
| --- | ---: |
| Rows | 144 |
| Base success | 0.2917 |
| Score-only selected success | 0.2778 |
| Proposal oracle success | 0.5694 |
| Hidden chart oracle success | 0.7292 |
| OutcomePTR@16 | 0.5486 |
| Success support gap | 0.2014 |
| Success selector gap | 0.2917 |
| Action-bound unsafe | 0.0000 |
Interpretation: support is strong; selector is not.
### CTT validation proxy support gate
Run:
```text
runs/ctt_val_proxy_comparison
```
This is a proxy geometry gate, not rollout success. CTT variants pass by
improving mean distance to target positives while staying within the
NegativeNear@0.20 safety slack; they do not beat local-atlas on PPTC thresholds.
The OT variant passes the same proxy gate but does not improve over plain
residual CTT. The no-cycle ablation passes too, but is slightly worse than
cycle residual CTT on PPTC and mean positive distance. The gated residual
variant fails the safety gate.
| Method | PPTC@0.20 | PPTC@0.40 | Neg@0.20 | Pos<Neg | MeanPos | Collapse | Gate |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | --- |
| local-atlas | 0.4058 | 0.6812 | 0.0368 | 0.5998 | 0.7203 | 0.0661 | baseline |
| CTT residual full | 0.1981 | 0.6087 | 0.0296 | 0.7352 | 0.4509 | 0.0681 | pass |
| CTT residual no-cycle full | 0.1884 | 0.6039 | 0.0194 | 0.7391 | 0.4577 | 0.0681 | pass |
| CTT residual+OT full | 0.1787 | 0.5894 | 0.0187 | 0.7284 | 0.4604 | 0.0681 | pass |
| CTT residual base+context+obs | 0.2464 | 0.6425 | 0.0343 | 0.7717 | 0.4347 | 0.0681 | pass |
| CTT gated residual full | 0.2319 | 0.6135 | 0.0527 | 0.7248 | 0.4337 | 0.0681 | fail |
Interpretation: CTT improves support distance geometry, but the story is still
diagnostic until measured rollout and selection close the outcome gap.
### CTT + OT alignment smoke
Runs:
```text
runs/ctt_residual_ot_component_smoke
runs/ctt_residual_ot_component_smoke_val_proxy
```
Purpose: verify the implemented optional entropic OT alignment path for
`train_ctt.py` before promoting it to a full proxy comparison. This is a
code-path smoke, not a method result.
| Item | Value |
| --- | ---: |
| Train charts | 16 |
| Neighbor pairs | 28 |
| OT alignment weight | 0.25 |
| Final OT component | 31.3781 |
| Val proxy rows | 32 |
| PPTC@0.20 | 0.3438 |
| PPTC@0.40 | 0.7188 |
| NegativeNear@0.20 | 0.0423 |
| Pos<Neg | 0.5974 |
| Mean positive distance | 0.6672 |
Full 3-seed validation proxy job completed on 2026-07-04:
```text
15203117 scripts/slurm/train_ctt_ot_proxy.sbatch array=0-2
exit: 0:0 for tasks 0, 1, 2
elapsed: 00:01:27 per task
```
Full validation result averaged over three seeds:
| Metric | Value |
| --- | ---: |
| Rows | 207 |
| PPTC@0.20 | 0.1787 |
| PPTC@0.40 | 0.5894 |
| NegativeNear@0.20 | 0.0187 |
| Pos<Neg | 0.7284 |
| Mean positive distance | 0.4604 |
| Collapse | 0.0681 |
Interpretation: the OT path is implemented, smoke-tested, and evaluated. It is
safer on NegativeNear@0.20 than plain residual CTT, but it is worse on PPTC and
mean positive distance. Treat it as an ablation/negative diagnostic, not the
main CTT variant.
### CTT no-cycle ablation
Purpose: test whether the cycle consistency term in `train_ctt.py` improves
validation proxy support or only adds optimization baggage.
Completed on 2026-07-04:
```text
15204363 scripts/slurm/train_ctt_no_cycle_proxy.sbatch array=0-2
exit: 0:0 for tasks 0, 1, 2
elapsed: 00:01:28 to 00:01:41 per task
```
Full validation result averaged over three seeds:
| Metric | Value |
| --- | ---: |
| Rows | 207 |
| PPTC@0.20 | 0.1884 |
| PPTC@0.40 | 0.6039 |
| NegativeNear@0.20 | 0.0194 |
| Pos<Neg | 0.7391 |
| Mean positive distance | 0.4577 |
| Collapse | 0.0681 |
Interpretation: removing cycle reduces NegativeNear@0.20, but it also slightly
worsens PPTC and mean positive distance versus the cycle residual row. Cycle is
not a breakthrough ingredient, but the measured ablation supports keeping it in
the default CTT support model.
### Best current K=16 train-clean learned selector
Run:
```text
runs/ctt_base_context_obs_learned_dominance_chartcompat_obs_utility_task_envclip_k16_train_to_test
```
Key values:
| Metric | Value |
| --- | ---: |
| Selected success | 0.3542 |
| Coverage | 0.6597 |
| Proposal oracle success | 0.5694 |
| Success selector gap | 0.2431 |
| Pairwise causal calibration ECE | 0.0150 |
| Pair count | 12,434 |
Interpretation: RGB-stat chart compatibility helps, but the selector gap is
still too large for a deployment-clean method success claim.
### K=16 measured outcome acceptance gate
Run:
```text
runs/ctt_outcome_acceptance_gate
```
This gate combines the measured K=16 rollout support artifact with the best
train-clean K=16 selector. It records which Part-F acceptance bars are met and
which are not.
| Gate | Observed | Required | Status |
| --- | ---: | ---: | --- |
| Selected clean success | 0.3542 | >= 0.4745 | fail |
| Target selected clean success | 0.3542 | >= 0.5000 | fail |
| Proposal oracle success | 0.5694 | >= 0.5000 | pass |
| Success support gap | 0.2014 | <= 0.0700 | fail |
| Success selector gap | 0.2431 | <= 0.0300 | fail |
| OutcomePTR@16 vs V0 | 0.5486 | > 0.4435 | pass |
| Generated unsafe rate | 0.0000 | <= base+slack | pass |
| Three train seeds + bootstrap CI | yes | required | pass |
Interpretation: CTT passes proposal-oracle, measured OutcomePTR, safety, seed,
and CI checks; it fails selected-success, support-gap, and selector-gap bars.
The current paper must remain diagnostic rather than claiming final CTT method
success.
### K=16 score-shape selector diagnostic
New score-relative features were added to test whether visible row-shape
signals can close the selector gap. They did not beat the current best
chart-compat selector.
| Run family | Selected success | Coverage | Success selector gap |
| --- | ---: | ---: | ---: |
| `score_chart_compat`, utility | 0.3264 | 0.6389 | 0.2500 |
| `score_context_chart_compat`, utility | 0.3264 | 0.6458 | 0.2500 |
| `score_chart_compat`, success bonus 2 | 0.3194 | 0.5486 | 0.2500 |
| `score_context_chart_compat`, success bonus 2 | 0.3403 | 0.6111 | 0.2292 |
Interpretation: small deployment-visible selector features are not enough; the
paper should keep emphasizing positive tangent support generation and CTT.
### K=16 bundle-consensus selector diagnostic
Submitted on 2026-07-04:
```text
15205463 scripts/slurm/eval_bundle_consensus_dominance.sbatch
```
Purpose: test whether deployment-visible agreement among transported
train-positive tangents helps the selector. The feature set uses only generated
tangent geometry, row scores, source chart/task identifiers, and train-source
evidence where configured. It does not use target positive/negative sets or
candidate outcomes when choosing. This is a selector diagnostic, not a new main
method contribution. Replace this pending note with measured values after the
job completes.
### K=8 tanh and per-dimension trainmax selector diagnostics
Jobs:
```text
15149814 scripts/slurm/eval_tanh_train_dominance.sbatch
15149815 scripts/slurm/eval_perdim_trainmax_dominance.sbatch
```
Both jobs completed with exit code `0:0` on 2026-07-04 and wrote README-only
artifacts, with no persistent `report.md`. The strongest tanh learned selector
is `context_success` with selected success `0.3819`, but the tanh proposal
oracle is also `0.3819`; this is a selector diagnostic, not a stronger CTT
support result. The best per-dimension trainmax selector reaches `0.3333`
selected success with proposal oracle `0.2222`, which is worse than the K=16
`env_clip` support setting.
| Diagnostic family | Best run | Selected success | Proposal oracle | Success selector gap |
| --- | --- | ---: | ---: | ---: |
| tanh | `context_success` | 0.3819 | 0.3819 | 0.1250 |
| per-dim trainmax | `context` | 0.3333 | 0.2222 | 0.0625 |
Interpretation: these sweeps reinforce the current diagnosis: changing the
execution/action transform or lightweight selector features does not yet
produce a deployment-clean method success.
### K=16 score-source LCB dominance
Runs:
```text
runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test
runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test_tau0
```
Key values:
| Variant | Selected | Coverage | Unsafe exec. | PCCE | Selector gap |
| --- | ---: | ---: | ---: | ---: | ---: |
| auto | 0.2778 | 0.1319 | 0.0000 | 0.1633 | 0.2986 |
| tau0 | 0.2917 | 0.1111 | 0.0000 | 0.1633 | 0.2986 |
Interpretation: the LCB fallback records the requested safety/calibration
fields, but it does not solve dominance. It is a negative Part-G diagnostic.
### Utility-energy selector diagnostic
Submitted and completed on 2026-07-04:
```text
15177546 scripts/slurm/train_utility_energy_selector.sbatch array=0-2
exit: 0:0 for tasks 0, 1, 2
```
Purpose: train three `base_context_obs` utility-energy checkpoints on the
train-only RGB-ref chart database, then evaluate checkpoint-scored calibrated
dominance on the strongest current measured support setting:
```text
calibration: runs/ctt_base_context_obs_train_cal_envclip_k16_rollout_comparison
evaluation: runs/ctt_base_context_obs_test_envclip_k16_rollout_comparison
K: 16
```
Result:
| Seed | Selected | Coverage | Fallback | Unsafe | PCCE | Selector gap |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| 0 | 0.2708 | 0.1250 | 0.8750 | 0.0000 | 0.0150 | 0.3194 |
| 1 | 0.2708 | 0.0972 | 0.9028 | 0.0000 | 0.0090 | 0.3194 |
| 2 | 0.2778 | 0.1736 | 0.8264 | 0.0000 | 0.0253 | 0.3056 |
Interpretation: checkpoint-scored utility energy does not close the selector
gap. It has low coverage and mostly falls back to the base policy, so it is a
negative Part-G diagnostic and does not replace the existing train-clean K=16
selector.
## How To Run Core Commands
Use the local virtual environment when possible:
```bash
.venv/bin/python -m pytest tests/test_metrics.py tests/test_ctt.py tests/test_dominance_selector.py -q
```
Build the paper:
```bash
cd latex
latexmk -pdf -interaction=nonstopmode main.tex
```
Refresh summary:
```bash
.venv/bin/python scripts/summarize_ctt_runs.py \
--run-root runs \
--out-csv runs/summary_ctt.csv \
--no-markdown-report
```
Run K=16 LCB dominance auto:
```bash
.venv/bin/python scripts/eval_dominance_selector.py \
--calibration-input runs/ctt_base_context_obs_train_cal_envclip_k16_rollout_comparison/combined_measured_candidates.json \
--calibration-target-index data/cil_charts_rgb_refs/train/index.json \
--eval-input runs/ctt_base_context_obs_test_envclip_k16_rollout_comparison/combined_measured_candidates.json \
--eval-target-index data/cil_charts_rgb_refs/test/index.json \
--checkpoint-template 'runs/ctt_residual_base_context_obs_seed{seed}/model.pt' \
--out-dir runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test \
--k 16 \
--bootstrap-samples 1000 \
--no-markdown-report
```
Run leakage audits:
```bash
.venv/bin/python scripts/audit_cil_charts.py \
--chart-root data/cil_charts \
--run-root runs \
--out-dir runs/leakage_audit \
--no-markdown-report
.venv/bin/python scripts/audit_cil_charts.py \
--chart-root data/cil_charts_rgb_refs \
--run-root runs \
--out-dir runs/leakage_audit_rgb_refs \
--no-markdown-report
```
Run tangent reconstruction checks:
```bash
.venv/bin/python scripts/check_tangent_reconstruction.py \
--chart-root data/cil_charts \
--out-dir runs/tangent_reconstruction \
--no-markdown-report
.venv/bin/python scripts/check_tangent_reconstruction.py \
--chart-root data/cil_charts_rgb_refs \
--out-dir runs/tangent_reconstruction_rgb_refs \
--no-markdown-report
```
Start HF sync daemon:
```bash
bash scripts/hf_push_every_15m.sh
```
Current local daemon process was previously observed as PID `615094`; verify
with:
```bash
ps -p 615094 -o pid,etimes,cmd
```
## Hugging Face Remote
Repository:
```text
anhtld/vla
```
The workspace is uploaded under:
```text
workspace/
```
Large scratch roots are uploaded under:
```text
scratch/
```
Use:
```bash
.venv/bin/hf auth whoami
.venv/bin/hf upload anhtld/vla <local_path> workspace/<remote_path>
```
Avoid uploading secrets. The sync scripts exclude `.env`, token/secret/key
patterns, virtualenvs, git internals, containers, and native library folders.
They also enforce the README-only Markdown policy on the Hub by deleting
remote `*.md` files except `workspace/README.md` after each successful sync.
Set `HF_SYNC_CLEAN_REMOTE_MARKDOWN=0` only for a deliberate temporary override.
## Development Rules
- Do not claim method success unless the result is implemented, measured,
leakage-audited, and logged.
- Do not call distance proxy metrics PTR. Use PPTC for proxy support.
- Do not compute OutcomePTR, SelectorRegret, or SupportGap from proxy-only
candidates.
- Train-only retrieval must use train charts only.
- Validation/test outcomes are evaluator-only.
- Keep V0/V1/V3 as diagnostics/baselines, not final method claims.
- Use K=16 `env_clip` as the current bounded-action diagnostic convention until
a better action representation is implemented and measured.
- Treat deterministic object-layout features as a negative result unless a new
measured run proves otherwise.
- The next real method work is a stronger deployment-visible chart/outcome
representation and dominance model, not more wrapper text.
## Immediate Next Actions
1. Replace hand-built RGB/object descriptors with learned visual-language or
task/object/contact-stage tokens.
2. Train a stronger train-only utility/dominance model under the K=16
`env_clip` convention.
3. Re-run measured selection on held-out test after the representation fix.
4. Add actual collision/contact safety labels beyond action-bound validity.
5. Keep the paper honest: support is promising, selector is not solved.
|