starmap: surface strategy reasoning and support/lowering signal#781
Open
fkguo wants to merge 4 commits into
Open
starmap: surface strategy reasoning and support/lowering signal#781fkguo wants to merge 4 commits into
fkguo wants to merge 4 commits into
Conversation
added 4 commits
July 9, 2026 23:15
An external portfolio of argument graphs surfaced four clarity gaps in the starmap surfaces; all four are fixed across graph.json, the dot/SVG emitter, and the interactive HTML: - Strategy reasoning was silently dropped: the exporter read a top-level reason key that compiled IR never carries. It now joins steps[].reasoning (falling back to metadata.reason), so the side panel shows the author's recorded support/lowering rationale. - Support vs lowering was not visually encoded. Strategy nodes and conclusion edges now carry a signed effect derived from the inline conditional-probability table (cp[-1] - cp[-2], the premise present/absent contrast at every given count); both renderers color scored edges on the same red-grey-green ramp and scale stroke width by magnitude, and the panel shows the probability pair plus an effect badge. Unscored strategy forms keep plain role styling. - Compiler-generated helper knowledge nodes (metadata.generated) start collapsed with their incident edges, behind a default-off filter bucket, instead of dominating the force layout; search skips hidden nodes so the camera never recenters on an invisible match. - Legends now tell the truth per graph: the HTML legend hides rows for absent kinds and gains the two edge-color rows; the stellaris SVG legend scopes glyph rows to the strategy/operator types actually present and documents the edge colors whenever the graph carries scored edges. Exported root claims get a topbar banner with the current root belief. The shipped starmap template is rebuilt from viz/.
The galileo and mendel CLI-authored walkthroughs and the author reference still showed --label as the Python-binding flag, a convention the author verbs migrated away from: note/question/variable have no --label at all, claim's optional --label needs --dsl-binding-name, and the relation verbs treat --label as the separate engine label kwarg. Every invocation now matches the flags the equivalence test actually runs on each PR gate; the gaia bayes group's own --label binding convention is documented as intentionally different, and equal's module docstring no longer claims --label is required.
A node highlighted by an earlier search query and then hidden through the type filter kept its boosted size and highlighted flag, so it reappeared highlighted when its bucket was re-enabled. Hidden nodes still never match a query, but they now always take the restore branch.
The observe reference showed only two of the three one-of input modes; the inline-prose mode the mendel walkthrough uses was missing.
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.
What
An external portfolio of argument graphs (nine compiled packages reviewed side by side) surfaced a set of clarity gaps in the
gaia inspect starmapsurfaces. This PR fixes them across graph.json, the dot/SVG emitter, and the interactive HTML, plus a CLI-docs drift found along the way.Graph exports and renderers (
feat(starmap))reasonkey that compiled IR never carries (Strategyhas no such field,extra="forbid"), so every strategy node shipped an empty reason. The exporter now joinssteps[].reasoningand falls back tometadata.reason— the two places the DSL'sreason=actually compiles to. In the reviewed portfolio this restored 12/12 previously-empty explanations per graph.effect=cp[-1] - cp[-2]from the inline conditional-probability table (the premise present/absent contrast at every given count — the two gated slots_infer_conditional_probabilitieswrites). Both renderers color scored conclusion edges on the same red-grey-green ramp and scale stroke width by magnitude; the side panel shows the probability pair and an effect badge. Strategy forms without an inline CPT stay unscored and keep plain role styling.metadata.generatedstart collapsed (with their incident edges) behind a default-off filter bucket, instead of being the dominant visual structure; search skips hidden nodes and sheds stale highlights.The shipped
starmap_assets/template.htmlis rebuilt fromviz/.CLI docs drift (
docs(cli))The galileo and mendel CLI-authored walkthroughs and
docs/reference/cli/author.mdstill showed--labelas the Python-binding flag; the author verbs migrated to--dsl-binding-name(note/question/variable have no--labelat all; claim's optional--labelrequires the binding flag; relation verbs treat--labelas the engine label kwarg). Every invocation now matches whattests/cli/galileo_demo/test_equivalence.pyactually runs on each PR gate;gaia bayes's own--labelbinding convention is documented as intentionally different.Testing
make checkgreen: 2936 passed (full suite), ruff + mypy --strict + hygiene hooks, 116 baseline snapshots unchanged-or-passing._has_effect_edgesgating.tsc --noEmitclean, template placeholder intact._wiki/_obsidian/_inquiry/github export) read IR or the parameterization payload and are unaffected (their suites pass).