Repository navigation
spec(t27f): spec_graph_view -- the graph view, a deterministic layout of a spec graph (Closes #10034) - #10049
Merged
gHashTag merged 1 commit intoOct 17, 2026
Conversation
… of a spec graph (Closes #10034) The first T27F view of the core graph IR rather than of a topic map: a SpecGraph becomes numbers a host draws, as reel.t27 does for a reel frame. One column per node kind present; size, fill, stroke, dash and row order from the inference label; UNKNOWN nodes alone in a band with no edge end on them; every edge with a source line (a derived tested_by edge points at its call); widgets through spec_graph's node_widget; graphs validate_graph refuses keep its code, and an edge with no line is refused with code 19. Scalar fx_* host entry points for the two hand-read fixtures. Lab (Railway): t27c test-report 8/8, 0 vacuous; t27b --check 8 PASS; 5/5 mutation controls fail on both tools. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag
merged commit Oct 17, 2026
3456f62
into
claude/affectionate-mahavira-86b04d
23 of 27 checks passed
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.
Closes #10034
Stacked on #10029 (
specs/t27f/spec_graph.t27, the core graph IR, not merged yet): this PR's base is that branch, so the diff shows only the view. Merge #10029 first; GitHub then retargets this PR to master.What
specs/t27f/spec_graph_view.t27(modulet27f_spec_graph_view) is the first T27F view of a spec's own graph, not of a topic map. ASpecGraphbecomes numbers that a host draws, the wayreel.t27gives a host the numbers of a reel frame. Nothing in this PR draws pixels or writes markup.std.testingis at (1610, 408), with 0 edge ends.tested_byedge has no line of its own and points at the line of thecallsedge it is read back from (79, 84, 89).spec_graph'snode_widget, unchanged.VIEW_OK. A graph thatvalidate_graphrefuses keeps that code. An edge with no line to point at is refused withVIEW_ERR_EDGE_NO_LINE= 19, the first code after spec_graph's 0..18.fx_*functions, because a wasm export carries scalars only. Fixture 0 istutorial_08_graph, 1 iswith_suggestion, and any other number is the blank graph, which the view refuses. An index past the graph returns 0..claude/skills/t27f/SKILL.md("What exists") and thespecs/OWNERS.mdt27f row each gain the new row.Lab numbers (Railway,
~/t27-lanes/fs-lab.sh; nothing built or run on the Mac)Lab tree: the #10029 head
9d1d2c8, with this file shipped by base64 tar.54ad20408cb50a1f4fbe18981019f7ba4f13b87fa7f6940449e38b4479bf35e6(3 of 3 equal)ERR_EDGE_UNKNOWN_NODE;tested_bywith no call behind it passesvalidate_graphbut the view refuses it with 19; blank graph ->ERR_SPEC_PATHMutation controls, each run by sed on the lab copy and then restored. The final sha256 equals the original.
tested_bygets no line from its callthe_fixtures_are_drawnfails at compile time)label_styles_are_distinct_and_centred)MCP
t27f_viewglue: measured, not writtent27f_viewlives in gHashTag/t27-mcp, not in this repo, and its two PRs (gHashTag/t27-mcp#3, gHashTag/t27-mcp#4) are still open.I measured what a
specview would take there, in a scratch directory on the lab with nothing committed:t27c genof this file gives 1039 lines of Zig.export.zigchanged by +2/-1 lines (the module added, the dedupe widened to the second module, a comptime branch quota),zig build-exe ... wasm32-freestandinggives a 16523-byte wasm.fx_*entry points, anddemo_*from reel and deck is still there.spec-view.mjs(one rect per node, one line per edge, kind name plusL<start>-<end>as text, because strings cannot cross wasm) and about 6 lines inserver.mjs.It is not written. Two rules stop it:
specs/policy/own_language.t27, owner rule 2026-10-09). Over the whole diff, foreign files may not gain more lines than they lose. These ~30 lines would delete nothing.Either the owner approves those lines, or they are offset by deleting at least as many hand-written lines, or the host side waits for a generated JS backend that emits bodies (gen-js emits constants only today). Until then there is no SVG of tutorial 08 drawn through the MCP tool.
Not claimed
🤖 Generated with Claude Code