docs: split C4 route 4 into 4a/4b and pin the 4a contract
User-directed after scoping put whole-route 4 at 1,500-2,500 production lines against a stated ~400 budget. 4a is the steady state: the classifier's Interpolate (contact, < 96 m) and NoPositionOperation (no contact) branches. Neither performs a SetPosition, so 4a carries no deferred-cell park, no service-window guard, no allocation exposure, and no interaction with the Forget-on-every-accepted-Position behaviour that dominated route 2's review rounds. It also fixes two of the three unfiled divergences: the NPC airborne hard-snap that ignores the wire IsGrounded bit (retail returns 0 and writes nothing, MoveOrTeleport @0x0051636D), and ConstrainTo armed before the operation instead of after (retail arms it post-move only on a nonzero return, @0x00454272). 4b takes the edges — teleport, far-snap, cell-less — where the parks, the Position-time service-window guard, #277's broken bound, N3, and the third divergence live. The contract sanctions exactly one dual path: 4a routes its two classifications through the new seam and leaves the other two on the legacy path until 4b. That is a staged cutover rather than a duplicate authority ONLY because the discriminator is the classifier itself and the classifications are mutually exclusive; the contract says so explicitly and requires the fallback deleted in 4b. Two carried acdream additions are called out as load-bearing rather than left to be discovered: AP-87's 4 m / !willBeDrTicked snap conditions (which prevent the #184 invisible-but-solid monster and are NOT in the classifier) and TS-44's sticky suppression. Silently dropping them by delegating to the classifier is named as the failure mode. Acceptance requires a BEHAVIOURAL App test, not the source-text pin route 2 settled for (#292). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
62e906b136
commit
2f0c26c8a4
2 changed files with 175 additions and 0 deletions
|
|
@ -254,6 +254,26 @@ same commit) → docs/handoff commit. No workarounds; no fused slices.
|
|||
6 (drops + split-recovery marking), 7 (residual pickup/parent/delete
|
||||
polish). — route 2 COMPLETE AND USER-ACCEPTED 2026-08-03 (`9966b531`);
|
||||
routes 3/4/5/6/7 remain OPEN.**
|
||||
**Route 4 SPLIT into 4a and 4b (user-directed 2026-08-03).** Scoping
|
||||
([`2026-08-03-c4-route-4-scoping.md`](../research/2026-08-03-c4-route-4-scoping.md))
|
||||
put whole-route 4 at 1,500-2,500 production lines against a stated ~400
|
||||
budget, so it is split to keep each landing reviewable:
|
||||
- **4a — the steady state.** The classifier's `Interpolate` (contact,
|
||||
`PlayerDistance < 96 m`) and `NoPositionOperation` (no contact) branches.
|
||||
NEITHER runs a `SetPosition`, so 4a has no deferred-cell park, no
|
||||
service-window work, and no placement-allocation exposure. Fixes two of the
|
||||
three unfiled divergences (the NPC airborne hard-snap that ignores the wire
|
||||
`IsGrounded` bit; `ConstrainTo` armed before the operation instead of
|
||||
after). Highest visible value — this is what makes creatures move smoothly.
|
||||
- **4b — the edges.** `SetPosition` / `SetPositionSimple`: teleport, far-snap
|
||||
(>= 96 m), and cell-less first placement. This is where the parks, the
|
||||
Position-time service-window guard, #277's broken bound, N3 (headless never
|
||||
calls `RetryPending`), and the third divergence (`ConstrainTo` never armed
|
||||
on the remote teleport branch) all live.
|
||||
Note the route-4 Create half is ALREADY DONE (C3b/C3c); the remaining work is
|
||||
steady-state remote Position plus the deletions. AP-131 is NOT retired by
|
||||
either sub-slice — see the scoping doc for why route 4 alone cannot.
|
||||
4a contract: [`2026-08-03-c4-route-4a-contract.md`](../research/2026-08-03-c4-route-4a-contract.md).
|
||||
**Route 2 connected gate PASSED (user, 2026-08-03).** Provoked with the
|
||||
retail `@pklite` entry-collision bump (`69ba9486` — the only reachable ACE
|
||||
trigger for `ObjectForcePosition`; admin teleports advance `ObjectTeleport`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue