ship(phys): A6.P3 slice 3 — cell-resolver ping-pong CLOSED + #98 re-diagnosed
Slice 3 v2 (3e140cf) added point-in cell-stickiness in
ResolveCellId's indoor branch. User verification + slice3v2 capture
confirms: cell-resolver ping-pong is FULLY CLOSED.
Data:
- scen2_v2 capture (pre-slice-3): 20+ cell-transit events with
rampant ping-pong (0xA9B4014B ↔ 0xA9B4014A ↔ 0xA9B4013F at the
cellar boundary, Z stable ~96.4 — same tick re-classification)
- slice3v2 capture (post-fix): 1 cell-transit event (login teleport
only) — ping-pong fully eliminated
Findings:
- A6.P2 Finding 3 (cell-resolver sling-out family) CLOSED.
- Issue #90 (sphere-overlap stickiness workaround in same function)
now redundant; can be removed in A6.P4 after broader visual
verification.
- Issue #97 (phantom collisions + fall-through on 2nd floor) hypothesis
pending: same instability family, likely closed as side-effect of
this fix. Re-test on next happy-test session.
- Issue #98 (cellar-up stuck) PERSISTS but with NEW DIAGNOSIS.
Originally filed as cell-resolver ping-pong (which was true and now
fixed), but user verification shows the cellar-up symptom remains
with a DIFFERENT root cause: BSP step-physics at the cellar stair
TOP. Push-back trace from slice3v2 capture:
n=(0, -0.719, 0.695) sloped face (walkable per FloorZ=0.664)
delta=(0, 0, 0.75) step-down probe lifts sphere by 0.75m
winterp=1.0->0.0 entire walk-interp consumed per tick
Player progresses up most of the stairs but blocks at top step
where the cellar transitions to the cottage main floor. #98 issue
updated with this re-diagnosis.
Includes:
- scen4_cottage_cellar_slice3 acdream.log (slice 3 v1 evidence;
ping-pong already closed by v1's sphere-overlap stickiness, but
v1 over-corrected by holding player in cellar during legitimate
transitions)
- scen4_cottage_cellar_slice3v2 acdream.log (slice 3 v2 evidence;
point-in stickiness fixes the over-correction; cellar-up reveals
the deeper BSP step-physics bug)
Docs updated:
- ISSUES.md — #98 re-diagnosed
- docs/plans/2026-04-11-roadmap.md — A6.P3 slice 3 marked SHIPPED;
slice 4 (or A6.P4) scoped for #98 step-physics investigation
- CLAUDE.md — Currently-working-toward block updated
Test suite: 1148 pass + 8 pre-existing fail (baseline maintained).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
3e140cfe71
commit
ceeb06be7d
5 changed files with 165165 additions and 22 deletions
16
CLAUDE.md
16
CLAUDE.md
|
|
@ -738,10 +738,18 @@ which BSP step_up depends on; matching retail would require deeper
|
|||
refactor of AdjustOffset). Slice 2 verification surfaced a NEW
|
||||
M1.5-blocking bug: **user cannot walk UP out of cottage cellar — stuck
|
||||
at last step due to cell-resolver ping-pong (filed as issue #98,
|
||||
Finding 3 family).** Current A6 phase: **A6.P3 slice 3 — Finding 3
|
||||
cell-resolver stickiness (issue #98 + #90 workaround removal +
|
||||
possibly closes #97)**. Retail oracle: `CObjCell::find_cell_list`
|
||||
Position-variant at `acclient_2013_pseudo_c.txt:308742-308783`.
|
||||
Finding 3 family).** **A6.P3 slice 3 SHIPPED 2026-05-22** (commits `8898166` v1 +
|
||||
`3e140cf` v2): cell-resolver stickiness added in `ResolveCellId`'s
|
||||
indoor branch (point-in check against `fallbackCellId`'s CellBSP
|
||||
before falling through to FindCellList). Data confirms ping-pong is
|
||||
FULLY CLOSED — scen4 cellar capture shows 1 cell-transit (login
|
||||
teleport) vs 20+ pre-fix. **#90 workaround now redundant — deferred
|
||||
to A6.P4 removal. #97 phantom collisions hypothesis pending re-test.
|
||||
#98 cellar-up symptom PERSISTS with a NEW diagnosis** (re-filed in
|
||||
#98 as BSP step physics issue at top of cellar stair flight; player
|
||||
hits sloped step-face, push-back consumes all walk-interp; not
|
||||
cell-resolver). Current A6 phase: **A6.P3 slice 4 (or A6.P4?) —
|
||||
investigate #98 BSP step-physics at cellar stair top.**
|
||||
Findings doc:
|
||||
[`docs/research/2026-05-21-a6-cdb-capture-findings.md`](docs/research/2026-05-21-a6-cdb-capture-findings.md).
|
||||
Original demo scenario (Holtburg Sewer end-to-end) is unreachable: sewer
|
||||
|
|
|
|||
|
|
@ -664,12 +664,34 @@ Falsifiable: if #96 fix closes #97 as a side-effect, the hypothesis is confirmed
|
|||
|
||||
---
|
||||
|
||||
## #98 — Cellar ascent stuck at last step (cell-resolver ping-pong; Finding 3 manifestation)
|
||||
## #98 — Cellar ascent stuck at top (BSP step physics; NOT cell-resolver)
|
||||
|
||||
**Status:** OPEN — **A6.P3 slice 3 target** (Finding 3 family)
|
||||
**Status:** OPEN — **NEW diagnosis after A6.P3 slice 3 (2026-05-22)**
|
||||
**Severity:** HIGH (blocks M1.5 demo cellar half — user can descend but cannot return)
|
||||
**Filed:** 2026-05-22
|
||||
**Component:** physics, cell resolver (ResolveCellId + CheckBuildingTransit)
|
||||
**Component:** physics, BSP step_up / step_down at cellar stair geometry
|
||||
|
||||
**Diagnosis update 2026-05-22 (post A6.P3 slice 3):** The cell-resolver ping-pong (the original hypothesis when this issue was filed) WAS confirmed and is now FIXED by slice 3 (commits `8898166` v1 + `3e140cf` v2 — point-in stickiness check in `ResolveCellId`). Data confirms: scen4_cottage_cellar_slice3v2 capture shows only 1 cell-transit event (login teleport) vs 20+ pre-fix.
|
||||
|
||||
BUT the cellar-up symptom PERSISTS even with the cell-resolver fix. The remaining cause is a BSP step physics issue at the cellar stair geometry. User report: "I'm running up the stairs, at the top it looks like I'm running into something. Still running animation but not going up." Player can climb most of the stair flight but gets blocked at the TOP step where the cellar transitions to the cottage main floor.
|
||||
|
||||
**Evidence from slice3v2 capture:**
|
||||
```
|
||||
[push-back] site=adjust_sphere in=(*, -0.0752, 0.0077) out=(*, -0.0752, 0.7577)
|
||||
delta=(0, 0, 0.7500) n=(0, -0.7190, 0.6950) d=-0.1007
|
||||
r=0.4800 winterp=1.0000->0.0000 applied=True
|
||||
```
|
||||
- Surface normal `(0, -0.719, 0.695)` — sloped 44° (walkable per FloorZ=0.664)
|
||||
- Push-back lifts sphere by 0.75m (step_down probe distance) repeatedly
|
||||
- `winterp 1.0→0.0` — entire walk interpolation consumed by the lift each tick
|
||||
- Player Z stays stuck around 0.0077 (relative to cell) → not progressing
|
||||
|
||||
**Hypothesis:** the step_down probe at the top of the cellar stair is hitting the sloped TOP step face (or possibly a wall poly), and consuming all walk interp pushing back. No remaining interp to actually walk forward over the top.
|
||||
|
||||
**Related:**
|
||||
- Inn stairs UP works (different geometry, doesn't trigger this specific failure mode)
|
||||
- Cellar descent works (only ascent fails — direction matters)
|
||||
- Issue #90 (cell-id ping-pong workaround in `ResolveCellId`) is now superseded by slice 3 v2's stickiness check; can be removed in A6.P4 after broader visual verification
|
||||
|
||||
**Description:** Walking UP from a Holtburg cottage cellar in acdream gets stuck "just almost at the last step up." Stairs going UP elsewhere (inn 2nd floor) work fine post-A6.P3 slice 1. Cellar DESCENT works. Only the cellar ASCENT from the bottom back to ground level fails — specifically at the last step where the player should transition from the indoor cellar cell to the cottage ground-floor cell.
|
||||
|
||||
|
|
|
|||
|
|
@ -203,21 +203,24 @@ successfully 2026-04-30 for the steep-roof case. Matching binaries
|
|||
Matching retail would require deeper refactor (e.g. AdjustOffset
|
||||
fallback to body.ContactPlane). Guard is benign improvement;
|
||||
further #96 closure deferred.
|
||||
- **A6.P3 slice 3 — Finding 3 (cell-resolver stickiness)** (NEXT,
|
||||
~1-2 days). New M1.5-blocking bug surfaced during slice 2
|
||||
verification: **user cannot walk UP from cottage cellar — stuck
|
||||
at last step due to cell-resolver ping-pong** (issue #98). Same
|
||||
family as #90 (existing workaround) + scen4 sling-out (Finding 3
|
||||
from A6.P2). Retail oracle: `CObjCell::find_cell_list`
|
||||
Position-variant at `acclient_2013_pseudo_c.txt:308742-308783`.
|
||||
Port retail's cell-array hysteresis: prefer previous tick's
|
||||
CellId when sphere is close to (but slightly outside) previous
|
||||
cell's CellBSP volume. May close issues #98 (target), #97
|
||||
(phantom collisions; same instability family), #90 (workaround
|
||||
removal), and scen4 sling-out together. **No re-captures
|
||||
required for slice 3 scope decision** — issue #98 evidence already
|
||||
captured in `docs/research/2026-05-21-a6-captures/scen3_inn_2nd_floor_slice2v2/acdream.log`
|
||||
cell-transit chain.
|
||||
- **✓ SHIPPED — A6.P3 slice 3 — cell-resolver stickiness**
|
||||
(2026-05-22, commits `8898166` v1 + `3e140cf` v2). Added
|
||||
point-in stickiness check at top of `ResolveCellId`'s indoor
|
||||
branch. Cell-resolver ping-pong FULLY CLOSED (data: scen4 cellar
|
||||
capture shows 1 cell-transit vs 20+ pre-fix). **Outcomes:**
|
||||
Finding 3 (cell-resolver instability) closed. #90 workaround
|
||||
redundant (deferred A6.P4 removal). #97 phantom collisions
|
||||
hypothesis pending re-test (likely closed too). #98 cellar-up
|
||||
symptom PERSISTS but with NEW diagnosis (re-filed in #98 as BSP
|
||||
step-physics at cellar stair top — sloped step-face mis-handling,
|
||||
NOT cell-resolver).
|
||||
- **A6.P3 slice 4 (or A6.P4)? — BSP step-physics at cellar
|
||||
stair top (#98 new diagnosis)** (NEXT or DEFERRED). Investigate
|
||||
why step-down probe consumes all walk-interp at cellar stair top.
|
||||
Evidence: scen4 cottage_cellar_slice3v2 push-back trace. May
|
||||
require reading BSP step_up + step_down decomp + comparing to
|
||||
cellar stair geometry. Could be its own slice or merged into a
|
||||
broader A6.P4 cleanup phase.
|
||||
- Issue #95 (visibility blowup) NOT in A6.P3 scope — separate work
|
||||
surface.
|
||||
- **A6.P4 — Remove workarounds + visual verification** (~1 day after
|
||||
|
|
|
|||
104949
docs/research/2026-05-21-a6-captures/scen4_cottage_cellar_slice3/acdream.log
Normal file
104949
docs/research/2026-05-21-a6-captures/scen4_cottage_cellar_slice3/acdream.log
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue