[
  {
    "title": "Make party rewards agree from settlement to the recap",
    "problem": "A full party playthrough showed Gold being shared while emerald rewards stayed with their original winners. Emerald pooling had never been implemented, and existing tests described that omission as intended behavior.",
    "change": "The change carried settlement-won emeralds through allocation, accounting, recovery and the game recap. A party winning 100 emeralds now receives shares of 34, 33 and 33. Emeralds earned during questions stay individual, preserving rewards players had already watched accumulate.",
    "evidence": "The merged change covers three filters that could silently discard an emerald-only result. Tests address settlement, the displayed split, older and newer app versions, and repeat processing. The old exclusion assertion was rewritten to reflect the intended behavior.",
    "links": []
  },
  {
    "title": "Check affordability before a player waits for a match",
    "problem": "A player holding 200 Gold could choose a 500-Gold entry and enter the queue. The rejection came only after a match was found, wasting the wait and leaving the forming table short a player.",
    "change": "The app selects an affordable entry when balances load and explains an unaffordable manual choice. The server checks funds before inserting queue entries. Party rejection identifies the affected member without returning their balance; an unread balance is kept distinct from zero.",
    "evidence": "Acceptance scenarios and regression tests cover solo, party and failed-balance-loading paths. Review also corrected compatibility with older app versions and a disagreement between the banner and button. The change explicitly leaves the later spend-after-enqueue window outside its scope.",
    "links": []
  },
  {
    "title": "Replace mocked confidence with a test of the actual query",
    "problem": "Two notification-delivery paths built an invalid database query. Their tests substituted a fake database, so the malformed query was never executed.",
    "change": "The workflow fixed both paths and added tests against a real database for one recipient, multiple recipients, inactive-token exclusion and separation between users. It recorded the underlying mistake in a learning document.",
    "evidence": "The merged diff contains the behavior fix, five integration tests and the learning. The historical verification report says the new suite passed, then failed when the old query was restored. That tests the missing failure mode as well as the correction.",
    "links": []
  },
  {
    "title": "Apply an earlier learning, then test the test itself",
    "problem": "An initial concurrency test waited a fixed amount of time and assumed that an operation was blocked. Even after that timing shortcut was removed, an unrelated setup step could still make the test pass.",
    "change": "A researcher retrieved an earlier learning and the builder read it. The test switched to inspecting the actual blocked operation. Deliberately removing the protection under test exposed the remaining false positive, prompting a fixture that isolated the intended protection.",
    "evidence": "The retained read and action records connect the earlier document to the new implementation. The recorded final check failed with the protection removed and passed when restored; the corrected fixture and its explanation are present in the merged test.",
    "links": []
  },
  {
    "title": "Finish a decomposition instead of leaving a larger backlog",
    "problem": "A real-time game service had grown to roughly 1,728 lines. A follow-up issue called for separating responsibilities so changes would be easier to understand and test.",
    "change": "The work was split into four concrete tasks: reading recipient frames, managing ownership leases, maintaining subscriber sessions and delivering events. Each task shipped as its own pull request, with progress recorded on the parent issue.",
    "evidence": "All four changes merged between June 30 and July 1, and the parent closed after the final child. In the ownership extraction, the existing service-level test files stayed unchanged while a focused new test suite covered the extracted behavior.",
    "links": []
  },
  {
    "title": "Follow a recovery journey beyond the new button",
    "problem": "In an earlier cash-play version, a player blocked from joining a match received a generic error. Adding a verification action exposed navigation inherited from a different flow.",
    "change": "Review followed the whole journey: the return destination, another match-entry screen and timers that could interrupt verification. The author made return routing aware of the originating screen and corrected the additional navigation paths.",
    "evidence": "Nine pre-merge review threads have specific author replies and are marked resolved; the corresponding navigation corrections and regression tests are in the merged change. A tenth thread arrived after merge and remains unresolved in the snapshot.",
    "links": []
  }
]
