Remove false agency and the metaphorical carry from the three held-back pages - #141
Merged
Merged
Conversation
The referee and listener guides and the LLM referee page get the pass the rest of the hand-written docs had: a narrative block no longer carries a field, triggers and quests no longer play themselves, a journal entry no longer speaks, a result envelope no longer picks events up, a finished quest no longer leaves the list, and command handlers no longer know what a fetch quest is. The LLM referee page also carried the em dashes and semicolons, and a hand-issued completion that "expects the payout to follow" now says what the agent has to do instead. Part of #72. Claude-Session: https://claude.ai/code/session_01NmCezTw8hKKujkaEZ3YGAs
"It" had two nearer nouns to point at, so the quest projection is named outright. The schema sentence lost the pairing of each surface with its own discriminator field, which it now states one to one. The event stream is unfiltered for the same reason rather than privileged the same way, and a rejected command explains itself again: a command is one of the things that act. 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
The three pages held back from #138 get the same pass, now that the typed referee view has landed in them. The defects are the ones #72 names: a narrative block that carries a field, triggers and quests that play themselves, a journal entry that speaks, a result envelope that picks events up off the log, a finished quest that leaves the list, command handlers that know what a fetch quest is, and the sentence #72 quotes directly, a hand-issued completion "that expects the payout to follow on its own". The LLM referee page also held the register problems: every em dash and semicolon left in the hand-written docs was on it, along with an evaluative opening and a sentence that described the page instead of the subject.
37 changes across 3 pages, in two commits: the pass itself and the four sentence corrections review asked for. 19 apply the agency, carry, and reference rules from #72; 18 apply the house prose rules the maintainer asked for in the same pass. Where one sentence had both, the row names both and the change is counted under #72's rule. The two guides needed few changes (7 of the 37) because they were already close; the LLM referee page took the rest.
No headings changed, no code identifiers, field names, rejection codes, message codes, or content ids changed, nothing inside a fenced block changed, and every line number is the same before and after.
docs/adaptations.mdis still outstanding, held until the magic-phase chunk editing it merges.Verification
uv run mkdocs build --strictpasses.uv run pytest tests/test_docs_gates.py tests/test_docs_examples.py tests/test_docs_site.py -q: 377 passed, 73 skipped.ruff format --check(160 files already formatted),ruff check(all checks passed),pyright(0 errors),uv run pytest -q(2930 passed, 146 skipped, 6 xfailed).CHANGELOG.mdentry: prose corrections are not behavior changes.Review table
docs/guides/views-and-visibility.md:26qualitiesandmissile_rangesqualitiesandmissile_rangesdocs/guides/views-and-visibility.md:26docs/guides/views-and-visibility.md:59PlayerView.quests, because its record is the journaldocs/guides/listeners-and-flags.md:3docs/guides/listeners-and-flags.md:31sessions-commands-events.md:11, which is the same sentence.docs/guides/listeners-and-flags.md:71executefolds those into the result from the logexecutefolds the log into the result.docs/guides/listeners-and-flags.md:77docs/front-ends/llm-referees.md:3docs/front-ends/llm-referees.md:3docs/front-ends/llm-referees.md:3docs/front-ends/llm-referees.md:7command_typeandevent_typecommand_type, and the event surface is one keyed onevent_typedocs/front-ends/llm-referees.md:7docs/front-ends/llm-referees.md:9AnyCommandandAnyEvent— so a Python agentAnyCommandandAnyEvent, so a Python agentdocs/front-ends/llm-referees.md:24docs/front-ends/llm-referees.md:37docs/front-ends/llm-referees.md:37docs/front-ends/llm-referees.md:48docs/front-ends/llm-referees.md:48docs/front-ends/llm-referees.md:48docs/front-ends/llm-referees.md:59docs/front-ends/llm-referees.md:59docs/front-ends/llm-referees.md:61-67[Command][…] — gloss[Command][…] - glossdocs/front-ends/llm-referees.md:61docs/front-ends/llm-referees.md:66docs/front-ends/llm-referees.md:67CompleteQuestpays nothing. Whoever completes a quest issues its rewards afterwards — the interpreter does exactly that — so a hand-issued completion that expects the payout to follow on its own will strand the party unpaidCompleteQuestpays nothing: whoever** completes a quest issues its rewards afterwards**, as the interpreter does,** so a hand-issued completion leaves the party unpaid unless the agent issues the rewards toodocs/front-ends/llm-referees.md:80code— a compact fact likesession.monsters.spawned— plus typed fields**;** [the message code reference] listscode(a compact fact likesession.monsters.spawned) plus typed fields**. [The message code reference]** listsdocs/front-ends/llm-referees.md:80docs/front-ends/llm-referees.md:88docs/front-ends/llm-referees.md:94docs/front-ends/llm-referees.md:96NarrativeBlockcarries aguidancefield on any authored object … — the TUI barrow's first level readsNarrativeBlockhas aguidancefield on any authored object … . The TUI barrow's first level readsdocs/front-ends/llm-referees.md:102docs/front-ends/llm-referees.md:102docs/front-ends/llm-referees.md:106docs/front-ends/llm-referees.md:110docs/front-ends/llm-referees.md:110docs/front-ends/llm-referees.md:217-221[link] — gloss[link] - glossdocs/front-ends/llm-referees.md:221Open questions
1. Second person and contractions on the LLM referee page. The page has almost no "you" and no contractions, and it is the only page in this chunk still outside the house numbers (2 of 16 fingerprints). The reason is structural: it describes what an agent does rather than addressing the person building one. Turning it around is a rewrite for the reader, which the edit-in-place instruction rules out, so I left it and am naming it instead.
2. Dice and rolls as actors.
views-and-visibility.md:3("the reaction roll that decides whether they attack or flee") andllm-referees.md:88("The dice already decided what happened"). Left alone, the same call osr-editor#65 made: the docs treat the dice and the SRD as agents, and a roll deciding an outcome is that idiom rather than an inert thing acting.3. "Owns" again.
listeners-and-flags.md:57("engine-owned session state") and:122("when your own systems own the objective"). Left, for the reason given in #138: #72 protects software acting and "engine-owned" is the established term.4. "Needs" where the subject is code or a model.
listeners-and-flags.md:51("the bookkeeping an authored trigger or quest layer needs"),:73("needs one because its trigger condition can look unsatisfied"),views-and-visibility.md:59("ObjectiveView.stateneeds only\"incomplete\"and\"complete\""). These are requirements of code and schemas rather than wants of authored things, so they stay. The one I did change,listeners-and-flags.md:77, had a quest doing the needing.5. "The routes authored words take to a player."
views-and-visibility.md:11. Words do not travel, but the sentence names all three routes in the two sentences after it and the metaphor is what makes the count legible. Left.6. "Story".
llm-referees.md:3("the authored-content story") and the heading "Determinism is the eval story" at:108, which:106refers back to. The heading is an anchor target, so the body use stays consistent with it.7. Two instances of the defect survive inside fenced code comments.
docs/front-ends/llm-referees.md:40and:200are the same comment, "# The referee view is full state — flags, monster internals — minus RNG state and the seed", and:32reads "# rejected? that's feedback — the model reads why and retries". All three are em-dash splices inside fenced blocks thattests/test_docs_examples.pycovers, so they are out of bounds for this pass. Review named these as:36and:44; the three above are where they sit in the file as it stands.8. The two guides were already close.
views-and-visibility.mdandlisteners-and-flags.mdboth scored clean before this pass and account for 7 of the 38 changes. The LLM referee page went from 7 fingerprint misses to 2.Undefined jargon found
Location and term only. Nothing here was changed.
docs/guides/views-and-visibility.md:11;docs/guides/listeners-and-flags.md:54. Defined in the index's vocabulary table, not on either page.docs/guides/listeners-and-flags.md:49(the heading),:55,:72,:73;docs/guides/views-and-visibility.md:30.docs/guides/listeners-and-flags.md:55;docs/front-ends/llm-referees.md:66.docs/guides/listeners-and-flags.md:33,:73,:118.docs/guides/views-and-visibility.md:28.docs/guides/views-and-visibility.md:24;docs/front-ends/llm-referees.md:37.docs/guides/views-and-visibility.md:32;docs/front-ends/llm-referees.md:104.docs/front-ends/llm-referees.md:110. Defined in the same sentence, flagged because the eval sense is not the movement sense.docs/front-ends/llm-referees.md:106,:108.Vocabulary decisions for the owner
1. "Carrier". Unchanged, as in #138. None of these three pages uses it; the decision stays open in
docs/spec.md:207and:209.2. "Beat". Same decision as #138: a beat is authored narrative text, and these pages use it that way throughout. Nothing here needed changing.
3. "Story", in "the authored-content story" and "Determinism is the eval story". The heading is an anchor target and the body use follows it, so a rename is yours to make if you want one.
4. "Privileged", my replacement for "the event stream carries the same privilege". I wrote "The event stream is privileged the same way". If you would rather the page not attribute a privilege to a stream at all, "The event stream is unfiltered for the same reason" states the mechanism instead.
Cross-repository effects
1. The same gate docstring.
src/osrlib/crawl/gates.py:108still reads "so a door that swings shut needs another key", and "needs" is on #72's own list. The docstring half of the issue still owns that sentence, and 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. Nothing else propagates. No schema, no code identifier, and no generated page changes here, so osr-forge and osr-editor see nothing from this pull request.
3. What is left of #72's Markdown half.
docs/adaptations.mdalone, held until the magic-phase chunk editing it merges.docs/reference/rejection-codes.mdanddocs/reference/message-codes.mdare generated at build time and have no file to edit.Part of #72.
https://claude.ai/code/session_01NmCezTw8hKKujkaEZ3YGAs