Phase 13 plan — journal and lifecycle commands - #56
Merged
Merged
Conversation
Four non-blocking sign-off notes from the review, each folded in: the journal load expression now shows the per-entry model_validate pattern (death_records precedent) instead of a raw-dict get; the golden-regeneration fact cites the generators' own command dumps as the serialization site and names phase11_gates's refusals block as part of the diff; the interpreter framing for the command docstrings cites the spec rather than a module docstring that never carried it; and the JournalEntry.rounds naming divergence from DeathRecord.round is acknowledged with its rationale. Claude-Session: https://claude.ai/code/session_013aS1Fbhon3y9aipXJ8s24a
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.
Implementation plan for phase 13 of the spec: the engine substrate for authored triggers and quests, with no interpreter — the optional
sourcefield on the base command model, session-state blocks for trigger fired-marks and the journal, theMarkTriggerFired/AddJournalEntry/RecordNotereferee commands with their events, the journal in the player view, and additive persistence of the new blocks. Phase 13 is order-independent of phase 12 (landed) and must precede phase 14, whose interpreter issues these commands and reads this state.Notable decisions
sourceis one field on the baseCommand(str | None,min_length=1), inherited everywhere, read by nothing in execution — pinned by a twin-session state-equality test, not prose. Serialization consequence planned: the four goldens that store serialized commands (phase4_delve,phase5_milestone,phase11_gatesincluding itsrefusalsblock,phase12_wipe) regenerate with"source": nullkeys as the entire diff.replay_gameraises on any rejected replayed command — a rejecting re-mark would poison every replay of a repeatable trigger's log under phase 14's semantics.list[str]in first-fired order — ordered and deterministic where sets are banned; nothing consumes a count.JournalEntrycarriestextplus aroundsclock stamp, pinned because append-time is capturable only at append: the view API promises front ends never replay the event log, and a compacted save sheds the log entirely. The plan argues the naming divergence fromDeathRecord.roundexplicitly. The player view ships the entries verbatim (the spec's word) — no mirror view model.schema_version3: two new payload keys with empty defaults, no migration, no new rejection codes, noRulesetflag, no spec edit, and no adaptations entry — the phase touches no SRD text (B/X has no journal or trigger machinery; verified by search).Review provenance
Rubber-ducked by a fresh skeptical reviewer with the ordered reading list (spec, phase 11/12 plans, AGENTS.md, the touched code, the goldens). First-pass verdict: SOLID, with four non-blocking wording/citation findings — the journal load expression shown as a raw-dict
getinstead of the per-entrymodel_validatepattern, the golden-regeneration fact citingsession_stateinstead of the generators' own dumps (and omittingphase11_gates'srefusalsblock), a docstring-framing justification attributed to a module docstring that never carried it, and the unremarkedrounds/roundnaming divergence. All four were folded in and re-verified by the same reviewer, context intact: each fix CONFIRMED, final verdict SOLID. The reviewer's verified-good list covered, among ~23 checks: the four-golden census, the absence of any SRD surface, spec fidelity of the three commands' semantics and visibilities, the census/docs-gate mechanics, the cycle-freeviews.pyimport ofJournalEntry, and the fuzzer impact of the new required string fields.https://claude.ai/code/session_013aS1Fbhon3y9aipXJ8s24a