Skip to content

feat(export, viewer): explain summary-maintenance lifecycle decisions - #313

Merged
zzylol merged 6 commits into
mainfrom
feat/lifecycle-dag-export
Sep 2, 2026
Merged

zzylol merged 6 commits into
mainfrom
feat/lifecycle-dag-export

Conversation

@zzylol

@zzylol zzylol commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Stacked on #319.

Why

Operators need to see which summary state is deployed, how it is maintained, why that lifecycle won, and why the alternatives were rejected. Exporting this information without displaying it made lifecycle decisions difficult to inspect.

Before this PR

  • DAG export omitted lifecycle guarantees, maintenance modes, alternatives, assumptions, and rejection reasons.
  • The DAG viewer could not load a lifecycle-plan export.
  • Deployment decisions were not associated with their SummaryAgg nodes.

After this PR

  • Lifecycle export includes the selected deployment, maintenance mode, evaluation schedule, output representation, costs, assumptions, and typed rejection reasons.
  • The DAG viewer accepts lifecycle-plan JSON and renders it as a single lifecycle lane.
  • Selecting a SummaryAgg shows its chosen lifecycle and every considered alternative.
  • The selected-node panel preserves the plan-level summary-versus-raw decision, costs, horizon, expected reads, and evaluation/update rates, including when raw recomputation produces no SummaryAgg deployment.

For example, the E2E workload displays a continuously maintained deployment using incremental maintenance. Prepared and Shared remain visible with their rejection reasons.

Visualization

The screenshot below is generated from the lifecycle-plan JSON path implemented by this PR. The selected SummaryAgg shows the winning continuously maintained/incremental contract, plan-level cost and workload evidence, and every considered lifecycle alternative.

Summary-maintenance lifecycle plan in the ASAP DAG viewer

Implementation

  • Adds the explicitly named summary_maintenance_dag_export mapping adapter.
  • Exports lifecycle decisions alongside horizon, demand rates, expected reads, and the raw-recompute comparison.
  • Attaches each deployment directly to its exported SummaryAgg; the viewer does not infer identity from labels or graph position.
  • Supports lifecycle-plan JSON in both the interactive viewer and standalone HTML renderer.
  • Preserves and renders plan-level lifecycle metadata through both viewer ingestion paths.
  • Keeps asap-types::dag_export independent of mapping-layer lifecycle policy.
  • Tests lifecycle alternatives by kind, node annotations, raw-fallback export, plan-summary loading, and viewer loading.

Verification

cargo test -p asap-integration-tests --test summary_maintenance_lifecycle_e2e
python3 -m unittest discover -s tools/dag-viewer -p test_render.py
cargo clippy -p asap-aware-mapping -p asap-integration-tests --all-targets -- -D warnings

Stack

Base: #319.

@zzylol
zzylol force-pushed the feat/workload-summary-lifecycles-300 branch from e6f1dba to c4c6ceb Compare August 29, 2026 22:47
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from f614e7f to 6e7f294 Compare August 29, 2026 22:47
@zzylol
zzylol changed the base branch from feat/workload-summary-lifecycles-300 to docs/lifecycle-aware-planner August 29, 2026 22:48
@zzylol
zzylol force-pushed the docs/lifecycle-aware-planner branch from 5548824 to 15c2f5b Compare August 30, 2026 18:21
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from 6e7f294 to 77a1e29 Compare August 30, 2026 18:22
@zzylol
zzylol force-pushed the docs/lifecycle-aware-planner branch from 15c2f5b to 0b81280 Compare August 30, 2026 18:30
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from 77a1e29 to 1ab1548 Compare August 30, 2026 18:30
@zzylol
zzylol force-pushed the docs/lifecycle-aware-planner branch from 0b81280 to e815908 Compare August 30, 2026 18:36
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from 1ab1548 to 5901067 Compare August 30, 2026 18:36
@zzylol
zzylol force-pushed the docs/lifecycle-aware-planner branch from e815908 to 347839f Compare August 30, 2026 18:46
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from 5901067 to f2a3ad9 Compare August 30, 2026 18:46
@zzylol
zzylol force-pushed the docs/lifecycle-aware-planner branch from 347839f to 312ff5a Compare August 30, 2026 19:03
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch 2 times, most recently from 16e0048 to 785cb99 Compare August 30, 2026 21:22
@zzylol
zzylol changed the base branch from docs/lifecycle-aware-planner to test/workload-lifecycle-e2e August 30, 2026 21:22
@zzylol
zzylol force-pushed the test/workload-lifecycle-e2e branch from bf0f818 to 4e93a30 Compare August 30, 2026 21:27
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from 785cb99 to 505c104 Compare August 30, 2026 21:27
@zzylol zzylol changed the title feat(export): include summary lifecycle alternatives and rejections feat(export): include summary maintenance decisions Aug 31, 2026
@zzylol
zzylol force-pushed the test/workload-lifecycle-e2e branch from 4e93a30 to fbfc01e Compare August 31, 2026 12:04
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from 505c104 to 6034e10 Compare August 31, 2026 12:04
@zzylol
zzylol force-pushed the test/workload-lifecycle-e2e branch from fbfc01e to 995af48 Compare August 31, 2026 12:17
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from 6034e10 to f93fa2d Compare August 31, 2026 12:18
@zzylol zzylol changed the title feat(export): include summary maintenance decisions feat(export): include summary-maintenance lifecycle decisions Aug 31, 2026
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from f93fa2d to 85918e6 Compare August 31, 2026 12:20
@zzylol
zzylol force-pushed the test/workload-lifecycle-e2e branch from e67e10d to d3d051a Compare August 31, 2026 12:35
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from 85918e6 to 7139ff7 Compare August 31, 2026 12:35
@zzylol
zzylol force-pushed the test/workload-lifecycle-e2e branch from d3d051a to c593292 Compare August 31, 2026 12:45
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from 7139ff7 to f931030 Compare August 31, 2026 12:45
@zzylol

zzylol commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

Completed in 42ba08f: the DAG viewer now accepts summary-maintenance plan exports and shows each SummaryAgg deployment selected lifecycle, maintenance mode, schedule, output representation, alternatives, costs, assumptions, and rejection reasons.

@zzylol zzylol changed the title feat(export): include summary-maintenance lifecycle decisions feat(export, viewer): explain summary-maintenance lifecycle decisions Aug 31, 2026
@zzylol
zzylol force-pushed the test/workload-lifecycle-e2e branch from c593292 to 5dd29e0 Compare August 31, 2026 21:58
@zzylol
zzylol force-pushed the feat/lifecycle-dag-export branch from 42ba08f to 285841a Compare August 31, 2026 22:00
@zzylol
zzylol changed the base branch from test/workload-lifecycle-e2e to main September 2, 2026 01:36
@zzylol
zzylol merged commit e26f10c into main Sep 2, 2026
1 check passed
@zzylol
zzylol deleted the feat/lifecycle-dag-export branch September 7, 2026 15:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant