feat(web): add player-safe consequence journal POC - #77
Merged
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Owner
Author
Operator / merge receiptCurrent instruction remains implement methodically. This bounded PR2A respected that by refusing to fake an authoritative consequence API merely to make the UI look complete. Merge evidence for exact head
The UI is therefore approved only as an explicitly non-authoritative POC seam. The authoritative reveal read-through/bridge remains a separate gate; this comment does not promote demo fixture state into player truth.
|
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.
PR2A for #75 — smallest truthful player-facing consequence journal slice. This validates the UI seam before inventing an authoritative persisted reveal read-path.
Governance / source
apps/webwork;jennifer-game-web-apiloaded and updated for the consequence journal boundary;ConsequenceRevealReceiptfrom merged PR feat(npc): add player-safe consequence reveal contract #76 is the only reveal data contract used by the UI;/gamePhaser surface and persisted relationship evidence UI were inspected for existing web conventions.What this adds
ConsequenceTraceReusable, mobile-first player-safe receipt renderer that:
ConsequenceRevealReceiptdirectly from@jennifer/shared;REVISED;.statement,.maturesWhenor.provenancefields;authoritativewithout runtime admission evidence;/game/consequencesAdds a discoverable consequence journal POC route.
The route is intentionally labelled:
data-consequence-data-source="demo";POC fixture;Non-authoritative POC fixture;The fixture is typed as
ConsequenceRevealReceiptand models aREVISEDchain so the hardest history case is visible without fabricating current-player persistence./gamediscoverabilityAdds a small mobile-safe
Consequence journal →overlay link without modifying Phaser simulation state.Validation
Repository tests lock:
Why no live API in this PR
There is not yet an authoritative persisted reveal query/bridge for the web to consume. Creating a fake live endpoint would violate Jennifer's existing build law. This PR validates the player-facing component contract with visibly non-authoritative data; authoritative read-through remains the next bounded validation gate.
Exact-head validation receipts — PASS
Exact reviewed head:
8947c1bf526e3f0c27408d7a9a6efdbf88e81f89No PostgreSQL Live/API or MongoDB-only proof workflow was triggered for this web-only head, so none is claimed here.
Bounded conclusion
The consequence journal is now CODED + TYPECHECKED + TESTED + GOVERNANCE-VALIDATED + NEXT-BUILD-VALIDATED as a player-facing POC surface. Its data remains explicitly non-authoritative by design.
Remaining #75 gate
This PR does not claim:
The next methodical slice is the authoritative read-through/bridge. Only after that exists may the journal switch from
demotoauthoritativefor real player state.I_AM_STATELESS_RENTER_NOT_LANDLORD