Files

39 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

2026-10-28 18:54:43 +07:00
# Bonfire phase correction — 2026-10-26
The deployed reference-derived selected phase was wrong for the current Client.
2026-10-28 18:54:43 +07:00
The user's video showed the initial option cards after resume, despite the
server rejecting both option and heal requests as already selected. Saved
revision 531 has phase 1 and the already-applied same-node PetPal rule marker.
Read-only runtime evidence from the active Client:
- Exact type: `RPG.Client.GridFightBonfirePendingAction`.
- `HasSelected=false` with the server's phase 1; queue 530, income 10/5/2.
- `GridFightBonfireDialog._setup_view` reads `HasSelected` to choose between
initial option cards and final rewards. Its current baked closure was captured
without executing that closure.
- `_UpdateHasSelected(KMJMHDPPAKH)` resolves to RVA `0xda53360`.
- Native instructions `cmp esi,2; setge byte ptr [rdi+0x6c]` prove selected
means phase >= 2. See private `cw54-bonfire-hasselected.asm`.
- GameAssembly SHA256:
`4aa08a0706f27d2cf9951b61920c179140ece9ea94f7e34422c18e46922939b6`.
The reference factory writes selected=1. Matching scalar wire layout did not prove
2026-10-28 18:54:43 +07:00
matching enum semantics. The earlier Tea Break integration incorrectly assumed
that semantic match; this document supersedes its phase-1-selected statements.
The server now sends choosing=1, selected=2, and accepts old phase-0 offers for
selection. A read-only projection repairs legacy selected=1 only when the
same-run/same-node effect marker and exactly one offered option's saved rule
values prove the old selection. A bare phase 1 is never automatically selected.
Readers do not write persistent or replay effects. The actual next transaction
persists the repaired phase together with its ordinary revision CAS.
New selections record the event/option (or heal) in the same-run sidecar. A
duplicate matching request resynchronizes the selected action without applying
the effect/heal again; changing a completed selection is rejected. Take-drop
still grants and advances once in the existing single commit.
Probes remain under tools/. All temporary script copies were removed and both
Frida sessions were detached. Compilation is not Client acceptance; the patched
resume/take flow still needs observation after deployment.