Dynamic Env Evidence Roadmap¶
Tracker #273 is closed. Issue #335 tracks the post-correction full-model research and any replacement claim-grade run.
RFC-0017 pivots the usefulness claim away from SO-100 proxy metrics and onto a
small synthetic control env with resident ground truth. The only calibrated
quantitative usefulness gate is held-out state_probe_r2 on
kinematic://swipe-dot; magnitude and frame drift are mandatory diagnostics
for any positive full-model verdict.
Historical audit baseline¶
The recorded dynamic-env metrics below were produced before correction of the participant pseudo-gradient and outer-update direction. They are retained only to audit that historical run. They do not validate the corrected runtime and must not be presented as current performance.
The pre-correction run recorded:
| control | state_probe_r2 |
role |
|---|---|---|
| federated scratch | 0.8885337114 |
historical federated row |
| local-only | 0.8838405609 |
historical no-aggregation control |
Within that historical artifact family, the federated row beat the recorded
random and naive-FedAvg controls but exceeded local-only by only
0.0046931505, below RFC-0017's required 0.05 margin. It therefore failed
the binding usefulness gate even before the direction bug was considered.
No post-correction claim-grade dynamic-env result is committed. The checked-in
dynamic-env artifacts also predate per-round
latent_std_mean/latent_rms instrumentation and do not contain those values.
This roadmap does not infer or retrofit them. A replacement run under
#335 must use the corrected
runtime, bind the required controls, and report held-out magnitude and
frame-drift diagnostics before any positive claim is reconsidered. RFC-0017
intentionally leaves the calibrated magnitude/drift thresholds open; until
claim-grade runs establish them, they are required review inputs rather than
additional numeric wins.
The CPU/CI de-risking gate is now positive, but narrower than the publication
bar. tests/ml/test_dynamic_env_cpu_gate.py trains the real tiny scratch
objective on smooth swipe-dot data, checks both unanchored and pinned-anchor
regimes against held-out state_probe_r2 >= 0.5, and closes a two-silo local
federated round whose committed aggregate clears the same ground-truth gate. That
test proves the local recipe can learn a resident state representation and that
the anchored path does not re-collapse it; it is not a substitute for the
historical configured-noise benchmark. The deterministic replay path is not
effective DP.
A local configured-noise replay of the two-silo CPU-gate updates found the remaining
publication risk. A fresh one-round RDP calculation at target epsilon=8 indicates that one
full-participation round needs roughly noise_multiplier >= 0.7; settings that satisfy that
one-round calculation in the
tested neighborhood sometimes cleared the absolute R2 floor (for example,
noise_multiplier=0.7, clip_norm=0.2, state_probe_r2 ~= 0.553) but all
tested settings reported frame_drift_deg=180.0, and the required local-only margin was not proven.
Because the seed is replayable and accounting is not cumulative or pre-release,
none is a budget-enforced DP result. Any replacement run must both wire
effective privacy controls and tune the noise/anchor/aggregation recipe, not
merely rerun the CPU proof on HF Jobs.
Environment¶
- Dataset adapter:
synthetic-dynamic://swipe-dot?... - Eval world:
kinematic://swipe-dot - State: resident
(x, y)true position carried insideWindow.state - Calibrated binding metric:
state_probe_r2 - Mandatory full-model diagnostics: held-out
latent_std_mean,latent_rms, and public-probeframe_drift_deg(exact pass thresholds remain open) - Supporting-only metrics: closed-loop
success_rate,effective_rank,skill_vs_identity, latent-MPC goal energy
success_rate is reported but non-binding because the planner objective can be
gameable. effective_rank is scale-invariant and cannot detect magnitude
collapse. skill_vs_identity is gameable. This is a synthetic control env, not
SO-100 and not paper-scale robotics evidence.
Artifact Producers¶
| Artifact | Producer | Gate |
|---|---|---|
| Consortium manifest + dataset registry | scripts/dynamic_env_silos.py |
Synthetic participant and held-out refs are deterministic, non-IID, disjoint, and published as placeholder/reproducible-from-seed metadata at HF dataset revision abdelstark/lensemble-dynamic-env-silos@6b61bdc10ee3ce22b3239f7b8c9dbbc5062d7b0d. |
| Long-run checkpoint/report | deploy/hfjobs/train_phase3_consortium.py --data-format synthetic-dynamic --encoder scratch |
A replacement run manifest must record scratch, not vjepa2-vit-l; per-round reports include held-out latent_std_mean and latent_rms alongside rank and drift. |
| Dynamic downstream report | scripts/phase3_inference_demo.py --dynamic-env |
Per-control state_probe_r2 plus non-binding success_rate. |
| Observability/privacy report | scripts/dynamic_env_observability_report.py |
Per-round one-round epsilon snapshot, secure-sum consumption/equivalence/fallback status, effective-DP status, communication bytes, and run-manifest hash binding; snapshots must not be presented as cumulative DP. |
| Benchmark/card/bundle | scripts/dynamic_env_benchmark.py |
Requires the full artifact-kind set and rejects a failed R2 gate or model-card drift. |
Replacement-run template¶
Representative launcher shape for a post-correction run:
hf jobs uv run --flavor a10g-large --timeout 2h --secrets HF_TOKEN \
deploy/hfjobs/train_phase3_consortium.py \
--data-format synthetic-dynamic \
--data-source 'synthetic-dynamic://swipe-dot?seed=10&n_episodes=16&steps=64&image_size=48' \
--data-source 'synthetic-dynamic://swipe-dot?seed=20&n_episodes=16&steps=64&image_size=48' \
--data-source 'synthetic-dynamic://swipe-dot?seed=30&n_episodes=16&steps=64&image_size=48' \
--data-source 'synthetic-dynamic://swipe-dot?seed=40&n_episodes=16&steps=64&image_size=48' \
--heldout-source 'synthetic-dynamic://swipe-dot?seed=99&n_episodes=16&steps=64&image_size=48' \
--encoder scratch \
--latent-dim 128 \
--depth 4 \
--predictor-depth 4 \
--num-heads 8 \
--image-size 48 \
--patch-size 16 \
--num-frames 1 \
--tubelet 1 \
--num-rounds 12 \
--inner-horizon 2 \
--window-steps 1 \
--lambda-anc 1.0 \
--secure-agg-threshold 3 \
--min-trainers 3 \
--metric-windows 64 \
--push \
--out-repo abdelstark/lensemble-dynamic-env-swipe-dot
Acceptance Matrix¶
| Claim | Required evidence | Status |
|---|---|---|
| Dynamic env data is resident and deterministic. | tests/ml/test_synthetic_dynamic_backend.py, tests/ml/test_dynamic_env_silos.py, docs/evidence/dynamic_env_silo_plan.json |
Implemented locally; placeholder/reproducible-from-seed registry metadata is published at HF dataset revision abdelstark/lensemble-dynamic-env-silos@6b61bdc10ee3ce22b3239f7b8c9dbbc5062d7b0d. |
The eval report exposes binding state_probe_r2. |
lensemble.eval.report.EvalReport.state_probe_r2, tests/ml/test_harness.py |
Implemented locally. |
| The CPU gate distinguishes binding R2 from scale-invariant collapse. | tests/ml/test_dynamic_env_cpu_gate.py |
Implemented locally: the real tiny objective passes held-out state_probe_r2 >= 0.5 in unanchored and pinned-anchor modes, and a two-silo local aggregate clears the same ground-truth gate while collapsed/random controls fail. |
| Full-model reports expose scale and drift diagnostics. | lensemble/eval/jepa_metrics.py, lensemble/federation/phase3_orchestration.py, tests/unit/test_jepa_metrics.py, tests/integration/test_phase3_consortium_run.py |
Implemented for new runs: latent_std_mean and latent_rms make uniform scale collapse visible even when effective_rank remains healthy; frame_drift_deg remains paired with them. Historical dynamic-env evidence has no retrofitted values, and calibrated pass thresholds remain open. |
| The HF launcher records a true scratch architecture. | --encoder scratch, tests/ml/test_phase3_consortium_launcher.py |
Implemented locally. |
| The historical checkpoint cleared the binding gate. | Pre-correction control report retained for audit. | Failed and superseded: historical federated state_probe_r2=0.8885337114, local-only 0.8838405609, and margin 0.0046931505 < 0.05; these values do not validate the corrected runtime. |
| The corrected runtime clears the binding gate. | New dynamic_env_benchmark_report.json from the corrected runtime: federated state_probe_r2 >= 0.5, margin at least 0.05 over random / naive-FedAvg / local-only, held-out magnitude and drift diagnostics, and an honestly labeled configured-noise control. |
Blocked pending the claim-grade work in #335. No post-correction result is committed. |
| A replacement model card is integrity chained. | dynamic_env_evidence_bundle.json with required artifact kinds and byte-identical card embedding. |
Producer implemented; publication remains blocked until a post-correction run clears the binding gate. |
Non-Claims¶
- No SO-100 downstream usefulness claim.
- No paper-scale LeWorldModel performance claim.
- No provenance ledger implementation.
- No cryptographic proof of honest participant computation.
- No claim that the pre-correction dynamic-env numbers validate the corrected runtime.
- No claim that a federated dynamic-env checkpoint materially beats local-only.