Skip to content

refactor(dfir_rs): use slotmap SecondaryMap for metrics#2810

Draft
MingweiSamuel wants to merge 2 commits intomainfrom
mingwei/delete-metrics-slotvec
Draft

refactor(dfir_rs): use slotmap SecondaryMap for metrics#2810
MingweiSamuel wants to merge 2 commits intomainfrom
mingwei/delete-metrics-slotvec

Conversation

@MingweiSamuel
Copy link
Copy Markdown
Member

STACK #2801

Replace custom SecondarySlotVec<SubgraphTag, _> and
SecondarySlotVec<HandoffTag, _> in DfirMetrics with
slotmap::SecondaryMap<GraphSubgraphId, _> and
SecondaryMap<GraphNodeId, _> from dfir_lang.

This eliminates the slotmap_raw_idx conversion hack in codegen —
keys are now reconstructed via slotmap::KeyData::from_ffi() which
preserves the full key (including version), not just the raw index.

Make dfir_lang a non-optional dependency of dfir_rs (it was already
always compiled via dfir_macro). Re-export dfir_lang and slotmap
from dfir_rs for use in generated code.

Update hydro_lang/src/telemetry/emf.rs to use Debug formatting for
slotmap keys instead of Display.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors DFIR runtime metrics to use slotmap::SecondaryMap keyed by dfir_lang graph IDs, removing the previous raw-index conversion approach and aligning generated/runtime code around full slotmap key reconstruction.

Changes:

  • Replace SecondarySlotVec<SubgraphTag/_> & SecondarySlotVec<HandoffTag/_> in dfir_rs::scheduled::metrics with SecondaryMap<GraphSubgraphId/_> & SecondaryMap<GraphNodeId/_>, and make dfir_lang a non-optional dfir_rs dependency (plus re-exports for generated code).
  • Update DFIR Lang operator codegen to avoid the state API in favor of local captured state and introduce OperatorWriteOutput::write_tick_end for 'tick persistence resets; remove next_stratum and simplify graph visualization labels (no “stratum N”).
  • Update telemetry and many graph snapshot expectations, add an inline test for mutual defer_tick, and refresh compile-fail stderr outputs.

Reviewed changes

