anhtld commited on
Commit
a60f931
·
verified ·
1 Parent(s): b3f01fb

Restore consolidated workspace README

Browse files
Files changed (1) hide show
  1. workspace/README.md +660 -0
workspace/README.md ADDED
@@ -0,0 +1,660 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # VLA / CIL-Atlas / Causal Tangent Transport
2
+
3
+ This repository is the working codebase for a robot-learning research project
4
+ around same-state counterfactual action charts and Causal Tangent Transport
5
+ (CTT).
6
+
7
+ The single spine of the project is:
8
+
9
+ > Standard VLA training observes one demonstrated action per state. CIL-Atlas
10
+ > restores the same state, executes multiple action chunks, and measures which
11
+ > local action tangents causally improve, recover, fail, collide, or succeed.
12
+ > CTT turns this measured local causal geometry into deployment-clean proposal
13
+ > generation by transporting measured positive do-action tangents from
14
+ > train-only neighboring charts into the target chart.
15
+
16
+ The current evidence is intentionally written as a diagnostic method paper, not
17
+ as an overclaimed final success. K=16 `env_clip` support is strong on held-out
18
+ test (`proposal_oracle_success = 0.5694`, `OutcomePTR@16 = 0.5486`), while the
19
+ selector/dominance side remains the bottleneck. The strongest current
20
+ train-clean K=16 selector reaches `selected_success = 0.3542` against a
21
+ `0.5694` proposal oracle, leaving a `0.2431` success selector gap. The
22
+ score-source LCB dominance fallback is safe under action-bound labels but
23
+ negative as a selector (`0.2778` auto, `0.2917` tau0).
24
+
25
+ All other Markdown files were removed and consolidated into this README. The
26
+ canonical paper is `latex/main.tex` plus `latex/main.pdf`; experiment evidence
27
+ lives in JSON, TeX, logs, configs, and command files under `runs/`.
28
+
29
+ ## Research Goal
30
+
31
+ The paper target is not "a bigger stack." The target is a clean method story:
32
+
33
+ 1. Same-state CIL charts define local do-action causal geometry.
34
+ 2. Causal Action Regret decomposes deployment failure into support gap plus
35
+ selector gap.
36
+ 3. CTT proposes candidates by transporting measured train positive tangents,
37
+ not by Gaussian noise or verifier optimization off support.
38
+ 4. Utility energy and calibrated dominance decide whether a transported tangent
39
+ should replace the base action.
40
+ 5. Every main claim must have a method, implemented script/module, metric table,
41
+ leakage audit, and reproducible run log.
42
+
43
+ Current strategic diagnosis:
44
+
45
+ | Area | Current status | Meaning |
46
+ | --- | --- | --- |
47
+ | Same-state chart data | Implemented and leakage-audited | Good scientific primitive |
48
+ | Metrics | Implemented with measured/proxy separation | OutcomePTR and PPTC are not confused |
49
+ | CTT residual transport | Implemented and measured | K=16 support is real |
50
+ | Gated/residual proxy variants | Implemented | Mostly diagnostic |
51
+ | `env_clip` execution convention | Implemented | Action-bound-clean current convention |
52
+ | Learned dominance selectors | Implemented | Best current selector still leaves large gap |
53
+ | LCB calibrated dominance | Implemented | Safe fallback diagnostic, not successful selector |
54
+ | Object-layout hand features | Implemented | Negative measured result |
55
+ | Theory notes/section | Implemented | Honest support-regret framing |
56
+ | Paper | Implemented in LaTeX | Must remain diagnostic until selector improves |
57
+
58
+ ## High-Level Layout
59
+
60
+ ```text
61
+ .
62
+ |-- cil/ Core CTT metrics, chart features, and small models.
63
+ |-- dovla_cil/ Broader CIL/VLA framework: data, sims, models, eval.
64
+ |-- configs/ YAML/JSON configs for baselines, CTT, large jobs, toy jobs.
65
+ |-- data/ Exported CIL chart indexes and shards.
66
+ |-- latex/ Main paper source, tables, references, and PDF.
67
+ |-- paper/ Theory section used by the LaTeX paper.
68
+ |-- scripts/ Training, export, audit, rollout, evaluation, HF sync.
69
+ |-- manifests/ Job/run manifests and active templates.
70
+ |-- runs/ Reproducible experiment artifacts and metrics.
71
+ |-- logs/ Cluster/stdout/stderr logs and local sync logs.
72
+ |-- outputs/ Scratch-like local outputs and HF sync manifests.
73
+ |-- results/ Legacy non-Markdown result artifacts, if any remain.
74
+ |-- tests/ Unit/regression tests.
75
+ |-- Makefile Convenience command entrypoint.
76
+ ```
77
+
78
+ ## Folder And File Inventory
79
+
80
+ ### Root
81
+
82
+ - `README.md`: this file. The only Markdown document kept in the workspace.
83
+ - `Makefile`: convenience wrapper for common commands.
84
+ - `.env.example`: example environment variables; do not store secrets here.
85
+ - `.gitignore`: ignored local artifacts, caches, and generated files.
86
+ - `.claude/`, `.codex/`, `.agents/`, `.remember/`: local assistant/tool state.
87
+ - `.pytest_cache/`, `.ruff_cache/`: local test/lint caches.
88
+
89
+ ### `cil/`
90
+
91
+ Core research implementation for CTT and canonical metrics.
92
+
93
+ - `cil/__init__.py`: package marker.
94
+ - `cil/chart_features.py`: deployment-visible chart feature construction.
95
+ Feature modes include `base`, `base_context`, `base_context_obs`,
96
+ `base_context_obj`, and `base_context_obs_obj`. This file is important
97
+ because it controls what information the selector/generator may see.
98
+ - `cil/metrics.py`: canonical metrics:
99
+ - BranchCAR / branch causal action regret.
100
+ - OutcomePTR@K for measured executed generated candidates.
101
+ - PPTC@K for distance-only proxy positive tangent coverage.
102
+ - SelectorRegret@K.
103
+ - SupportGap.
104
+ - ProxySupportDistance.
105
+ - NegativeNear.
106
+ - PosCloserThanNeg.
107
+ - Pairwise Causal Calibration Error.
108
+ - safety label coverage and unsafe-rate helpers.
109
+ - `cil/models/__init__.py`: model package exports.
110
+ - `cil/models/chart_encoder.py`: chart encoder used by CTT/utility energy.
111
+ - `cil/models/tangent_encoder.py`: tangent encoder and normalization helpers.
112
+ - `cil/models/ctt.py`: Causal Tangent Transport model definitions, including
113
+ residual/gated transport variants.
114
+ - `cil/models/utility_energy.py`: utility energy scorer used by ranking and
115
+ dominance.
116
+
117
+ ### `dovla_cil/`
118
+
119
+ General CIL/VLA framework code. This is older and broader than the compact
120
+ `cil/` CTT layer.
121
+
122
+ - `dovla_cil/config/defaults.yaml`: default project config.
123
+ - `dovla_cil/config/schema.py`: config schema.
124
+ - `dovla_cil/effects/extractors.py`: outcome/effect extraction utilities.
125
+ - `dovla_cil/effects/failure_classifier.py`: failure classifier logic.
126
+ - `dovla_cil/effects/rewards.py`: scalar reward/utility helpers.
127
+ - `dovla_cil/eval/causalstress.py`: causal stress evaluation.
128
+ - `dovla_cil/eval/external_vla_baseline.py`: external VLA baseline eval.
129
+ - `dovla_cil/eval/lattice_eval.py`: CIL lattice evaluation.
130
+ - `dovla_cil/eval/libero_eval.py`: LIBERO eval adapter.
131
+ - `dovla_cil/eval/maniskill_eval.py`: ManiSkill eval adapter.
132
+ - `dovla_cil/eval/maniskill_policy_rollout.py`: policy rollout harness.
133
+ - `dovla_cil/eval/metrics.py`: legacy eval metrics.
134
+ - `dovla_cil/eval/simpler_eval.py`: simpler eval adapter.
135
+ - `dovla_cil/eval/smolvla_cil_baseline.py`: SmolVLA CIL baseline eval.
136
+ - `dovla_cil/eval/smolvla_runtime.py`: SmolVLA runtime wrapper.
137
+ - `dovla_cil/experiments/baselines.py`: baseline experiment definitions.
138
+ - `dovla_cil/experiments/manifest.py`: manifest execution helpers.
139
+ - `dovla_cil/experiments/reports.py`: legacy report generation helpers.
140
+ - `dovla_cil/experiments/scaling.py`: scaling experiment helpers.
141
+ - `dovla_cil/generation/distributed.py`: distributed generation utilities.
142
+ - `dovla_cil/generation/maniskill_lattice.py`: ManiSkill lattice generation.
143
+ - `dovla_cil/generation/maniskill_parallel.py`: parallel ManiSkill generation.
144
+ - `dovla_cil/generation/maniskill_render.py`: rendering utilities.
145
+ - `dovla_cil/generation/pipeline.py`: generation pipeline orchestration.
146
+ - `dovla_cil/generation/tangent_chart_synthesis.py`: chart synthesis baseline.
147
+ - `dovla_cil/generation/tangent_cvae.py`: raw/positive tangent CVAE baseline.
148
+ - `dovla_cil/generation/tangent_local_atlas.py`: local atlas memory baseline.
149
+ - `dovla_cil/generation/tangent_memory.py`: tangent memory utilities.
150
+ - `dovla_cil/generation/tangent_spline_cvae.py`: spline-CVAE baseline.
151
+ - `dovla_cil/generation/tangent_spline_flow.py`: spline flow baseline.
152
+ - `dovla_cil/generation/tangent_spline_guided_flow.py`: guided spline flow.
153
+ - `dovla_cil/generation/tangent_targets.py`: tangent target construction.
154
+ - `dovla_cil/interventions/language_counterfactuals.py`: language CIL changes.
155
+ - `dovla_cil/interventions/perturbations.py`: action/scene perturbations.
156
+ - `dovla_cil/interventions/physics_counterfactuals.py`: physics interventions.
157
+ - `dovla_cil/interventions/samplers.py`: intervention samplers.
158
+ - `dovla_cil/interventions/schema.py`: intervention data schema.
159
+ - `dovla_cil/models/action_encoder.py`: action encoder.
160
+ - `dovla_cil/models/dovla.py`: base DOVLA model.
161
+ - `dovla_cil/models/dovla_attention.py`: attention model variant.
162
+ - `dovla_cil/models/dovla_attention_enhanced.py`: enhanced attention variant.
163
+ - `dovla_cil/models/dovla_hybrid.py`: hybrid model variant.
164
+ - `dovla_cil/models/dovla_transformer.py`: transformer model variant.
165
+ - `dovla_cil/models/effect_heads.py`: effect prediction heads.
166
+ - `dovla_cil/models/openvla_adapter.py`: OpenVLA adapter.
167
+ - `dovla_cil/models/policy_heads.py`: policy output heads.
168
+ - `dovla_cil/retrieval/embeddings.py`: retrieval embedding utilities.
169
+ - `dovla_cil/retrieval/eval.py`: retrieval evaluation.
170
+ - `dovla_cil/retrieval/index.py`: retrieval index.
171
+ - `dovla_cil/retrieval/prompting.py`: retrieval prompt helpers.
172
+ - `dovla_cil/retrieval/retriever.py`: retriever implementation.
173
+ - `dovla_cil/sim/base.py`: simulator interface.
174
+ - `dovla_cil/sim/genesis_backend.py`: Genesis simulator backend.
175
+ - `dovla_cil/sim/maniskill_backend.py`: ManiSkill backend.
176
+ - `dovla_cil/sim/registry.py`: simulator registry.
177
+ - `dovla_cil/sim/toy_backend.py`: toy backend.
178
+ - `dovla_cil/tasks/library.py`: task library.
179
+ - `dovla_cil/tasks/predicates.py`: task predicates.
180
+ - `dovla_cil/tasks/schema.py`: task schema.
181
+ - `dovla_cil/tasks/validators.py`: task validation.
182
+ - `dovla_cil/training/collate.py`: data collation.
183
+ - `dovla_cil/training/losses.py`: training losses.
184
+ - `dovla_cil/training/metrics.py`: training metrics.
185
+ - `dovla_cil/training/trainer.py`: trainer implementation.
186
+ - `dovla_cil/transfercritic/*`: transfer critic labels, model, training,
187
+ selection, and evaluation.
188
+ - `dovla_cil/utils/*`: hashing, IO, logging, seeding, language embeddings,
189
+ and OpenClaude client helpers.
190
+ - `dovla_cil/vlm/*`: VLM annotation, prompts, clients, and task generation.
191
+ - `dovla_cil/py.typed`: marks the package as typed.
192
+
193
+ ### `configs/`
194
+
195
+ Configuration files for experiments.
196
+
197
+ - `configs/ctt/residual_smoke.yaml`: small residual CTT smoke config.
198
+ - `configs/ctt/residual_full.yaml`: full residual CTT config.
199
+ - `configs/ctt/gated_residual_smoke.yaml`: small gated CTT smoke config.
200
+ - `configs/ctt/gated_residual_full.yaml`: full gated CTT config.
201
+ - `configs/baselines/*.yaml`: baseline configs for expert-only BC,
202
+ cross-state negatives, random negatives, label-only counterfactuals, and
203
+ world-model auxiliary baselines.
204
+ - `configs/external/*.json`: SmolVLA aligned/full/smoke external configs.
205
+ - `configs/hpc/nvidia_icd.json`: HPC GPU/ICD runtime config.
206
+ - `configs/large/*.yaml`: large-scale generation/training templates.
207
+ - `configs/toy/*.yaml`: toy generation/eval/training configs.
208
+
209
+ ### `data/`
210
+
211
+ Exported CIL chart databases. These are generated artifacts, not source code.
212
+
213
+ - `data/cil_charts/{train,val,test}/`: original chart indexes/shards.
214
+ - `data/cil_charts_rgb_refs/{train,val,test}/`: non-destructive RGB-reference
215
+ chart export with observation refs and deterministic RGB/object features.
216
+ - `index.json` inside each split records split hashes, content hashes,
217
+ retrieval permissions, and evaluator-only outcome contracts.
218
+ - NPZ shards store chart rows, base actions, branch actions, utility labels,
219
+ outcome vectors, residual action tangents, spline tangent codes, and metadata.
220
+
221
+ ### `latex/`
222
+
223
+ Paper source and build artifacts.
224
+
225
+ - `latex/main.tex`: canonical paper draft. This is the single main paper source.
226
+ - `latex/main.pdf`: compiled PDF.
227
+ - `latex/references.bib`: bibliography.
228
+ - `latex/tables/*.tex`: hand-maintained or generated tables used by `main.tex`.
229
+ - `latex/main.aux`, `main.bbl`, `main.blg`, `main.fdb_latexmk`, `main.fls`,
230
+ `main.log`, `main.out`: LaTeX build intermediates.
231
+
232
+ ### `paper/`
233
+
234
+ Paper sections that are included or copied into the LaTeX draft.
235
+
236
+ - `paper/sections/theory.tex`: formal theory section with same-state causal
237
+ contrast identifiability, CAR decomposition, support/sample-complexity
238
+ arguments, and transport smoothness/support-regret bounds.
239
+ - `paper/notes/`: reserved for non-Markdown theory notes if needed. Markdown
240
+ notes were removed to keep this README as the single textual overview.
241
+
242
+ ### `scripts/`
243
+
244
+ Main executable research pipeline.
245
+
246
+ Data/chart export and audits:
247
+
248
+ - `scripts/export_cil_charts.py`: exports train/val/test CIL chart DB.
249
+ - `scripts/build_data_accounting.py`: builds data accounting artifacts.
250
+ - `scripts/audit_cil_charts.py`: leakage audit for chart indexes and run hashes.
251
+ - `scripts/audit_leakage.py`: legacy leakage audit.
252
+ - `scripts/audit_action_bounds.py`: action-bound validity audit.
253
+ - `scripts/audit_chart_feature_sources.py`: audits feature source availability.
254
+ - `scripts/check_tangent_reconstruction.py`: verifies spline tangent
255
+ reconstruction exactly matches stored residuals.
256
+ - `scripts/build_action_scale_vector.py`: builds per-dimension action scaling.
257
+
258
+ CTT training/proxy/rollout:
259
+
260
+ - `scripts/train_ctt.py`: trains residual or gated residual CTT.
261
+ - `scripts/eval_ctt_proxy.py`: proxy support evaluation with PPTC,
262
+ NegativeNear, distance, diversity, and collapse metrics.
263
+ - `scripts/eval_ctt_generated_rollout.py`: measured rollout harness that
264
+ restores states, decodes generated tangents, executes candidates, and writes
265
+ measured candidate rows.
266
+ - `scripts/eval_ctt_rollout.py`: measured-output wrapper.
267
+ - `scripts/build_ctt_proxy_comparison.py`: proxy comparison/gate table.
268
+ - `scripts/build_ctt_rollout_comparison.py`: measured rollout aggregation.
269
+ - `scripts/summarize_ctt_runs.py`: global CSV/Markdown summary. Markdown output
270
+ may be generated transiently, but the persistent overview is this README.
271
+
272
+ Dominance and utility:
273
+
274
+ - `scripts/train_utility_energy.py`: train-only utility energy model.
275
+ - `scripts/calibrate_dominance.py`: conformal-style dominance calibration rule.
276
+ - `scripts/eval_dominance_selector.py`: LCB dominance fallback evaluation.
277
+ Reports selected success, coverage, fallback, unsafe execution, PCCE,
278
+ selector regret, and support/selector gaps.
279
+ - `scripts/eval_learned_dominance_selector.py`: ridge learned dominance
280
+ selector with basic/context/tangent/source/chart-compat features.
281
+ - `scripts/eval_nonlinear_dominance_selector.py`: nonlinear selector sweep.
282
+
283
+ Metric and paper artifacts:
284
+
285
+ - `scripts/eval_metrics.py`: canonical measured/proxy metric evaluator.
286
+ - `scripts/reproduce_v0_report.py`: V0 reproduction artifact.
287
+ - `scripts/make_paper_artifacts.py`: generated paper tables/artifacts.
288
+ - `scripts/build_paper_analysis.py`: paper analysis builder.
289
+ - `scripts/build_paper_table_status.py`: paper table status builder.
290
+ - `scripts/report_dataset.py`, `report_eval.py`, `report_hpc_clean_results.py`:
291
+ structured reporting helpers.
292
+
293
+ Generation and baseline scripts:
294
+
295
+ - `scripts/generate_cil.py`: CIL generation entrypoint.
296
+ - `scripts/generate_cil_distributed.py`: distributed CIL generation.
297
+ - `scripts/generate_maniskill_lattice.py`: ManiSkill lattice generator.
298
+ - `scripts/generate_metaworld_lattice.py`: MetaWorld lattice generator.
299
+ - `scripts/generate_rlbench_lattice.py`: RLBench lattice generator.
300
+ - `scripts/generate_12task_collection.py`: larger task collection generator.
301
+ - `scripts/make_cil_collection.py`: collection builder.
302
+ - `scripts/merge_task_datasets.py`: merge task datasets.
303
+ - `scripts/prepare_baseline_dataset.py`: baseline dataset prep.
304
+ - `scripts/run_baseline.py`: baseline launcher.
305
+ - `scripts/run_external_vla_baseline.py`: external VLA baseline launcher.
306
+ - `scripts/run_manifest.py`: manifest executor.
307
+ - `scripts/run_master_workflow.sh`: legacy master workflow.
308
+
309
+ Positive tangent baselines:
310
+
311
+ - `scripts/export_positive_tangent_targets.py`: exports positive tangent targets.
312
+ - `scripts/eval_positive_tangent_memory.py`: memory baseline eval.
313
+ - `scripts/eval_positive_tangent_local_atlas.py`: local atlas baseline eval.
314
+ - `scripts/eval_positive_tangent_chart_synthesis.py`: chart synthesis eval.
315
+ - `scripts/train_positive_tangent_cvae.py`: CVAE baseline training.
316
+ - `scripts/train_positive_tangent_spline_cvae.py`: spline-CVAE training.
317
+ - `scripts/train_positive_tangent_spline_flow.py`: spline flow training.
318
+ - `scripts/train_positive_tangent_guided_spline_flow.py`: guided flow training.
319
+ - `scripts/summarize_positive_tangent_*`: sweep summarizers.
320
+
321
+ Legacy DOVLA training/eval:
322
+
323
+ - `scripts/train_dovla.py`: base DOVLA training.
324
+ - `scripts/train_dovla_attention.py`: attention variant.
325
+ - `scripts/train_dovla_enhanced.py`: enhanced variant.
326
+ - `scripts/train_dovla_transformer.py`: transformer variant.
327
+ - `scripts/train_hybrid_direct.py`: hybrid direct model.
328
+ - `scripts/train_transformer_with_language.py`: language transformer training.
329
+ - `scripts/eval_*checkpoint.py`: checkpoint evaluators.
330
+ - `scripts/evaluate_phase_a*.py`: legacy phase evaluators.
331
+
332
+ HF sync and operations:
333
+
334
+ - `scripts/hf_push_once.sh`: one-shot HF upload of workspace/scratch roots.
335
+ - `scripts/hf_push_every_15m.sh`: local 15-minute HF sync daemon.
336
+ - `scripts/hf_sync_daemon.sh`: alternate daemon wrapper.
337
+ - `scripts/auto_sync_hf.py`: legacy auto-sync helper.
338
+ - `scripts/check_hf_sync.sh`: HF sync check.
339
+ - `scripts/quick_start.sh`, `run_eval.sh`, `run_inference.sh`,
340
+ `run_train_debug.sh`, `smoke_test.sh`: convenience shell entrypoints.
341
+
342
+ ### `scripts/slurm/`
343
+
344
+ Cluster job templates. Important groups:
345
+
346
+ - CTT: `train_ctt_proxy_sweep.sbatch`, `train_ctt_feature_proxy.sbatch`,
347
+ `eval_ctt_generated_rollout.sbatch`.
348
+ - Dominance: `eval_tanh_train_dominance.sbatch`,
349
+ `eval_perdim_trainmax_dominance.sbatch`,
350
+ `train_utility_energy_selector.sbatch`.
351
+ - Rendering/export: `render_six_task_chart_observations.sbatch`,
352
+ `reexport_rgb_ref_cil_charts.sbatch`, `render_maniskill_observations.sbatch`.
353
+ - Baselines/generation: `generate_6task_h16.sbatch`,
354
+ `make_maniskill_collection.sbatch`, `train_maniskill_*`.
355
+ - Legacy model training/eval: `train_dovla*.sbatch`, `train_transformer*.sbatch`,
356
+ `eval_*`.
357
+ - HF sync: `hf_push_daemon.sbatch`.
358
+
359
+ ### `manifests/`
360
+
361
+ Run manifests and templates.
362
+
363
+ - `manifests/cil_1b_template.yaml`: active large template opened in the IDE.
364
+ - `manifests/cil_160m.yaml`: smaller CIL manifest.
365
+ - `manifests/baselines_full.yaml`: full baseline manifest.
366
+ - `manifests/scaling_k_sweep.yaml`: scaling/K sweep.
367
+ - `manifests/source_score_bonus_pick001_stack005.*`: source-score bonus configs.
368
+
369
+ ### `runs/`
370
+
371
+ Reproducible experiment artifacts. Each serious run should contain:
372
+
373
+ ```text
374
+ config.yaml
375
+ command.txt
376
+ git_hash.txt
377
+ data_hash.txt
378
+ split_hash.txt
379
+ train.log
380
+ eval.log
381
+ metrics.json
382
+ metrics_by_task.json
383
+ metrics_by_seed.json
384
+ table.tex
385
+ ```
386
+
387
+ Markdown `report.md` files were removed per the current cleanup request. Use
388
+ `metrics.json`, `table.tex`, logs, and this README instead.
389
+
390
+ High-value run directories:
391
+
392
+ - `runs/data_accounting`: verified data counts.
393
+ - `runs/leakage_audit`: original leakage audit.
394
+ - `runs/leakage_audit_rgb_refs`: RGB-ref leakage audit.
395
+ - `runs/tangent_reconstruction`: original tangent reconstruction check.
396
+ - `runs/tangent_reconstruction_rgb_refs`: RGB-ref tangent reconstruction check.
397
+ - `runs/action_bound_audit_rgb_refs`: action-bound audit.
398
+ - `runs/chart_observation_embeddings_rgb_refs`: RGB-stat embedding export.
399
+ - `runs/chart_object_embeddings_rgb_refs`: object-layout embedding export.
400
+ - `runs/chart_feature_audit*`: feature-source audits.
401
+ - `runs/ctt_residual_full_seed{0,1,2}`: full residual CTT training.
402
+ - `runs/ctt_gated_residual_full_seed{0,1,2}`: full gated residual CTT training.
403
+ - `runs/ctt_base_context_obs_test_envclip_k16_rollout_comparison`: current
404
+ strongest measured support artifact.
405
+ - `runs/ctt_base_context_obs_train_cal_envclip_k16_rollout_comparison`: train
406
+ calibration rows for K=16 `env_clip`.
407
+ - `runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test`: K=16 LCB
408
+ dominance auto threshold, negative selector result.
409
+ - `runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test_tau0`: K=16
410
+ LCB tau0 fallback, matches base but does not improve.
411
+ - `runs/ctt_base_context_obs_learned_dominance_chartcompat_obs_utility_task_envclip_k16_train_to_test`:
412
+ best current train-clean selector diagnostic.
413
+ - `runs/ctt_base_context_obs_nonlinear_dominance_chartcompat_obs_*`: fixed
414
+ nonlinear selector diagnostics.
415
+ - `runs/summary_ctt.csv`: global run summary table.
416
+
417
+ ### `logs/`
418
+
419
+ Cluster stdout/stderr and daemon logs.
420
+
421
+ - `logs/*.out` and `logs/*.err`: Slurm job output/error files.
422
+ - `logs/auto_sync_hf.log`: legacy HF auto-sync log.
423
+ - `logs/auto_sync_hf.pid`: legacy auto-sync PID file.
424
+ - `logs/workflow/`: workflow logs.
425
+
426
+ ### `outputs/`
427
+
428
+ Local generated outputs and HF sync state.
429
+
430
+ - `outputs/hf_sync/hf_sync.log`: one-shot HF sync log.
431
+ - `outputs/hf_sync/hf_sync_daemon.log`: 15-minute daemon log.
432
+ - `outputs/hf_sync/last_manifest.json`: latest HF sync manifest.
433
+ - `outputs/hpc/`: HPC outputs.
434
+ - `outputs/external_vla*`: external VLA export/probe outputs.
435
+ - `outputs/manifest_*`: manifest smoke outputs.
436
+ - `outputs/phase5_*`: legacy phase-5 outputs.
437
+ - `outputs/smoke_*`, `outputs/train_smoke_*`: smoke outputs.
438
+ - `outputs/wheels`: local wheel/cache outputs.
439
+
440
+ ### `results/`
441
+
442
+ Legacy result files. Markdown summaries were removed. Any remaining non-Markdown
443
+ files are legacy evidence or machine-readable artifacts. Current CTT evidence
444
+ should be read from `runs/`, not `results/`.
445
+
446
+ ### `tests/`
447
+
448
+ Regression tests. Key tests:
449
+
450
+ - `tests/test_metrics.py`: canonical metric behavior.
451
+ - `tests/test_causal_action_metrics.py`: causal action metric checks.
452
+ - `tests/test_ctt.py`: CTT model/training/eval checks.
453
+ - `tests/test_chart_features.py`: chart feature leakage invariants.
454
+ - `tests/test_dominance_selector.py`: dominance selector, PCCE, safety fields.
455
+ - `tests/test_cil_schema.py`, `test_cil_images.py`: CIL data/image schema.
456
+ - `tests/test_maniskill_*`: ManiSkill backend/lattice/render/rollout tests.
457
+ - `tests/test_tangent_*`: positive tangent generator baselines.
458
+ - `tests/test_transfercritic.py`: transfer critic checks.
459
+ - `tests/test_slurm_templates.py`: Slurm template sanity.
460
+
461
+ ## Current Best Evidence
462
+
463
+ ### K=16 `env_clip` measured support
464
+
465
+ Run:
466
+
467
+ ```text
468
+ runs/ctt_base_context_obs_test_envclip_k16_rollout_comparison
469
+ ```
470
+
471
+ Key held-out test values:
472
+
473
+ | Metric | Value |
474
+ | --- | ---: |
475
+ | Rows | 144 |
476
+ | Base success | 0.2917 |
477
+ | Score-only selected success | 0.2778 |
478
+ | Proposal oracle success | 0.5694 |
479
+ | Hidden chart oracle success | 0.7292 |
480
+ | OutcomePTR@16 | 0.5486 |
481
+ | Success support gap | 0.2014 |
482
+ | Success selector gap | 0.2917 |
483
+ | Action-bound unsafe | 0.0000 |
484
+
485
+ Interpretation: support is strong; selector is not.
486
+
487
+ ### Best current K=16 train-clean learned selector
488
+
489
+ Run:
490
+
491
+ ```text
492
+ runs/ctt_base_context_obs_learned_dominance_chartcompat_obs_utility_task_envclip_k16_train_to_test
493
+ ```
494
+
495
+ Key values:
496
+
497
+ | Metric | Value |
498
+ | --- | ---: |
499
+ | Selected success | 0.3542 |
500
+ | Coverage | 0.6597 |
501
+ | Proposal oracle success | 0.5694 |
502
+ | Success selector gap | 0.2431 |
503
+ | Pairwise causal calibration ECE | 0.0150 |
504
+ | Pair count | 12,434 |
505
+
506
+ Interpretation: RGB-stat chart compatibility helps, but the selector gap is
507
+ still too large for a deployment-clean method success claim.
508
+
509
+ ### K=16 score-source LCB dominance
510
+
511
+ Runs:
512
+
513
+ ```text
514
+ runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test
515
+ runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test_tau0
516
+ ```
517
+
518
+ Key values:
519
+
520
+ | Variant | Selected | Coverage | Unsafe exec. | PCCE | Selector gap |
521
+ | --- | ---: | ---: | ---: | ---: | ---: |
522
+ | auto | 0.2778 | 0.1319 | 0.0000 | 0.1633 | 0.2986 |
523
+ | tau0 | 0.2917 | 0.1111 | 0.0000 | 0.1633 | 0.2986 |
524
+
525
+ Interpretation: the LCB fallback records the requested safety/calibration
526
+ fields, but it does not solve dominance. It is a negative Part-G diagnostic.
527
+
528
+ ## How To Run Core Commands
529
+
530
+ Use the local virtual environment when possible:
531
+
532
+ ```bash
533
+ .venv/bin/python -m pytest tests/test_metrics.py tests/test_ctt.py tests/test_dominance_selector.py -q
534
+ ```
535
+
536
+ Build the paper:
537
+
538
+ ```bash
539
+ cd latex
540
+ latexmk -pdf -interaction=nonstopmode main.tex
541
+ ```
542
+
543
+ Refresh summary:
544
+
545
+ ```bash
546
+ .venv/bin/python scripts/summarize_ctt_runs.py \
547
+ --run-root runs \
548
+ --out-csv runs/summary_ctt.csv \
549
+ --out-md runs/summary_ctt.md
550
+ ```
551
+
552
+ Run K=16 LCB dominance auto:
553
+
554
+ ```bash
555
+ .venv/bin/python scripts/eval_dominance_selector.py \
556
+ --calibration-input runs/ctt_base_context_obs_train_cal_envclip_k16_rollout_comparison/combined_measured_candidates.json \
557
+ --calibration-target-index data/cil_charts_rgb_refs/train/index.json \
558
+ --eval-input runs/ctt_base_context_obs_test_envclip_k16_rollout_comparison/combined_measured_candidates.json \
559
+ --eval-target-index data/cil_charts_rgb_refs/test/index.json \
560
+ --checkpoint-template 'runs/ctt_residual_base_context_obs_seed{seed}/model.pt' \
561
+ --out-dir runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test \
562
+ --k 16 \
563
+ --bootstrap-samples 1000
564
+ ```
565
+
566
+ Run leakage audits:
567
+
568
+ ```bash
569
+ .venv/bin/python scripts/audit_cil_charts.py \
570
+ --chart-root data/cil_charts \
571
+ --run-root runs \
572
+ --out-dir runs/leakage_audit
573
+
574
+ .venv/bin/python scripts/audit_cil_charts.py \
575
+ --chart-root data/cil_charts_rgb_refs \
576
+ --run-root runs \
577
+ --out-dir runs/leakage_audit_rgb_refs
578
+ ```
579
+
580
+ Run tangent reconstruction checks:
581
+
582
+ ```bash
583
+ .venv/bin/python scripts/check_tangent_reconstruction.py \
584
+ --chart-root data/cil_charts \
585
+ --out-dir runs/tangent_reconstruction
586
+
587
+ .venv/bin/python scripts/check_tangent_reconstruction.py \
588
+ --chart-root data/cil_charts_rgb_refs \
589
+ --out-dir runs/tangent_reconstruction_rgb_refs
590
+ ```
591
+
592
+ Start HF sync daemon:
593
+
594
+ ```bash
595
+ bash scripts/hf_push_every_15m.sh
596
+ ```
597
+
598
+ Current local daemon process was previously observed as PID `615094`; verify
599
+ with:
600
+
601
+ ```bash
602
+ ps -p 615094 -o pid,etimes,cmd
603
+ ```
604
+
605
+ ## Hugging Face Remote
606
+
607
+ Repository:
608
+
609
+ ```text
610
+ anhtld/vla
611
+ ```
612
+
613
+ The workspace is uploaded under:
614
+
615
+ ```text
616
+ workspace/
617
+ ```
618
+
619
+ Large scratch roots are uploaded under:
620
+
621
+ ```text
622
+ scratch/
623
+ ```
624
+
625
+ Use:
626
+
627
+ ```bash
628
+ .venv/bin/hf auth whoami
629
+ .venv/bin/hf upload anhtld/vla <local_path> workspace/<remote_path>
630
+ ```
631
+
632
+ Avoid uploading secrets. The sync scripts exclude `.env`, token/secret/key
633
+ patterns, virtualenvs, git internals, containers, and native library folders.
634
+
635
+ ## Development Rules
636
+
637
+ - Do not claim method success unless the result is implemented, measured,
638
+ leakage-audited, and logged.
639
+ - Do not call distance proxy metrics PTR. Use PPTC for proxy support.
640
+ - Do not compute OutcomePTR, SelectorRegret, or SupportGap from proxy-only
641
+ candidates.
642
+ - Train-only retrieval must use train charts only.
643
+ - Validation/test outcomes are evaluator-only.
644
+ - Keep V0/V1/V3 as diagnostics/baselines, not final method claims.
645
+ - Use K=16 `env_clip` as the current bounded-action diagnostic convention until
646
+ a better action representation is implemented and measured.
647
+ - Treat deterministic object-layout features as a negative result unless a new
648
+ measured run proves otherwise.
649
+ - The next real method work is a stronger deployment-visible chart/outcome
650
+ representation and dominance model, not more wrapper text.
651
+
652
+ ## Immediate Next Actions
653
+
654
+ 1. Replace hand-built RGB/object descriptors with learned visual-language or
655
+ task/object/contact-stage tokens.
656
+ 2. Train a stronger train-only utility/dominance model under the K=16
657
+ `env_clip` convention.
658
+ 3. Re-run measured selection on held-out test after the representation fix.
659
+ 4. Add actual collision/contact safety labels beyond action-bound validity.
660
+ 5. Keep the paper honest: support is promising, selector is not solved.