Repository navigation
HDL phase 1: what a SystemVerilog product needs from the platform - #79
Merged
Merged
Conversation
added 5 commits
October 17, 2026 00:21
…n, MIME Toolkit changes T3-T7 of ide/hdl-ide-plan.md, each additive with the Python behaviour as the default: - platformEntityItems (storage options, API, toolkit input): false leaves the palette's Entities category to the product's own entityPaletteItems. - openability.decoratorName is optional; with only a probe, an undecidable probe answers unknown and the platform opens the file. - navigation: 'none' installs no Python navigation provider and the model source's caller scan and source walk answer empty. - chat.sourceMimeType names what the agent receives the file as. Claude-Session: https://claude.ai/code/session_01UtmwstZRcWJeg3C69s1TnS
…ayload Side and direction were one thing, computed in five places that must agree: the shared port anchor, the gmodel source, ELK's port sides and row order, the label pass and the client views. So a handshake's ready, an output answering an input bundle, could only sit on the far edge and loop around both nodes. A port may now carry a side (west/east) and a group, and a boundary node a meta.side; they are honoured over the direction everywhere the side is read (cal:portSide, cal:portGroup, cal:boundarySide). A boundary node placed in the other margin takes the other layer, its port faces the diagram and the client mirrors the glyph. The direction, the port type and the CSS classes that say input or output are untouched. Absent, everything is as before. An edge with meta.role bidirectional (an HDL inout net) is drawn without an arrowhead. The toolkit normaliser passes role, side, group and width through. Tests for the anchor, the gmodel and configurator, the normaliser. Claude-Session: https://claude.ai/code/session_01UtmwstZRcWJeg3C69s1TnS
A graph document carries its own errors at the root, beside graph, where the diagnostics walk over the graph never looks; on the CLI path a Python runtime's load errors stay in the diagram's overlay, and the parity tests pin that. A compiler's errors are a different matter. A product that says documentErrorsToProblems on its profile input gets them published with their file, line and column. Default off, so nothing changes for anyone else. Claude-Session: https://claude.ai/code/session_01UtmwstZRcWJeg3C69s1TnS
A hierarchy export of a large netlist repeated one absolute path on every node, port and edge of every graph, a third of the export. A producer may now leave the file out where it is the graph's meta.file; the document reader puts it back before anything navigates, on a node's source, referencedSource and authoredSource, a port's and an edge's source. A document with every file spelled out, or whose graph names no file, is returned as it is and reads exactly as before. Claude-Session: https://claude.ai/code/session_01UtmwstZRcWJeg3C69s1TnS
The configurator derived elk.port.side from the port's direction alone, and that is the only side ELK ever sees. A bundle's ready, placed in the other margin by the producer, was therefore routed to as if it sat on the far edge: the wire came around the outside of the margin and crossed the whole boundary node, label and all, to reach the glyph. cal:portSide now wins, as it already does for the anchor, the rows and the glyph. Without one the direction decides exactly as before, so no other diagram moves. Claude-Session: https://claude.ai/code/session_01UtmwstZRcWJeg3C69s1TnS
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.
Five platform changes made for sv-ide, a sidecar product whose runtime is a Python compiler frontend (slang) rather than a Python workflow runtime. Each keeps the core neutral: the platform learns a fact, never a vocabulary. Default behaviour is unchanged for every existing product; the toolkit's parity tests and the neutrality gates pass.
platformEntityItems: falseleaves the palette's Entities to the product;openability.decoratorNameis optional;navigation: 'none'installs no Python navigation and skips the caller scan;chat.sourceMimeTypenames what the agent receives the file as.side(west/east) andgroup, and a boundary node'smeta.side, are honoured over the direction, from the shared port anchor through ELK's port sides and rows, the label pass, the client hit areas and a mirrored boundary glyph. A handshake'sreadysits beside thevalidit answers, and the wire between two nodes is one straight run.role: bidirectionaledges draw without an arrowhead.documentErrorsToProblems— a product may ask for a document's root-levelerrors(a compiler's) to reach the Problems panel with file, line and column. Default off, as the diagnostics parity tests pin.graph.meta.file, and the reader puts it back.elk.port.sidefrom the direction alone, so areadyplaced in the other margin was routed to from across its own node, label and all.Gates on this branch: typecheck 5/5, neutrality 5/5, diagram-server 341 tests, sidecar-toolkit 272 tests.
https://claude.ai/code/session_01UtmwstZRcWJeg3C69s1TnS