fix(deadline): distinguish "not found yet" from "never existed", and ship the missing migration - #16
Merged
Merged
Conversation
Lets an evidence entry mark that it discloses the time of death, feeding the interrogation deadline disclosure logic. Co-Authored-By: Claude <noreply@anthropic.com>
…mate Add hasEstimatedDeathAt so the board can tell "not yet found" apart from "this case has no death estimate at all", instead of showing the searching-dashes-and-? mark for cases that never had one. Co-Authored-By: Claude <noreply@anthropic.com>
Two cases the guide did not cover, both easy to get wrong and neither caught by the validator. Leaving `estimatedDeathAt` out is now a decision, not an omission: the board draws no estimate mark at all. Dotted-and-question-mark means "there is something here to find", so showing it where nothing was ever written asks the player to search for what does not exist. And writing the time without marking any evidence with `revealsDeathTime` is the worst of the three: the answer exists, no route reaches it, and the board keeps inviting a search that cannot end. Both halves validate fine on their own, so nothing will tell the author but a playthrough. Co-Authored-By: Claude <noreply@anthropic.com>
5 tasks
tkgstrator
added a commit
that referenced
this pull request
Sep 2, 2026
…e death estimate (#17) Scenario data for the machinery #15 and #16 shipped. Places go from 2 cases to 17, and every case that names a death estimate now has evidence marked to disclose it — the nine that had a time written and no route to it are gone. Two migrations carry it to databases already seeded. The second rewrites only the public half of each place entry, leaving the private findings alone: what the roster and the nameplate show is public, what examining turns up is earned.
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.
Two follow-ups to #15, one of them a genuine slip.
1. The migration for
reveals_death_timenever landed#15 added the column to
db/schema.tsand the compile step, butdb/migrations/0020_deadline-disclosure.sqland its snapshot were untracked whenthat work was staged with
git add -u, which only picks up files git already knows.So
developcurrently describes a column that nothing creates. A deploy would have rundb:migrate:remotewith nothing to apply and then queried a column that does not exist.Committed here.
2. The board asked players to look for something that was never written
Counting the scenarios turned this up:
foundAtpresentestimatedDeathAtpresentrevealsDeathTimedeadlineOffolded "no time in the scenario" and "time not yet discovered" into the sameunknown, so 33 cases drew a dotted window with a?for an estimate nobody everwrote. Dotted-and-question-mark is an invitation — it says there is something here to
find. Pointing it at nothing is the same fault this whole line of work set out to remove,
facing the other way: the board claiming knowledge it does not have.
ScenarioDetail.victimnow carrieshasEstimatedDeathAt— the boolean only, never thetime. Cases without one draw the discovery line and nothing else. The leak is nil: the
remaining-clue hints already tell the player there is something left to find.
The authoring guide gains both halves of the trap, since neither is caught by validation:
omitting the time is now a decision rather than an oversight, and writing the time without
marking any evidence leaves an answer no route reaches.
Still open (data, not code)
Nine scenarios carry
estimatedDeathAtwith norevealsDeathTimeanywhere — the answeris written and unreachable. Which evidence should open it is an authoring judgement per
case, so it is not something to sweep through mechanically.
Test plan
bun run typecheck— cleanbun run lint— no errorsbun run test— 718 pass / 0 fail, including a new case for the no-estimate scenario0020applies cleanly against a database that alreadyran
0019