Repository navigation
feat(serve): the glossary in the page (M19c) - #39
Open
jgrodziski wants to merge 6 commits into
Open
jgrodziski wants to merge 6 commits into
jgrodziski wants to merge 6 commits into
Conversation
answerGlossary(store, { term, scope, limit }, placement): the entries
of the entities under a module or a type, and the modules'
reconciliations, for serve's /glossary.json. Which entity is under a
scope is the model's, so the placement is injected: this package still
never opens a model. GLOSSARY_ANSWER_KIND is the page's pin.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PKCVgyop39vhNa45r7zM8w
The third lookup of codegraph serve: what the explained entities under a scope said a word means. It reads the store /insight.json reads (one reader, opened on first request, now shared) and places entities by the fold the carriers use, built at the first request a store can answer. No store is a quiet 404, as for /insight.json. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKCVgyop39vhNa45r7zM8w
The insight and carriers loaders each carried the same "ask once per URL, stop asking a server with no such route" logic; lookup.ts holds it once, before a third lookup needs it too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKCVgyop39vhNa45r7zM8w
The Vocabulary tab lists, under a clicked word's carriers, what the explained entities of its scope said the word means: the modules' reconciliations, then each entity's entry, in the explanation panel's inference colour and badge. An entry reveals its entity in Navigate (a member, its type). No store, no route: nothing is shown. The Navigate panel reads a block's words and glossary by name, as "order (domain) — sense. Meaning. In Order · 0.90": generically the identifiers stood where a definition reads, and the types that disagree on a word were dropped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKCVgyop39vhNa45r7zM8w
serve's third lookup, /glossary.json, in docs/cli.md and the website's serve page (and the daemon's lack of it); the Vocabulary tab's glossary on the vocabulary page; answerGlossary and its placement in docs/insights.md. The --insights help now names both panels it feeds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKCVgyop39vhNa45r7zM8w
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKCVgyop39vhNa45r7zM8w
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
codegraph | bbdf663 | Commit Preview URL Branch Preview URL |
Oct 28 2026, 10:48 PM |
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.
Fifth step of milestone M19c in PLAN.md §20 (word cloud / glossary, #6). Stacked on #38 (itself on #37, #36 and #35): review those first. This PR's diff is the six commits after #38.
It completes §20.4's Readers item:
codegraph servegains/glossary.json, and the page shows what the explanations said a word means, in both panels, each entry marked as a model's reading.What the page shows
LLM glossary) and names the models that wrote it. An entry is one click from its node in Navigate; an operation reveals its type.wordsandglossarynow read asorder (domain) — a customer's request. What a customer asks the shop to deliver. In OrderService · 0.60. The generic renderer had put the identifiers where a definition reads, and dropped a glossary entry's disagreeing types.The code
@codegraph/insights:answerGlossary(store, { term, scope, limit }, placement)andGLOSSARY_ANSWER_KIND(codegraph.glossary/1), besidewordReport./glossary.json?term=WORD[&scope=ID][&limit=N](glossary-route.ts). The store opener moves out ofinsightLookupintostoreReader(path), which both routes share.glossary.ts(parser and loader), the list inVocabularyView, and the named reading inblockFacts. The insight and carriers loaders each had their own "ask once, stop when there is no route" logic; it is now one helper,lookup.ts, in its own refactor commit.Worth a look in review:
answerGlossarytakes aPlacement(an id → its containing module and type). The CLI builds it from the analyzer's fold over the entities the view keeps, the same rule/carriers.jsonuses, so a word's carriers and its glossary cover the same entities. The insights package still opens no model.unknown-scope, 404./insight.json. No store is{status: "no-store"}, 404. No term, or a limit that is not a whole number, is 400. The placement is built at the first request a store can answer; then the route lets the graph go, as the carriers route does.meaningper entity. The word index doesn't hold it, a decision from feat(insights): the store indexes the words (M19c) #36; the Navigate panel shows it from the block. The modules' reconciliations come whole, meaning included.blockFactsstays generic except forwordsandglossary, read by name; an item of any other shape falls back to the generic reading. This is the one exception to "the panel names no field".insights --wordorders them. Each list is cut at 200, with its total, so the tab says "the first 200 of 1,908 entries".Docs
docs/cli.md: the third lookup, and the daemon's lack of it.docs/insights.md:answerGlossaryand its placement.servepage (three lookups, the--insightsrow) and thevocabularypage.--insightshelp: now names both panels it feeds.Verification
unknown output format "llms", pnpm -r build fails on a fresh clone: unknown output format "llms" for kind "home" #23).pnpm run gen:schemasleavesschemas/unchanged../build.sh --ts --seapasses its smoke gates.glossary-route.test.tsof 6 on the Java fixture: the fold, the view, 404 and 400, no store with no file created and no placement built, a store that appears later, the placement built once; plus the wiring inserve-command.test.ts);OrderService, and the panel reached from a glossary entry;order, cut and scrolled.orderover the corpus is 1,908 entries, of which 200 are sent (53 KB);Still owed for M19c:
docs/vocabulary.mdand the README.--word ordertiming, and these readers on a re-explained Broadleaf store.Part of #6.
🤖 Generated with Claude Code
https://claude.ai/code/session_01PKCVgyop39vhNa45r7zM8w