Conversation
zzylol
changed the base branch from
main
to
refactor/candidate-post-asap-dags
September 30, 2026 16:56
#445, #470, #472, and #478 each described the Planner output from a different angle. Add an output-layers section that places them in order: candidate space, selected logical plan, and exported logical DAG. Say that PlanOutput is derived from PlanSpace rather than being a second output. Use "candidate" instead of "alternative" throughout input-output-workflow.md. Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…al, deployment Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Record the owner-approved layering: logical PlanSpace, summary lifecycle as the only source of timing, physical compilation cut by timing, and a deployment that prices lifecycle assignments, supplies data and state, and executes Planner-compiled DAGs. Link it from the output layers section. Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Use PreASAPDAG, PostASAPDAG, and PhysicalDAG as design names while mapping current Rust APIs. Document frontend lowering, logical candidates, lifecycle-only timing, and physical compilation/cuts. Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Use candidate PostASAPDAGs as the design name and CandidatePostASAPDAGs for the renamed Rust collection. Keep explicit selection helpers separate from the candidate-preserving pipeline. Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebase note: conflicts in docs/design_docs/architecture/input-output-workflow.md with the stack below are resolved to this commit's version of the file, as integration merge e59640f resolved them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Name shared DAG roots and frontend candidate collections; distinguish bound execution graphs from compiled PhysicalDAGs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Compile shared logical roots through the existing validator and operator lowering. Enumerate lifecycle assignments without implicit winner selection, retain unknown costs and rejections, and share compatible compiled physical graphs across on-demand timing cuts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Encapsulate lifecycle enumeration in CandidatePostASAPDAGs with timing. Compile that collection directly into CandidatePhysicalDAGs, retaining metadata and failures while sharing compatible compilations. Remove public lifecycle enumerator and physical candidate descriptor APIs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
zzylol
force-pushed
the
refactor/candidate-post-asap-dags
branch
from
September 30, 2026 18:27
ea12b31 to
763bef3
Compare
zzylol
force-pushed
the
docs/planner-output-layers
branch
from
September 30, 2026 18:27
5307489 to
536dabf
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #508.
Rebuilt into the linear stack on main. The 12 docs commits before the former
build:merge were written against main; each resolvesdocs/design_docs/architecture/input-output-workflow.mdto that commit's version, as integration merge e59640f did. That merge is no longer needed. As in e59640f, this PR's text of that file replaces the #485 sentence about lifecycle-assigned timing and the #508 renames there.Why
The architecture's DAG names did not identify the Rust APIs, and callers had to compose a separate lifecycle enumerator and physical candidate wrappers between layers. The public pipeline now uses named candidate collections end to end, with shared logical graphs and physical compilation.
What
PreASAPDAG,PostASAPDAG,PhysicalDAG; distinguish nodes and runtime-boundBoundPhysicalDAG. Remove compatibility aliases for the old names.lower_pre_asap_dag_candidatesreturningCandidatePreASAPDAGswith normalized workload entry IDs.CandidatePostASAPDAGsa timed stage.with_timing_for_rootencapsulates logical realization, lifecycle enumeration, shared indexing, assignment budgets and lazy iteration. Existing assembled graphs usefrom_post_asap_dag. The lifecycle enumerator is now crate-private.compile_physical_dag_candidatesdirectly consume the timed logical collection and returnCandidatePhysicalDAGs<Id>. The physical collection owns shared compiled graphs and cut descriptors; the publicPhysicalDAGCandidatewrapper and tuple-based compilation API are removed.Before this PR
A deployment used
Rc<QueryExpr>,Rc<SummaryNode>,PostAsapDagandCompiledPhysicalDagfor graph stages. It separately enumerated lifecycle choices, attached timing and assembled physical candidate wrappers.After this PR
CandidatePreASAPDAGs → CandidatePostASAPDAGs → CandidatePostASAPDAGs with timing → CandidatePhysicalDAGsA caller invokes
logical.with_timing_for_root(...), then passes the resulting collection directly tocompile_physical_dag_candidates(...). It can inspect physical graphs and diagnostics throughiter()and obtain typed execution cuts withmaterialize(index). Compatible assignments share one compiled graph; no intermediate stage selects a winner.Generation can be scoped to a workload root without expanding independent query combinations. Deployment selection must still coordinate shared state across roots. Missing window evidence must be resolved before installation. Downstream consumers must migrate the breaking API names before repinning.
Validation
cargo test --workspace: 1509 passed, 0 failed, across 91 test groups.cargo clippy --workspace --all-targets -- -D warningsand formatting checks passed.git diff --checkpassed.🤖 Generated with Claude Code