Copy the Draw Steel negotiation tracker onto Foundry NPC sheets - #159
Merged
Merged
Conversation
Chronicle announces `system_state.updated` when the negotiation tracker changes. On Draw Steel worlds the active GM's client reads the page's state and writes interest, patience, motivations, pitfalls and impression onto the linked NPC actors, and once more when a page is linked by dropping its journal on a token. One way only: sheet edits don't go back. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M2N6zhGuT2DHzVoiFUMwv1
keyxmakerx
marked this pull request as ready for review
October 3, 2026 23:53
…-mu3i3i # Conflicts: # CLAUDE.md
9 of 10 tasks
6 of 7 tasks
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.
Fixes: none
Security implication: The module reads the tracker's GM half only with the Owner sync key, and only the active GM's client acts on it. Nothing is shown to players.
Consumer-verified: Chronicle
internal/plugins/syncapi/system_state_api.go(sync GET,gmonly for Owner-level keys) andinternal/app/system_state_adapters.go(system_state.updatedpayload{systemId,key},requiresDm). Both are in keyxmakerx/Chronicle#1051, which has to merge first.Foundry compatibility: Not verified live. It uses
game.users.activeGM, as the spotlight relay in #149 does.Mockup: Sign-offs card
diff-npc-negotiation-panel(the Chronicle panel). There are no new on-screen parts in Foundry. The values land in the Draw Steel system's own negotiation fields.What this changes
When the negotiation tracker changes on a Chronicle NPC page, the GM's Foundry client copies interest, patience, motivations, pitfalls and impression onto that NPC's actor. This only happens on Draw Steel worlds. The NPC sheet therefore matches the Chronicle tracker without the GM entering everything twice.
The copy goes one way only. Edits made on the Foundry sheet are not sent back to Chronicle.
How
higher-authoritybecomes the system'sauthority.system_state.to the WebSocket allowlist.scripts/_negotiation-mirror.mjs.scripts/negotiation-mirror.mjs.npc-presence.mjsexportssyncedPagesandonNpcLinked.Test plan
node --test tools/test-*.mjs: 1286 tests, 1285 pass, 1 skipped, 0 fail. The newtools/test-negotiation-mirror.mjsis included.node tools/check-package-descriptor.mjsOK. The error-catalog check matches.Tenet self-check
Merge order: keyxmakerx/Chronicle#1051, then keyxmakerx/Chronicle-Draw-Steel#74, then this one. The feature needs a module release.
Generated by Claude Code