feat(core): add stable semantic node ids to inspectScreen - #50
Merged
Conversation
mahyarmlk
force-pushed
the
feat/inspect-screen-stable-node-ids
branch
from
June 26, 2026 07:39
9492a41 to
2a4fe65
Compare
…ty-slug fallback, deterministic duplicates
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.
Summary
Add deterministic, human-readable
semanticIdfields toinspectScreen()output for all inspected node types. AddsemanticNodeIdto diagnostics. Fix duplicate label/name handling to produce unique suffixed IDs.Why
inspectScreen()output is used for diagnostics, docs, tests, future DevTools, and graph snapshots. Previously, node IDs were already deterministic but had no duplicate handling and no cleankind:slugformat. This change makes IDs stable, unique, and easier to use.Changes
semanticId: stringto all inspected node types inInspectedScreensemanticNodeId?: stringtoGraphDiagnosticnextSuffix()toregistry.tsfor deterministic duplicate ID resolutionAskBuilder,ActBuilder,FlowBuilder,SurfaceBuilder, and resource builder to handle duplicate labels/namesslugify()andsemanticNodeId()helpers tograph.tsSpecification.md,MVP-Checkpoint.md)@intent-framework/coreID Scheme
Tests
6 new tests in
packages/core:inspectScreen includes semanticId for all node typescalling inspectScreen twice on the same screen returns the same IDscreating an unrelated screen before the target screen does not change semantic IDsduplicate labels get deterministic suffixed semantic IDsdiagnostics include semanticNodeId alongside nodeIdresource semanticId is stable and independent of runtime stateValidation
pnpm test: 316 tests pass (133 core, 86 dom, 72 router, 21 testing, 4 server)pnpm typecheck: passespnpm build: passespnpm lint: passespnpm pack:check: passespnpm changeset status: shows@intent-framework/corepatch bumpKnown limitations
None.
Follow-up
None.