Repository navigation
Roadmap: consequence standing, extension law, scenario evaluation, customer CI failover - #13826
Conversation
…io evaluation, customer CI failover Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
Requesting bounded structural repairs at 4b49ac7.
The stack's top-down decomposition is right. #13801 is the sound root: the demand's declared objective governs resource choices. #13825 adds the shared onboarding/conformance interface. This PR then correctly separates (a) consequence standing, (b) the extension law, (c) deterministic joint-scenario evaluation, and (d) customer CI failover as another consumer rather than another scheduler.
Three issues block this head:
-
The roadmap dependencies do not close over what the nodes consume.
fabric-customer-ci-failoverrequires the consequence-standing carrier in its own first slice (spend, time to accepted result, repeated work, liability, plus startup/storage unknowns), but it is held only byfabric-demand-objective. That permits it to dispatch before the shared consequence carrier and re-mint those dispositions locally. Add a dependency onfabric-consequence-standing. Likewise,fabric-scenario-evaluationclaims the extension law's must-preserve gate; either hold it behindfabric-dimension-extension-lawor state a single ownership direction so these do not become two preservation authorities. -
Customer-CI arbitration hard-codes a local priority rule:
Scarce recovery capacity ... goes by delay relative to each customer's own allowance. Delay relative to allowance is a useful axis, and a contract may explicitly select a max-normalized-disruption policy, but it is not the universal winner across customer objectives. As written this repeats the exact problem the shared interface removes: one local score stands above cost, accepted work, SLO constraints, release criticality and other contract terms. Carry normalized delay as a declared consequence/constraint; let the owning contract/objective select among the non-dominated allocation candidates. -
Scenario regression needs a fixed decision authority.
A new policy must beat the old one/ regret no worse is only meaningful when subject, objective, constraints, candidate field and evaluation metric are held fixed. #13801 deliberately requires different objectives to produce different winners; a latency-sensitive policy must not be gated as a regression against debt-payoff under one shared regret score. Scope the paired gate to model/implementation revisions under the same decision authority, and treat a changed objective as a new decision. The historical controls should name discriminating scenarios/invariants rather than claim universal economic inferiority. In particular,history-keyed-limit ... loses to the current policyis presently ambiguous because the live ctrl policy introduced by #2333 is itself history-keyed.
Stack note: #13825 remains blocked on the one wording repair already requested there. A declared bounded feedback/update law must be allowed to consume a loss observation without an operator policy revision on every step; otherwise this PR's black-box/convergence work is classified as a permanent departure. #13801 is merged and remains the correct foundation.
No other blocker found. The consequence disposition, unknown-never-zero rule, joint-scenario requirement, transition-as-candidate framing, storage-as-supply treatment, fencing/readback cases, and deterministic seeded corpus all fit the intended system.
At review time witnesses and heal were still in progress.
…tration, fixed-authority revision comparison Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
APPROVE at 542a07b.
The three requested repairs are present and close the prior blockers:
- Dependency closure: customer CI failover now depends on consequence standing; scenario evaluation now also depends on the dimension-extension law, and the node explicitly states that the scenario runner is the implementation consumed by that law's preservation control.
- Customer-CI arbitration: normalized delay is now an axis reading or contract constraint, not a universal score. Scarce capacity is selected over the complete candidate field under the affected demands' declared objectives and constraints; a contract may explicitly choose minimax normalized disruption.
- Fixed-authority evaluation: paired scenario comparisons now hold subject, objective/valuations, constraints, candidate-field authority, horizon and outcome interpretation fixed. A changed objective is a different decision, and the historical REDs are structural rather than unsupported universal profitability claims.
I rechecked the complete one-file diff and edge additions. The four-node decomposition remains coherent: demand objective -> consequence standing -> extension law / deterministic joint-scenario evaluation, with customer CI failover consuming the shared objective and consequence carrier. No further blocker found.
Land once required checks pass; heal and witnesses were still in progress at my last check.
Adds four roadmap nodes under
fabric-bringup. They extendfabric-demand-objective(#13801) with what the operator side-chat discussion established and no PR yet carried.fabric-consequence-standingfabric-dimension-extension-lawfabric-scenario-evaluationfabric-customer-ci-failoverEach node states boundary, displaced cost, first slice, RED control, out of scope and handback. Customer CI failover joins the conformance-decision consumer list in that node's first slice; it is not added here, because #13825 is open against the same rows.
Verification: a remote
__no_such_function__run returns NoSuchFunction, so the roadmap authority resolves and typechecks.ROADMAP.mdis not regenerated: #13810 (open) stops committing it, and the cutover owner asked lanes not to regenerate it meanwhile.🤖 Generated with Claude Code