Copilot reviewed 239 out of 239 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
hydro_test/src/local/snapshots/chat_app_replay.snap Snapshot update: subgraph labels simplified (remove stratum text).
hydro_test/src/local/snapshots/chat_app_no_replay.snap Snapshot update: graph structure/labels adjusted to new graph writing behavior.
hydro_lang/src/telemetry/emf.rs Emit slotmap IDs using Debug formatting for EMF dimensions.
dfir_rs/tests/surface_inline.rs Add test covering mutual defer_tick back-edges/toposort handling.
dfir_rs/tests/snapshots/surface_unique__unique_tick_push@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_unique__unique_tick_push@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_unique__unique_tick_pull@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_unique__unique_tick_pull@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_unique__unique_static_push@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_unique__unique_static_push@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_unique__unique_static_pull@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_unique__unique_static_pull@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_unique__unique@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_unique__unique@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_stratum__tick_loop_3@graphvis_mermaid.snap Snapshot update reflecting removed stratum labels and graph shape changes.
dfir_rs/tests/snapshots/surface_stratum__tick_loop_2@graphvis_mermaid.snap Snapshot update reflecting removed stratum labels and graph shape changes.
dfir_rs/tests/snapshots/surface_stratum__tick_loop_2@graphvis_dot.snap Snapshot update reflecting removed stratum labels and graph shape changes.
dfir_rs/tests/snapshots/surface_stratum__tick_loop_1@graphvis_mermaid.snap Snapshot update reflecting removed stratum labels and graph shape changes.
dfir_rs/tests/snapshots/surface_stratum__tick_loop_1@graphvis_dot.snap Snapshot update reflecting removed stratum labels and graph shape changes.
dfir_rs/tests/snapshots/surface_stratum__subgraph_stratum_consolidation@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_stratum__subgraph_stratum_consolidation@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_stratum__difference_b@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_stratum__difference_b@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_stratum__difference_a@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_stratum__difference_a@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_stratum__defer_lazy@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_stratum__defer_lazy@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_sort__sort_by_key@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_sort__sort_by_key@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_sort__sort@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_sort__sort@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__state_unused@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__state_unused@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__state@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__state@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__reduce_singleton_push@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__reduce_singleton_push@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__reduce_singleton@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__reduce_singleton@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__multi_tick@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__multi_tick@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__fold_singleton_push@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__fold_singleton_push@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__fold_singleton@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__fold_singleton@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__fold_cross@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_singleton__fold_cross@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_short_circuit_state__resolve_futures_cross_singleton@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_short_circuit_state__resolve_futures_cross_singleton@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_scheduling__tick_loop@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_scheduling__tick_loop@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_scheduling__stratum_loop@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_scheduling__stratum_loop@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_scheduling__persist_stratum_run_available@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_scheduling__persist_stratum_run_available@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_scheduling__persist_stratum_run_async@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_scheduling__persist_stratum_run_async@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_scheduling__nospin_issue_961@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_scheduling__nospin_issue_961@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_scan__scan_tick@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_scan__scan_tick@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_scan__scan_static@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_scan__scan_static@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_scan__scan_push@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_scan__scan_push@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce_keyed__reduce_keyed_tick@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce_keyed__reduce_keyed_tick@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce_keyed__reduce_keyed_static@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce_keyed__reduce_keyed_static@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce_keyed__reduce_keyed_infer_basic@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce_keyed__reduce_keyed_infer_basic@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce__reduce_tick@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce__reduce_tick@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce__reduce_sum@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce__reduce_sum@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce__reduce_static@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_reduce__reduce_static@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist_push@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist_push@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist_pull@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist_pull@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist_mut_keyed@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist_mut_keyed@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist_mut@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist_mut@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist_basic@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist_basic@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_persist__persist@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_multiset_delta__multiset_delta@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_multiset_delta__multiset_delta@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism_persist_insertion__cartesian_product_multi_tick_tee@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism_persist_insertion__cartesian_product_multi_tick_tee@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism_persist_insertion__cartesian_product_multi_tick_identity@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism_persist_insertion__cartesian_product_multi_tick_identity@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism_persist_insertion__cartesian_product_multi_tick@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism_persist_insertion__cartesian_product_multi_tick@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism__join@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism__join@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism__cartesian_product_tick_state@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism__cartesian_product_tick_state@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism__cartesian_product_1401@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism__cartesian_product_1401@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism__cartesian_product@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_lattice_bimorphism__cartesian_product@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_join__tick_tick@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_join__tick_static@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_join__static_tick@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_join__static_static@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_forwardref__forwardref_basic_middle@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_forwardref__forwardref_basic_middle@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_forwardref__forwardref_basic_forward@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_forwardref__forwardref_basic_forward@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_forwardref__forwardref_basic_backward@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_forwardref__forwardref_basic_backward@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold_keyed__fold_keyed_typed_basic@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold_keyed__fold_keyed_typed_basic@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold_keyed__fold_keyed_tick@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold_keyed__fold_keyed_tick@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold_keyed__fold_keyed_static@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold_keyed__fold_keyed_static@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold_keyed__fold_keyed_infer_basic@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold_keyed__fold_keyed_infer_basic@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold__fold_tick@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold__fold_tick@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold__fold_static_join@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_fold__fold_static_join@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_fold__fold_static@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold__fold_static@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold__fold_sort@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_fold__fold_sort@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_examples__example_surface_flows_3_ports.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_examples__example_4_neighbors.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_difference__diff_timing@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_difference__diff_timing@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_difference__diff_static@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_difference__diff_static@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_difference__diff_multiset_timing@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_difference__diff_multiset_timing@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_difference__diff_multiset_tick_static@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_difference__diff_multiset_tick_static@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_difference__diff_multiset_static_tick@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_difference__diff_multiset_static_tick@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_difference__diff_multiset_static@graphvis_mermaid.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_difference__diff_multiset_static@graphvis_dot.snap Snapshot update reflecting new graph structure/labels.
dfir_rs/tests/snapshots/surface_defer_signal__basic_2@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_defer_signal__basic_2@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_cross_singleton__basic@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_cross_singleton__basic@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_context__context_ref@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_context__context_ref@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_codegen__recv_expr@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_codegen__recv_expr@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_codegen__basic_union@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_codegen__basic_union@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_codegen__basic_3@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_codegen__basic_3@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_codegen__basic_2@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_codegen__basic_2@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_book__surface_flows_1@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_book__surface_flows_1@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_async__echo@graphvis_mermaid.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/snapshots/surface_async__echo@graphvis_dot.snap Snapshot update for new subgraph labeling.
dfir_rs/tests/compile-fail-stable/surface_negative_loop.stderr Update expected compile-fail diagnostic output.
dfir_rs/tests/compile-fail-stable/surface_inline_cycle.stderr Update expected compile-fail diagnostic output.
dfir_rs/src/scheduled/mod.rs Remove legacy handoff ID tag/type; simplify subgraph ID doc.
dfir_rs/src/scheduled/metrics.rs Switch metrics keying/storage to SecondaryMap with graph IDs; adjust tests accordingly.
dfir_rs/src/lib.rs Re-export dfir_lang and slotmap for generated code usage.
dfir_rs/Cargo.toml Make dfir_lang non-optional dependency; adjust meta feature accordingly.
dfir_macro/src/lib.rs Avoid panicking on partitioning failure; provide fallback mermaid string.
dfir_lang/src/process_singletons.rs Update singleton substitution to borrow from RefCell directly (no context state API).
dfir_lang/src/graph/ops/unique.rs Switch from state API usage to local set + tick-end reset handling.
dfir_lang/src/graph/ops/source_file.rs Delegate to source_stream with updated OperatorWriteOutput destructuring.
dfir_lang/src/graph/ops/scan_async_blocking.rs Replace state API with local RefCell + tick-end reset for tick persistence.
dfir_lang/src/graph/ops/resolve_futures.rs Replace state API storage with local futures queue variable.
dfir_lang/src/graph/ops/repeat_n.rs Replace state API with local RefCell<Vec<_>> state.
dfir_lang/src/graph/ops/reduce_no_replay.rs Replace state API with local RefCell<Option<_>> + tick-end reset.
dfir_lang/src/graph/ops/reduce_keyed.rs Replace state API with local RefCell<HashMap<..>> + tick-end reset.
dfir_lang/src/graph/ops/reduce.rs Replace state API with local RefCell<Option<_>> + tick-end reset.
dfir_lang/src/graph/ops/prefix.rs Replace state API with local RefCell<Vec<_>> state.
dfir_lang/src/graph/ops/persist_mut_keyed.rs Replace state API with local map state in codegen.
dfir_lang/src/graph/ops/persist_mut.rs Replace state API with local sparse vec state in codegen.
dfir_lang/src/graph/ops/persist.rs Replace state API with local RefCell<Vec<_>> state in codegen.
dfir_lang/src/graph/ops/next_stratum.rs Remove next_stratum operator definition.
dfir_lang/src/graph/ops/multiset_delta.rs Replace state API with local RefCell<HashMap<_>> + tick swap logic updates.
dfir_lang/src/graph/ops/mod.rs Add write_tick_end to OperatorWriteOutput; derive serde traits for DelayType; remove next_stratum from operator list.
dfir_lang/src/graph/ops/lattice_reduce.rs Propagate new write_tick_end field when delegating to reduce.
dfir_lang/src/graph/ops/lattice_bimorphism.rs Remove state API access; use direct references to state handles.
dfir_lang/src/graph/ops/join_fused_rhs.rs Forward new write_tick_end while delegating to join_fused_lhs.
dfir_lang/src/graph/ops/join_fused_lhs.rs Update join state generation to local storage + tick-end resets.
dfir_lang/src/graph/ops/join_fused.rs Update join state generation to local storage + tick-end resets.
dfir_lang/src/graph/ops/fold_no_replay.rs Replace state API with local RefCell + tick-end reset.
dfir_lang/src/graph/ops/fold_keyed.rs Replace state API with local RefCell<HashMap<_>> + tick-end reset.
dfir_lang/src/graph/ops/fold.rs Replace state API with local RefCell + tick-end reset.
dfir_lang/src/graph/ops/enumerate.rs Replace state API counter with local range + tick-end reset.
dfir_lang/src/graph/ops/difference.rs Forward write_tick_end while delegating to anti_join.
dfir_lang/src/graph/ops/dest_sink_serde.rs Delegate to dest_sink with updated OperatorWriteOutput destructuring.
dfir_lang/src/graph/ops/dest_file.rs Delegate to dest_sink with updated OperatorWriteOutput destructuring.
dfir_lang/src/graph/ops/defer_tick.rs Update operator docs to remove mention of next_stratum.
dfir_lang/src/graph/ops/defer_signal.rs Replace state API buffer with local vector in codegen.
dfir_lang/src/graph/ops/cross_singleton.rs Replace state API singleton storage with local option + tick-end reset.
dfir_lang/src/graph/ops/chain_first_n.rs Delegate to union with updated OperatorWriteOutput destructuring.
dfir_lang/src/graph/ops/assert_eq.rs Replace state API index cell with local Cell.
dfir_lang/src/graph/ops/_lattice_join_fused_join.rs Forward write_tick_end when delegating to join_fused.
dfir_lang/src/graph/ops/_lattice_fold_batch.rs Replace state API lattice state with local value.
dfir_lang/src/graph/graph_write.rs Simplify subgraph writer API and remove stratum from graph labels.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 79 to 83
write_prologue_after,
write_iterator,
write_iterator_after,
..
} = (super::dest_sink::DEST_SINK.write_fn)(&wc, diagnostics)?;
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DEST_FILE delegates to DEST_SINK and currently uses .. when destructuring/returning OperatorWriteOutput, which can drop delegated fields such as write_tick_end. Please destructure and forward all fields explicitly to avoid losing delegated behavior when new fields are added.

