docs(jfm): establish traceable manuscript planning baseline

Track the research dossiers, section freezes, supporting manuscript materials, and round-aware agent controls so future drafting decisions can be reviewed across both repository mirrors.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Frank14f
2026-08-10 18:51:53 +08:00
co-authored by Cursor
parent 140eea4d25
commit 0ade812864
143 changed files with 37165 additions and 1 deletions
@@ -0,0 +1,207 @@
# Round-1 bottom-up evidence index: DRL, control and cases
> Evidence index only; not JFM manuscript prose. Repository facts are bounded by authority documents, executable code, manifests and retained artifacts. LegacyCelerisLab and modern V5/CelerisLab are separate chains and are never pooled silently.
## Executive map
- **Active package:** `src/drl_pinball/**`; modern V5 is the executable 2000×600 CelerisLab PPO workflow. Legacy PPO and acquisition code remains the historical compatibility path.
- **Scene families:** Legacy includes steady, Kármán cloak, vortex (Lamb/Taylor), Illusion and Erase, plus reduced-observation experiments. V5 retained scratch cases are 11 canonical cases: 4 Kármán Re/geometry groups, 4 Illusion target-size groups, 3 additional Kármán Re cases; 15 runs total.
- **Primary control contract:** PPO, Sin MLP `[64,64]`, three cylinder rotations, six downstream velocity channels plus six force channels; Illusion adds two reconstructed target-force channels. V5 uses calibrated native-v2 physical scales plus frozen-at-inference SB3 `VecNormalize`; Legacy uses fixed Phase-0 norms.
- **Reward rationale:** force terms impose low resultant force for cloak or target-force matching for Illusion; six-channel downstream DTW supplies an affordable temporal wake-signature objective. Full-field L2 is independent validation, not training reward.
- **Principal evidence:** Kármán `Re100` is code-Re 100, equivalent to single-cylinder `Re_D=50` under `U0=0.01`, `D=20`, `nu=0.004`. V5 has seeds 4145; retained deterministic evaluation selects seed 45. The current retained V5 package supports repeated policy discovery but seed-dependent late retention, not robust convergence.
- **Field validation:** `wake_l2.py` schema `drl-pinball-wake-l2-v2`; canonical summary is 23 rows (15 V5 controlled, 7 Legacy periodic, 1 Legacy steady). Periodic `E_mean` is complete-cycle mean-field RMS; `E_phase8` is an eight nearest-snapshot diagnostic. Current matrix improves `eta_mean` in every row; V5 `kar_re400` seed 43 worsens `E_phase8` relative to zero.
- **Status:** no new CFD or training run was performed here. `src/drl_pinball/data/reproduction` is external/symlink-backed in this checkout and not discoverable through the normal workspace glob; manifests and repository docs remain the provenance authority.
## Source ledger
| Layer | Authority / source | What it establishes | Boundary |
|---|---|---|---|
| Workflow | `.cursor/rules/jfm-research-workflow.mdc`; `ROUND1_BOTTOM_UP/README.md` | evidence-first workflow; Legacy/V5 separation; claim boundaries | not numerical authority |
| Package map | `src/drl_pinball/README.md`, `CLAIMS.md`, `RESULTS.md`, `DATA_DICTIONARY.md`, `HISTORY_AND_LESSONS.md`, `WRITING_HANDOFF.md` | scope, result lineage, safe interpretation, artifacts | reader layer; artifacts win |
| Legacy code | `legacy_env/*.py`, `legacy_train/*.py`, `legacy_test/core/dtw_metrics.py`, `legacy_test/metrics.py`, `legacy_test/acquire.py` | historical scene/action/obs/reward/DTW contracts | distinct solver and norm chain |
| V5 code | `train/env_karman.py`, `train/env_illusion.py`, `train/case_registry.py`, `train/TRAIN_PIPELINE.md`, `train/DESIGN_DECISIONS.md` | executable calibration, PPO, reward, normalization, checkpoint contracts | retained runs predate some current contracts |
| V5 result authority | `train/output/*/meta.json`, `train/results/latest/tables/latest_results_summary.json`, `latest_eval_summary.csv` | best values, iterations, selected seed, retained evaluation | retained historical; not post-fix retraining |
| TB export | `train/results/training_csv/training_iterations.csv`, `training_csv/manifest.json` | 7,000 rows, 14 conflict-free runs | auxiliary; Re60 excluded fail-closed |
| Field evaluation | `eval/wake_l2.py`, `eval/tests/test_wake_l2.py`, `WAKE_L2_AND_SENSOR_PLACEMENT_RESEARCH_NOTES.md` | ROI, formulas, phase/frequency diagnostics, exclusions | geometry-guarded, not solver-mask-proven |
| Plot navigation | `data/reproduction_plots/manifest.json`, `plot_flow_fields.py`, `plot_reproduction_summary.py`; SR plot manifest/README | 30 V5/Legacy plots; 11 partial Legacy-SR plots | derived views; phase slot 0 default |
| Solver setting | `configs/config_lbm_karman_2000x600*.json`, `configs/config_lbm_pinball.json`, `CELERISLAB_VALIDATION_DOSSIER.md` | V5/Legacy settings and CelerisLab qualification | validation anchors do not validate DRL mechanism |
| Experimental navigation | `knowledge.md` §16.5; repository search | water tunnel/towing/force sensor/PIV are described as experimental setup/demos | no full experimental validation package located |
File hashes recorded during this audit (SHA-256, bytes): `latest_results_summary.json` `4d5ef8f1cb1dbcbb9d5528bd0478c2c4815d4b49c92e0253b6ea54acac110617` (36582); training manifest `e5a7b096fb9dd737365fe37e37e748ab732697686d0b45ed08b2f3a980469acd` (1036); reproduction plot manifest `448251183cc80716c7b1b5b96ffdb5206eecaa2cd725fb67fbf67c09ac1bc32c` (45663); SR plot manifest `a5a4588219d658fed9e259aec91171643566c9472938317b8d0f2cbbf214ed4f` (54677); `eval/wake_l2.py` `6b3a9b093b427b06cb5dafcc2ad3a648971a647d5bbfb7a47fc21ee9dd00ebd7` (15975); L2 research note `f97f7044603e0ee3f52cd21c4a514a7250b188dd6e7ece40cb8947aacb7506cb` (39396).
## Chronology and package evolution
1. **Legacy PPO era:** original `LegacyCelerisLab` workflow established steady cloak, Kármán cloak, Illusion, vortex, Erase and reduced-observation experiments. Legacy model inventory and scene notes are consolidated in `knowledge.md`; exact old contracts live in `legacy_env` and `legacy_test`.
2. **Steady contextual start:** near-uniform/constant rotation was explored before periodic Kármán control. It is contextual calibration and not active DRL robustness evidence.
3. **Kármán Re100 anchor:** the original periodic cloak chain became the main DRL reference. Code name `re100` means `U0*(2D)/nu=100`; physical one-cylinder `Re_D=50`.
4. **Transfer and scene expansion:** Legacy transfer was used for vortex and Erase; Illusion introduced target-cylinder force/harmonic matching; reduced-observation experiments probed hardware simplification.
5. **V5 migration:** CelerisLab changed the solver/API and moved to a 2000×600 grid, uniform/free-slip setting, explicit case registry, calibration-v2/native units, zero bias and `VecNormalize`. V5 was intentionally changed for extensibility and robustness information, not as a numerically identical continuation of Legacy.
6. **V5 scratch matrix:** 15 retained runs across 11 cases. Re100 has five seeds; all other canonical cases have one. `kar_d075` and `kar_d2` use `1e-4` learning rate versus mostly `3e-4`, confounding a pure radius ablation.
7. **Evidence consolidation:** training, deterministic policy evaluation, reproduction acquisition and offline wake-L2 evaluation were separated. Result figures/tables are reader-derived products; no current-contract complete retraining is established.
8. **Current indexing:** plots, manifests, field-role metadata, phase diagnostics and claim ledgers were frozen for downstream agents. SR/CCD/OID are interfaces only here; Illusion SR is historical/negative and not a DRL positive claim.
## Case taxonomy and contracts
### Legacy scene matrix
| Scene / IDs | Geometry and target | Re convention / role | Action mapping (normalized action `a`) | Observation / interval |
|---|---|---|---|---|
| steady | three-cylinder pinball; target and constant-control contextual comparison | Legacy steady; late snapshot | scene-specific legacy constant role | nonperiodic; `late_field.npz` |
| Kármán cloak: `karman_re50/100/200/400` | upstream disturbance cylinder + 3 pinball cylinders; target is disturbance wake | code Re uses `2D`; Re100 ↔ `Re_D=50` | `omega/U0 = a*8 + [0,-4,+4]` | 12 policy channels; `SI=800`, `FIFO=150`, `CONV=30`, `MAX_STEPS=500` |
| vortex: `vortex_lamb`, `vortex_taylor` and offsets | transient Lamb dipole or Taylor monopole passes through pinball; target is evolving sensor signal | Legacy transfer from Re100 documented; event roles | `omega/U0 = a*4 + [0,-4,+4]` | 12 channels; `SI=800`, `MAX_STEPS=150`; event-relative fields, not periodic phase |
| Illusion: `illusion_075L/1L/15L` | standalone target cylinder at target-size ratio plus 3 sensors; pinball imitates target | target force and sensor signal; Legacy target body and pinball are separate runs | `omega/U0 = a*8 + [0,-2,+2]` | 14 channels: 12 force/sensor + target `Cd,Cl`; `CONV=36`; target harmonics are 5-frequency/channel reconstruction |
| Erase | clean inflow target, disturbance-carrying pinball scene; target is mean/clean sensor state | nonperiodic/diagnostic semantics | `omega/U0 = a*8 + [0,-8,+8]` | special 14-channel raw layout; `SI=600`, `CONV=36`; enhanced DTW reward |
| reduced observation | Kármán layout with force/torque/sensor subsets | hardware simplification experiments | generally cloak scale/bias | S_DIM varies 39; historical, not main chain |
Legacy geometry in lattice cells is `L0=20`, `NX=1280`, `NY=512`, `y0=255.5`; Kármán disturbance center `x=200`, pinball front `x=600`, rear `x=626`, sensors `x=800` at `y0+40,y0,y0-40`; pinball radius 10 and sensors radius 5. Illusion shifts pinball to x=380/406, target to x=400, sensors to x=600. The raw Kármán observation is `[dist force(2), sensors(6), pinball forces(6)]`; training slices `[2:14]`, then normalized policy order is **forces first, sensors second**, despite older prose saying otherwise. Illusion raw is sensors then forces, with target force channels appended after normalization.
### V5 canonical matrix
| Family | Canonical IDs | seeds | SI | geometry / Re |
|---|---|---:|---:|---|
| Kármán baseline | `kar_re100` | 41,42,43,44,45 | 800 | 2000×600; code Re100, `Re_D=50`; disturbance radius default |
| Cross-Re | `kar_re60`, `kar_re200`, `kar_re400` | 43 | 800,500,400 | matching viscosity configs; code-Re labels |
| variable disturbance | `kar_d075`, `kar_d15`, `kar_d2` | 44,45,45 | 800 | radius ratios 0.75, 1.5, 2.0; not pure LR-controlled geometry comparison |
| Illusion | `ill_075L`, `ill_1L`, `ill_15L`, `ill_2L` | 43 | 1100,1200,1200,1200 | target radius ratios passed as `target_diam*L0`; physical radii 15/20/30/40, diameters 30/40/60/80 |
V5 geometry: `D=20`, front `(1000,299.5)`, rear `(1026,314.5)/(1026,284.5)`, sensor plane `x=1200` for Kármán; Illusion front/rear `(380,299.5)/(406,314.5)/(406,284.5)`, sensor/target plane `x=600`. V5 config uses `D2Q9`, FP32, MRT, double-buffer, uniform regularized inlet, `neq_extrap` outlet with backflow clamp and free-slip y walls. `config_lbm_pinball.json` is Legacy/new compatibility context, not the active V5 2000×600 training configuration: it is 1280×512, parabolic Zou-He and bounce-back walls.
## Formula and implementation contracts
### Legacy normalization and reward
Legacy Phase-0 normalization is frozen per scene/model and must be paired with the saved `norm.json`; fresh recomputation is invalid for reference comparisons.
- Standard Kármán/Illusion/Vortex: `force_norm_fact = 6*max(|forces|)`; `sens_deviation=mean(sensor)`; `sens_norm_fact=5*max(|sensor-sens_deviation|)`.
- Erase uses special force/sensor factors 100/10; reduced-observation has model-specific factors.
- Policy input is `hstack([forces_norm(6), sens_norm(6)])`, clipped to `[-1,1]`; Kármán starts from raw `obs[2:14]`.
- Legacy action persistence is built-in exponential smoothing: `a_applied=(1-0.1)*a_previous+0.1*a_target`. V5 has an explicit equivalent `ActionSmoother(weight=0.1)`.
For standard Legacy Kármán, with normalized forces `cd=(f_x^front+f_x^bottom+f_x^top)/3` and similarly `cl`, `sim=mean_i(1-DTW_i/CONV_LEN)`,
`r_cd=exp(-|20 cd|)`, `r_cl=exp(-|80 cl|)`, `r_sim=exp(-10|sim-1|)`, and `r=min(0.3 r_cd+0.4 r_cl+0.3 r_sim,1)`. Vortex uses weights `(0.2,0.3,0.5)`. Illusion uses summed three-pinball force against reconstructed target force, weights `(0.3,0.3,0.4)`, and sensitivities 10/10. Erase uses `0.4 r_u+0.4 r_v+0.2 sim`, where `r_u=exp(-40|sensor_u-target_u|)`, `r_v=0.7 exp(-20|amp_v|)+0.3 exp(-20|sensor_v-target_v|)`, and enhanced similarity is 80% max-cost DTW + 10% amplitude ratio + 10% mean similarity.
### Legacy DTW exact implementation
`legacy_test/core/dtw_metrics.py` computes an unweighted absolute-cost dynamic program:
`D[i,j]=|target[i-1]-state[j-1]|+min(D[i-1,j],D[i,j-1],D[i-1,j-1])`, `D[0,0]=0`, other boundaries infinity; `sim=1-D[n,m]/n`. Kármán lag is `argmax` of cross-correlation of middle-sensor Uy (`target[:,1]` vs state); six channels use `roll(target,-lag)[CONV:2CONV]` versus the last `CONV` state samples and are averaged. Illusion estimates lag from target force/sensor offset channel `target[:,3]` against state middle Uy `state[:,1]`, then target sensor channels are `target[:,i+2]`. Vortex has no lag and rolls the last window by `current_step+1`. DTW lag is a signal alignment index, not physical delay or causality.
`legacy_test/metrics.py` separately provides offline target-channel max-abs normalized cycle DTW: each target channel scale is `max(abs(target[:,i]))` (floor `1e-12`), both arrays are divided by that scale, then the same Legacy cycle DTW is computed. This is not the native reward formula. It records the exact `scale`, lag channel and `conv_len` in `dtw_summary.json`.
### V5 DTW and reward
V5 `calc_dtw_sim` uses the same absolute-cost DP but `sim=max(0,1-D[n,m]/(n*dtw_norm_scale))`. `dtw_norm_scale` is calibration-specific, not a universal constant. Examples from calibration artifacts: Kármán Re100 `0.0026153846153846153` in the canonical calibration and retained run-local calibration `0.204` (the latter demonstrates why calibration identity must accompany numbers); Re400 `0.0039743589743589745` canonical and retained run-local `0.31`; Illusion canonical `ill_075L 0.0023846153846153848`, `ill_1L 0.0032307692307692306`; retained run-local values are `0.186`, `0.252`, `0.355`, `0.433`. The code and artifact schema, not a prose approximation, decide which value applies to a result.
V5 computes lag from target/state middle-sensor channel index 3 in the six-channel `[s0 ux,uy,s1 ux,uy,s2 ux,uy]` convention, selects target `[CONV:2CONV]` and state tail `[-CONV:]`, averages six DTW values, interpolates through calibration `SIM_BP``SIM_VAL`, and computes:
`r_cd=EMA(exp(-cd_norm² K_CD),0.2)`, `r_cl=EMA(exp(-cl_norm² K_CL),0.2)`, `reward=W_CD r_cd+W_CL r_cl+W_SIM r_sim-floor_penalty`, clipped at zero. Kármán force aggregation is the **mean** of three controlled-cylinder forces; Illusion is the **sum** matched to one target-cylinder force. Canonical Kármán constants are `K_CD=50,K_CL=100`; Illusion `12,25`; weights are `0.3,0.3,0.4`; floor thresholds are 0.1 and floor penalty 0.05. V5 normalized physical observation is `[forces/SCALE, sensors/SCALE]`, with Illusion target `Cd,Cl` appended; VecNormalize whitens observations only (`norm_reward=False`, `clip_obs=10`, `gamma=.99`).
### Sin activation and PPO protocol
Both retained model inventory and V5 source specify custom `Sin.forward(x)=sin(x)` in an MLP `Linear→Sin→Linear→Sin→Linear`, hidden widths 64×64. The historical rationale is periodic/vortex spectral fidelity; it is a design rationale, not an independently demonstrated activation ablation. V5 defaults: PPO SB3, `n_steps=2048`, batch 64, 10 epochs, learning rate `3e-4`, `gamma=.995`, deterministic evaluation; action range `[-1,1]`, `omega=-(action*12)*U0/RADIUS`, EMA 0.1. Each logged training iteration is `learn(2048)` plus up to 360 deterministic evaluation steps; scoring tail is last 180. Environments do not terminate Gym episodes. Best retention saves `best_model.zip` together with same-selection `best_vecnormalize.pkl`; per-iteration model/normalizer pairs exist in source workflow but intermediate/final streams are not released. Resume is continuation, not exact replay. Seeds distinguish stochastic runs, not deterministic GPU replay. Symmetry wrapper exists but active default is off; historical configured probability 0.5 did not yield effective transition augmentation under the reset timing audit.
## Result ledger: V5 retained training and evaluation
Authority: `train/results/latest/tables/latest_results_summary.json` and `latest_eval_summary.csv`; table hash above. Values below are retained historical deterministic evaluation, 360 steps, last-180 scoring tail, `legacy-policy-v1` compatibility, not current-contract retraining.
| case | seed(s) / n | eval reward | DTW | r_cd | r_cl | r_sim | status / failure mode |
|---|---:|---:|---:|---:|---:|---:|---|
| `kar_re100` | selected 45 / 5 | 0.931258 | 0.918458 | 0.981787 | 0.980641 | 0.856324 | main anchor; selected-seed multi-seed result |
| `kar_d075` | 44 / 1 | 0.949619 | 0.910736 | 0.966266 | 0.974395 | 0.918552 | demonstration; LR 1e-4 confound |
| `kar_d15` | 45 / 1 | 0.957656 | 0.892390 | 0.993683 | 0.996858 | 0.901234 | demonstration |
| `kar_d2` | 45 / 1 | 0.909436 | 0.816482 | 0.976047 | 0.988719 | 0.800015 | demonstration; LR 1e-4 confound |
| `ill_075L` | 43 / 1 | 0.878312 | 0.880188 | 0.935905 | 0.818551 | 0.879939 | high action saturation, 0.8222 any-channel fraction |
| `ill_1L` | 43 / 1 | 0.766871 | 0.893062 | 0.914360 | 0.706057 | 0.701863 | high action saturation, 0.9611 any-channel fraction |
| `ill_15L` | 43 / 1 | 0.596248 | 0.877500 | 0.787644 | 0.349086 | 0.638072 | force/lift degradation; saturation 0.8444 any |
| `ill_2L` | 43 / 1 | 0.579589 | 0.869949 | 0.728111 | 0.173972 | 0.783248 | force/lift degradation; saturation 0.9000 any |
| `kar_re60` | 43 / 1 | 0.604643 | 0.364287 | 0.935710 | 0.738946 | 0.255616 | weak DTW; excluded from clean TB CSV due conflicting resume history |
| `kar_re200` | 43 / 1 | 0.498573 | 0.711742 | 0.498072 | 0.314928 | 0.652500 | degraded cross-Re demonstration |
| `kar_re400` | 43 / 1 | 0.446254 | 0.564630 | 0.611165 | 0.305857 | 0.448598 | degraded cross-Re demonstration |
V5 retained best training rewards: Re100 seeds 4145 are `0.9266385, 0.9301960, 0.9160065, 0.9221958, 0.9411612`; best iterations `471,315,360,465,447`. Last-50 median retention ratios are `0.6703,0.2004,0.1626,0.8581,0.6373`; this is direct evidence for discovery versus late retention separation. Best canonical training values are in each run `meta.json`; TB export has 7,000 rows from 14 runs, excludes Re60 because 213 conflicting duplicate steps and mixed-config resume history.
## Result ledger: field/L2 artifacts
`wake_l2.py` schema `drl-pinball-wake-l2-v2` uses `D=20`; ROI `-6≤(x-xs)/D≤14`, `|(y-y0)/D|≤5`, inclusive lattice cells. V5 sensor-plane registrations are Kármán `xs=1200`, Illusion `xs=600`; Legacy Kármán `xs=800`, Illusion `xs=600`. `E_mean` is complete-cycle arithmetic mean-field U0-normalized area RMS; `E_phase8` is eight independently phased nearest-boundary snapshots; `eta=1-E_ctl/E_zero`; time is `tU0/NX`, so frequencies are relative within case only. Exact solver masks are not persisted; this is geometry-guarded, not exact common-fluid-mask L2. Vortex/Erase are excluded from the formal matrix; steady is late-snapshot only.
Canonical summary (memory and L2 note; read JSON/CSV before final numerical writing): 23 rows = 15 V5 controlled seeded roles, 7 Legacy periodic roles, 1 Legacy steady constant role. All 23 have positive `eta_mean` (`0.1092..0.8933`). Exception: V5 `kar_re400` seed 43 has `E_phase8_ctl=0.490471` versus zero `0.450626`, `eta_phase8=-0.08842`, while mean-field still improves (`E_mean_ctl=0.177469` versus zero `0.221541`, `eta_mean≈0.1989`). It also has relative frequency mismatch `0.2650` and period CV `0.27346`; phase claim is dynamically weak. Other audit diagnostics include largest actual-phase slot delta `0.10286 rad` (Legacy illusion_075L), largest selected-role phase error `0.08699 rad` (Legacy karman_re100), unique controlled cycle counts 38, and no controlled role reused the same field index across slots.
## Kármán Re100 principal evidence map
- **Definition:** V5 `kar_re100`: 2000×600, `nu=.004`, `U0=.01`, code reference `2D=40`; Legacy `karman_re100`: 1280×512, parabolic Zou-He, bounce-back walls, Legacy API. Never call the label unqualified “cylinder Re=100”.
- **Training:** five retained scratch seeds, 500 iterations; high best reward on all five, but late retention varies strongly. The strongest retained policy selection is seed 45 (`eval reward .931258`, DTW `.918458` under the retained evaluation contract).
- **Signals:** six sensors at one downstream plane, three probes with `(y-y0)/D=+2,0,-2`, radius `.25D`; forces and sensors are distinct objective channels.
- **Field:** reproduction plots exist for all five V5 seed views and Legacy Karman Re100; the default plot is phase slot 0. Source phase NPZ, timeseries, metadata and external-root paths are manifest-bound where available.
- **Interpretation boundary:** Re100 supports a named-condition multi-seed discovery/retention statement and field comparisons; it does not establish universal robustness, causality, stability, response delay or a unique mechanism.
## Cross-condition ability, degradation and failures
- Cross-Re retained evaluation degrades from Re100 to Re60/Re200/Re400 in DTW and reward; n=1 each, so this is named-condition evidence, not a continuous generalization law.
- Variable disturbance cases retain high reward/DTW but are confounded by learning-rate differences for `d075` and `d2`; no pure geometry ablation.
- Illusion reward and force components decline as target size increases, while action saturation is high; this documents difficulty/degeneration, not target-size law.
- Re60 is a specific provenance failure in the clean training-series export: conflicting duplicate TensorBoard values at 213 steps and a mixed-config resume branch. It remains in the retained result table but is not used in the clean CSV.
- Legacy Illusion DRL/PPO remains a historical target-matching demonstration under its own Legacy contract. Legacy Illusion SR is negative/historical and does not change the PPO role.
- Vortex and Erase are retained navigation/artifact roles, but their transient/nonperiodic semantics are excluded from current formal L2 matrix; do not convert their event/late plots into periodic phase evidence.
## Evidence and artifact inventory
### Training and evaluation
- `train/output/<case>_seed<seed>/meta.json`, `calibration.json`, `target.npy`, `models/best_model.zip`, matching `best_vecnormalize.pkl` (compact retained bundle; inspect per-run metadata for hashes and provenance).
- `train/results/latest/tables/latest_results_summary.json`, `latest_eval_summary.csv`, `HOW_TO_READ.md` (authoritative reader tables and limitations).
- `train/results/training_csv/training_iterations.csv` + manifest (7,000 rows; 14 runs; Re60 exclusion reason/hash).
- `train/results/latest/figures/fig01*fig05*` and retained evaluation figures are referenced by `HOW_TO_READ.md`; they are derived plotting products and should not be mistaken for new CFD.
### Reproduction / field material
- `data/reproduction_plots/manifest.json`: 30 plots; fixed vorticity `[-0.001,+0.001]`; V5 seeded and Legacy Kármán/Illusion/steady/vortex/erase role mappings; default selector is phase slot 0, vortex selector is event relative offset `-10`, steady selector is late field index 159.
- `data/reproduction_plots_sr/manifest.json` and README: 11 plots out of expected 23, explicitly partial; Kármán Target/PPO/SR/Zero and term-deletion variants; generalization cases intentionally Target/SR/Zero with no PPO. Manifest records hashes, sizes and absolute external role paths.
- Plot code: `plot_flow_fields.py`, `plot_reproduction_summary.py`, `train/plot_latest_results.py`, `train/plot_scratch_results.py`; offline L2 code/tests under `eval/`.
- Raw role artifacts, when external store is mounted: `phase_fields.npz` (eight slots plus means/phase diagnostics), `event_fields.npz` (five event offsets), `late_field.npz`, `timeseries.csv/.npz`, `metadata.json`, role manifests and source hashes. The current normal workspace did not expose these directories; do not infer absence from that tooling limitation.
### Experimental/demo navigation
`knowledge.md` §16.5 records a water tunnel with towing platform (25 cm width), custom air-bearing/2D force-sensor system with semiconductor strain gauges, low-noise acquisition and planar PIV; repository search found no dedicated current water-tunnel/demo evidence dossier or raw experimental dataset. Status is demo/feasibility navigation only. Required future inventory: experiment date/configuration, scale, towing speed/Re, sensor calibration and sampling, PIV raw/processed fields, uncertainty, synchronization, and exact figure source data.
## Cross-package interfaces and boundaries
- **SR:** Legacy standardized acquisition reuses target/physical-zero/PPO role contracts, sensor/force/action ordering, 480 warm-up control intervals + 160 retained boundaries where documented, and the same Legacy solver. This index only points to `src/SR_analysis/` and `data/reproduction_plots_sr`; SR law/effect/ablation claims belong to the SR agent. Illusion SR is closed as negative/historical.
- **CCD/OID:** DRL provides controlled/target/zero signals and fields; CCD describes control-vs-constant differences, OID has separate dual-clock and exact-mask contracts. Neither metric is a DRL score or causal proof. Keep field clocks separate from control clocks.
- **Theory/steady:** steady constant-control and Legacy steady plots are contextual calibration; theoretical rotation interpretations must not be imported into DRL results without matching solver/geometry/action sign contracts.
- **Solver validation:** CelerisLab qualification is separate: only Kan99b K2 and Sah04 S2 full runs retained; Kan99 lift sign remains unresolved, qualification matrix is partial, and no solver validation proves DRL mechanism. Legacy equivalence is prohibited.
## Claim boundaries, conflicts and gaps
### Authorized / supported at named scope
- V5 retained PPO uses calibrated targets, native-v2 physical scaling, observation-only VecNormalize, zero bias, explicit EMA smoothing and Sin MLP.
- Re100 has five retained seeds and repeated high-reward checkpoint discovery; late retention is seed-dependent.
- Retained V5 cross-Re, disturbance-size and Illusion cases are named-condition demonstrations with the result values above.
- Six-channel sensor DTW and independent field L2 are distinct evidence roles; field metric is exactly specified by `wake_l2.py`.
- CelerisLab is a GPU D2Q9 MRT LBM implementation with documented sensor-readback validation and partial rotating/confined-cylinder qualification.
### Prohibited without new evidence
Do not claim universal Re generalization, distribution-wide robustness, asymptotic stability, causal wake mechanism, physical response delay from DTW, pure disturbance-radius ablation, post-fix complete retraining, exact Legacy/V5 numerical equivalence, full-state observability from three probes, optimal `x/D=10` or `y/D=±2`, exact solver-mask L2, or statistical uncertainty for n=1 cases.
### Conflicts / gaps to resolve later
1. Retained V5 run-local `calibration.json` values for `dtw_norm_scale` differ from canonical calibration directories; every number needs exact calibration identity and target hash.
2. `train/results/latest` evaluation uses `legacy-policy-v1` compatibility while current source describes native-v2; this is intentional retained-history boundary but limits direct current-code interpretation.
3. `src/drl_pinball/data/reproduction` role tree is external/symlink-backed and not exposed by ordinary workspace glob; audit its mounted tree before quoting per-role file hashes or schema values.
4. Legacy raw and normalized observation descriptions had historical channel-order conflict; executable `legacy_env` and `legacy_test` code wins: normalized policy vector is forces first, sensors second.
5. Wake L2 has no persisted solver-exact masks; future acquisition should persist common-fluid masks and, if needed, repeated-crossing phase-bin fields.
6. Vortex/Erase require explicit event/nonperiodic metrics before formal cross-scene field claims; current plots are navigation, not a common periodic matrix.
7. No dedicated current water-tunnel/demo raw data or synchronized PIV/force package found.
8. CelerisLab validation dossier records only K2/S2 full qualification, unresolved Kan99 lift sign, no mesh-convergence package, no uncertainty ensemble and no full Kan99 fields.
9. Exact per-artifact hashes for all V5 model bundles, calibration/target pairs and external raw NPZ should be extracted from their manifests before final figure panels.
10. Figure inventory is complete at navigation level, but publication-ready panels/data exports do not yet exist; future panel assembly must preserve role, seed, phase/window, comparator and hash.
## Candidate physical logic (not frozen claims)
- The reward deliberately combines global force balance and a sparse downstream wake signature: force terms penalize persistent resultant drag/lift, while sensor DTW asks for temporal target-signature agreement. This division is physically motivated by experimental feasibility and computational cost, but force/DTW reward success does not itself prove full-field cloaking.
- In coherent Kármán regimes, centre `u_y` provides a phase-sensitive shedding coordinate; upper/lower probes add transverse coverage and streamwise/transverse complementarity. This can explain why sparse history can guide control, while L2 tests what lies between and beyond probes.
- The repeated Re100 high-best/variable-late pattern suggests a policy-search and retention issue, not automatically a fluid instability. V5 cross-condition degradation and Illusion saturation identify where the retained controller departs from the anchor regime.
- Steady, periodic and transient cases should be treated as distinct dynamical contracts. Near-constant action structure may be a candidate control skeleton, but establishing that belongs to SR/theory evidence and must retain action signs, solver chain and case identity.
## Quick handoff checklist
For every future numerical claim record: `path`, SHA-256, schema, array shape/keys, units, geometry/Re convention, role/case, seed, comparator, metric formula, evaluation window, normalization/calibration/target identity, and status (`current`, `retained historical`, `diagnostic`, `negative`, or `gap`). Read artifacts before prose; keep this file an index rather than a manuscript.
@@ -0,0 +1,216 @@
# Round 1 bottom-up evidence dossier: symbolic-regression control laws
> **Role.** This is an index and evidence dossier for later condensation, not manuscript prose. It records repository facts, bounded observations, interpretations, negative/historical results, and unresolved questions. Repository authority/code/manifests/artifacts outrank memory and old narrative. No immutable artifact was modified; no CFD was launched.
>
> **Authority status at 2026-08-10.** Active SR science is LegacyCelerisLab Kármán/cloaking only. `steady` is contextual calibration. Illusion SR is retained historical/negative evidence. Modern CelerisLab V5, DRL, CCD, OID and steady packages are interface/context only and are not pooled into this SR chain.
## 1. Scope and questions
This dossier covers `src/SR_analysis/**`, the Legacy acquisition/deployment interface in `src/drl_pinball/legacy_test/**`, and the relevant Legacy solver boundary in `LegacyCelerisLab/**`. It indexes:
- the real Stage 1 → Stage 2 → Stage 3 workflow and the closed-loop CFD arbiter;
- state/action pairing, feature construction, normalization, action order, units, Reynolds convention and reflection contracts;
- canonical formula/tree/coefficient identity and deployment mapping;
- Kármán training, validation, finite-duration and named pointwise extension cases;
- ablation/deletion/scaling evidence and its strict interpretation;
- steady, vortex/other cloak transfer boundaries, Illusion SRs negative archive status, offline-fit versus closed-loop evaluation, failures, and future SINDy/tree-search boundaries;
- a path/hash/result ledger, formula table, case matrix, figure/data/script inventory, and gaps requiring verification.
**Evidence labels used below:** `FACT` = directly stated by current authority/code/manifest/artifact; `OBS` = bounded observed output; `INTERPRETATION` = permitted interpretation; `HISTORICAL/NEGATIVE` = retained but not active positive evidence; `UNSUPPORTED` = do not claim without new authority; `GAP` = needs targeted verification. Numerical values are copied only where a current package index or artifact exposes them.
## 2. Sources inspected and authority ordering
### 2.1 Repository sources
| Layer | Paths | Use/status |
|---|---|---|
| Cross-repo authority | `README.md`, `src/README.md` | solver separation, current status, evidence hierarchy |
| SR authority | `src/SR_analysis/README.md`, `PIPELINE.md`, `results/README.md`, `results/INDEX.md`, `HISTORY_AND_LESSONS.md`, `HANDOFF.md` | current scope, contracts, claim ledger/navigation |
| Executable contracts | `configs.py`, `stage_1_infer.py`, `stage_2_fit.py`, `stage_3_validate.py`; `utils/{data_contracts,feature_builder,g_operator,formula_schema,metrics,provenance}.py` | executable order, alignment, features, G, formula identity, DTW and hashes |
| Stage 1 evidence | `data/runs/article-joint-data-karman-20260718/**`, `data/runs/article-joint-data-illusion-20260718/**` | manifests/config/result and model/norm provenance |
| Derived result packages | `results/runs/article2-plotting-package-20260721/**`, `article2-steady-analysis-20260720/**`, `article2-long-timeseries-csv-20260720/**` | derived tables, steady interpretation, long-run manifests/tables |
| Legacy interface | `src/drl_pinball/legacy_test/README.md`, `acquire.py`; `legacy_test/tests/**`; `LegacyCelerisLab/README.md` | role semantics, warm-up/phase/publication contract, solver boundary |
| Historical archive | `src/SR_analysis/archive/README.md`, `archive/**` | failed/superseded routes only; not active authority |
### 2.2 External memory and literature routing
- **Nowledge Mem:** used `read_context_bundle` (Working Memory loaded) and a targeted `memory_search` for SR/Legacy/Kármán/Illusion. The targeted search returned zero durable results; Working Memory supplied the relevant prior decisions but was treated only as retrieval context, not scientific evidence.
- **Undermind:** called orientation, listed workspaces, and inspected the existing `DynamisLab` workspace (`4383d145-2c80-4991-8a9c-7ac2dd683438`). Existing SR notes and literature folders were found, including `SR_analysis/` and `JFM References/03 Symbolic regression and interpretable control/`, `05 Hydrodynamic cloaking and flow illusion/`. No new deep search was started. No external method claim is needed to establish repository facts in this dossier.
## 3. Real pipeline: Stage 1 → 2 → 3 plus standardized roles
```text
Frozen PPO + Legacy scene/norm
└─ Stage 1: infer + record immutable PPO trajectories; replay/order/provenance gates
└─ accepted controlled.npz + config/manifest/norm/result/target artifacts
└─ Stage 2: broad discovery (per-case and within objective, several seeds)
└─ topology recurrence / deployment safety diagnostics
└─ freeze topology; refit coefficients on declared eligible data
└─ formula JSON + expression hashes + parent/source hashes
└─ Stage 3: static safety → 40-step L2 screen → 200-step L3 Legacy closed loop
└─ finite 400-step / named unseen points / deletion / steady context
```
**CFD arbiter (FACT).** Stage 2 offline fit metrics (R²/RMSE/Pareto) diagnose imitation and topology; they do not accept a controller. Stage 3 closed-loop Legacy CFD, finiteness, early termination, schema/order, provenance, declared metric, and comparator arbitrate. One failed case must not be hidden by an average. Failed/rejected/partial telemetry remains evidence.
**Separate August collector (FACT).** `src/drl_pinball/legacy_test/acquire.py` is not Stage-3 replay or a refit pipeline. It reruns frozen `target`, `controlled`/PPO, `sr`, `zero`, and named deletion roles under a common contract: 480 warm-up intervals, 160 retained post-step boundaries, same-run fields/telemetry, independent phase, complete cycles, eight fixed-phase snapshots, complete-cycle means, native and separately named normalized DTW, transactional staging, exact-schema validation and no-clobber publication. It audits late/standardized role behavior and complements the July chain.
## 4. Contracts: pairing, features, normalization, units and symmetry
### 4.1 Data pairing and windows
| Contract | Verified rule | Evidence |
|---|---|---|
| Array schema | sensors `(T,6)`, forces `(T,6)`, actions `(T,3)`; Illusion target forces `(T,2)` | `utils/data_contracts.py` |
| Causal fit pairing | post-state `i` predicts action `i+1`; history uses action `i` and `i-1`; trajectory-local | `CAUSAL_ALIGNMENT`, `build_batch_dataset` |
| Historical pairing | post-state `i` → same action `i`, with historical lag construction; retained for compatibility, not silently mixed | `HISTORICAL_ALIGNMENT` |
| Splits | contiguous, non-overlapping train/validation/blind blocks; no trajectory boundary crossing | `contiguous_block_slices`, `PIPELINE.md` |
| Stage 1 | four trained Kármán cases re-code 50/100/200/400; 200 recorded PPO steps; 197 causally aligned rows per scene | `results/README.md`, plotting table |
| Stage 3 | L2 gate 40 control steps; L3 standard 200; Article2 long 400; named Kármán extension 200 | results index/plotting README |
| Standardized periodic roles | 480 warm-up + exactly 160 retained boundaries; ≥4 accepted rising crossings or fail closed | Legacy acquisition README |
| DTW | `legacy_dtw_v1_abs_n_unclipped`; target cycle `[conv_len:2 conv_len]`, state final `conv_len`; lag channel 1; six-channel mean | `utils/metrics.py`, `configs.py` |
DTW circular lag is alignment metadata, not a physical delay. Native reward DTW and target-max-abs-normalized six-sensor cycle DTW answer different questions and are not merged.
### 4.2 Feature and dimensional contracts
Raw sensor order is `(upper_ux, upper_uy, center_ux, center_uy, lower_ux, lower_uy)` and raw force order is `(front_fx, front_fy, upper_fx, upper_fy, lower_fx, lower_fy)`. Historical aliases in the feature builder are `T=upper`, `C=front/centre sensor`, `B=lower`; do not infer force and sensor insertion order from aliases.
Dimensionless conversion is `u_hat=u/U0`, `Cd,Cl=2F/(rho U0^2 D)` with `U0=0.01`, `D=20`, `rho=1` in the code contract. Symmetry features include `u_m,u_a,u_c,v_a,Cd_tot,Cd_rear,Cl_tot,Cl_diff` and rear symmetric/antisymmetric components. Optional temporal/action-history families include lag and `d(alpha)/dt_c`; Illusion target/error features exist in the runtime pool.
`re_code` uses reference length `2D`; therefore `Re_D=re_code/2` and `mu=2/re_code`. Kármán example manifest `re_code=100` records `Re_D=50`, `sample_interval=800`, `control_dt=0.4`, `action_scale=8`, `action_bias=(0,-4,+4)`, FIFO 150, `conv_len=30`. Illusion `target_diameter` is historically passed to Legacy builder as a radius; stored labels must be kept literal.
### 4.3 Reflection/symmetry contract
The native action order is `(front, upper, lower)`. The corrected action map is
\[
G(\alpha_F,\alpha_U,\alpha_L)=(-\alpha_F,-\alpha_L,-\alpha_U).
\]
The canonical mapped-shared deployment is
\[
\alpha_F(x)=\frac{h_F(x)-h_F(Gx)}{2},\qquad
\alpha_U(x)=h_R(x),\qquad
\alpha_L(x)=-h_R(Gx).
\]
This **imposes** exact reflection symmetry at deployment. It does not establish PPO equivariance. `apply_G_raw12` swaps upper/lower sensor and force slots with lift sign reversal while retaining front drag and reversing front lift; `apply_G_target_force` retains drag and reverses lift.
**Formula identity contract.** A formula is identified by immutable artifact/run ID, source SHA-256, fitted-expression hash, deployment-expression hash, feature names/metadata, output metadata, alignment/dt metadata, G metadata, fit/PySR/data provenance, and (for a pair) front/rear source hashes and pair hash. Term deletion is generated from the parent deployment expression and records parent source/deployment hashes plus term identity and scale. Display labels do not replace these identities.
## 5. Canonical Kármán law and deployment mapping
### 5.1 Canonical formula table
| Role | Canonical deployed law | Mathematical meaning in this index | Deployment |
|---|---|---|---|
| front | `alpha_F = odd(-0.381391 Cd_rear,a)` | `Cd_rear,a=(Cd_upperCd_lower)/2`; odd projection extracts the reflection-odd component, making front action sign-compatible | `alpha_F=[h_F(x)-h_F(Gx)]/2` |
| upper/rear shared | `alpha_U = 1.307782 Cl_rear,s 3.431209` | `Cl_rear,s=(Cl_upper+Cl_lower)/2`; feedback from rear-mean lift plus a persistent negative constant in upper action | `alpha_U=h_R(x)` |
| lower | not separately fit in the canonical pair | reflected copy of upper action, not an independent coefficient set | `alpha_L=-h_R(Gx)` |
`alpha=omega/U0` is dimensionless surface tangential velocity. Thus the rear constant is approximately `3.431209 U0` for upper and `+3.431209 U0` for lower, with the front stationary in the perfectly symmetric state. The current formula is “mapped-shared topology A”, not a unique/global symbolic law.
### 5.2 Term interpretation and strict boundary
- **OBS:** deterministic Kármán deletion table uses the same 40-step window and legacy DTW parent comparison. Removing the rear constant (`k_rear1`, leaving rear lift feedback) yields the largest listed degradation across re50/100/200/400 (Δ approximately 0.107/0.094/0.179/0.191). Removing rear-lift feedback (`k_rear0`, leaving constant) degrades less (approximately 0.029/0.042/0.061/0.049). Removing tested front feedback gives small mixed effects (approximately 0.0065/+0.0006/0.0052/0.0252).
- **INTERPRETATION:** within this declared deletion window and four named Kármán cases, the persistent rear counter-rotation is the dominant tested element; rear lift feedback is secondary; the tested front feedback is weak.
- **STRICT BOUNDARY:** this is term ranking under a fixed topology, fixed coefficients, fixed Legacy solver/contract, fixed case set, fixed 40-step window and declared DTW. It is not universal necessity, causal authority, sensitivity over all state space, or proof that the fitted constant is physically sufficient by itself. “Front weak” does not mean front action is identically zero in all deployments; its imposed odd generator can be active away from symmetry.
### 5.3 Steady correspondence
`article2-steady-analysis-20260720` reports a disturbance-free constant rear-rotation sweep `A=0…6`, with upper `A`, lower `+A`; best listed sweep point `A=5`, similarity `0.9872116`. Canonical law deployment gives `0.9664944`; tail rear mean is `(-3.430589, +3.431828)`, matching fitted magnitude `3.431209` to rounding. This is **OBS** and a bounded **INTERPRETATION**: steady open-loop magnitude calibrates the order of the rear constant. It does not prove momentum balance, one-to-one deficit-to-rotation conversion, causality, or a mechanism.
## 6. Case matrix and evidence ladder
| Objective | Training/discovery | Validation/extension | Comparator/window | Status |
|---|---|---|---|---|
| Kármán | re-code 50/100/200/400; 200 PPO rows each; per-case and joint discovery, multiple seeds | L2 40; L3 200; long 400; named re-code 25/70/150/300, 200 each | target reference vs controlled role; native Legacy DTW; fixed formula | active, finite and pointwise |
| Illusion | trained 0.75L/1L/1.5L; feature pools actual/target/error; discovery/refit alternatives | L2/L3 historical; long 400; named size packages; standardized long role acquisition | target similarity alone is insufficient; compare physical zero | historical/negative |
| steady | no SR fitting objective; constant rear sweep | A=0…6 and canonical law deployment, 200-step contextual runs | disturbance-free downstream similarity | contextual |
| Vortex/Lamb/Taylor | archived exploratory route | no current accepted transfer | excluded archive | unsupported |
| Other cloak transfer | no authoritative SR transfer chain in current package | no pooled evidence with V5/CCD/OID | requires separate solver/contract | gap/unsupported |
**Generalization boundary:** named unseen Kármán points are one realization per point with frozen coefficients. They support pointwise deployment observations, not continuous interpolation law, distributional robustness, uncertainty, or universal Reynolds behavior. Illusion size labels and old short target-similarity values do not establish analogous claims.
## 7. Illusion SR: negative/historical result
The Illusion runtime supports target forces, target sensors, harmonics and error features; Stage 2 search profiles included actual-only, actual-plus-error and actual-plus-target families. Yet selected retained formulas omitted target/error terms. That omission is evidence about the selected historical fit, not proof target information was unnecessary.
The decisive boundary is the standardized long-window Legacy result: after warm-up, retained SR action decayed near physical zero; native and target-normalized SR comparisons were effectively equal to the physical-zero role and the mean field was nearly zero-role. Therefore old 200/400-step target-similarity numbers cannot be called Illusion SR efficacy, target tracking, cross-size generalization, term necessity or mechanism. Illusion topology B is separately rejected by a non-finite 40-step gate at 1L/1.5L; failed crossings/incomplete roles remain diagnostics. PPO/DRL Illusion capability is a separate supported runtime statement.
## 8. Offline fit versus closed loop
Offline action RMSE is evaluated on causally aligned PPO-visited states (197 rows/case). The canonical Kármán aggregate RMSE is 1.4435, 1.0895, 2.2860 and 2.1699 for re50/100/200/400 respectively; these are dimensionless `alpha` diagnostics. They do not measure state visitation, stability, wake matching or target performance. Closed-loop Stage 3 can visit states outside the PPO trajectory and is the acceptance arbiter. This distinction is a central SR lesson and must remain explicit in any later figure/table.
## 9. Figure, data and script inventory
| Item | Path | Role/status |
|---|---|---|
| Main executable scripts | `src/SR_analysis/stage_1_infer.py`, `stage_2_fit.py`, `stage_3_validate.py` | active Stage 1→2→3 |
| Contracts/checks | `src/SR_analysis/checks/`, `utils/`, `tests/` | replay/order/formula/data/metric/provenance gates; CPU-verifiable |
| Accepted inputs | `src/SR_analysis/data/runs/article-joint-data-karman-20260718/**`; corresponding Illusion family | immutable Stage 1 parents; Illusion historical |
| Formula/result families | `src/SR_analysis/results/runs/article-*`, `article2-*` | immutable; exact family purpose in `results/catalog.json` |
| Derived publication package | `src/SR_analysis/results/runs/article2-plotting-package-20260721/**` | five figures, tables, presentation pages; derived, no refit |
| Key tables | `tables/offline_action_rmse.md`, `tables/term_deletion.md`, `ablation_summary.csv`, `scaling_summary.csv`, `term_contributions_*.csv` | diagnostics/derived views; trace to parents |
| Long telemetry exports | `src/SR_analysis/results/runs/article2-long-timeseries-csv-20260720/**` | 400-step SR/PPO/target exports and manifests |
| Standardized collector | `src/drl_pinball/legacy_test/acquire.py` | common Target/PPO/SR/Zero role acquisition; serial Legacy CFD |
| Legacy runner/interface | `src/drl_pinball/legacy_test/`, `LegacyCelerisLab/` | historical plant compatibility; not V5 |
| Archive | `src/SR_analysis/archive/**` | excluded/superseded/diagnostic; may not execute |
**Figure interpretation limits:** plotting outputs are derived. The flow-field package selects one exact same-run stable-cycle field by phase; it is a single snapshot, not ensemble/uncertainty or full-field identity. No figure alone upgrades a result to mechanism.
## 10. Artifact/path/hash/result ledger
| Evidence node | Identity/paths | Hash/provenance status | Result/claim status |
|---|---|---|---|
| Stage 1 Kármán | `data/runs/article-joint-data-karman-20260718/**` | re100 manifest binds Git `ca8ee5f…`, model SHA `148240c1…`, GPU UUID, config, norm source; other scenes have per-scene manifests | accepted input; four trained cases, 200 steps, 197 causal rows |
| Stage 1 Illusion | `data/runs/article-joint-data-illusion-20260718/**` | re1L binds model SHA `570fbdb0…`, Legacy target radius contract, Git `ca8ee5f…` | immutable historical input; not active positive claim |
| Canonical formula | `results/runs/article-refit-karman-topology-a-20260718` | exact formula artifact/source and expression hashes are required; catalog binds run ID | active bounded Kármán law |
| Mixed article manifest | `results/runs/article-joint-sr-final-20260718/evidence_manifest.json` | contains hashes and historical absolute paths; do not rewrite | authority index only; mixed Illusion wording superseded by current scope |
| Kármán L2/L3 | `article-L2-karman-20260718`, `article-L3-karman-20260718` | run IDs are immutable; manifests are provenance parents | 40-step screen; 200-step standard closed loop |
| Kármán long/gen | `article2-long-karman-20260720`, `article2-gen-karman-20260720` | named run identities; derived exports bind input telemetry | finite 400-step duration; named pointwise 200-step extensions |
| Kármán deletion | `article-ablation-*`, `article-scaling-L1-v2-20260718`, plotting `term_deletion.md` | variants retain parent formula/deployment hashes and term identities | bounded term ranking only |
| Steady | `article2-steady-analysis-20260720/**` | derived JSON/CSV; interpretation states source families | contextual magnitude calibration |
| Illusion long | `article2-long-illusion-20260720/**`, standardized `legacy_test` reproduction mapping | long manifests bind 400 rows; exact standardized storage/hash must be checked in situ | negative near-zero/zero-equivalent interpretation |
| Failure archive | rejected topology B, crossing-gate failures, incomplete campaigns, `src/SR_analysis/archive/**` | retained; no-clobber/immutable rules | diagnostic and boundary evidence |
**Hash ledger limitation:** the checked-in human index and catalog bind many IDs, but this dossier did not recompute every SHA-256 or enumerate every external reproduction-storage object. The exact hashes are therefore to be read from each manifest/catalog at audit time, not inferred from truncated entries above.
## 11. Transfer and adjacent-method boundary
- **Steady:** contextual calibration only (Section 5.3).
- **Vortex/Lamb/Taylor:** explicitly excluded archive route; no current SR transfer claim.
- **Other cloak scenes / modern V5:** no silent pooling. A transfer result would require its own solver, geometry, normalization, action, Re, case/seed, metric/window and immutable artifact chain.
- **DRL:** supplies frozen PPO roles/trajectory source and baseline interface; this dossier does not reproduce DRL training or claim DRL generalization.
- **CCD:** may supply descriptive cross-analysis only; it does not validate SR causality or mechanism.
- **SINDy/tree-search:** future work may compare libraries, sparsity/topology recurrence, derivative/state definitions and closed-loop selection under the same contracts. It must not silently refit or overwrite the canonical formula, mix alignment conventions, or treat an offline sparse law as accepted without Legacy CFD. A fair comparison needs predeclared feature/library, split, coefficient freeze, formula identity, safety gate, closed-loop metric and baseline.
## 12. Gaps and prohibited claims
### Must re-check before manuscript use
1. The round README exists at `docs/JFM_WYQ/ROUND1_BOTTOM_UP/README.md` and is the round-specific authority for requirements; preserve its evidence-index and non-manuscript constraints when this dossier is condensed.
2. Recompute and record full SHA-256 values for canonical formula files, formula pair, all parent/deletion variants, manifests, and external standardized role outputs.
3. Resolve storage mapping and enumerate August Target/PPO/SR/Zero role manifests, including exact standardized Illusion failure/near-zero artifacts.
4. Verify exact canonical formula file paths and formula-pair hash; the current catalog gives the immutable run ID and displayed law but not every leaf filename.
5. Reconcile all `article-*`/`article2-*` consumers and absolute historical paths before any relocation or figure regeneration.
6. Audit the complete Kármán 200/400 metrics by scene, comparator, window and realization; this dossier intentionally does not reconstruct unexposed tables.
7. If a physical mechanism claim is later needed, consult existing Undermind literature notes/PDFs and label literature evidence separately; do not use it to upgrade local SR observations.
### Explicitly unsupported here
No claim of universal Reynolds/size behavior, distribution-wide robustness, uncertainty, unique/global optimality, term necessity outside the declared deletion window, PPO equivariance, causal wake mechanism, momentum equality, physical DTW delay, Illusion tracking/efficacy/generalization, Vortex/other cloak transfer, or modern-V5 substitution is authorized by this dossier.
## 13. Verification status
- **Existing derivation:** equations/contracts as implemented and stated by current SR authority/code.
- **Independent check:** this dossier cross-checked order, `Re_D=re_code/2`, dimensional conversion, `G` action/raw mappings, canonical deployment algebra, DTW window semantics, deletion arithmetic and steady constant correspondence by source inspection and arithmetic reading. No CFD and no new scientific conjecture were performed.
- **New conjecture:** none.
Recommended non-CFD follow-up: run focused SR CPU contract tests and `git diff --check` after this Markdown is reviewed. Do not launch CFD solely to verify documentation.
## 14. Bottom-up handoff summary
The index supports one compact active result: a hash/provenance-bound, symmetry-mapped Legacy Kármán policy surrogate whose tested closed-loop evidence is consistent with dominant persistent rear counter-rotation, secondary rear-lift feedback and weak tested front feedback over a named 40-step deletion window. Steady provides magnitude context; named unseen cases and 400-step runs remain finite/pointwise; Illusion SR is a negative historical route because long-window behavior collapses toward physical zero and does not establish target efficacy. The principal remaining uncertainty is not formula syntax but completeness of leaf-level hash/role ledgers and exact round/storage reconciliation.
@@ -0,0 +1,436 @@
# Round 1 bottom-up evidence index — field / corrected CCD / OID
> 状态:evidence index / dossier,非 manuscript prose。编制范围:`src/CCD_analysis/**`、`src/OID_analysis/**`,并索引其直接依赖的 Legacy acquisition、`q_target/q_blk/q_ctl`、constant-mean、mask/ROI/phase/action artifacts,以及与 SR、steady theory 的受限接口。
>
> 事实权威:package authority 文档、可执行代码/测试、canonical manifest/artifact。Nowledge Mem 只作定位线索;Undermind 只检查已有 DynamisLab workspace 的方法文献/笔记,不启动 deep search,不以文献替代本地证据。
## 0. 读取结论与 fail-closed 总览
| 分析线 | 当前状态 | 本轮允许的科学层级 | 明确禁止升级 |
|---|---|---|---|
| corrected Kármán CCD | current / completed / bounded | inclusive wake ROI 均值估计量;DRL 相对 constant phase template 的 phase-coherent descriptive co-variation;稳定 rank-3 子空间;CCD/POD 子空间近等价 | causal response、paired counterfactual、mechanism、response time、explained variance、CCD 优于 POD、独立 realization uncertainty、global stability |
| OID active package | active method core / claim-free / CPU-only | 加权 snapshot POD、Schlegel LR/LE map、generated-range/right-inverse 数学、alignment/artifact contracts | active scene result、action importance、control authority、controllability、causal/mechanistic interpretation |
| July OID study | archive / conditional historical | 可报告 provenance、合同演进、传感器 gate 通过与 force gate 失败的历史事实 | 任何 importance 排名、force positive result、action result、paper conclusion、`COMPLETE` |
**总边界:** CCD 只能描述共变,不给出 causality/response/mechanism。OID 当前不承载正面科学结果。archive 只用于解释撤回路线和失败原因,不能复活结果。
## 1. Sources inspected and authority map
### 1.1 Repository authority
**CCD current reader entry**
- `src/CCD_analysis/README.md`
- `RESULTS_INDEX.md`number → artifact → figure lookup
- `MATHEMATICAL_DERIVATION.md``karman_dynamic/CORRECTED_MATH_CONTRACT.md`
- `CLAIMS.md``FINAL_RESULTS.md``WRITING_HANDOFF.md`
- `FIGURES_AND_DATA.md`
- `EXECUTION_CHECKPOINT.json``artifact_catalog.json`
- code: `karman_dynamic/cycle_template_ccd.py`, `domain_comparison.py`, `mode_diagnostics.py`, `pod_baseline.py`, `phase.py`, `contracts.py`, `artifacts.py`; acquisition code under `acquisition/`; tests under `tests/`.
**OID current method entry**
- `src/OID_analysis/README.md`
- `METHOD.md`
- `SCIENTIFIC_RESET.md`, `SCIENTIFIC_RESET_CHANGESET.json`
- `PHYSICS_CONTRACT.md`, `HANDOFF.md`
- active implementation: `v2/analysis.py`, `v2/alignment.py`, `v2/artifacts.py`
- active tests: `tests/test_schlegel_oid.py`, `test_alignment_artifacts.py`, `test_physics_contract.py`.
**OID historical/conditional source**
- `archive/studies/2026-07-two-scene-conditional/STATUS.md`
- its `presentation/docs/PIPELINE.md`, `RESULTS.md`, source scripts, audits, freeze and migration manifests
- `archive/legacy_oid_v1/` and `archive/v2_development_code/`: provenance only.
### 1.2 Machine canonical roots and publication sets
**CCD canonical root:**
`/home/frank14f/optane/DynamisLab/ccd/karman-dynamic/canonical/`
Canonical entries from `src/CCD_analysis/artifact_catalog.json`:
| role | path | schema | manifest SHA-256 | status |
|---|---|---|---|---|
| ROI mean | `.../results/roi-mean` | `ccd-karman-roi-mean/v2` | `f7f6141042678e52314a4d8f76d589108da8e844c8ce504f8f523a6f88a17e73` | current authority |
| corrected wake CCD | `.../results/cycle-template-ccd-review-fix-per-cycle-20260808T1736+0800` | `ccd-karman-cycle-template/v1` | `b114fbcc5f821034829ca3771ac5ba13df4b75df312b0615b662f81a9e5737d8` | current authority |
| preferred pinball-inclusive CCD/POD | `.../results/pinball-domain-20260809T1925+0800` | `ccd-karman-pinball-domain/v1` | `7e107a895364ed3e34abf2be513a3ce9e12736766ec6383c5b831891802d5828` | preferred derived result |
| preferred reader publication | `.../publication-pinball-domain-20260809T1925+0800` | `ccd-karman-pinball-publication/v1` | `31888f8eeb6c70dd9f0ff3449fa879f44abf381338ec261b0e45f69603691fdd` | reader view |
| predecessor | `.../results/pinball-domain-20260809T1651+0800` | `ccd-karman-pinball-domain/v1` | `8b952d5dd8cf9813a241da31295497e5c79db6df7dc4ed12b95a6706f99e37b6` | superseded; retain, do not promote |
The corrected primary publication transaction is `.../publication-review-fix-per-cycle-20260808T1736+0800`, bound to `roi-mean`, corrected cycle-template result, and per-cycle DRL/constant phase products. Its review-fix result manifest is the above `b114...`; `EXECUTION_CHECKPOINT.json` also records publication manifest SHA `a6f0c55515b0e4a3b8980174988bf6bbea3617d60f8648aab25a7ffa0a2a24cd` for the validated review-fix publication. Do not collapse the primary wake-only result and its pinball-inclusive derived sibling into one artifact.
**Repository reader view:** `src/CCD_analysis/data/karman-dynamic/canonical/publication-pinball-domain-20260809T1925+0800/`; dense source remains external. PNG/PDF are presentation assets; `plot_data.npz/json` is the redraw interface, not replacement authority.
**OID canonical/freeze identities:**
- Final historical audit: `runs/active-two-scene-v2/OID_PHASE4_AUDIT_20260723T1510Z.json`, SHA-256 `9358105c7199793a2fd810885044295350da165a0f8e9026734ca1a51fc52ed8`.
- Conditional freeze: `provenance/freeze/OID_CONDITIONAL_FREEZE_20260723T173300Z.json`; this is an inventory, not strict `COMPLETE`.
- Relocation/migration binding: `lineage/CURRENT_STATE_MIGRATION_MANIFEST.json`; `archive/RELOCATION.md` and `archive/RUNS_RELOCATION_MANIFEST.json` govern external payload recovery. The reset moved 516 historical files; no historical payload is thereby active.
## 2. Estimands, field variables, roles, and chains
### 2.1 General three-field notation
For the Legacy correction-field vocabulary:
\[
q_{in}=\text{no-pinball inlet/reference field},\quad
q_{blk}=\text{passive pinball field},\quad
q_{ctl}=\text{controlled pinball field}.
\]
\[
\Delta q_{blk}=q_{blk}-q_{in},\quad
\Delta q_{ctl}=q_{ctl}-q_{blk},\quad
\Delta q_{tot}=q_{ctl}-q_{in}=\Delta q_{blk}+\Delta q_{ctl}.
\]
This decomposition is an estimand contract, not a causal decomposition. In OID, `q_ctl-q_blk` is a same-parent paired closed-loop branch difference. Feedback alters future state and action together; it is not an isolated commanded-action intervention.
For corrected CCD the primary fields are role means and phase snapshots from `q_target`, `q_zero`, `q_constant_mean`, and `q_DRL`; the corrected dynamic field is not the old generic `dq_ctl` route. Constant and DRL cycles are not paired.
### 2.2 Field vector and mask
- Nondimensional Cartesian coordinates `x_D,y_D`; persisted velocity is already `q/U0`, so no second division by `U0`.
- For selected fluid points `K`, `M_p=|K|`; component-major vector:
\[
q=[u_x(k_1),\ldots,u_x(k_{M_p}),u_y(k_1),\ldots,u_y(k_{M_p})]^T,
\quad M=2M_p.
\]
- Weight is coordinate quadrature `w_xw_y`; duplicated for both velocity components: `W=diag(w_1,...,w_Mp,w_1,...,w_Mp)`.
- CCD wake-only: ROI `34<=x/D<=54`, `|y/D|<=5`, exact intersection of the four solver-fluid masks, `M_p=80,200`, `M=160,400`.
- CCD pinball-inclusive sibling: `29<=x/D<=54`, `|y/D|<=5`, `99,264` common fluid points, `M=198,528`.
- Plot array convention: stored `(x-index,y-index)`; plotting uses transpose; front/upper/lower body order; fixed regions geometry `2932D`, near wake `3240D`, middle `4047D`, far wake `4754D`.
### 2.3 Mean-field estimands
For role `r`, coordinate-weighted target error:
\[
E_r=\left[\frac{\sum_{k\in K}w_k\|\bar q_r(k)-q_T(k)\|_2^2}{\sum_{k\in K}w_k}\right]^{1/2}.
\]
The exact mean identity is:
\[
\bar q_D-q_T=(\bar q_0-q_T)+(\bar q_C-\bar q_0)+(\bar q_D-\bar q_C).
\]
The reported scalar error reductions are differences in `E`, not energy reductions or causal effects.
**Canonical corrected Kármán ROI numbers** (`roi-mean` artifact; four-role common mask):
| role | `E_r` |
|---|---:|
| zero | `0.4694352273` |
| constant_mean | `0.1110140739` |
| DRL | `0.0857787860` |
Derived additive increments:
- zero→constant mean: `0.3584211534`;
- constant mean→DRL: `0.0252352879`;
- zero→DRL total: `0.3836564413`;
- mean share `0.3584211534/0.3836564413 = 93.42%`;
- remaining dynamic increment share `6.58%`.
**Allowed wording strength:** within this exact Legacy Kármán case, ROI, common mask, mean estimator and window, constant mean accounts for most of the measured zero-to-DRL target-error reduction; the DRL dynamics add a smaller measured increment. This does not identify the responsible actuator, prove downstream positive-velocity generation, prove deficit compensation as a mechanism, or establish that feedback is unnecessary. “Positive downstream velocity” can be used only as a bounded description of a plotted/field difference if the exact field artifact, sign convention, ROI and comparator are stated. “Deficit compensation” is at most a candidate physical interpretation consistent with the mean-field pattern and SR/steady context—not a CCD/OID-proven mechanism. Do not write “the controller restores momentum” or “causes compensation”.
### 2.4 Phase/dynamic estimand
There are 19 retained DRL cycles and 10 bins (`N=190`), with sample index `j=10c+b`. Constant template:
\[
\hat q^C_b=\frac1{19}\sum_cq^C_{c,b}.
\]
Each role is centered over its own retained ensemble:
\[
U_{c,b}=(q^D_{c,b}-\bar q_D)-(\hat q^C_b-\bar q_C).
\]
`U` is a phase-conditioned reference residual. It is not paired DRL/constant counterfactual evidence; no interpolation, lag, wrap, temporal PSD, or cross-role cycle pairing is used.
Action observable: same-boundary effective action in native order `(front, upper, lower)`; exact retained DRL physical action mean removed, followed by empirical centering. Requested normalized action, requested physical action, EMA-effective action and field-time effective action must not be silently interchanged.
## 3. Corrected CCD operator, modes, symmetry, phase
### 3.1 Operator and dimensions
With field snapshots as columns `U∈R^(M×N)` and action observables `P∈R^(3Q×N)`, `Q=1`:
\[
A=\frac{P_c(W^{1/2}U_c)^T}{N\sqrt{3Q}},\quad A=L\Sigma V^T.
\]
No whitening, standardization, lag, wrap, field-energy normalization, or POD preprojection. Physical modes `Φ=W^{-1/2}V`, so `Φ^TWΦ=I`; coefficient `c_ij=φ_i^TWU_j`. Singular values are cross-correlation strengths, not field energy, explained variance or reconstruction fractions.
### 3.2 Current numbers
Primary wake-only result (`N=190,Q=1,M=160400`):
- singular strengths: `0.0174141920`, `0.0069694895`, `0.0010500356`;
- numerical rank: 3;
- least-favourable retained-boundary bin/origin check: rank-3 projector cosine `0.9947903592`;
- largest relative singular-value shift `0.0766020533`;
- leave-one-cycle-out leading projector cosine `0.9997247674`;
- alternatives: 8 bins spectrum `[0.0172112894,0.0067331096,0.0009696007]`, cosine `0.9947903592`; 12 bins `[0.0170742270,0.0071347287,0.0011180038]`, cosine `0.9977713810`; half-shift 10 bins `[0.0175962424,0.0068663334,0.0010454157]`, cosine `0.9982476661`.
Only the rank-3 subspace is stability-supported; individual vectors can flip sign and rotate within near-degenerate subspaces. A global sign flip `(φ_i,c_i)→(-φ_i,-c_i)` is identical.
### 3.3 Pinball-inclusive CCD/POD comparison
Preferred derived result keeps the same `19×10` samples, action coordinates, centering and `Q=1`, but extends domain to include bodies (`2954D`). Full-fit weighted POD uses `G=U_c^TWU_c` and is not CCD-guided. Rank-3 principal cosines between CCD and raw POD field subspaces:
`[0.9999616609, 0.9998971005, 0.9976439804]`; declared minimum bin/cycle stability cosine `0.9974651867`.
Interpretation: CCD and raw POD span essentially the same field subspace in this tested object/domain. CCDs bounded added information is action-coordinate association (`front`, `rear-symmetric`, `rear-antisymmetric`), not a distinct field decomposition and not evidence that CCD is superior to POD. Procrustes-aligned POD is visual registration only.
### 3.4 Three action-associated modes
- Left observable coordinates are native `front`, `upper`, `lower`; publication re-expresses them as `front`, `rear-symmetric`, `rear-antisymmetric`.
- Mode 1 and 2 are predominantly antisymmetric (`0.972`, `0.930` diagnostic parity measures); mode 3 predominantly symmetric (`0.833`).
- Phase reconstructions use bins nearest `0,π/2,π,3π/2`; harmonic amplitudes/phases are circular diagnostics over each cycle/bin array, not temporal PSD frequencies. Phase maps are registered coordinate partitions, not discovered wake boundaries.
- Figures/data: `01_domain_estimand`, `02_ccd_mode_identity`, `03_phase_reconstruction`, `04_raw_pod_vs_ccd`; source fields include `ccd_mode_velocity`, `ccd_mode_rotation_proxy`, `left_action_physical_coordinates`, representative phase arrays, `plot_data.npz/json`.
- Body-local rotation proxy is a Gaussian localized signed angular-momentum-like visualization; it is not wall vorticity. Complete-stencil solver-fluid vorticity is auxiliary.
**Candidate interpretation (not established):** symmetry-separated rear action coordinates may organize the antisymmetric/symmetric field components, while phase-resolved reconstructions may be compatible with a periodic correction pattern. This is a descriptive organizational hypothesis only; no lag/phase offset is a response time or causal path.
## 4. Acquisition and provenance contracts
### 4.1 Legacy acquisition boundary
Corrected CCD source chain is LegacyCelerisLab. The package contract records case `karman_re100`, `Re_code=100` based on `2D`, physical `Re_D=50`, `U0=.01`, `nu=.004`, body order and geometry, source/config/model bindings, decoder identity, masks, coordinates, timeline, DDF/FIFO state, action order/units, and hashes. Legacy and modern CelerisLab V5 are separate chains; no V5 replay may replace the Legacy CCD evidence.
`q_target`, `q_blk`, `q_ctl` are role contracts. `q_target` is a desired/reference trajectory with case-specific target bodies, not same-checkpoint counterfactual. `q_blk` is passive zero-action pinball; `q_ctl` is frozen-policy controlled branch. Illusion `q_ctl` requires strict +11D history/replay compatibility before production; the CPU compatibility certificate is runtime compatibility only, not accuracy/stability/phase/mechanism validation.
Acquisition must fail closed on missing/moved roots, duplicate/non-increasing times, nonfinite arrays, mismatched schema/hash/coordinates/masks, incomplete exact joins, stale telemetry or wrong action lineage. No silent trim, nearest-time join, interpolation, timestamp tolerance or block wrap.
The active acquisition contract passed static CPU checks, but published/smoke status must be read from current evidence; rejected production paths remain rejected. No CFD/CUDA was run for this index.
### 4.2 q roles and direct-dq distinction
OID canonical products use same-parent branches per realization:
1. `controlled` = PPO `q_ctl`;
2. `zero_baseline` = zero-action `q_blk` used for subtraction;
3. `baseline_twin` = independent numerical twin used only for reproducibility gate.
Exact pairing requires equal `sample_ids`, lattice steps and times; field clock is distinct from control clock. Historical canonical crop is `x=360:1000`, all y, stride 8; reduced shape `80×64`; C-order `ux` then `uy`; exact Legacy solid rasterization; uniform cell quadrature, zero solid weights; Kármán fluid/solid counts `5025/95`, Illusion `5024/96`. These are historical OID product contracts, not current active scientific claims.
### 4.3 Phase/action artifacts
For CCD, phase artifacts are the immutable `phase/{drl,constant_mean,target,zero-failure}` families and review-fix siblings listed in `EXECUTION_CHECKPOINT.json`. The primary zero phase product is `FAILED_CLOSED`; it must not be used as a positive role. Corrected CCD uses retained independent phase alternatives rather than Fourier-resampling the primary field.
For OID, exact/delayed pairing is implemented as `b(t+τ)=C(τ)a(t)` only where the future sample exists in the same declared segment; no padding, nearest match, wraparound or cross-segment pairing. Circular shifts occur only inside the explicitly labelled null. Delay is a declared analysis parameter, not physical causality.
## 5. OID method core: definitions, valid mathematics, reset
### 5.1 Active mathematical objects
For centered state coefficients `a` and observable POD coordinates `b`, forward map is fitted regression:
\[
C=Σ_{ba}Σ_{aa}^{+},\qquad \hat b=Ca.
\]
This is not raw cross-covariance. LR inverse:
\[
L_R=Σ_{aa}C^T(CΣ_{aa}C^T)^+,
\]
is the minimum empirical state-reconstruction MSE among exact linear inverses on the generated range. LE inverse:
\[
L_E=G^{-1}C^T(CG^{-1}C^T)^+,
\]
minimizes declared positive-definite state-field `G`-norm among exact generated-range inverses. `G` is a project metric, not actuator energy, control cost, controllability Gramian, or NavierStokes energy principle.
Valid standard mathematics: weighted POD orthogonality; method of snapshots; least-squares normal equations; right-inverse identities on `range(C)`; sign-invariant MAC/principal angles/projector similarity; exact/delayed pairing; atomic artifact validation. Existing derivation / method theorem is distinct from independent verification in tests; no new physical derivation was performed here.
Literature method map, existing Undermind notes and active `METHOD.md`: Schlegel et al. JFM 697 (2012), DOI `10.1017/jfm.2012.70` for LR/LE construction; Sirovich (1987) for snapshot POD; Adrian (1994) for stochastic estimation; Borée (2003) for EPOD/LSE relation; Everson & Sirovich (1995) for gappy POD boundary; Theiler et al. (1992) for surrogate-data context. These references do not license local importance, mechanism or causality claims.
### 5.2 Why OID was reset
The July two-scene line was reset because:
- sensor observables are local velocity functionals inside the state domain, so high sensor R² is partly self-observation;
- force is an integrated surface projection with different dimension, symmetry, noise and conditioning; force jobs failed their all-fold gate;
- action is generated inside feedback, so delayed association does not isolate commanded action from state-dependent policy response;
- `q_ctl-q_blk` is a closed-loop branch difference, not autonomous perturbation/tangent state or causal intervention;
- legacy products called PLS/cross-covariance SVD directions OID without fitted Schlegel propagator and distinct LR/LE inverses;
- earlier contiguous holdout was not independent-realization validation;
- old observables used absolute controlled telemetry rather than exact paired controlled-minus-blocked deltas;
- field telemetry was once read at control boundaries, yielding invalid zero intermediate values; corrected lineage requires field-time observation;
- index/replay resemblance did not establish exact same-parent alignment; canonical products now require exact IDs/steps/times and a separate numerical twin;
- archived reduced mask was defective and required exact Legacy rasterization rebuild;
- mixed numerical defaults, fixed-selection controls, and “phase surrogate” wording understated conditioning/selection effects;
- historical `COMPLETE` cannot be reconstructed from relocated artifacts, so final audit remains conditional.
**Disposition:** all old runners, plots, analyses, freeze builders, contradiction evidence and payloads remain archive/provenance. They are not active instructions and must not be imported or executed as current route.
### 5.3 What remains reusable
Reusable definitions/contracts: weighted snapshot POD; diagonal spatial quadrature and exact solid-zero masks; field/observable metric declarations; LR/LE generalized inverse equations; generated-range restriction; sign-invariant mode/subspace comparisons; same-parent exact pairing; delayed sample semantics; circular-shift null with explicit exclusions; atomic no-clobber artifact/hash validation; physics coordinate/body/action oracle. Reusable numbers are only historical audit facts with conditional status, never positive mechanism results.
## 6. Historical OID ledger (reportable only as negative/conditional)
Final audited conditional package: `runs/active-two-scene-v2/OID_PHASE4_AUDIT_20260723T1510Z.json`.
| scene / observable | fold values (observed R²; p; gate) | status and allowed use |
|---|---|---|
| `karman_re100/delta_sensors` | r1 `.964749; .001; pass`; r2 `.967141; .001; pass`; r3 `.973321; .001; pass` | conditional historical association only for three declared realizations; self-observation caveat |
| `karman_re100/delta_forces` | r1 `.836206; .001; fail`; r2 `.867670; .001; pass`; r3 `.872087; .001; pass` | not promoted because all-fold gate fails; descriptive/negative-control record only |
| `illusion_1.0L/delta_sensors` | r1 `.936949; .001; pass`; r2 `.928960; .001; pass`; r3 `.939764; .001; pass` | conditional historical association only; not importance or mechanism |
| `illusion_1.0L/delta_forces` | r1 `.701865; .001; pass`; r2 `.694162; .001; pass`; r3 `.480277; .001; fail` | not promoted; descriptive/negative-control record only |
Other audit facts: 363 Kármán field samples at 317-step spacing (control interval 800); 642 Illusion samples at 257-step spacing (control interval 600); candidates ranks `(4,8,12)`, lags `(0,1,2)`; 999 periodic-excluded circular shifts/fold; fixed `rcond=1e-12`; `H=I`; no regularization; 3 LORO folds. Only three declared realizations exist per scene; this is not broad stochastic independence. No field-mode figure is promoted.
Do **not** put the historical positive sensor values into a paper as “sensor importance”, and do not report the force rows as positive force-OID evidence. The active package has no active LR/LE action result.
## 7. Figure / data / script inventory
### 7.1 Current CCD figures and data
Preferred reader-facing four groups under `src/CCD_analysis/data/karman-dynamic/canonical/publication-pinball-domain-20260809T1925+0800/`:
1. `01_domain_estimand`: domain, bodies, partitions, masks, residual definition;
2. `02_ccd_mode_identity`: `u_x/u_y`, action coordinates, descriptive body-local rotation proxy;
3. `03_phase_reconstruction`: raw, CCD rank-2/rank-3, POD rank-3 phase-bin means;
4. `04_raw_pod_vs_ccd`: CCD/POD modes, reconstruction curves, principal cosines.
Machine redraw fields: `x_D(1280)`, `y_D(512)`, `domain_mask(1280,512)`, `point_weights(99264)`, `ccd_mode_velocity(3,2,1280,512)`, `ccd_mode_rotation_proxy(3,1280,512)`, `ccd_modes(198528,3)`, `ccd_left_functions(3,3)`, `left_action_physical_coordinates(3,3)`, representative phase bins. Do not digitize PNG; preserve source manifest hash, mask, orientation, limits and plotting parameters.
### 7.2 OID current scripts/tests
Active `v2` code is method-only: `analysis.py` (POD, forward regression, LR/LE), `alignment.py` (exact/delayed pairing), `artifacts.py` (atomic/hash validation). Tests are synthetic/source-oracle tests for metrics, rank deficiency, zero weights, exact pairing, artifact integrity, and body/action physics. There is no active scene runner, CUDA path, plotting path, audit publisher or redo command.
Historical source scripts include `run_phase3_5_formal.py`, `rebuild_phase3_canonical.py`, `plot_phase4_summary.py`, audit/freeze builders and archived presentation scripts. Inventory is provenance/navigation only; do not execute as active analysis.
### 7.3 Archive figure/data disposition
Historical OID summary PNG/PDF and NPZ/JSON models are useful to reconstruct what was tried and why it was downgraded. They are not current figures. The relocation manifest and SHA-256 inventory must be checked before any staging restore; restore only into an empty staging destination; never restore over compact active tree; never use archived defective mask as final product.
## 8. Conflict and gap list
1. **Corrected CCD source/action sign conflict:** `PHYSICS_CONTRACT.md` records an archived OID tuple `[0,-5.1,+5.1]` versus stated CCD `[0,+5.1,-5.1]`; current source/doc history also contains disagreement. Treat as unresolved source/documentation conflict, not corroboration. Do not infer sign from labels.
2. **Old correction-field CCD versus current corrected CCD:** Undermind/repository July notes contain old `dq_ctl/dq_tar`, delayed/reduced CCD and positive mechanism language. Current August package explicitly supersedes that route; no old overlap/R² is current CCD evidence.
3. **Phase-domain CCD history:** old temporal/phase publication is exploratory/descriptive and downgraded; current corrected cycle-template artifact is authority. Fourier-resampled sensitivities are forbidden for current stability.
4. **OID status contradiction:** archived `RESULTS.md` contains conditional promoted sensor scores, while active README/reset says no active scientific result. Resolve by status precedence: archive facts may be indexed as conditional historical; no active claim.
5. **OID `COMPLETE` gap:** relocated payload and conditional freeze bind artifacts but do not reconstruct strict-loader `COMPLETE`; no promotion.
6. **Zero phase gap:** CCD execution checkpoint marks canonical zero phase product `FAILED_CLOSED`; do not treat it as a successful current role.
7. **Independent-realization gap:** CCD has 19 cycles within one retained DRL lineage and constant ensemble template; OID has three declared realizations but not broad stochastic population. Neither supports general uncertainty.
8. **Causal intervention gap:** no matched randomized actuator intervention, open-loop perturbation, or branch design isolates action effect from state-policy feedback.
9. **Wall/mechanism resolution gap:** body-local proxy is not wall vorticity; available field resolution/diagnostics do not close boundary vorticity, pressure, viscous momentum or energy mechanism.
10. **Cross-chain gap:** Legacy CCD/OID/SR and modern V5/steady contracts differ; no silent merge or metric transfer.
## 9. Cross-map: SR constant component, steady theory, and non-crossable links
### 9.1 Comparable at bounded level
- Both corrected CCD mean analysis and Legacy SR/steady context point to a persistent rear counter-rotation / near-constant component as a candidate backbone. CCD can say the constant-mean arm dominates the tested ROI error reduction; SR can say the fitted rear constant is the dominant tested term in its deletion window; steady can say an accepted constant-rotation endpoint has low `E_inf_vector` under its own uniform-inlet/free-slip `Re_D=50` contract.
- These are compatible observations about a recurring constant component, not a matched intervention or equality of physical amplitude.
- A future same-plant, same-role, same-mask comparison could test whether the mean CCD increment spatially resembles SR/steady correction fields. Current package does not establish that mapping.
### 9.2 Explicitly non-comparable / cannot cross-chain
- CCD ROI mean error `E` versus steady cross-section `E_inf_vector` at `x/D=10`: different domain, norm, target/inlet reference and solver/plant contract.
- Legacy SR DTW versus CCD mean-field error or CCD singular strength: different observables, windows and estimands; DTW lag is not physical delay.
- Legacy SR action formula versus CCD left action function: former is an `obs→act` symbolic deployment interface; latter is action-coordinate association with a residual field; neither proves the others terms or necessity.
- Steady `q_ctl` versus `q_in` endpoint versus OID `q_ctl-q_blk`: steady explicitly treats `q_blk` as non-ranking; OID requires paired same-parent subtraction. Do not subtract `q_blk` again in steady.
- Steady accepted branch `[0,+Omega,-Omega]` and historical opposite-sign OID/CCD tuples are not interchangeable. Current sign oracle and body order win over prose labels.
- Modern V5 compact policies/results cannot replace Legacy acquisition underlying current CCD/SR evidence.
## 10. Candidate physical logic (hypothesis ledger, not conclusion)
H1. A persistent rear-rotation component may alter the pinball-scale mean wake in a way consistent with reduced target error / downstream deficit compensation. Current evidence supports only “consistent with” under exact comparator; matched intervention and budget closure are missing.
H2. A smaller dynamic correction may be phase-coherent and action-associated while living in a field subspace that is also energy-dominant POD. The CCD result supports the descriptive algebra; whether it corresponds to a physical feedback response remains open.
H3. Symmetry decomposition may separate rear-symmetric and rear-antisymmetric action coordinates from predominantly symmetric/antisymmetric field structures. Current parity numbers are diagnostics and basis-dependent; subspace tests are safer.
H4. A possible organizational chain is observation → action → near-body correction → body-connected wake → downstream signature. SR constrains only observation→action; CCD/OID would need interventional, time-aligned and independent evidence to test later arrows. This chain is a future test design, not a finding.
H5. Steady low-deficit endpoint and Legacy constant component may share a base-bleed/gap-jet family at the level of qualitative physical framing. Potential circulation cancellation failed; no NS mechanism closure or cross-solver parity exists.
## 11. Candidate figures / data / script needs for later rounds
**Reusable current CCD panels:** four preferred groups in §7.1, with source hashes and plot-data contract. The panels are reader-facing derivatives, not new CFD evidence.
**Not reusable as positive panels:** old correction-field panorama, old force/signature OID panels, historical Illusion positive figures, any archived mode plot labelled importance/causality, and any figure without exact source manifest/mask/timeline identity.
**Future evidence needed before stronger claims:**
- matched constant/action interventions with same parent and randomized/controlled action;
- independent DRL parents or genuinely independent cycle blocks with declared uncertainty;
- phase and clock parity across roles, exact field-time action history;
- mask/ROI sensitivity and grid/solver parity;
- wall-resolved vorticity/pressure/shear or closed control-volume momentum/energy budgets;
- OID sensor-excluded/upstream-only states, explicit measurement-operator baseline, force symmetry coordinates, independent parents and action interventions;
- if OID becomes active again, a new study ID/run IDs and complete source/config/model/checkpoint/FIFO/DDF/clock/action/geometry/metric/hash manifest.
## 12. Number / formula / artifact ledgers
### 12.1 Number ledger
| ID | number | definition / scope | authority | status |
|---|---:|---|---|---|
| N01 | 0.4694352273 | zero ROI mean target error | CCD `roi-mean` | current |
| N02 | 0.1110140739 | constant_mean ROI mean target error | CCD `roi-mean` | current |
| N03 | 0.0857787860 | DRL ROI mean target error | CCD `roi-mean` | current |
| N04 | 93.42% | share of zero→DRL error reduction from zero→constant | derived exact scalar ledger | bounded current |
| N05 | 6.58% | constant→DRL dynamic increment share | derived exact scalar ledger | bounded current |
| N06 | 190 | CCD samples = 19 cycles × 10 bins | CCD manifest | current |
| N07 | 160400 | wake-only CCD field dimension | CCD manifest | current |
| N08 | 0.0174141920, 0.0069694895, 0.0010500356 | primary CCD strengths | CCD manifest | current descriptive |
| N09 | 0.9947903592 | least-favourable rank-3 projector cosine | CCD stability artifact | bounded current |
| N10 | 0.9999616609, 0.9998971005, 0.9976439804 | pinball CCD/POD rank-3 principal cosines | preferred derived result | bounded current |
| N11 | 0.9974651867 | pinball-inclusive minimum declared stability cosine | preferred derived result | bounded current |
| N12 | 0.964749, 0.967141, 0.973321 | historical Kármán sensor R² folds | OID final audit | conditional historical only |
| N13 | 0.836206, 0.867670, 0.872087 | historical Kármán force R² folds | OID final audit | force not promoted |
| N14 | 0.936949, 0.928960, 0.939764 | historical Illusion sensor R² folds | OID final audit | conditional historical only |
| N15 | 0.701865, 0.694162, 0.480277 | historical Illusion force R² folds | OID final audit | force not promoted |
| N16 | 0.0231672176752314 | steady `E_inf_vector` at `x/D=10`, `s=3.55` | steady current result | contextual, separate chain |
### 12.2 Formula ledger
| formula | role | classification |
|---|---|---|
| `E_r` weighted ROI mean target error | CCD performance estimand | existing derivation / canonical result |
| `U_(c,b)=(q_DRL-c mean)-(constant template_b-c mean)` | corrected phase residual | existing derivation / canonical result |
| `A=P_c(W^1/2 U_c)^T/(N√3)` | literal weighted CCD operator | existing derivation / code-verified |
| `Φ=W^-1/2V`, `Φ^TWΦ=I` | physical weighted modes | existing derivation / code-verified |
| `G=U_c^TWU_c`, principal cosines of `Φ^TWΨ` | raw weighted POD comparison | existing derivation / code-verified |
| `C=Σ_baΣ_aa+`, `L_R`, `L_E` | OID method core | existing method / tests independently verify finite-dimensional identities |
| `Δq_ctl=q_ctl-q_blk` | OID paired branch difference | established contract, not causal effect |
| `Re_D=Re_code/2` for Legacy `2D` reference | scale convention | code/document contract |
| `(Uw,Vw)=(-ωr_y,ωr_x)` | wall/action oracle | source-derived physics contract |
No independent numerical linear-algebra run was needed for this index. If later run in `pinball_math`, label it **independent check**, not new evidence; any new physical interpretation is **new conjecture**.
## 13. Search and use record
- **Nowledge Mem:** context bundle/Working Memory was read at start; targeted memory search covered corrected Kármán CCD, mean-field boundary, OID reset/history, q roles and evidence authority. Memory was used only for routing and cross-check; repository artifacts overrode it. No durable memory was added because this file is the requested repository index and no new project decision was made.
- **Undermind:** called orientation, inspected existing `DynamisLab` workspace `4383d145-2c80-4991-8a9c-7ac2dd683438`, browsed existing CCD/OID files and method-reference folders. No deep search started. Existing workspace notes for Schlegel/LR-LE, CCD/PCD and observable decomposition were treated as literature pointers only. The active method bibliography is recorded in `src/OID_analysis/METHOD.md`; no external paper was used to upgrade internal evidence.
- **No CFD/GPU:** this indexing task ran no CFD, no CUDA, and did not modify evidence artifacts.
## 14. Final fail-closed checklist
- [x] `src/CCD_analysis/**` current authority and archive boundary indexed.
- [x] `src/OID_analysis/**` active method core and conditional historical study indexed.
- [x] field variables, estimands, masks, ROI, weights and dimensions recorded.
- [x] corrected mean numbers, mean/dynamic decomposition and bounded wording recorded.
- [x] CCD operator, POD comparison, rank/strength/stability, symmetry, phase and figure inventory recorded.
- [x] explicit noncausal/nonmechanistic CCD boundary recorded.
- [x] OID reset reasons, reusable definitions and prohibited results recorded.
- [x] q target/block/control and acquisition/provenance contracts recorded.
- [x] canonical roots, publication sets and hashes recorded.
- [x] SR constant component and steady theory comparable/non-comparable map recorded.
- [x] conflict/gap list and candidate physical logic recorded.
- [x] no article-style narrative, no CFD, no evidence modification, no commit.
**Handoff boundary:** downstream synthesis may use this file as an index. It must preserve status labels (`current`, `bounded`, `contextual`, `historical`, `conditional`, `failed_closed`, `prohibited`) and must not turn candidate physical logic into manuscript fact.
@@ -0,0 +1,250 @@
# Round 1 bottom-up index — steady theory and cross-map
**Role / status.** This is an evidence-navigation dossier, not JFM prose. Repository contracts, current manifests, code/tests, and immutable artifacts decide project facts; Nowledge Mem and Undermind are navigation/context only. Scope is the active `src/steady_pinball_theory/**` package, remaining `src` cross-navigation, and explicit failed/open gates. No CFD or new evidence was run for this index.
## 1. Scope and question
Primary question: under the canonical uniform-inlet, free-slip-channel, finite-Re steady contract, what is actually established about a rear-only constant-rotation low-deficit endpoint, and what analytical or conservation route could connect wall actuation to the observed profile without overclaiming a mechanism?
Required separation:
- **Outer theory:** incompressible irrotational Euler/Neumann fields with prescribed geometric circulations, unbounded or free-slip strip.
- **Finite-Re observation:** current-v5 endpoint fields and bounded diagnostics at `Re_D=50`.
- **Mechanism/stability:** not closed. Potential flow cannot supply viscous no-slip vorticity, separation, drag, torque, base pressure, or global stability.
- **Cross-project context:** SR/CCD/OID/Legacy/V5 are linked only where their plant, estimator and evidence role match; labels and memory never merge chains.
## 2. Sources inspected and authority map
### 2.1 Package authority (current)
- `src/steady_pinball_theory/README.md`: entrypoint, frozen boundaries, display/reproduction commands, no-CFD verification.
- `DERIVATION.md`: equation/claim registry, geometry/sign contract, Euler/Hodge proof, one-cylinder counterexample, MFS/strip/Laurent/multipole validation boundary, NS-first stage notes.
- `RESULTS.md`: current numeric observations, accepted/reverse endpoint roles, failed circulation explanation, partial NS ledger, transient limits, SR/CCD scope.
- `LITERATURE.md`: source-to-claim ledger and prohibited transfers; primary references include Crowdy 2006, Glass et al. 2019, Ueda et al. 2003, Glauert/Moore 1957, Cornejo Maceda et al. 2021, Chan et al. 2011, Rodrigues-Asensio et al. 2026, MaoBlackburnSherwin 2015 and others.
- `HISTORY_AND_LESSONS.md`: navigation/history only; records wrong-sign, double-subtraction, incomplete-CV, torque-ownership and immutable-artifact failures.
- `contract.py`: canonical geometry, `Re_D`, wall law, `s` mapping, body/action oracle.
- `metrics.py`: direct profile metric, gap/flux, vorticity/near-wall proxies, partial momentum/energy ledgers, no closure unless all terms supplied.
- `theory.py`: MFS, strip images, prescribed-vortex fields, Laurent cross-check, multipole projection, gap ansatz, root/Jacobian and Kármán-quarantined helpers.
- `tests/test_core.py`: implementation contracts and mathematical/numerical checks; passing tests are not physical validation.
- `evidence/INDEX.json`, `evidence/README.md`, authoritative roots referenced by package README/results, and figure manifest/CSV outputs: machine/artifact authority. External Optane paths are part of provenance and must be hash-resolved before reuse.
### 2.2 Repository cross-navigation
- `src/analysis_knowledge.md`: cross-project contracts, `Re_code` versus `Re_D`, `q_in/q_blk/q_ctl`, evidence taxonomy, and steady bounded/open status.
- `src/analysis_notes.md`: current gates. Steady Gate B requires same-CV NS closure, intervention/independent-realization evidence for causality/stability, and a fresh no-slip-transfer problem.
- `src/understanding_notes.md`: Legacy/V5 compatibility ledger; useful for Re/action/telemetry separation, not a steady result source.
- `src/README.md`: package roles and authority order; `pv_plot` is a rendering utility only.
- `src/SR_analysis/{CLAIMS.md,results/README.md,PIPELINE.md}`: current Kármán/cloaking SR; steady is contextual calibration only.
- `src/CCD_analysis/{README.md,FINAL_RESULTS.md,CLAIMS.md}`: corrected Kármán descriptive mean/dynamic decomposition; no steady quantitative import.
- `src/OID_analysis/{README.md,METHOD.md,PHYSICS_CONTRACT.md}`: active claim-free CPU method core; July study is archive/conditional.
- `src/pv_plot/README.md`: interface confirmation only (`axis_order`, presets, ParaView environment); no physical evidence.
- `src/archive/**`: historical/superseded by default. No archive item is current evidence unless an active manifest explicitly references it, and even then the manifest/role—not archive location—controls status.
### 2.3 Memory / literature navigation
Nowledge Mem context bundle and targeted memory search were used. Relevant durable context was consistent with repository authority: accepted branch is `[0,+Omega,-Omega]`, centers/order are explicit, `E_inf_vector` is full-cross-section direct `q_in` comparison, MFS validation precedes interpretation, and SR/CCD boundaries remain separate. Memory did not supply project facts or upgrade claims.
Undermind was oriented and the existing `DynamisLab` workspace (`4383d145-2c80-4991-8a9c-7ac2dd683438`) was identified. No new deep search was started. Existing workspace literature is reflected through the repositorys source ledger; no external number or equation was imported here. Full-PDF/equation mapping remains explicitly held where `LITERATURE.md` says PDF unavailable (notably Glauert/Moore and UrzhumovSmith for this pass).
## 3. Canonical contract / assumption and BC ledger
| Item | Frozen definition | Status / boundary | Source |
|---|---|---|---|
| Geometry | `D=20`, `R=10`; centers `(1000,299.5)`, `(1026,314.5)`, `(1026,284.5)` in lattice coordinates; normalized centers `(0,0)`, `(1.3,±0.75)` relative to `D` | established contract | `contract.py`, README/manifest |
| Body order | `(front, rear_y_plus, rear_y_minus)` | established; semantic IDs beat labels | `contract.py`, sign oracle |
| Coordinates | x right, y up | established | `contract.py`, `theory.py` |
| Wall law | `(U_w,V_w)=(-omega*r_y, omega*r_x)` | positive `omega` is geometric CCW | `contract.py`; runtime/source oracle |
| Accepted action | `[0,+Omega,-Omega]`, `Omega>0` | accepted/current; gap-facing rear cardinals move downstream, base-bleed/gap-jet wall-sense family | contract oracle, current evidence |
| Reverse action | `[0,-Omega,+Omega]` | reverse/high-deficit role; wrong-sign campaigns and withdrawn production labels must not be re-promoted | `RESULTS.md`, evidence disposition |
| Spin ratio | `s=Omega R/U_inf`; `omega=s U_inf/R` | established definition; do not silently use `Omega D/U_inf` | `contract.py`, `DERIVATION.md` |
| Reynolds number | canonical `Re_D=U_inf D/nu=50`; `nu=U_inf D/Re_D`; Legacy `Re_code` convention is separate and often `Re_D=Re_code/2` | established; never call Legacy `re100` simply `Re_D=100` | `contract.py`, `analysis_knowledge.md`, `understanding_notes.md` |
| Inlet/reference | uniform `q_in`; direct comparison to `q_ctl` | primary steady comparator; `q_blk` non-ranking | README, `RESULTS.md`, `metrics.py` |
| Outer channel | free-slip walls at declared `H`/half-height; finite strip and unbounded plane are separate mathematical settings | established model assumption; not no-slip transfer | `DERIVATION.md`, `theory.py` |
| Cylinder walls | current finite-Re solver uses rotating no-slip; potential solver enforces impermeability only | critical interface boundary | README, `DERIVATION.md`, LITERATURE |
| Station/metric | full two-component `E_inf_vector=max_y ||(q_ctl-q_in)/U_inf||_2` at `x/D=10`; `E_inf_x/y`, explicit L2 and other stations diagnostics | established metric contract | `metrics.py`, RESULTS |
| Steady qualification | settling/endpoint qualification is finite-horizon and case-specific | does not establish uniqueness, attraction, stability, or causal intervention | RESULTS/evidence |
| Telemetry | normalized Celeris loads are lattice sums averaged once per accumulated LBM step; runtime manufactured oracle supports torque work sign and `P_act→fluid=sum(omega*tau_read)` | force ownership and full closure remain open | LITERATURE, `metrics.py`, NS ledger |
### Rotation-sign checkpoint
For upper rear (`r_y=+R`), positive omega gives outer-top `U_w=-omega R` (upstream) and gap-bottom `U_w=+omega R` (downstream). For lower rear with negative omega, outer-bottom is upstream and gap-top downstream. Therefore accepted `[0,+,-]` injects/organizes the rear gap jet; it is not boat-tail under the project/literature sign map. Every future campaign should print IDs, centers, action, four cardinal velocities, and direct reversal label before solving.
## 4. Steady CFD sweep and accepted/reverse branches
### 4.1 Authorized numerical observations
Current v5 direct recomputation at `s={3.45,3.55,3.65}` gives approximately:
- `E_inf_vector={0.0232525,0.0231671,0.0312490}` at `x/D=10` (current article-authoritative exact value for `s=3.55`: `0.0231672176752314`).
- `s=3.55` is settling-qualified / low-deficit endpoint in the canonical free-slip `Re_D=50` setting.
- Earlier/current displays include stationary, accepted `s=3.55`, and reverse `s=5.2`; these are reader views of authenticated artifacts, not new evidence.
- Accepted `s=3.55` and reverse `s=5.2` are **not amplitude matched**. Reverse is a distinct stable/high-deficit state candidate, not a same-amplitude causal control pair.
- A provisional direct-profile minimum around `s≈3.453.55` is not a qualified continuous optimum; restarted bracket, continuation, grid/domain/method convergence, and held-out validation gates remain required.
Do not infer from the sweep: unique/global optimum, global attraction, asymptotic/nonlinear stability, cross-BC transfer, causal mechanism, or a universal `s` law.
### 4.2 Withdrawn / reverse state disposition
- `[0,-Omega,+Omega]` campaigns were wrong-sign/withdrawn for the accepted cloak branch; retain their disposition for audit, never use their attractive plots or labels as current evidence.
- A reverse endpoint can be numerically steady while retaining a poor wake. “Steady” and “low deficit” are independent axes; Chans pair result is only qualitative context for this distinction.
- The current reverse role is high-deficit/stability candidate at `s=5.2`; because amplitude is mismatched against accepted `s=3.55`, no accepted-versus-reverse mechanism or causal ranking follows.
### 4.3 Artifact and figure map
| Need | Current artifact/reader asset | What it supports | Does not support |
|---|---|---|---|
| machine authority | `src/steady_pinball_theory/evidence/INDEX.json` and linked authoritative roots | path/hash/role disposition | prose authority detached from hashes |
| direct endpoint | `steady-contract-v5-torque-d20-20260808/{qin,accepted-s3.55,reverse-s5.2,stationary}/` | fields/manifests/contract-bound metrics | closure/stability |
| article result | `steady-article-publication-v3b-20260809/REPORT.md` | exact direct metric and bounded publication status | new CFD |
| NS-first diagnostics | `ns-ledger-v2-oracle-bound-d20-20260809/analysis.json` plus display CSVs | power, gap flux, station/wake, recirculation, vorticity, force readbacks as partial terms | residual/closed balance, force ownership |
| potential/strip | `steady-strip-modal-analysis-20260804-v4/analysis.json`; project theory readers | strip modal comparison and failed sign route | no-slip closure / mechanism |
| display | `figures/manifest.json`, `field_metrics.csv`, `profiles_long.csv`, summary PNG/PDF/CSV | traceable reader visualization | publication-ready independent evidence |
| tests | `tests/test_core.py` | implementation contract checks | physical proof |
## 5. Equation ledger
| ID | Relation / object | Classification | Validity and gate |
|---|---|---|---|
| E1 | `u=u_N+Σ Γ_j h_j`; fixed normal data + all geometric periods imply uniqueness under stated integration hypotheses | existing derivation / proved mathematical result | Euler outer BVP; conditional theorem, not existence/stability |
| E2 | One circle: `W=U(z+a²/z)-iΓ/(2π)log(z/a)`; `u_r(a)=0`, `u_θ(a)=-2U sinθ+Γ/(2πa)` | existing derivation, literature-supported | impermeability independent of Γ; full rotating trace impossible for `U≠0`; special `U=0, Γ=2πa²Ω` is counterexample |
| E3 | MFS zero-source-per-body constraints and Neumann collocation | existing implementation/math contract | numerical representation of outer impermeability; zero source is stronger than global flux compatibility |
| E4 | Strip images: equal-sign source images, opposite-sign vortex images; finite image layers are truncation | existing implementation/derivation | requires dense off-grid and image-layer convergence; not automatic unbounded equivalence |
| E5 | Independent finite Laurent/Fourier collocation | existing implementation | zero-circulation unbounded cross-check, not Crowdy exact, strip or prescribed-circulation validation |
| E6 | Rear-opposite prescribed circulation gives log cancellation and dipole coefficient `C_pair=-Γ b/π` | existing derivation / verified mathematical artifact | unbounded outer potential far-field property only |
| E7 | Affine far coefficient `C(Γ)=C0+Γ dC`; real least-squares cancellation | existing derivation / numerical verification | potential objective only; `g_opt≈+6.147944` in strip route conflicts with finite-Re fitted descriptive `g≈-12.200554` |
| E8 | `E_inf_vector` direct profile and explicit L2 | existing code + authorized artifact observation | metric definitions; L2 is diagnostic and cannot replace primary metric |
| E9 | Gap flux `Q_g=∫u·n ds`, mass flux `∫ρu_n ds`, momentum proxy `J_g=∫ρu_n²ds` | existing code / diagnostic | oriented gap observable; does not establish jet causality or full CV balance |
| E10 | Station mechanical energy flux `∫(p+½ρ|u|²)u_n ds`; dissipation `∫2μS:S dA`; ledger residual `right-left+lateral+dissipation+storage-P_act` | existing derivation/code contract | closure exists only when every signed term is supplied on one CV; current ledger is partial |
| E11 | `p≈c_s²(ρ-ρ_ref)` | existing code diagnostic | weak-compressible LBM pressure proxy, not incompressible NS pressure |
| E12 | wall tangential speed, radial tangential-gradient and near-wall sign-change estimators | existing code diagnostics | proxies; current resolution/gates do not prove wall-vorticity flux or separation/reattachment |
| E13 | source multipoles / low-order projection of high-order MFS | existing derivation/implementation | interpretation aid after solver validation; not a viscous closure |
| E14 | Kármán point-vortex Hamiltonian/street helpers | quarantined mathematical oracle | separate Kármán chain; no steady pinball transmission claim |
### What is not an equation-level result
`Gamma_eff(s)`, `Gamma(Omega)`, gap-jet-to-deficit causality, boat-tail/base-bleed equivalence across Re, stability boundaries, or any energy/momentum coefficient inferred from incomplete terms are not established relations. They are either deferred empirical closure targets or conjectures.
## 6. Potential-flow / rotation-sign conflict
The potential route is internally coherent as an outer impermeability problem and has useful rear-opposite dipole cancellation. Its proposed physical identification fails because the sign required by the potential strip cancellation (`g_opt≈+6.147944`) is opposite to the accepted finite-Re endpoints corrected descriptive circulation fit (`g≈-12.200554`). The accepted CFD nevertheless has a potential-like exterior appearance in figures; resemblance is insufficient to identify the mechanism.
Correct interpretation:
1. potential flow supplies `q_outer(Γ)` counterfactual/reference fields;
2. rotating no-slip CFD supplies vorticity and wake processes absent from Euler;
3. comparison must be `q_CFD-q_potential` on preregistered common masks, with contour sign and uncertainty;
4. then connect residuals to gap flux, shear/separation proxies, recirculation, force and downstream deficit;
5. no claim survives without held-out endpoint/branch and resolution checks.
## 7. MFS / analytic / multipole status and priority
### Existing capability
`theory.py` implements unbounded and strip MFS with prescribed geometric-CCW circulations, zero-source constraints, finite image layers, dense boundary diagnostics, gap/transpiration ansatzes, independent Laurent collocation, source-multipole reconstruction, affine circulation bases, and sampled stagnation-root/Jacobian tools. Existing project tests include mathematical or implementation checks; the code is not a substitute for a new evidence package.
### Validation priority / gate
Before interpreting any MFS field:
1. dense off-grid no-penetration residuals, separately by cylinder and gap/outer sectors;
2. rank/conditioning, source radius, MFS order, image-layer convergence (strip);
3. one-cylinder exact circle oracle including circulation trace;
4. independent Laurent/Fourier cross-check for unbounded zero-circulation fields;
5. held-out points/geometry and common-exterior profile convergence;
6. only then project high-order MFS into low-order per-body dipoles/multipoles plus antisymmetric circulation, showing error versus term count.
Current gate state in `DERIVATION.md` is reference-validation/deferred for dense and parameter-convergence evidence. Collocation residual alone is not validation. The composite semi-analytic route is failed historical evidence (double subtraction, inactive wake term, non-independent gates), not an active model.
## 8. NS-first, energy, momentum, gap-jet and base-bleed chain
### Candidate physical chain (hypothesis, not established mechanism)
`wall rotation sign → gap-facing wall motion / local shear → near-wall vorticity production and separation/shear-layer birth → gap mass/momentum redistribution and base-bleed-like jet → recirculation/base pressure/force changes → downstream deficit reduction`.
A second, weaker candidate is `rear constant rotation → persistent mean-field compensation`, with dynamic feedback as a separate perturbation. SR/CCD can motivate this decomposition but cannot prove the arrows.
### Available observables
- actuator torque/power sign and samples where explicit history exists;
- signed gap `Q_g`, mass flux and `J_g` by oriented segment;
- station mass/vector momentum/kinetic/mechanical-energy flux;
- recirculation, wake deficit proxies, vorticity moments, near-wall tangential speed, radial-gradient and ux-zero-crossing proxies;
- endpoint field comparison against `q_in` and potential references.
### Why closure is not yet available
The current NS ledger is endpoint/spatial partial: missing or unsupported terms include a common control volume with complete storage, lateral/outlet flux, pressure and viscous traction/wall terms, body-adjacent resolution, and certified force ownership. `p` is a weak-compressible density proxy. The implementation explicitly returns `incomplete_not_closed` unless every signed term is supplied. Therefore “energy balance,” “momentum balance,” “actuator power explains deficit,” and “gap jet causes cloak” are open, not results.
### Required next gate (no CFD authorized by this dossier)
If reopened, use fresh no-clobber artifacts and one frozen CV: matched accepted/reverse amplitude, same inlet/reference and window, pressure/viscous/stress boundary terms, body work, storage, lateral flux, grid/domain/time convergence, and held-out prediction. A matched intervention or independent realization is needed for causality; continuation/eigenvalue/basin/order-parameter evidence is needed for stability. Do not use archive artifacts to fill missing terms.
## 9. Cross-project map
| Package / chain | Connectable item | Explicitly not connectable |
|---|---|---|
| SR Legacy Kármán/cloaking | rear-constant term ranking and steady magnitude correspondence as contextual calibration; `Re_code`/`Re_D` conversion only when explicitly documented | V5 steady metric as Legacy SR evidence; SR deletion as physical intervention; necessity, circulation, momentum law, mechanism, universal `s` |
| corrected CCD Kármán | mean-versus-dynamic separation and descriptive constant-field context | no steady CCD number; no phase co-variation as steady mechanism/causality; different plant, periodic estimator and chain |
| OID active core | future method vocabulary for force/signature observables and strict alignment | no active scientific result; archived high-R²/action claims; no importance/authority/causality |
| Legacy / V5 | explicit compatibility audit: action units, object order, telemetry, norm, BC, solver version | numerical equivalence, shared metric, cross-generation pooling without parity artifact |
| `drl_pinball` | broad control/case navigation; Kármán scope and role boundaries | DRL performance as steady mechanism proof; Legacy controls as V5 steady data |
| `pv_plot` | `tyx`/`txy` axis-order and vorticity/speed/comparison interface confirmation | physical interpretation, metric authority, CFD validation |
| `src/archive` | failure chronology, superseded route and negative controls | current evidence, new numbers, mechanism rescue |
## 10. Core short derivations: main-text suitability
The following are short enough to become later main-text equations after evidence-parity review, but this dossier does not draft prose:
- canonical `Re_D`, `s`, wall-velocity mapping and direct `E_inf_vector` definition;
- one-circle trace showing Euler impermeability does not select circulation and full rotating trace is obstructed for `U≠0`;
- rear-opposite log cancellation / dipole coefficient as an explicitly labeled outer reference and sign counterexample;
- energy/momentum ledger identity only as a required closure equation with all terms visibly marked unavailable.
MFS matrix construction, strip images, source constraints, Laurent cross-check, multipole projection, and root/Jacobian algorithms belong in methods/supplement unless the validation gate is completed. No derivation should be written as a finite-Re mechanism until CFD-minus-reference residual and NS closure evidence exists.
## 11. Failed routes, open checks, coverage gaps
### Failed / withdrawn routes
- wrong-sign `[0,-Omega,+Omega]` cloak interpretation and campaigns;
- prescribed-circulation cancellation as accepted CFD mechanism (`g` sign conflict);
- composite semi-analytic scorer with double subtraction/inactive wake/non-independent gates;
- incomplete CV ledger promoted to energy/momentum closure;
- single switch/return realization promoted to causality, branch switching, basin or stability;
- direct potential-to-rotating-wall no-slip transfer;
- archive plots or Legacy/V5 similarity used as current cross-chain evidence.
### Open checks
- dense off-grid MFS residuals by body sector and all convergence dimensions;
- one-circle exact and Laurent/Fourier independent validation in the active evidence lineage;
- strip image-layer and finite-strip/unbounded comparison;
- accepted/reverse amplitude-matched continuation and stability qualification;
- grid/domain/window convergence and held-out `E_inf_vector`;
- complete same-CV NS momentum/mechanical-energy closure with certified pressure, viscous, wall and storage terms;
- empirical `Gamma_eff(s)` only with sign/contour/mask/Re/geometry/confinement/uncertainty and held-out endpoints;
- no-slip transfer experiment is a new contract, not inherited from free-slip;
- unresolved CCD steady interface remains separate and cannot backfill steady mechanism.
### `src` cross-navigation coverage
Covered as active entry/role checks: `steady_pinball_theory/**`, `analysis_knowledge.md`, `analysis_notes.md`, `understanding_notes.md`, `src/README.md`, `SR_analysis` claims/results navigation, `CCD_analysis` corrected authority, `OID_analysis` reset authority, `pv_plot` interface, and repository-level archive boundary. No `src/archive/**` file was promoted to current evidence. Remaining limitation: `drl_pinball` active utility/package files and the large `CelerisLab/` external/generated tree were not exhaustively indexed here; DRL agent owns graphic/control use, and CelerisLab is explicitly outside repository closeout. This is the principal residual coverage gap.
## 12. Candidate figure / code / artifact map
- contract/sign panel: `contract.py`, sign oracle tests, current endpoint manifest;
- accepted/reverse/stationary aligned fields: `figures/plates/**`, raw `fields/**`, `field_metrics.csv`, `profiles_long.csv`;
- direct metric curve: `figures/summary/profile_Einf_vector.{csv,png,pdf}`;
- gap/base-bleed diagnostic: `figures/summary/signed_gap_Qstar.{csv,png}` and NS gap CSVs;
- near-wake diagnostics: `figures/summary/near_wake_diagnostics.{csv,png}`;
- potential-vs-CFD/error plates: `figures/plates/error/**`, with potential analytical-vorticity-zero convention;
- MFS diagnostic code: `theory.py`, `metrics.py`, `tests/test_core.py`; no generated display is a new result;
- article/report and machine map: authoritative external roots and `evidence/INDEX.json`.
## 13. Final evidence verdict for handoff
**Supported:** canonical contracts; conditional Euler/MFS mathematics; outer potential reference; bounded current-v5 `Re_D=50` free-slip accepted low-deficit endpoint; bounded reverse high-deficit steady candidate; descriptive gap/wake/force/power diagnostics where artifacts expose them; SR steady correspondence as contextual only.
**Rejected/withdrawn:** potential-circulation cancellation as the accepted finite-Re mechanism; wrong-sign accepted branch; composite semi-analytic PASS; closed energy/momentum explanation; causality/stability/no-slip transfer claims.
**Interpretation level:** the gap-jet/base-bleed chain is a candidate physical chain, not a project-established mechanism. Main mathematical risks are (i) Euler circulation is independent of rotating no-slip wall speed, (ii) strip versus unbounded asymptotics and finite-image truncation, (iii) sign/body/metric confusion, and (iv) incomplete NS terms and coarse near-wall resolution. Highest-value next work is validation/closure gating, not new narrative or another CFD sweep.
@@ -0,0 +1,145 @@
# JFM Round 1 — Introduction Literature / Material Index
> 资料索引,不是 Introduction prose。标签:`[FACT]` 外部文献直接支持;`[OBS]` 本地 bounded observation`[INTERP]` 作者叙事选择;`[HIST]` 历史动机;`[OPEN]` 未闭合。阅读层级:`full-PDF``full-report``abstract/snippet`
## 0. Executive map
最稳健的问题链是:**在包含分离、涡脱落、对称性破缺和多吸引子的中等 Re bluff-body 流中,能否用有限传感器和紧凑旋转执行器,以 observer-level wake signature 为目标主动控制;若 DRL 找到性能策略,能否通过受原 plant 闭环 CFD 检验的 SR、场分解和稳态/理论分析,将其降解为受限的物理控制骨架?**
候选链:`minimal cloak vocabulary → linear/passive wave analogues → active model-specific hydrodynamic cloaks → AFC/DRL → fluidic pinball → sparse sensing/signature/DTW → SR and field interpretation → bounded gap`。其中线性波到非线性流体是背景对比,不是物理等价链;Urz12 是 active porous cloakRen20b 是 DRL cylinder stealth,二者都不等同于本项目旋转 pinball。
## 1. Audit trail
### Nowledge Mem
已调用 `read_context_bundle`,读取 Working Memory、owner identity、active scope;并定向调用 `memory_search` 检索完整路线、导师意见、Confirmation 原始动机、JFM reconnaissance、hydrodynamic stealth/illusion、fluidic pinball、DRL、sparse sensor/DTW、SR/可解释控制。关键 recalled boundariesactive positive SR 仅 Legacy Kármán/cloakingIllusion SR 为 historical/negativeCCD descriptiveOID claim-freesteady bounded contextualLegacy 与 V5 分开;应用需简短前瞻,seals、海洋结构、环境扰动、扬沙等不作主线。`thread_search` 对相同主题无匹配线程,因此 Mem 是路线线索而非外部科学证据。
### Undermind
已先 `get_orientation`,再 `list_workspaces`;进入现有 DynamisLab workspace `4383d145-2c80-4991-8a9c-7ac2dd683438`。只读检查 root、`Confirmation_report/``JFM/``JFM References/`,及 folders 0103、0506workspace 有 54 files、14 existing deep searches。检查了已有报告:Hydrodynamic stealth and illusionSymbolic regressionInterpretable analysisMinimal wake-field L2Wake-field L2/sensor rationaleClosed-loop OIDJFM rigor for CCD/PCD;以及各论文清单。批量读取 20 篇最相关 PDF 的正文或原始 PDF 页眉:Rab18b, Ren20b, Mac20, Den18b, Den20, Den21, Li21, Wan23b, Xia23, Loi16, Loi17, Gau14, Par20, Urz12, Vas09, Ma13, Zou19b, Pen06b, Leo06b, Ren20c;其余按摘要/元数据标注。本轮没有启动新 deep search,也没有修改 workspace。一次 moderate-Re cloak `search_papers` 被自动审查拦截为新 deep-search-like discovery,未绕过;只保留已有库和已返回定向结果。
### Repository / historical materials
已检查 `docs/JFM_WYQ`、round README、根 README、`src/steady_pinball_theory/LITERATURE.md`、DRL/SR/CCD writing handoff/results、`src/understanding_notes.md`,以及 Undermind 的 Confirmation `Conf_1_Intro/2_Description/5_Conclusion``JFM/Introduction and Background Draft`。当前仓库未发现可直接作为 authority 的 Confirmation `.tex/.bib`;旧报告只用于原始动机与演进,不覆盖当前 artifact/claim ledger。
## 2. Searchable taxonomy
- **A 概念**visibility/signaturecloak=observer-space 接近 backgroundillusion=接近非零 targetpassive/activelocal body vs external signature。
- **B 线性谱系**transformation optics/conformal mappingactive exterior cloakactive illusionacoustic/water-wave cloak;线性叠加、频带、材料/源限制。
- **C hydrodynamic bridge**porous/Brinkman active cloak;低 Re/线性化水波;finite-Re separation/wakecompact moving-wall/jet actuation 的未闭合转移。
- **D AFC/DRL**rotation/jetssensitivity/optimal controlgenetic-programming MLCPPOnoise/Re robustnesspartial observation/history/action filtering。
- **E pinball**MIMO rotating cylindersHopf/pitchforkforce/low-order modelsmulti-attractor/chaosopen/closed-loop control。
- **F observer/metric**wake informationsparse velocity/pressuresensor placement/delayDTW similaritysensor vs full-field estimandzero/target comparator。
- **G interpretation**black-box policyGP/SRSINDy/sparse Galerkin/feature liftingPOD/OID/CCDclosed-loop redeploymentassociation ≠ causality。
## 3. Core literature cards
### Cloaking, illusion, hydrodynamic bridge
|key|exact identity|DOI|read|supports / cannot support|
|---|---|---|---|---|
|Pen06b|Pendry, Schurig & Smith, “Controlling Electromagnetic Fields”, *Science* 312 (5781), 17801782 (2006)|10.1126/science.1125907|full-PDF; formal publisher metadata overrides the erroneous workspace PDF header|[FACT] transformation-optics origin / not nonlinear hydrodynamics|
|Leo06b|Leonhardt, “Optical Conformal Mapping”, *Science* 312, 17771780 (2006)|10.1126/science.1126493|full-PDF; journal pages verified|[FACT] optical genealogy / not fluid transfer|
|Vas09|Vasquez, Milton & Onofrei, “Active exterior cloaking for the 2D Laplace and Helmholtz equations”, *Physical Review Letters* 103, 073901 (2009)|10.1103/PhysRevLett.103.073901|full-PDF; preprint PDF plus journal metadata|[FACT] finite active sources and quiet exterior / not NavierStokes|
|Ma13|Ma, Mei, Zhu, Jin & Cui, “Experiments on active cloaking and illusion for Laplace equation”, *Physical Review Letters* 111, 173901 (2013)|10.1103/PHYSREVLETT.111.173901|full-PDF; journal first page verified|[FACT] cloak vs nonzero illusion distinction / not wake target tracking|
|Zou19b|Zou et al., “Broadband Waveguide Cloak for Water Waves”, *Physical Review Letters* 123, 074501 (2019)|10.1103/PhysRevLett.123.074501|full-PDF; journal first page verified|[FACT] engineered bathymetry/mode conversion / not bulk viscous wake|
|Urz12|Urzhumov & Smith, “Flow stabilization with active hydrodynamic cloaks”, *Physical Review E* 86, 056313 (2012)|10.1103/PhysRevE.86.056313|full-PDF; preprint PDF plus journal metadata|[FACT] active Brinkman cloak suppresses cylinder shedding in finite Re window / not rotating no-slip pinball equivalence|
|Ren20b|Ren, Wang & Tang, “Bluff body uses deep-reinforcement-learning trained active flow control to achieve hydrodynamic stealth”, *Physics of Fluids* 33, 093602 (2021)|10.1063/5.0060690|full-PDF; journal first page verified|[FACT] WSLB jets + near-wake sensors attenuate cylinder deficit / not global first, field cloak, illusion or causal mechanism|
**Priority hold:** workspace contains `Ren19b`, “Elimination of velocity deficit behind a cylinder using reinforcement learning” (Ren & Tang, 2019), but no PDF/DOI. Do not call Ren20b the global first; next round must resolve whether Ren19b is preprint, predecessor or duplicate.
### Fluidic pinball / JFM nearest neighbours
|key|exact identity|DOI|read|supports / cannot support|
|---|---|---|---|---|
|Den18b|Deng, Noack, Morzyński & Pastur, “Low-order model for successive bifurcations of the fluidic pinball”, *Journal of Fluid Mechanics* 884, A37 (2020)|10.1017/jfm.2019.959|full-PDF; preprint PDF plus journal metadata|[FACT] successive Hopf/pitchfork and compact 3-cylinder nonlinear benchmark / not project thresholds/BCs|
|Den20|Deng, Noack, Morzyński & Pastur, “Galerkin force model for transient and post-transient dynamics of the fluidic pinball”, *Journal of Fluid Mechanics* 918, A4 (2021)|10.1017/jfm.2021.299|full-PDF; journal first page verified|[FACT] structured modal force model / not controlled-flow causality|
|Den21|Deng, Noack, Morzyński & Pastur, “Cluster-based hierarchical network model of the fluidic pinball cartographing transient and post-transient, multi-frequency, multi-attractor behaviour”, *Journal of Fluid Mechanics* 934, A24 (2022)|10.1017/jfm.2021.1105|full-PDF; journal first page verified|[FACT] periodic/quasi-periodic/chaotic multi-attractor dynamics / not universal controllability|
|Mac20|Cornejo Maceda, Li, Lusseyran, Morzyński & Noack, “Stabilization of the fluidic pinball with gradient-enriched machine learning control”, *Journal of Fluid Mechanics* 917, A42 (2021)|10.1017/jfm.2021.301|full-PDF; journal first page verified|[FACT] rotating-cylinder open/closed-loop ML; asymmetric steady + phasor / not PPO or project metric/sign transfer|
|Rai20|Raibaudo, Zhong, Noack & Martinuzzi, “Machine learning strategies applied to the control of a fluidic pinball”, *Physics of Fluids* 32, 015108 (2020)|10.1063/1.5127202|full-PDF; journal metadata/PDF verified|[FACT] experiment, three hot wires at x/D=10, non-obvious actuator relations / not sensor optimality|
|Fen23|Feng, Wang, Xiang, Jin & Fan, “How to Control Hydrodynamic Force on Fluidic Pinball via Deep Reinforcement Learning”, *Physics of Fluids* 35(4), 045137 (2023)|10.1063/5.0142949|full-PDF; formal publisher/DOI metadata verified|[FACT, weaker] DRL force min/tracking capability / not JFM, cloak, SR mechanism|
|Mit01|Mittal, “Control of flow past bluff bodies using rotating control cylinders”, *Journal of Fluids and Structures* 15, 291326 (2001)|10.1006/JFLS.2000.0337|full-PDF; journal metadata verified|[FACT] rotating controls modify separation/wake / not equal-cylinder pinball|
### DRL, sparse sensing, interpretation
|key|exact identity|DOI|read|supports / cannot support|
|---|---|---|---|---|
|Rab18b|Rabault, Kuchta, Jensen, Réglade & Cerardi, “Artificial neural networks trained through deep reinforcement learning discover control strategies for active flow control”, *Journal of Fluid Mechanics* 865, 281302 (2019)|10.1017/jfm.2019.62|full-PDF; journal metadata/PDF verified|[FACT] PPO/DRL cylinder AFC from wake sensing; ~8% drag / not interpretability or field matching|
|Par20|Paris, Beneddine & Dandois, “Robust flow control and optimal sensor placement using deep reinforcement learning”, *Journal of Fluid Mechanics* 913, A25 (2021)|10.1017/jfm.2020.1170|full-PDF; journal metadata verified, PDF is preprint|[FACT] noise/Re/sensor-layout trade-offs / not project sensor optimality|
|Ren20c|Ren, Rabault & Tang, “Applying deep reinforcement learning to active flow control in weakly turbulent conditions”, *Physics of Fluids* 33, 037121 (2021)|10.1063/5.0037371|full-PDF; journal first page verified|[FACT] Re=1000 weak turbulence DRL AFC / not pinball universality|
|Li21|Li & Zhang, “Reinforcement-learning-based control of confined cylinder wakes with stability analyses”, *Journal of Fluid Mechanics* 932, A44 (2022)|10.1017/jfm.2021.1045|full-PDF; journal metadata verified, PDF is preprint|[FACT] reward/reference/stability and few informative probes / not DTW causality|
|Xia23|Xia, Zhang, Kerrigan & Rigas, “Active flow control for bluff body drag reduction using reinforcement learning with partial measurements”, *Journal of Fluid Mechanics* 981, A17 (2024)|10.1017/jfm.2024.69|full-PDF; journal first page verified|[FACT] partial observation/history/actions matter / not guaranteed reconstruction|
|Wan23b|Wang, Yan, Hu, Chen, Rabault & Noack, “Dynamic feature-based deep reinforcement learning for flow control of circular cylinder with sparse surface pressure sensing”, *Journal of Fluid Mechanics* 988, A4 (2024)|10.1017/jfm.2024.333|full-PDF; formal publisher metadata overrides the erroneous workspace record/PDF header|[FACT] feature lifting enables sparse-sensor control / not velocity-pinball transfer|
|Gau14|Gautier, Aider, Duriez, Noack, Segond & Abel, “Closed-loop separation control using machine learning”, *Journal of Fluid Mechanics* 770, 442457 (2015)|10.1017/jfm.2015.95|abstract/snippet; metadata/journal page verified, PDF is preprint|[FACT] GP finds explicit closed-loop AFC law / not unique causal law|
|Loi16|Loiseau & Brunton, “Constrained sparse Galerkin regression”, *Journal of Fluid Mechanics* 838, 4267 (2018)|10.1017/jfm.2017.823|full-PDF; journal first page verified|[FACT] parsimonious constrained sparse models / not policy SR|
|Loi17|Loiseau, Noack & Brunton, “Sparse reduced-order modelling: sensor-based dynamics to full-state estimation”, *Journal of Fluid Mechanics* 844, 459490 (2018)|10.1017/jfm.2018.147|full-PDF; journal metadata verified, PDF is preprint|[FACT] sensor lifting/SINDy/field mapping black-to-grey route / not direct controller law|
|Jin21|Jin, Illingworth & Sandberg, “Optimal sensor and actuator placement for feedback control of vortex shedding”, *Journal of Fluid Mechanics* 929, A13 (2021)|10.1017/jfm.2021.948|full-PDF; journal metadata/PDF verified|[FACT] placement has estimation/control/delay trade-offs / not x/D=10 optimum|
|Bru19|Brunton, Noack & Koumoutsakos, “Machine Learning for Fluid Mechanics”, *Annual Review of Fluid Mechanics* 52, 477508 (2020)|10.1146/annurev-fluid-010719-060214|full-PDF; journal metadata/PDF verified|[FACT] ML taxonomy and interpretation cautions / not project evidence|
**DTW:** `Sak78` Sakoe & Chiba, “Dynamic programming algorithm optimization for spoken word recognition”, *IEEE Transactions on Acoustics, Speech, and Signal Processing* 26, 4349 (1978), DOI `10.1109/TASSP.1978.1163055`; `Mul15` Müller, *Fundamentals of Music Processing*, Springer (2015), DOI `10.1007/978-3-319-21945-5`. Both are full-PDF in Undermind; they support alignment/similarity only. They support alignment/similarity only. Current project authority explicitly forbids interpreting DTW lag as physical delay or causality.
## 4. Citation network / chronology
`Pen06b/Leo06b → Vas09 → Ma13 → Zou19b` = linear/passive → active/illusion → water-wave vocabulary; no nonlinear-wake equivalence.
`Urz12 → Ren20b` = active hydrodynamic stabilization/signature attenuation; porous shell and WSLB jets remain different actuators/metrics.
`Gau14 → Mac20`; `Rab18b → Par20/Ren20c/Li21/Xia23/Wan23b` = ML/DRL-AFC lineage through robustness, turbulence, stability and partial observation.
`Den18b → Den20/Den21/Mac20/Rai20` = pinball bifurcations → force/multi-attractor models → ML control and experiment.
`Loi16 → Loi17 → project SR/OID/CCD` = sparse constrained models → sensor/field representation → project-specific audit; the final arrow is adaptation, not citation proof.
Chronology: 2006 optical; 200913 active linear cloak/illusion; 2012 active porous hydrodynamic cloak; 201418 interpretable/low-order/DRL foundations; 201921 pinball and DRL stealth/control; 202223 multi-attractor, stability, partial-observation and sparse-feature JFM control; 202426 includes the JFM sparse-feature paper (Wang et al., JFM 988, A4, 2024); project evidence remains bounded.
## 5. Confirmation / old-introduction motivation disposition
### Retain, but demote
- one sentence on science-fiction/visibility vocabulary;
- passive/active and linear/nonlinear taxonomy;
- conventional AFC objectives (drag, lift, separation, vibration);
- pinball geometry/dynamics and sparse observer signature;
- DRL as nonlinear policy discovery;
- SR as an audit question;
- one short prospective application clause.
### Qualify / quarantine
- “first explicit attempt” for Ren20b → early/direct precedent; resolve `Ren19b` first;
- 99.5% → Rens exact near-wake velocity-deficit metric only;
- “complete field restoration” → declared sensor/field space only;
- Confirmation Re=50 and bifurcation language → audit `Re_code` vs `Re_D` first;
- seals/whiskers → historical sensing context only, never application driver;
- target Strouhal matching, cross-size generalization, first illusion, high-frequency explanation → historical/negative archive pending current authority.
### Delete from mainline
seals hunting; cylindrical marine structures; environmental disturbance/sediment resuspension; defense/low-observability claims; positive Illusion SR; DTW-as-delay; CCD/OID-as-mechanism; pooled Legacy/V5 evidence; universal/optimal/causal wording.
## 6. Candidate argument chains (logic skeleton)
### A — observer signature → active nonlinear cloak → interpretable skeleton (recommended)
1. Wake carries observer information. 2. Define cloak/background and illusion/nonzero target. 3. Linear literature supplies vocabulary, not NavierStokes solution. 4. Urz12/Ren20b give adjacent hydrodynamic precedents. 5. DRL solves policy discovery but leaves observability/interpretability issues. 6. Pinball supplies MIMO actuation plus bifurcation complexity. 7. Ask whether Kármán cloak policy has a compact, CFD-validated law and bounded field structure. 8. Present SR → CCD/field audit → steady context with explicit nonclaims.
### B — nonlinear benchmark → DRL → white-box audit
1. Open with pinballs simple geometry/difficult dynamics. 2. Den18b/20/21 explain why scalar force optimization is insufficient. 3. Mac20/Rai20 establish rotating-cylinder ML control. 4. Rab18b/Par20/Li21/Xia23/Wan23b motivate DRL with sparse/partial observations. 5. Gap: policy distillation plus field-level audit in the original plant. 6. Cloak vocabulary is objective, not history chapter.
### C — mean compensation + dynamic correction
1. Cloak as declared field/signature error decomposition. 2. Literature gives wake stabilization, sparse sensing, low-order/observable tools but no shared decomposition for this plant. 3. DRL → SR action law. 4. CCD tests descriptive phase-coherent low-rank residual. 5. Steady theory is contextual, not mechanism closure. 6. Gap is the bounded triangulation, not a universal law.
## 7. Gaps and next-round deep-search questions
Do not launch these in Round 1: (1) resolve `Ren19b` identity and Tang/Ren priority meaning; (2) peer-reviewed moving-wall/jet finite-Re hydrodynamic cloaks; (3) nonlinear viscous nonzero-target wake illusion; (4) JFM 202126 pinball + DRL/PPO/partial observation/SR nearest neighbours; (5) neural AFC policy → SR/GP → held-out closed-loop redeployment; (6) descriptive OID/EPOD/CCA/CCD against POD and causality boundaries; (7) DTW wake-signature papers and timing interpretation; (8) x/D sensor placement trade-offs for pinball/cylinder; (9) same-Re/geometry base-bleed and rotating-cylinder momentum/vorticity evidence; (10) recent JFM introduction narrative patterns.
## 8. Citation priority
**Tier 1:** Den18b, Mac20, Rab18b, Ren20b, Urz12, Par20 or Xia23, Gau14 or Loi17.
**Tier 2:** Den20, Den21, Li21, Wan23b, Rai20, Jin21, Vas09, Ma13, Zou19b, Spe14, Bou11.
**Tier 3:** Pen06b, Leo06b, Tri15, Mit01, Dip07, Loi16, Li16, Zol25, Sak78, Mul15, Fan20b, Ren20c, Bru19 and broad reviews. Use only when a specific transition needs them.
Do not cite unresolved Confirmation BibTeX entries (`dolin1961possibility`, `bugnot2021current`, `corradini2001dynamic`, `krazer1905verhandlungen`) or `Ren19b` without re-verification.
## 9. Boundaries and limitations
- This is a curated traceable first pass, not a systematic bibliometric review; existing Undermind library/reports were prioritized and no new deep search was launched.
- 20 PDFs were batch-read or checked at the original PDF header; cards now distinguish complete journal-page verification from preprint-only PDF reading. Full-PDF means Undermind paper-level extraction, not independent equation-by-equation audit.
- Formal publisher metadata takes precedence over conflicting workspace metadata or PDF headers. In this revision, Pen06b, Wan23b and Fen23 were corrected from those conflicts; no identifiers were guessed.
- External papers cannot establish internal solver, Re convention, metric, seed, artifact or claim status. Legacy and V5 remain separate.
- Before prose: resolve `Ren19b`, verify Fan20b/Li16/Cas22/Zol25/Sak78 metadata, freeze one chain, and run a whole-manuscript claim audit.
@@ -0,0 +1,111 @@
# Round-1 current-document coverage audit
> **Scope.** DynamisLab JFM Round-1 closure audit, not manuscript writing and not raw-artifact re-audit. Repository state and current package authority outrank Round1 dossiers, memory, plans, and archive material. No CFD/CUDA/training was run; dossiers were not modified.
## 1. Coverage methodology and corrected denominator
I first read the Nowledge Mem context bundle/Working Memory, then read the repository rule and the five existing Round1 dossiers. I then enumerated the six package trees and read every Markdown document retained as current reader/contract/navigation material in the audit scope, plus every selected current authority/index JSON listed below. This pass does not read archive leaf files or raw/generated payload artifacts.
Statuses are now deliberately strict: **`read-full`** means the complete file was read in this pass; **`archive-navigation`** means only a current top-level document/index was read to establish historical routing; **`artifact-deferred`** means the authority document was read but its large/external/raw payload was not. `mapped` is no longer accepted as current coverage. `read-full` is not independent verification and neither status is `artifact-audited`.
The corrected denominator is **63 current Markdown documents** and **8 selected current authority/index JSON documents**. The earlier 65-Markdown/17-JSON statement was a mapped inventory, not a full-read ledger, and overstated the current set. The two files `src/drl_pinball/train/CROSSRE_ANALYSIS.md` and `src/drl_pinball/train/VARDIST_ANALYSIS.md` explicitly identify themselves as archived transfer analyses; they are removed from the current denominator and retained only in archive navigation. Generated result JSON/CSV/NPZ, TensorBoard/model bundles, dense external Optane roots, and hidden raw artifacts are excluded from the denominator even when their manifests are current; their exclusion and authority-led deferral are recorded below.
**Coverage outcome: 63/63 current Markdown documents are `read-full`; 8/8 selected current authority/index JSON documents are `read-full`.** No current reader-document hole remains. This is a full-reading result, not a claim that every scientific artifact or claim has been independently verified.
## 2. Current Markdown ledger
All paths in this section were read in full. The package counts include the repository-level current navigation documents (`src/README.md`, `src/analysis_knowledge.md`, `src/analysis_notes.md`, and `src/understanding_notes.md`) in the total of 63.
| Package / role | Current Markdown read-full | Count |
|---|---|---:|
| `src/` cross-package authorities | `README.md`, `analysis_knowledge.md`, `analysis_notes.md`, `understanding_notes.md` | 4 |
| `src/drl_pinball` | `README.md`, `CLAIMS.md`, `RESULTS.md`, `DATA_DICTIONARY.md`, `ASSET_STATUS.md`, `HISTORY_AND_LESSONS.md`, `WRITING_HANDOFF.md`, `knowledge.md`, `train/README.md`, `train/TRAIN_PIPELINE.md`, `train/DESIGN_DECISIONS.md`, `train/SERVER_DEPLOY.md`, `train/results/latest/HOW_TO_READ.md`, `eval/README.md`, `legacy_test/README.md`, `data/reproduction_plots_sr/README.md` | 16 |
| `src/SR_analysis` | `README.md`, `CLAIMS.md`, `PIPELINE.md`, `HANDOFF.md`, `HISTORY_AND_LESSONS.md`, `ASSET_STATUS.md`, `results/README.md`, `results/INDEX.md`, `data/README.md`, `checks/README.md`, `tests/README.md`, `tools/README.md`, `utils/README.md`, `results/runs/article2-sr-elements-20260720/sr_key_elements.md`, `results/runs/article2-steady-analysis-20260720/interpretation.md`, `results/runs/article2-percase-refit-summary-20260720/interpretation.md`, `results/runs/article2-plotting-package-20260721/README.md`, `results/runs/article2-plotting-package-20260721/presentation/README.md`, `results/runs/article2-plotting-package-20260721/tables/offline_action_rmse.md`, `results/runs/article2-plotting-package-20260721/tables/term_deletion.md` | 20 |
| `src/CCD_analysis` | `README.md`, `RESULTS_INDEX.md`, `CLAIMS.md`, `FINAL_RESULTS.md`, `WRITING_HANDOFF.md`, `FIGURES_AND_DATA.md`, `MATHEMATICAL_DERIVATION.md`, `karman_dynamic/CORRECTED_MATH_CONTRACT.md` | 8 |
| `src/OID_analysis` | `README.md`, `SCIENTIFIC_RESET.md`, `METHOD.md`, `PHYSICS_CONTRACT.md`, `HANDOFF.md` | 5 |
| `src/steady_pinball_theory` | `README.md`, `RESULTS.md`, `DERIVATION.md`, `LITERATURE.md`, `HISTORY_AND_LESSONS.md`, `figures/README.md`, `evidence/README.md` | 7 |
| `src/pv_plot` | `README.md` | 1 |
| **Total** | | **61** |
The table lists 61 package/root reader files explicitly named in this audit. The remaining two current Markdown files are the current reader-facing report/index documents discovered during the full enumeration: `src/drl_pinball/eval/output/reports/comparison_table.md` and `src/CCD_analysis/evidence/real-ccd-karman-figures-v1/KARMAN_INTERPRETATION.md`; both were read-full but are derived/historical reader views and do not create new authority. This makes the denominator 63.
### Archive navigation (excluded from current denominator)
- `src/drl_pinball/train/CROSSRE_ANALYSIS.md` and `VARDIST_ANALYSIS.md`: **archived transfer analyses**, not current reader docs. They describe `_tr` transfer experiments and deprecated calibration/training recommendations; current contracts are in `train/README.md`, `TRAIN_PIPELINE.md`, and `DESIGN_DECISIONS.md`. Their historical observations remain navigation only.
- `src/drl_pinball/train/old/`, `train.local.bak/`, and `eval/archive/`: old/backup/deprecated navigation, excluded without reading leaf files.
- `src/SR_analysis/archive/` and `src/CCD_analysis/original_ccd/`: archive/superseded routes. Current package READMEs and asset ledgers establish their boundaries; archive leaves were not read.
- `src/OID_analysis/archive/`: the July two-scene conditional study is archive evidence only. The active OID package is claim-free and has no current scientific result.
- Superseded steady publication/display routes are navigated through `steady_pinball_theory/evidence/README.md` and `INDEX.json`; superseded leaves were not read.
## 3. Selected current authority/index JSON ledger
The following **8 JSON documents were read in full** and retained as selected current authority/index documents:
- `src/drl_pinball/train/results/training_csv/manifest.json`
- `src/drl_pinball/data/reproduction_plots/manifest.json`
- `src/drl_pinball/data/reproduction_plots_sr/manifest.json`
- `src/SR_analysis/results/catalog.json`
- `src/CCD_analysis/EXECUTION_CHECKPOINT.json`
- `src/CCD_analysis/artifact_catalog.json`
- `src/OID_analysis/SCIENTIFIC_RESET_CHANGESET.json`
- `src/steady_pinball_theory/evidence/INDEX.json`
Generated result tables, plotting manifests, and external artifact manifests not in this selected set remain excluded from the denominator. In particular, large `training_iterations.csv`, plot CSV/NPZ/PDF/PNG trees, model/TensorBoard bundles, external Optane field roots, and hidden raw data are not “unread current documents”: they are generated/raw artifacts governed by manifests and authority documents. No hash recomputation, raw-field read, or artifact audit was performed.
## 4. New full-read addenda
### A7 — DRL archive boundary is semantic and explicit
`ASSET_STATUS.md`, `train/README.md`, `TRAIN_PIPELINE.md`, and both transfer analyses distinguish active native V5 scratch IDs from archived `_tr` transfer work. `CROSSRE_ANALYSIS.md` and `VARDIST_ANALYSIS.md` are therefore archive navigation, not current reader authority. Their recommendations (generic `SIM_BP`, transfer learning, learning-rate changes, and historical peak/crash explanations) must not be carried into current active claims or counted as current coverage.
The current DRL reader package also makes the evidence boundary sharper: retained V5 results are historical writing inputs, Re100 alone has five seeds, other cases are n=1 demonstrations, and shared train/eval updates `VecNormalize` moments. A best policy is incomplete without its same-selection normalizer; a logged episode is a PPO chunk plus evaluation, not a terminating Gym episode.
### A8 — Current generated reader manifests are partial by contract
The training CSV manifest reports 7,000 rows from 14 of 15 discovered runs and excludes `kar_re60_seed43` fail-closed because of conflicting resumed TensorBoard branches and mixed configuration history. The SR plotting manifest is intentionally partial (11 of 23 expected plots), and its generalization cases intentionally have no PPO role. These are honest manifest states, not current-document coverage failures. The generated plots remain reader views and do not create new CFD evidence.
### A9 — SR current/archive status is a semantic view, not filesystem movement
The full SR read confirms a mixed executable/runtime tree: Kármán is the only active scientific claim; steady is contextual; Illusion runtime and immutable article/article2 paths remain for reproducibility but are historical/negative. `results/catalog.json` says `v2`/`v3` suffixes do not prove supersession and discovery generations remain pending dependency audit. The long standardized Illusion 1L result is a negative control against the older positive interpretation; no target-tracking or cross-size claim may be promoted.
### A10 — CCD is closed descriptively, with canonical choice still pending
The CCD package and checkpoint identify the validated per-cycle sibling as complete and the preferred pinball-inclusive result as a derived reader view. The primary bounded conclusions are mean-control dominance (`93.42%` of the tested ROI reduction), a stable rank-3 descriptive residual subspace, and near-equivalence to raw full-fit POD in the pinball-inclusive domain. The checkpoint still records `canonical_promotion_choice=PENDING_USER_CHOICE` and final review as writing claim closeout; therefore “validated sibling complete” must not be rewritten as “canonical alias frozen.”
### A11 — OID remains method-only; reset JSON records non-destructive preservation
The current OID Markdown and reset changeset agree: the active package is CPU-only, claim-free, and has no active scientific result or redo entrypoint. The archived two-scene study remains conditional; sensor self-observation, failed force gates, and feedback-loop action association prohibit any importance, mechanism, causality, necessity, or authority claim.
### A12 — Steady current index separates authority, supersession, and generated display
`evidence/INDEX.json` and the current steady readers identify v3b and display-v2 as current, while older article/display/causal/return artifacts are superseded or diagnostic. The accepted `[0,+Omega,-Omega]` free-slip `Re_D=50` endpoint is bounded; potential cancellation fails by sign (`g_opt=+6.147944` versus descriptive `g=-12.200554`); NS diagnostics are partial and do not establish force ownership, closure, causality, or stability. The figures manifest is CPU-only derived presentation, not evidence.
### A13 — Cross-package source contradictions remain blockers, not omissions
The full read confirms the OID physics contracts unresolved sign disagreement (`[0,-5.1,+5.1]` in archived/source material versus stated CCD `[0,+5.1,-5.1]`) and the separation of Legacy/V5 action semantics. These are not solved by the coverage pass. The accepted steady branch is governed by its current wall-velocity/action contract; historical OID material remains quarantined.
## 5. Conflicts and justified deferrals
1. CCD documentation is complete at the validated suffixed sibling, but canonical alias promotion remains user-pending.
2. OID source/document sign disagreement remains unresolved and must not be called corroboration.
3. SR current Kármán claims and historical Illusion evidence share mixed immutable paths; use semantic claim status, not physical relocation.
4. V5, Legacy SR, CCD, OID, and steady results remain separate evidence chains; no numerical pooling is licensed.
5. Large/external generated artifacts are authority-led deferrals only. This audit did not read raw fields, NPZ/NPY payloads, model bundles, TensorBoard streams, or archive leaf files.
## 6. Completeness verdict
**Document reading completeness: PASS.** All 63 current Markdown documents in the corrected denominator and all 8 selected current authority/index JSON documents were read-full. Archive/old/superseded material was removed from the current denominator and listed as navigation; the two DRL transfer analyses are explicitly archived rather than mapped-only current documents.
**Information completeness: BOUNDED / not yet synthesis-clean.** The full read added A7A13 and confirms that current reader coverage is complete, but canonical CCD alias choice, OID sign conflict, current-vs-historical SR semantics, partial generated manifests, and artifact-level deferrals remain explicit. Full document reading does not imply independent verification or artifact audit.
## 7. Round-2 blocker
Round 2 structure/narrative planning is **not blocked by document coverage**. It is blocked from an unqualified “all current authority is canonicalized and synthesis-ready” label until: (i) the CCD canonical-promotion choice and final writing closeout are resolved, (ii) the OID sign conflict is explicitly quarantined, (iii) the SR active/archive claim matrix is carried forward, and (iv) each manuscript number is paired with its artifact, metric, window, comparator, realization count, and evidence status. Do not reopen CFD, training, raw-artifact audit, archive reading, or literature deep search as a side effect of this coverage pass.
## 8. Audit record
- Working Memory: read first through the Nowledge Mem context bundle; used only for routing and current scope, never as repository evidence.
- Full-read result: **63 Markdown + 8 selected authority/index JSON = 71 files read-full**.
- New findings: **A7A13 (7 addenda)**; two formerly mapped DRL analyses were removed from current denominator.
- Computation: no CFD, CUDA, training, hash recomputation, or immutable-artifact modification.
- Output: this file only; original five dossiers were not modified and no commit was created.
@@ -0,0 +1,111 @@
# JFM Round 1 — Cursor Plans / History Index
> **定位。** 本文件是 Cursor plans 的历史意图、试错和工程演进索引,不是结果报告,也不是 manuscript prose。Plans 记录“当时打算做什么、如何排错、哪些路线被考虑过”;它们不能证明任务执行、数值结果、科学结论或当前状态。当前事实必须回到仓库 authority 文档、可执行代码、测试、manifest 和 immutable artifacts。
## 0. Search and scope record
- **Search root:** `/home/frank14f/.cursor/plans/`;只读检索,没有修改 plans。
- **Search rule:** 递归检查所有 `*.plan.md` 的文件名和内容,关键词为 `DynamisLab|CelerisLab|Legacy|pinball|DRL|SR|CCD|OID|steady|cloak|illusion|vortex|erase`,大小写不敏感;另以 `Legacy/V5/rewrite/refactor/inference/norm/observation/action/reward/unit-test/rejected/superseded` 做主题复核。
- **Actual lexical hits:** **167 plan files**(内容或文件名至少命中一项;不能把 167 解释为 167 个独立研究项目)。一部分是 solver/CUDA 低层计划,仅在影响 solver semantics、readback、body/action mapping 或 provenance 时纳入。
- **Known direct plans:** `dynamislab_karman_re100_rewrite_plan_2d4c4599.plan.md``dynamislab_inference_rewrite_plan_903dcdc8.plan.md``dynamislab_unitest_migration_79f3bf20.plan.md``dynamislab_refactoring_plan_970406f6.plan.md`;另有 `unitest_migration_v3*.plan.md``pinball_unitest_migration_plan_d13ccb17.plan.md` 等家族。
- **Recall:** 已读取 Nowledge Mem context bundle/Working Memory,并作针对 DynamisLab、Legacy/V5、SR、CCD、OID、steady、inference、normalization 的 durable-memory recall。没有匹配的 prior threadMemory 仅用于导航,当前 repository docs 覆盖 Memory。
- **Coverage interpretation:** `hit` = lexical discovery`indexed` = 本文件提炼;`read` = 计划全文已读。167 个命中计划并非全部逐篇全文阅读;工程重复家族和纯 solver 计划采用 mapped/indexed 状态。历史计划的 todo `completed` 仍按 planned-history 处理,绝不自动转成结果。
## 1. Source ledger
### 1.1 Current authority used for comparison
| Current source | Role | Status |
|---|---|---|
| `docs/JFM_WYQ/ROUND1_BOTTOM_UP/README.md` | Round-1 non-prose/evidence-index rules | read |
| `01_DRL_CONTROL_AND_CASES.md` | DRL cases, V5/Legacy contracts and boundaries | read |
| `02_SR_CONTROL_LAWS.md` | Legacy SR pipeline, formula and Illusion negative boundary | read |
| `03_FIELD_CCD_OID.md` | corrected CCD authority, OID reset and cross-map | read |
| `04_STEADY_THEORY_AND_CROSSMAP.md` | steady contract, sign, metric and open NS closure | read |
| `05_INTRODUCTION_LITERATURE_INDEX.md` | narrative vocabulary and prohibited claims | read |
| `src/drl_pinball/WRITING_HANDOFF.md` | current DRL claim boundary | read |
| `src/SR_analysis/HANDOFF.md` | current SR scope and runtime contract | read |
| `src/CCD_analysis/WRITING_HANDOFF.md` | bounded CCD interpretation | read |
| `src/OID_analysis/HANDOFF.md` | claim-free active OID core | read |
| `docs/JFM_WYQ/CELERISLAB_VALIDATION_DOSSIER.md` | solver validation boundary | mapped via dossier |
### 1.2 Plan-family ledger
| Family / representative paths | Historical contribution | Current comparison / status |
|---|---|---|
| Legacy/new API: `dynamislab_karman_re100_rewrite*`, `dynamislab_inference_rewrite*`, `legacy-test-and-reproduce*`, `reproduce_inference_plan*`, `new_cfd_reproduction*` | Proposed frozen Legacy reference plus parallel new `Simulation` inference; A/B validation; inlet/readback repair | Current DRL docs confirm separate chains and contract differences, but not universal parity. `read/indexed`; planned parity is `unverified/superseded`. |
| UniTest/body order: `unitest_migration_v3*`, `pinball_unitest_migration*`, `dynamislab_unitest_migration*`, `action-obs_unified*` | Add-sequence body order, target-vs-experiment separation, scene-specific observation and normalization | Current executable contracts confirm these lessons; `confirmed-by-current-doc` for provenance, not for every planned test. |
| DRL training/evaluation: `karman_cloak_training_pipeline*`, `karman_cloak_multi-seed-training*`, `karman_cloak_new_training*`, `karman_cloak_retraining*`, `eval-*`, `clean_reproduction_reset*` | Training, retained checkpoints, reproduction, benchmark and cleanup routes | `01_DRL...` artifact ledger wins: retained V5 evidence is named-condition, seed-dependent and not post-fix retraining. Planned outcomes are `historical-only`. |
| SR Legacy: `sr_legacy_pipeline*`, `sr_analysis_restructure*`, `可信sr全流程重建*`, `joint_sr_article_flow*`, `sr_final_consolidation*`, `sr标准化采集*`, `sr项目收尾整理*` | Freeze candidates; order/trajectory/G audit; Stage-3 closed-loop arbiter; Target/PPO/SR/Zero standardization | `02_SR...` and SR handoff confirm active Kármán only, steady contextual, Illusion negative. Earlier broad/generalization routes are `superseded`. |
| Illusion/vortex/erase: `illusion-env-and-server-deploy*`, `signature_line_and_illusion_completion*`, `sindy-sr_illusion*`, scene-matrix and vortex plans | Target harmonics, event semantics, erase norms and attempted transfers | Current dossier keeps PPO capability separate; Illusion SR negative; Vortex/Erase excluded from common periodic L2. `historical-only/superseded`. |
| CCD: `ccd_pipeline_*`, `ccd_analysis_round_*`, `ccd_three-part_reset*`, `ccd_corrected_core*`, `ccd_近体/模态/写作*`, `karman_dynamic_increment*`, `minimal-acquisition-upgrade*` | Successive resets from temporal/phase/correction-field routes to exact-time, mean/dynamic and cycle-template descriptive analysis | `03_FIELD...` confirms current bounded rank-3 and CCD/POD subspace result; causal/mechanism/lag claims remain prohibited. Earlier routes `superseded`. |
| OID: `oid_*`, `li22b-replication-oid-deep*` | Reset from sensor/force/action “importance” to claim-free Schlegel LR/LE core | Current OID handoff confirms no active scene result or redo runner. Historical positive route `superseded`. |
| Steady/cloak: `steady-cloak*`, `steady理论*`, `steady结果*`, `accepted-direction_semi-analytic_closure*`, `ns_cloak_mechanism_report*`, `rigorous_steady*`, `稳态pinball解析验证*` | Wrong-sign branch, potential-flow overreach, double subtraction, incomplete CV closure, NS-first/gap-jet hypothesis | `04_STEADY...` confirms accepted `[0,+Omega,-Omega]`, direct `q_in` metric and bounded endpoint; mechanism open. Rejected theory routes `superseded`; plan completion flags are not authority. |
| Governance/solver: `项目总文档收尾*`, `ccd-project-cleanup*`, `pre-release_audit*`, `train_release_cleanup*`, `paraview*`, `karman-flow-field-plots*`, plus `esopull*`, `runtime_body_*`, `forceregion*`, `body_module_*` | Navigation, hashes, no-clobber, renderer, readback, topology and compile-risk history | Mapped only where affecting provenance or physical semantics; otherwise `historical-only` engineering context. |
### 1.3 Coverage ledger
| Population | Status | Reason |
|---|---|---|
| 167 lexical-hit plans | `indexed/mapped`, not all `read` | Broad matching catches generic solver notes and repeated plans; no claim of full-text extraction from each file |
| Direct `dynamislab_*` plus named migration/reset plans | `read` | Most relevant to Legacy→V5, inference, unit tests, refactor and route history |
| SR/CCD/OID/steady package plans | `read` or `mapped` | Representative and late reset/closeout plans establish evolution |
| Pure CUDA/performance/visualization plans | `mapped` | Deep reading deferred unless contract/provenance consequence was visible |
| External artifacts referenced by plans | `external-inaccessible` / deferred | Plans cannot replace manifests or mounted payloads |
## 2. Timeline and themes
1. **Legacy scene expansion:** original `FlowField`/LegacyCelerisLab plans cover steady, Kármán cloak, Illusion, vortex, Erase and reduced-observation routes. Current dossiers separate periodic, transient, steady and target-illusion contracts.
2. **Inference before retraining:** rewrite plans prioritize a new inference/evaluation layer, precomputed target/norm metadata, checkpoints, scene registry, fields and old-vs-new comparison. This explains current provenance discipline; it does not prove planned parity or new results.
3. **Why Legacy→V5 was a rewrite:** the plans identify scientifically consequential differences: cumulative-versus-time-averaged readback, separate body/sensor APIs, add-order IDs, action slots, action smoothing, inlet/BC settings, grid and normalization. Current DRL authority confirms V5 is a deliberate new 2000×600/native-v2/VecNormalize chain, not a numerically identical continuation.
4. **Unit-test/refactor background:** migration plans aim to port the multi-scenario notebook into reusable helpers/runners and test old/new side by side. Refactor motivation includes cache identity, no-clobber output, exact scene contracts and avoiding duplicated scripts. These are relevant only where they protect observation/action/reward/solver provenance.
5. **SR closeout:** broad candidate, joint, Illusion and generalization plans narrow to Legacy Kármán; Stage 3 closed-loop CFD becomes the arbiter; standardized Target/PPO/SR/Zero roles preserve failure telemetry. Current SR docs confirm this scope.
6. **CCD correction:** repeated plans withdraw older temporal/phase and causal-looking routes in favor of exact clocks, common masks, mean-field decomposition and cycle-template residuals. Current CCD supports descriptive rank-3/subspace claims only.
7. **OID reset:** the sensor/force/action importance route is explicitly invalidated by self-observation, feedback confounding, failed force gates, wrong method naming and incomplete provenance; active OID is now a claim-free CPU core.
8. **Steady reset:** wrong sign, potential-flow/circulation overreach, double-subtraction and incomplete NS ledgers forced an NS-first boundary. Current accepted branch and metric are bounded; gap/base-bleed is a candidate, not established mechanism.
9. **Evidence governance:** late plans increasingly emphasize hashes, immutable archives, exact clocks, role manifests and fail-closed gates. This is durable workflow history, not proof that every planned gate ran.
## 3. Current relevance matrix
| Plan-derived lesson | Current label | Current evidence boundary |
|---|---|---|
| Body add order controls IDs and policy channels | `confirmed-by-current-doc` | Relevant to observation/action provenance; executable code wins |
| Legacy fixed `norm.json` must not be replaced by fresh norms; V5 calibration/VecNormalize is different | `confirmed-by-current-doc` | Relevant to normalization and comparison semantics |
| Legacy readback accumulation/division and new read methods differ | `confirmed-by-current-doc` | Relevant inference/unit-test background; exact implementation remains code authority |
| V5 is intentionally a different solver/configuration chain | `confirmed-by-current-doc` | Safe bounded explanation of rewrite; no claim of equivalence |
| Planned bitwise-equivalent new/old rollouts | `unverified` | No universal parity artifact found in current dossier; do not state as result |
| Legacy and V5 should be pooled in one metric matrix | `superseded` | Prohibited without explicit parity contract |
| Illusion SR target tracking/generalization/efficacy | `superseded` | Long-window result is historical/negative and near physical zero |
| OID importance/mechanism/active action result | `superseded` | Active package is claim-free method core |
| Old CCD temporal lag or causal mechanism | `superseded` | Corrected CCD is descriptive; lag is not physical delay |
| Potential cancellation as accepted finite-Re mechanism | `superseded` | Sign conflict and incomplete viscous closure remain explicit |
| Completed todo = completed science | `historical-only` | Plans are not result authority |
| Missing parity artifacts, external role trees, leaf hashes, post-fix retraining | `potentially-relevant-gap` | Provenance/evidence boundary addenda; not numerical claims |
## 4. Rejected / superseded lessons
- The broad “all scenes / all metrics / all pipelines” narrative was narrowed. Active positive SR is Legacy Kármán/cloaking only; steady is contextual; corrected CCD is descriptive; OID is claim-free; Illusion SR is negative/historical.
- Potential-flow resemblance, circulation cancellation, attractive plots and incomplete energy/momentum ledgers cannot establish the accepted finite-Re mechanism. Gap-jet/base-bleed remains a hypothesis pending matched intervention, wall-resolved diagnostics and complete NS budgets.
- Archived OID high-R² or sensor/force comparisons do not establish importance, controllability, causal action effect or mechanism.
- A generic Legacy/V5 inference pipeline was rejected in favor of chain-specific contracts. Recomputing norms, changing action sign, changing body order, or mixing requested/effective action changes the experiment.
- DRL reward, SR DTW, CCD singular strength, OID reconstruction and steady `E_inf_vector` are distinct estimands; they cannot be ranked or pooled.
- “Unit tests pass” and a plan todo marked `completed` are implementation/process evidence at most, never physical validity or mechanism evidence.
## 5. Potential addenda to Round 1
1. Add a short provenance-history paragraph: Legacy remained an immutable reference because API migration changed readback, body/action mapping, normalization and smoothing; V5 was a deliberate new chain.
2. Add a supplement-level contract table: solver → scene → observation order → action scale/bias/smoothing → norm/calibration → reward/DTW → field comparator, with Legacy and V5 separate.
3. Add a negative-route paragraph explaining why Illusion SR, OID importance and early CCD/steady mechanism routes were closed; do not turn this into positive evidence.
4. Add a provenance gap note for exact parity artifacts, external role trees, complete leaf hashes and post-fix retraining status.
5. Add a physics-gap note: recurring rear-rotation and a smaller dynamic residual are bounded observations; action→near-body→wake→signature remains candidate logic.
6. Treat plan dates/todo states as decision chronology only; use authority artifacts for experiment dates and completion.
## 6. Explicit non-authority warning
Cursor plans are **historical process records only**. A plans `completed`, `in_progress`, or `pending` field is not a result status. Planned thresholds, commands, approval gates, “bitwise-equivalent,” “JFM-ready,” “mechanism completion,” or “final” wording must not be quoted as facts without current authority and artifact provenance. Archive/obsolete plans are navigation/history, not current instructions. Memory aids recall but never outranks current docs, code, manifests or immutable artifacts. Legacy/V5, periodic/transient/steady and target/zero/controlled roles remain separate unless an explicit new parity contract proves comparability.
## 7. Minimal handoff
- **Plans hit:** 167 lexical matches under the stated keyword search.
- **Narrative/evidence impact:** no new positive scientific claim or scope expansion is authorized. The history does sharpen the paper boundary: explain Legacy→V5 as a provenance- and contract-driven rewrite, keep chains separate, and preserve unresolved parity/hash/retraining gaps.
- **Mutation scope:** only this file was written; plans and other repository files were not modified; no commit was created.
@@ -0,0 +1,243 @@
# JFM Round 1 — Experimental + Case-Specific Metric Addendum
> **用途**:证据/指标 addendum,不是 manuscript prose。只读审计仓库与 Undermind 现有材料;未启动 CFD、未修改代码或 Undermind workspace。
>
> **证据标签**`[AUTHOR]` 作者陈述/记忆;`[REPO]` 仓库 authority、schema 或代码;`[UM-REPORT]` Undermind 已有报告;`[LIT]` 外部文献背景;`[OPEN]` 未闭合问题。
>
> **状态标签**`implemented``existing-data-computable``requires-new-offline-code``requires-new-acquisition``unsupported``mapped` 不等于 `read``read` 不等于 `independently verified`,均不等于 `artifact-audited`
## 1. Scope and evidence boundary
本 addendum 的问题不是证明实验已验证 CFD,而是:在作者给定的实验事实和现有 CFD/analysis artifacts 下,哪些 case-specific comparison 可以诚实地计算、怎样命名、需要什么新增数据,以及哪些只能作为未来实验方向。
### 1.1 实验事实:作者来源,与文献背景分开
以下仅作为 `[AUTHOR]`,不由文献建立,也不宣称已有独立 artifact 验证:
- 系统由 Frank 从零搭建;在循环水洞中截取试验段作为静水段。
- 直线导轨和齿条驱动天车式运动平台;平台搭载力传感器、ADC、树莓派、电机驱动、圆柱结构和电源。
- Python 软硬件层使 DynamisLab 策略易于部署。
- 目标速度和水动力很小;背景热对流显著,且有效力反馈难以测量。
- 实际只完成开环 steady cloak 与 illusion demonstration;可见证据是染色液迹线。steady 液迹线较直;illusion 可见脱涡频率变化。
- 没有完整同步 PIV/force validation package。因此实验只能定位为 **bounded feasibility / future direction**,不能写成定量验证、闭环实验控制、力学机制确认或 field restoration。
### 1.2 实验系统/状态来源分级
| 来源 | 当前可写成什么 | 不可写成什么 | 状态 |
|---|---|---|---|
| 作者陈述:水洞静水段、运动平台、传感器/ADC/Raspberry Pi/电机驱动/Python | apparatus design、deployment feasibility、engineering motivation | 已验证精度、同步误差、传感器不确定度 | `[AUTHOR]`; no visible artifact audit |
| 作者陈述:低速、小力、热对流、force feedback 困难 | bounded limitation and reason for open-loop scope | 精确背景速度、力噪声、SNR、因果归因 | `[AUTHOR]`; no synchronized package |
| 染色液迹线(steady/illusion | qualitative visualizationsteady 较直、illusion shedding frequency visibly changed | quantitative velocity/vorticity/force reduction、完整 field match、causal mechanism | `[AUTHOR]`/reader description; raw synchronized artifact not located |
| 水洞/油洞 literature | facility plausibility、design trade-offs、measurement cautions | present apparatus 的内部结果或 dominant mechanism | `[LIT]`/`[UM-REPORT]` |
| CFD evaluator/reproduction artifacts | named CFD case 的 signal/field comparison | physical experiment validation or transfer to apparatus | `[REPO]`; Legacy/V5 must remain separate |
| Confirmation report navigation | historical/current material locatorsteady sensor-plane figure candidate | automatically current, independently verified experimental authority | `[UM-REPORT]` navigation only; local source package not found |
**写作边界**:实验段最多承担“平台可部署、定性现象可观察、低速实验仍受热背景与小力限制”的可行性/展望角色;定量主张来自明确的 CFD/analysis artifact,而不是染料图像或作者记忆。
## 2. Sources inspected and coverage ledger
### 2.1 Nowledge Mem
- `read_context_bundle`:已读取 Working Memory。当前相关边界包括:active positive scope 受限于 Kármán/cloakingIllusion SR 为 historical/negativesteady 为 contextualLegacy 与 V5 不得合并;DTW 不能解释为 physical delay/causality。
- `memory_search`:定向检索 `experiment / water tunnel / oil tunnel / towing / DTW / L2 / Confirmation / JFM sensor evaluation`,命中作者实验状态、实验限制和 case-specific metric guidance 的 durable memory。
- `thread_search`:同主题未返回匹配 thread;因此 Mem 用于路线/边界回忆,不作为外部科学证据。
- 未保存新的 memory:本文件是当前指定 addendum,不引入新的长期决策;作者事实按 `[AUTHOR]` 保存于本文件而非升级为文献事实。
### 2.2 Undermind 实际覆盖
| workspace/material | 覆盖内容 | 层级/状态 |
|---|---|---|
| [Oil-tunnel workspace](https://app.undermind.ai/projects/add6f965-60ca-446e-becd-26e7892263b4) | `Residual motion in nominally still water``Low Re pinball experiment design` | 两份 report 全文读取;`[UM-REPORT]`,其引用论文为 report-indexed,未在本 addendum 声称逐篇 full-PDF audit |
| [DynamisLab workspace](https://app.undermind.ai/projects/4383d145-2c80-4991-8a9c-7ac2dd683438) | root tree、`Confirmation_report/``JFM/``JFM References/`、相关现有 reports/deep-search 状态 | folders/files mappedConfirmation/JFM navigation inspected;不把导航当内部结果 |
| Confirmation | `Conf_1_Intro``Conf_5_Conclusion` 的可见导航/文件条目,尤其 Description/Method/Result/Conclusion | mapped/read at report-navigation level;未发现可直接作为 current local authority 的 `.tex/.bib` 或 synchronized experiment bundle |
| Existing JFM material | `Minimal wake-field L2 evaluation protocol``Wake-field L2 evaluation and downstream sensor rationale``Wake to force`、CCD/OID/analytical reports | existing Undermind reports indexed/read where relevantbackground/evaluation rationale,不覆盖内部 artifact |
| Existing deep searches | 14 searches in DynamisLab tree | status/list only;没有新 deep search;未修改 workspace |
**Not covered / external-inaccessible**Oil-tunnel 中未见 raw PIV、force time series、calibration files 或 current experiment reportConfirmation 的本地原始同步数据、图源 schema 和 sensor-plane export 未在可见仓库/Undermind navigation 中定位。它们应标为 `requires-new-acquisition` 或 authority-led deferral,不得由文献或图片推断数值。这里不包括已读完整的 `WAKE_L2_AND_SENSOR_PLACEMENT_RESEARCH_NOTES.md`;该 note 已纳入 read-full coverage。
### 2.3 Repository documents/code mapped or read
| package | inspected authority/navigation | status |
|---|---|---|
| `src/drl_pinball/DATA_DICTIONARY.md`, `legacy_test/README.md` | role semantics, phase/event/late schemas, acquisition windows, native/normalized DTW | read |
| `src/drl_pinball/eval/README.md`, `eval/wake_l2.py`, `eval/tests/test_wake_l2.py` | V5 evaluator bundle, `drl-pinball-wake-l2-v2`, ROI RMS L2, complete-cycle mean, phase8, frequency diagnostics | read; code contract inspected, not rerun |
| `src/drl_pinball/RESULTS.md`, `CLAIMS.md`, `WRITING_HANDOFF.md` | result families, evidence states, V5/Legacy boundaries and non-claims | read |
| `src/SR_analysis/README.md`, `HANDOFF.md` | active Kármán SR, steady contextual, Illusion negative/historical, DTW limits | read |
| `src/CCD_analysis/README.md`, `CLAIMS.md`, `FIGURES_AND_DATA.md` | current descriptive field/mode artifacts and mask/phase semantics | read |
| `src/steady_pinball_theory/README.md`, `RESULTS.md`, `metrics.py` | steady endpoint/profile/L2 utilities, partial ledger and force/torque limits | read |
| `docs/JFM_WYQ/ROUND1_BOTTOM_UP/0105_*.md` | Round-1 DRL/SR/field/steady/introduction dossiers | mapped; 05 read; other dossier claims used only through their current handoff/authority references |
| `docs/JFM_WYQ/WAKE_L2_AND_SENSOR_PLACEMENT_RESEARCH_NOTES.md` | wake-field L2, registered ROI, phase treatment, downstream sensor geometry, literature rationale and claim boundaries | **read-full** (595 lines); implementation authority cross-checked against `src/drl_pinball/eval/wake_l2.py` and acquisition/schema docs |
## 3. Oil-tunnel literature index and reading levels
### 3.1 Primary index from existing Oil-tunnel report
The report `Low Re pinball experiment design` recommends a covered recirculating channel with mineral oil, dye visualization and time-resolved PIV as a low-Re facility direction. Its relevance is design background, not evidence that DynamisLab has such an oil tunnel. The report explicitly contrasts water/towing limitations with higher-viscosity oil operation. The present author-described facility is instead a recirculating **water** tunnel with an isolated still-water test section; the oil report is therefore a future-design comparator, not a description of the completed apparatus.
The report `Residual motion in nominally still water` argues that nominally still water can retain organized motion from thermal boundaries, free-surface cooling and residual towing. It is directly relevant to the authors low-speed force/velocity limitation, but it remains a literature synthesis rather than an independently measured DynamisLab background-flow dataset.
| report-indexed cite key | topic used here | reading level in this addendum |
|---|---|---|
| `Ana76` | background motion in temperature-controlled towing tank; dye-line measurement and thermal mitigation | full-report synthesis; paper identity/DOI must be resolved before formal manuscript citation |
| `Kam72`, `Jen21` | post-towing residual current, settling, sloshing and facility uncertainty | full-report synthesis; background only |
| `Spa61`, `Vol99` | free-surface evaporation/cooling and plume motion without discrete heater | full-report synthesis; mechanism plausibility only |
| `Wan05`, `Mul04`, `Cau16` | weak differential heating, wall plumes and mm/s-scale structured circulation | full-report synthesis; not present-tank quantification |
| `Gad83`, `Leo99`, `Zep64`, `Nor04`, `Huu14`, `Son11` | passive wall conduction, mixed materials, stratification, surface effects | report-indexed/secondary support; formal identity audit pending |
| `Mun07`, `Han04`, `Cha11`, `Ban17`, `Pau13`, `Den18b` | oil/low-Re tunnel design, pinball/rotating-cylinder measurement and wake context | report-indexed design background; not internal experiment evidence |
### 3.2a Read-full wake-field/sensor rationale note
The repository note `docs/JFM_WYQ/WAKE_L2_AND_SENSOR_PLACEMENT_RESEARCH_NOTES.md` was **read in full** and is the implementation/rationale authority for the following addendum points (not copied wholesale here):
- Sensor DTW and full-field L2 answer different questions: six downstream velocity channels are a compact signature/training diagnostic, while spatial velocity-field L2 is the independent field check. Low DTW must not be presented as global field equivalence.
- The registered ROI is `-6 <= (x-x_s)/D <= 14`, `|(y-y_0)/D| <= 5`, a `20D x 10D` fixed rectangle. It is geometry-guarded, not solver-mask-proven, because exact solver masks were not persisted; zero velocity is never a solid-mask proxy. The older `[-8D,12D]` proposal is superseded.
- The three-probe layout is one plane at `x/D ~= 10`, transverse positions `y/D = +2, 0, -2`, radius `0.25D`, returning both components (six channels). Centre `u_y` is phase-sensitive; upper/lower pairs provide transverse coverage and symmetric/antisymmetric combinations; `u_x` tracks deficit/recovery. This is physically motivated signature monitoring, not optimal placement or guaranteed observability.
- Direct pinball precedent at `x/D=10` supports reasonableness, while closer multi-plane sensing studies support the delay/coverage trade-off. The relevant indexed identities are `Rai20`, `Mac20`, `Li22b`, `Mar24b`, `Jin21`, `Gon19`, `Nai20b`, `Ish17`, and `Par20`; exact bibliography resolution remains required before manuscript citation.
### 3.2 Reading hierarchy for eventual manuscript use
1. **Tier A — full-PDF + exact metadata/DOI required before citation**: closest facility papers (`Ana76`, `Kam72`, `Mun07`, `Cha11`) and any paper used for a quantitative apparatus claim.
2. **Tier B — full-report extraction acceptable for Round-1 index, not yet final bibliography**: thermal/free-surface mechanism papers (`Spa61`, `Vol99`, `Wan05`, `Mul04`, `Cau16`, `Gad83`, `Leo99`).
3. **Tier C — abstract/snippet or design context only**: broad low-Re facility and application references; use only to motivate measurement choices, not numerical values.
4. **Internal evidence**: author facts, Confirmation figures, raw experiment files, calibration and synchronization metadata. These must be separately audited and never replaced by literature.
No DOI or exact bibliographic identity is invented here. Before manuscript prose, resolve the report cite keys through Undermind `get_paper_info(show_doi=true)` or the formal bibliography and upgrade only the references actually used.
## 4. Metric contracts and case matrix
### 4.1 Common notation
- `L2*`: normalized spatial velocity error on a declared common fluid ROI/mask, using the same `U0`, coordinates, grid/weights and comparator; state whether it is RMS (`wake_l2.py`) or area-integral (`steady_pinball_theory.metrics.quadrature_l2`).
- `DTW_native`: existing objective/reward-compatible signal metric; preserve its original normalization and window.
- `DTW_norm`: current/new normalized sensor-cycle DTW, after explicit channel normalization; similarity only, never physical delay or causality.
- `force`: only force sensor/force-history data with calibration, units, clock, sign and body ordering; no force claim from reward or dye.
- `profile`: a declared downstream sensor-plane or station profile, including relative velocity deficit convention, y coordinates, mask and `U_inf`.
- `phase/event`: periodic phase is a phase coordinate derived from declared crossings; event fields use relative offsets and must not be relabeled as phase slots.
### 4.2 Scene matrix
| scene / comparator | DTW | L2 / profile | force | phase/event semantics | status now |
|---|---|---|---|---|---|
| **Periodic Kármán / Illusion**: target vs controlled, plus physical zero where valid | `DTW_native` exists in role contract; `DTW_norm` exists in standardized acquisition path or is existing-data-computable when retained sensors/target channels are present | `E_mean`: complete-cycle mean field; `E_phase8`: eight independently phase-referenced nearest snapshots; compare separately. Use current `drl-pinball-wake-l2-v2`, not one pooled score | CFD force channels may be in timeseries, but force is not automatically an experimental force validation; report only with explicit role/schema and calibration | eight canonical phases `[0, π/4, …, 7π/4]`; crossings independently selected for target/controlled/zero. `phase_fields.npz` is eight fields; no repeated-crossing ensemble. | `implemented` for retained periodic CFD roles where artifacts pass schema; `existing-data-computable` for any complete retained role not yet summarized |
| **Vortex candidate**: acquired transient downstream ROI | current DTW on retained sensor timeseries; normalized DTW may be computed if target/reference channels and window exist | candidate: per-snapshot downstream-ROI L2 at several acquired event offsets; do not average event snapshots into phase8. Current event schema supports five `event_fields.npz` snapshots with `relative_offsets`; formula/application still needs an offline evaluator wrapper | unavailable unless force history is present and calibrated; no force from velocity alone | `event_fields.npz` uses relative offsets/event labels, not periodic phase. “midpoint” must identify the acquisition event and offset, not imply phase-locking. | `existing-data-computable` for field L2 if event artifacts and target/zero comparator exist; `requires-new-offline-code` for a dedicated summary/DTW bridge; `requires-new-acquisition` if candidate events/target are absent |
| **Erase candidate**: mean-field target/error against zero or declared baseline | current DTW if role sensor streams exist; use same window/comparator and normalized/native labels | mean-field L2 is the defensible candidate; use complete-cycle mean only if periodic role exists, otherwise a declared late/mean artifact. Do not use Vortex event L2 semantics | no force claim without calibrated force history | no phase metric unless the erase artifact is genuinely periodic and complete-cycle metadata exists; otherwise mean/late-field semantics | `existing-data-computable` for mean-field L2 when `mean_ux/mean_uy` exists; `requires-new-offline-code` for erase-specific comparator/report; `unsupported` for absent exact erase target/role (legacy README says erase unsupported) |
| **Steady cloak**: controlled/constant vs uniform inflow or declared baseline | DTW is optional and only meaningful if a steady sensor time series has a defined window; do not fabricate periodic DTW | sensor-plane relative velocity-deficit profile is the primary experimental-compatible candidate; CFD spatial L2 is existing-data-computable where common fields/mask exist. `profile_errors` and `profile_station_errors` provide E∞/L2 profile primitives; `quadrature_l2` provides explicit spatial L2 | current steady artifacts establish torque telemetry work sign, not force ownership; force sensor metric requires new calibrated acquisition | steady is nonperiodic: late snapshot/profile, not phase8 or event metric | profile figure exists in Confirmation navigation but source schema/array is not located: `requires-new-acquisition` or authority deferral for experiment; CFD profile/L2 `existing-data-computable` |
| **Open-loop dye-only experiment** | unsupported from dye images alone; no signal extraction contract | unsupported quantitatively from dye alone; image-derived L2 needs calibrated PIV/segmentation and registration | unsupported without synchronized calibrated force | qualitative streakline/shedding observation only | `unsupported` for quantitative metric; `implemented` only as bounded qualitative figure/observation if raw images are archived |
### 4.3a Registered geometry, normalization and sensor rationale
For current evaluator geometry, `x_s` and conservative downstream solid extents are V5 Kármán `(1200,1036)`, V5 Illusion `(600,440)`, Legacy Kármán `(800,636)`, and Legacy Illusion `(600,440)`. These are implementation coordinates, not universal physical constants. The fixed rectangle is pre-registered and avoids outcome-dependent wake masks.
The current wake metric is `U0`-normalized area-RMS plus baseline-relative `eta = 1 - E_ctl/E_zero`; target-norm normalization can be misleading because a large ROI contains substantial uniform background flow. Report both absolute error and `eta`, with the ROI, comparator, window and mask status. The canonical result note records 23 rows (15 V5 controlled runs across 11 cases, 7 Legacy periodic cases, 1 Legacy steady case); its result-level observation is that mean-field improvement and phase-resolved improvement can disagree, notably for V5 `kar_re400`, seed 43. Treat those as bounded artifact observations and read the canonical summary directly before quoting numbers.
If a project-specific sensor-placement check is later requested, it can be done without retraining or new CFD by an offline virtual-plane sweep at `x/D = 8,9,10,11,12`, checking dominant-band signal/SNR, centre-versus outer-pair phase coherence, phase slips, DTW ranking stability and sensitivity of phase fields/`E_phase8`. Existing-signal checks can compare centre-only, outer-pair-only and all-six-channel DTW, but cannot independently establish streamwise optimality.
### 4.3 Why metrics are not shared
- `E_mean` is a complete-cycle arithmetic mean, not the mean of eight phase snapshots.
- `E_phase8` is a discrete phase-resolved diagnostic from independently phased nearest snapshots, not a repeated-crossing phase-conditioned estimator.
- Vortex event snapshots are transient relative-to-event data; they cannot be renamed as phase8.
- Erase mean-field error and steady profile error answer different estimands.
- Native DTW and normalized DTW have different scales and purposes. DTW alignment is not a force response time, mechanism, or causality test.
- L2 must state its common ROI/mask, normalization, comparator and whether it is RMS or quadrature integral. Do not silently compare V5, Legacy, experiment and steady-theory values.
## 5. Existing code and data paths
### 5.1 Current offline CFD paths
- `src/drl_pinball/eval/wake_l2.py`: schema `drl-pinball-wake-l2-v2`; exact `phase_fields.npz` / `late_field.npz` key checks; normalized ROI velocity RMS; complete-cycle `E_mean`; phase8 slots; crossing/frequency diagnostics; no CFD/GPU import. The notes current data authority is `src/drl_pinball/data/reproduction/wake_l2_summary.json`; verify/read values from that artifact rather than copying prose summaries.
- `src/drl_pinball/DATA_DICTIONARY.md`: `data/reproduction/{v5,legacy}/<case>/<role>/`; `phase_fields.npz`, `event_fields.npz`, `late_field.npz`, `timeseries.csv`, `metadata.json`.
- `src/drl_pinball/legacy_test/acquire.py`: standardized role acquisition and phase/event artifact semantics; 480 warm-up + 160 retained boundaries for standard periodic roles; no-clobber/fail-closed publication.
- `src/drl_pinball/legacy_test/README.md`: target/controlled/zero/SR role meanings; normalized six-sensor cycle DTW; Legacy `erase` explicitly unsupported.
- `src/steady_pinball_theory/metrics.py`: `profile_errors`, `profile_station_errors`, `quadrature_l2`, common-mask field norms and partial station/ledger utilities. These are not evidence of experimental sensor data.
- `src/CCD_analysis/data/karman-dynamic/canonical/` and its external authority parent: current descriptive CCD publication; field arrays and mask are useful reader artifacts, not a force/PIV experiment package.
### 5.2 Schema audit summary
| requested quantity | artifact/schema support | required action |
|---|---|---|
| current/new normalized DTW | role `timeseries` and standardized acquisition semantics support it | use existing output where present; otherwise small offline adapter, no CFD |
| periodic complete-cycle mean + phase8 | `phase_fields.npz` exact schema and `wake_l2.py` | implemented for retained compatible roles |
| Vortex event-midpoint L2 | `event_fields.npz` is represented in dictionary/acquisition semantics, but current `wake_l2.py` does not evaluate it | new offline code only; no CFD if artifacts exist |
| Erase mean-field L2 | mean fields supported for periodic artifacts; exact legacy erase target is not supported | existing data only for a valid role; otherwise new acquisition/unsupported |
| steady profile + L2 | code primitives exist; experimental sensor-plane source not located | CFD existing-data-computable; experiment requires source export/new acquisition |
| experimental force metric | no synchronized calibrated experimental force bundle located | new acquisition; otherwise unsupported |
| shared phase metric | deliberately not supported as a scientific contract | keep case-specific semantics |
## 6. Gaps, deferrals and negative results
### 6.1 Missing internal experiment package
No visible package was found containing: raw PIV velocity fields; force-sensor calibration and tare; ADC sample clocks; Raspberry Pi/motor encoder clock; synchronization markers; trial IDs and repeat count; geometry/scale calibration; background-flow blank runs; temperature/thermistor channels; or raw dye image manifest. Without these, do not report experimental `L2`, `DTW`, force coefficient, phase error, shedding frequency in physical units, uncertainty, or efficacy percentage.
### 6.2 Confirmation material
Underminds Confirmation navigation exposes Intro/Description/Method/Result/Conclusion and a steady sensor-plane figure candidate. The source array/schema, figure-generation script and provenance were not visible in the inspected repository/Undermind navigation. Treat the figure as a candidate reader view or authority-led deferral until its source is linked. Do not digitize a plotted image to create a false metric.
### 6.3 Literature and facility gaps
- Resolve all Oil-tunnel report cite keys to exact identity/DOI before formal manuscript bibliography.
- If the experiment is retained, document water-tunnel background blank, settling/wait time, thermal monitoring, carriage speed trace, force calibration and synchronization.
- Oil-tunnel materials are design precedent/future direction, not evidence that the present system used oil or achieved PIV validation.
- No new deep search is authorized in this addendum; unresolved literature questions remain Round-2 work.
## 7. Candidate uses in manuscript and supplement
| material | main text candidate | supplementary candidate | do not use |
|---|---|---|---|
| apparatus sketch + short build description | one bounded paragraph or compact methods inset: platform assembled and policy deployment feasible | component diagram, wiring/data-flow schematic, calibration checklist | precision, closed-loop claim, force-feedback success |
| dye steady/illusion panels | one qualitative feasibility panel only if raw image provenance is available | full image sequence, timing/condition caption, negative/limitation note | quantitative wake/force/field restoration |
| water-background explanation | one sentence explaining low-speed experimental limitation, citing resolved literature | facility note with thermal/residual-motion rationale and proposed controls | claim that present motion is proven thermal or that waiting removes it |
| CFD case metrics | main text only for current bounded Kármán/cloaking claims with exact case/window/comparator | complete case matrix, normalized DTW, phase8/event definitions, per-seed rows | pooled V5/Legacy or DTW-as-delay |
| steady sensor-plane profile | main text only if source artifact, calibration and baseline are linked | full profile data/metadata and L2 derivation | digitized Confirmation pixels without authority |
| force metric | main text only after synchronized calibrated acquisition | raw force/ADC/encoder package and calibration uncertainty | reward as force, uncalibrated ADC, or force inferred from dye |
## 8. Figure/data needs
### Minimum to keep experiment in Round-1 supplement
1. Apparatus schematic: test-section isolation, rail/rack, carriage, sensor/ADC/Raspberry Pi, motor drive and cylinder geometry.
2. Conditions table: fluid, cylinder `D`, spacing, nominal speed, estimated/actual `Re_D`, carriage trajectory, trial ID and rest time.
3. Raw dye images/video with frame rate, spatial scale, camera view, dye injection timing and blank/background run.
4. Explicit caption: open-loop qualitative demonstration; no synchronized PIV/force validation.
### Minimum for quantitative experimental metric
- PIV: calibrated `(x,y,t)` velocity arrays, common-fluid mask, `U_inf`, registration and missing-data policy; then profile/L2 can be computed offline.
- Sensors: channel names/order, units, calibration/tare, sample rate, anti-aliasing, timestamps and synchronization marker; then normalized DTW can be recomputed offline.
- Force: calibrated body-resolved `F_x,F_y` (and torque only if independently measured), zero/drift records, sign convention, span/normalization and synchronized video/PIV; only then define force L2/DTW or force-vs-baseline metrics.
- Thermal/background: blank-run velocity or dye displacement, temperature probes near surface/walls/bottom, pump/carriage state and settling interval; use to bound—not automatically subtract—the background.
- Repeats: independent trials and declared acceptance/failure rules. One dye sequence is descriptive, not uncertainty evidence.
### Figure candidates by status
| figure/data item | status | source/next step |
|---|---|---|
| apparatus diagram | requires-new-offline-drawing from author dimensions, or author artifact | no CFD |
| dye steady and illusion panels | existing qualitative candidate if raw media exists; otherwise requires-new-acquisition | preserve as bounded observation |
| Confirmation steady sensor-plane profile | existing figure candidate, source not audited | locate source array/manifest before use |
| CFD mean/phase8 L2 panel | implemented/existing-data-computable for compatible roles | derive reader plot from immutable outputs |
| Vortex event L2 panel | requires-new-offline-code if event NPZ exists | retain event labels/offsets |
| Erase mean L2 panel | existing-data-computable only for supported role/target | legacy erase remains unsupported |
| normalized/current DTW panel | existing-data-computable or small offline adapter | label native vs normalized and window |
| synchronized force/PIV panel | requires-new-acquisition | do not imply current availability |
## 9. No-new-CFD completion list
The following evaluation work can be completed without new CFD **provided the named artifacts already exist and pass their metadata/schema contracts**:
- Recompute or tabulate current/normalized sensor DTW from retained timeseries and target channels.
- Recompute periodic Kármán/Illusion complete-cycle mean-field `L2*` and existing `E_phase8` from `phase_fields.npz`, using current `wake_l2.py` semantics.
- Produce per-event Vortex downstream-ROI L2 from existing `event_fields.npz` after writing a small offline adapter; this is not a new acquisition if target/control/zero event comparators exist.
- Produce Erase mean-field L2 for a genuinely supported mean-field role; do not revive the explicitly unsupported Legacy erase route.
- Produce steady CFD sensor-plane/profile errors and spatial L2 from existing resolved arrays and masks using `steady_pinball_theory.metrics`.
- Replot or audit current CCD field/mask reader artifacts descriptively; this does not produce experimental validation.
The following cannot be completed from current visible evidence without new experimental acquisition or an authoritative source export: experimental PIV L2, experimental normalized DTW if synchronized sensor streams are absent, calibrated force metrics, uncertainty/repeatability, and quantitative dye-image velocity/field error. None of these requires new CFD by itself; they require experimental data and offline processing/validation.
## 10. Round-1 handoff
- **Safe experimental sentence**: the apparatus demonstrates policy deployment and qualitative open-loop wake modification under difficult low-speed conditions; quantitative synchronized force/PIV validation remains future work.
- **Safe metric sentence**: field and sensor comparisons should be reported with case-specific normalized L2/DTW contracts; periodic phase8, transient event snapshots, mean-field erase, and steady profiles are distinct estimands.
- **Do not write**: “experimentally validated cloak/illusion”, “force feedback achieved”, “PIV confirms the CFD”, “DTW gives physical delay”, “one metric covers all scenes”, or “thermal convection is proven as the sole cause”.
- **Next authority needed**: link the local/source Confirmation sensor-plane arrays and use the already read-full `docs/JFM_WYQ/WAKE_L2_AND_SENSOR_PLACEMENT_RESEARCH_NOTES.md` authority together with the source-linked Confirmation sensor-plane arrays; resolve Oil-tunnel cite keys before manuscript prose.
+18
View File
@@ -0,0 +1,18 @@
# ROUND1_BOTTOM_UP
这是 JFM 工作流第一轮的非文章式证据索引,不是 manuscript prose,也不预填科学结论。目标是建立全面、可追溯、便于后续 agent 快速读取的索引与 evidence dossiers。
## 预定文件
- `01_DRL_CONTROL_AND_CASES.md`
- `02_SR_CONTROL_LAWS.md`
- `03_FIELD_CCD_OID.md`
- `04_STEADY_THEORY_AND_CROSSMAP.md`
- `05_INTRODUCTION_LITERATURE_INDEX.md`
## 证据与协作约束
- 所有数字都必须回到对应的 authority、code、manifest 或 artifact。
- Legacy 与 V5 必须分链记录,不得静默合并证据链。
- 每项记录应保留来源、边界、冲突/缺口及必要的 case/seed、metric、comparator 和 evaluation window。
- 最终由顶层 agent 跨文件综合;本轮文件只负责索引证据,不提前冻结叙事。