# Legacy Time-Series InSAR Deprecation Record Date: 2026-05-21 ## Background The project previously kept an ISCE2 + MintPy time-series/SBAS production path under: ```text experiments/isce2_sbas_timeseries ``` That experiment directory has been removed. The active SBAS-InSAR direction is now the independent Gamma production workflow documented in: ```text docs/SBAS_INSAR_PRODUCTION_PIPELINE_DESIGN_20260519.md docs/GAMMA_IPTA_LT1_SBAS_TRIAL_RUNBOOK_20260518.md ``` Before this cleanup, startup validation still generated warnings for missing legacy paths: ```text TIMESERIES_EXPERIMENT_ROOT TIMESERIES_STACK_PREP_SCRIPT TIMESERIES_MATERIALIZE_SCRIPT TIMESERIES_PREPARE_DEM_SCRIPT TIMESERIES_STACK_RUNNER_SCRIPT TIMESERIES_MINTPY_SBAS_SCRIPT TIMESERIES_EXPORT_PUBLISH_SCRIPT ``` Those warnings were misleading because they referred to the abandoned ISCE2/MintPy line, not the current Gamma SBAS-InSAR production line. ## Decision The ISCE2/MintPy time-series production chain is deprecated and disabled by default. The current SBAS-InSAR production authority is: ```text Frontend view: sbas_insar_production Backend route: /api/sbas-insar-production Engine: Gamma Workflow: DIFF + IPTA SBAS ``` The legacy code is not physically deleted yet. It remains only as compatibility and historical-reference code until the Gamma SBAS workflow can be tested end to end and historical result access is confirmed. ## Changes Made Backend configuration: - `backend/app/config.py` - `TIMESERIES_ENABLED` default changed from `true` to `false`. - Legacy `TIMESERIES_*` experiment/script defaults are now populated only when `TIMESERIES_ENABLED=true`. - `ensure_dirs()` no longer creates `TIMESERIES_WORK_ROOT` unless the legacy chain is explicitly enabled. - Runtime validation now reports an info line instead of warning about missing legacy experiment scripts when the chain is disabled. Environment example: - `.env.example` - `TIMESERIES_ENABLED=false` - `TIMESERIES_EXPERIMENT_ROOT=` is blank. - `TIMESERIES_DEFAULT_PROCESSOR_CODE=legacy_isce2_stack_mintpy` Frontend production management: - `frontend/src/config/appConstants.js` - Removed production workspace views: - `timeseries_runs` - `timeseries_products` - Legacy route aliases now map to the Gamma SBAS page: - `ps_production -> sbas_insar_production` - `ps_products -> sbas_insar_production` - `frontend/src/ProductionWorkspace.jsx` - Removed lazy imports and render branches for: - `TimeseriesProductionPanel` - production-management `PsinsarCatalogPanel` - Updated production workspace text to describe Gamma SBAS as an independent entry. - `frontend/src/components/app/AppSidePanel.jsx` - Updated production-management description to state that the old ISCE2/MintPy time-series entry is disabled. Documentation: - `docs/SBAS_INSAR_PRODUCTION_PIPELINE_DESIGN_20260519.md` - Added the legacy-chain deprecation decision. - `docs/FRONTEND_NAVIGATION_ARCHITECTURE.md` - Updated production-management internal views to: - `dinsar_runs` - `sbas_insar_production` - `dinsar_products` ## Current Behavior After backend restart, deployment validation should no longer warn about the removed `experiments/isce2_sbas_timeseries` path. Expected validation line: ```text [INFO] Legacy ISCE2/MintPy timeseries pipeline is disabled; current SBAS-InSAR production uses the Gamma /sbas-insar-production workflow. ``` The production-management page should show: ```text D-InSAR 运行 SBAS-InSAR Production D-InSAR 产物 ``` It should no longer expose: ```text 时序InSAR 运行 时序InSAR 产物 ``` ## Verification Completed on 2026-05-21: - Frontend build passed: ```text npm run build ``` - Runtime configuration check passed: ```text scripts/check_runtime_config.py ``` Observed output included: ```text [INFO] Legacy ISCE2/MintPy timeseries pipeline is disabled; current SBAS-InSAR production uses the Gamma /sbas-insar-production workflow. [OK] Deployment configuration check passed. ``` - Backend config syntax was checked with Python AST parsing. `python -m py_compile backend/app/config.py` was not used as the final check because Windows denied replacement of an existing `__pycache__` file. This was a local cache-permission issue, not a syntax failure. ## Retained Compatibility Code The following code is intentionally retained for now: ```text backend/app/routers/timeseries_production.py backend/app/services/timeseries_service.py frontend/src/TimeseriesProductionPanel.jsx frontend/src/api/timeseriesProduction.js frontend/src/components/PsinsarCatalogPanel.jsx ``` Database tables and historical product catalog structures such as `ps_timeseries_runs` are also retained. `PsinsarCatalogPanel` may still be useful outside production management, especially for analysis/result browsing. Do not delete it until those usages are audited. ## Re-Enabling Legacy Chain Re-enabling the legacy ISCE2/MintPy chain is not part of the current production plan. If it must be revived for a controlled comparison, the operator must explicitly set: ```text TIMESERIES_ENABLED=true ``` and provide valid values for all legacy experiment/script paths. The removed `experiments/isce2_sbas_timeseries` directory is no longer assumed to exist. ## Follow-Up Cleanup Criteria Physical deletion of the legacy chain should wait until all of the following are true: - Gamma SBAS production has completed an end-to-end run from stack discovery to published LOS velocity/sigma products. - Historical `ps_timeseries_runs` and old time-series product records have a clear migration or read-only archival plan. - Frontend navigation, route aliases, and analysis pages have been audited for remaining dependencies. - Backend callers of `/api/timeseries-production` have either been removed or explicitly marked as legacy-only. - Test coverage or manual regression notes confirm that D-InSAR production, SBAS production, product browsing, and task monitoring still work.