Copilot uses AI. Check for mistakes.
Comment thread dfir_lang/src/process_singletons.rs Outdated
Comment on lines +27 to +31
/// * `resolved_idents` - The context `StateHandle` varnames that correspond 1:1 and in the same
/// order as the singleton references within `tokens` (found in-order via [`preprocess_singletons`]).
///
/// Generates borrowing code ([`std::cell::RefCell::borrow_mut`]). Use
/// [`postprocess_singletons_handles`] for just the `StateHandle`s.
/// Generates borrowing code ([`std::cell::RefCell::borrow`]). Use
/// [`postprocess_singletons_handles`] for just the raw idents.
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

postprocess_singletons docs say resolved_idents are context StateHandle varnames, but the implementation now expects raw idents that support borrow() (e.g., RefCell<T>). Please update the parameter docs to match the new codegen contract to avoid misleading future changes.

Copilot uses AI. Check for mistakes.
Comment on lines 68 to 74
let OperatorWriteOutput {
write_prologue: write_prologue_stream,
write_prologue_after,
write_iterator,
write_iterator_after,
..
} = (super::source_stream::SOURCE_STREAM.write_fn)(&wc, diagnostics)?;
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This delegating operator destructures OperatorWriteOutput using .., which can silently drop newly-added fields (e.g., write_tick_end) from the delegated operator. Please bind and forward all fields explicitly so tick-end cleanup/reset code isn't lost.

