Remove false agency and the splices from the adaptations register - #143
Merged
Merged
Conversation
The register held every em dash and semicolon left in the hand-written docs, 167 and 159 of them, and it read as one long splice. The dashes become full stops, colons, commas, or parentheses, the semicolons split into sentences, and the damage-pipeline arrow chain becomes a sentence. On the agency side the engine takes back the rolling: gems, a trap, a door, a gate, a fall, a spawn form, and a magic item no longer roll anything themselves, a file no longer carries content, items no longer prefer a carrier, and pieces no longer deal themselves out. The literal carrying stays, because on this page a carrier is a party member holding loot. Every "Locked by" tail, every heading, and every backticked identifier is byte-identical, and the line count is unchanged. Part of #72. Claude-Session: https://claude.ai/code/session_01NmCezTw8hKKujkaEZ3YGAs
Quoted text keeps the punctuation the source prints: the mummy-rot semicolon, the magic-missile level ranges, "referee may increase/decrease", and both copies of "2-3 characters in a 10' passage". House punctuation stops at a quotation mark. "Never" comes back where it was a prohibition rather than a contrast: versus clauses are never string-matched prose, equipped-item bonuses are never ledger effects, and an activation of an inert device is never a silent no-op. The nine plain "X, not Y" contrasts keep "rather than". Six replacements had changed what a sentence claims. The treasure grammar no longer asserts an order its list did not state and no longer subordinates four independent pins to the letter resolution; the bait contrast is a contrast again; RAW is silent about the classic reading rather than supporting it; the encounter releases the turned effects, not the parenthesis before it; the sleep convention glosses the parenthesis it sat in; and the noiselessness of undead is why silence proves nothing rather than why the roll happens. The distance band gets its foot mark back. The engine prefers a carrier whose class can use an item, which is what `_hand_item` does, rather than sending it there outright, and it rolls the hydra cells' variant dice. Part of #72. Claude-Session: https://claude.ai/code/session_01NmCezTw8hKKujkaEZ3YGAs
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.
Summary
docs/adaptations.mdis the last hand-written page #72 names. It held every em dash and semicolon left in the documentation, 167 and 159 of them, and read as one long splice: entries of three and four spliced clauses where the register needed one fact per sentence. It also had the agency defect in its own dialect, where the dice belong to the things being ruled about: gems rolled the value table, a trap rolled its 2-in-6, a door rolled no die, a fall rolled nothing, a gate rolled each round, and a magic item rolled its own save.332 punctuation replacements and 58 changes of wording, across 113 of the page's 119 paragraphs, in two commits: the pass itself and the corrections review asked for, which are the third table below. 34 of the wording changes apply the agency and carry rules from #72; 24 apply the house prose rules.
Three things particular to this page are intact, and I checked each mechanically rather than by eye:
Locked by …sentence from both revisions and comparing the sorted lists.src/and in the other docs is prose ("the adaptations register") or a link to the page root, and a search for an anchored link toadaptations.md#…finds none.`affected_1_3`/`affected_4_5`), only the separator changed.The line count is unchanged at 459, so every line number below is the same before and after. The literal carry family stays throughout: on this page a carrier is a party member holding loot, and the treasure-distribution entry is built on that sense.
Verification
uv run mkdocs build --strictpasses, before the corrections and again after them.uv run pytest tests/test_docs_gates.py tests/test_docs_examples.py tests/test_docs_site.py -q: 376 passed, 73 skipped, before the corrections and again after them.Locked bytails byte-identical, the 113 headings byte-identical, and the multiset of backticked spans unchanged.ruff format --check(160 files already formatted),ruff check(all checks passed),pyright(0 errors),uv run pytest -q(2935 passed, 146 skipped, 2 xfailed).CHANGELOG.mdentry: prose corrections are not behavior changes.Review table
Two tables, because a row per punctuation mark would bury the changes you have to check. The first holds every change of wording, which is what to read. The second lists the punctuation work paragraph by paragraph, since each mark is a mechanical substitution the diff shows in full.
Changes of wording
This table is not exhaustive. Thirteen further wording changes are listed under it, and the rest of the work is punctuation, in the second table.
docs/adaptations.md:3docs/adaptations.md:5docs/adaptations.md:27docs/adaptations.md:31docs/adaptations.md:35docs/adaptations.md:79docs/adaptations.md:103docs/adaptations.md:143falling_damage's docstring incore/combat.py: "a fall under 10 feet, which takes no dice and no draw".docs/adaptations.md:1551hpand the hydra's 8-hp-per-HD forms roll nothing1hpand for the hydra's 8-hp-per-HD formsdocs/adaptations.md:159docs/adaptations.md:175Rules_of_Magic.mdcarries identical contentRules_of_Magic.mdhas identical contentdocs/adaptations.md:183docs/adaptations.md:187docs/adaptations.md:195docs/adaptations.md:227check_morale's existing modifier argumentcheck_morale's existing modifier argumentdocs/adaptations.md:235docs/adaptations.md:275docs/adaptations.md:283variant_dicevariant_dicedocs/adaptations.md:287docs/adaptations.md:307docs/adaptations.md:311exploration.trap.safeemits only for a known trapexploration.trap.safeonly for a known trapdocs/adaptations.md:311TakeTreasureTakeTreasuredocs/adaptations.md:311docs/adaptations.md:311docs/adaptations.md:317docs/adaptations.md:318_distribute_haulincrawl/exploration.pydoes.docs/adaptations.md:319docs/adaptations.md:327exploration.light.expiredappended by the sessionexploration.light.expiredfor playersdocs/adaptations.md:327docs/adaptations.md:339docs/adaptations.md:339attack_penalty_of_attackers+2attack_penalty_of_attackers+2docs/adaptations.md:347docs/adaptations.md:355docs/adaptations.md:355per_round_chance_in_sixgate rolls each roundper_round_chance_in_sixgate each rounddocs/adaptations.md:359docs/adaptations.md:367docs/adaptations.md:391manual-tagged prosemanual-tagged prosedocs/adaptations.md:407docs/adaptations.md:415docs/adaptations.md:419"magic"stream"magic"streamdocs/adaptations.md:423docs/adaptations.md:431docs/adaptations.md:439docs/adaptations.md:455docs/adaptations.md:23,:207,:223,:271,:287,:327,:335,:4511–2,6th–10th,3–8,7–9,4–5,1–3,20'–120',2–31-2,6th-10th,3-8,7-9,4-5,1-3,20-120',2-3Thirteen further wording changes, which the table above does not list one by one. Each is a clause the punctuation work had to re-say, and none changes what the entry claims:
docs/adaptations.md:263- "magically augmented STR above 18 in 4 rounds" had elided its verb across a semicolon; it now reads "escapes in 4 rounds".docs/adaptations.md:295- "except construction tricks, dwarf-only with a zero baseline" became a sentence, "Construction tricks are the exception, dwarf-only with a zero baseline, because the SRD grants that perception to dwarves alone".docs/adaptations.md:335- "on a rectangular room exactly that room's extent … down a straight corridor the whole passage" supplies the two elided verbs, and "a caller-supplied distance — every referee spawn — is never capped" becomes "a caller-supplied distance, which is every referee spawn, is never capped".docs/adaptations.md:327- "require light — searching and listening alone also work on the actor's own infravision" becomes "require light, while searching and listening alone also work on the actor's own infravision".docs/adaptations.md:391- "the sparse basic column compiles as printed" becomes "with the sparse basic column compiled as printed", inside the parenthesis.docs/adaptations.md:247- "when the recorded level exceeds the dispelling caster's, it survives" becomes "the effect survives". "It" had the level, the caster and the effect to choose from.docs/adaptations.md:359- "and cause —poisonwhen … — feeding" becomes a parenthesis, and "neither view carries the seed (it lives only in the save)" becomes "neither view includes the seed, which lives only in the save".:119death/poison,:159leader/chieftain,:163combat.attack.hit/combat.attack.missed,:175**Duration:**/**Range:**,:179once-a-day/after-uninterrupted-sleep/one-hour,:331torch/lantern,:367gem/jewellery,:391category/tag,:407affected_1_3/affected_4_5/affected_6_plus.Corrections after review
docs/adaptations.md:135srd/Mummy.md's.docs/adaptations.md:207docs/adaptations.md:331docs/adaptations.md:343,:451docs/adaptations.md:451docs/adaptations.md:391docs/adaptations.md:399docs/adaptations.md:411items.device.inert) rather than a silent no-opitems.device.inert), never a silent no-opdocs/adaptations.md:367any, a named category, or a pool, then a count or count dice, then exclusions, then+ 1 potion-style extras)any, a named category, or a pool, a count or count dice, exclusions, and+ 1 potion-style extrasdocs/adaptations.md:367TreasureRefletters resolve by SRD section, where parenthetical letters are lair treasure,extra_gpjoins the hoard, …extra_gpjoins the hoard, …docs/adaptations.md:339docs/adaptations.md:311docs/adaptations.md:335turnedeffects when it endsturnedeffects when it endsdocs/adaptations.md:335docs/adaptations.md:275docs/adaptations.md:307docs/adaptations.md:317_hand_item, which sorts a usable class first and falls back. The preference is the engine's, which keeps the actor real.docs/adaptations.md:283The punctuation, paragraph by paragraph
166 em dashes, 151 semicolons, and 15 en dashes, replaced by a full stop, a colon, a comma, or parentheses according to what each was doing. The marks inside quotation marks are not here: house punctuation stops at a quotation mark, so the ones the SRD prints stay as printed. Where a mark joined two independent clauses the sentence splits, where it set off an aside the aside goes in parentheses or commas, and where what followed explained or listed, a colon. No fact was added or dropped in any of them. Twelve of the em dashes sat in an "X, not Y" or "never Y" construction: three of those were prohibitions and keep "never" (
:391,:399,:411), and the other nine are plain contrasts that now read "X rather than Y".docs/adaptations.md:3docs/adaptations.md:5docs/adaptations.md:11docs/adaptations.md:23docs/adaptations.md:27docs/adaptations.md:31docs/adaptations.md:35docs/adaptations.md:39docs/adaptations.md:51docs/adaptations.md:55docs/adaptations.md:59docs/adaptations.md:67docs/adaptations.md:71docs/adaptations.md:75docs/adaptations.md:79docs/adaptations.md:83docs/adaptations.md:87docs/adaptations.md:91docs/adaptations.md:95docs/adaptations.md:99docs/adaptations.md:103docs/adaptations.md:107docs/adaptations.md:111docs/adaptations.md:115docs/adaptations.md:119docs/adaptations.md:123docs/adaptations.md:127docs/adaptations.md:131docs/adaptations.md:135docs/adaptations.md:139docs/adaptations.md:143docs/adaptations.md:147docs/adaptations.md:151docs/adaptations.md:155docs/adaptations.md:159docs/adaptations.md:163docs/adaptations.md:167docs/adaptations.md:171docs/adaptations.md:175docs/adaptations.md:179docs/adaptations.md:183docs/adaptations.md:187docs/adaptations.md:191docs/adaptations.md:195docs/adaptations.md:199docs/adaptations.md:203docs/adaptations.md:207docs/adaptations.md:211docs/adaptations.md:215docs/adaptations.md:219docs/adaptations.md:223docs/adaptations.md:227docs/adaptations.md:231docs/adaptations.md:235docs/adaptations.md:239docs/adaptations.md:243docs/adaptations.md:247docs/adaptations.md:251docs/adaptations.md:255docs/adaptations.md:259docs/adaptations.md:263docs/adaptations.md:267docs/adaptations.md:271docs/adaptations.md:275docs/adaptations.md:279docs/adaptations.md:283docs/adaptations.md:287docs/adaptations.md:291docs/adaptations.md:295docs/adaptations.md:299docs/adaptations.md:303docs/adaptations.md:307docs/adaptations.md:311docs/adaptations.md:315docs/adaptations.md:317docs/adaptations.md:318docs/adaptations.md:319docs/adaptations.md:320docs/adaptations.md:321docs/adaptations.md:323docs/adaptations.md:327docs/adaptations.md:331docs/adaptations.md:335docs/adaptations.md:339docs/adaptations.md:343docs/adaptations.md:347docs/adaptations.md:351docs/adaptations.md:355docs/adaptations.md:359docs/adaptations.md:363docs/adaptations.md:367docs/adaptations.md:371docs/adaptations.md:375docs/adaptations.md:379docs/adaptations.md:383docs/adaptations.md:387docs/adaptations.md:391docs/adaptations.md:395docs/adaptations.md:399docs/adaptations.md:403docs/adaptations.md:407docs/adaptations.md:411docs/adaptations.md:415docs/adaptations.md:419docs/adaptations.md:423docs/adaptations.md:427docs/adaptations.md:431docs/adaptations.md:435docs/adaptations.md:439docs/adaptations.md:443docs/adaptations.md:451docs/adaptations.md:455docs/adaptations.md:459Open questions
1. House punctuation stops at a quotation mark. Quoted text is this page's evidence, so it keeps the marks the source prints: the semicolon in
srd/Mummy.md's "Magical healing is ineffective; natural healing is ten times slower" (:135), the en dashes in "6th–10th" and "11th–15th" (:207), the slash in RAW's "referee may increase/decrease" (:331), and the en dash in "2–3 characters in a 10' passage" in both entries that quote it (:343,:451). The first pass had house-styled all five inside the quotation marks, and the corrections commit puts them back.2. Eight marks survive, all in headings. No heading changed, because the packet forbids it. Nothing in the repository links to an anchor on this page, so you can rename any of these without touching
src/. What stays: an em dash in "### Theholydamage key is admitted through any gate on undead targets — and only there" (:89), and semicolons in "### Torch and burning oil deal fire damage; holy water carries the holy key" (:101), "### Poison failure is death, with optional onset; riders leave the damage unaffected" (:117), "### Asleep grants auto-hit and dies-to-a-blade; dozing is a caller modifier" (:137), "### Arcane casters fix normal/reversed at memorization; divine casters choose at cast" (:181), "### Starting books hold exactly capacity; book capacity is per level; books never auto-shrink" (:193, two), and "### Lightning bolt kills destroy equipment; disintegrate kills permanently and destroys carried gear" (:209).3. Two headings carry defects of their own, and stay for the same reason.
:9reads "### Multi-prime-requisite XP tiers carry no penalties", which is the metaphorical carry in a heading, and:101has "holy water carries the holy key". Both stay only because the packet forbids heading changes; nothing links to either anchor.4. A numeric surface count in a heading.
:389, "### The magic item catalog: 164 templates, a wired census, and manual prose".AGENTS.mdrules numeric surface counts out of prose, and this is the kind that drifts when the catalog grows. It is a heading, so it stays here.5. Numeric counts in the body, left alone deliberately.
:175("the compiler census (106 pages, 34 + 72 list entries)"),:51("the twenty Other Languages"),:415("MAX_RINGS_WORN = 2"). These count fixed SRD input or a constant rather than a project surface, and on an evidence ledger the numbers are the evidence.6. "Carrier" and the carry family, kept throughout. On this page the literal sense is the subject matter:
:315quotes RAW on what "any character can carry",:317-:323are built on carriers as party members holding loot,:191quotesCleric.mdon carrying a holy symbol, and:35,:39,:303,:375,:383,:387,:455all mean physical carrying. Only the five metaphorical uses changed.7. The SRD and the dice stay actors.
:335("RAW rolls 2d6 × 10' only 'if there is uncertainty'") and the pervasive "the die shows", "the roll compares" idioms where a person or the engine is plainly behind them. This is the call osr-editor#65 made and #138 followed.8. Effects act. "the effect attaches", "expiry applies the listed damage", "a darkness-family effect suppresses the whole party's light". The effects engine is software resolving them, and the docs treat an effect as the mechanism rather than as authored content. Left alone.
9. Contractions and "you" stay at effectively zero, the two fingerprints still outside the house range. The page is a register of rulings that never addresses a reader, and adding second person would be a rewrite rather than an edit in place.
10. Sentence length is still above the house median at the 90th percentile. Splitting the splices brought the median to 18 words, and the long tail is what remains: entries like
:311and:343state a dozen related pins in one paragraph. Cutting them further would restructure the register, which the edit-in-place instruction rules out.Undefined jargon found
Location and term only. Nothing here was changed. This page is written for a reader who already has the SRD open, so the list is short by design.
docs/adaptations.md:299.docs/adaptations.md:303.docs/adaptations.md:307,:311.docs/adaptations.md:355,:367,:431.docs/adaptations.md:259,:327,:367,:431,:435.docs/adaptations.md:431.docs/adaptations.md:159,:283.docs/adaptations.md:367.docs/adaptations.md:391.Vocabulary decisions for the owner
1. "Carrier", the specification's word. Unchanged, as in #138 and #141. On this page it is also the literal word for a party member holding loot, which is exactly the collision
docs/spec.md:207and:209leave open. Nothing here forces the decision either way.2. "Carries" in two headings.
:9and:101. I left them because the packet forbids heading changes, not because anything depends on their anchors: nothing links to them, so renaming them is a one-file change whenever you want it.3. "Pinned" as the register's own verb. "Pinned:", "pinned as", "all pinned" appear throughout, and the page defines the term in its opening sentence. Left alone, and worth keeping.
4. "Surfaces" as a verb. Removed in the two places it appeared here (
:327,:347), for "appends" and "reports". Both replacements are verbs the same entries already use.5. "Game territory". The page's phrase for a decision the library declines to make. It is undefined but consistent, and renaming it would touch a dozen entries.
Cross-repository effects
1. The gate docstring, still open.
src/osrlib/crawl/gates.py:108reads "so a door that swings shut needs another key", and "needs" is on #72's own list. This page does not contain that sentence, so nothing here fixes it. It reaches osr-editor through the generated types and that editor's gate condition builder help text until osrlib's docstrings are corrected and osr-editor's osrlib pin moves.2. No cross-project surface runs through this page's headings. I said otherwise when I opened this, and it was wrong: every reference from
src/is prose or a link to the page root, and no file in the repository links to an anchor here. The headings are byte-identical anyway, and the mkdocs strict build passes.3. Nothing else propagates. No schema, no code identifier, no generated page, and no test name changed, so osr-forge and osr-editor see nothing from this pull request.
4. #72's Markdown half is complete with this.
docs/index.md,docs/getting-started/,docs/guides/,docs/front-ends/,docs/reference/rng-streams.md, and nowdocs/adaptations.md.docs/reference/rejection-codes.mdanddocs/reference/message-codes.mdare generated at build time and have no file to edit. The docstring half of #72 is untouched and still open.Part of #72.
https://claude.ai/code/session_01NmCezTw8hKKujkaEZ3YGAs