From 6439b9d48ea7113c97d888fb786661865b8c3f00 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 7 Aug 2026 07:17:22 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20#341=20mechanism=20RESOLVED=20=E2=80=94?= =?UTF-8?q?=20trigger=20and=20resting=20geometry=20are=20one=20family?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CPolygon::adjust_sphere_to_plane @0x00538210 solves the walkable placement for perpendicular distance == radius: retail rests the sphere TANGENT to the slope, which makes its bare-radius push-out trigger structurally inert — and explains why our planted rest (perp = r*N.z) makes our substituted trigger inert here by the same algebra. Each engine's trigger matches its own resting geometry; the live A/B's 84% fire rate is what mixing retail's trigger with our placement produces. AD-66 is therefore not a standalone row: the faithful unit is the pair (tangent placement + bare trigger), ported together or divergent together. The visible corollary of the retail pair — feet floating by r*(sec(theta)-1) on slopes, up to ~20 cm near the walkable limit — is why the decision is queued for the user's eyes rather than taken silently under the retail-first default. From capture to mechanism in one morning: the user's two-minute slope run plus one decomp read did what the overnight harness could not. Co-Authored-By: Claude Opus 5 --- docs/ISSUES.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/ISSUES.md b/docs/ISSUES.md index b949046a..72b086d1 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -210,6 +210,37 @@ offers a mechanical suspect for the harness flip below: the two assert shapes plausibly differ in what settle state the harness left (`r*N.z` vs `r`), which is test-ORDER state, not physics. +### MECHANISM RESOLVED, same morning — the trigger and the resting geometry are one family + +`CPolygon::adjust_sphere_to_plane` @0x00538210 (pseudo-C 322032): retail's +walkable placement solves the interpolation for the point where the sphere's +PERPENDICULAR distance to the walkable plane equals the RADIUS — the sphere +rests TANGENT to the slope. Consequences, closing the loop on the live A/B: + +- **Retail:** tangent rest (perp = r) makes the bare-radius trigger + (`dist < r − ε`) structurally INERT — equality minus epsilon. No fight, no + oscillation. The visible corollary: retail characters' feet float + vertically above a slope by `r·(secθ − 1)` — 2.7 cm on a 31° slope, ~20 cm + near the walkable limit — which matches AC's known slope look. +- **acdream:** planted rest (feet on surface, perp = r·N.z) makes OUR + retained trigger structurally inert here for the same reason. Each engine's + trigger matches its own resting geometry; both pairs are internally + coherent, and the live A/B's 84% fire rate is what happens when you mix + retail's trigger with our placement. +- **Therefore AD-66 is NOT a standalone row.** The faithful unit is the PAIR: + tangent placement + bare trigger, ported together — or our pair kept + together as one deliberate divergence. Porting either half alone + manufactures a fight neither engine has. +- The harness flip's suspect is strengthened: a tangent-rest start is stable + under the bare trigger, a planted start lifts once — which of the two the + harness settle leaves is plausibly order-dependent test state. + +**Queued decision (user, no urgency): port the retail pair (feet float +slightly on slopes, exactly like retail — a visible feel change gated by +eyes) or keep our pair (planted feet, one register row covering placement + +trigger together, AD-66 re-titled accordingly).** Retail-first says port; it +is deliberately not done silently because the difference is visible. + **Hypotheses deliberately NOT chased at 04:00:** a property-read side effect (reading `body.ContactPlane` between tick and assert — should be impossible); xUnit execution-order/parallelism interacting with harness or engine state;