Copilot uses AI. Check for mistakes.
Comment on lines 52 to 58
let OperatorWriteOutput {
write_prologue,
write_prologue_after,
write_iterator,
write_iterator_after,
..
} = (super::dest_sink::DEST_SINK.write_fn)(wc, diagnostics)?;
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This delegating operator destructures OperatorWriteOutput with .., which can drop fields such as write_tick_end coming from DEST_SINK. Please destructure and forward all fields explicitly to preserve delegated behavior as OperatorWriteOutput evolves.

Copilot uses AI. Check for mistakes.
Comment on lines 58 to 64
let OperatorWriteOutput {
write_prologue,
write_prologue_after,
write_iterator,
write_iterator_after,
..
} = (super::union::UNION.write_fn)(wc, diagnostics)?;
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This delegating operator destructures OperatorWriteOutput with .., which can silently drop fields (notably write_tick_end) from the delegated UNION operator. Please bind/forward all fields explicitly so any tick-end code from the delegate is preserved.

Copilot uses AI. Check for mistakes.
@shadaj shadaj marked this pull request as draft April 24, 2026 21:34
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Apr 24, 2026

Deploying hydro with  Cloudflare Pages  Cloudflare Pages

Latest commit: 5c872dd
Status:⚡️  Build in progress...

View logs

@MingweiSamuel MingweiSamuel force-pushed the mingwei/delete-metrics-slotvec branch 4 times, most recently from 90035bb to 608f194 Compare April 24, 2026 23:08
@MingweiSamuel MingweiSamuel force-pushed the mingwei/delete-metrics-slotvec branch 3 times, most recently from fbd9d9f to 98963dd Compare April 30, 2026 02:30
MingweiSamuel added a commit that referenced this pull request Apr 30, 2026
…m slot_vec tags

