diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 7c5db839..6bc00a51 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -1923,8 +1923,26 @@ it. Do #297 FIRST — #298 depends on it. entity cell. Spell buffs, recalls, arrows, and combat spell projectiles were verified in the connected client; focused effect, projectile, and cell-transition tests cover the race. Landed at `f24532ad`. -- **#280 — FIXED (2026-08-05), pending the batched C5c connected/visual gate — +- **#280 — CLOSED 2026-08-06, user-accepted at the C5c connected gate — portal reveal could expose an incompletely streamed distant landscape.** + **Gate result:** *"now portal space takes longer but terrain is complete when + I exit"* — both halves of the specified criteria (a measurably longer hold, + and a complete destination on reveal). Probe evidence in + `c5c-gate-after2.log`: three Portal reveals plus a Login reveal, **every one + at `radius=12`** where pre-fix it was a hardcoded `1`, each portal hold + raising the wait cue at ~5.0 s before completing. An accidental but genuine + A/B was obtained in the same session: an earlier run set + `ACDREAM_PROBE_REVEAL_RADIUS=1` — that variable is a radius **value**, not an + on/off flag — which forced the pre-fix window, and the user observed the + original defect under it and not under `radius=12`. + **Fixed across `3aab05b0` (derivation), `73cdb95c` (D-1, an unrecoverable + portal hang found by review), `bcb66ccd` (the atlas-tier seam its fix + depends on).** Residual **AP-149** stays open: our outer ring accepts + terrain-only readiness where retail's `PreFetchCells` also requires each + landblock's `LandBlockInfo` and every building's EnvCells — so distant + *scenery* may still fill in after reveal even though terrain does not. + Deliberately not folded in; it costs further hold time and is a game-feel + call. Historical description follows. User-observed 2026-08-03: after some recalls, the nearby destination is playable but terrain near the far end of the view continues visibly building after portal space exits. **Premise correction (the original text named a diff --git a/docs/plans/2026-08-02-placement-cutover.md b/docs/plans/2026-08-02-placement-cutover.md index 03e2d83c..dd2c1104 100644 --- a/docs/plans/2026-08-02-placement-cutover.md +++ b/docs/plans/2026-08-02-placement-cutover.md @@ -1,5 +1,28 @@ # Placement production cutover — campaign plan (2026-08-02) +> ## ✅ CAMPAIGN LEDGER CLOSED — 2026-08-06, by user direction +> +> Every slice is landed and dual-reviewed: **C0–C4**, **C5a**, **C5b** +> (#275; retired AP-131 + AD-60's legacy half), **#280** (portal destination +> prefetch, user-accepted at its connected gate), **#276's remainder**, +> **AP-22** and **AD-10** (both retired). **#309** was accepted as a standing +> divergence rather than fixed. Final gate: complete Release suite from a +> clean build, **11,196 passed / 4 skipped / 0 failed** — campaign net +90 +> from 11,106. +> +> **The ledger closes with connected gates outstanding, by user direction — +> not because they were discharged.** Only #280's reveal gate was run and +> passed. D-1's two reachability scenarios, AP-136's six-step park protocol, +> route-7 thickening, the two-client observation, the nine-stop soak and the +> lifecycle/reconnect route were **NOT RUN**; the probe family is +> **deliberately NOT stripped** for that reason. Anyone citing "the campaign +> passed" must cite §2.6 of the closeout alongside it: +> [`2026-08-06-c5c-closeout-handoff.md`](../research/2026-08-06-c5c-closeout-handoff.md). +> +> Follow-ups generated and filed rather than folded in: **#325**, **#330**, +> **#331**, **#332**, **AP-149**, **AP-152**, **AD-65**, **AD-66**. Start with +> **#331**. + The final leg of the remaining physics-divergence campaign before AP-22 and AD-10: route graphical AND headless production placement through the residence + continuation-executor owner (`38fd4b8d` / `30012361` / diff --git a/docs/research/2026-08-06-c5c-closeout-handoff.md b/docs/research/2026-08-06-c5c-closeout-handoff.md index c5c46bb3..f7ee887f 100644 --- a/docs/research/2026-08-06-c5c-closeout-handoff.md +++ b/docs/research/2026-08-06-c5c-closeout-handoff.md @@ -69,6 +69,50 @@ Net movement across the campaign: 11,106 at `02578441` → **11,196**, +90. --- +## 2.6 Connected gate — #280 USER-PASSED 2026-08-06; the rest NOT RUN + +**#280's reveal gate: PASS, user-accepted.** User's words: *"now portal space +takes longer but terrain is complete when I exit."* Both halves are the +criteria the gate specified — a measurably longer hold (the fix doing its job) +and a complete destination on reveal (the acceptance). + +Probe evidence, `ACDREAM_PROBE_PARK=1`, retail UI, Release, `ACDREAM_STREAM_RADIUS` +unset (`c5c-gate-after2.log`): + +- **Three Portal reveals plus a Login reveal, every one at `radius=12`.** + Pre-#280 this was a hardcoded `1`. +- Each portal hold raised the wait cue at ~5.0 s (`elapsedMs=5031 / 5000 / + 5010`) before `materialized → world-visible → complete`. +- Generation 4 revealed cell `0x3032001C` — the same cell as generation 1's + login, i.e. a repeat visit to an already-seen landblock. +- The park path was exercised (95 `[park...]` lines). + +**An accidental but genuine A/B.** An earlier run in the same session set +`ACDREAM_PROBE_REVEAL_RADIUS=1`, which is a radius VALUE, not an on/off flag — +so it forced the pre-fix window. The user observed the original defect +(landscape building in the background) with `radius=1` on every probe line, and +did not observe it with `radius=12`. That is the before/after pair the gate +asked for, obtained by accident. **Successors: this probe overrides the radius; +it does not merely enable logging.** + +### NOT RUN — do not read this section as gate coverage + +| Owed gate | Status | +|---|---| +| D-1's two reachability scenarios (double-recall to the same landblock with a walk between; mid-hold quality-preset drop) | **NOT RUN.** Generation 4's repeat visit is suggestive but is not the demote path D-1 needs. | +| AP-136's six-step park check | **NOT RUN as the six-step protocol.** The probe fired 95 times incidentally; that is not the check. | +| Route-7 thickening | **NOT RUN** — `ACDREAM_PROBE_REMOTE_TELEPORT` recorded **0** lines; no remote teleport occurred. | +| Two-client observation | **NOT RUN** | +| Canonical nine-stop soak | **NOT RUN** | +| Lifecycle/reconnect route on the final binary | **NOT RUN** | +| AD-65 / AD-66 local-player visual gate | **NOT RUN** | + +The campaign ledger closes with these outstanding **by user direction**, not +because they were discharged. Anyone citing "C5c passed" must cite §2.6's table +alongside it. + +--- + ## 3. WHAT C5C STILL OWES — all of it needs the user Nothing below can be discharged without a live client. The automated half is @@ -97,12 +141,31 @@ complete. ### 3.2 Then, and only then -**The probe strip.** Six flags — `ACDREAM_PROBE_REMOTE_LANDING`, -`ACDREAM_PROBE_REMOTE_SLIDE`, `ACDREAM_PROBE_PARK`, -`ACDREAM_PROBE_REMOTE_TELEPORT`, `ACDREAM_PROBE_CHILD_CELL`, -`ACDREAM_PROBE_LOCAL_TELEPORT` — plus `ACDREAM_PROBE_REVEAL_RADIUS`. -**Strip as a family, and NOT before the gates above have consumed them.** -Stripping first would delete the instrumentation §3.1's items depend on. +**The probe strip — DEFERRED 2026-08-06, deliberately, and the ledger closes +without it.** + +Six flags — `ACDREAM_PROBE_REMOTE_LANDING`, `ACDREAM_PROBE_REMOTE_SLIDE`, +`ACDREAM_PROBE_PARK`, `ACDREAM_PROBE_REMOTE_TELEPORT`, +`ACDREAM_PROBE_CHILD_CELL`, `ACDREAM_PROBE_LOCAL_TELEPORT` — plus +`ACDREAM_PROBE_REVEAL_RADIUS`. + +**Not stripped, because §2.6's table says their gates were never run.** Only +#280's reveal gate was discharged. Route-7 thickening recorded zero +remote-teleport lines; AP-136's six-step park protocol was not performed; the +two-client observation, nine-stop soak and lifecycle/reconnect route did not +happen. Stripping the family now would delete exactly the instrumentation +those still-owed gates need, which is the failure this section was written to +prevent — so honouring it means *not* stripping, even though the campaign is +closing. + +`ACDREAM_PROBE_REVEAL_RADIUS` is kept too, despite #280 being closed: **AP-149** +(outer ring accepts terrain-only) and **#326** (the missing Viewing Distance +option) are both open and both would want the same A/B harness. Retiring it now +would mean rebuilding it. + +**Successor:** strip the family when the §2.6 gates are actually run, not on a +calendar. Note again that `ACDREAM_PROBE_REVEAL_RADIUS` is a radius **value**, +not a boolean — setting it to `1` silently reproduces the pre-#280 defect. ### 3.3 Then close the ledger