Conversation
`--post-asap` without `--planner-cost-json` ran nothing. The gate exists because a post-ASAP export asserts a cost-ranked decision, and dag_export owns no deployment evidence with which to defend one. But a user with no deployment yet still wants to see which replacements the search finds, which one it commits to, and what the merged post-ASAP DAG looks like — and that needs the structure to be real, not the numbers. Add `--default-cost`, mutually exclusive with `--planner-cost-json`. It ranks candidates with `DefaultCostModel` and keeps `export_model` as `None`, so every annotation stays `CostSource::Unavailable` with no `value`, `workload_cost_summary` degrades to an unavailable summary, and the viewer renders "Not estimated". The structural number decides which candidate wins and is then discarded, never serialized. The flag pair is rejected rather than given a precedence order, before the document is parsed, because the two disagree about what the export may claim, not just about which model ranks. `--topk-margin-json` still applies under `--default-cost`: accuracy evidence is orthogonal to cost evidence. Absent both flags the export is byte-identical to before; only the stderr line differs, which now names both cost sources instead of demanding evidence. This is not a revival of what 5dbf4d9 removed. That commit deleted two things: `winner_cost_annotations` emitting a modeled `CostAnnotation` from `AnalyticalCostModel`, and the `analytical.map_or(&default_model, ...)` choice of which model ranks. Only the latter returns. A `DefaultCostModel` number was never an exported cost, and structural node counts remain intentionally unusable as a cost fallback. Refs #431 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
--post-asapwithout--planner-cost-jsonran nothing. The gate exists because a post-ASAP export asserts a cost-ranked decision, and dag_export owns no deployment evidence with which to defend one. But a user with no deployment yet still wants to see which replacements the search finds, which one it commits to, and what the merged post-ASAP DAG looks like — and that needs the structure to be real, not the numbers.Add
--default-cost, mutually exclusive with--planner-cost-json. It ranks candidates withDefaultCostModeland keepsexport_modelasNone, so every annotation staysCostSource::Unavailablewith novalue,workload_cost_summarydegrades to an unavailable summary, and the viewer renders "Not estimated". The structural number decides which candidate wins and is then discarded, never serialized. The flag pair is rejected rather than given a precedence order, before the document is parsed, because the two disagree about what the export may claim, not just about which model ranks.--topk-margin-jsonstill applies under--default-cost: accuracy evidence is orthogonal to cost evidence.Absent both flags the export is byte-identical to before; only the stderr line differs, which now names both cost sources instead of demanding evidence.
This is not a revival of what 5dbf4d9 removed. That commit deleted two things:
winner_cost_annotationsemitting a modeledCostAnnotationfromAnalyticalCostModel, and theanalytical.map_or(&default_model, ...)choice of which model ranks. Only the latter returns. ADefaultCostModelnumber was never an exported cost, and structural node counts remain intentionally unusable as a cost fallback.Closes #431