Repository navigation
fix(insights): reconcile only defined words (M19c) - #43
Open
jgrodziski wants to merge 4 commits into
Open
jgrodziski wants to merge 4 commits into
jgrodziski wants to merge 4 commits into
Conversation
A module prompt listed every candidate word, with "no type defined it" for those its types skipped, and the model paid for an entry anyway (PetClinic: `birth` as an "undefined term", `base` given a meaning no type had). glossaryAsked keeps the candidates a type defined: the prompt lists those and the receipt keeps only those. The candidates stay what is hashed, so no record goes stale. The estimate still counts a word a type not yet explained may define. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKCVgyop39vhNa45r7zM8w
docs/insights.md, docs/cli.md, the side-car and explain references: a module reconciles the candidates a type defined. IN-5 also stops saying a lexicon correction re-explains exactly the units whose words it changed: through the dependency fingerprints it reaches their dependents. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKCVgyop39vhNa45r7zM8w
A cold module prompt no longer prints "no type defined it" lines: the Java fixture's plan is 114 136 prompt tokens (module 4 990), completion unchanged at 52 415, $0.0429. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKCVgyop39vhNa45r7zM8w
PLAN 20.3: asked = a type defined it, the candidates stay hashed, cut then filter, and what the estimate counts. 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 | bac6f63 | Commit Preview URL Branch Preview URL |
Nov 03 2026, 01: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.
Eighth step of milestone M19c in PLAN.md §20 (word cloud / glossary, #6). Stacked on #42 (itself on #40, #39, #38, #37, #36 and #35): this PR's diff is the four commits after #42.
A module is no longer asked to reconcile a word that none of its types defined. This is fix (c) from the PetClinic findings.
Why
A module's glossary candidates are the words its types spell, cut at
--terms. A type's answer can leave some of its words undefined. The module prompt still listed those words, with a line- birth: no type defined it. On PetClinic, 2 of the ~50 words the modules were asked to reconcile were in that state, and the model paid for an entry for both:birth(PetskippedbirthDate's first word): theownermodule wrote{"concern": "ambiguous", "sense": "undefined term", "meaning": "No type in this module's supplied explanations defines an independent meaning for birth."}.base(BaseEntityskipped it): themodelmodule wrote it a meaning anyway, "the superclass role of BaseEntity". No type had said so.The first entry is paid noise; the second is an unsourced definition in a glossary that claims to reconcile what its types said.
The change
glossaryAsked(member)incontext.tskeeps the candidates that have at least one type entry. One function states the rule, and it is used in two places:glossarykeeps only entries for those words. An entry for a word the prompt did not list is dropped, as a word not asked already was.glossary. Modules whose types spell no word already worked this way.GlossaryWord.pendingmarks a word that some type spelling it has nowordsfor yet: not yet explained, or explained under prompt 1. The estimate needs this (below).Worth a look in review
--dry-runstatuses match fix(vocabulary): no definitions of function words (M19c) #42's unit for unit (diffof status and id per line: identical).--terms Nstill cuts the candidates first, so a module asks at most N words, and fewer when some went undefined.wordsand none of them defined it.birthandbase, at 125 each).docs/insights.mdIN-5 still said a lexicon correction re-explains "exactly the units whose words it changed". fix(vocabulary): no definitions of function words (M19c) #42 corrected the same claim infingerprint.tsbut not here; it is corrected in this PR's docs commit.Docs
docs/insights.md,docs/cli.md, the side-car reference andexplain's--termsrow all say a module reconciles the candidates a type defined.Verification
order, line, price, sort, unit, keywhere it now listsorder, line. Its first version passed against the base: its line parser skipped- price: no type defined it. The parser was tightened until the test failed on the base.- total: no type defined itwhere none is expected now.member.glossary) fails "asks a module about no word its types left undefined, and drops an entry for one".askedassertions: 2 with both types explained, 4 with one pending or under prompt 1, 6 cold.unknown output format "llms", pnpm -r build fails on a fresh clone: unknown output format "llms" for kind "home" #23)../build.sh --ts --seapasses its smoke gates.scale.test.ts, which timed out under the full parallel run and passes alone (the known flake; the analyzer is untouched).~/spring-petclinicwas not opened by this branch.Still owed for M19c:
docs/vocabulary.mdand the README;Part of #6.
🤖 Generated with Claude Code
https://claude.ai/code/session_01PKCVgyop39vhNa45r7zM8w