SOF-8028: add concept documentation and free docs/ for it - #418
Open
timurbazhirov wants to merge 1 commit into
Open
SOF-8028: add concept documentation and free docs/ for it#418timurbazhirov wants to merge 1 commit into
timurbazhirov wants to merge 1 commit into
Conversation
Eleven pages explaining ESSE's approach and the reasoning behind it: why schemas-first, the layering from primitives to entities, entity anatomy and the material variant family, CateCom categorization, behavioural mixins, conventions, the pipeline, consuming ESSE, contributing a schema, and a glossary. Published at schemas.mat3ra.com/docs. Rendered by src/js/scripts/buildDocsPages.ts with marked and the site's own chrome. No static site generator: eleven pages do not justify a toolchain, and the web surface is otherwise build-free. Pages embed generated fragments expanded from the entity graph at build time, so prose stays prose in git while published pages carry live counts and relationship lists. An unknown fragment fails the build, and all pages render before any is written so a failure never leaves a half-written site. Frees docs/ for documentation sources by renaming the CI Pages staging directory to site/. The staging directory's name was always incidental -- peaceiris publishes its contents to gh-pages -- so a folder named docs that could not contain docs was a naming bug rather than a constraint. Also deletes the BUILD_DOCS branch in build_schemas.py, which wrote docs/py/** that nothing in CI invoked, and corrects build_schemas.ts's stale default BUILD_PATH comment. No Mermaid: with the Entity Map shipped, a static diagram would duplicate it worse, so pages link into the live map instead. One fewer CDN dependency. 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-8028 · Epic: SOF-8025
Plan:
plan/review/2026-08-16-concept-documentation.mdChained onto #417 — review that first; this PR's diff is against
feature/SOF-8027.Eleven pages explaining how ESSE is put together and why, published at
schemas.mat3ra.com/docs. The explorer shows you a schema; the map shows you how schemas relate; these pages are the part neither can tell you.The pages
*_categoryvs*_directorysplitallOfstacks platform behaviour onto domain payloads$ids, includes, generative keys, formatting, URL contracts, the lint rulesPlus a landing page. The first four are the argument and read in order; the rest are reference.
Documentation that cannot rot
Every count, relationship list and coverage figure is a generated fragment, expanded from
graph.jsonat build time:<!-- generated:entity-relationships:material -->renders as
Six fragment types:
corpus-totals,layer-inventory,hub-table,mixin-usage,example-coverage,entity-relationships:<id>. Prose stays prose in git; the published pages carry live numbers. An unknown fragment name fails the build, and every page renders before any is written, so a failure never leaves a half-written site.Schema names throughout link to
/map/#/entity/<id>, so a reader can jump from a claim to the thing itself.The
docs/→site/renameDocumentation sources and the Pages staging directory cannot both own
docs/. The staging directory's name was always incidental —peaceirispublishes its contents togh-pages, andschemas.mat3ra.comfronts that — so a folder nameddocsthat must not contain docs was a naming bug, not a constraint. It is nowsite/, gitignored, anddocs/holds the sources.Two pieces of dead weight went with it:
build_schemas.py'sBUILD_DOCSbranch wrotedocs/py/**that nothing in CI invoked. Deleted rather than migrated — the JS build is the docs source of truth per the README.build_schemas.ts's defaultBUILD_PATHclaimed./docs/js/, which had not been true for some time. Now./dist/js/; no behaviour change, since CI sets it explicitly.Rollback is a single-commit revert;
gh-pageshistory is untouched.Notes for the reviewer
markedis independencies, notdevDependencies, matchingjson-schema-to-typescript: both are libraries used only by build scripts undersrc/js/scripts/, which is transpiled and exported.Testing
Built and driven in a browser: 11 pages render, all 11 nav entries present, generated tables expand, zero broken internal links across every page, zero page errors. Verified that an unknown fragment fails the build:
🤖 Generated with Claude Code
Generated by Claude Code