Repository navigation
Pin renderedstep/engine#96's head (d57d7f9): grow an overdue arc step only in ground nobody has written - #372
Merged
Conversation
… only in ground nobody has written VISION principle 7: the engine does not change the world after it has generated it. Quest::Deadline now places from #way_on -- the deepest reachable room nobody has written, else the room being written, else nothing (the step waits for the next room written) -- instead of #anchor, which stays only for the engine's deadline vector. A person may still be brought into a written room of a place; a thing in a stand-alone stub first gets the box its writing would give it. Vendors the changed and new sweep scripts and goldens from the engine PR, and the checks files they move.
calebl
added a commit
to renderedstep/engine
that referenced
this pull request
Oct 30, 2026
…ten ground (renderedstep/server b2a4523) The game's pin PR (renderedstep/server#372) carries the Ruby mirror of deadline::way_on, both deadline scripts and their goldens, records and checks, all byte for byte this repository's. No golden moves here.
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.
The server half of renderedstep/engine#96. That PR brings the quest deadline into line with VISION principle 7: the engine does not change the world after it has generated it. An overdue arc step no longer adds a doorway to a room already written, or puts a thing in one. This PR does each item in that PR's "What the server pin PR must change" section and pins the engine to its head,
d57d7f9.The Ruby mirror (
app/models/quest/deadline.rb)#run!now places from#way_on(written)instead of#anchor.writtenis the room passed to.after_realizing!.#way_onfirst looks for rooms the party can reach (hops) that are not realized, not a place (Location#place?, the engine'sis_place), and have fewer thanMAX_EXITSdoorways out. Among those it takes the least[z, -hops, id]. If there are none, it useswritten, provided it is reached, not a place, and has a doorway to spare. Otherwise it returns nil.#place_a_place!and#build_somewhere_to_keep_them!open their door off that room.#place_a_person!triesdeepest_room_of_a_place_we_can_reachfirst even whenway_onis nil. That room may already be written, because bringing a person into a place is the one addition the principle allows. It builds a place only whenway_onhas a room.#place_a_thing!runsLocation::Generator#own_box!(the engine'slay_out_alone) before admitting the thing. That way a thing in a stand-alone stub gets a spot.#anchorstill gives the same answer. It now shares the#deepestsearch with#way_on. It stays forlib/engine_vectors/deadline.rb, andtest/engine_vectors/deadline.jsondoes not change.PHASESwording, to say the door never goes off a written room.Tests (
test/models/quest/deadline_test.rb)#anchorswapped back into#run!, four of the new tests fail.Vendored from the engine PR
lib/engine_sweep/scripts/a-deadline-places-what-the-arc-waits-for.yml(changed) anda-deadline-leaves-written-rooms-as-they-were.yml(new), with their header comments. Both re-emit byte-identical to the engine'sparity/scripts/through the README's YAML command.test/engine_parity/a-deadline-places-what-the-arc-waits-for.jsonanda-deadline-leaves-written-rooms-as-they-were.json.parity/records/has nowhere to go in this repo, so it is not vendored here.bin/rails engine:checks:where Warden Hesk is room 1.character_in_a_stubwarning for the placed warden.ext/renderedstep/Cargo.tomlandCargo.locknow pind57d7f9a4d8eadadf1d64135c7f06b565bec7552.Not done: item 6, the optional
EngineSweep::Invariantscheck that no room realized before a step gains or loses a doorway or world thing during it. As a global invariant it would also apply to legitimate edges, such as a new room's exit written back into an older realized room. It needs its own scoping, so I've left it to a separate change.No prompt changes and no model calls.
Gates (run with no provider key set)
bin/rails test: 5451 runs, 0 failuresbin/rails engine:rust_gates: PASSED, 109 scriptsbin/rails engine:vendored: byte for byte atd57d7f9bundle exec rubocop: no offensesbin/rails zeitwerk:check: passesbin/brakeman: no warningsOnce renderedstep/engine#96 merges, this needs re-pinning to its merge commit.