Replace custom `SecondarySlotVec<SubgraphTag, _>` and
`SecondarySlotVec<HandoffTag, _>` in DfirMetrics with
`slotmap::SecondaryMap<GraphSubgraphId, _>` and
`SecondaryMap<GraphNodeId, _>` from dfir_lang.

This eliminates the `slotmap_raw_idx` conversion hack in codegen —
keys are now reconstructed via `slotmap::KeyData::from_ffi()` which
preserves the full key (including version), not just the raw index.

Make `dfir_lang` a non-optional dependency of `dfir_rs` (it was already
always compiled via `dfir_macro`). Re-export `dfir_lang` and `slotmap`
from `dfir_rs` for use in generated code.

Remove `HandoffTag` and `HandoffId` from `scheduled/mod.rs` (no longer
needed). Update `hydro_lang/src/telemetry/emf.rs` to use `Debug`
formatting for slotmap keys instead of `Display`.

Co-authored-by: Infinity 🤖 <infinity@hydro.run>
PR: #2810
MingweiSamuel added a commit that referenced this pull request Apr 30, 2026
Remove the `slotmap_key_ffi` helper and inline `key.data().as_ffi()` at
each call site. This makes the symmetry with the generated
`KeyData::from_ffi(ffi).into()` more visible.

Co-authored-by: Infinity 🤖 <infinity@hydro.run>
PR: #2810
@MingweiSamuel MingweiSamuel changed the base branch from main to mingwei/delete-state-api-usage April 30, 2026 02:30
@MingweiSamuel MingweiSamuel force-pushed the mingwei/delete-state-api-usage branch from 3f07d0e to c56d8d8 Compare April 30, 2026 18:57
@MingweiSamuel MingweiSamuel force-pushed the mingwei/delete-metrics-slotvec branch 2 times, most recently from 140ed85 to b09925b Compare April 30, 2026 23:18
@MingweiSamuel MingweiSamuel force-pushed the mingwei/delete-state-api-usage branch from c56d8d8 to 37ebe2e Compare April 30, 2026 23:18
@MingweiSamuel MingweiSamuel force-pushed the mingwei/delete-metrics-slotvec branch from b09925b to d7b8591 Compare May 1, 2026 16:43
@MingweiSamuel MingweiSamuel force-pushed the mingwei/delete-state-api-usage branch 2 times, most recently from af90c89 to 094abd4 Compare May 1, 2026 18:02
@MingweiSamuel MingweiSamuel force-pushed the mingwei/delete-metrics-slotvec branch 2 times, most recently from 13ed945 to 53de2d8 Compare May 1, 2026 18:44
Base automatically changed from mingwei/delete-state-api-usage to main May 1, 2026 21:33
MingweiSamuel and others added 2 commits May 1, 2026 22:47
…m slot_vec tags

Replace custom `SecondarySlotVec<SubgraphTag, _>` and
`SecondarySlotVec<HandoffTag, _>` in DfirMetrics with
`slotmap::SecondaryMap<GraphSubgraphId, _>` and
`SecondaryMap<GraphNodeId, _>` from dfir_lang.

This eliminates the `slotmap_raw_idx` conversion hack in codegen —
keys are now reconstructed via `slotmap::KeyData::from_ffi()` which
preserves the full key (including version), not just the raw index.

Make `dfir_lang` a non-optional dependency of `dfir_rs` (it was already
always compiled via `dfir_macro`). Re-export `dfir_lang` and `slotmap`
from `dfir_rs` for use in generated code.

Remove `HandoffTag` and `HandoffId` from `scheduled/mod.rs` (no longer
needed). Update `hydro_lang/src/telemetry/emf.rs` to use `Debug`
formatting for slotmap keys instead of `Display`.

Co-authored-by: Infinity 🤖 <infinity@hydro.run>
PR: #2810
Remove the `slotmap_key_ffi` helper and inline `key.data().as_ffi()` at
each call site. This makes the symmetry with the generated
`KeyData::from_ffi(ffi).into()` more visible.

Co-authored-by: Infinity 🤖 <infinity@hydro.run>
PR: #2810
@MingweiSamuel MingweiSamuel force-pushed the mingwei/delete-metrics-slotvec branch from 53de2d8 to 5c872dd Compare May 1, 2026 22:48
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.

2 participants