M7: Calibrate XP baseline with report + fixtures (#25) - #81
Merged
Conversation
Ship the configured-vs-observed calibration report with an evidence gate that keeps runtime constants until every signal is reviewable. Pin levels 1–30, encounter tables, catch curve, question ranks, and reward display strings with a baseline fixture; document the desktop playtest worksheet.
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.
Closes part of #25 (HITL — Season's merge is the approval for the baseline lock; constant changes still require representative play data + before/after review).
What ships
Reproducible calibration report.
npm run report:calibration -- <events.json>pairs the shipped configuration (levels 1–30 XP curve, level-gap, live Meadow encounter tables, ordinary catch curve, active-manifest question ranks, weaker/equal/stronger reward displays) with observed correctness, abandonment, delayed review, healthy stopping, and captures. Opens with an evidence gate: sparse cells stay suppressed; insufficient evidence keeps the shipped baseline.No runtime balance change. Production still has only six smoke events. The report's decision today is
INSUFFICIENT EVIDENCE — KEEP SHIPPED BASELINE. Guardrails retained: nonzero XP floor, calm ordinary capture, unlimited thinking time.Regression fixtures.
shared/tests/fixtures/calibration-baseline.v1.json+calibration-baseline.test.tslock the approved curves and reward display strings (+N XP,Lv N,into/span). Display formatters live inshared/player-progression.tsand are shared by HUD, result card, and fixtures so approved numbers equal on-screen numbers.Desktop playtest worksheet.
docs/calibration.mdcovers the report, evidence gate, local level seeding (tools/prepare-calibration-save.mjs), and the levels 1 / 8 / 20 representative loop.docs/learning-events.mdpoints at the calibration report.What does not ship
Test plan
npm test— 529 passdocs/calibration.md, thennpm run report:calibrationon local D1 events