Skip to content

M7: Calibrate XP baseline with report + fixtures (#25) - #81

Merged
season179 merged 1 commit into
mainfrom
feat/25-calibration-report
Jul 20, 2026
Merged

M7: Calibrate XP baseline with report + fixtures (#25)#81
season179 merged 1 commit into
mainfrom
feat/25-calibration-report

Conversation

@season179

Copy link
Copy Markdown
Owner

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.ts lock the approved curves and reward display strings (+N XP, Lv N, into/span). Display formatters live in shared/player-progression.ts and are shared by HUD, result card, and fixtures so approved numbers equal on-screen numbers.

Desktop playtest worksheet. docs/calibration.md covers the report, evidence gate, local level seeding (tools/prepare-calibration-save.mjs), and the levels 1 / 8 / 20 representative loop. docs/learning-events.md points at the calibration report.

What does not ship

  • No XP / capture / encounter constant edits.
  • No alt-variant encounter rate (mechanic not implemented).
  • Delayed-review gate stays closed until that mechanic emits events.

Test plan

  • npm test — 529 pass
  • After merge: run a local levels 1 / 8 / 20 playtest per docs/calibration.md, then npm run report:calibration on local D1 events
  • When the evidence gate reads READY, Season reviews each proposed constant with weaker / equal / stronger before/after examples and lands a follow-up constants PR that updates the baseline fixture

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.
@season179
season179 merged commit a3aad2d into main Jul 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant