Repository navigation
diagnosis counts over the failure graph instead of listing its chains - #44
Merged
Merged
Conversation
T2. Scenario-guided diagnosis expanded every chain (exponential in model depth) and filtered and ranked the list before each probe decision. It now reads the sidecar's graph unexpanded (scenarios.LoadSiblingSet) and decides over it (occamOnGraph): - liveness per node (the step's state) and per edge (a holding redundancy group), each decided once; - scenarios.Count: live chains and chains per component by DP over the live graph, per root since group carriage depends on the root; - scenarios.LiveByLength: live chains layer by layer, only as far as asked; length ranks first, so the shortest layer holds the decision, ranked as before (suspect, elimination count, scenario order). The chains counted are Expand's exactly: a property test compares counts, per-component counts and the chains layer by layer against enumeration over 1,200 random graphs and liveness patterns, and fails on a dropped edge check or a dropped root-alone rule. The occam differential test now also runs every random store over the graph: identical decisions, with Eliminates naming the first 10 and EliminatesCount counting all, which is what MCP and mgtt plan show. A cyclic graph falls back to listing. BenchmarkScale: 32 ms per decision at 6 tiers (listing: 2.7 s to load, 0.9 s to decide), 68 ms at 8 and 148 ms at 10, where listing never finished.
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
This is step T2 of the improvement plan, the last open engine item from G2.
Why
The chains a model allows grow exponentially with its depth. Before every probe decision, scenario-guided diagnosis listed all of them, then filtered and ranked the list. The scale benchmark showed the wall: about 0.4M chains at 6 tiers, 2.4M at 7, and 8 tiers did not finish.
What changes
scenarios.LoadSiblingSet). This applies tomgtt diagnose,planand MCP.occamOnGraph):scenarios.Countgives the live chains and the chains through each component, by DP over the live graph. It runs per root, because group carriage depends on the root.scenarios.LiveByLengthbuilds live chains layer by layer, only as far as asked. Length ranks first, so the shortest layer holds the decision, ranked exactly as before: suspect, elimination count, scenario order.Eliminatesnames the first 10 scenarios, andEliminatesCountcounts all of them. That's what MCP andmgtt planalready show.simulate --from-scenariosand--fuzzstill iterate chains.Exactness
Count's live and per-component counts andLiveByLength's chains, layer by layer and ID by ID, equal brute force overExpand. It fails on a dropped edge check and on a dropped root-alone rule (both checked).Eliminates(first 10) and count. A deterministic case covers Done.Speed (
BenchmarkScale)Verified
go test ./...passes 22 packages;make downstreampasses 16/16.