Repository navigation
Conversation
…posed) Proposes the API the 2026-10-28 Lexicon-surface decision left open: add/remove by words and a reading kind, readings_of for queries, a constructor narrowed to the lists and masks, the choice recorded on the Lexicon so chained choices union, and a 2.x pickle loaded where its sets translate back to readings. Proposed, not decided; nothing is built. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The default's base holds every index row, its off readings included, so a choice can still turn them on; a 2.x lexicon with a word in both titles sets translates as a title; the caller counts leave out surnames, which stays; the field count and the ADDED_IN pointer corrected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A 2.x pickle translates as the default plus a log; a lexicon keeps its base and an ordered edit log apart; replace carries the underscore state; the default's base loads lazily; the views read the lexicon's kinds; an add that changes nothing warns; equality and | state the choice; the strict supersession is marked; name and relation are categories only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A 2.x state translates onto the nearer named base, so a 2.8 pack fragment stays empty-based; the warning is narrowed to a title made phrase-only by a given reading under no choice; bases compare by name, a snapshot by its rows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 4i-b row names the narrowed warning; the 2.x translation removes a word first only where the base holds it, so the 2.8 fixture's lexicon equals its fresh 3.0 spelling. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Logs compare as written; parser_for recompiles and refuses with the choice named; the underscore choice parameters are validated, a private exception to 3j; a 2.x chosen parser loads with no choice; the title warning fires only on a new title kind; bound_given is a fifth named kind; parser_for joins a pack fragment under the caller's lexicon. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dings (#754) The title warning is decided, with its own entry and Standing line; it warns save a property update of a held title reading, so a re-add of dean's own kind warns again. No 2.x pickle carries a choice, so that paragraph goes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…entence (#754) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Quote 3j verbatim and treat the underscore parameters as a private route, not an exception; item 4 says the choice is set publicly only by parser_for; fragments join in pack order, a later pack winning, before the caller's lexicon; edits stored frozen; the parser_for clash offers raise (recommended) or caller-wins; the decided entry's attribution follows the file's head convention. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ry (#754) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Docs-only. This PR proposes the API that the 2026-10-28 decision ("a caller configures vocabulary by reading, and the compiled sets become internal") left open. Proposed, not decided, except the title warning in question 1, decided 2026-11-01; nothing is built.
docs/design/vocabulary-model-rfc.mdgains a Phase 4 section, "TheLexiconsurface: configuring by reading", with seven items and a 4i work-order row. Phase 3's provenance and API sections now point to it.docs/design/decisions/vocabulary-model.mdgains a 2026-11-01 Phase 4: order and shapes, the rules a pack can choose, and the output model #754 entry marked proposed. It records the measurements with their recipes and what each review round changed. Its Open line now points at that entry in place of the openParser.languagesand method-name questions.All parses were run on master
a3b1f3e1through throwaway prototypes, which are not committed. Eleven 2.x recipes parse every field the same under the proposed spelling.Questions to decide
addandremovetake words plus a vocabulary kind?Lexicon.add(*words, kind, **properties)andLexicon.remove(*words, kind=None).removealso accepts a category,nameandrelationincluded.compile_readings.addof a title reading warns when, under no choice, agivenreading makes it a title only inside a phrase. The warning namesremove(w, kind="given"), the fix for the trap in theadd(titles={"dean"})recipe. It fires on anaddthat creates a title reading or re-adds a held one unchanged (add("dean", kind="office")), and not on a property-only update (add("prince", kind="nobility", attaches=[...])). It has its own decisions entry and Standing line.generation,credentialsandpatronymicviews read the kind from the lexicon instead of the shipped index? That would amend rules/R8 and rules/R9.Lexicon.readings_of(word)return a new publicLexiconReading, and should the repr count readings by kind?Lexiconbe five parts: a base, an ordered log of edits, a choice, the lists and the masks?parser_for, whose errors name the choice. For an edit that clashes with a reading a later choice turns on (add("st", kind="credential")undercs), should it (a) raise (recommended) or (b) let the caller's reading win?dataclasses.replacecarries them.|concatenates the logs, later wins.parser_forjoins the packs' fragments in pack order, so a later pack wins as in the policy fold, and then the caller's lexicon, so the caller's edits win.|refuses two different choices or two different non-empty bases.Lexiconstays hashable.parser_forvalidates a choice. They are a private route beside 3j's decided public spelling ("No publiclocales.choose. A bare choice is aLocalewith an empty lexicon and the tags"), not an exception to it.surnames,given_namesandcapitalization_exceptions.nameparser.configconstants stay.Lexiconrecord its languages and strictness, read-only and set publicly only byparser_for, with the underscore parameters carrying it throughreplaceand pickle?Lexiconpickle its five parts, with the base stored as a snapshot?ADDED_INguard question is already settled (Teach Lexicon's pickle guard the ADDED_IN marker (3.0, #959 prerequisite) #960).Reading.languagesfollows the choiceReview
First reviewer pass, by the design-docs reviewer, found five problems, all fixed:
deanrecipe;surnames;An independent review of
c5263dc8found nine problems, all addressed ineca9d861.Two further reviewer passes, on
eca9d861and9b500a18, found:|;These were fixed in
9b500a18and911d97a0.A second independent review of
c5263dc8..911d97a0found seven more, fixed in855c3b02. Its review found two more, fixed in5541986c.A third independent review of
911d97a0..f5b4e014found six more, fixed in the head commit.The doc tests pass (2,186).
🤖 Generated with Claude Code