SOF-8029: tie the three surfaces together and check the links - #419
Open
timurbazhirov wants to merge 1 commit into
Open
SOF-8029: tie the three surfaces together and check the links#419timurbazhirov wants to merge 1 commit into
timurbazhirov wants to merge 1 commit into
Conversation
Docs, Explorer and Entity Map become one site rather than three pages that happen to share a host. - A shared Docs / Explorer / Map header on all three surfaces. - The explorer gains a 'View on map' link for the open file, and the welcome screen points newcomers at the documentation and the map. - src/js/scripts/checkSiteLinks.ts walks the assembled site and fails the deploy on a broken internal link. The site is stitched from four sources that link into each other, and nothing checked that those links landed anywhere. - Subresource integrity on both CDN dependencies. Monaco's covers the loader only: the AMD loader fetches editor.main at runtime and those requests cannot carry integrity attributes. - README documents the three surfaces, the docs/ and plan/ directories, and the schema lint. Corrects SOF-8026's claim that published path to $id is not invertible. It is: an $id is a path with underscores replaced by dashes, so no $id contains an underscore and the mapping is injective. Only the source path is unrecoverable, because a source directory may hold a literal dash. A pure publishedPathToSchemaId is now exported, which lets the explorer link to the map without loading graph.json. Verified end to end in a browser on the case that motivated the doubt: schema/properties_directory/non_scalar/file_content.json links to #/entity/properties-directory/non-scalar/file-content, whose panel links back to the original published path. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ANArWM4ehvsXKNzQpQgx1
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.
Ticket: SOF-8029 · Epic: SOF-8025
Plan:
plan/review/2026-08-16-site-integration-and-release.mdChained onto #418 — the last of five; this PR's diff is against
feature/SOF-8028.Docs, Explorer and Entity Map become one site rather than three pages that happen to share a host.
What is here
check-site-links, a build step that walks the assembled site and fails the deploy on a broken internal link. The site is stitched together from four sources that all link into each other, and until now nothing checked those links landed anywhere.docs/andplan/directories, and the schema lint.A correction to SOF-8026
That PR recorded published-path →
$idas not invertible, and shipped a lookup table instead of a function. That was wrong, and the mistake is worth stating plainly because it changed the design here.An
$idis a path with underscores replaced by dashes — so no$idever contains an underscore, the mapping is injective, and the inverse is exact. What is genuinely unrecoverable is the source path, because a source directory may contain a literal dash that the round-trip flattens.The practical payoff: the explorer can link into the map by string rule, without loading a 500 KB
graph.jsonjust to invert one path.publishedPathToSchemaIdis now a pure function;buildPublishedPathIndexstays for callers that prefer a map.Verified end to end in a browser on exactly the case that caused the doubt:
Testing
The site was assembled exactly as CI does — resolved schemas,
graph.json, docs, explorer, map,files.json— and driven in a browser:Link checker: all internal links resolve across the whole site; a deliberately broken link fails it:
Schema tests still green (25 passing), now including the pure-inverse round trip over every node.
Notes for the reviewer
editor.mainand friends at runtime, and those requests cannot carry integrity attributes. Vendoring Monaco is the only real fix; out of scope here, and noted in the plan document.plan/review/with## Statussections recording what shipped and where it diverged.🤖 Generated with Claude Code
Generated by Claude Code