Narrow active SR claims to Karman cloaking, preserve Illusion as an indexed historical route, and add readable provenance catalogs and acquisition documentation.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extend the canonical Legacy collector to deploy hash-bound symbolic policies across training, generalization, and ablation scenarios with reproducible execution provenance.
Co-authored-by: Cursor <cursoragent@cursor.com>
Retire duplicate reproduction paths in favor of the canonical V5 and Legacy runners, while preserving historical tooling in archives and publishing audited summary plots.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add deterministic phase-filtered V5 and Legacy acquisition with complete-cycle mean fields, then evaluate controlled wakes against target and zero baselines offline.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace the legacy CCD workspace with acquisition, direct-dq, original and lagged CCD contracts so the DRL-versus-constant-mean mechanism is reproducible and fail-closed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Archive excluded experiments and superseded outputs so the active tree exposes only the auditable Kármán and Illusion workflow while preserving scientific provenance.
Co-authored-by: Cursor <cursoragent@cursor.com>
Publish the unified scratch-training contract, compact best-policy bundles, calibrated targets, tests, and presentation-ready retained evidence while excluding archived and intermediate run payloads.
Co-authored-by: Cursor <cursoragent@cursor.com>
Freeze the source-derived action contract and direct q-in objective so the new MFS strip model and serial CFD runner provide a compact, auditable basis for the steady-cloak study.
Co-authored-by: Cursor <cursoragent@cursor.com>
Canonicalize V5 case identities and preserve the SR evidence chain while replacing ambiguous diagnostics with reproducible tables, phase-matched flow fields, and presentation-ready summaries.
Co-authored-by: Cursor <cursoragent@cursor.com>
Archive superseded studies and payload metadata while preserving a tested Schlegel LR/LE implementation with explicit scientific and physics contracts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Freeze the contract-audited discovery, closed-loop validation, robustness, plotting, and manuscript evidence so the SR section is reproducible and ready for paper development.
Co-authored-by: Cursor <cursoragent@cursor.com>
Create pre-fix baseline with:
- Manifest recording ignored NPZ hashes, model inventory, env versions
- Plan file for long-term SR Legacy Pipeline execution
- Snapshot of current stage_1_infer, PIPELINE, STAGE_1_INFER, results/README
This commit preserves the frozen historical state before Stage 1-3
contract repair begins. All canonical results are marked historical_frozen;
no formula or validation data will be overwritten during round 1.
Round 1 scope: legacy Karman (code Re 50/100/200/400) + Illusion (0.75L/1L).
V5, Vortex, unseen-Re, erase, 1.5L, and paper figures excluded.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Track A (legacy_test): systematic validation scripts for all trained PPO
models using LegacyCelerisLab. Each test script rebuilds the exact legacy
CFD environment, runs deterministic inference, and compares against
SR_analysis reference data using DTW-based comparison. Verified: Karman
re100/re50/re200, Vortex lamb/taylor all pass (DTW > 0.95).
- Track B (reproduce): Phase 2 open-loop CFD validation + Phase 3 DRL
inference using the legacy-compatible config (regularized inlet with
neq_damp=1.0, matching the legacy NBB formula). The inlet scheme fix
improves new-CFD Karman DTW from 0.916 to 0.943.
- Fixes: action_wrapper sign convention docstring, model inventory
duplicate entries and missing models, stale config paths in legacy
run_all_cases.py/run_illusion_vortex.py, illusion label formatting
- Add READMEs and run-all shell scripts for both tracks
- Add .gitignore entries for runtime output directories
Co-authored-by: Cursor <cursoragent@cursor.com>
- Add PIPELINE.md as primary entry (pipeline overview, conventions, results index,
new training integration guide)
- Create results/ directory with numbered symlinks to all 16 core figures
- Copy final CCD JSON into results/ccd/
- Rewrite README.md to point to PIPELINE.md
Design follows SR_analysis lightweight pattern: clear structure,
small number of entry files, results/ as canonical output directory.
Co-authored-by: Cursor <cursoragent@cursor.com>
Old zones (350-500, 500-700, 580-650) were based on pre-unification
illusion-only coordinates. Updated to match diagnose_corrections.py:
near_body 580-720, body_wake 720-850, sensor_zone 780-850.
Co-authored-by: Cursor <cursoragent@cursor.com>
- collect_karman_blk.py: bias_arr[4]=front (was -4U0, should be 0),
bias_arr[5]=bottom (was +4U0, should be -4U0),
bias_arr[6]=top (was 0, should be +4U0).
Matches legacy_karman_env.py:179-182.
- collect_controlled.py: same fix for Karman branch.
- Add missing import data_dir_for_scene in collect_controlled.py
Co-authored-by: Cursor <cursoragent@cursor.com>
- 51 steady open-loop commands collected (2.1h on device 2)
- q_in and q_blk reference fields collected
- Full pipeline: run_full_pipeline.py (A.2 POD -> A.3 LSE -> B OID -> C synthesis)
Co-authored-by: Cursor <cursoragent@cursor.com>
Phase A.1: Open-loop DB collection (50 commands, LHS, new CelerisLab)
Phase A.2: Snapshot POD on Li22b DB (ROI-masked, energy analysis)
Phase A.3: LSE [sensors, b] -> POD coefficients
Phase B: Delta-q OID + cross-mapping + joint-input OID
Phase C: Three-framework synthesis (SR, Li22b, OID)
Partial data collected (in progress). Reference fields done.
Co-authored-by: Cursor <cursoragent@cursor.com>
P3.1: Zone energy partition from OID spatial modes
P3.3: Three-layer overlap (action-OID, force-OID, signature-OID)
- Key finding: action is near-orthogonal to both force and sig OID modes
- Confirms OID finds observable-relevant, not action-relevant structures
P3.5: SR formula → OID coordinate validation
- Karman: corr(OID_z1, Cl_tot) = -0.82 (strong)
Fix: Restore ROI masking in phase1_correction_pod.py (OOM prevention)
Co-authored-by: Cursor <cursoragent@cursor.com>
Full 1280x512 POD with 500 snapshots needs ~50 GB RAM.
ROI [400:1000, 100:400] (600x300 px) reduces to ~1.4 GB.
This was the original design — removing it was a critical mistake.
Fields saved at full resolution (Rule 5); ROI applied at analysis stage only.
Also add phase_error_karman_sig.py for P2.4b future work.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Remove obsolete docs (OID_handover, SR_analysis_results, ccd_* handover)
- Remove CCD legacy output_redux and old scripts
- Remove SR old sindy scripts and compare modules
- Update .gitignore to cover all analysis-generated outputs
- Retain all active code in OID/SR/CCD analysis directories
Co-authored-by: Cursor <cursoragent@cursor.com>
Add comprehensive project report (292 lines, 7 figure references)
and handover notes for the next agent.
Co-authored-by: Cursor <cursoragent@cursor.com>
Complete implementation of Observable-Inferred Decomposition (OID)
for the fluidic pinball project. Covers Phases 0-7 for all 5 scenes
(steady cloak, Karman cloak, illusion 0.75L/1.0L/1.5L).
Key deliverables:
- Full analysis pipeline: configs, utils, 11 collection scripts, 7 phase
scripts, robustness analysis, figure generator, batch runner
- Data collected: 500 snapshots per scene, separate illusion-position q_blk
- 7 publication-quality figures: force-sig overlap, rank sensitivity,
OID vs POD comparison, tau_c sensitivity, POD energy, steady metrics,
white-box chain
- Comprehensive report at docs/OID_analysis_results.md (292 lines)
- Handover document at docs/OID_handover.md
- Updated knowledge base and notes with all Phase 2 results
Core finding: force-relevant and signature-relevant correction structures
systematically separate across control tasks (steady: +0.763 -> Karman: -0.034
-> illusion: -0.082 to -0.932), with OID consistently outperforming POD.
Co-authored-by: Cursor <cursoragent@cursor.com>
Core changes:
- New phase-state features (PHASE_STATE_KEYS, ILLUSION_PHASE_KEYS) with obs dynamics
- Derivative and absolute output modes (output_mode="deriv"|"absolute")
- predict_v23_deriv() with integration support for closed-loop
- Offline multi-step rollout evaluator (eval_rollout.py)
Key results:
- Illusion 0.75L/1L: phase-state+error-state+abs achieves 0.974/0.958 closed-loop
with zero action history features — proving the new route works
- Karman re100: phase-state+abs reaches 0.699 (vs 0.901 with action history)
- 1.5L confirmed as bang-bang regime (R2=0.12 for linear SINDy)
- Feature ablation: 6-dim phase-state outperforms 16-dim full-lag in closed-loop
Documentation:
- docs/SR_analysis_results.md: comprehensive analysis report
- docs/HANDOVER_SR_ANALYSIS.md: handover notes for next coder
- 6 figures in docs/figures/SR_analysis/
- Updated README.md, sindy_sr_notes.md, sindy_sr_knowledge.md
- Updated configs.py with generalization scenes
Co-authored-by: Cursor <cursoragent@cursor.com>