Files
GaCy-GO/docs/cw-bonfire-phase-contract.md
T
2026-10-28 18:54:43 +07:00

40 lines
2.2 KiB
Markdown

# Bonfire phase correction — 2026-10-26
The deployed FFGO-derived selected phase was wrong for the current Client.
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 FFGO factory writes selected=1. Matching scalar wire layout did not prove
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.