Files
insar-management-system-v2/docs/TIMESERIES_LEGACY_DEPRECATION_20260521.md
T

5.9 KiB

Legacy Time-Series InSAR Deprecation Record

Date: 2026-05-21

Background

The project previously kept an ISCE2 + MintPy time-series/SBAS production path under:

experiments/isce2_sbas_timeseries

That experiment directory has been removed. The active SBAS-InSAR direction is now the independent Gamma production workflow documented in:

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:

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:

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:

[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:

D-InSAR 运行
SBAS-InSAR Production
D-InSAR 产物

It should no longer expose:

时序InSAR 运行
时序InSAR 产物

Verification

Completed on 2026-05-21:

  • Frontend build passed:
npm run build
  • Runtime configuration check passed:
scripts/check_runtime_config.py

Observed output included:

[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:

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:

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.