feat(admin): /dispatch graph, the topology as text (issue #54) - #168
Merged
Conversation
The graph's first consumer: renderGraph (pure, render.mjs) formats the assembled model as folder groups, triggers with run stats and dangling badges, skills with reachability badges, and edges labelled by their evidence class, then the counters and the caps line, which renders ALWAYS: edges without their bounds invite the reader to extrapolate an unbounded chain fabric out of a depth-1, width-2 reality. assembleGraph (index.ts, the assembleCosts twin) reads triggers FRESH every call (OQ-008: a cached topology is a stale topology), the resident schedulers, one bounded record scan, and the enumerations through collectGraphInputs. Deliberately NOT an LLM-callable tool: the enumeration spawns git per folder, and the topology is for the operator's eyes (DES-CLI-SURFACE ungated tier; tool-count pin stands). readTriggers now also returns the RAW entries count, because the attribution range guard must accept an index pointing at an unusable-but-present row. New wiring pin: USAGE and KNOWN_SUBCOMMANDS agree member-for-member (two copies of one list that nothing pinned together until this amendment widened both). Specs: NEW REQ-TOPOLOGY-GRAPH (honesty rules as requirements, the REQ-COST-ANALYTICS discipline applied to topology). REQ-ADMIN-VIA-PI-EXTENSION and DES-ADMIN-VIA-PI-EXTENSION AMENDED (command list). REQ-COST-ANALYTICS UNCHANGED, checked. Docs: docs/graph.md, README and workflows.md cross-links. Suite in the CI posture: 2120 pass, 0 skipped; admin bundle builds. Signed-off-by: Rob Boerman <robboerman@live.nl>
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.
Fourth slice of issue #54: the graph's first consumer. Stacked on #167 (merged).
What
renderGraph(pure,render.mjs): folder groups, triggers with run stats and dangling badges, skills with reachability badges, and edges labelled by their evidence class — then the honesty counters and the caps line, which renders always: edges without their bounds invite the reader to extrapolate an unbounded chain fabric out of a depth-1, width-2 reality.assembleGraph(index.ts, theassembleCoststwin): triggers read fresh every call (OQ-008: a cached topology is a stale topology), resident schedulers, one bounded record scan, the enumerations throughcollectGraphInputs, then the pure fold. All I/O stays in the read-model.case "graph"in the subcommand switch,KNOWN_SUBCOMMANDS+USAGE+ completions. Deliberately not an LLM-callable tool (the enumeration spawns git per folder;DES-CLI-SURFACE's operator-typed ungated tier; the registered-tool count pin stands).readTriggersnow also returns the raw entriescount— the attribution range guard must accept an index pointing at an unusable-but-present row.Specs (same PR)
NEW
REQ-TOPOLOGY-GRAPH: the honesty rules as requirements, on theREQ-COST-ANALYTICSprecedent (the estimate-never-mislabeled-as-truth discipline applied to topology: a mention must never read like history, a stale index must never land on today's row, a capped scan must never read as complete coverage).REQ-ADMIN-VIA-PI-EXTENSIONandDES-ADMIN-VIA-PI-EXTENSIONAMENDED (command list).REQ-COST-ANALYTICSUNCHANGED, checked.Docs
New
docs/graph.md(edge/badge reference with the honesty rules in operator words), README anddocs/workflows.mdcross-links (no dashes as punctuation).Tests
Canned-model render block (header anchored, exact-equality empty render, truncation/dropped-edge surfacing, negative claims: a potential line never borrows observed's vocabulary, no matched-label text anywhere); the offline-deterministic channel wiring test (unparseable VALKEY_URL degrades synchronously — a dead port would leak a stray async error event into the runner, which is exactly why this suite never opens real connections); the agreement pin; completion coverage. Suite in the CI posture: 2120 pass, 0 skipped; admin bundle builds.