mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-11 03:01:58 +00:00
Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4da2e4fb05 | |||
| dd6cf9555b | |||
| 60c321ddd4 | |||
| e1ce504907 | |||
| 5f4d1533f6 | |||
| f569fa63af | |||
| b10d81acb5 | |||
| bb28c155ed | |||
| 94e3cbe541 | |||
| da4f2dff79 | |||
| aa01457f41 | |||
| 0ed4ae056f | |||
| 162101a576 | |||
| 6e7068cdce | |||
| 700d25fcf0 | |||
| b06395dabd | |||
| e8b8bcaeb1 | |||
| d1311e88e9 | |||
| 6621fa390e | |||
| 04981337ff | |||
| 90e1f5a9e9 | |||
| dacbe5fe3e |
@@ -150,5 +150,95 @@
|
||||
"primitive.primitive_creation_p2": {
|
||||
"gen0092": "tangency-labs/solidcore#2794: a circle of radius 1e-3 swept along two 1e-2 legs at a right angle returns success, but the body fails check_brep level 2 (vertex 1.8284271e-3 off its faces); a refusal or the valid body of volume 6.2832e-8 is right; fix in #2840",
|
||||
"gen0189": "tangency-labs/solidcore#2794: the same input as gen0092 (circle of radius 1e-3 swept along two 1e-2 legs at a right angle) returns success with an invalid body (vertex 1.8284271e-3 off its faces); fix in #2840"
|
||||
},
|
||||
"surface.offset_surface": {
|
||||
"gen0033": "tangency-labs/solidcore#2717: step 3 names D(2,0), overwritten by D(1,1) at out[67]; input-only oracle confirms the named value is wrong",
|
||||
"gen0086": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[30]",
|
||||
"gen0111": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[178]",
|
||||
"gen0112": "tangency-labs/solidcore#2717: step 0 names D(2,0), overwritten by D(1,2) at out[14]",
|
||||
"gen0124": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[18]",
|
||||
"gen0166": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[16]",
|
||||
"gen0201": "tangency-labs/solidcore#2717: step 0 names D(2,0), overwritten by D(1,2) at out[14]",
|
||||
"gen0256": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[65]",
|
||||
"gen0351": "tangency-labs/solidcore#2717: step 3 names D(2,0), overwritten by D(1,1) at out[73]; input-only oracle confirms the named value is wrong",
|
||||
"gen0411": "tangency-labs/solidcore#2717: step 3 names D(3,0), overwritten by D(1,2) at out[86]",
|
||||
"gen0414": "tangency-labs/solidcore#2717: step 4 names D(2,0), overwritten by D(1,2) at out[133]",
|
||||
"gen0460": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[66]",
|
||||
"gen0495": "tangency-labs/solidcore#2717: step 3 names D(3,0), overwritten by D(1,2) at out[127]",
|
||||
"gen0500": "tangency-labs/solidcore#2717: step 1 names D(2,0), overwritten by D(1,2) at out[68]",
|
||||
"gen0550": "tangency-labs/solidcore#2717: step 5 names D(2,0), overwritten by D(1,2) at out[96]",
|
||||
"gen0551": "tangency-labs/solidcore#2717: step 0 names D(3,0), overwritten by D(1,2) at out[11]",
|
||||
"gen0554": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[24]",
|
||||
"gen0565": "tangency-labs/solidcore#2717: step 0 names D(2,0), overwritten by D(1,2) at out[14]",
|
||||
"gen0615": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[43]",
|
||||
"gen0640": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[123]",
|
||||
"gen0641": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[123]",
|
||||
"gen0690": "tangency-labs/solidcore#2717: step 1 names D(2,0), overwritten by D(1,1) at out[62]; input-only oracle confirms the named value is wrong",
|
||||
"gen0757": "tangency-labs/solidcore#2717: step 1 names D(2,0), overwritten by D(1,1) at out[63..65]; input-only oracle at the explicitly clamped point confirms all three named components are wrong",
|
||||
"gen0761": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[46]",
|
||||
"gen0785": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[65]",
|
||||
"gen0837": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[25]",
|
||||
"gen0863": "tangency-labs/solidcore#2717: step 0 names D(3,0), overwritten by D(1,2) at out[11]",
|
||||
"gen0869": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[25]",
|
||||
"gen0896": "tangency-labs/solidcore#2717: step 0 names D(3,0), overwritten by D(1,2) at out[11]",
|
||||
"gen0942": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[75]",
|
||||
"gen0978": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[65]",
|
||||
"gen1010": "tangency-labs/solidcore#2717: step 3 names D(2,0), overwritten by D(1,2) at out[91]",
|
||||
"gen1033": "tangency-labs/solidcore#2717: step 3 names D(2,0), overwritten by D(1,2) at out[77]",
|
||||
"gen1058": "tangency-labs/solidcore#2717: step 4 names D(3,0), overwritten by D(1,2) at out[88]",
|
||||
"gen1110": "tangency-labs/solidcore#2717: step 1 names D(2,0), overwritten by D(1,1) at out[9]; input-only oracle confirms the named value is wrong",
|
||||
"gen1114": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[30]",
|
||||
"gen1119": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[78]",
|
||||
"gen1121": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[72]",
|
||||
"gen1167": "tangency-labs/solidcore#2717: step 5 names D(3,0), overwritten by D(1,2) at out[110]",
|
||||
"gen1174": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[65]",
|
||||
"gen1265": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[65]",
|
||||
"gen1274": "tangency-labs/solidcore#2717: step 0 names D(3,0), overwritten by D(1,2) at out[11]",
|
||||
"gen1310": "tangency-labs/solidcore#2717: step 0 names D(2,0), overwritten by D(1,1) at out[8]; input-only oracle confirms the named value is wrong",
|
||||
"gen1333": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[66]",
|
||||
"gen1360": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[28]",
|
||||
"gen1363": "tangency-labs/solidcore#2717: step 3 names D(2,0), overwritten by D(1,2) at out[84]",
|
||||
"gen1385": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[178]",
|
||||
"gen1397": "tangency-labs/solidcore#2717: step 4 names D(3,0), overwritten by D(1,2) at out[53]",
|
||||
"gen1403": "tangency-labs/solidcore#2717: step 0 names D(2,0), overwritten by D(1,2) at out[14]",
|
||||
"gen1410": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[69]",
|
||||
"gen1444": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[65]",
|
||||
"gen1468": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[15]",
|
||||
"gen1562": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[65]",
|
||||
"gen1584": "tangency-labs/solidcore#2717: step 4 names D(2,0), overwritten by D(1,2) at out[30]",
|
||||
"gen1603": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[27..28]; input-only revolution oracle confirms both named components are wrong",
|
||||
"gen1635": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[87]",
|
||||
"gen1643": "tangency-labs/solidcore#2717: step 1 names D(2,0), overwritten by D(1,2) at out[69]; input-only oracle confirms the named value is wrong",
|
||||
"gen1694": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[72]",
|
||||
"gen1726": "tangency-labs/solidcore#2717: step 4 names D(2,0), overwritten by D(1,2) at out[92]",
|
||||
"gen1733": "tangency-labs/solidcore#2717: step 0 names D(3,0), overwritten by D(1,2) at out[11]",
|
||||
"gen1817": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[28]",
|
||||
"gen1818": "tangency-labs/solidcore#2717: step 5 names D(3,0), overwritten by D(1,2) at out[161]",
|
||||
"gen1890": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[22]",
|
||||
"gen1955": "tangency-labs/solidcore#2717: step 0 names D(2,0), overwritten by D(1,2) at out[14]",
|
||||
"gen2010": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[16]",
|
||||
"gen2015": "tangency-labs/solidcore#2717: step 3 names D(3,0), overwritten by D(1,2) at out[89]",
|
||||
"gen2072": "tangency-labs/solidcore#2717: step 0 names D(2,0), overwritten by D(1,2) at out[14]",
|
||||
"gen2140": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[65]",
|
||||
"gen2168": "tangency-labs/solidcore#2717: step 3 names D(3,0), overwritten by D(1,2) at out[103]",
|
||||
"gen2170": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[65]",
|
||||
"gen2213": "tangency-labs/solidcore#2717: step 4 names D(3,0), overwritten by D(1,2) at out[87]",
|
||||
"gen2240": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[66]",
|
||||
"gen2243": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,1) at out[60..62]; input-only pre-swap oracle confirms all three named components are wrong",
|
||||
"gen2257": "tangency-labs/solidcore#2717: step 3 names D(3,0), overwritten by D(1,2) at out[70]",
|
||||
"gen2381": "tangency-labs/solidcore#2717: step 1 names D(2,0), overwritten by D(1,2) at out[68]",
|
||||
"gen2485": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[32]",
|
||||
"gen2495": "tangency-labs/solidcore#2717: step 5 names D(3,0), overwritten by D(1,2) at out[108]",
|
||||
"gen2543": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[65]",
|
||||
"gen2598": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[68]",
|
||||
"gen2607": "tangency-labs/solidcore#2717: step 3 names D(2,0), overwritten by D(1,2) at out[26]",
|
||||
"gen2685": "tangency-labs/solidcore#2717: step 2 names D(3,0), overwritten by D(1,2) at out[22]",
|
||||
"gen2754": "tangency-labs/solidcore#2717: step 2 names D(2,0), overwritten by D(1,2) at out[33]",
|
||||
"gen2756": "tangency-labs/solidcore#2717: step 1 names D(3,0), overwritten by D(1,2) at out[65]",
|
||||
"gen2824": "tangency-labs/solidcore#2717: step 0 names D(3,0), overwritten by D(1,2) at out[11]",
|
||||
"gen2945": "tangency-labs/solidcore#2717: step 0 names D(2,0), overwritten by D(1,2) at out[14]",
|
||||
"gen2949": "tangency-labs/solidcore#2717: step 4 names D(2,0), overwritten by D(1,2) at out[92]",
|
||||
"gen2966": "tangency-labs/solidcore#2717: step 0 names D(3,0), overwritten by D(1,2) at out[11]",
|
||||
"upper_half_slot_overwrite": "tangency-labs/solidcore#2717: step 1 names D(2,0), overwritten by D(1,2) at out[26]"
|
||||
}
|
||||
}
|
||||
|
||||
+169
-257
File diff suppressed because it is too large
Load Diff
+354
-12
@@ -83,10 +83,13 @@
|
||||
//! or past the end of the caller's array (undefined; [`SolidError::InvalidInput`]
|
||||
//! here). Never-assigned locals that upstream reads in those cases (`Cv`, `Nv`, ...)
|
||||
//! are [`Vec3::UNDEF`], as the default `SmVector3d`.
|
||||
//! - **Upstream bugs kept** (`plan/upstream-issues.md`): the third derivatives `Cuuv` and
|
||||
//! `Cuvv` of the normal's numerator use the coefficient `3.0` for `Buuv x Buv` and
|
||||
//! `Buvv x Buv` (the derivative of `Cuu` / `Cvv` gives `1` and `-1`); the outputs
|
||||
//! `Duvv` and `Dvvv` add `Buuv` instead of `Buvv` / `Bvvv`; `SplitAt` with an extended
|
||||
//! - **Third-derivative corrections.** `Cuuv` and `Cuvv` use coefficients `1` and `-1`
|
||||
//! for `Buuv x Buv` and `Buvv x Buv`, not upstream's `3.0`; `Duvv` and `Dvvv`
|
||||
//! add `Buvv` and `Bvvv`, not `Buuv` (WR-160, WR-161; PR #1914). These corrections
|
||||
//! are unconditional. The arithmetic for orders 0..2 and `Duuu` is unchanged;
|
||||
//! regression tests retain pre-fix bits at four samples.
|
||||
//! - **Other upstream bugs kept.** `WR-162` (the upper-half, unequal-order second-
|
||||
//! derivative slot write) is still unfixed. `SplitAt` with an extended
|
||||
//! surface splits the base surface a second time for the extended halves; `SwapUV`
|
||||
//! with an extended surface negates the offset distance twice (kept unless
|
||||
//! `fixes.offset_swap_uv_extended_distance`, WR-164); `STEPInversion`
|
||||
@@ -1685,10 +1688,9 @@ impl OffsetSurface {
|
||||
put(out, 3 * (hv + 1), d(3, 0)? + offset_distance * nuuu)?;
|
||||
}
|
||||
if cond_uuv {
|
||||
// (upstream's 3.0 for Buuv x Buv; the derivative of Cuu gives 1)
|
||||
let cuuv = d(3, 1)?.cross(bv)
|
||||
+ d(3, 0)?.cross(d(0, 2)?)
|
||||
+ (3.0 * d(2, 1)?).cross(d(1, 1)?)
|
||||
+ d(2, 1)?.cross(d(1, 1)?)
|
||||
+ (2.0 * d(2, 0)?).cross(d(1, 2)?)
|
||||
+ bu.cross(d(2, 2)?);
|
||||
let muuv =
|
||||
@@ -1698,28 +1700,25 @@ impl OffsetSurface {
|
||||
put(out, 2 * (hv + 1) + 1, d(2, 1)? + offset_distance * nuuv)?;
|
||||
}
|
||||
if cond_uvv {
|
||||
// (upstream's 3.0 for Buvv x Buv, -1 by the derivative of Cvv; and Buuv in
|
||||
// the output where Buvv belongs)
|
||||
let cuvv = d(2, 2)?.cross(bv)
|
||||
+ (2.0 * d(2, 1)?).cross(d(0, 2)?)
|
||||
+ (3.0 * d(1, 2)?).cross(d(1, 1)?)
|
||||
+ (-1.0 * d(1, 2)?).cross(d(1, 1)?)
|
||||
+ d(2, 0)?.cross(d(0, 3)?)
|
||||
+ bu.cross(d(1, 3)?);
|
||||
let muvv =
|
||||
(cvv.dot(cu) + 2.0 * cv.dot(cuv) + c.dot(cuvv) - mvv * mu - 2.0 * mv * muv) / m_len;
|
||||
let nuvv =
|
||||
(cuvv - mu * nvv - 2.0 * muv * nv - 2.0 * mv * nuv - mvv * nu - muvv * n) / m_len;
|
||||
put(out, (hv + 1) + 2, d(2, 1)? + offset_distance * nuvv)?;
|
||||
put(out, (hv + 1) + 2, d(1, 2)? + offset_distance * nuvv)?;
|
||||
}
|
||||
if hv >= 3 {
|
||||
// (upstream adds Buuv where Bvvv belongs)
|
||||
let cvvv = d(1, 3)?.cross(bv)
|
||||
+ (3.0 * d(1, 2)?).cross(d(0, 2)?)
|
||||
+ (3.0 * d(1, 1)?).cross(d(0, 3)?)
|
||||
+ bu.cross(d(0, 4)?);
|
||||
let mvvv = (3.0 * cv.dot(cvv) + c.dot(cvvv) - 3.0 * mv * mvv) / m_len;
|
||||
let nvvv = (cvvv - 3.0 * mv * nvv - 3.0 * mvv * nv - mvvv * n) / m_len;
|
||||
put(out, 3, d(2, 1)? + offset_distance * nvvv)?;
|
||||
put(out, 3, d(0, 3)? + offset_distance * nvvv)?;
|
||||
}
|
||||
|
||||
if !do_eval_simple {
|
||||
@@ -3721,6 +3720,349 @@ mod tests {
|
||||
assert!(fixed < 1e-9, "fixed copies disagree by {fixed}");
|
||||
}
|
||||
|
||||
// ---- WR-160 / WR-161: corrected third-derivative terms --------------------------------
|
||||
|
||||
/// The biquadratic Bezier base `B(u, v) = (u + u^2 v, v + u v^2, u v)` over
|
||||
/// `[0, 1]^2`. Its `Bu x Bv = (1 + uv) * q` with `q = (-v, -u, 1 + 3uv)`, so on the
|
||||
/// positive domain the unit normal is `q / sqrt(L)` and both `Buuv x Buv` and
|
||||
/// `Buvv x Buv` are non-zero (a torus alone cannot reach the `Cuvv` coefficient).
|
||||
fn biquadratic_base() -> Surface {
|
||||
use crate::nurbs::math::{CPoint, NOW};
|
||||
let mut net = Vec::new();
|
||||
for i in 0..3 {
|
||||
let mut row = Vec::new();
|
||||
for j in 0..3 {
|
||||
let fi = f64::from(i) / 2.0;
|
||||
let fj = f64::from(j) / 2.0;
|
||||
let x = fi + if i == 2 { fj } else { 0.0 };
|
||||
let y = fj + if j == 2 { fi } else { 0.0 };
|
||||
row.push(CPoint::new(x, y, fi * fj, NOW));
|
||||
}
|
||||
net.push(row);
|
||||
}
|
||||
let knots = [0.0, 0.0, 0.0, 1.0, 1.0, 1.0];
|
||||
Surface::from(BSplineSurface::from_data(2, 2, 2, 2, 5, 5, &net, &knots, &knots).unwrap())
|
||||
}
|
||||
|
||||
/// The closed-form derivatives of `B + d * (q / sqrt(L))`, derived independently of
|
||||
/// the kernel's cross-product/quotient recurrence.
|
||||
#[derive(Clone, Copy)]
|
||||
struct ClosedForm {
|
||||
s: Vec3,
|
||||
su: Vec3,
|
||||
sv: Vec3,
|
||||
suu: Vec3,
|
||||
suv: Vec3,
|
||||
svv: Vec3,
|
||||
suuu: Vec3,
|
||||
suuv: Vec3,
|
||||
suvv: Vec3,
|
||||
svvv: Vec3,
|
||||
}
|
||||
|
||||
fn closed_form(u: f64, v: f64, d: f64) -> ClosedForm {
|
||||
let q = Vec3::new(-v, -u, 1.0 + 3.0 * u * v);
|
||||
let qu = Vec3::new(0.0, -1.0, 3.0 * v);
|
||||
let qv = Vec3::new(-1.0, 0.0, 3.0 * u);
|
||||
let quv = Vec3::new(0.0, 0.0, 3.0);
|
||||
let l = 1.0 + u * u + v * v + 6.0 * u * v + 9.0 * u * u * v * v;
|
||||
let lu = 2.0 * u + 6.0 * v + 18.0 * u * v * v;
|
||||
let lv = 2.0 * v + 6.0 * u + 18.0 * u * u * v;
|
||||
let luu = 2.0 + 18.0 * v * v;
|
||||
let lvv = 2.0 + 18.0 * u * u;
|
||||
let luv = 6.0 + 36.0 * u * v;
|
||||
let luuv = 36.0 * v;
|
||||
let luvv = 36.0 * u;
|
||||
let w = l.powf(-0.5);
|
||||
let a = -0.5 * l.powf(-1.5);
|
||||
let b = 0.75 * l.powf(-2.5);
|
||||
let c = -1.875 * l.powf(-3.5);
|
||||
let w_u = a * lu;
|
||||
let w_v = a * lv;
|
||||
let w_uu = b * lu * lu + a * luu;
|
||||
let w_uv = b * lu * lv + a * luv;
|
||||
let w_vv = b * lv * lv + a * lvv;
|
||||
let w_uuu = c * lu * lu * lu + 3.0 * b * lu * luu;
|
||||
let w_uuv = c * lu * lu * lv + b * (2.0 * lu * luv + lv * luu) + a * luuv;
|
||||
let w_uvv = c * lu * lv * lv + b * (lu * lvv + 2.0 * lv * luv) + a * luvv;
|
||||
let w_vvv = c * lv * lv * lv + 3.0 * b * lv * lvv;
|
||||
|
||||
let n = q * w;
|
||||
let n_u = qu * w + q * w_u;
|
||||
let n_v = qv * w + q * w_v;
|
||||
let n_uu = 2.0 * (qu * w_u) + q * w_uu;
|
||||
let n_uv = quv * w + qu * w_v + qv * w_u + q * w_uv;
|
||||
let n_vv = 2.0 * (qv * w_v) + q * w_vv;
|
||||
let n_uuu = q * w_uuu + 3.0 * (qu * w_uu);
|
||||
let n_uuv = q * w_uuv + 2.0 * (qu * w_uv) + qv * w_uu + 2.0 * (quv * w_u);
|
||||
let n_uvv = q * w_uvv + qu * w_vv + 2.0 * (qv * w_uv) + 2.0 * (quv * w_v);
|
||||
let n_vvv = q * w_vvv + 3.0 * (qv * w_vv);
|
||||
|
||||
let b0 = Vec3::new(u + u * u * v, v + u * v * v, u * v);
|
||||
let bu = Vec3::new(1.0 + 2.0 * u * v, v * v, v);
|
||||
let bv = Vec3::new(u * u, 1.0 + 2.0 * u * v, u);
|
||||
let buu = Vec3::new(2.0 * v, 0.0, 0.0);
|
||||
let buv = Vec3::new(2.0 * u, 2.0 * v, 1.0);
|
||||
let buvv = Vec3::new(0.0, 2.0, 0.0);
|
||||
let bvv = Vec3::new(0.0, 2.0 * u, 0.0);
|
||||
let buuv = Vec3::new(2.0, 0.0, 0.0);
|
||||
let buuu = Vec3::ZERO;
|
||||
let bvvv = Vec3::ZERO;
|
||||
|
||||
ClosedForm {
|
||||
s: b0 + d * n,
|
||||
su: bu + d * n_u,
|
||||
sv: bv + d * n_v,
|
||||
suu: buu + d * n_uu,
|
||||
suv: buv + d * n_uv,
|
||||
svv: bvv + d * n_vv,
|
||||
suuu: buuu + d * n_uuu,
|
||||
suuv: buuv + d * n_uuv,
|
||||
suvv: buvv + d * n_uvv,
|
||||
svvv: bvvv + d * n_vvv,
|
||||
}
|
||||
}
|
||||
|
||||
fn assert_component_close(got: Vec3, want: Vec3, tol: f64, what: &str) {
|
||||
for (axis, g, w) in [
|
||||
("x", got.x, want.x),
|
||||
("y", got.y, want.y),
|
||||
("z", got.z, want.z),
|
||||
] {
|
||||
let scale = g.abs().max(w.abs());
|
||||
assert!(
|
||||
(g - w).abs() <= tol * scale,
|
||||
"{what}.{axis}: got {g:?}, want {w:?}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
fn offset_evaluates(d: f64) -> (Kernel, OffsetSurface) {
|
||||
let k = Kernel::default();
|
||||
let off = OffsetSurface::new(&k, d, biquadratic_base(), true, SS_UNKNOWN).unwrap();
|
||||
(k, off)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn biquadratic_base_matches_its_closed_form() {
|
||||
let k = &Kernel::default();
|
||||
let base = biquadratic_base();
|
||||
for (u, v) in [(0.25, 0.5), (0.5, 0.25)] {
|
||||
let m = base
|
||||
.evaluate(k, Point2::new(u, v), 2, 2, flags(true, false))
|
||||
.unwrap();
|
||||
let cf = closed_form(u, v, 0.0);
|
||||
assert_component_close(m[0][0], cf.s, 1e-12, "B");
|
||||
assert_component_close(m[1][0], cf.su, 1e-12, "Bu");
|
||||
assert_component_close(m[0][1], cf.sv, 1e-12, "Bv");
|
||||
assert_component_close(m[2][0], cf.suu, 1e-12, "Buu");
|
||||
assert_component_close(m[1][1], cf.suv, 1e-12, "Buv");
|
||||
assert_component_close(m[0][2], cf.svv, 1e-12, "Bvv");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn offset_third_derivatives_match_closed_form_by_default() {
|
||||
// The public bound permits total order 3: equal highest orders with
|
||||
// `only_upper_half = true` fill the i + j <= 3 entries of the 4x4 matrix.
|
||||
// A full rectangular (3, 3) request exceeds MAX_DERIVS and is not this test.
|
||||
for d in [0.125, -0.125] {
|
||||
for (u, v) in [(0.25, 0.5), (0.5, 0.25)] {
|
||||
let (k, off) = offset_evaluates(d);
|
||||
let m = off
|
||||
.evaluate(&k, Point2::new(u, v), 3, 3, flags(true, true))
|
||||
.unwrap();
|
||||
let cf = closed_form(u, v, d);
|
||||
assert_component_close(m[0][0], cf.s, 1e-10, "S");
|
||||
assert_component_close(m[1][0], cf.su, 1e-10, "Su");
|
||||
assert_component_close(m[0][1], cf.sv, 1e-10, "Sv");
|
||||
assert_component_close(m[2][0], cf.suu, 1e-10, "Suu");
|
||||
assert_component_close(m[1][1], cf.suv, 1e-10, "Suv");
|
||||
assert_component_close(m[0][2], cf.svv, 1e-10, "Svv");
|
||||
assert_component_close(m[3][0], cf.suuu, 1e-10, "Suuu");
|
||||
assert_component_close(m[2][1], cf.suuv, 1e-10, "Suuv");
|
||||
assert_component_close(m[1][2], cf.suvv, 1e-10, "Suvv");
|
||||
assert_component_close(m[0][3], cf.svvv, 1e-10, "Svvv");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn offset_unchanged_partials_default_bits() {
|
||||
// Sampled pre-fix bits, not a universal bit-identity proof.
|
||||
let expected: [[[u64; 3]; 7]; 4] = [
|
||||
[
|
||||
[
|
||||
4597784033420957231,
|
||||
4603052133372172998,
|
||||
4597843606503600894,
|
||||
],
|
||||
[
|
||||
4608507369001728780,
|
||||
4595937248662427790,
|
||||
4602721857074240154,
|
||||
],
|
||||
[
|
||||
4575355825046357480,
|
||||
4608374220493674685,
|
||||
4597551169972174395,
|
||||
],
|
||||
[
|
||||
4606488318174322130,
|
||||
4594149428474944805,
|
||||
13811210086974777617,
|
||||
],
|
||||
[
|
||||
4603548734204850756,
|
||||
4607464454410458233,
|
||||
4607524890612695553,
|
||||
],
|
||||
[
|
||||
4590854552892320701,
|
||||
4602398157112256935,
|
||||
13790382657961158572,
|
||||
],
|
||||
[
|
||||
4594342907449483204,
|
||||
13824079142491288122,
|
||||
4599049961336867727,
|
||||
],
|
||||
],
|
||||
[
|
||||
[
|
||||
4603052133372172998,
|
||||
4597784033420957231,
|
||||
4597843606503600894,
|
||||
],
|
||||
[
|
||||
4608374220493674685,
|
||||
4575355825046357480,
|
||||
4597551169972174395,
|
||||
],
|
||||
[
|
||||
4595937248662427790,
|
||||
4608507369001728780,
|
||||
4602721857074240154,
|
||||
],
|
||||
[
|
||||
4602398157112256935,
|
||||
4590854552892320701,
|
||||
13790382657961158572,
|
||||
],
|
||||
[
|
||||
4607464454410458233,
|
||||
4603548734204850756,
|
||||
4607524890612695553,
|
||||
],
|
||||
[
|
||||
4594149428474944805,
|
||||
4606488318174322130,
|
||||
13811210086974777617,
|
||||
],
|
||||
[
|
||||
4578434541086050647,
|
||||
13818365831681546033,
|
||||
4589762622815018533,
|
||||
],
|
||||
],
|
||||
[
|
||||
[
|
||||
4599496712514278632,
|
||||
4603431404879963450,
|
||||
4576459430447861784,
|
||||
],
|
||||
[
|
||||
4608109268411991284,
|
||||
4599294204986700729,
|
||||
4602592743369460427,
|
||||
],
|
||||
[
|
||||
4593127507237113762,
|
||||
4608242416920045379,
|
||||
4598487244331827426,
|
||||
],
|
||||
[
|
||||
4607529469112865047,
|
||||
13817521465329720613,
|
||||
4587838050120001809,
|
||||
],
|
||||
[
|
||||
4600938989108239225,
|
||||
4606618347579135758,
|
||||
4606497475174661117,
|
||||
],
|
||||
[
|
||||
13814226589747096509,
|
||||
4602819150202841901,
|
||||
4567010621106382764,
|
||||
],
|
||||
[
|
||||
13817714944304259012,
|
||||
4600707105636512314,
|
||||
13822421998191643535,
|
||||
],
|
||||
],
|
||||
[
|
||||
[
|
||||
4603431404879963450,
|
||||
4599496712514278632,
|
||||
4576459430447861784,
|
||||
],
|
||||
[
|
||||
4608242416920045379,
|
||||
4593127507237113762,
|
||||
4598487244331827426,
|
||||
],
|
||||
[
|
||||
4599294204986700729,
|
||||
4608109268411991284,
|
||||
4602592743369460427,
|
||||
],
|
||||
[
|
||||
4602819150202841901,
|
||||
13814226589747096509,
|
||||
4567010621106382764,
|
||||
],
|
||||
[
|
||||
4606618347579135758,
|
||||
4600938989108239224,
|
||||
4606497475174661117,
|
||||
],
|
||||
[
|
||||
13817521465329720613,
|
||||
4607529469112865047,
|
||||
4587838050120001809,
|
||||
],
|
||||
[
|
||||
13801806577940826455,
|
||||
4594993794826770225,
|
||||
13813134659669794341,
|
||||
],
|
||||
],
|
||||
];
|
||||
let mut sample = 0;
|
||||
for d in [0.125, -0.125] {
|
||||
for (u, v) in [(0.25, 0.5), (0.5, 0.25)] {
|
||||
let (k, off) = offset_evaluates(d);
|
||||
let m = off
|
||||
.evaluate(&k, Point2::new(u, v), 3, 3, flags(true, true))
|
||||
.unwrap();
|
||||
for (n, (i, j)) in [(0, 0), (1, 0), (0, 1), (2, 0), (1, 1), (0, 2), (3, 0)]
|
||||
.into_iter()
|
||||
.enumerate()
|
||||
{
|
||||
let p = m[i][j];
|
||||
assert_eq!(
|
||||
[p.x.to_bits(), p.y.to_bits(), p.z.to_bits()],
|
||||
expected[sample][n],
|
||||
"sample {sample}, D[{i}][{j}]"
|
||||
);
|
||||
}
|
||||
sample += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// The B-spline base of the `extension_sequence` fixture (WR-164): degree 3 x 3,
|
||||
/// a 5 x 5 net of non-rational (`NOW`) control points and knots
|
||||
/// `[0,0,0,0,.5,1,1,1,1]`, built through the public `from_data`.
|
||||
|
||||
+128
@@ -0,0 +1,128 @@
|
||||
# Offset derivatives: input-only canonical revolution evidence (2026-11-08)
|
||||
|
||||
Continues #1914's golden dispositions, not #2717's implementation. The four
|
||||
numerical corrections are unchanged. The thirteen replacements below have
|
||||
independent value evidence; `gen1603` is instead a demonstrated wrong result,
|
||||
recorded against #2717 and never blessed. The other ordinary differences and the
|
||||
unresolved attribution review remain a draft hold.
|
||||
|
||||
## Provenance and independent construction
|
||||
|
||||
The complete 3,182-case collector was actually measured at
|
||||
`7a90407a0fe189ebceb551e5df28aaf4e8cc9893`, with raw-stream SHA-256
|
||||
`735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`.
|
||||
The subsequent data-only commits through `2ef53c83e` leave numerical source
|
||||
SHA-256 `86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`
|
||||
unchanged. Those measured revisions are not relabelled as newer executions.
|
||||
|
||||
The oracle reads only the original canonical B-spline generator, its weights and
|
||||
knots, and the input axis and origin. It never reads a kernel-generated control
|
||||
net or kernel derivatives. For unit axis z, origin o, and generator point p,
|
||||
write c = o + ((p-o) dot z) z, r = p-c, t = z cross r. The exact full-turn
|
||||
rational circle has Euclidean control points
|
||||
`(1,0),(1,1),(0,1),(-1,1),(-1,0),(-1,-1),(0,-1),(1,-1),(1,0)`, alternating
|
||||
weights 1 and `sqrt(1/2)`, degree 2 and doubled quarter knots. Its tensor-product
|
||||
homogeneous control points are `(w(c+a r+b t),w)`, multiplying each circle weight
|
||||
by its original generator weight. Linear affine rotation commutes with the
|
||||
rational generator sum, proving that this net is the original generator revolved
|
||||
in that parametrisation. Parameter swapping transposes it and reverses the
|
||||
normal. This is the standard rational-quarter-circle identity, not a fitted net
|
||||
(see `docs/definitions-and-certificates.md`, exact nets, and Piegl and Tiller,
|
||||
*The NURBS Book*, rational circles and surfaces of revolution).
|
||||
|
||||
At separately constructed 80- and 160-digit nets, the independent Taylor algebra
|
||||
differentiates `O = S + d (Su x Sv)/|Su x Sv|` through order three. Every input
|
||||
binary64 is converted exactly. The retained old-term counterfactual selects the
|
||||
moved indices only; it provides no expected value. All moved fields must be
|
||||
decoded derivative components, with the correct final named-slot writer.
|
||||
Only explicit scalar setters and nonassigning returned copies are modelled.
|
||||
For `gen0078` and `gen2174`, extension is disabled throughout and the original
|
||||
knots determine the API's clamped evaluation point before differentiation.
|
||||
|
||||
Every one of the 62 moved components passes the unchanged `1e-9` relative rule,
|
||||
with maximum discrepancy `3.688949523297068e-12`. Maximum relative precision drift
|
||||
is `2.0466689257358722e-76` within the jet calculation and
|
||||
`2.1099858277606303e-76` across separately constructed nets. No absolute floor is
|
||||
added. All thirteen retained input hashes and every raw float's binary64 bits
|
||||
were checked before editing an expectation.
|
||||
|
||||
## Thirteen exact row replacements
|
||||
|
||||
Each new row is the original collector's complete encoding. The checksums below
|
||||
are `[sum, abs_sum, weighted_sum]`, not bounds. The error column grades every raw
|
||||
moved derivative component, not merely these checksums.
|
||||
|
||||
| Case | Components / max relative error | Old → new checksum blocks |
|
||||
|---|---|---|
|
||||
| `gen0078` | 9 / `1.56099e-14` | `[[60992.32232773774, 62007.82172754136, 3573365.621681268]]` → `[[60955.3429329313, 61630.4439708014, 3570310.42044418]]` |
|
||||
| `gen0171` | 3 / `2.40474e-14` | `[[30460.067354949344, 30789.234141913264, 1571002.9046867639]]` → `[[30170.97766234359, 31175.217379802565, 1563841.1838079793]]` |
|
||||
| `gen0510` | 2 / `3.49776e-15` | `[[136783.91504548964, 136940.61322075027, 12115341.037492398]]` → `[[136755.1149473944, 136912.07291654628, 12111572.593217228]]` |
|
||||
| `gen0688` | 3 / `1.9788e-15` | `[[31346.461684132, 32403.592700681234, 1772295.8567843311]]` → `[[30781.309826793167, 32510.58038801976, 1753301.5773981945]]` |
|
||||
| `gen0913` | 3 / `1.51772e-13` | `[[61750.73067260197, 61840.21030969888, 3698631.549175109]]` → `[[61633.6609800661, 61723.14061716303, 3688650.729457595]]` |
|
||||
| `gen0965` | 6 / `3.92942e-16` | `[[31437.46049255547, 31844.361634149758, 3185201.893145722]]` → `[[31020.49497003035, 33310.32052049644, 3179826.550622901]]` |
|
||||
| `gen1021` | 3 / `1.32677e-14` | `[[32022.521603079706, 32221.489579301622, 622051.0166188008]]` → `[[32040.91340095389, 32239.881377175807, 623490.583575049]]` |
|
||||
| `gen1336` | 3 / `1.80575e-15` | `[[30508.18586005638, 30627.932843864983, 508130.084364765]]` → `[[30493.239429126246, 30634.94737160066, 507062.21452469326]]` |
|
||||
| `gen1523` | 3 / `3.02139e-15` | `[[106762.79310347415, 107249.71947489904, 8025630.370844599]]` → `[[108515.03086142626, 109001.95723285116, 8245925.889540591]]` |
|
||||
| `gen2083` | 3 / `9.18182e-14` | `[[76180.35956883941, 76708.58602231681, 3861956.0360428616]]` → `[[76207.07582306274, 76693.32645472689, 3865576.97943913]]` |
|
||||
| `gen2174` | 9 / `3.68895e-12` | `[[30567.472013004335, 30885.59102480571, 513955.18919101433]]` → `[[30404.688016921584, 30612.68300826498, 501435.5076105441]]` |
|
||||
| `gen2176` | 6 / `9.06304e-14` | `[[30807.70523767886, 31289.921984959317, 534969.6617323706]]` → `[[30716.53174207574, 31302.716083319912, 528245.5167390216]]` |
|
||||
| `gen2792` | 9 / `5.18444e-15` | `[[61142.0736249404, 61506.22354610884, 3704443.051684439]]` → `[[60914.84419372687, 61285.2585890741, 3688211.2636018256]]` |
|
||||
|
||||
## One demonstrated wrong named result: gen1603
|
||||
|
||||
The unchanged first three script steps decode to exactly the first 35 raw
|
||||
scalars. Step 2 evaluates `(hu,hv,upper)=(3,1,true)` at
|
||||
`[0.0,0.5056932298525347]`. The input SHA-256 is
|
||||
`731f3240c0a95f5d4885d50f3f19971f9c695729a9cc2d7bf85a268b03863cd7`
|
||||
(sorted compact Python JSON UTF-8). The original input, exact prefix values/bits
|
||||
and both independently constructed nets are retained in the archive below.
|
||||
|
||||
`plain_or_simple` writes `D(2,0)` at `2*(hv+1)=4`, then overwrites that slot at
|
||||
`(hv+1)+2=4` in the `D(1,2)` branch. Its `cvv/nvv` dependencies were not assigned
|
||||
because `hv<2`. The serializer still names the slot `D(2,0)`. Both the ordered
|
||||
source writes and the independent named derivative establish the defect:
|
||||
|
||||
| Raw index | Named component | Observed | Independent expected | Observed binary64 bits |
|
||||
|---|---|---|---|---|
|
||||
| 27 | `D(2,0).y` | `-682.320875639607038465328514575958251953125` | `98.17705633871186130273814537770736337787356829969092636818019892066445767973323701654830201015106781171705963251994176157046773168970297790093474259243937981360` | `13872585010566877584` |
|
||||
| 28 | `D(2,0).z` | `-274.23736224240929004736244678497314453125` | `-62.64369053230619373421032002083453895521648140114104432268252594384290426475072163262198550190050666582318223507349155873132572855942707179898455707666512398502` | `13866904087743285056` |
|
||||
|
||||
Relative discrepancies are `1.143886930392802` and `0.7715712767214668`, versus
|
||||
the unchanged `1e-9` rule. Separate-net precision drift is below `3.169e-79`.
|
||||
This proves a wrong returned named derivative; it does not grade the suffix or
|
||||
claim that the overwriting expression is a correct `D(1,2)`. Its old golden has
|
||||
length 46 and block `[[3650.1057913563527,6286.665825084098,118136.81376043486]]`.
|
||||
That line is removed, not replaced by another wrong result. The complete case
|
||||
still executes through its new issue-backed `known_failing.json` entry.
|
||||
|
||||
## Controls, exclusions and retained executable evidence
|
||||
|
||||
All 48 controls pass: the prior numerical/scope controls; cylinder point,
|
||||
tangent and circle identities; normal orientation on parameter swap; translated,
|
||||
non-Z and scaled axes; a rational generator's fractional-linear value and first
|
||||
three derivatives; explicit clamp versus allowed extension; wrong-value rejection;
|
||||
and the actual `gen1603` prefix's independently derived nets and input/bit identity.
|
||||
Restoring the two named values to their independent answers eliminates those
|
||||
wrong-value findings. Tampered bits and an unmodelled prefix edit are refused.
|
||||
The exact-zero closed-form controls compare 95 digits of a 100-digit Decimal
|
||||
calculation to accommodate its last rounding digits; captured values still use
|
||||
strict relative `1e-9` with no added floor.
|
||||
|
||||
The nine independently disagreeing revolution cases remain unresolved:
|
||||
`gen0729`, `gen0935`, `gen0993`, `gen1057`, `gen1488`, `gen2359`, `gen2588`,
|
||||
`gen2653`, `gen2794`. Constructor frames, analytic/arc-length generators,
|
||||
near-axis control points, unsupported edits/extensions, ambiguous knot sides
|
||||
and actual aliases are outside the replacement oracle. No B-rep topology,
|
||||
volume, global regularity or fold certificate is claimed for these jets.
|
||||
|
||||
The 35-member archive was read back and hash-verified before the edits, SHA-256
|
||||
`9266f4152921f181300f3811f269622338fec6b672311413a86764fece3d7a0c`.
|
||||
It contains executable Python models/tests, full-precision observations and
|
||||
exclusions, original raw/counterfactual streams, both alias proof nets, the old/new
|
||||
table and pre-edit identity receipt. Local retained path:
|
||||
`~/.local/share/opencode/solidcore-cleanup-evidence/pr1914-canonical-revolution-20261108-2ef53c83e/`.
|
||||
After these dispositions the expected accounting is 147 supported replacements /
|
||||
721 moved components, 3,096 ordinary rows plus 86 known failures, all 3,182 cases
|
||||
retained, and 210 ordinary differences. Those are projected counts until the
|
||||
actual gate runs. Parent canonical run 42463902198 ended `action_required`, not
|
||||
success. No workflow approval, rerun, review resolution or readiness is implied.
|
||||
Vendored
+37
@@ -0,0 +1,37 @@
|
||||
# Offset derivatives: preserved clamped-point evidence (2026-11-08)
|
||||
|
||||
The section below is preserved verbatim from #1914's published description at
|
||||
`2ef53c83e1e4f0f37146f27e79f4a2cb5ff3b445`, to keep later descriptions below
|
||||
GitHub's size limit. "This exact head", "only these eighteen rows" and the
|
||||
85-failure count refer to that historical publication, not to a later commit.
|
||||
Nothing is reblessed or remeasured by moving this evidence into a record.
|
||||
|
||||
## Eighteen additional clamped-point jets
|
||||
|
||||
With extension disabled throughout, `select_surface` clamps to the original direct-B-spline domain **before** `plain_or_simple` differentiates it. The returned jet is at that point, not a constant extension's derivatives. The input-only oracle computes those coordinates from the knots and evaluates at 80/160 digits, tracking scalar setters without changing inputs. Wrappers, extension-enabled scripts, other edits, unsupported orders, singular substitutions and actual named-slot aliases remain excluded.
|
||||
|
||||
All **102 moved components** satisfy the unchanged `1e-9` relative rule (maximum `4.3632e-13`) with maximum precision drift `3.453e-77`. All **37 numerical/scope controls** pass, and the existing kernel clamp/derivative-limit regression passes at this exact head. `gen1146`, `gen2298` and `gen2832` independently disagree and remain **unresolved**, with no automatic #2717 attribution, added floor or tolerance relaxation.
|
||||
|
||||
| Case | Components / maximum relative error | Old → new checksum blocks |
|
||||
|---|---|---|
|
||||
| `gen0096` | 3 / `5.2088e-14` | `[[-6773770209.875433, 64424015402.72274, -378749722047.2987]]` → `[[-6870563819.263274, 64495408259.89502, -386553674290.37585]]` |
|
||||
| `gen0106` | 9 / `7.5415e-14` | `[[31626.719296583855, 33363.51465493481, 2099118.839468814]]` → `[[31510.658539520075, 33182.16476097925, 2093273.1365587397]]` |
|
||||
| `gen0117` | 3 / `3.7514e-14` | `[[30393.92240119993, 30444.3317490507, 501900.592222631]]` → `[[30393.952077675916, 30444.158329310143, 501902.39235053613]]` |
|
||||
| `gen0134` | 6 / `4.3632e-13` | `[[37.832510687021795, 104.14284964357064, 1054.742957704554]]` → `[[39.06487390981253, 102.07201454768582, 1103.5111544935114]]` |
|
||||
| `gen0439` | 9 / `1.588e-14` | `[[-13493691.441181729, 13717537.718196781, -1869604804.9283178]]` → `[[-5556688.228706748, 5780534.505721803, -802954287.5887265]]` |
|
||||
| `gen0470` | 6 / `3.6124e-14` | `[[30411.56311392412, 30538.255424358227, 2722225.4981703223]]` → `[[30411.02807801994, 30538.749829700955, 2722215.508914114]]` |
|
||||
| `gen0520` | 6 / `2.0478e-14` | `[[2603.181323610652, 101149.6432820234, -150409.28755995663]]` → `[[4478.212077142718, 91793.59915509017, -110231.78941596425]]` |
|
||||
| `gen0975` | 3 / `2.4293e-14` | `[[-0.07499960999706787, 0.28311173511413507, -1.263414230268762]]` → `[[0.0019536212055459258, 0.26423357801083436, -0.039611592564807424]]` |
|
||||
| `gen1005` | 9 / `9.107e-14` | `[[28217.743974127192, 38093.608383810904, 1863000.1361175987]]` → `[[28256.151890684785, 38207.22373499281, 1865588.3408999464]]` |
|
||||
| `gen1026` | 3 / `9.0952e-15` | `[[45771.34220991706, 45864.49375112448, 577600.5831079823]]` → `[[45772.14833280894, 45865.584040146976, 577658.7064678086]]` |
|
||||
| `gen1047` | 3 / `8.4307e-14` | `[[31208.26635863553, 32223.47216717072, 562497.5647403828]]` → `[[31221.666358372844, 32308.728980748914, 563452.3343034461]]` |
|
||||
| `gen1501` | 6 / `4.6519e-15` | `[[76938.6903388469, 77235.62454754181, 6127941.733940306]]` → `[[76034.63657112679, 77163.63088496617, 6061737.160377767]]` |
|
||||
| `gen1815` | 3 / `7.9991e-14` | `[[30455.168428658406, 30493.41594569247, 1691412.366477158]]` → `[[30459.764928504002, 30490.46183200792, 1691573.0880891723]]` |
|
||||
| `gen2309` | 3 / `2.8838e-13` | `[[-2130345613.6145353, 50165393450.44275, -376803058672.42773]]` → `[[-2129529154.1441603, 50151508983.73155, -376729189548.8684]]` |
|
||||
| `gen2448` | 9 / `1.1976e-14` | `[[35233.48643230344, 35764.10016249043, 1427262.1225083272]]` → `[[19456.819917104032, 54845.74218580647, 1214690.186811323]]` |
|
||||
| `gen2507` | 6 / `1.6393e-14` | `[[60864.74652840865, 60955.2526814626, 3623994.1771435984]]` → `[[60872.637104188514, 60959.125270976685, 3624559.095594456]]` |
|
||||
| `gen2629` | 3 / `9.9247e-15` | `[[-0.7952289704799329, 21.961465706434275, -1.3129666919095415]]` → `[[-0.3803237369067746, 22.131710411144315, 10.81145447121247]]` |
|
||||
| `gen2869` | 12 / `5.2903e-15` | `[[43578.856643134844, 50713.272901409575, 2669836.6176526896]]` → `[[45556.57516403698, 48850.43526261595, 2728328.359954016]]` |
|
||||
|
||||
|
||||
The replacement rows equal the collector actually run at `7a90407a0fe189ebceb551e5df28aaf4e8cc9893`, raw SHA-256 `735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`; only these eighteen rows change. All **3,182 cases**, source inputs, unrelated expectations, topology/status fields and **85 known failures** are retained. Code, exact requested/clamped points, all full-precision observations (including disagreements), inputs, controls and actual checks are retained in the readback-verified 37-member archive SHA-256 `40de6d3665e90d04529ac1c6c36cc760ee9c4cccb093dc65aae69cd595f09bf7`. No new B-rep, global fold or volume result is accepted here.
|
||||
Vendored
+85
@@ -0,0 +1,85 @@
|
||||
# Offset derivatives: receiver copies and scalar setters (2026-11-08)
|
||||
|
||||
This preserves the twenty-case evidence published with #1914 at
|
||||
`eafd9f983a896d404708f560250e61d98af1148d`, without changing its conclusions.
|
||||
The table moves here only to keep the growing PR description within GitHub's
|
||||
size limit. This is evidence, not a new implementation or a blanket blessing.
|
||||
|
||||
## Contract and independent calculation
|
||||
|
||||
`OffsetSurface::create_offset_surface` and `split_at` in
|
||||
`crates/solidcore/src/surface/offset_surface.rs` take `&self` and return separate
|
||||
surfaces. The golden runner in
|
||||
`crates/goldens/src/units/surface_offset_surface.rs` serializes their results but
|
||||
does not assign them to its evaluated receiver. `set_offset_distance` changes
|
||||
only the scalar distance; `set_allow_extension` changes only that flag. The
|
||||
independent script decodes the complete output, distinguishing returned copies
|
||||
from those explicit scalar-state changes.
|
||||
|
||||
All 89 moved receiver-derivative components are computed from the original input
|
||||
B-spline net and its active distance, not from kernel derivatives or the old
|
||||
golden. The independent Taylor-series calculation forms
|
||||
`O = S + d (Su x Sv) / |Su x Sv|` through order three at 80 and 160 decimal digits,
|
||||
with exact conversion of input binary64 numbers. Every moved component satisfies
|
||||
the unchanged `1e-9` relative rule; the maximum discrepancy is
|
||||
`2.2550171238068774e-12`, and maximum relative precision drift is
|
||||
`2.467611411137571e-76`. No absolute floor is used.
|
||||
|
||||
All 32 numerical/scope controls pass. They distinguish assignment from a returned
|
||||
offset and two returned split copies; detect a wrong value, a changed returned
|
||||
metadata field or leftover output; reject a real `(3,1)` named-slot collision;
|
||||
and accept a fully decoded non-aliasing `(2,3)` request. An initial negative
|
||||
control used a non-aliasing grid and failed closed on leftover data; correcting
|
||||
its input did not relax the oracle. Actual aliases remain #2717's separate
|
||||
implementation and refusal-versus-mask contract.
|
||||
|
||||
Other edits, clamping/extension, singular evaluations and unsupported orders are
|
||||
not accepted by this particular oracle. Changed returned-copy metadata and
|
||||
point-grid fields are not graded as derivatives and fail closed. No global
|
||||
fold, B-rep validity or volume claim is made for these scalar observations.
|
||||
|
||||
## Exact twenty-row replacements
|
||||
|
||||
The numbers below are the golden encoding's `[sum, abs_sum, weighted_sum]`, not
|
||||
an error bound. The error column grades every raw moved derivative component.
|
||||
Each complete replacement equals the profile-matched collector actually run at
|
||||
`7a90407a0fe189ebceb551e5df28aaf4e8cc9893`; raw stream SHA-256 is
|
||||
`735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`.
|
||||
All case inputs, other rows, topology/status fields and 85 known failures remain
|
||||
unchanged. These twenty replacements were committed before this record.
|
||||
|
||||
| Case | Components / maximum relative error | Old → new checksum blocks |
|
||||
|---|---|---|
|
||||
| `gen0032` | 3 / `4.4236e-16` | `[[92670.95430254005, 92715.26944807055, 5394495.4598471755]]` → `[[92693.03707327033, 92694.87458551113, 5394777.774092088]]` |
|
||||
| `gen0162` | 3 / `1.0244e-15` | `[[46871.64465480175, 46912.45744508984, 641284.698235866]]` → `[[46871.953361038046, 46912.76615132614, 641305.966600447]]` |
|
||||
| `gen0475` | 3 / `1.5724e-14` | `[[27151.82918504171, 131932.52549897382, -939979.6007762165]]` → `[[31185.4680385726, 127549.24613271712, -558222.3126147436]]` |
|
||||
| `gen0572` | 6 / `1.7067e-15` | `[[167849.9025395879, 167890.1078119872, 21300050.663649388]]` → `[[167850.06785832535, 167890.11503477694, 21300062.927538052]]` |
|
||||
| `gen0880` | 3 / `5.5494e-14` | `[[60920.154703662876, 61176.964056868645, 3906415.661581074]]` → `[[60920.704177028034, 61177.49230659628, 3906458.4145365255]]` |
|
||||
| `gen0994` | 3 / `1.1467e-14` | `[[106650.05878460688, 106650.18920233288, 8439346.19902911]]` → `[[106650.05725603321, 106650.19177550825, 8439345.982613547]]` |
|
||||
| `gen1224` | 3 / `1.8937e-13` | `[[30411.369709868013, 30459.526237990547, 1232554.694631206]]` → `[[30411.448242488477, 30459.51607033539, 1232556.181057504]]` |
|
||||
| `gen1315` | 8 / `4.5609e-13` | `[[30383.545788392545, 30601.565436381683, 500105.67712378607]]` → `[[30810.583620881953, 31221.276639732067, 528537.8746195738]]` |
|
||||
| `gen1409` | 3 / `6.742e-15` | `[[152531.7026919565, 152595.2574882943, 15973296.61425218]]` → `[[152487.8116847785, 152551.36648111625, 15964854.977971999]]` |
|
||||
| `gen1736` | 5 / `5.803e-13` | `[[30381.85489376341, 30463.342937108937, 501217.8127281958]]` → `[[30381.84341680052, 30463.32683485667, 501216.735673139]]` |
|
||||
| `gen1832` | 8 / `3.0573e-14` | `[[76195.08638962446, 76280.17415270921, 4698801.86238598]]` → `[[76194.26386539408, 76280.91280592125, 4698729.4083463205]]` |
|
||||
| `gen1868` | 3 / `3.4819e-14` | `[[106585.78353762635, 106753.77622991134, 10570997.703791479]]` → `[[106603.2684371318, 106777.40382001479, 10572110.759543618]]` |
|
||||
| `gen2179` | 3 / `4.8025e-13` | `[[106611.43744989557, 106748.63148533777, 10203459.959847251]]` → `[[106611.42625550646, 106748.64315685986, 10203459.145313958]]` |
|
||||
| `gen2517` | 3 / `2.7329e-14` | `[[45834.828639702326, 45858.81352402091, 1450934.8174728234]]` → `[[45834.921610059566, 45858.92964139639, 1450936.507029497]]` |
|
||||
| `gen2687` | 8 / `1.2649e-13` | `[[91548.27224064688, 91893.13238284142, 6649038.304278976]]` → `[[91548.21958135064, 91893.04473901891, 6649037.327577968]]` |
|
||||
| `gen2688` | 3 / `2.255e-12` | `[[152371.15474998739, 152542.02290568707, 16971914.402893644]]` → `[[152371.10683083418, 152541.96646537865, 16971911.22996498]]` |
|
||||
| `gen2732` | 6 / `2.4426e-15` | `[[107607.11219702837, 107831.01576927245, 8908709.776030885]]` → `[[107623.6670791933, 107824.74647024467, 8910818.62771597]]` |
|
||||
| `gen2740` | 3 / `1.8201e-13` | `[[61009.98164865395, 61027.88924260481, 4365938.865820019]]` → `[[61009.990955444446, 61027.92015518564, 4365939.5726180915]]` |
|
||||
| `gen2785` | 9 / `2.399e-14` | `[[91152.17943308967, 92306.83440740129, 7652415.540723781]]` → `[[91076.78844778116, 92375.2087779946, 7650622.669702106]]` |
|
||||
| `gen2836` | 3 / `4.0678e-14` | `[[91224.74312733122, 91314.04492096876, 5636908.971653164]]` → `[[91224.72905059176, 91314.07339008275, 5636907.712885878]]` |
|
||||
|
||||
## Retained executable evidence and limitations
|
||||
|
||||
The original thirty-member executable/raw-data/control/check archive was read
|
||||
back and hash-verified, SHA-256
|
||||
`96f1bf236a6bf5fe9096644c76151be41b9c31581f36199d04a2da64a5218864`.
|
||||
The numerical source SHA-256 remains
|
||||
`86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`.
|
||||
At the named publication head, fmt, workspace/all-target clippy, wasm32 and panic
|
||||
inventory pass, while the gate is still
|
||||
`FAIL surface.offset_surface cases=3182 changed=242 added=0 removed=0 broken=0 known_failing=85`.
|
||||
Canonical run 42462015631 ended `action_required`, not success. None of this
|
||||
certifies the unresolved cases or supersedes the draft's correctness/review hold.
|
||||
+1235
File diff suppressed because it is too large
Load Diff
+322
@@ -0,0 +1,322 @@
|
||||
# surface.offset_surface: nonregular path attribution (2026-11-04)
|
||||
|
||||
Updates: plan/findings/surface.offset_surface--default-third-derivatives-diagnostic-attribution--addendum-2026-11-04-per-case-four-term-attribution.md
|
||||
|
||||
This is a diagnostic addendum to the published draft at `7b24fece485b0e271b676518368acfa1b47af95f`; it does not authorize markers or readiness. All 17 selected cases exclude the 116 unequal-order aliases. Four-term changes are attributed as a bundle only.
|
||||
|
||||
The instrumented replay reports 17/17 full outputs unchanged, arithmetic unchanged, and trace SHA-256 `5ab8e2eb3e73b438ac782a91fd9d3f0d71d028fedb85f2ca85aa51fd8cc11bb7` (`nonregular-observed-replay.json`). Evidence SHA-256: `89bd583c15844a18951e76a49d6330987cf45c8cf4f5aa4eb0aad7146796c86c`.
|
||||
|
||||
All 84 reported components now have bit-exact runtime-method checks: 60 reproduce the observed child-slot extrapolation, and 24 reproduce the recurrence using observed post-fallback frames. The separate conditional child-jet check has 56 agreements, one disagreement and 27 ungraded components. None of these counts is a proof of a true geometric derivative; all 17 cases remain unlisted ordinary failures pending disposition.
|
||||
|
||||
Each pole row tests binary64 `2*child1-child2` at the actual returned matrix slot against both the actual root slot and serialized output. Child Decimal-80 jets are a separate, conditional check; neither extrapolation nor substitution proves a true geometric derivative. Non-pole recurrence is independently replayed in binary64 using observed post-fallback operands and original higher base derivatives; per-row status records bit agreement or the unresolved failure. Source: `offset_surface.rs:1548-1642,1645-1678,1693 onward`. A zero base normal need not have a unique limit: `(u,v²,0)` changes unit-normal sign across v=0. No geometry fix, tolerance, floor, or marker decision is made.
|
||||
|
||||
Commands (run in the temporary attribution directory): `python3 nonregular_probe.py`; `python3 -m unittest -v test_nonregular_probe.py`. Inputs and provenance are in the hash-verified per-case ledgers; JSON evidence includes full call details and oracle numbers.
|
||||
|
||||
## dome_pole_d0_2_p2
|
||||
|
||||
Input SHA-256: `a92830829932a6c79c9141e0f19e73e0690fe2342082c8e063a8035e892e531b`; source: `fixture:fixtures/surface.offset_surface/edge_cases.json#6 (upstream edge)`; group: `four-term-change-through-pole-extrapolation`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[62]` | -3292.428120705479 / `c0a9b8db32a3198c` | -3292.428120705479 / `c0a9b8db32a3198c` | 0.9423302172159822 / `3fee2791b31f3500` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[63]` | 3174.525988042753 / `40a8cd0d4e4e036c` | 3174.525988042753 / `40a8cd0d4e4e036c` | -9.096092721752903 / `c022313310b29fec` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[64]` | -1868.0322801122957 / `c09d30210e09aa7c` | -1868.0322801122957 / `c09d30210e09aa7c` | 0.2484197154758389 / `3fcfcc379cd33ec6` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[75]` | 9.024847492680486 / `40220cb8cf80e68c` | 9.024847492680486 / `40220cb8cf80e68c` | 6.358180826013821 / `40196ec6f457226f` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[84]` | 2.6666666666667154 / `40055555555555c3` | 2.6666666666667154 / `40055555555555c3` | 4.568763874910682e-14 / `3d29b8485bd20ac8` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[85]` | 6007.18666095821 / `40b7772fc90336f4` | 6007.18666095821 / `40b7772fc90336f4` | -10.432529744578458 / `c024dd7489e705ff` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[86]` | -2314.4792908398176 / `c0a214f5659be494` | -2314.4792908398176 / `c0a214f5659be494` | -0.31076165652264476 / `bfd3e384dbe76514` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
|
||||
Call observations: `{"id":7,"parent":null,"depth":0,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0,0.8],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":1.1762925645989877,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":8,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0005,0.8],"flags":[],"metrics":{"tol":1.9997777222222222e-11,"bu_length":1.175872416964433,"bv_length":0.0019224799400773995},"initial_normal_length":0.002260189053713566,"actual_frame":{"bu":[-0.7996,0.7386388403904396,-0.44466666666666643],"bv":[-0.0013330000000000006,-0.001385294235893588,1.0587911840678754e-22],"normal_numerator":[-0.0006159941702273485,0.0005927406666666667,0.0020922868452609693],"last_length":0.002260189053713566},"frame_consistency":{"original_bu_cross_bv":[-0.0006159941702273485,0.0005927406666666667,0.0020922868452609693],"actual_bu_cross_bv":[-0.0006159941702273485,0.0005927406666666667,0.0020922868452609693],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":9,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.001,0.8],"flags":[],"metrics":{"tol":1.999555333333333e-11,"bu_length":1.1754524134378175,"bv_length":0.0038439983998146752},"initial_normal_length":0.004517633754625092,"actual_frame":{"bu":[-0.7991999999999998,0.738269336218158,-0.4448888888888892],"bv":[-0.002665333333333334,-0.0027698956514641488,-1.73429995950318e-18],"normal_numerator":[-0.0012322957987180524,0.001185777185185185,0.004181434475450278],"last_length":0.004517633754625092},"frame_consistency":{"original_bu_cross_bv":[-0.0012322957987180524,0.001185777185185185,0.004181434475450278],"actual_bu_cross_bv":[-0.0012322957987180524,0.001185777185185185,0.004181434475450278],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":10,"parent":null,"depth":0,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0,0.5],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":1.2372809695177827,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":11,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0005,0.5],"flags":[],"metrics":{"tol":1.999777722222222e-11,"bu_length":1.2368220477408132,"bv_length":0.0013329999999999998},"initial_normal_length":0.0016486837896385036,"actual_frame":{"bu":[2.222614453595284e-16,1.154123188110062,-0.444666666666667],"bv":[-0.0013329999999999998,0.0,0.0],"normal_numerator":[0.0,0.000592740666666667,0.0015384462097507124],"last_length":0.0016486837896385036},"frame_consistency":{"original_bu_cross_bv":[0.0,0.000592740666666667,0.0015384462097507124],"actual_bu_cross_bv":[0.0,0.000592740666666667,0.0015384462097507124],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":12,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.001,0.5],"flags":[],"metrics":{"tol":1.999555333333333e-11,"bu_length":1.2363632651679644,"bv_length":0.0026653333333333325},"initial_normal_length":0.003295320222761013,"actual_frame":{"bu":[2.224782857940255e-16,1.153545837840872,-0.44488888888888944],"bv":[-0.0026653333333333325,0.0,0.0],"normal_numerator":[0.0,0.0011857771851851863,0.0030745841731252034],"last_length":0.003295320222761013},"frame_consistency":{"original_bu_cross_bv":[0.0,0.0011857771851851863,0.0030745841731252034],"actual_bu_cross_bv":[0.0,0.0011857771851851863,0.0030745841731252034],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## dome_pole_d0_2_p3
|
||||
|
||||
Input SHA-256: `893bcd685c390d3d23ed56690b3834dc389c18082953bb22f9d44b6be65d7939`; source: `fixture:fixtures/surface.offset_surface/edge_cases.json#7 (upstream edge)`; group: `four-term-change-through-pole-extrapolation`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[62]` | -3651.65964179391 / `c0ac8751bc91b7d6` | -3651.65964179391 / `c0ac8751bc91b7d6` | 3.3563413351912104 / `400ad9c97c66dfb0` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[63]` | 4639.5152384292005 / `40b21f83e6aa6b0f` | 4639.5152384292005 / `40b21f83e6aa6b0f` | -5.888422781825484 / `c0178dbeb3a3d8e1` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[64]` | -2709.427975805981 / `c0a52adb1fa51456` | -2709.427975805981 / `c0a52adb1fa51456` | 0.2637632431213672 / `3fd0e17f39c5f67b` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[76]` | 2.715885880266168e-12 / `3d87e3a19e22249b` | 2.715885880266168e-12 / `3d87e3a19e22249b` | 2.7159626444355055e-12 / `3d87e3cdde867746` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[77]` | -3.956512150208427e-13 / `bd5bd76b2d2e2627` | -3.956512150208427e-13 / `bd5bd76b2d2e2627` | -3.9387485818144244e-13 / `bd5bb76b2d2e2627` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[84]` | -5.621828096662979e-10 / `be03510325646ce2` | -5.621828096662979e-10 / `be03510325646ce2` | -5.624672350298552e-10 / `be0353839d738ad0` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[85]` | 6940.523659707582 / `40bb1c860e90064c` | 6940.523659707582 / `40bb1c860e90064c` | -7.026930620595269 / `c01c1b93b35adee3` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[86]` | -3567.022143757666 / `c0abde0b566d35f9` | -3567.022143757666 / `c0abde0b566d35f9` | 0.5438906566995296 / `3fe1678d60e3fb70` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[91]` | -1.7881074828960514e-14 / `bd1421de71ccc434` | -1.7881074828960514e-14 / `bd1421de71ccc434` | -6.913381204659278e-14 / `bd33759dbcd782ca` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[92]` | -1.6477782368032925e-14 / `bd128d65bcaad2a0` | -1.6477782368032925e-14 / `bd128d65bcaad2a0` | 9.860205767612441e-15 / `3d06340589d97028` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
|
||||
Call observations: `{"id":7,"parent":null,"depth":0,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0,0.8],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":0.838936893402067,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":8,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0005,0.8],"flags":[],"metrics":{"tol":1.999833166666667e-11,"bu_length":0.8392020019041898,"bv_length":0.0012600000000000003},"initial_normal_length":0.0010085951742894671,"actual_frame":{"bu":[-0.6479999999999999,0.4156921938165306,-0.33399999999999996],"bv":[-0.0009900000000000002,-0.000779422863405995,-4.33574989875795e-19],"normal_numerator":[-0.00026032723637760247,0.00033065999999999976,0.0009166012873654501],"last_length":0.0010085951742894671},"frame_consistency":{"original_bu_cross_bv":[-0.00026032723637760247,0.00033065999999999976,0.0009166012873654501],"actual_bu_cross_bv":[-0.00026032723637760247,0.00033065999999999976,0.0009166012873654501],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":9,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.001,0.8],"flags":[],"metrics":{"tol":1.999666e-11,"bu_length":0.839467556119817,"bv_length":0.0025200000000000005},"initial_normal_length":0.0020178919122688425,"actual_frame":{"bu":[-0.648,0.41569219381653055,-0.33466666666666717],"bv":[-0.001980000000000001,-0.0015588457268119896,0.0],"normal_numerator":[-0.0005216937032397466,0.0006626400000000012,0.0018332025747309004],"last_length":0.0020178919122688425},"frame_consistency":{"original_bu_cross_bv":[-0.0005216937032397466,0.0006626400000000012,0.0018332025747309004],"actual_bu_cross_bv":[-0.0005216937032397466,0.0006626400000000012,0.0018332025747309004],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":10,"parent":null,"depth":0,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0,0.5],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":0.7300589778306347,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":11,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0005,0.5],"flags":[],"metrics":{"tol":1.999833166666667e-11,"bu_length":0.7303636080747727,"bv_length":0.0011250000000000001},"initial_normal_length":0.0008216590590841194,"actual_frame":{"bu":[1.1123922230635156e-16,0.6495190528383289,-0.3340000000000005],"bv":[-0.0011250000000000001,4.594451783440283e-20,0.0],"normal_numerator":[1.534546895669057e-20,0.00037575000000000065,0.00073070893444312],"last_length":0.0008216590590841194},"frame_consistency":{"original_bu_cross_bv":[1.534546895669057e-20,0.00037575000000000065,0.00073070893444312],"actual_bu_cross_bv":[1.534546895669057e-20,0.00037575000000000065,0.00073070893444312],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":12,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.001,0.5],"flags":[],"metrics":{"tol":1.999666e-11,"bu_length":0.7306687195834908,"bv_length":0.0022499999999999994},"initial_normal_length":0.0016440046190628538,"actual_frame":{"bu":[1.1167314140336218e-16,0.6495190528383289,-0.334666666666667],"bv":[-0.0022499999999999994,9.187504248477472e-20,0.0],"normal_numerator":[3.074751421823797e-20,0.0007530000000000005,0.0014614178688862397],"last_length":0.0016440046190628538},"frame_consistency":{"original_bu_cross_bv":[3.074751421823797e-20,0.0007530000000000005,0.0014614178688862397],"actual_bu_cross_bv":[3.074751421823797e-20,0.0007530000000000005,0.0014614178688862397],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## dome_pole_dm0_2_p2
|
||||
|
||||
Input SHA-256: `524ac5837cab7d2d6deb2802b8edc35954e5e03171bf66869aac6b18c7afa991`; source: `fixture:fixtures/surface.offset_surface/edge_cases.json#8 (upstream edge)`; group: `four-term-change-through-pole-extrapolation`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[62]` | 3297.7614540388113 / `40a9c385dd4dc434` | 3297.7614540388113 / `40a9c385dd4dc434` | -0.9423302172159893 / `bfee2791b31f3540` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[63]` | -3168.9834254585317 / `c0a8c1f7838aace5` | -3168.9834254585317 / `c0a8c1f7838aace5` | -9.37911589231512 / `c022c21b7a6dc64c` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[64]` | 1868.0322801122957 / `409d30210e09aa7c` | 1868.0322801122957 / `409d30210e09aa7c` | -0.24841971547587444 / `bfcfcc379cd343c6` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[75]` | -3.6915141593471548 / `c00d88389358ef8a` | -3.6915141593471548 / `c00d88389358ef8a` | -6.358180826013821 / `c0196ec6f457226f` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[84]` | 2.666666666666617 / `40055555555554e5` | 2.666666666666617 / `40055555555554e5` | -5.2793066106707825e-14 / `bd2db8485bd20ac8` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[85]` | -6007.18666095821 / `c0b7772fc90336f4` | -6007.18666095821 / `c0b7772fc90336f4` | -8.042678869489565 / `c02015da01396039` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[86]` | 2314.4792908398176 / `40a214f5659be494` | 2314.4792908398176 / `40a214f5659be494` | 0.31076165652260923 / `3fd3e384dbe76294` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
|
||||
Call observations: `{"id":7,"parent":null,"depth":0,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0,0.8],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":1.1762925645989877,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":8,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0005,0.8],"flags":[],"metrics":{"tol":1.9997777222222222e-11,"bu_length":1.175872416964433,"bv_length":0.0019224799400773995},"initial_normal_length":0.002260189053713566,"actual_frame":{"bu":[-0.7996,0.7386388403904396,-0.44466666666666643],"bv":[-0.0013330000000000006,-0.001385294235893588,1.0587911840678754e-22],"normal_numerator":[-0.0006159941702273485,0.0005927406666666667,0.0020922868452609693],"last_length":0.002260189053713566},"frame_consistency":{"original_bu_cross_bv":[-0.0006159941702273485,0.0005927406666666667,0.0020922868452609693],"actual_bu_cross_bv":[-0.0006159941702273485,0.0005927406666666667,0.0020922868452609693],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":9,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.001,0.8],"flags":[],"metrics":{"tol":1.999555333333333e-11,"bu_length":1.1754524134378175,"bv_length":0.0038439983998146752},"initial_normal_length":0.004517633754625092,"actual_frame":{"bu":[-0.7991999999999998,0.738269336218158,-0.4448888888888892],"bv":[-0.002665333333333334,-0.0027698956514641488,-1.73429995950318e-18],"normal_numerator":[-0.0012322957987180524,0.001185777185185185,0.004181434475450278],"last_length":0.004517633754625092},"frame_consistency":{"original_bu_cross_bv":[-0.0012322957987180524,0.001185777185185185,0.004181434475450278],"actual_bu_cross_bv":[-0.0012322957987180524,0.001185777185185185,0.004181434475450278],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":10,"parent":null,"depth":0,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0,0.5],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":1.2372809695177827,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":11,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0005,0.5],"flags":[],"metrics":{"tol":1.999777722222222e-11,"bu_length":1.2368220477408132,"bv_length":0.0013329999999999998},"initial_normal_length":0.0016486837896385036,"actual_frame":{"bu":[2.222614453595284e-16,1.154123188110062,-0.444666666666667],"bv":[-0.0013329999999999998,0.0,0.0],"normal_numerator":[0.0,0.000592740666666667,0.0015384462097507124],"last_length":0.0016486837896385036},"frame_consistency":{"original_bu_cross_bv":[0.0,0.000592740666666667,0.0015384462097507124],"actual_bu_cross_bv":[0.0,0.000592740666666667,0.0015384462097507124],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":12,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.001,0.5],"flags":[],"metrics":{"tol":1.999555333333333e-11,"bu_length":1.2363632651679644,"bv_length":0.0026653333333333325},"initial_normal_length":0.003295320222761013,"actual_frame":{"bu":[2.224782857940255e-16,1.153545837840872,-0.44488888888888944],"bv":[-0.0026653333333333325,0.0,0.0],"normal_numerator":[0.0,0.0011857771851851863,0.0030745841731252034],"last_length":0.003295320222761013},"frame_consistency":{"original_bu_cross_bv":[0.0,0.0011857771851851863,0.0030745841731252034],"actual_bu_cross_bv":[0.0,0.0011857771851851863,0.0030745841731252034],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## dome_pole_dm0_2_p3
|
||||
|
||||
Input SHA-256: `bc4165fa8cf8628dbf3d5baad072c67ab78ceb0348c81ebc54d51c6732fe5eda`; source: `fixture:fixtures/surface.offset_surface/edge_cases.json#9 (upstream edge)`; group: `four-term-change-through-pole-extrapolation`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[62]` | 3651.65964179391 / `40ac8751bc91b7d6` | 3651.65964179391 / `40ac8751bc91b7d6` | 0.24365866480878395 / `3fcf3035065ed100` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[63]` | -4639.5152384292005 / `c0b21f83e6aa6b0f` | -4639.5152384292005 / `c0b21f83e6aa6b0f` | -4.503882063587782 / `c01203f9a8e09a21` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[64]` | 2709.427975805981 / `40a52adb1fa51456` | 2709.427975805981 / `40a52adb1fa51456` | -0.2637632431213672 / `bfd0e17f39c5f67b` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[76]` | -2.716039403293792e-12 / `bd87e3fa1e22249b` | -2.716039403293792e-12 / `bd87e3fa1e22249b` | -2.715962639124454e-12 / `bd87e3cdddbdd1ef` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[77]` | 3.956512150208427e-13 / `3d5bd76b2d2e2627` | 3.956512150208427e-13 / `3d5bd76b2d2e2627` | 3.9742757186024294e-13 / `3d5bf76b2d2e2627` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[84]` | 5.621828096662979e-10 / `3e03510325646ce2` | 5.621828096662979e-10 / `3e03510325646ce2` | 5.624654586747099e-10 / `3e03537f9d73cad0` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[85]` | -6940.523659707582 / `c0bb1c860e90064c` | -6940.523659707582 / `c0bb1c860e90064c` | -3.3653742248179936 / `c00aec4952532836` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[86]` | 3567.022143757666 / `40abde0b566d35f9` | 3567.022143757666 / `40abde0b566d35f9` | -0.5438906566995296 / `bfe1678d60e3fb70` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[91]` | 1.7727551801336567e-14 / `3d13f59e71ccc434` | 1.7727551801336567e-14 / `3d13f59e71ccc434` | 6.89802890189688e-14 / `3d336a8dbcd782c8` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[92]` | 1.6477782368032925e-14 / `3d128d65bcaad2a0` | 1.6477782368032925e-14 / `3d128d65bcaad2a0` | -9.860205767612441e-15 / `bd06340589d97028` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
|
||||
Call observations: `{"id":7,"parent":null,"depth":0,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0,0.8],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":0.838936893402067,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":8,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0005,0.8],"flags":[],"metrics":{"tol":1.999833166666667e-11,"bu_length":0.8392020019041898,"bv_length":0.0012600000000000003},"initial_normal_length":0.0010085951742894671,"actual_frame":{"bu":[-0.6479999999999999,0.4156921938165306,-0.33399999999999996],"bv":[-0.0009900000000000002,-0.000779422863405995,-4.33574989875795e-19],"normal_numerator":[-0.00026032723637760247,0.00033065999999999976,0.0009166012873654501],"last_length":0.0010085951742894671},"frame_consistency":{"original_bu_cross_bv":[-0.00026032723637760247,0.00033065999999999976,0.0009166012873654501],"actual_bu_cross_bv":[-0.00026032723637760247,0.00033065999999999976,0.0009166012873654501],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":9,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.001,0.8],"flags":[],"metrics":{"tol":1.999666e-11,"bu_length":0.839467556119817,"bv_length":0.0025200000000000005},"initial_normal_length":0.0020178919122688425,"actual_frame":{"bu":[-0.648,0.41569219381653055,-0.33466666666666717],"bv":[-0.001980000000000001,-0.0015588457268119896,0.0],"normal_numerator":[-0.0005216937032397466,0.0006626400000000012,0.0018332025747309004],"last_length":0.0020178919122688425},"frame_consistency":{"original_bu_cross_bv":[-0.0005216937032397466,0.0006626400000000012,0.0018332025747309004],"actual_bu_cross_bv":[-0.0005216937032397466,0.0006626400000000012,0.0018332025747309004],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":10,"parent":null,"depth":0,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0,0.5],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":0.7300589778306347,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":11,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0005,0.5],"flags":[],"metrics":{"tol":1.999833166666667e-11,"bu_length":0.7303636080747727,"bv_length":0.0011250000000000001},"initial_normal_length":0.0008216590590841194,"actual_frame":{"bu":[1.1123922230635156e-16,0.6495190528383289,-0.3340000000000005],"bv":[-0.0011250000000000001,4.594451783440283e-20,0.0],"normal_numerator":[1.534546895669057e-20,0.00037575000000000065,0.00073070893444312],"last_length":0.0008216590590841194},"frame_consistency":{"original_bu_cross_bv":[1.534546895669057e-20,0.00037575000000000065,0.00073070893444312],"actual_bu_cross_bv":[1.534546895669057e-20,0.00037575000000000065,0.00073070893444312],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":12,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.001,0.5],"flags":[],"metrics":{"tol":1.999666e-11,"bu_length":0.7306687195834908,"bv_length":0.0022499999999999994},"initial_normal_length":0.0016440046190628538,"actual_frame":{"bu":[1.1167314140336218e-16,0.6495190528383289,-0.334666666666667],"bv":[-0.0022499999999999994,9.187504248477472e-20,0.0],"normal_numerator":[3.074751421823797e-20,0.0007530000000000005,0.0014614178688862397],"last_length":0.0016440046190628538},"frame_consistency":{"original_bu_cross_bv":[3.074751421823797e-20,0.0007530000000000005,0.0014614178688862397],"actual_bu_cross_bv":[3.074751421823797e-20,0.0007530000000000005,0.0014614178688862397],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## dome_pole_d2_0_p2
|
||||
|
||||
Input SHA-256: `490f0758c4baec568c4e6fe7178f630b33259149cf944d06e51dfe1eb2da2b03`; source: `fixture:fixtures/surface.offset_surface/edge_cases.json#10 (upstream edge)`; group: `four-term-change-through-pole-extrapolation`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[62]` | -32948.28120705478 / `c0e01688ffa5eff6` | -32948.28120705478 / `c0e01688ffa5eff6` | 9.423302172159854 / `4022d8bb0ff38132` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[63]` | 31720.31834879853 / `40defa145fd3a39a` | 31720.31834879853 / `40defa145fd3a39a` | -7.822488454222917 / `c01f4a3a69d0e66c` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[64]` | -18680.322801122955 / `c0d23e14a8c60a8d` | -18680.322801122955 / `c0d23e14a8c60a8d` | 2.4841971547585486 / `4003dfa2c20408a3` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[75]` | 66.24847492680486 / `40508fe70361202f` | 66.24847492680486 / `40508fe70361202f` | 63.5818082601382 / `404fca78b16ceb0a` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[84]` | 2.6666666666671586 / `40055555555559a9` | 2.6666666666671586 / `40055555555559a9` | 4.888508106002727e-13 / `3d61332d396346bd` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[85]` | 60071.8666095821 / `40ed54fbbb4404b1` | 60071.8666095821 / `40ed54fbbb4404b1` | -21.186858682478487 / `c0352fd5f87a3800` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[86]` | -23144.792908398173 / `c0d69a32bf02ddb8` | -23144.792908398173 / `c0d69a32bf02ddb8` | -3.1076165652262877 / `c008dc6612e13cf1` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
|
||||
Call observations: `{"id":7,"parent":null,"depth":0,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0,0.8],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":1.1762925645989877,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":8,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0005,0.8],"flags":[],"metrics":{"tol":1.9997777222222222e-11,"bu_length":1.175872416964433,"bv_length":0.0019224799400773995},"initial_normal_length":0.002260189053713566,"actual_frame":{"bu":[-0.7996,0.7386388403904396,-0.44466666666666643],"bv":[-0.0013330000000000006,-0.001385294235893588,1.0587911840678754e-22],"normal_numerator":[-0.0006159941702273485,0.0005927406666666667,0.0020922868452609693],"last_length":0.002260189053713566},"frame_consistency":{"original_bu_cross_bv":[-0.0006159941702273485,0.0005927406666666667,0.0020922868452609693],"actual_bu_cross_bv":[-0.0006159941702273485,0.0005927406666666667,0.0020922868452609693],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":9,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.001,0.8],"flags":[],"metrics":{"tol":1.999555333333333e-11,"bu_length":1.1754524134378175,"bv_length":0.0038439983998146752},"initial_normal_length":0.004517633754625092,"actual_frame":{"bu":[-0.7991999999999998,0.738269336218158,-0.4448888888888892],"bv":[-0.002665333333333334,-0.0027698956514641488,-1.73429995950318e-18],"normal_numerator":[-0.0012322957987180524,0.001185777185185185,0.004181434475450278],"last_length":0.004517633754625092},"frame_consistency":{"original_bu_cross_bv":[-0.0012322957987180524,0.001185777185185185,0.004181434475450278],"actual_bu_cross_bv":[-0.0012322957987180524,0.001185777185185185,0.004181434475450278],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":10,"parent":null,"depth":0,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0,0.5],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":1.2372809695177827,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":11,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0005,0.5],"flags":[],"metrics":{"tol":1.999777722222222e-11,"bu_length":1.2368220477408132,"bv_length":0.0013329999999999998},"initial_normal_length":0.0016486837896385036,"actual_frame":{"bu":[2.222614453595284e-16,1.154123188110062,-0.444666666666667],"bv":[-0.0013329999999999998,0.0,0.0],"normal_numerator":[0.0,0.000592740666666667,0.0015384462097507124],"last_length":0.0016486837896385036},"frame_consistency":{"original_bu_cross_bv":[0.0,0.000592740666666667,0.0015384462097507124],"actual_bu_cross_bv":[0.0,0.000592740666666667,0.0015384462097507124],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":12,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.001,0.5],"flags":[],"metrics":{"tol":1.999555333333333e-11,"bu_length":1.2363632651679644,"bv_length":0.0026653333333333325},"initial_normal_length":0.003295320222761013,"actual_frame":{"bu":[2.224782857940255e-16,1.153545837840872,-0.44488888888888944],"bv":[-0.0026653333333333325,0.0,0.0],"normal_numerator":[0.0,0.0011857771851851863,0.0030745841731252034],"last_length":0.003295320222761013},"frame_consistency":{"original_bu_cross_bv":[0.0,0.0011857771851851863,0.0030745841731252034],"actual_bu_cross_bv":[0.0,0.0011857771851851863,0.0030745841731252034],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## dome_pole_d2_0_p3
|
||||
|
||||
Input SHA-256: `661d4fc940fe7090d3e2cd55fef34eb8327db011f0aa6a4cf94f9eb40035739f`; source: `fixture:fixtures/surface.offset_surface/edge_cases.json#11 (upstream edge)`; group: `four-term-change-through-pole-extrapolation`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[62]` | -36516.596417939094 / `c0e1d49315db12e5` | -36516.596417939094 / `c0e1d49315db12e5` | 17.363413351912133 / `40315d08a84d6471` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[63]` | 46395.152384292 / `40e6a764e05505d2` | 46395.152384292 / `40e6a764e05505d2` | -12.118856013895144 / `c0283cdab20939a2` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[64]` | -27094.279758059813 / `c0da7591e78e596c` | -27094.279758059813 / `c0da7591e78e596c` | 2.6376324312136714 / `400519df08377419` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[76]` | 2.7159549656285985e-11 / `3dbddcbbcdaaadc1` | 2.7159549656285985e-11 / `3dbddcbbcdaaadc1` | 2.7159626420455324e-11 / `3dbddcc155b73817` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[77]` | -3.9565121502084266e-12 / `bd9166a2fc3cd7d8` | -3.9565121502084266e-12 / `bd9166a2fc3cd7d8` | -3.954735793369026e-12 / `bd9164a2fc3cd7d8` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[84]` | -5.6218280966629785e-09 / `be382543eebd881a` | -5.6218280966629785e-09 / `be382543eebd881a` | -5.624664356700398e-09 / `be38286244d09184` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[85]` | 69405.23659707583 / `40f0f1d3c91a03f0` | 69405.23659707583 / `40f0f1d3c91a03f0` | -23.503934401593 / `c0378101d84e2bd8` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[86]` | -35670.22143757666 / `c0e16ac7160441bc` | -35670.22143757666 / `c0e16ac7160441bc` | 5.438906566995297 / `4015c170b91cfa4d` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[91]` | -1.7811989466529738e-13 / `bd4911720e3ff541` | -1.7811989466529738e-13 / `bd4911720e3ff541` | -6.906472668416197e-13 / `bd684ccc2c0d637a` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[92]` | -1.6477782368032925e-13 / `bd4730bf2bd58748` | -1.6477782368032925e-13 / `bd4730bf2bd58748` | 9.860205767612441e-14 / `3d3bc106ec4fcc32` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
|
||||
Call observations: `{"id":7,"parent":null,"depth":0,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0,0.8],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":0.838936893402067,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":8,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.0005,0.8],"flags":[],"metrics":{"tol":1.999833166666667e-11,"bu_length":0.8392020019041898,"bv_length":0.0012600000000000003},"initial_normal_length":0.0010085951742894671,"actual_frame":{"bu":[-0.6479999999999999,0.4156921938165306,-0.33399999999999996],"bv":[-0.0009900000000000002,-0.000779422863405995,-4.33574989875795e-19],"normal_numerator":[-0.00026032723637760247,0.00033065999999999976,0.0009166012873654501],"last_length":0.0010085951742894671},"frame_consistency":{"original_bu_cross_bv":[-0.00026032723637760247,0.00033065999999999976,0.0009166012873654501],"actual_bu_cross_bv":[-0.00026032723637760247,0.00033065999999999976,0.0009166012873654501],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":9,"parent":7,"depth":1,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[0.001,0.8],"flags":[],"metrics":{"tol":1.999666e-11,"bu_length":0.839467556119817,"bv_length":0.0025200000000000005},"initial_normal_length":0.0020178919122688425,"actual_frame":{"bu":[-0.648,0.41569219381653055,-0.33466666666666717],"bv":[-0.001980000000000001,-0.0015588457268119896,0.0],"normal_numerator":[-0.0005216937032397466,0.0006626400000000012,0.0018332025747309004],"last_length":0.0020178919122688425},"frame_consistency":{"original_bu_cross_bv":[-0.0005216937032397466,0.0006626400000000012,0.0018332025747309004],"actual_bu_cross_bv":[-0.0005216937032397466,0.0006626400000000012,0.0018332025747309004],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":10,"parent":null,"depth":0,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0,0.5],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":2e-11,"bu_length":0.7300589778306347,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":11,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.0005,0.5],"flags":[],"metrics":{"tol":1.999833166666667e-11,"bu_length":0.7303636080747727,"bv_length":0.0011250000000000001},"initial_normal_length":0.0008216590590841194,"actual_frame":{"bu":[1.1123922230635156e-16,0.6495190528383289,-0.3340000000000005],"bv":[-0.0011250000000000001,4.594451783440283e-20,0.0],"normal_numerator":[1.534546895669057e-20,0.00037575000000000065,0.00073070893444312],"last_length":0.0008216590590841194},"frame_consistency":{"original_bu_cross_bv":[1.534546895669057e-20,0.00037575000000000065,0.00073070893444312],"actual_bu_cross_bv":[1.534546895669057e-20,0.00037575000000000065,0.00073070893444312],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":12,"parent":10,"depth":1,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.001,0.5],"flags":[],"metrics":{"tol":1.999666e-11,"bu_length":0.7306687195834908,"bv_length":0.0022499999999999994},"initial_normal_length":0.0016440046190628538,"actual_frame":{"bu":[1.1167314140336218e-16,0.6495190528383289,-0.334666666666667],"bv":[-0.0022499999999999994,9.187504248477472e-20,0.0],"normal_numerator":[3.074751421823797e-20,0.0007530000000000005,0.0014614178688862397],"last_length":0.0016440046190628538},"frame_consistency":{"original_bu_cross_bv":[3.074751421823797e-20,0.0007530000000000005,0.0014614178688862397],"actual_bu_cross_bv":[3.074751421823797e-20,0.0007530000000000005,0.0014614178688862397],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## column_pole_vmax
|
||||
|
||||
Input SHA-256: `11f9ca69888fba09c5895e4be25f59a46db965f2bdc1d4a1bf8373ca53f925e0`; source: `fixture:fixtures/surface.offset_surface/edge_cases.json#12 (upstream edge)`; group: `four-term-change-through-pole-extrapolation`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[30]` | 804.3075178059373 / `40892275cbe53b82` | 804.3075178059373 / `40892275cbe53b82` | 0.49304202909925254 / `3fdf8e0027a239ac` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[31]` | 317.74528010268807 / `4073dbecaad4367a` | 317.74528010268807 / `4073dbecaad4367a` | 3.182963363973281 / `400976b57f050d14` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[32]` | -722.6840166196926 / `c0869578ddb49c00` | -722.6840166196926 / `c0869578ddb49c00` | -3.0577397396752556e-10 / `bdf5033b8e22e192` | observed-extrapolation-bit-match | conditional-method-disagreement |
|
||||
|
||||
Call observations: `{"id":3,"parent":null,"depth":0,"orders":[2,1],"upper":false,"simple":false,"requested_uv":[0.2,1.0],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":1.8000000000000002e-11,"bu_length":0.0,"bv_length":1.6616961076991084},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":4,"parent":3,"depth":1,"orders":[2,1],"upper":false,"simple":false,"requested_uv":[0.2,0.9995],"flags":[],"metrics":{"tol":1.7994668e-11,"bu_length":0.0010308185679080142,"bv_length":1.6608652596452593},"initial_normal_length":0.0017119527150091414,"actual_frame":{"bu":[-0.0003756567665111732,0.0009599317234669866,3.3306690738754696e-16],"bv":[-1.1922974452246613,-0.44750410988371203,1.0661333333333345],"normal_numerator":[0.00102341520811242,0.00040050020066938213,0.0013126320883991704],"last_length":0.0017119527150091414},"frame_consistency":{"original_bu_cross_bv":[0.00102341520811242,0.00040050020066938213,0.0013126320883991704],"actual_bu_cross_bv":[0.00102341520811242,0.00040050020066938213,0.0013126320883991704],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":5,"parent":3,"depth":1,"orders":[2,1],"upper":false,"simple":false,"requested_uv":[0.2,0.999],"flags":[],"metrics":{"tol":1.7989338666666667e-11,"bu_length":0.0020611215976477615,"bv_length":1.6600344115914094},"initial_normal_length":0.003421336858803352,"actual_frame":{"bu":[-0.0007511256576703359,0.0019193833610509827,1.1102230246251565e-16],"bv":[-1.1917009982785758,-0.4472802458967766,1.0656000000000008],"normal_numerator":[0.0020452949095359787,0.0008003995008133782,0.0026232947363059103],"last_length":0.003421336858803352},"frame_consistency":{"original_bu_cross_bv":[0.0020452949095359787,0.0008003995008133782,0.0026232947363059103],"actual_bu_cross_bv":[0.0020452949095359787,0.0008003995008133782,0.0026232947363059103],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## gen0129
|
||||
|
||||
Input SHA-256: `a9d3c204d029fc65113bbf3b65334c0af1ad8728352709d606da3e60acc8c703`; source: `generated:seed=7714667220713742090`; group: `four-term-change-with-base-normal-substitution`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[87]` | 408813406.5192221 / `41b85dff5e84ebbd` | 408813406.5192221 / `41b85dff5e84ebbd` | 1989626300.132512 / `41dda5d26f087b14` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[88]` | -3928967550.381878 / `c1ed45e92fcc3858` | -3928967550.381878 / `c1ed45e92fcc3858` | 175960762.49877852 / `41a4f9e574ff5fe6` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[89]` | -9752468135.745756 / `c2022a56d53df74f` | -9752468135.745756 / `c2022a56d53df74f` | -4796352783.94503 / `c1f1de2890ff1ed8` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
|
||||
Call observations: `{"id":1,"parent":null,"depth":0,"orders":[2,1],"upper":false,"simple":true,"requested_uv":[1.0886666264605989,1.0],"flags":[{"name":"FIRST_DERIVATIVE_FALLBACK","data":[]}],"metrics":{"tol":2.950750770144804e-11,"bu_length":1.2480231380815836e-16,"bv_length":1.2490008174278682},"initial_normal_length":1.5081082347325663e-16,"actual_frame":{"bu":[-6.25584653524136e-17,-9.725293487194975e-17,4.694595406862234e-17],"bv":[-0.23895391535694135,-0.7278436072245849,-0.9864825146414785],"normal_numerator":[-2.958922337065397e-11,2.510549876405732e-11,-1.1355919480120026e-11],"last_length":4.0432228668594414e-11},"frame_consistency":{"original_bu_cross_bv":[1.3010763230265068e-16,-7.293075174782523e-17,2.2293809516928916e-17],"actual_bu_cross_bv":[1.3010763230265068e-16,-7.293075174782523e-17,2.2293809516928916e-17],"original_cross_minus_c":[2.958935347828627e-11,-2.5105571694809067e-11,1.1355941773929543e-11],"actual_cross_minus_c":[2.958935347828627e-11,-2.5105571694809067e-11,1.1355941773929543e-11],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## gen0625
|
||||
|
||||
Input SHA-256: `303f80059f8fa7fb57ff90720b7959555854c2028aba9338c16230da77fa803e`; source: `generated:seed=7714667220713742586`; group: `four-term-change-through-pole-extrapolation`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[18]` | -41.38214163512213 / `c044b0ea0460a50f` | -41.38214163512213 / `c044b0ea0460a50f` | 0.4311314373492805 / `3fdb97a84fec5418` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[19]` | 17.251036740754373 / `40314043f19fa26c` | 17.251036740754373 / `40314043f19fa26c` | -4.445344540699154 / `c011c80866370521` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
| `values.out[20]` | 19.042788456854957 / `40330af42f2ed69e` | 19.042788456854957 / `40330af42f2ed69e` | -21.561707980624742 / `c0358fcc181eaf7b` | observed-extrapolation-bit-match | conditional-method-agreement |
|
||||
|
||||
Call observations: `{"id":3,"parent":null,"depth":0,"orders":[0,3],"upper":false,"simple":false,"requested_uv":[0.0,0.0],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":3.233594710081255e-11,"bu_length":1.6119342234560845,"bv_length":0.0},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":4,"parent":3,"depth":1,"orders":[0,3],"upper":false,"simple":false,"requested_uv":[0.0005,0.0],"flags":[],"metrics":{"tol":3.232877517676317e-11,"bu_length":1.6088736557910641,"bv_length":0.007900918993596164},"initial_normal_length":0.012290407302773773,"actual_frame":{"bu":[0.7227253537681203,-0.11182189556031481,1.4330521159373606],"bv":[0.005311997271326648,-0.002756337842935318,-0.0051584695044547425],"normal_numerator":[0.004526805616234885,0.011340525627037253,-0.0013980776385489196],"last_length":0.012290407302773773},"frame_consistency":{"original_bu_cross_bv":[0.004526805616234885,0.011340525627037253,-0.0013980776385489196],"actual_bu_cross_bv":[0.004526805616234885,0.011340525627037253,-0.0013980776385489196],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":5,"parent":3,"depth":1,"orders":[0,3],"upper":false,"simple":false,"requested_uv":[0.001,0.0],"flags":[],"metrics":{"tol":3.2321616572547104e-11,"bu_length":1.6058181966582152,"bv_length":0.015786314644748924},"initial_normal_length":0.02451014372115719,"actual_frame":{"bu":[0.7211419193254499,-0.11220542166867996,1.430390281097576],"bv":[0.010613557788046922,-0.005507260166959453,-0.010306803898213288],"normal_numerator":[0.00903401069575003,0.022614198253158364,-0.0027806174400130303],"last_length":0.02451014372115719},"frame_consistency":{"original_bu_cross_bv":[0.00903401069575003,0.022614198253158364,-0.0027806174400130303],"actual_bu_cross_bv":[0.00903401069575003,0.022614198253158364,-0.0027806174400130303],"original_cross_minus_c":[0.0,0.0,0.0],"actual_cross_minus_c":[0.0,0.0,0.0],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## gen0939
|
||||
|
||||
Input SHA-256: `1c6b981b2254fe90432cbbd207d66d6b2b1527e22c258784a161af10c93f2886`; source: `generated:seed=7714667220713742900`; group: `four-term-change-with-base-normal-substitution`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[73]` | 1.0848196708517109e-08 / `3e474bdbf53ba300` | 1.0848196708517109e-08 / `3e474bdbf53ba300` | -7.360343721528044e-10 / `be094a3a0fe47340` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[74]` | 1.7613620330973e-08 / `3e52e99857d63c90` | 1.7613620330973e-08 / `3e52e99857d63c90` | -1.825197333071134e-09 / `be1f5b4d81dcb8c0` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[75]` | -1.3835637258935033e-08 / `be4db638d66e20a0` | -1.3835637258935033e-08 / `be4db638d66e20a0` | 8.003712284519026e-10 / `3e0b8023c879b3c0` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
|
||||
Call observations: `{"id":0,"parent":null,"depth":0,"orders":[1,2],"upper":false,"simple":false,"requested_uv":[-0.0794828784673477,0.29582171869995744],"flags":[{"name":"FIRST_DERIVATIVE_FALLBACK","data":[]},{"name":"NORMAL_SUBSTITUTION","data":[]}],"metrics":{"tol":1.0000000013143557e-11,"bu_length":1.649304856096115e-09,"bv_length":7.778353082142719e-10},"initial_normal_length":1.282854787569197e-18,"actual_frame":{"bu":[-5.713909554295857e-10,-1.4169192193302763e-09,6.213363101316163e-10],"bv":[-9.29617217803721e-12,5.061549977198975e-12,2.9936424273246214e-12],"normal_numerator":[-0.40715083087317533,-0.2240894008558114,-0.8854446009454044],"last_length":1.0},"frame_consistency":{"original_bu_cross_bv":[-5.223153926484294e-19,-2.874741607313905e-19,-1.135896845450109e-18],"actual_bu_cross_bv":[-7.386674277458374e-21,-4.0655091126862705e-21,-1.6064048902690637e-20],"original_cross_minus_c":[0.40715083087317533,0.2240894008558114,0.8854446009454044],"actual_cross_minus_c":[0.40715083087317533,0.2240894008558114,0.8854446009454044],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[6.499666594887658e-10,-3.4806736596725467e-10,-2.1078253541144865e-10],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## gen0984
|
||||
|
||||
Input SHA-256: `d4ca45f9eff51f192c651d9dfed1859679e7c4a94c4db92e2b81231e399842f1`; source: `generated:seed=7714667220713742945`; group: `four-term-change-with-base-normal-substitution`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[24]` | -4.849340264908569e-43 / `b725a0f7bf576c21` | -4.849340264908569e-43 / `b725a0f7bf576c21` | 4.657602782245071e-13 / `3d60633214de1000` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[25]` | 7.94486647397908e-44 / `36fc5925a8597a77` | 7.94486647397908e-44 / `36fc5925a8597a77` | 1.5727236216194363e-10 / `3de59d8780d56990` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[26]` | -3.5549238515011677e-43 / `b71fb602cfd39551` | -3.5549238515011677e-43 / `b71fb602cfd39551` | 2.6952852113598536e-11 / `3dbda28dacff0000` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
|
||||
Call observations: `{"id":0,"parent":null,"depth":0,"orders":[3,3],"upper":true,"simple":false,"requested_uv":[0.8589696103265788,3.079460609169519],"flags":[{"name":"FIRST_DERIVATIVE_FALLBACK","data":[]},{"name":"NORMAL_SUBSTITUTION","data":[]}],"metrics":{"tol":1.000000001815874e-11,"bu_length":2.0025724562166515e-09,"bv_length":1.3005423264886195e-09},"initial_normal_length":2.6043931111221585e-18,"actual_frame":{"bu":[-4.796151181650839e-10,2.2934938910862468e-10,-1.9307160947535984e-09],"bv":[-1.0630750136441194e-11,7.370024697340104e-13,2.72836568949307e-12],"normal_numerator":[0.09300271958875997,0.9911581345769602,0.09463639052190691],"last_length":1.0},"frame_consistency":{"original_bu_cross_bv":[2.422156422125923e-19,2.5813654177249248e-18,2.4647036353672074e-19],"actual_bu_cross_bv":[2.0486915343387727e-21,2.1833525820294806e-20,2.08467852294978e-21],"original_cross_minus_c":[-0.09300271958875997,-0.9911581345769602,-0.09463639052190691],"actual_cross_minus_c":[-0.09300271958875997,-0.9911581345769602,-0.09463639052190691],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[1.2445736129834702e-09,-8.560304141741039e-11,-3.265401366224267e-10],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## gen1037
|
||||
|
||||
Input SHA-256: `1310ac82ee6a4f0c6f3648efb4e0764f7047020bfc45df8d235dc06252791025`; source: `generated:seed=7714667220713742998`; group: `four-term-change-through-pole-extrapolation`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[65]` | -6.487120502409939e-10 / `be064a21ac829dc0` | -6.487120502409939e-10 / `be064a21ac829dc0` | -6.803739754770468e-57 / `b4455a9818bee467` | observed-extrapolation-bit-match | unknown |
|
||||
| `values.out[66]` | -2.152119646986185e-10 / `bded94190c4ca900` | -2.152119646986185e-10 / `bded94190c4ca900` | -4.9418401556543204e-58 / `b408d0fc197b3818` | observed-extrapolation-bit-match | unknown |
|
||||
| `values.out[67]` | 1.1803637361190133e-09 / `3e14474b6ba84ce0` | 1.1803637361190133e-09 / `3e14474b6ba84ce0` | 3.0708081607850135e-57 / `3433469934afd09e` | observed-extrapolation-bit-match | unknown |
|
||||
|
||||
Call observations: `{"id":0,"parent":null,"depth":0,"orders":[0,3],"upper":false,"simple":false,"requested_uv":[0.5180884505593667,1.0],"flags":[{"name":"POLE","data":[]}],"metrics":{"tol":1.0000000011913042e-11,"bu_length":2.9245251020114406e-25,"bv_length":1.3274758393317606e-09},"initial_normal_length":null}`.
|
||||
|
||||
Call observations: `{"id":1,"parent":0,"depth":1,"orders":[0,3],"upper":false,"simple":false,"requested_uv":[0.5180884505593667,0.95],"flags":[{"name":"FIRST_DERIVATIVE_FALLBACK","data":[]},{"name":"NORMAL_SUBSTITUTION","data":[]}],"metrics":{"tol":1.0000000012163807e-11,"bu_length":5.206418492875112e-11,"bv_length":1.3274758393317612e-09},"initial_normal_length":6.910484409813484e-20,"actual_frame":{"bu":[2.88741263054076e-12,-9.877359044558195e-12,-3.885952508747662e-12],"bv":[1.1568274365810607e-09,5.015288117359976e-10,-4.152243212789128e-10],"normal_numerator":[0.4143363779627865,-0.22574987314074987,0.8816815528713382],"last_length":1.0},"frame_consistency":{"original_bu_cross_bv":[2.863265080330423e-20,-1.560040978856524e-20,6.092846625537525e-20],"actual_bu_cross_bv":[6.050236849479541e-21,-3.296452529601853e-21,1.287452056929363e-20],"original_cross_minus_c":[-0.4143363779627865,0.22574987314074987,-0.8816815528713382],"actual_cross_minus_c":[-0.4143363779627865,0.22574987314074987,-0.8816815528713382],"actual_bu_minus_original":[-1.151360367736408e-11,3.654783797307647e-11,1.4768568752020715e-11],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
Call observations: `{"id":2,"parent":0,"depth":1,"orders":[0,3],"upper":false,"simple":false,"requested_uv":[0.5180884505593667,0.9],"flags":[{"name":"FIRST_DERIVATIVE_FALLBACK","data":[]},{"name":"NORMAL_SUBSTITUTION","data":[]}],"metrics":{"tol":1.0000000012414572e-11,"bu_length":1.0412836985750095e-10,"bv_length":1.3274758393317606e-09},"initial_normal_length":1.3820968819626795e-19,"actual_frame":{"bu":[2.8874126306131386e-12,-9.877359044805864e-12,-3.8859525088451815e-12],"bv":[1.15682743658106e-09,5.015288117359983e-10,-4.1522432127891263e-10],"normal_numerator":[0.41433637796278855,-0.2257498731407564,0.8816815528713355],"last_length":1.0},"frame_consistency":{"original_bu_cross_bv":[5.726530160660803e-20,-3.120081957713098e-20,1.218569325107486e-19],"actual_bu_cross_bv":[6.050236849631289e-21,-3.2964525296846103e-21,1.2874520569616435e-20],"original_cross_minus_c":[-0.41433637796278855,0.2257498731407564,-0.8816815528713355],"actual_cross_minus_c":[-0.41433637796278855,0.2257498731407564,-0.8816815528713355],"actual_bu_minus_original":[-2.591461998519499e-11,8.297303499046253e-11,3.342309001269147e-11],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## gen1529
|
||||
|
||||
Input SHA-256: `6ba193fe1f8be92dac5751330e24e20c0d75ab52a8e2782f249bcb30619beca0`; source: `generated:seed=7714667220713743490`; group: `four-term-change-with-base-normal-substitution`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[128]` | -1.376542039020458e-10 / `bde2eb46d7c1a400` | -1.376542039020458e-10 / `bde2eb46d7c1a400` | -2.2485717587829158e-70 / `b178d49ca2cc986a` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[129]` | 6.833061104840976e-10 / `3e077a6c9280d100` | 6.833061104840976e-10 / `3e077a6c9280d100` | 3.8508009578157174e-70 / `318543056683979d` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[130]` | 4.1549222966795273e-10 / `3dfc8d6aa694cb78` | 4.1549222966795273e-10 / `3dfc8d6aa694cb78` | -9.755909645490872e-70 / `b19aeee1501ad0d7` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
|
||||
Call observations: `{"id":0,"parent":null,"depth":0,"orders":[0,3],"upper":false,"simple":false,"requested_uv":[0.596904387581208,0.7514670699906439],"flags":[{"name":"FIRST_DERIVATIVE_FALLBACK","data":[]},{"name":"NORMAL_SUBSTITUTION","data":[]}],"metrics":{"tol":1.0000000030157418e-11,"bu_length":3.879600138894495e-09,"bv_length":1.5926682048669807e-09},"initial_normal_length":6.178280238059805e-18,"actual_frame":{"bu":[7.615026599646428e-10,-1.7148043855026999e-09,3.395711538991154e-09],"bv":[-1.0648605786014234e-11,6.014722535952464e-13,2.6917330239139187e-12],"normal_numerator":[-0.15601940236281028,-0.8953442697042284,-0.4171529513190017],"last_length":1.0},"frame_consistency":{"original_bu_cross_bv":[-9.63931590372052e-19,-5.531687807773723e-18,-2.5772878353825118e-18],"actual_bu_cross_bv":[-6.658221865926424e-21,-3.820935539936162e-20,-1.7802253180338927e-20],"original_cross_minus_c":[0.15601940236281028,0.8953442697042284,0.4171529513190017],"actual_cross_minus_c":[0.15601940236281028,0.8953442697042284,0.4171529513190017],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[1.526499677937527e-09,-7.637893214484336e-11,-4.06992513657156e-10],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## gen1558
|
||||
|
||||
Input SHA-256: `2fdae45608cfb1636a48c992a1936b801b4ce6230c605804f556230c81acd6af`; source: `generated:seed=7714667220713743519`; group: `four-term-change-with-base-normal-substitution`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[99]` | 184401972812.6312 / `4245779b672650cb` | 184401972812.6312 / `4245779b672650cb` | -71070903189.75255 / `c2308c27eb95c0a7` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[100]` | -21124084384.399666 / `c213ac5fca819942` | -21124084384.399666 / `c213ac5fca819942` | -6739677838.116085 / `c1f91b7528e1db7c` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[101]` | -86153223578.61398 / `c2340f21dd9a9d2e` | -86153223578.61398 / `c2340f21dd9a9d2e` | 20032375673.53098 / `4212a8172de61fb9` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
|
||||
Call observations: `{"id":1,"parent":null,"depth":0,"orders":[3,2],"upper":true,"simple":true,"requested_uv":[0.24802571114379068,0.24776584150699543],"flags":[{"name":"FIRST_DERIVATIVE_FALLBACK","data":[]}],"metrics":{"tol":3.0792860677821205e-11,"bu_length":0.33024706155265693,"bv_length":4.965070200517434e-16},"initial_normal_length":8.80587227383911e-17,"actual_frame":{"bu":[-0.2707511610094341,0.08109208334024395,0.1708244844738213],"bv":[4.440892098500626e-16,-2.220446049250313e-16,-4.336808689942018e-19],"normal_numerator":[2.8577077368056407e-12,-6.915387874231117e-12,7.812175763349337e-12],"last_length":1.0817540067756827e-11},"frame_consistency":{"original_bu_cross_bv":[3.789548708134025e-17,7.574389073423583e-17,2.4106715363668968e-17],"actual_bu_cross_bv":[3.789548708134025e-17,7.574389073423583e-17,2.4106715363668968e-17],"original_cross_minus_c":[-2.8576698413185595e-12,6.915463618121851e-12,-7.812151656633974e-12],"actual_cross_minus_c":[-2.8576698413185595e-12,6.915463618121851e-12,-7.812151656633974e-12],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## gen1848
|
||||
|
||||
Input SHA-256: `500a01ea137c3d6f62efcd167d833cd6e74b7b6116a4fbc06979dea28f6d0c90`; source: `generated:seed=7714667220713743809`; group: `four-term-change-with-base-normal-substitution`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[22]` | 3.486797671589445e-09 / `3e2df38c96393bd5` | 3.486797671589445e-09 / `3e2df38c96393bd5` | 3.319183405489696e-09 / `3e2c82f624bd8b56` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[23]` | 1.7417027498990135e-08 / `3e52b38e5a37a87c` | 1.7417027498990135e-08 / `3e52b38e5a37a87c` | -5.375502194146476e-08 / `be6cdc08b191daf1` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[24]` | 1.568865732240521e-08 / `3e50d8771d15a273` | 1.568865732240521e-08 / `3e50d8771d15a273` | -4.2875187938172774e-08 / `be6704b890d7f580` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
|
||||
Call observations: `{"id":0,"parent":null,"depth":0,"orders":[3,2],"upper":true,"simple":false,"requested_uv":[0.75,0.07696786997360228],"flags":[{"name":"FIRST_DERIVATIVE_FALLBACK","data":[]},{"name":"NORMAL_SUBSTITUTION","data":[]}],"metrics":{"tol":1.0000000017312342e-11,"bu_length":1.4537666451830117e-09,"bv_length":2.69944637051829e-09},"initial_normal_length":3.9080197742141875e-18,"actual_frame":{"bu":[-8.834044020425902e-12,-3.3212898938902318e-12,5.650548655208509e-12],"bv":[3.9716472387781525e-10,1.9838916877145435e-09,1.7870211696643567e-09],"normal_numerator":[-0.5774009480622939,0.6072229018498705,-0.5457916201681616],"last_length":1.0},"frame_consistency":{"original_bu_cross_bv":[-2.2564943226774636e-18,2.3730391077850147e-18,-2.1329644442175744e-18],"actual_bu_cross_bv":[-1.7145291859068882e-20,1.8030822274651958e-20,-1.6206687317402223e-20],"original_cross_minus_c":[0.5774009480622939,-0.6072229018498705,0.5457916201681616],"actual_cross_minus_c":[0.5774009480622939,-0.6072229018498705,0.5457916201681616],"actual_bu_minus_original":[1.1343143939921075e-09,3.3638219248502604e-10,-8.257643004879924e-10],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## gen1891
|
||||
|
||||
Input SHA-256: `6b0de4ebc0b7a060198f5f13a960340b989ba8436594d84679a569c237359d81`; source: `generated:seed=7714667220713743852`; group: `four-term-change-with-base-normal-substitution`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[30]` | -8398510252.595567 / `c1ff49718ac98771` | -8398510252.595567 / `c1ff49718ac98771` | -2799288442.387942 / `c1e4db380f4c6a05` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[31]` | 4239901075.871881 / `41ef96f8327be673` | 4239901075.871881 / `41ef96f8327be673` | 1412818698.1934502 / `41d50d79c28c617d` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[32]` | -4202450852.6995087 / `c1ef4f89f4966260` | -4202450852.6995087 / `c1ef4f89f4966260` | -1400431871.3352797 / `c1d4de393fd57539` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
|
||||
Call observations: `{"id":1,"parent":null,"depth":0,"orders":[3,3],"upper":true,"simple":true,"requested_uv":[0.867062428436971,0.5322836176409917],"flags":[{"name":"FIRST_DERIVATIVE_FALLBACK","data":[]}],"metrics":{"tol":3.006239512953488e-11,"bu_length":8.881784197001252e-16,"bv_length":3.9897471566542073},"initial_normal_length":3.3463584783519075e-15,"actual_frame":{"bu":[0.0,-8.881784197001252e-16,0.0],"bv":[3.4062361110375186,-1.3125490808537137,1.6102337843444978],"normal_numerator":[-4.597865075844421e-11,2.7776286068118742e-11,1.1990301108794027e-10],"last_length":1.3138603602080275e-10},"frame_consistency":{"original_bu_cross_bv":[-1.4301748979268483e-15,0.0,3.0253454062268035e-15],"actual_bu_cross_bv":[-1.4301748979268483e-15,0.0,3.0253454062268035e-15],"original_cross_minus_c":[4.597722058354628e-11,-2.7776286068118742e-11,-1.1989998574253404e-10],"actual_cross_minus_c":[4.597722058354628e-11,-2.7776286068118742e-11,-1.1989998574253404e-10],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
|
||||
## gen2878
|
||||
|
||||
Input SHA-256: `6bc6673a9ab477f6cf5a8f005cdafe977ba8c89c4100d64e5a96e5e7336b258e`; source: `generated:seed=7714667220713744839`; group: `four-term-change-with-base-normal-substitution`.
|
||||
|
||||
| field | C++ value / bits | legacy Rust value / bits | corrected Rust value / bits | method | jet check |
|
||||
|---|---|---|---|---|---|
|
||||
| `values.out[74]` | -64460144489.855675 / `c22e043f7ed3b61b` | -64460144489.855675 / `c22e043f7ed3b61b` | 8931279177.494081 / `4200a2c40a4bf3e1` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[75]` | -16141064940.512512 / `c20e10a8d76419a0` | -16141064940.512512 / `c20e10a8d76419a0` | 16497025242.98624 / `420eba6506d7e3d2` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
| `values.out[76]` | -210371020904.86896 / `c2487d8b84346f3a` | -210371020904.86896 / `c2487d8b84346f3a` | 75814238396.14186 / `4231a6e178bc2451` | observed-frame-recurrence-bit-match | non-pole-root-or-substitution-unknown |
|
||||
|
||||
Call observations: `{"id":0,"parent":null,"depth":0,"orders":[2,3],"upper":true,"simple":true,"requested_uv":[0.0,0.7822932073833477],"flags":[{"name":"FIRST_DERIVATIVE_FALLBACK","data":[]}],"metrics":{"tol":3.445555902891527e-11,"bu_length":1.0372476994494015,"bv_length":2.220446049250313e-16},"initial_normal_length":9.20233809571358e-17,"actual_frame":{"bu":[-0.4140170541043746,0.018640326159397702,-0.950854987453125],"bv":[0.0,0.0,-2.220446049250313e-16],"normal_numerator":[2.2372328487251198e-11,2.99585887417777e-11,-9.15395910331092e-12],"last_length":3.849458518552356e-11},"frame_consistency":{"original_bu_cross_bv":[-4.138983857737189e-18,-9.193025321083117e-17,-0.0],"actual_bu_cross_bv":[-4.138983857737189e-18,-9.193025321083117e-17,-0.0],"original_cross_minus_c":[-2.2372332626235056e-11,-2.9958680672030914e-11,9.15395910331092e-12],"actual_cross_minus_c":[-2.2372332626235056e-11,-2.9958680672030914e-11,9.15395910331092e-12],"actual_bu_minus_original":[0.0,0.0,0.0],"actual_bv_minus_original":[0.0,0.0,0.0],"limitation":"Higher derivatives remain from original base; replacement frame need not be a differentiable normal field."}}`.
|
||||
+8516
File diff suppressed because it is too large
Load Diff
+44
@@ -0,0 +1,44 @@
|
||||
# surface.offset_surface: fresh goldens migration measurements (2026-11-06)
|
||||
|
||||
Updates: plan/findings/surface.offset_surface--default-third-derivatives-diagnostic-attribution.md
|
||||
|
||||
## Scope and provenance
|
||||
|
||||
PR #1914 still owns exactly four unconditional third-order terms and its default-kernel regression. Requested-grid/local-initialization work remains #2717's separate fix, now in standalone PR #2970 after #2765 was closed in its favour. The November 6 migration direction on #1914 supersedes the historical native-accounting/marker proposals, not the historical observations themselves. None of those observations is a blanket correctness certificate.
|
||||
|
||||
The original published head `052366249e42cfe4ad9defb109fea81c9060a0a3`, original checkout/ref, complete reachable history and source/evidence are preserved. A verified history bundle and an archive whose 22 members were read back precede the isolated refresh. The refresh's measured numerical source is `d9f7742902f8d21028fe1bf67f5c8ffada4c68f1`, rebased linearly on main `1483513fe360e7d0db93241930e9d1699f7e3fd1`. Its numerical file SHA-256 is `86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`.
|
||||
|
||||
The retired `crates/difftest/known_mismatches/surface.offset_surface.toml` is not restored. Current-main plan metadata is retained, including its later extension-removal update. All eight historical records are retained unchanged. No C++ code was built, linked or run for this migration.
|
||||
|
||||
## Fresh measurements, not blessed results
|
||||
|
||||
All commands used Rust 1.98.0, `CARGO_BUILD_JOBS=2`, `nice -n 10`, and the current Rust-only runners. Fixture data came from the existing local reference at pin `3fd5b9548d19aa8c12c29bc9637a96d42a06f8a5`; the shared root reference was not changed. Two initial golden invocations stopped during setup because the isolated worktree lacked that fixture-data link; they measured no case output. The corrected setup changed only that ignored link.
|
||||
|
||||
- `cargo fmt --all --check`: pass; all 23 `surface::offset_surface::tests`: pass.
|
||||
- `cargo run --profile goldens -p goldens -- --unit surface.offset_surface --goldens`: **3,182 cases, 443 changed, zero added, removed or broken, zero known failing**. This is a failed gate.
|
||||
- An evidence-only `--bless --goldens-dir <temporary-directory>` measured the same 3,182 encodings outside the repository. It did not approve or replace committed expectations.
|
||||
- A temporary collector used only the public registry/runner/output APIs, without kernel instrumentation, to retain every input, source, raw binary64 value/bits and golden encoding. All 3,182 encodings equal the independent evidence-directory measurement.
|
||||
- Reverting exactly the four production terms, while retaining the regression, compiles and fails the intended assertion: `Suuv.x: got 1.850528767371623, want 1.740100020590324` (test exit 101). Its raw-output collector succeeds.
|
||||
- The two raw runs have **3,182 unique unbroken identities and identical inputs and sources**, with no length/key changes. The four corrected terms were then restored byte-for-byte to the measured numerical source.
|
||||
|
||||
Raw corrected JSONL SHA-256: `735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`. Four-term-reverted JSONL SHA-256: `56cd28f6ad7ff18c4890469a148c0cfbaf49b70ff241ff9136cfbfee01d84dd1`. Temporary collector source SHA-256: `cb3b45f210f54494cee4fe3276ace13ca3ade2ac6c1d0e60bab9dfa613ffb7cb`.
|
||||
|
||||
## Attribution under the actual current gate
|
||||
|
||||
Comparison follows `crates/goldens/src/golden.rs`: arrays above 16 values are encoded in blocks of 256; block agreement uses the larger absolute sum, and 256 times that scale for the weighted sum. It is not the historical raw component-by-component comparator. The unit has no absolute floors. A Python transcription reproduces the gate's 443 changed identities; its full per-case comparison, old/new encodings, raw differences and input hashes are retained with the raw outputs.
|
||||
|
||||
**442 encoded changes are caused by the four terms. One encoded change, `gen1558`, is inherited:** the four-term-reverted run also disagrees with the committed golden. Corrected versus reverted encodings agree for that case under the current gate. Its `[sum, abs_sum, weighted_sum]` is:
|
||||
|
||||
| Committed golden | Four-term-reverted | Corrected |
|
||||
|---|---|---|
|
||||
| `[-3.10840560526347e21, 4.5707629311690324e21, -3.327944456358365e23]` | `[-3.108411605492941e21, 4.570766065003835e21, -3.327951246219241e23]` | `[-3.1084116056278434e21, 4.5707660648099993e21, -3.327951246351876e23]` |
|
||||
|
||||
That isolates inherited behavior, not its cause or correctness; no platform explanation is asserted as proved. At raw-bit level the four-term bundle moves 2,575 components across 549 cases; 513 cases have at least one component change beyond the raw `1e-9` relative rule. Neither number is the encoded gate's changed count.
|
||||
|
||||
Of the 443 encoded changes, historical identity groups contain 231 conditional local-jet cases, 88 unresolved-relative-jet cases, 83 unequal-order alias cases, eight pole-extrapolation cases and two base-normal-substitution cases. Another 31 identities are outside the old 518-case ledger (including the separately recorded `third_derivative_outputs` fixture). **405 of the 443** have both the same canonical input hash and the same historical changed legacy/corrected bits. Seven others in historical groups have different inputs/bits; the remaining 31 lack that ledger's record. Case names alone do not transfer historical evidence.
|
||||
|
||||
## Disposition and remaining work
|
||||
|
||||
No committed golden or known-failure entry is changed by these measurements. An inherited mismatch, a conditionally supported local jet, an explained rounding mechanism or a reproduced extrapolation is not, by itself, a correct geometric result. In particular, the alias, substitution, pole and unresolved-jet groups are not blessed, and their historical labels are not silently converted into new exemptions.
|
||||
|
||||
The draft correctness hold remains. Before readiness, justify each deliberately moved expectation with current old/new values and an applicable independent oracle, or demonstrate an actual remaining defect and list that case against its issue in `known_failing.json` without a golden line. Unexplained differences must remain visible. The direct default-kernel regression establishes its stated closed-form case; it does not establish all 3,182 cases, downstream callers or requested-grid correctness. The temporary collector and all measurements are archived evidence, not a new production diagnostic interface; the collector is removed before this record is committed. These measurements describe the exact named base, not the substantially advanced main at `c7b8a343`.
|
||||
Vendored
+42
@@ -0,0 +1,42 @@
|
||||
# surface.offset_surface: default third-derivative diagnostic attribution (2026-11-04)
|
||||
|
||||
- **Unit / PR:** `surface.offset_surface`, #1914. The approved four-term correction is unconditional; this record does not propose another geometry change.
|
||||
- **Measured revision:** `8ec4825280f7b2f9a41fc4183d609f8a080146e9`, on base `c4276a13c92ff696d40f331f8830fbb8cc5d269a`.
|
||||
- **Command:** `CARGO_BUILD_JOBS=2 CARGO_TARGET_DIR=bin/review1914-target SOLIDCORE_CPP_DIR=<main-checkout>/bin/cpp-v101 nice -n 10 cargo +1.98.0 run -p difftest --features cpp -- --unit surface.offset_surface` (with `RUSTUP_TOOLCHAIN` and `RUSTC_WRAPPER` unset).
|
||||
- **Observation:** 3,182 cases, 2,663 passed, 519 failed, zero deferred; maximum relative error `1.9972685729541615`. This is a failed native diagnostic, not a parity pass. A separate full `curve.crv_on_surf` run reached the shell's combined 1,200-second limit without a summary.
|
||||
|
||||
## One individually supported C++ defect
|
||||
|
||||
The existing `fixtures/surface.offset_surface/edge_cases.json#0`, `third_derivative_outputs`, is named in the confirmed original WR-160 and WR-161 records. Its base is a regular cubic B-spline patch; its seven steps request rectangular derivatives of total order at most three or equal-order `(3,3)` upper-half derivatives.
|
||||
|
||||
The ten reported mismatches map through the unchanged runner's output serializer:
|
||||
|
||||
| `values.out` indices | Zero-based step | Derivative / component | Cause |
|
||||
| --- | --- | --- | --- |
|
||||
| 19 | 0, `eval` | `D(1,2).z` | WR-160 and/or WR-161 |
|
||||
| 50, 51 | 2, `eval` | `D(0,3).y,z` | WR-161 |
|
||||
| 76, 77 | 4, `eval` | `D(0,3).y,z` | WR-161 |
|
||||
| 86 | 4, `eval` | `D(1,2).z` | WR-160 and/or WR-161 |
|
||||
| 114 | 5, `eval_simple` | `D(1,2).z` | WR-160 and/or WR-161 |
|
||||
| 126, 127 | 6, `eval_simple` | `D(0,3).y,z` | WR-161 |
|
||||
| 136 | 6, `eval_simple` | `D(1,2).z` | WR-160 and/or WR-161 |
|
||||
|
||||
For example, `out[19]` is C++ `0.8656646974185226` versus Rust `-0.21398042233584189`; `out[50]` is C++ `-2.316474981309934` versus Rust `6.683525018690066`. The four corrected expressions follow differentiation of `Bu × Bv` and `B + d*N`, and a separate default-kernel polynomial closed-form regression fails before the fix. This supports a case-specific `cpp_defect = "WR-161"` marker explaining both WR-160 and WR-161. The marker parks this case only; it does not count it as a pass or establish correctness of every unrelated output.
|
||||
|
||||
## Remaining failures stay visible
|
||||
|
||||
`upper_half_slot_overwrite` (`edge_cases.json#1`) is **not parked**. Its `out[26]` is step 1's unequal-order `(3,1)` upper-half request: the serialized `D(2,0).z` slot is overwritten by a `Duvv` write. C++ `0.42964767031822376` versus Rust `-0.055925937843527895` therefore is not evidence that the destination `Duu` is correct. The unequal-order slot issue remains outside this PR. Its other four mismatches do not justify parking the entire case.
|
||||
|
||||
The expanded pass gives every remaining case bundle-level causal evidence and measured values in [the per-case addendum](surface.offset_surface--default-third-derivatives-diagnostic-attribution--addendum-2026-11-04-per-case-four-term-attribution.md). Reverting only the four corrected terms in a temporary source copy makes all full outputs agree with C++ under the unchanged comparator; that is not individual-term isolation or proof of correctness by C++ agreement.
|
||||
|
||||
The 518 cases split into 282 with independent conditional local-jet support, 103 relative-jet disagreements, 116 unequal-order alias cases tracked separately in #2717, nine non-alias pole-extrapolation cases and eight non-alias fallback/substitution cases. After the records were published, the maintainer-authorized 282 supported cases are listed against the confirmed WR-160/161 addenda naming their values. Together with the preserved original fixture entry, there are 283 case-specific markers. The other **236 cases remain ordinary running failures**. No post-marker full native sweep is claimed. Further numerical measurements may explain a disagreement but do not automatically authorize a marker.
|
||||
|
||||
No tolerance, input, runner, guard, fixture or comparison is changed to remove failures. The unit remains selected by `--green` and main's sweep through a provisional `partial` scheduling entry; its measured native result is still **fail**, not a passing or partial report. The PR stays draft under the maintainer's requirement to resolve every unexplained case, with the alias cases waiting for #2717's fix. Rust's own canonical CI is a separate gate, not permission to bypass that hold.
|
||||
|
||||
The existing passing cases and failing inputs remain in the runner. Every changed component now maps to its actual operation and serialized derivative slot, including overwritten destinations. The stronger correctness checks remain conditional on supplied base derivatives at the selected surface/UV; they do not globally prove providers, wrappers or the outer clamping/extension map. No end-to-end curve-on-surface improvement is claimed.
|
||||
|
||||
## Reference and evidence bounds
|
||||
|
||||
All 492 SMLib/SM_API source blobs in the preserved reference copies were checked against pin `3fd5b9548d19aa8c12c29bc9637a96d42a06f8a5`. Shared `cpp-v101` library hashes matched preserved historical build receipts, but this is not a reproducible-build proof. Libraries and shared sources were not rebuilt or modified.
|
||||
|
||||
The native results above belong to `8ec4825`, not later integration heads. Local full report, logs and source-hash receipts were preserved before integration. Focused final-head checks and canonical CI must be reported separately; this record does not turn a timeout or a historical run into a current-head pass.
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
# surface.offset_surface: one enabled-extension explicit-side clamp (2026-11-08)
|
||||
|
||||
Continues #1914 with one independently supported complete row / three moved
|
||||
components, `gen1332`. The original script keeps extension enabled, but its
|
||||
explicit `SS_VMAX` flag clamps the only outside request before extension runs.
|
||||
This is not evidence for an actual extended surface, a changed default flag,
|
||||
or a constant continuation's derivatives. All original inputs and all three
|
||||
script steps remain executing.
|
||||
|
||||
## Independent state and value evidence
|
||||
|
||||
The original direct B-spline has domain `[0,0]–[1,1]`, distance
|
||||
`8.716126750113276`, `allow=true` and explicit side mask **11 = 1|2|8**. At step
|
||||
0, `(hu,hv,upper)=(0,3,false)`, the requested UV
|
||||
`[0.004833398684368828,1.9535512732399394]` is clamped to
|
||||
`[0.004833398684368828,1.0]` by its original `SS_VMAX=8` flag. The later normal
|
||||
query is in the original domain; the final state grid uses that domain too.
|
||||
No edit occurs anywhere in the full script. `OffsetSurface::new` starts without
|
||||
an extension; `extend_surface` wraps periodic directions, applies the explicit
|
||||
side flags, then returns `None` when the resulting UV is in domain
|
||||
(`surface/offset_surface.rs:430-436,3088-3113`).
|
||||
|
||||
The original input net independently establishes nonperiodicity, rather than
|
||||
assuming it from a result flag. The first opposite-boundary position test of
|
||||
`Surface::is_periodic` is evaluated at 80/160 digits, from original knots/weights
|
||||
and control points, with the same binary64 `1/7` sample fraction. Its squared
|
||||
separation exceeds the source's position threshold
|
||||
`1e-12*(1+max(abs(Pmax)))` by **6.632468755324e12** in u and
|
||||
**7.813412246639e12** in v. Relative precision drift of those separations is
|
||||
`1.292e-79` / `1.421e-81`; both endpoint samples pass the independent regularity
|
||||
checks. The private proof admits only ratios above `1e6`, a conservative scope
|
||||
filter, not a production tolerance or new absolute floor. These are explicit
|
||||
local numerical/state diagnostics, not a whole-domain interval certificate.
|
||||
Source: `surface/surface/p1.rs:2937-2995`, `geom/tol.rs:869-873`, `math.rs:44`.
|
||||
|
||||
The independent Cox-de Boor/Taylor algebra differentiates
|
||||
`S + d (Su x Sv)/|Su x Sv|` **at the clamped point**, converting original
|
||||
binary64 inputs exactly and constructing no net from kernel derivatives. All
|
||||
three moved components pass unchanged relative `1e-9`, without a floor; maximum
|
||||
discrepancy `8.063531413806036e-14`, precision drift `1.8686238951724364e-77`.
|
||||
The entire original input and every output bit/shape were checked against the
|
||||
retained counterfactual. It selects moved indices only, never expected values.
|
||||
|
||||
| Raw index / component | Observed | Independent expected (rounded display) | Relative error |
|
||||
|---|---|---|---|
|
||||
| 11 / D(0,3).x | 67.24942617590006 | 67.24942617589463 | 8.064e-14 |
|
||||
| 12 / D(0,3).y | -213.5282907546842 | -213.52829075468333 | 4.083e-15 |
|
||||
| 13 / D(0,3).z | -200.89857095976015 | -200.89857095975854 | 8.035e-15 |
|
||||
|
||||
## Complete old/new encoding
|
||||
|
||||
The replacement is the full retained collector encoding. Common fields stay
|
||||
`deferred=null`, `error=null`, `ints={}`, `topology=null`; `out.n` stays **72**.
|
||||
Blocks are `[sum, abs_sum, weighted_sum]`, not error bounds. The full original
|
||||
input hash uses sorted compact Python JSON, UTF-8.
|
||||
|
||||
| Case | Components / max relative error | Full original input SHA-256 | Old → new checksum blocks / unchanged n |
|
||||
|---|---|---|---|
|
||||
| `gen1332` | 3 / `8.06353e-14` | `cb46fb52544fb4c84e3a64deca2346d55fc1ad7f94adec553f4e41652db65660` | `[[68487.9127286635, 73586.6520814705, 1550175.2367883257]]` → `[[30395.004642320324, 31489.622915038668, 1034470.1990414166]]` / `72` |
|
||||
|
||||
## Controls, exclusions and provenance
|
||||
|
||||
All **85 numerical/scope controls pass**. Seven new controls exercise each side
|
||||
and combined masks on an independent affine-plane closed form; reject missing
|
||||
flags and unknown masks; check that plane's opposite-boundary squared distances
|
||||
are exactly 5 and 10; reject a closed/unseparated or nonregular first sample;
|
||||
reject a wrong jet and preserve the previous model's extension-disabled guard;
|
||||
exclude a parameter edit; and bind the actual complete input/output before
|
||||
deliberately corrupting a bit.
|
||||
|
||||
The numeric-only candidates `gen0590` and `gen0962` are **not approved**.
|
||||
`gen0590` reaches a normal fallback in its first periodicity sample, outside this
|
||||
state proof. `gen0962` swaps parameters, but `swap_uv_notifying` does not remap
|
||||
the stored side mask (`offset_surface.rs:1886-1904`); a clamp-only model silently
|
||||
remapping that mask is not justified even though three components agree. No
|
||||
actual extension or unmodelled branch is excused by numeric agreement alone.
|
||||
|
||||
The **64-member archive** was read back and hash-verified, SHA-256
|
||||
`c0277e8e83feb5100d1c40e5f947f3aa476e0073555c19acd9fcdf403086ec81`.
|
||||
It contains executable models/controls, source snapshots, complete original
|
||||
inputs/raw values/bits, old/new rows, full-precision values and nonperiodicity
|
||||
diagnostics. Local path:
|
||||
`~/.local/share/opencode/solidcore-cleanup-evidence/pr1914-singular-side-clamp-20261108-670557efa/`.
|
||||
|
||||
Pre-edit head: `670557efa12f074f96d7fc559a1d854f7f722aca`. The collector remains
|
||||
at its actually measured `7a90407a0fe189ebceb551e5df28aaf4e8cc9893` revision,
|
||||
raw SHA-256 `735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`.
|
||||
Numerical source SHA-256 stays
|
||||
`86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`.
|
||||
No new collector or full-suite execution is claimed.
|
||||
|
||||
Every other golden and all 88 known failures remain unchanged. Projected
|
||||
accounting is **167 supported cases / 815 components**, **188 ordinary
|
||||
differences**, all **3,182 cases = 3,094 goldens + 88 known failures**, pending
|
||||
the actual gate. There is no new body/topology, validity, volume, global
|
||||
regularity or actual-extension claim. Parent canonical run 42477082489 ended
|
||||
`action_required`, zero jobs, not success; correctness/review holds remain.
|
||||
Vendored
+137
@@ -0,0 +1,137 @@
|
||||
# surface.offset_surface: one polynomial linear-end-span continuation (2026-11-08)
|
||||
|
||||
Continues #1914 with one supported complete row / nine moved components,
|
||||
`gen1320`. No production construction, flag, input, tolerance, absolute floor,
|
||||
decoder or case selection changes. In particular this does not implement
|
||||
#2738's extension work or #2717's named-grid change. All three original steps
|
||||
and all 56 original raw scalars remain selected; no suffix is cropped or skipped.
|
||||
|
||||
## State and construction proof
|
||||
|
||||
The original direct B-spline has degrees **p=3, q=1**, unit/NOW weights, distance
|
||||
`0.0002950299289045415`, `allow=true`, and explicit singular-side mask **0**.
|
||||
Step 0 is `max_anal`, not an edit. Step 1 evaluates `(hu,hv,upper)=(2,3,true)`
|
||||
at **[4.811712701187294,0.4857657254451476]**. Its u is strictly inside the
|
||||
original first cubic span `[2.2788605465371647,5.471921079381099]`; v is above
|
||||
the original domain `[-1.539680032514508,0.0808781086230479]`. The terminal
|
||||
linear v span starts at `-1.1286307215898375`. Step 2 is a bounding query over
|
||||
the original domain, not an edit. The complete original script is decoded;
|
||||
only moved jets, not the correctness of unchanged query outputs, are graded.
|
||||
|
||||
Both opposite boundary control hulls are separated by an exact-rational plane
|
||||
derived from the original binary64 control points. The squared-distance lower
|
||||
bounds are **3.8310369064621734e-6 / 1.9159016944257274e-6**, both above the
|
||||
conservative source-threshold upper bound **1.003453397165149e-12**. The archive
|
||||
retains the exact fractions, plane normals, projection gaps and norm squares.
|
||||
Clamped polynomial boundaries lie inside their control hulls, so neither
|
||||
direction can pass a positional closure test. This covers both the receiver's
|
||||
`Surface::is_periodic` and NURB `is_closed_smooth` G0 checks, before tangent
|
||||
checks could wrap parameters. Original-net 160-digit first-sample position
|
||||
checks separately have separation/threshold ratios **4.210233608e6 / 2.872639340e6**,
|
||||
with regular first samples. No periodic-result flag is used as an expected value.
|
||||
Sources: `surface/surface/p1.rs:2937-2995`, `nurbs/srf_nurb.rs:1644-1743`.
|
||||
|
||||
`select_surface` extends the original receiver for this outside request.
|
||||
The mask has no clamp bit. `extend_surface` calls the unbounded evaluator with
|
||||
**G1R**; its extension chunks are at most 0.9 of the current domain length
|
||||
(`surface/offset_surface.rs:1294-1350,3067-3162`,
|
||||
`nurbs/srf_adv/p1.rs:240-281,333-375`). This is an actual extension, unlike the
|
||||
earlier enabled-but-unused or explicit-side-clamp dispositions.
|
||||
|
||||
For fixed u, write the original terminal span `[a,b]` as
|
||||
|
||||
```text
|
||||
S(u,v) = A(u) + (v-b) B(u)
|
||||
B(u) = (P_last(u)-P_prev(u))/(b-a).
|
||||
```
|
||||
|
||||
The inspected G1R formula, specialized to extension-direction degree one,
|
||||
creates `Q_last=P_last+(c-b)*(P_last-P_prev)/(b-a)`. There are no intermediate
|
||||
degree-elevation rows and every weight stays one. Thus the new segment is
|
||||
**the same affine polynomial**, with the same parameter derivative B(u), not
|
||||
merely an unspecified G1 continuation. Repeating the construction at any farther
|
||||
endpoint preserves that polynomial. Its join is exactly C1 in real arithmetic,
|
||||
so removal of the old boundary knot preserves the same function; retaining the
|
||||
knot does too. Sources: `nurbs/srf_adv/p3.rs:533-607`,
|
||||
`nurbs/srf_tool/p2.rs:96-215`. This proof does not generalize to rational nets
|
||||
or a curved end span in an extended direction.
|
||||
|
||||
The oracle continues the **original terminal-span polynomial**, not a
|
||||
kernel-generated extended net and not a replay of source-order floating-point
|
||||
arithmetic. Original inputs are converted exactly to Decimal; independent
|
||||
80/160-digit Cox-de Boor/Taylor algebra differentiates
|
||||
`S + d (Su x Sv)/|Su x Sv|`. All nine moved components pass unchanged relative
|
||||
`1e-9`, without a floor; maximum discrepancy **9.324089962188992e-14**, precision
|
||||
drift **6.182732331065606e-78**. Regularity/normal-substitution guards remain.
|
||||
No whole-domain regularity or floating-point interval error certificate follows.
|
||||
|
||||
## Complete old/new row and observations
|
||||
|
||||
The new row equals the complete retained collector encoding. Common fields
|
||||
stay `deferred=null`, `error=null`, `ints={}`, `topology=null`; `out.n` stays
|
||||
**56**. Blocks are `[sum, abs_sum, weighted_sum]` checksums, not error bounds.
|
||||
The hash covers the complete original input, sorted compact Python JSON, UTF-8.
|
||||
|
||||
| Case | Components / max relative error | Full original input SHA-256 | Old → new checksum blocks / unchanged n |
|
||||
|---|---|---|---|
|
||||
| `gen1320` | 9 / `9.32409e-14` | `01537720249ce9b50614cc1147ba7646e678602cb601657b2468bd837ce52399` | `[[8.083516148205456, 338.29768636282773, 410.2475809158631]]` → `[[8.083506601475959, 338.297647168599, 410.2473283613418]]` / `56` |
|
||||
|
||||
All moved observations (display rounded; decisions use archived full precision):
|
||||
|
||||
| Raw index / named partial / axis | Observed | Independent expected | Relative error |
|
||||
|---|---|---|---|
|
||||
| 16 / D(0,3) / x | -4.0165406990270497e-7 | -4.0165406990270577e-7 | 1.958e-15 |
|
||||
| 17 / D(0,3) / y | -4.185013264215656e-6 | -4.1850132642156576e-6 | 4.667e-16 |
|
||||
| 18 / D(0,3) / z | 2.811709755875541e-6 | 2.811709755875539e-6 | 7.824e-16 |
|
||||
| 25 / D(1,2) / x | -1.1580306332549033e-7 | -1.1580306332549017e-7 | 1.412e-15 |
|
||||
| 26 / D(1,2) / y | -4.9149666324015915e-6 | -4.914966632401594e-6 | 4.588e-16 |
|
||||
| 27 / D(1,2) / z | -4.336982137589329e-6 | -4.336982137589327e-6 | 5.264e-16 |
|
||||
| 31 / D(2,1) / x | -1.8565629605747271e-6 | -1.8565629605749001e-6 | 9.324e-14 |
|
||||
| 32 / D(2,1) / y | -1.0011266070069925e-5 | -1.0011266070069917e-5 | 7.733e-16 |
|
||||
| 33 / D(2,1) / z | 1.29596701263065e-5 | 1.2959670126306509e-5 | 6.323e-16 |
|
||||
|
||||
## Controls, exclusions and provenance
|
||||
|
||||
All **92 numerical/scope controls pass**, including rerunning all earlier controls
|
||||
after adding explicit opt-in basis/jet evaluator keywords to the temporary
|
||||
shared helper. Its defaults still reject outside-domain inputs. Seven new
|
||||
controls cover affine-plane continuation in every direction; independent
|
||||
nonzero saddle third partials in u/v; rejection of curved/rational extensions,
|
||||
overlapping/closed hulls and base edits; complete actual-record input/bit
|
||||
preservation; rejection of wrong jets, corrupted bits and moved query fields.
|
||||
Only `gen1320` is accepted by the bounded scan; all other exclusions remain
|
||||
recorded. No unrelated numerical disagreement or extension case is blessed.
|
||||
|
||||
The saddle controls use `S=(u,v,uv)`, `d=9/8`, and direct differentiation of
|
||||
`(-v,-u,1)/sqrt(1+u²+v²)`. At `(1/4,2)` its offset point is `(-3/4,15/8,1)`;
|
||||
`D(0,3)=(-877608,133056,-532224)/4782969`. The swapped control exchanges x/y
|
||||
and the differentiation direction. Exact Fraction arithmetic independently
|
||||
verified these identities. Three initial controls failed on exact equality of
|
||||
Decimal point components rounded at the 160th digit; they now use the existing
|
||||
120-digit closed-form comparison. Their exact expected expressions, third
|
||||
partials, captured-value `1e-9` rule and all scope guards are unchanged. The
|
||||
initial failure log and separate derivation are preserved, not concealed.
|
||||
|
||||
The **76-member executable/raw/source/control archive** was read back and
|
||||
hash-verified, SHA-256
|
||||
`1a6491aeb5fc3d00ea479f11d14870038ba28ae31c7537c59d8f8ab8cad00bd2`.
|
||||
It retains all full original inputs/raw values/bits, exact-rational hull bounds,
|
||||
old/new rows, full-precision observations, controls, previous strict helper,
|
||||
derivation, exclusions and source snapshots. Local path:
|
||||
`~/.local/share/opencode/solidcore-cleanup-evidence/pr1914-linear-span-extension-20261108-ceadc86fe/`.
|
||||
|
||||
Pre-edit head: `ceadc86fedb8d337812b4882175f4fbb0fd0b79c`, on main
|
||||
`3ef79991375bfb6f5cdde7c80584d76589808498`. The collector retains its actually
|
||||
measured `7a90407a0fe189ebceb551e5df28aaf4e8cc9893` revision and raw SHA-256
|
||||
`735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`.
|
||||
Numerical source SHA-256 remains
|
||||
`86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`.
|
||||
No fresh collector execution is claimed.
|
||||
|
||||
Every other golden and all 88 known failures remain unchanged. Projected
|
||||
accounting is **168 supported cases / 824 components**, **187 ordinary
|
||||
differences**, all **3,182 cases = 3,094 goldens + 88 known failures**, pending
|
||||
the actual gate. This derivative-only disposition makes no new B-rep, topology,
|
||||
validity, volume or body-construction claim. Parent canonical run 42478935902
|
||||
ended `action_required`, zero jobs, not success. Correctness, review and CI
|
||||
holds remain; no approval request, rerun or readiness is implied.
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
# surface.offset_surface: one outward trim that edits no net (2026-11-08)
|
||||
|
||||
Continues #1914 with one supported complete row / six moved components,
|
||||
`gen1851`. Its outward trim is not an actual net trim: with extension disabled,
|
||||
the inspected branch leaves both receiver geometry and parameter domain alone.
|
||||
No production construction, flag, input, tolerance, floor, decoder, crop or
|
||||
skip changes. All six original steps and all 147 raw scalars still execute.
|
||||
|
||||
## State proof before the changed evaluation
|
||||
|
||||
The receiver owns its original direct B-spline, has domain `[0,0]–[1,1]`,
|
||||
degrees p=1/q=3, distance `0.37661542454724795`, explicit mask 9 and extension
|
||||
disabled throughout. Steps 0–2 are state, a derivative request and a point
|
||||
query, not base edits. No earlier operation can create an extended surface.
|
||||
|
||||
Step 3 asks to trim to
|
||||
`[-0.10841096368374764,0,1.4533635181537692,1.141637526818134]`, whose minimum
|
||||
and maximum corners extend beyond the original domain. In
|
||||
`OffsetSurface::trim_with_domain` (`surface/offset_surface.rs:1969-1990`),
|
||||
either outside corner sets **gets_bigger=true** after evaluating that corner.
|
||||
With `allow=false`, `select_surface` clamps those evaluations and creates no
|
||||
extension (`:1304-1348`). Consequently the `if let Some(extended)` trim has
|
||||
nothing to edit, and `owns_surface && !gets_bigger` is false: **the original
|
||||
base is not trimmed**. The successful status and returned four domain scalars
|
||||
are retained; their binary64 bits equal the original request exactly.
|
||||
|
||||
Thus step 4's changed `eval_simple(hu=2,hv=3,upper=true)` at
|
||||
`[0.5,0.45456415197103317]` still uses the **original net and domain**. It is
|
||||
strictly inside the original u span `(0.13597465269160103,1)` and v span
|
||||
`(0,0.45930959990169207)`, away from a knot-side ambiguity. Step 5 is state.
|
||||
No post-trim reconstructed net is used as an independent expected input.
|
||||
|
||||
The evidence model validates the complete original input identity, output
|
||||
shape and every value/bit pair against the retained four-term counterfactual.
|
||||
It audits every operation, excludes enabled extension, nonowning or nested
|
||||
receivers, actual inward trims, failed trims and other base edits. Only after
|
||||
that state proof does its **private decoder** view trim's known status/four-
|
||||
scalar payload as the existing `max_anal` query shape. This neither changes
|
||||
the production script nor relaxes the default evidence decoder, which still
|
||||
refuses `trim`. Every moved field must be an independently graded jet, not a
|
||||
status, returned domain or other query result. The complete script is decoded;
|
||||
unchanged fields are not asserted independently correct.
|
||||
|
||||
## Independent values and exact complete row
|
||||
|
||||
Original binary64 control points, weights, knots and distance are converted
|
||||
exactly. Independent 80/160-digit Cox-de Boor/Taylor algebra differentiates
|
||||
`S + d (Su x Sv)/|Su x Sv|` from that net. All six moved components pass
|
||||
unchanged relative `1e-9`, without a floor. Maximum relative discrepancy is
|
||||
**9.048670857263963e-13**; precision drift **1.3065385952206204e-76**. The
|
||||
regularity/normal-substitution guards are unchanged. This is a local numerical
|
||||
and state proof, not a whole-domain interval error/regularity certificate.
|
||||
|
||||
The replacement equals the complete retained collector encoding. Common
|
||||
fields stay `deferred=null`, `error=null`, `ints={}`, `topology=null`; `out.n`
|
||||
stays **147**. Blocks are `[sum, abs_sum, weighted_sum]`, not error bounds.
|
||||
Input hashes use sorted compact Python JSON, UTF-8, of the full original input.
|
||||
|
||||
| Case | Components / max relative error | Full original input SHA-256 | Old → new checksum blocks / unchanged n |
|
||||
|---|---|---|---|
|
||||
| `gen1851` | 6 / `9.04867e-13` | `71955d6e58899aa90a8f3e07a5fd12adce0d1f9b008a5af7cf74c613054d7532` | `[[61829.67557510773, 61888.01368940549, 3859448.1427769545]]` → `[[61831.18435404368, 61889.99122955711, 3859566.2962446106]]` / `147` |
|
||||
|
||||
All moved observations, at step 4 (rounded display; full precision archived):
|
||||
|
||||
| Raw index / named partial / axis | Observed | Independent expected | Relative error |
|
||||
|---|---|---|---|
|
||||
| 75 / D(0,3) / x | -0.2008756440505442 | -0.20087564405050865 | 1.770e-13 |
|
||||
| 76 / D(0,3) / y | -0.03506846111704871 | -0.03506846111704853 | 5.293e-15 |
|
||||
| 77 / D(0,3) / z | 1.742602619174874 | 1.7426026191748802 | 3.547e-15 |
|
||||
| 84 / D(1,2) / x | -0.0007919694071997914 | -0.000791969407200508 | 9.049e-13 |
|
||||
| 85 / D(1,2) / y | 0.004952324689906306 | 0.004952324689906027 | 5.621e-14 |
|
||||
| 86 / D(1,2) / z | 0.0016653571816100078 | 0.0016653571816091944 | 4.884e-13 |
|
||||
|
||||
## Controls, exclusions and provenance
|
||||
|
||||
All **98 numerical/scope controls pass**. Six new controls check an independent
|
||||
affine-plane closed form through the no-op; reject inward trims, nonowning
|
||||
receivers, extension, other edits, failed trims and changed returned rectangles;
|
||||
reject wrong jets and tampered bits; and bind the actual complete record while
|
||||
showing the previous default decoder still refuses trim. `gen2214` independently
|
||||
disagrees and is **not blessed**. Actual net trimming and other exclusions stay
|
||||
visible; no unsupported operation is inferred from its request shape alone.
|
||||
|
||||
The **71-member executable/raw/source/control archive** was read back and
|
||||
hash-verified, SHA-256
|
||||
`677d75b737faa780761f80f302738623bc479d7347f01aa746219927c6128113`.
|
||||
It retains the complete original inputs/raw values/bits, old/new rows,
|
||||
full-precision observations/disagreements, decoder/state proof and source
|
||||
snapshots. Local path:
|
||||
`~/.local/share/opencode/solidcore-cleanup-evidence/pr1914-outward-trim-noop-20261108-5846b6075/`.
|
||||
|
||||
Pre-edit head: `5846b6075166185d668d64a63471a17575afe272`, refreshed onto main
|
||||
`e78687eb5ef9f7751f591c1964cfc0d4005334b5`. Both published `ceadc86fe` and
|
||||
pre-refresh local `63ab11e08` were preserved locally and on the fork at
|
||||
`refs/archive/20261108-pr1914-before-e78687eb5/{published,local}`. All 23 PR-owned
|
||||
file bytes were preserved by that refresh. At the pre-edit head the actual
|
||||
unit gate measured 187 ordinary differences, all 3,182 cases retained, and
|
||||
fmt, workspace/all-target clippy, wasm, panic inventory and 23 offset tests passed.
|
||||
|
||||
The collector remains attributed to actually measured head
|
||||
`7a90407a0fe189ebceb551e5df28aaf4e8cc9893`, raw SHA-256
|
||||
`735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`.
|
||||
Numerical source SHA-256 remains
|
||||
`86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`.
|
||||
New main includes shared surface/revolution changes: the fresh gate is a new
|
||||
execution, not a relabelling of that collector or a claim of fresh raw-stream
|
||||
bit identity across main's changes.
|
||||
|
||||
Every other golden and all 88 known failures remain unchanged. Projected
|
||||
accounting is **169 supported cases / 830 components**, **186 ordinary
|
||||
differences**, all **3,182 cases = 3,094 goldens + 88 known failures**, pending
|
||||
the actual gate. No B-rep, topology, validity, volume or actual trimming result
|
||||
is certified here. Correctness, historical attribution-review and canonical-CI
|
||||
holds remain; no approval request, rerun or readiness is implied.
|
||||
Vendored
+97
@@ -0,0 +1,97 @@
|
||||
# Offset derivatives in five parameter-edit scripts (2026-11-08)
|
||||
|
||||
Continues #1914 with five independently supported replacements / 24 moved
|
||||
components. Production formulas, input scripts, tolerances, floors, the failure
|
||||
registry and #2717's named-grid contract are unchanged. `gen0304` and `gen0672`
|
||||
independently disagree and are not blessed.
|
||||
|
||||
## Independent state and value proof
|
||||
|
||||
For a clamped direct B-spline, reversing one parameter reflects its knots by
|
||||
`lo + hi - t` and reverses that direction's control rows. Swapping u/v transposes
|
||||
the net, knots and degrees. Both reverse the base normal. The inspected receiver
|
||||
API (`surface/offset_surface.rs`) leaves the offset distance unchanged on reverse,
|
||||
but negates it on swap. This is explicitly modelled from the original input net,
|
||||
not from an edited kernel net. Extension is disabled throughout; periodic or
|
||||
unclamped knots, other edits, failed parameter edits, ambiguous interior-knot
|
||||
sides, actual aliases and unsupported derivative orders remain excluded.
|
||||
|
||||
At each changed evaluation, the current mathematical input net and scalar
|
||||
distance are constructed separately at 80/160 decimal digits. The independent
|
||||
Taylor algebra differentiates `S + d (Su x Sv) / |Su x Sv|` through total order
|
||||
three, applying explicit clamping from the current knots first. Every moved raw
|
||||
index must decode as a receiver derivative with its correct final named writer;
|
||||
unchanged statuses and returned/query payloads are decoded, never blessed as
|
||||
derivatives. Original binary64 inputs are converted exactly. The four-term
|
||||
counterfactual selects changed indices only and supplies no expected value.
|
||||
|
||||
All 24 components satisfy the unchanged `1e-9` relative rule; maximum error
|
||||
`1.999548313015847e-12`, maximum relative precision drift
|
||||
`1.1300118342727895e-76`. No new absolute floor is used. The scope is explicit:
|
||||
|
||||
- `gen0686`, `gen0803`: changed jets occur **before** their later swap. Decoding
|
||||
the unchanged suffix permits the complete row, but does not pretend these
|
||||
changed jets exercise post-swap derivatives.
|
||||
- `gen2531`: the changed jet precedes the final reverse, with the same limitation.
|
||||
- `gen0909`: the changed jet follows swap; transposition and the negated distance
|
||||
are both required.
|
||||
- `gen2960`: the changed jet follows reverse in v; the reflected knots/net and
|
||||
unchanged distance are both required.
|
||||
|
||||
## Exact replacement encodings
|
||||
|
||||
Each new row equals the complete retained actual collector encoding. Common
|
||||
fields remain `deferred=null`, `error=null`, `ints={}`, `topology=null`; `out.n`
|
||||
stays 204, 108, 147, 87 and 86 respectively. Only the blocks below change.
|
||||
They are `[sum, abs_sum, weighted_sum]`, not error bounds; errors grade all raw
|
||||
moved components. Input hashes use sorted compact Python JSON, UTF-8.
|
||||
|
||||
| Case | Components / max relative error | Input SHA-256 | Old → new checksum blocks |
|
||||
|---|---|---|---|
|
||||
| `gen0686` | 6 / `1.99955e-12` | `9d08376d9c36e5392c5d09ca19e7a42d951006834726e090c52d2cd7fdb10dd9` | `[[121930.35080477943, 122286.7144167371, 8701121.039546246]]` → `[[121962.3389298341, 122224.82699030975, 8705193.75695359]]` |
|
||||
| `gen0803` | 9 / `2.23887e-15` | `1c9b9b7c8465da58ee4de50b4a92ba6086af384f7d7967df546742c35243d4a8` | `[[30433.220442247508, 30463.821946298885, 503538.46555445157]]` → `[[30433.06458783185, 30463.6612749778, 503524.44087460113]]` |
|
||||
| `gen0909` | 3 / `5.29685e-13` | `4bb845ec023ff9aa5ed7af2f2175f1dc52125b80adbb1a3f9a708a8c9fb7c57a` | `[[76256.28041470288, 76301.39173228155, 4336610.869009565]]` → `[[76255.8695864608, 76301.01981243513, 4336553.392578878]]` |
|
||||
| `gen2531` | 3 / `1.30999e-14` | `be2221978e98e31d856b00abc7753267057b708f92496c105d0271c8ae329689` | `[[45825.10682569999, 45897.16292421347, 1451228.6467945287]]` → `[[45826.31522262935, 45897.31002906505, 1451250.566334015]]` |
|
||||
| `gen2960` | 3 / `4.3237e-14` | `0cad4c75b7b482c04b0a69061ef20d3065743f94ab5eef5696ea3b4903b70865` | `[[30413.486952040126, 30468.854227191732, 1445253.6014927593]]` → `[[30413.479977829935, 30468.838392777052, 1445253.4163972281]]` |
|
||||
|
||||
All five original inputs and every raw binary64 output bit were checked against
|
||||
the retained streams before editing. Every other row and all 86 known failures
|
||||
stay byte-identical. All 3,182 cases remain selected as 3,096 golden rows plus
|
||||
86 known failures.
|
||||
|
||||
## Controls and retained evidence
|
||||
|
||||
All 59 numerical/scope controls pass. The seven new controls cover an asymmetric
|
||||
plane's closed-form values and first partials through swap/double swap, each
|
||||
reverse and compositions; nonuniform interior-knot reflection on a piecewise
|
||||
linear plane; wrong-value/changed-status rejection; failed edits and allowed
|
||||
extension rejection; the previous copy decoder staying strict by default; and
|
||||
the actual retained `gen0686` with unchanged input followed by a deliberately
|
||||
wrong component. The affine closed-form controls compute the parameter map and
|
||||
constant cross product, not a transformed control net or Taylor jet.
|
||||
|
||||
The earlier decoder gains an explicitly opt-in parameter-edit trace only; its
|
||||
default still rejects swap/reverse, so previously archived proofs do not silently
|
||||
acquire unsupported geometry mutations. No production affordance is introduced.
|
||||
No B-rep, validity, volume or global regularity claim follows from these jets.
|
||||
|
||||
The raw collector was actually measured at
|
||||
`7a90407a0fe189ebceb551e5df28aaf4e8cc9893`, raw-stream SHA-256
|
||||
`735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`.
|
||||
At pre-edit head `ece73364cc38f4aa9230978e62af78132b0c846a`, numerical source
|
||||
SHA-256 remains
|
||||
`86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`.
|
||||
These measurements are not relabelled as a newer collector run.
|
||||
|
||||
The 40-member executable/raw/control archive was read back and hash-verified,
|
||||
SHA-256 `9887e283e19139ec82596e30a378753dc2c6b55fb6930dce9157d2243b5bab2d`.
|
||||
It retains complete original inputs/raw values/bits, full-precision observations
|
||||
and disagreements, all controls, exact old/new encodings and the previous
|
||||
strict helper source. Local path:
|
||||
`~/.local/share/opencode/solidcore-cleanup-evidence/pr1914-parameter-edits-input-oracle-20261108-ece73364c/`.
|
||||
|
||||
Projected accounting is 157 supported replacements / 771 moved components and
|
||||
200 remaining ordinary differences, pending the actual gate. Parent canonical
|
||||
run 42470822199 stopped at `action_required` with zero jobs, not success. The
|
||||
correctness and attribution-review holds remain; no workflow approval, rerun,
|
||||
review resolution or readiness is implied.
|
||||
+429
@@ -0,0 +1,429 @@
|
||||
# surface.offset_surface: published migration evidence before the 78d1eb12d refresh (2026-11-08)
|
||||
|
||||
This record preserves **verbatim** the complete body published for #1914 at
|
||||
`ceadc86fedb8d337812b4882175f4fbb0fd0b79c`, including its per-case tables,
|
||||
old/new values, input identities, proof boundaries, archive hashes and measured
|
||||
revisions. SHA-256 of the exact body below (UTF-8, before this wrapper):
|
||||
`5c776c9f037551acaab9abc3df3c033e0f57046dd41366bd330aa130362f1e41`.
|
||||
|
||||
The published body was read back and checked before this archival copy was made.
|
||||
Its historical heads, counts and pending-state statements are retained, not
|
||||
updated to describe this record's commit or a later execution. This is an evidence
|
||||
archive, **not a current readiness or CI claim**. The current PR description names
|
||||
the latest measured head and links the subsequent complete `gen1320`/`gen1851`
|
||||
proofs separately. No numerical code, expectation, input or case selection is
|
||||
changed by copying the text.
|
||||
|
||||
## Verbatim published body
|
||||
Units: `surface.offset_surface`, WR-160/WR-161. **Draft: 188 ordinary golden differences remain unresolved.**
|
||||
|
||||
This continues [the goldens migration instruction](https://github.com/tangency-labs/solidcore/pull/1914#issuecomment-6684465108), not the retired C++ gate. Head `ceadc86fedb8d337812b4882175f4fbb0fd0b79c`, linearly based on main `3ef79991375bfb6f5cdde7c80584d76589808498`. Both published and local `8e07893cff99db33d90e3ed10d6551a87587f032` are preserved locally and on the fork at `refs/archive/20261108-pr1914-before-3ef799913/{published,local}`; every one of the 17 PR-owned file bytes was preserved during refresh. Incoming ops/profile edits are disjoint. Earlier preservation refs and measured evidence remain intact. Earlier data-only commits replaced seven supported rows and move two proven wrong rows to #2717 failures, without implementation changes.
|
||||
|
||||
## Approved numerical scope, unchanged
|
||||
|
||||
|
||||
The production correction still changes exactly four terms, unconditionally:
|
||||
|
||||
1. `Cuuv`: coefficient `+1`, not `3`, for `Buuv × Buv`.
|
||||
2. `Cuvv`: coefficient `-1`, not `3`, for `Buvv × Buv`.
|
||||
3. `Duvv` adds `Buvv`, not `Buuv`.
|
||||
4. `Dvvv` adds `Bvvv`, not `Buuv`.
|
||||
|
||||
The default-kernel closed-form regression is retained, as are the unchanged-partial controls, WR-164 and extension tests. Numerical file SHA-256 is `86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`, unchanged throughout the migration. No new compatibility flag, tolerance, floor, fixture, generator, input guard or harness rule is introduced. Retired `known_mismatches` entries are not restored.
|
||||
|
||||
The #2717 requested-grid implementation remains separate. Its closed handoff #2970 and the later refusal-versus-mask design question are not silently absorbed here. Recording a demonstrated named-slot failure does not choose that design.
|
||||
|
||||
|
||||
## Current bounded dispositions
|
||||
|
||||
- **167 supported golden replacements / 815 moved components**: the original 45 (199 components), 13 pass-through-wrapper cases (54), 26 non-aliasing-grid scripts (162), four nested-zero-identity cases (17), eight locally regular nested cases (36), twenty copy/setter scripts (89), eighteen clamped-boundary scripts (102), thirteen canonical-revolution scripts (62), five returned-base/inversion-query scripts (26), five parameter-edit scripts (24), seven complete/prefix-supported scripts (29), two enabled-but-unused extension prefixes (12), and one explicit-side-clamp script (3), independently checked from original inputs.
|
||||
- **88 demonstrated wrong cases** are individually listed against #2717, without wrong golden lines: the original 79 exact-input/exact-bit attributions plus six additional direct-input proofs below, the canonical-revolution prefix `gen1603`, and the two query-prefix proofs `gen0757`/`gen2243`. These cases continue to execute; harness failures and panics are not waived.
|
||||
- **All 3,182 cases remain selected**: 3,094 golden rows and 88 known failures, with disjoint identities. Every unrelated expectation and every previously listed failure is unchanged.
|
||||
- **188 ordinary changed cases remain red**. This update replaces only the independently supported complete `gen1332` row; every other expected row and all 88 known-failure entries are unchanged. No numerical source, fixture, runner, tolerance, floor or requested-grid contract changes.
|
||||
|
||||
## Why the original 45 moved results are supported
|
||||
|
||||
|
||||
The independent probe starts from the input homogeneous B-spline net, not derivatives supplied by the kernel. It evaluates Cox–de Boor basis polynomials as Taylor series, divides the homogeneous series, differentiates the base series, and forms `O = B + d (Bu × Bv) / |Bu × Bv|` through order three. The inverse square root is expanded by its binomial series. Input binary64 numbers are converted exactly with `Decimal.from_float`.
|
||||
|
||||
The calculation is repeated at 80 and 160 decimal digits. Each of the 199 moved components agrees with the independent result under the unchanged `1e-9` relative rule, without an absolute floor; precision agreement at `1e-50` is an additional numerical stability check, not a production tolerance. Accepted evaluations use original-domain parameters, regular tangents and the original base, not clamping, extension, pole extrapolation, substituted normals or aliased slots. A separate audit found no successful unchanged aliased request in these 45 scripts.
|
||||
|
||||
Five controls pass: basis partition/derivative sums, the API's interior-knot side convention, a parabolic graph's closed-form offset derivatives, a rational plane's fractional-linear parametrization, and rejection of a degenerate normal. These are numerical checks at the requested parameters, not a whole-domain approximation certificate or proof of unrelated unchanged operations. The moved outputs are third derivatives, not newly built B-reps; there is no changed topology or volume result being accepted here.
|
||||
|
||||
The definition follows [Shape Interrogation §11.3.1](https://web.mit.edu/hyperbook/Patrikalakis-Maekawa-Cho/node224.html) (`B + dN`) and [§3.1](https://web.mit.edu/hyperbook/Patrikalakis-Maekawa-Cho/node27.html) (the normal from parametric tangents). The probe uses independent Taylor-series arithmetic rather than the production third-order recurrence.
|
||||
|
||||
<details>
|
||||
<summary>Each deliberately changed golden: old/new stored values and independent relative error</summary>
|
||||
|
||||
`blocks` are the existing golden encoding's `[sum, abs_sum, weighted_sum]`; `n` is unchanged. The error column grades the raw moved components, not those checksum blocks.
|
||||
|
||||
| Case | Old stored block(s) | New stored block(s) | Largest independent relative error |
|
||||
|---|---|---|---|
|
||||
| `api_offset_m12_state_evals` | `{"blocks":[[18555.43255227718,93499.06290384065,-843552.9123418084]],"n":247}` | `{"blocks":[[19461.556148815078,93729.6399627025,-657550.8157014829]],"n":247}` | `7.6827e-13` |
|
||||
| `gen0000` | `{"blocks":[[15.578470146825442,66.19398803014818,149.0970835084266]],"n":31}` | `{"blocks":[[15.934947456660122,65.44373059469201,157.64058882512336]],"n":31}` | `2.4657e-15` |
|
||||
| `gen0007` | `{"blocks":[[-66837181420.41156,135130570084.05176,-5960704060979.212]],"n":152}` | `{"blocks":[[-66859213497.91429,135177776516.49692,-5962348872759.839]],"n":152}` | `5.9725e-14` |
|
||||
| `gen0068` | `{"blocks":[[15.319010631468199,23.388114014721587,351.8112104461945]],"n":38}` | `{"blocks":[[15.355483099501537,23.32098921480353,352.8991097478107]],"n":38}` | `9.1962e-15` |
|
||||
| `gen0196` | `{"blocks":[[12.565184277392516,20.946060283902344,154.70633404669488]],"n":25}` | `{"blocks":[[12.576610099938545,20.823068612513566,154.88348912442416]],"n":25}` | `5.6728e-15` |
|
||||
| `gen0203` | `{"blocks":[[61738.3549758855,61958.941867929476,4525927.325586328]],"n":168}` | `{"blocks":[[61723.3828120861,61945.84157921354,4524769.84162097]],"n":168}` | `1.4921e-13` |
|
||||
| `gen0241` | `{"blocks":[[30402.471835876284,30530.224793782254,502734.7743859657]],"n":127}` | `{"blocks":[[30402.18860733752,30530.466737296207,502701.62180807826]],"n":127}` | `4.0998e-13` |
|
||||
| `gen0255` | `{"blocks":[[30387.87660331008,30487.36593020654,501929.7715273392]],"n":93}` | `{"blocks":[[30387.892616568915,30487.379012093024,501931.26253273303]],"n":93}` | `2.1702e-14` |
|
||||
| `gen0430` | `{"blocks":[[-27436.54375901606,167436.2705040306,-3197648.2647903794]],"n":128}` | `{"blocks":[[-27218.29986474127,167654.5143983054,-3181901.7985980776]],"n":128}` | `2.5459e-15` |
|
||||
| `gen0453` | `{"blocks":[[30412.39559535699,30449.645002398775,1080775.5492491084]],"n":74}` | `{"blocks":[[30412.369114628094,30449.685228169474,1080775.0746664007]],"n":74}` | `6.8215e-14` |
|
||||
| `gen0458` | `{"blocks":[[-224.78955409790183,1563.1038922851922,-2999.309792598596]],"n":32}` | `{"blocks":[[-138.86128799414814,1604.836296732452,-1000.5016409527848]],"n":32}` | `9.2360e-15` |
|
||||
| `gen0506` | `{"blocks":[[31427.5453740134,31486.672659007047,562961.3295158537]],"n":77}` | `{"blocks":[[31427.527719028058,31486.6359684364,562959.9732961301]],"n":77}` | `1.2421e-12` |
|
||||
| `gen0587` | `{"blocks":[[-19521938014.22505,98857485394.04991,870182291661.0085]],"n":72}` | `{"blocks":[[-7555521493.592014,86891068873.41685,1031988872414.2708]],"n":72}` | `4.4463e-15` |
|
||||
| `gen0659` | `{"blocks":[[62883.466662419545,63105.28156632557,3921651.0161867053]],"n":147}` | `{"blocks":[[62871.85752263127,63101.502957452874,3920579.0618740157]],"n":147}` | `3.2199e-15` |
|
||||
| `gen0660` | `{"blocks":[[35271.972121450366,36061.61966549416,827725.0473255506]],"n":68}` | `{"blocks":[[40718.075740712775,41507.72328475657,1201562.0899414327]],"n":68}` | `2.4452e-13` |
|
||||
| `gen0716` | `{"blocks":[[990.8128971350529,1017.7459271366557,52788.08308444568]],"n":53}` | `{"blocks":[[990.8113538623086,1017.4578477405812,52788.04512916689]],"n":53}` | `2.3141e-13` |
|
||||
| `gen0741` | `{"blocks":[[-816281.9636894614,4894071.395232069,-73501434.61234763]],"n":96}` | `{"blocks":[[-1004897.0756162175,5095644.327690265,-87266893.29733452]],"n":96}` | `1.7766e-15` |
|
||||
| `gen0745` | `{"blocks":[[76913.34859873245,77048.86242362625,6728234.54079606]],"n":174}` | `{"blocks":[[76912.39803074404,77048.71396391184,6728127.085842954]],"n":174}` | `3.5550e-15` |
|
||||
| `gen0794` | `{"blocks":[[61913.290765653765,61952.418624409256,3731820.215717172]],"n":142}` | `{"blocks":[[61913.507091023246,61951.88874275767,3731835.342500676]],"n":142}` | `4.3821e-15` |
|
||||
| `gen0951` | `{"blocks":[[30390.801227006006,30473.045662677512,501425.9333438466]],"n":72}` | `{"blocks":[[30389.696414887367,30471.823367723846,501352.73130386946]],"n":72}` | `2.9624e-14` |
|
||||
| `gen0959` | `{"blocks":[[30387.499252799174,30491.494320710906,501817.54335713683]],"n":94}` | `{"blocks":[[30387.61201196988,30491.694589446834,501825.6425615884]],"n":94}` | `8.9063e-16` |
|
||||
| `gen0974` | `{"blocks":[[30407.00600431937,30461.501816059466,2205598.372543032]],"n":111}` | `{"blocks":[[30409.68831855572,30455.699700325687,2205638.436354326]],"n":111}` | `6.9307e-15` |
|
||||
| `gen0985` | `{"blocks":[[-42.88321000418377,182.95455225825478,-1588.8293711760505]],"n":57}` | `{"blocks":[[-42.936953620743395,181.87538135998145,-1702.8033865412876]],"n":57}` | `8.6160e-15` |
|
||||
| `gen1080` | `{"blocks":[[-18.454362512987302,5184.662452726535,687.3743878188707]],"n":27}` | `{"blocks":[[-18.45932901752286,5184.658938565483,687.3046015064483]],"n":27}` | `8.3005e-15` |
|
||||
| `gen1188` | `{"blocks":[[881.5993752030242,1166.245851897853,-437.41215602270063]],"n":21}` | `{"blocks":[[877.2882770184451,1170.556950082432,-517.8514701984736]],"n":21}` | `5.9405e-15` |
|
||||
| `gen1312` | `{"blocks":[[10.551665165939022,20.707273125398622,281.8292866098144]],"n":57}` | `{"blocks":[[11.372277661270065,20.54382823730145,302.4067750275329]],"n":57}` | `5.3235e-14` |
|
||||
| `gen1416` | `{"blocks":[[78186.23114002944,78277.09957161486,4666439.935435823]],"n":131}` | `{"blocks":[[78186.02901103486,78278.70326175417,4666428.1500635985]],"n":131}` | `6.6129e-15` |
|
||||
| `gen1423` | `{"blocks":[[106602.2990378796,106761.4768768358,8817730.82046103]],"n":183}` | `{"blocks":[[106602.78161245614,106761.7782564493,8817766.083273219]],"n":183}` | `1.2042e-14` |
|
||||
| `gen1425` | `{"blocks":[[45390.45442824365,45460.2762228435,1968263.0034797394]],"n":83}` | `{"blocks":[[45390.903056125324,45459.827594961826,1968273.4955305809]],"n":83}` | `4.1320e-15` |
|
||||
| `gen1540` | `{"blocks":[[30409.747976543957,30457.8435500296,502957.1232589204]],"n":84}` | `{"blocks":[[30407.19873457563,30454.111781707572,502766.6501428983]],"n":84}` | `3.0296e-14` |
|
||||
| `gen1846` | `{"blocks":[[37874.79106367064,207276.11661343987,2316642.6551924506]],"n":141}` | `{"blocks":[[44235.750161099335,198222.83573974654,2431494.133546644]],"n":141}` | `9.2354e-14` |
|
||||
| `gen1977` | `{"blocks":[[-2700462544.6541142,7650063175.587434,-278518087968.6768]],"n":106}` | `{"blocks":[[-2700462537.8681984,7650063125.205684,-278518087801.72485]],"n":106}` | `4.6555e-15` |
|
||||
| `gen1979` | `{"blocks":[[45325.117151139006,45552.87716336386,2056746.2924211316]],"n":85}` | `{"blocks":[[45325.68512792134,45552.36068518827,2056753.967175954]],"n":85}` | `3.8490e-14` |
|
||||
| `gen1998` | `{"blocks":[[10.401723128094405,26.01682301344319,10.440498386317746]],"n":52}` | `{"blocks":[[10.402186832562927,26.017778473254932,10.45411085670047]],"n":52}` | `1.7111e-13` |
|
||||
| `gen2053` | `{"blocks":[[30466.356560189328,30474.530022372986,1265413.215443816]],"n":80}` | `{"blocks":[[30466.758255769062,30476.0661078709,1265420.614011899]],"n":80}` | `2.2881e-14` |
|
||||
| `gen2324` | `{"blocks":[[60941.0770320113,61032.02632995147,3628110.931002712]],"n":141}` | `{"blocks":[[60941.08232995051,61032.04490793993,3628111.295936332]],"n":141}` | `9.3548e-14` |
|
||||
| `gen2456` | `{"blocks":[[-43089878.01306949,272907235.8543918,-2929882439.745673]],"n":83}` | `{"blocks":[[-43044050.63786446,272735952.65986407,-2926549280.2746844]],"n":83}` | `2.2169e-14` |
|
||||
| `gen2559` | `{"blocks":[[30419.616265478202,30468.86518848086,503458.000436155]],"n":72}` | `{"blocks":[[30419.17866536324,30468.068270721495,503427.94034354197]],"n":72}` | `6.4831e-15` |
|
||||
| `gen2601` | `{"blocks":[[-16.876927756008865,22.344934551546142,-315.8855434005137]],"n":27}` | `{"blocks":[[-150.71510034840648,156.18190139886246,-3821.2927119357746]],"n":27}` | `6.5487e-15` |
|
||||
| `gen2689` | `{"blocks":[[30452.303990406777,30478.42259376221,504989.6296579127]],"n":81}` | `{"blocks":[[30451.45941941629,30479.065646945714,504921.7154439036]],"n":81}` | `1.7721e-14` |
|
||||
| `gen2761` | `{"blocks":[[34813.03608906995,62397.60277708933,-154463.55221105885]],"n":89}` | `{"blocks":[[40771.3320560674,68355.89874408676,303580.79629800393]],"n":89}` | `2.9374e-15` |
|
||||
| `gen2839` | `{"blocks":[[30426.957276829016,30485.566248671214,1659541.598744629]],"n":93}` | `{"blocks":[[30426.898283505136,30484.909052469564,1659539.8893148112]],"n":93}` | `3.8787e-11` |
|
||||
| `gen2864` | `{"blocks":[[88822500892.20778,107434832376.38777,10139325312740.799]],"n":211}` | `{"blocks":[[90106326379.56178,110220510077.56047,10253259242225.396]],"n":211}` | `5.6758e-14` |
|
||||
| `gen2882` | `{"blocks":[[30414.18457633274,30474.510353873786,1080548.0221309138]],"n":74}` | `{"blocks":[[30414.174598576585,30474.548960054533,1080547.793490986]],"n":74}` | `1.6741e-14` |
|
||||
| `third_derivative_outputs` | `{"blocks":[[57.238638693897954,112.81064583069951,4249.98436408646]],"n":146}` | `{"blocks":[[72.7128982159763,128.5625491631388,5686.325692315696]],"n":146}` | `2.6218e-12` |
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>The original 79 wrong cases: input identity and measured wrong named slot</summary>
|
||||
|
||||
The same inputs and exact binary64 values occur in the retained per-case attribution record. That record also gives the full steps and write histories. No claim is made that unrelated components in these scripts are all wrong or all right.
|
||||
|
||||
| Case | Input SHA-256 | Step / named → actual partial / output index | Measured value (bits) |
|
||||
|---|---|---|---|
|
||||
| `gen0086` | `4df48003f9f2bfde020811f4f9335a2658eb71f298930384a4cb5159c0e6d8ea` | `1: D(3,0) → D(1,2); out[30]` | `-11.550457408491006` (`c02719d58dae9e9c`) |
|
||||
| `gen0111` | `4a60121f505fa13cef71003ef92dd5fab0c703839db47e367d6e3165c4fe3e8a` | `2: D(2,0) → D(1,2); out[178]` | `0.0012087372430256635` (`3f53cdcfbb687ce0`) |
|
||||
| `gen0112` | `84cd0e109cba4a1e64787903c2a34be6933bb45ba1216427ccdd8c990790ce1e` | `0: D(2,0) → D(1,2); out[14]` | `124.91549873680505` (`405f3a97880386d9`) |
|
||||
| `gen0124` | `d96b72dd177493230f3918d1748a97309951e5f6635cedfde8981cd06340ea7e` | `1: D(3,0) → D(1,2); out[18]` | `0.3176445149410608` (`3fd45449a8db3dad`) |
|
||||
| `gen0166` | `4de065ccdf78222f7ffd35943b12fb4af04810684dcf834b3b4dfb78acaee4c7` | `2: D(3,0) → D(1,2); out[16]` | `-2636845626.9779134` (`c1e3a562475f4b11`) |
|
||||
| `gen0201` | `983d07f41935094158ebfc8caca0b26bad95163d2da2d31ab1f19ebbfcb1b2c4` | `0: D(2,0) → D(1,2); out[14]` | `12576.920008190044` (`40c89075c2d41025`) |
|
||||
| `gen0256` | `bf864366a1506c158adafc754548fa2a74beef0ebbcdf60fbd6ae603477a5b5a` | `1: D(3,0) → D(1,2); out[65]` | `13.795431244846744` (`402b9742c39daaab`) |
|
||||
| `gen0411` | `31e9dfd22bcd2b77017977ec3b87d1fa59f6ba955920f59af994547b2cb45af1` | `3: D(3,0) → D(1,2); out[86]` | `-0.007866018108114324` (`bf801c0f1431589f`) |
|
||||
| `gen0414` | `2dd0449248615a45f4791f2fc3c0c166a86ab58d616e601993c19ce687cb9502` | `4: D(2,0) → D(1,2); out[133]` | `-9.100532018925273` (`c0223378eecaf845`) |
|
||||
| `gen0460` | `8fcb022acbe0aac5fe6ffbb3dde41ef49fb68938a5067d973954e8d64b96d9c9` | `2: D(3,0) → D(1,2); out[66]` | `0.048548910288894395` (`3fa8db671be4fc8e`) |
|
||||
| `gen0495` | `f088ad03f45397c07eb445b4f56918b3a9cabbb1e72fd2c07a4ea338bbba5c2b` | `3: D(3,0) → D(1,2); out[127]` | `4.180980285512458` (`4010b952e55dfcac`) |
|
||||
| `gen0500` | `e345d54c1e6e72d986b32da83a6d5f8b2695d2022d09c1daae0810900abc5f02` | `1: D(2,0) → D(1,2); out[68]` | `-2.218763810011797` (`c001c0073d8c6467`) |
|
||||
| `gen0550` | `b7ac007f31e43c76b6486748de3735558a3fcd6110391dc27312d53deb4227c5` | `5: D(2,0) → D(1,2); out[96]` | `-4.772093172003938` (`c013169f97ace324`) |
|
||||
| `gen0551` | `45f2b1c88c7a9dcac65d0f2b49d40f552723e10e4b2507da859ceb7355293e66` | `0: D(3,0) → D(1,2); out[11]` | `-0.0001900259283527403` (`bf28e8364b9b0448`) |
|
||||
| `gen0554` | `312160ad42b1b5d983397a487db4b97ffadadf5a345a69bd2e685da4c7e5a0ba` | `1: D(3,0) → D(1,2); out[24]` | `-1.3575472366319557e-62` (`b31656a80b3da5a9`) |
|
||||
| `gen0565` | `48acced4a5bc728e3559b502c6eaca17c65a6ed47d02cff39422e40ccc692e48` | `0: D(2,0) → D(1,2); out[14]` | `-0.014705512576740604` (`bf8e1dec7cb44290`) |
|
||||
| `gen0615` | `eca9bbf3d85f8e5d2cc018e2452738e1b8511ffb9032fc1550adbfbe43d78b8f` | `2: D(3,0) → D(1,2); out[43]` | `-0.0017960939312878011` (`bf5d6d5d2c81d89a`) |
|
||||
| `gen0640` | `e1442331b4ba3ca9ef116df39932839f80cbebfe8ff7e964f1a640ec14581d99` | `2: D(2,0) → D(1,2); out[123]` | `9.988881846404788e-31` (`39b4428623c24221`) |
|
||||
| `gen0641` | `a5d1eca059347dbc383305efbcc9c3674d24200ff8a467e8cf41037a216d41c0` | `2: D(2,0) → D(1,2); out[123]` | `-16.703056407748573` (`c030b3fb813685fb`) |
|
||||
| `gen0761` | `e012c720f0c16da34056943e47e6f044dfb49bfaeb7dd806119190b839738fe4` | `2: D(3,0) → D(1,2); out[46]` | `-16.42245763261416` (`c0306c262ef405fe`) |
|
||||
| `gen0785` | `38f12468d5809e36112f37d6768a2e25703b84672b49683ac3097fdd1cff895f` | `1: D(3,0) → D(1,2); out[65]` | `-0.007167672776218397` (`bf7d5bd98298bad2`) |
|
||||
| `gen0837` | `10a5333437bdbf27f94340d09ad9824813cac9c1fa760e8d0fbd36d7a497fa44` | `2: D(3,0) → D(1,2); out[25]` | `-187.0087335080898` (`c06760478b7e7400`) |
|
||||
| `gen0863` | `fa41005408047a3e0681b0ea0f071e1cf700ed1f39b944a866bd57e5a209ce17` | `0: D(3,0) → D(1,2); out[11]` | `3.706065473084212e-61` (`33630ead97ff7122`) |
|
||||
| `gen0869` | `796f377b44849d99840cbf312ccce4acb3749b64d211d657f1b8dd884c794f93` | `2: D(3,0) → D(1,2); out[25]` | `61.32131957593377` (`404ea920fff7199e`) |
|
||||
| `gen0896` | `0fc6f501d9afb3a9851f62a3cdc4b95ff033ccc9c4584f0d9035722bc348568c` | `0: D(3,0) → D(1,2); out[11]` | `-0.06023639161848329` (`bfaed74de80f9514`) |
|
||||
| `gen0942` | `36d9cef24efa4f0deab6774a647668379cbea77c09e136b80810097207b202d5` | `2: D(2,0) → D(1,2); out[75]` | `-5.527640947576007` (`c0161c4de8977a44`) |
|
||||
| `gen0978` | `16da8e112063fa0637834b48ae14299553b5128f98d2565f972de3d42db39ec0` | `1: D(3,0) → D(1,2); out[65]` | `-5.043807100029481` (`c0142cdbc4b7d63e`) |
|
||||
| `gen1010` | `ce0f6b44df5d55637efd2d4048caa97891e58a943a2b83e5b74fa9b1a5bfa399` | `3: D(2,0) → D(1,2); out[91]` | `-1.0154000817065179` (`bff03f1427f49045`) |
|
||||
| `gen1033` | `4722dc0af92f48eb601d4065533ef921a4d367f880829db06ad0facaf199df82` | `3: D(2,0) → D(1,2); out[77]` | `1.4370933558807315` (`3ff6fe559a4ce7f6`) |
|
||||
| `gen1058` | `d38499e54878f56a7a75253482399df0b938527e96bb825a87ce1db0165321ea` | `4: D(3,0) → D(1,2); out[88]` | `-3.3635704624734384` (`c00ae897a170eb8c`) |
|
||||
| `gen1114` | `b3e5c8c3885ce9b3414b4f37d49911df82a862171a91162a023d5c95f9afab08` | `1: D(3,0) → D(1,2); out[30]` | `1.385161992635685` (`3ff6299f9f2084f5`) |
|
||||
| `gen1119` | `617d1dec1c4266f77ddec40b5212915998fa4fcb9fcb3024e28e6344bdf00db1` | `2: D(3,0) → D(1,2); out[78]` | `-7.8701147674852e-62` (`b34030195f3a004f`) |
|
||||
| `gen1121` | `06d247e3af554e7c8bf47b0ecf206a34c2ba491e6316dad25fc5231059ba9278` | `2: D(2,0) → D(1,2); out[72]` | `0.018811935995894622` (`3f93436fa781db29`) |
|
||||
| `gen1167` | `0e3509e71a8f6a2e4d6791dee5fb13c971f9891eadeeac80c59a1b343bd94cd0` | `5: D(3,0) → D(1,2); out[110]` | `2.8324817610385094e-49` (`35da7e7244710fe4`) |
|
||||
| `gen1174` | `3b9182dcc382644559160a3038e9d817c5d11e87ab00fc96dfe547af2ff31752` | `1: D(3,0) → D(1,2); out[65]` | `-363.06551171903754` (`c076b10c56042c56`) |
|
||||
| `gen1265` | `2b7af8a5366ba896f1c6273ccc1ae800bd684fc77246b686ea482894b44fb529` | `1: D(3,0) → D(1,2); out[65]` | `-12.029373775659867` (`c0280f0a145ba36a`) |
|
||||
| `gen1274` | `d6c7a046a1c0c2ad632bcdc22fc7ce65ebe08cac99c4f6488f65eba58a8ceeca` | `0: D(3,0) → D(1,2); out[11]` | `4.7236676238936495e-15` (`3cf546049a9cd7ef`) |
|
||||
| `gen1333` | `0d18b6c9e131ebf8c60fc82f80a89454b6bad5ffd34c55497ffa96b41cd7eb44` | `1: D(3,0) → D(1,2); out[66]` | `-1.2669447513979307e-61` (`b34a0f3e257a30d1`) |
|
||||
| `gen1360` | `04024341fe454e346c6ccf712b3f87ff443bf11522f4fbbef5a8cf72e1eb58f4` | `2: D(2,0) → D(1,2); out[28]` | `0.28564080963923255` (`3fd247f063f36bfa`) |
|
||||
| `gen1363` | `59bdccb9b96cfaf526f3814c7e5d423437311a542123a60300aba7bd580f5cfc` | `3: D(2,0) → D(1,2); out[84]` | `1.6861537843785388` (`3ffafa7c63feeb5b`) |
|
||||
| `gen1385` | `51ad69032231b109b9a636976ce1b0aa317c7a4a5d088231b7204bd4aef6172c` | `2: D(2,0) → D(1,2); out[178]` | `2.723573936592168e-16` (`3cb3a01b6d5b89e5`) |
|
||||
| `gen1397` | `5e57004c087e0284e4252408eacd4c0e09785032b7f2cde9d64034ee13c5a5de` | `4: D(3,0) → D(1,2); out[53]` | `-6624.1238307257145` (`c0b9e01fb35ed52f`) |
|
||||
| `gen1403` | `4cdd724c1a07e992b7fc3724b27f4648ec1c61ff7368c05943e990af293edb32` | `0: D(2,0) → D(1,2); out[14]` | `10.963845484493934` (`4025ed7d27c498f2`) |
|
||||
| `gen1410` | `0acc03a618636cf0999f7eb0ac2fdc321dab2a07b89e2d66771cbbe4a338147d` | `2: D(3,0) → D(1,2); out[69]` | `-112.65878708190243` (`c05c2a29914af316`) |
|
||||
| `gen1444` | `16438a58bf75fc376839ef8127fe695aee460bf162ec8c3055a27ee18558aadd` | `1: D(3,0) → D(1,2); out[65]` | `-1.6600208929734075` (`bffa8f72115ff5c4`) |
|
||||
| `gen1468` | `3e7bdb6166f8886ec12659de5aca88e076b3d0347cc311e191908d3efaeca052` | `1: D(3,0) → D(1,2); out[15]` | `-3.6321747802892665` (`c00d0eb1a6b5964b`) |
|
||||
| `gen1562` | `08be9103f5de9cfe44d1a8814eb462af6c109c8f1e25e0636c1ca3ac323ad5f8` | `1: D(3,0) → D(1,2); out[65]` | `0.170640939665158` (`3fc5d78ff39c3b67`) |
|
||||
| `gen1584` | `f0555bd1ca9c40e83db2b164de028058aee1fc21b85306a9abbd258822e72b5e` | `4: D(2,0) → D(1,2); out[30]` | `-0.00017810217346443734` (`bf27581e05500a18`) |
|
||||
| `gen1635` | `fd4d0c455a4adb4b5d65b10ec5508ddbbd11c074120ea70a28c15f44535b2c5b` | `2: D(2,0) → D(1,2); out[87]` | `0.1420179483388816` (`3fc22da4e5c7beec`) |
|
||||
| `gen1694` | `de56df3e5bac341fe3b9838a032f761ef376193b9d20be9eed03ffc44a8014d4` | `2: D(3,0) → D(1,2); out[72]` | `4.6878380047132` (`4012c0589b1cc1a0`) |
|
||||
| `gen1726` | `b07ade2fd5772ad144f48bb473bcfa0532b4f8354f627226805ee70eece3b50f` | `4: D(2,0) → D(1,2); out[92]` | `25.13261791980742` (`403921f33f7c6fb9`) |
|
||||
| `gen1733` | `cf69421a4f14344373f0b1a9eef4d71ed3f9a555dcc692bd2e53d9682f09f16d` | `0: D(3,0) → D(1,2); out[11]` | `-1517.7895841236127` (`c097b72888bd916e`) |
|
||||
| `gen1817` | `421a285c12439f54205809851c12be6ea1c72c87d0f939e76825aa0be161be55` | `2: D(3,0) → D(1,2); out[28]` | `-3.964099328069551` (`c00fb679b5613c00`) |
|
||||
| `gen1818` | `87b2472e08b22d1e3cd1f6f04be26dd973f3c90e64d38fb81398db4bb4acd780` | `5: D(3,0) → D(1,2); out[161]` | `3.8359748011239256` (`400eb0138e78dbe2`) |
|
||||
| `gen1890` | `65940b8bb3ac18059642ac1b0a4e74e38b995755569c1ead500b0df5c30fa04b` | `2: D(2,0) → D(1,2); out[22]` | `-0.020092287442253165` (`bf94931295dd8010`) |
|
||||
| `gen1955` | `b3753c19abdcea573690a0c0afb9a80fdd426efb53d2f2226517069f5c65b892` | `0: D(2,0) → D(1,2); out[14]` | `-0.0008010517976805854` (`bf4a3fb5a3001601`) |
|
||||
| `gen2010` | `57485178d00a8aba7d86b94a241293f605b310f124721af6f835746bb7458b6f` | `2: D(3,0) → D(1,2); out[16]` | `0.0829277684224362` (`3fb53ac1154dfbe7`) |
|
||||
| `gen2015` | `c0341011ca827b61238beee0970d9e29a65df70fad3bcfbf0ab187d3dfc364b2` | `3: D(3,0) → D(1,2); out[89]` | `-7077.814319493817` (`c0bba5d0773e0a70`) |
|
||||
| `gen2072` | `f875d773bc6b17f8cfbe81b83ed65c45d852976da357b7910918ad6dbe254c78` | `0: D(2,0) → D(1,2); out[14]` | `-2.221733576587689` (`c001c61c40def432`) |
|
||||
| `gen2140` | `232ef35dbcf0b86eda524a2cdd55fa085fac4753eeb0c2a10a1c180b7a7f3173` | `1: D(3,0) → D(1,2); out[65]` | `88.8629248266755` (`4056373a290d5e93`) |
|
||||
| `gen2168` | `afb2eec5a8dd7532f6991b3c0cfcf9a6f951632e86421b4e99cdc2df562e15f4` | `3: D(3,0) → D(1,2); out[103]` | `-2.5242259216476555` (`c004319d5c298980`) |
|
||||
| `gen2170` | `36a3a3696a26fd0de7dab2cc4ad37a2b54103ef55b38561c40928af51505b419` | `1: D(3,0) → D(1,2); out[65]` | `0.05352221334192478` (`3fab674377d38214`) |
|
||||
| `gen2213` | `24a3e82b7a1765408660b43f8f6a214d4874a1b08aefbff8d9a55fa4ae3e2a74` | `4: D(3,0) → D(1,2); out[87]` | `1.2357925070404463` (`3ff3c5ce5d2616cd`) |
|
||||
| `gen2240` | `96f22e7292b010a633ba86af052349791b952b6e8dd93f803ad8bd5afdc06f1e` | `1: D(3,0) → D(1,2); out[66]` | `8.273897014998465` (`40208c3c3ac3c7e6`) |
|
||||
| `gen2257` | `56ed11060d9c321ce1960d526bf0977ff3513ddc8565b69c1cbcdec0fd7fa26d` | `3: D(3,0) → D(1,2); out[70]` | `338.8860886295512` (`40752e2d6b45547a`) |
|
||||
| `gen2381` | `55808d3df06a378a122913c6cc44e393ca31b2313f307afc21512cb62c8b4558` | `1: D(2,0) → D(1,2); out[68]` | `1.0332500264348623` (`3ff088312e020fd9`) |
|
||||
| `gen2485` | `78e8538a0f6a94e60e596bda269074b20f1a7f79ac4af1197f378297fabf1eee` | `2: D(2,0) → D(1,2); out[32]` | `-6.103627421827888` (`c0186a1d4e8ee0d8`) |
|
||||
| `gen2495` | `c6b0babbc92576c1fd6505a82bcd8f0c00415e31bc8dd8fe51edc50bd739e233` | `5: D(3,0) → D(1,2); out[108]` | `1.330571572345724` (`3ff54a056ac3651a`) |
|
||||
| `gen2543` | `0527ab43d71daf6f485ac50d21049d050219b5ba6c4ffe955906035be9566559` | `1: D(3,0) → D(1,2); out[65]` | `0.0004971143592971405` (`3f404a18f530d900`) |
|
||||
| `gen2598` | `fbb78af412bd1dd6674cb0d16ba674e130d0b50325bf9a7014d45b9ce826148c` | `2: D(3,0) → D(1,2); out[68]` | `0.007050008578397991` (`3f7ce078447de7fe`) |
|
||||
| `gen2607` | `c78c8961c979fa6ab66e109dd2085f22c5478406b74a3f61bb850e6cbed2e702` | `3: D(2,0) → D(1,2); out[26]` | `0.012756483904214931` (`3f8a20124971c60c`) |
|
||||
| `gen2685` | `726ac1e2ac3e47db02bafc970c8154fe7b18a7c4f3573a20f44b65bfba92b7f8` | `2: D(3,0) → D(1,2); out[22]` | `0.07517924159771541` (`3fb33ef2600011ba`) |
|
||||
| `gen2754` | `d2692fad797e2e9332fdeb67dfe1e49cc6cfcecfff5880e96450d23ccad51200` | `2: D(2,0) → D(1,2); out[33]` | `7.833067750735332e-05` (`3f1488aecaec72e0`) |
|
||||
| `gen2756` | `10543f07170d25b24c36b0013631177f9e7b38ba6b10e87f293716a594fd1074` | `1: D(3,0) → D(1,2); out[65]` | `-0.003874528919058832` (`bf6fbd79dfd51b22`) |
|
||||
| `gen2824` | `985ce581b423c40787c3931d30ca4970e92a163bcb1b3eec6df2dca9bc0403d8` | `0: D(3,0) → D(1,2); out[11]` | `-117.89829346856504` (`c05d797da3e36ca0`) |
|
||||
| `gen2945` | `4e15a87b83c2b0d9932001045f2157ffb217b707a3add7a9293d807caa2fcda5` | `0: D(2,0) → D(1,2); out[14]` | `0.7670261696640784` (`3fe88b7a773c4485`) |
|
||||
| `gen2949` | `e12bea15388200613bdbfa01f4dc64a76acc7c132ee0cb77fa863452f0068019` | `4: D(2,0) → D(1,2); out[92]` | `0.0450025903849231` (`3fa70a945be086d8`) |
|
||||
| `gen2966` | `278533c3d93d1a3df54e257f7e69ba48f400b848c3c4c17901f76344334f6f5e` | `0: D(3,0) → D(1,2); out[11]` | `-31.153421623031385` (`c03f2746a3b56b46`) |
|
||||
| `upper_half_slot_overwrite` | `47852c7ac57e21e5b803752ca3d7aebe95b956cbed17da6678bbdcfdf785f6de` | `1: D(2,0) → D(1,2); out[26]` | `-0.055925937843527895` (`bfaca25314127938`) |
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
## Thirteen additional input-only supported wrapper cases
|
||||
|
||||
This is a bounded extension of the same independent evaluator, not a kernel change. The harness constructs `CurveBoundedSurface` with empty boundary lists and `StepSurface` with a B-spline base. Source inspection confirms the former forwards its evaluations to the basis (`surface/curve_bounded_surface.rs:313–381`); the latter uses `evaluate_step`, which forwards B-splines with the same parameters (`surface/surface/p1.rs:500–524,1458–1519`). Thus the mathematical surface is the input net in both cases. The independent oracle unwraps only those two forms, then evaluates the input-control-net offset O=S+d(Su×Sv)/|Su×Sv| at 80 and 160 decimal digits. No kernel derivative is an oracle input.
|
||||
|
||||
All **54 moved scalar components** meet the unchanged `1e-9` relative rule with precision stability below `1e-50`; the largest measured relative discrepancy is `1.8782e-11`. Each replaced row is exactly the actual profile-matched collector's encoding, also checked against the saved CLI encoding. A whole-script unequal-upper-half audit found no wrong named-slot aliases in these 13 scripts. Nested offsets, mutations, extended/clamped parameters, singular/step-off tangents and unsupported derivative orders remain excluded; `gen1840`'s independent disagreement is left unresolved, not blessed or automatically attributed to #2717.
|
||||
|
||||
| Case | Input SHA-256 | Wrapper | Old → new output checksum block (sum, abs sum, weighted sum) |
|
||||
|---|---|---|---|
|
||||
| `gen0110` | `7cc4e9ed2024dec85d60580fbb8e24dc50230ae88f79b7bb33e00b931a686aeb` | `step` | `[[-1793.265256031545, 4539.760888149531, -92063.26276291256]]` → `[[-2621.2086646228818, 5367.704296740867, -122100.0187950678]]` |
|
||||
| `gen0756` | `5ada14a2cb68e27842d66a758c9a4a5bc9d9ed08bdafffc83e72bfac734fa178` | `step` | `[[1.3554805984540093, 7.391439631031779, 39.10197191819011]]` → `[[1.2122093199339468, 7.355706496090119, 36.380232245569125]]` |
|
||||
| `gen0799` | `95398f876a0aa149584f1e89a0a1d5dd1366b4a347cfd38c36a6416507fba65b` | `bounded` | `[[15685.128669914944, 99233.2195831997, 941088.084522405]]` → `[[15676.719215315688, 99199.2694150199, 940771.9940762286]]` |
|
||||
| `gen0824` | `39f05d9ab5a4472610d60a753220b5490461bb412fc98f85abd0fac223ee3613` | `bounded` | `[[33464.12457052777, 33497.84604874101, 744137.1302373111]]` → `[[33463.98433500545, 33497.953435537, 744126.2616127371]]` |
|
||||
| `gen1240` | `535dc18cc183873da4b7b6f9e4cedcb69e27917afe71995e3f9720dbec211011` | `bounded` | `[[2015.222120878384, 2039.5927729894993, 39281.460277584854]]` → `[[2015.955618797746, 2040.007408455776, 39290.117769365075]]` |
|
||||
| `gen1275` | `a8d836477bfc91cfe9322edee1345e09d18bd60e94014353d46c3cf92a69fce4` | `step` | `[[1.6588839137886584, 29.229129355613253, 284.7963141870564]]` → `[[1.6556057449840669, 29.222579118304704, 284.75313713692185]]` |
|
||||
| `gen1469` | `6228cef53bdc34bf656f94aad667b2c1106e0976650273f710909f0ad845e6ca` | `bounded` | `[[148487834.10462496, 46013379173.96301, 32688985476.503548]]` → `[[307780230.4308045, 45491081875.461876, 43379397073.4833]]` |
|
||||
| `gen1748` | `00749bcacd43840715bcae1508d4a755cf504f200cb0e984095270d6b30f4a11` | `step` | `[[13.606676736070348, 13.631349729313825, 75.07088936718932]]` → `[[13.606866826190364, 13.630757323655496, 75.07918855062239]]` |
|
||||
| `gen1756` | `06ba7f6d39f1f3c27ad7a126317cad14dc8a359e01073f5c59be10a17abca867` | `bounded` | `[[977.2996042465044, 1155.959435686678, 44676.875424165686]]` → `[[963.9718474036881, 1173.7334467816693, 44287.30973723946]]` |
|
||||
| `gen2231` | `0f56676c5b0bd0b16dbb67439f43f69a5e170ef7843a3b9f375f655ac2e6c912` | `bounded` | `[[1008.0970878598832, 1014.3304606380989, 19140.39888188975]]` → `[[1008.1011108250719, 1014.3260238388825, 19140.46842920942]]` |
|
||||
| `gen2423` | `03bfb2de669ecf0e8900265f00e674bb769afb85c7c75524f2555cb78677cdd6` | `bounded` | `[[-129863870541.9563, 244523105179.42017, -12864006992933.385]]` → `[[-108399690827.79427, 225474076435.15067, -10885792900484.361]]` |
|
||||
| `gen2662` | `f99a74ccc2923396bc7777667e7a4ed5477768f0c4ec79c26ce5860eb48d165d` | `step` | `[[1996.2288030841157, 2013.128826422467, 25924.04409976793]]` → `[[1996.2577180518608, 2013.0943424880004, 25924.731084359166]]` |
|
||||
| `gen2762` | `ae5b6a4e02c506a42a9ad0713d2361990b7b3efaa2383f00098b5c67b8d21a50` | `bounded` | `[[5.498787870148015, 13.119847544973723, 117.5105632099215]]` → `[[5.438370415627446, 14.546961116731453, 117.24257744500959]]` |
|
||||
|
||||
<details>
|
||||
<summary>All 54 component observations (display rounded; decisions use full precision)</summary>
|
||||
|
||||
| Case / index | Partial / axis | Observed | Input-only expected (17 digits) | Relative error |
|
||||
|---|---|---|---|---|
|
||||
| `gen0110 / 35` | `D(1,2).x` | `-2850.9464164505539` | `-2850.9464164505562` | `7.334e-16` |
|
||||
| `gen0110 / 36` | `D(1,2).y` | `-714.84554194667953` | `-714.84554194667373` | `8.086e-15` |
|
||||
| `gen0110 / 37` | `D(1,2).z` | `-382.56768812871474` | `-382.56768812871439` | `8.838e-16` |
|
||||
| `gen0756 / 17` | `D(1,2).x` | `-0.0017965965393912132` | `-0.0017965965393913672` | `8.57e-14` |
|
||||
| `gen0756 / 18` | `D(1,2).y` | `-0.050786103949312995` | `-0.050786103949313044` | `1.012e-15` |
|
||||
| `gen0756 / 19` | `D(1,2).z` | `-0.0011863713004979324` | `-0.0011863713004979725` | `3.378e-14` |
|
||||
| `gen0799 / 28` | `D(0,3).x` | `-0.015326054691295108` | `-0.015326054691295225` | `7.609e-15` |
|
||||
| `gen0799 / 29` | `D(0,3).y` | `-0.0041048801719275546` | `-0.0041048801719273838` | `4.172e-14` |
|
||||
| `gen0799 / 30` | `D(0,3).z` | `0.035464771065865722` | `0.035464771065865694` | `8.178e-16` |
|
||||
| `gen0799 / 37` | `D(1,2).x` | `0.013659273014666726` | `0.013659273014662875` | `2.819e-13` |
|
||||
| `gen0799 / 38` | `D(1,2).y` | `-0.16930255100861552` | `-0.16930255100860836` | `4.231e-14` |
|
||||
| `gen0799 / 39` | `D(1,2).z` | `0.030855762103872225` | `0.030855762103869741` | `8.05e-14` |
|
||||
| `gen0799 / 43` | `D(2,1).x` | `-7.0880793555857` | `-7.0880793555852684` | `6.088e-14` |
|
||||
| `gen0799 / 44` | `D(2,1).y` | `3.5227057852188741` | `3.5227057852189336` | `1.685e-14` |
|
||||
| `gen0799 / 45` | `D(2,1).z` | `7.0189194654588407` | `7.018919465458441` | `5.698e-14` |
|
||||
| `gen0824 / 75` | `D(1,2).x` | `-0.0061179323062561641` | `-0.0061179323062551961` | `1.583e-13` |
|
||||
| `gen0824 / 76` | `D(1,2).y` | `-0.070478807001997268` | `-0.07047880700199978` | `3.56e-14` |
|
||||
| `gen0824 / 77` | `D(1,2).z` | `-0.056446254354832123` | `-0.056446254354830791` | `2.359e-14` |
|
||||
| `gen1240 / 15` | `D(0,3).x` | `-4.2997202511322685` | `-4.299720251132344` | `1.759e-14` |
|
||||
| `gen1240 / 16` | `D(0,3).y` | `6.5318781400089181` | `6.5318781400088968` | `3.313e-15` |
|
||||
| `gen1240 / 17` | `D(0,3).z` | `12.031681444225347` | `12.031681444225173` | `1.447e-14` |
|
||||
| `gen1275 / 11` | `D(0,3).x` | `-2.7928690761753669e-05` | `-2.7928690761753699e-05` | `1.089e-15` |
|
||||
| `gen1275 / 12` | `D(0,3).y` | `0.00029301441667883978` | `0.00029301441667884732` | `2.572e-14` |
|
||||
| `gen1275 / 13` | `D(0,3).z` | `-0.00010453193300659626` | `-0.00010453193300659929` | `2.887e-14` |
|
||||
| `gen1469 / 66` | `D(0,3).x` | `-5684271.7373430096` | `-5684271.7373429872` | `3.996e-15` |
|
||||
| `gen1469 / 67` | `D(0,3).y` | `3007006.1287919609` | `3007006.1287919539` | `2.379e-15` |
|
||||
| `gen1469 / 68` | `D(0,3).z` | `-4395754.2124791071` | `-4395754.2124790819` | `5.732e-15` |
|
||||
| `gen1748 / 40` | `D(1,2).x` | `7.395305148618172e-06` | `7.3953051487570702e-06` | `1.878e-11` |
|
||||
| `gen1748 / 41` | `D(1,2).y` | `3.6422524869716576e-05` | `3.6422524869412721e-05` | `8.342e-12` |
|
||||
| `gen1748 / 42` | `D(1,2).z` | `3.5587225574578896e-05` | `3.5587225574182336e-05` | `1.114e-11` |
|
||||
| `gen1756 / 27` | `D(1,2).x` | `7.2847785298725256` | `7.2847785298724883` | `5.081e-15` |
|
||||
| `gen1756 / 28` | `D(1,2).y` | `-63.214943386328045` | `-63.214943386328109` | `1.015e-15` |
|
||||
| `gen1756 / 29` | `D(1,2).z` | `-3.1050350159108495` | `-3.1050350159107811` | `2.209e-14` |
|
||||
| `gen2231 / 15` | `D(0,3).x` | `6.1515609799659057e-09` | `6.1515609799672077e-09` | `2.117e-13` |
|
||||
| `gen2231 / 16` | `D(0,3).y` | `-1.7031922064566014e-09` | `-1.7031922064564419e-09` | `9.357e-14` |
|
||||
| `gen2231 / 17` | `D(0,3).z` | `4.4956424221657102e-09` | `4.4956424221668369e-09` | `2.506e-13` |
|
||||
| `gen2423 / 71` | `D(2,1).x` | `-22940207355.336498` | `-22940207355.336506` | `3.623e-16` |
|
||||
| `gen2423 / 72` | `D(2,1).y` | `2434448490.510294` | `2434448490.5103102` | `6.708e-15` |
|
||||
| `gen2423 / 73` | `D(2,1).z` | `-2398325735.1938248` | `-2398325735.1938133` | `4.779e-15` |
|
||||
| `gen2423 / 90` | `D(2,1).x` | `-2387510684.0437241` | `-2387510684.043777` | `2.208e-14` |
|
||||
| `gen2423 / 91` | `D(2,1).y` | `-21746697320.231216` | `-21746697320.231243` | `1.249e-15` |
|
||||
| `gen2423 / 92` | `D(2,1).z` | `-64074153297.938492` | `-64074153297.938408` | `1.369e-15` |
|
||||
| `gen2662 / 18` | `D(1,2).x` | `0.00034038376084129056` | `0.00034038376084129257` | `5.872e-15` |
|
||||
| `gen2662 / 19` | `D(1,2).y` | `0.00010951663774112274` | `0.00010951663774112518` | `2.224e-14` |
|
||||
| `gen2662 / 20` | `D(1,2).z` | `-0.00010690599849317438` | `-0.00010690599849317812` | `3.499e-14` |
|
||||
| `gen2662 / 34` | `D(0,3).x` | `-3.5645030615455682e-07` | `-3.5645030615454867e-07` | `2.29e-14` |
|
||||
| `gen2662 / 35` | `D(0,3).y` | `-2.7392384406755991e-06` | `-2.7392384406754944e-06` | `3.825e-14` |
|
||||
| `gen2662 / 36` | `D(0,3).z` | `4.6564817003619468e-06` | `4.6564817003617673e-06` | `3.864e-14` |
|
||||
| `gen2762 / 24` | `D(0,3).x` | `-0.47719973655667419` | `-0.47719973655667358` | `1.271e-15` |
|
||||
| `gen2762 / 25` | `D(0,3).y` | `0.21488770295869314` | `0.21488770295869242` | `3.413e-15` |
|
||||
| `gen2762 / 26` | `D(0,3).z` | `0.3135850468117849` | `0.31358504681178329` | `5.065e-15` |
|
||||
| `gen2762 / 44` | `D(0,3).x` | `-0.61350814367711859` | `-0.61350814367711581` | `4.578e-15` |
|
||||
| `gen2762 / 45` | `D(0,3).y` | `0.073007941552904604` | `0.073007941552903535` | `1.46e-14` |
|
||||
| `gen2762 / 46` | `D(0,3).z` | `0.30682319204641978` | `0.3068231920464225` | `8.889e-15` |
|
||||
|
||||
</details>
|
||||
|
||||
The four additional scope controls accept bounded/STEP/composed pass-through evaluation and reject a wrong returned component, nested offset and edited script. Together with the previous nine controls, all 13 pass. No result-body construction, topology, validity check, volume or retained-input contract is changed by these scalar golden replacements.
|
||||
|
||||
Full precision results, code, controls and the actual gate are retained in the readback-verified 15-member archive, SHA-256 `0f688a32ee293eea988f8db5f1f5dda797bdaad2f26045d84dffdc0ac28c9072`.
|
||||
|
||||
## Twenty-six additional scripts with non-aliasing named grids
|
||||
|
||||
Unequal request shape alone is not a wrong result: e.g. a `(hu,hv)=(1,3)` upper-half request can keep every serialized named slot correct. This bounded oracle checks the inspected write order for **every successful upper-half evaluation in each whole script**. Every serialized slot must have its requested partial as its final writer; an actual alias is excluded even if its returned value happens to match. It then independently evaluates **every moved component**, not just the unequal request, from the original control net at 80 and 160 decimal digits. Every one of the 162 components is within `1e-9` relative and has precision stability below `1e-50`.
|
||||
|
||||
All scripts stay read-only. The same direct/pass-through B-spline scope and exclusions apply; edits, clamping, extensions, unsupported orders, interior-knot sides and singular/step-off evaluations are not blessed. The new negative controls reject a true named-slot alias, a wrong value despite correct writers, and a changed output index not covered by decoded evaluations. #2717's implementation and refusal-versus-mask contract remain untouched. Three independent disagreements (`gen0865`, `gen2145`, `gen2860`) remain unresolved, not blessed or automatically attributed to that issue.
|
||||
|
||||
Each replacement below is the complete actual collector encoding; integers, statuses, shape and all unrelated rows are preserved. Full precision component observations and indices are in the verified 16-member archive, SHA-256 `19f4705e170673119cbf58b2437b6e65c3273b067f500b548f81b76868bad671`.
|
||||
|
||||
| Case | Input SHA-256 | Independently checked moved components / largest relative error | Old → new checksum blocks |
|
||||
|---|---|---|---|
|
||||
| `gen0080` | `9e436658a1572dca1558bf2442e6797b403917c305406b3b57c13ab647915df0` | `6 / 3.6774e-15` | `[[30379.00257735898, 30447.956764713053, 1686880.8415455215]]` → `[[30381.206162080358, 30448.991614664017, 1686945.450146894]]` |
|
||||
| `gen0236` | `f1f18708aae2c87ea13310b1234e711141b070b2b0271b2118503dafb3e6b302` | `6 / 1.1183e-12` | `[[30421.234672403345, 30456.973904279326, 2662674.4826113833]]` → `[[30421.06883505922, 30456.808066935217, 2662669.7392165186]]` |
|
||||
| `gen0252` | `e2623e88b9a9effb2d532f01613790991180c175f7c431c6e07b0d25cac87f71` | `3 / 3.3726e-13` | `[[30406.384453877406, 30478.85928586466, 1566099.3574601205]]` → `[[30406.354976187125, 30478.87649281059, 1566098.8504459893]]` |
|
||||
| `gen0379` | `6e75fe9c11aef56989e7f6eb40a94d541b14497c43e7f4ecc958b985df98e378` | `3 / 5.4169e-14` | `[[31699.330865783555, 32275.434630051248, 608329.1022738847]]` → `[[31700.498837974286, 32276.578274146483, 608426.1846821741]]` |
|
||||
| `gen0420` | `00690c96b2204acc746577753bb9780882ed1c9b7b32be9b3cb45d4fe42d4da5` | `9 / 3.2509e-15` | `[[31250.937855246448, 31793.443414857327, 2461983.8602397055]]` → `[[31335.61860395548, 31684.50755778467, 2465314.897156685]]` |
|
||||
| `gen0466` | `979b5a76b44c21cd69755575d9307ac6936dcc41637436f796aa65c6b81279e3` | `4 / 4.7499e-13` | `[[60868.818536099345, 60918.42222606814, 3836571.0485280785]]` → `[[60868.894608623326, 60918.2921872957, 3836577.3904423118]]` |
|
||||
| `gen0700` | `36e56a9d092e5a925db2069181a156218103aa42ee3f1d62d9457f8635b2288e` | `9 / 8.1622e-15` | `[[30392.901880758895, 30459.305723063335, 502349.9584627636]]` → `[[30391.922884114574, 30461.59455671349, 502273.1675116542]]` |
|
||||
| `gen0811` | `412b0d592f4de2a157bf6f182e536f9d826d0306f9f2f3f98c548c8931f65386` | `9 / 1.1564e-13` | `[[31538.727703292338, 31580.115359256026, 1860370.1995832226]]` → `[[31539.44686175704, 31579.76019984597, 1860392.0706096264]]` |
|
||||
| `gen0835` | `9b762b97777013b43903b7ea92ac48093bf0b6e86ddb37596c5bfd61b94ad7d9` | `6 / 1.414e-13` | `[[30414.330112128788, 30497.647075211837, 1658793.2847836807]]` → `[[30413.157940337896, 30497.146754871326, 1658759.1715066873]]` |
|
||||
| `gen1052` | `1bdaf6aec3c27961414ea68fcd4672443acc0df63793cd3d5f9e27cfbf3a5be2` | `6 / 6.3184e-13` | `[[61918.03497148949, 62025.00353079037, 3591838.874331083]]` → `[[61918.99313783185, 62022.14715561212, 3591912.498154636]]` |
|
||||
| `gen1129` | `7e9ca32cdd9a71b3850c5745130602b5cb7ba00d972873feb9a84c5af6bf33e7` | `4 / 5.3587e-12` | `[[1186497979.152731, 1218626548.3444576, 32735246131.13009]]` → `[[1186537755.2086275, 1218558795.090664, 32736071395.094486]]` |
|
||||
| `gen1535` | `ee6a964a87629b2eaa449180cc195524c26f2c48bebf4b2560446e4e791e5627` | `8 / 1.1332e-14` | `[[49497.583260137486, 155368.6558296504, 4484276.854383658]]` → `[[76825.05070814188, 177478.76016904792, 5748603.666975015]]` |
|
||||
| `gen1676` | `2d27da7af77ef77f6f607838e843e059d8e38e73f9c9eb15e4694aab33bcdb0c` | `8 / 5.5347e-15` | `[[-92.3124121670792, 183.10863961763488, -2742.3680877607035]]` → `[[-90.53952096325878, 182.6202420786579, -2658.9683361616776]]` |
|
||||
| `gen1691` | `f3cb837213375c6cb1a548cf8e9e9eac553dfef1d02f9fccecbbd386a2555986` | `6 / 1.0436e-13` | `[[62964.96195446904, 63030.27212845825, 3709590.7899841545]]` → `[[62964.88025255849, 63030.35212720648, 3709584.498368973]]` |
|
||||
| `gen1743` | `258ff3eba9d71e6d896c6422f449821f9a679e8467b7f834c09fc8a87b3fa6a1` | `12 / 2.738e-14` | `[[27712.10813313832, 38745.97861079435, 215263.02667339597]]` → `[[27806.873231672107, 38436.394755773166, 225937.0909352196]]` |
|
||||
| `gen1804` | `0fd77d6d729189c4d974960517ab127228f18f10faf9e7b49d733259b8c2b7dc` | `5 / 1.8609e-12` | `[[30473.35618335161, 30513.728819801316, 1965374.501426186]]` → `[[30473.356490371585, 30513.728229923236, 1965374.5090134607]]` |
|
||||
| `gen1905` | `c923bd8e86e3a3c1d0dfeaf8d3f6de6750aa0d8d43bd185aa0b4183464e6e39e` | `6 / 1.9336e-13` | `[[31837.222528412156, 31903.469290274574, 1432598.639920631]]` → `[[31837.242682660522, 31903.45270763585, 1432599.028721083]]` |
|
||||
| `gen2058` | `cc3902590fd5eec4bdf13186fb366df954f63716e9e113a1e54530aad96a904a` | `3 / 1.4144e-15` | `[[60877.968770035375, 60915.38270499651, 4385454.476949993]]` → `[[60876.88228251488, 60922.86583329465, 4385379.8824029]]` |
|
||||
| `gen2101` | `320e05376912fbd7ba1870366ae9e483028e83c78c223c2fad49883411c49005` | `6 / 1.4334e-15` | `[[6.120303143823539, 29.807555644234586, 44.089840393630936]]` → `[[12.736870292892549, 36.59454372347717, 171.08369003361463]]` |
|
||||
| `gen2225` | `369ac89a0e0b8fb3c3a89fc78e530552b608901f0e411758c8f4e578800ccc74` | `7 / 2.5883e-12` | `[[-286910412392.90857, 4398900748443.411, -3427730726124.274]]` → `[[304464144073.1033, 5873260061992.563, 9249330930772.734]]` |
|
||||
| `gen2242` | `bd573307972059bf9606fc3420c9fb336cd3818d3f7d2fdf8fe5258e53bcd21e` | `6 / 2.0845e-13` | `[[61857.73232266659, 61947.336223590755, 4056530.591775608]]` → `[[61852.770849920766, 61939.45936701227, 4056097.0808932446]]` |
|
||||
| `gen2402` | `bcd174c210ea7ec7ba6cc338a9bef1448bcad8a7503c0b65245d67c0f5684a34` | `6 / 1.1291e-14` | `[[32193.652313328614, 33075.20055926031, 1440327.8072871233]]` → `[[32127.0172981427, 32674.650403130265, 1438086.9123989216]]` |
|
||||
| `gen2586` | `27c106e0d41d051e77ee878a52bd357e6faaa1874646a3069c36b977b361d920` | `8 / 1.3559e-13` | `[[30402.4513996562, 30492.49403155344, 2691381.7170912246]]` → `[[30403.280350555364, 30490.853927247652, 2691397.098786934]]` |
|
||||
| `gen2721` | `f2ac0052ab83ae2f3be342e7ffc4415c8fe1ff28d52d60769e766b4550e77fa7` | `6 / 5.9118e-14` | `[[119636313604.18224, 573461094890.6915, 7083305718612.147]]` → `[[-6770903206.227723, 461629696222.1089, -2181812207294.0457]]` |
|
||||
| `gen2888` | `90c613d2379d34a3367cb6fa9e6a8571cd71e94f84448b4e09f0f103c08785a5` | `4 / 1.0343e-11` | `[[-10102.721720538217, 24393.523038543684, -142894.98664173268]]` → `[[-10142.640060926964, 24529.309695200158, -143905.46653528017]]` |
|
||||
| `gen2913` | `e96427c91d40ce3079de04c33ac6275cdb615aaceebd5d59aa2de13cbd732553` | `6 / 3.732e-14` | `[[30417.766309459083, 30477.93182223716, 502681.3094662713]]` → `[[30417.680348608184, 30477.79120381156, 502675.1315456713]]` |
|
||||
|
||||
## Four additional nested-zero identities
|
||||
|
||||
In each of these unmutated scripts exactly one nested distance is zero. The zero offset is the identity, so the mathematical derivative is that of the remaining single offset of the original input net. This argument makes no assumption about the orientation or fold behaviour of **two nonzero** offsets: those remain outside this oracle. The original domain, regular-tangent, total-order and whole-script named-writer restrictions still apply. A clamped request and a mutated script remain excluded, not blessed.
|
||||
|
||||
All **17 moved components** independently agree at 80/160 decimal digits, with precision stability below `1e-50` and maximum relative discrepancy `1.0118e-12`, below the unchanged `1e-9`. The new controls accept both zero identities, reject two nonzero offsets, and detect a wrong returned value. Together all 20 controls pass. Only these four encoded rows change, each identical to the preserved profile-matched collector; all other expectations and failure entries stay unchanged.
|
||||
|
||||
| Case / input SHA-256 | Identity | Old → new checksum blocks |
|
||||
|---|---|---|
|
||||
| `gen0302` / `30a04c108e5d8e4b4765f2153918410ab70bd8ed1ae36ceb4c4ea091960fae0c` | outer zero | `[[30827.64211473529, 30862.21966957595, 909319.6839455989]]` → `[[30827.640352428367, 30862.236462334913, 909319.6443810975]]` |
|
||||
| `gen0957` / `0903c49446b3f0fdeca1630789ef4c93778b05849ac678f8f5455f99f0298d7c` | inner zero | `[[56990.064452212995, 60611.50358534768, 2558024.7556519024]]` → `[[56969.283059406494, 60647.37636115499, 2557313.2601297847]]` |
|
||||
| `gen2311` / `335a922cf7b661a8974ebededb45a49eaf26ae092355c6397017cb09989f223e` | outer zero | `[[61557.13565702396, 61724.96166855296, 3537970.152684235]]` → `[[61547.02359600594, 61741.13247766892, 3537325.0349517446]]` |
|
||||
| `gen2766` / `adeba1dbd034c1039a4994c4ab29fa57ec2a04f662aa7c04c5cbb6a090f18415` | outer zero | `[[958900887471.6716, 1414026493265.7517, 71062889191835.97]]` → `[[942303322374.7341, 1397428928168.8142, 69858556187898.766]]` |
|
||||
|
||||
All 17 full-precision component observations remain in the nested-zero evidence archive named below.
|
||||
|
||||
Code, raw data, full-precision observations, controls and the actual gate are in the readback-verified 18-member archive, SHA-256 `e9444ddcad2126de4888713d5878e1323aab1237b9ab41f8b90e33ef93cb025e`. No geometry-body construction, topology, validity, volume or retained-input contract is changed by these scalar expectation updates.
|
||||
|
||||
## Eight additional locally regular nested offsets
|
||||
|
||||
This is an independent **local derivative proof**, not permission to flatten arbitrary offsets. Put `T=S+d*n`, where `n` is S's unit normal. Differentiating `n·n=1` shows `Tu` and `Tv` lie in S's tangent plane; hence `Tu×Tv=J(Su×Sv)`. Where `J>0` and both surfaces are regular, continuity preserves that sign in a neighborhood, so T's unit normal is n and its further offset is `S+(d+e)n`, including the derivatives at that point. This is the normal/orientation relation in [Patrikalakis–Maekawa–Cho §11.3.1, equations 11.17–11.23](https://web.mit.edu/hyperbook/Patrikalakis-Maekawa-Cho/node224.html).
|
||||
|
||||
For **every moved evaluation** below, jets computed only from the original net independently establish the positive J and normal collinearity at 80/160 digits. J ranges from 0.7951 to 2.5695; the relative squared collinearity residual is below `1e-100`. All **36 moved scalar components** satisfy the unchanged `1e-9` relative comparison and `1e-50` precision-stability bound (largest discrepancy `2.2847e-11`). The distance sum is formed independently in decimal from the original scalar inputs, not from kernel state. Whole-script named-slot checks still exclude actual aliases. Mutation, clamping, extensions, interior-knot sides and step-off thresholds remain excluded.
|
||||
|
||||
The added paraboloid controls independently check the point, first tangents and Jacobian factor in closed form; a negative-orientation offset, a focal offset, and an incorrect returned value are rejected. All 24 controls pass. `gen1323` and `gen2190` fail the positive-normal test and remain **unresolved**, not blessed with an unjustified distance sum. This proves no global fold absence, surface topology or result-body validity; those claims are not made.
|
||||
|
||||
| Case / input SHA-256 | Components / max relative error | Positive local normal factors | Old → new checksum blocks |
|
||||
|---|---|---|---|
|
||||
| `gen0231` / `ce024ef3518668831c4a262f61cd450895b0724b4b02129bbf23fe55c112fa4e` | `12 / 1.9827e-13` | `[0.8988037434837284, 0.8964042836013618]` | `[[45580896831.72423, 95389791944.91127, 4002174278995.3906]]` → `[[45581293347.95954, 95383078871.46913, 4002191020838.163]]` |
|
||||
| `gen0693` / `09f41f3cf32a195ae9340c98529931e9695223d011e272821c2ff36b6ab0ea12` | `3 / 4.874e-15` | `[1.2836520633183264]` | `[[30768.87584330439, 30937.918892050533, 505211.64055525354]]` → `[[30768.25063146633, 30938.188245733425, 505166.13185559894]]` |
|
||||
| `gen1737` / `6b5e541dea9890626cb0d8abaf0c5012ffd1bf023dd32f22f958c6d184d390a6` | `6 / 3.6763e-13` | `[2.5694737131193226]` | `[[29848.100318849418, 31834.48077184831, 1312427.284835471]]` → `[[29847.345690061786, 31831.810669040908, 1312406.4322319615]]` |
|
||||
| `gen1831` / `7bfd0b144c304adde1c533f669c21d44527fc91109ca5d83b04889a3a91ad0b9` | `3 / 4.237e-12` | `[0.9889378944889109]` | `[[-12625472801.0987, 30180114690.678963, -660746037972.9828]]` → `[[-12621900570.213278, 30175545644.943497, -660510738258.7076]]` |
|
||||
| `gen1961` / `95e25ea1d730f8a2056799fbfd082092cc1301cd053e6e343388019a6be57386` | `3 / 1.1342e-14` | `[0.955167466420743]` | `[[31828.353267824037, 31906.008061543303, 630009.7380669664]]` → `[[31827.99141782863, 31905.195112392754, 629983.9711326736]]` |
|
||||
| `gen2461` / `a230545cc2d3c29214688e00f4ae3836c571d2b7e16fef59e113c3dc2ee409ca` | `3 / 2.2846e-11` | `[1.0200279685187483]` | `[[-0.007559155208330911, 0.013805289471912924, -0.08892357320304935]]` → `[[-0.007559155134554697, 0.013805289432922412, -0.08892357109854443]]` |
|
||||
| `gen2680` / `a34ce59d5704014135d17d97489e8d83bb665b990e1fcfd81c6035db91c28bda` | `3 / 3.0828e-14` | `[0.7951450461677018]` | `[[-4.172894886415667, 27.14634803960104, -59.00430477408537]]` → `[[-3.411351874036506, 51.416200568900344, -47.69090686109031]]` |
|
||||
| `gen2938` / `6d66abfa1a66636f0e086d0e9fc316260ef722e71089e94fd7823f622ee9ce18` | `3 / 1.9294e-13` | `[0.9712510356712598]` | `[[61656.09857959446, 61701.59111604824, 3392138.137636158]]` → `[[61659.71526991051, 61696.25679886635, 3392412.5706676855]]` |
|
||||
|
||||
Full-precision observations, original inputs, executable proof and all controls/gates are retained in the readback-verified 20-member archive, SHA-256 `ffa9677bcc4a9c2d96047e740e6c1d515f1df2615ba7fc0482146b176442fbfb`. Only these eight complete encoded rows change; all case identities, unrelated expectations and known failures remain unchanged.
|
||||
|
||||
## Twenty receiver-copy/scalar-setter scripts, evidence preserved
|
||||
|
||||
The preceding twenty-row old/new table, receiver-state proof and all 89 component bounds are preserved unchanged in [this committed finding](https://github.com/altvnk/solidcore/blob/2ef53c83e1e4f0f37146f27e79f4a2cb5ff3b445/plan/findings/surface.offset_surface--copy-setter-input-oracle-evidence-2026-11-08.md), including the original thirty-member archive hash. Those rows are not reblessed here.
|
||||
|
||||
## Clamped-point evidence retained verbatim
|
||||
|
||||
The preceding eighteen-row old/new table, complete published clamp proof, exclusions and archive hash are preserved verbatim in [this committed finding](https://github.com/altvnk/solidcore/blob/b982cc76604d6c910dfe313064aa4417250f0674/plan/findings/surface.offset_surface--clamped-input-oracle-evidence-2026-11-08.md), explicitly attributed to the historical `2ef53c83e` publication. Those eighteen rows are not reblessed here.
|
||||
|
||||
## Canonical-revolution evidence, preserved
|
||||
|
||||
The thirteen-case / 62-component input-only proof, all old/new blocks, construction/precision controls and the independently wrong `gen1603` named slot remain in [the committed finding](https://github.com/altvnk/solidcore/blob/beb1eb1843a2e988eb42ab169467494395fc6047/plan/findings/surface.offset_surface--canonical-revolution-input-oracle-evidence-2026-11-08.md). Its verified 35-member archive is `9266f4152921f181300f3811f269622338fec6b672311413a86764fece3d7a0c`. No prior row is reblessed here; no suffix-correctness or #2717 implementation claim follows.
|
||||
|
||||
## Five returned-base/inversion-query scripts, evidence preserved
|
||||
|
||||
The five-case / 26-component proof, all old/new blocks, original input hashes, clamped points, 52 controls, `gen2558` disagreement and executable archive are preserved in [the committed finding](https://github.com/altvnk/solidcore/blob/8e07893cff99db33d90e3ed10d6551a87587f032/plan/findings/surface.offset_surface--returned-base-input-oracle-evidence-2026-11-08.md). Those rows are not reblessed by this update.
|
||||
|
||||
## Parameter-edit evidence, preserved
|
||||
|
||||
The five-case / 24-component proof, every old/new block, original input/bit identities, 59 controls and pre-edit versus post-edit distinctions remain in [the committed finding](https://github.com/altvnk/solidcore/blob/beb1eb1843a2e988eb42ab169467494395fc6047/plan/findings/surface.offset_surface--parameter-edit-input-oracle-evidence-2026-11-08.md). Only `gen0909`/`gen2960` claimed changed post-swap/post-reverse jets. `gen0304`/`gen0672` still disagree. No previous row is reblessed; the verified archive remains `9887e283e19139ec82596e30a378753dc2c6b55fb6930dce9157d2243b5bab2d`.
|
||||
|
||||
## Seven further independently supported rows
|
||||
|
||||
`gen0046`, `gen0294`, `gen0715`, `gen1107`, `gen1871`, `gen1956`, `gen2606`: **29 moved components**, input-only 80/160-digit jets, maximum relative error `7.9414e-14` under unchanged `1e-9`; **66 controls pass**. `gen0294`/`gen1956` use complete scripts; the other five prove every moved bit before an entirely bit-identical suffix. No suffix-correctness claim; all complete production cases still run.
|
||||
|
||||
The [complete old/new encodings, all observations, original inputs, boundaries, suffix digests and exclusions](https://github.com/altvnk/solidcore/blob/beb1eb1843a2e988eb42ab169467494395fc6047/plan/findings/surface.offset_surface--unchanged-suffix-input-oracle-evidence-2026-11-08.md) are committed. Verified 44-member archive: `ffbef76485eb2d56b266d1e1dad0a8c785d27f05dfe03023ed629b1439026afe`. Numerical disagreements remain unapproved; no decoder relaxation, production crop or skip.
|
||||
|
||||
## One explicit-side-clamp script with extension enabled
|
||||
|
||||
`gen1332`: all **three moved D(0,3) components** agree with input-only 80/160-digit jets at the explicitly clamped VMax endpoint, maximum relative error `8.06353e-14` under unchanged `1e-9`; **85 controls pass**. The original enabled flag and side mask **11** stay unchanged; VMax bit 8 applies before extension. Independent regular first samples separate the periodicity positions from the source threshold by more than `6.632e12`. The full three-step/72-scalar script is decoded; no crop or actual-extension claim.
|
||||
|
||||
[Full old/new encoding, original input hash, all observed/independent values, state proof and exclusions](https://github.com/altvnk/solidcore/blob/ceadc86fedb8d337812b4882175f4fbb0fd0b79c/plan/findings/surface.offset_surface--explicit-side-clamp-input-oracle-evidence-2026-11-08.md). Verified 64-member archive: `c0277e8e83feb5100d1c40e5f947f3aa476e0073555c19acd9fcdf403086ec81`. Numeric-only `gen0590` remains excluded by its first-sample normal fallback; `gen0962` remains excluded because swap does not remap its original side mask. Neither is blessed.
|
||||
|
||||
## Two enabled-but-unused extension prefixes
|
||||
|
||||
`gen2007` and `gen2248`: **12 moved components**, input-only 80/160-digit jets, maximum relative error `8.80533e-14` under unchanged `1e-9`; **78 controls pass**. Every prefix point stays in the original direct B-spline domain, so the enabled flag never reaches extension or clamping. All moved bits precede unchanged suffixes of **4 / 234 scalars**. No actual-extension, post-edit or suffix-correctness claim; full original cases still run. `gen2690` disagrees and stays unapproved.
|
||||
|
||||
[Full old/new encodings, all observations, original input identities, state proof and boundaries](https://github.com/altvnk/solidcore/blob/670557efa12f074f96d7fc559a1d854f7f722aca/plan/findings/surface.offset_surface--unused-extension-input-oracle-evidence-2026-11-08.md). Verified 56-member archive: `b2b23e145751baaa363d55a718475028b67f24f513de9dce23d9884d297e1064`.
|
||||
|
||||
## Two further wrong named-slot results, not blessed
|
||||
|
||||
`gen0757` step 1, `out[63..65]`, and `gen2243` step 2, `out[60..62]`: `D(1,1)` overwrites named `D(2,0)`. Input-only 80/160-digit jets prove six wrong components, relative discrepancies **0.9128–1.6373**; **71 controls pass**. The first proof uses the explicit clamped endpoint after a returned copy; the second precedes swap.
|
||||
|
||||
Both wrong goldens are removed; full cases keep executing under case-specific #2717 failures. [Old encodings, observed/independent values and bits, inputs and limits](https://github.com/altvnk/solidcore/blob/beb1eb1843a2e988eb42ab169467494395fc6047/plan/findings/surface.offset_surface--two-query-prefix-named-slot-failures-2026-11-08.md) are committed. Verified 49-member archive: `9169e48e605bddc010862db3b610c420e54372dba1ce9ad46ce73c5b35fccfb7`. No suffix/writer-correctness or refusal-versus-mask claim.
|
||||
|
||||
## Six earlier named-slot proofs, retained verbatim
|
||||
|
||||
The full six-case / 21-component published section, every input hash and observation, original collector attribution, controls and archive hash are now [preserved verbatim in a committed finding](https://github.com/altvnk/solidcore/blob/670557efa12f074f96d7fc559a1d854f7f722aca/plan/findings/surface.offset_surface--six-named-slot-evidence-published-2026-11-08.md). Exact text equality was verified before replacing the inline duplicate. No prior result is reclassified or reblessed.
|
||||
|
||||
## Verification and remaining limits
|
||||
|
||||
At exact head `ceadc86fedb8d337812b4882175f4fbb0fd0b79c`, workspace fmt, workspace/all-target clippy (`-D warnings`), wasm32, panic inventory and all **23 offset-module tests pass**. Rust 1.98.0, `CARGO_BUILD_JOBS=2`, commands under `nice -n 10`; offset tests use `CARGO_INCREMENTAL=0`. The actual full-case unit gate remains **FAIL**:
|
||||
|
||||
```text
|
||||
FAIL surface.offset_surface cases=3182 changed=188 added=0 removed=0 broken=0 known_failing=88 rust=29.309s
|
||||
```
|
||||
|
||||
All **3,182 cases / 3,094 golden rows / 88 known failures** remain selected. The latest commit changes only the complete `gen1332` golden plus its evidence record; every other row and known failure is unchanged. **167 supported cases / 815 moved components** have independent evidence; **188 ordinary differences** remain. Numerical source SHA-256 stays `86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`. The collector remains attributed to measured `7a90407a0`, not a new execution. The full `goldens` package tests passed **732 / zero failed / 31 ignored** at `beb1eb1843a2e988eb42ab169467494395fc6047`, not relabelled here. No full kernel-suite or all-unit-golden success is claimed. Exact-head canonical [run 42478935902](https://github.com/tangency-labs/solidcore/actions/runs/42478935902) at `ceadc86fedb8d337812b4882175f4fbb0fd0b79c` completed **`action_required` with zero jobs**, not success. No approval request, workflow rerun or review bypass was made.
|
||||
|
||||
Historical test/collector executions retain their measured revisions and archived evidence. The upstream-commented integration test passed at `ece73364c`, not a new execution here. No downstream or canonical-CI success is claimed; the historical attribution-review thread remains unresolved.
|
||||
|
||||
In scope: the four terms, their retained regression and evidence-backed golden dispositions.
|
||||
Expected edits: the existing numerical file and records, this unit's golden and its known-failure entries.
|
||||
Related work / available follow-ups: #2717's implementation and refusal-versus-mask design remain separate. No new PR or unrelated work lane is claimed.
|
||||
Status / next step: keep draft; explain or fix the remaining 188 ordinary changes before readiness. No maintainer ping, workflow approval request, rerun or bypass is made.
|
||||
|
||||
|
||||
Original executable oracle and control sources remain retained in the verified evidence archives; their inline duplicate is omitted here to keep the complete per-case migration evidence within GitHub's body limit.
|
||||
Vendored
+105
@@ -0,0 +1,105 @@
|
||||
# Offset derivatives after returned base offsets and inversion queries (2026-11-08)
|
||||
|
||||
Continues #1914 with five independently supported golden replacements, not a
|
||||
new numerical implementation or #2717's grid contract. All 26 moved components
|
||||
are receiver derivatives; no returned-surface or inversion-query value is blessed.
|
||||
`gen2558` independently disagrees and stays unresolved.
|
||||
|
||||
## Receiver state and independent calculation
|
||||
|
||||
The runner in `crates/goldens/src/units/surface_offset_surface.rs` serializes
|
||||
`base_surface().create_offset_surface(...)` without assigning the result to its
|
||||
receiver. For a direct B-spline, `BSplineSurface::create_offset_surface` in
|
||||
`nurbs/b_spline_surface/p1.rs` copies the input into an owning `OffsetSurface`,
|
||||
including for zero distance. The evidence decoder accepts only that non-null
|
||||
type `15400`, decodes its entire payload and retains the receiver's original
|
||||
distance. Other kinds and nullable providers are not inferred.
|
||||
|
||||
`step_inv` serializes a parameter pair and location on success, or just its
|
||||
status on failure. None of those fields moves in these five cases. These are
|
||||
direct B-spline receivers with extension disabled throughout: the inversion's
|
||||
base is not a nested offset, and `select_surface` cannot make an extension.
|
||||
The query therefore leaves the input geometry/distance used by subsequent
|
||||
derivatives intact. This is not a claim that inversion is state-free in general;
|
||||
extension-enabled and nested receivers remain outside this proof.
|
||||
|
||||
From the original rational control net, weights and knots alone, the existing
|
||||
independent Taylor algebra evaluates
|
||||
`O = S + d (Su x Sv) / |Su x Sv|` through order three at 80/160 decimal digits,
|
||||
converting each binary64 input exactly. The four-term counterfactual selects
|
||||
the moved indices only; neither its derivatives nor its golden supplies an
|
||||
expected value. Every moved index must decode as a named receiver derivative,
|
||||
with no final-writer collision, and all other output fields must be unchanged.
|
||||
No new tolerance or absolute floor is used.
|
||||
|
||||
All 26 components pass strict relative `1e-9`, maximum error
|
||||
`1.176059847726366e-12`; maximum relative precision drift is
|
||||
`1.692416792727516e-76`. For the three boundary cases the original knots determine
|
||||
the clamped point before differentiating, not derivatives of a constant extension:
|
||||
|
||||
| Case / step | Requested UV | Evaluated UV |
|
||||
|---|---|---|
|
||||
| `gen1623` / 0 | `[2.4772525243355457,0.27913697416804306]` | `[1.0,0.27913697416804306]` |
|
||||
| `gen1782` / 1 | `[-0.3652375559371569,0.6945687218522235]` | `[0.0,0.6945687218522235]` |
|
||||
| `gen2425` / 0 | `[0.0823062150585343,-2.08422407711569]` | `[0.0823062150585343,-1.5916340197964498]` |
|
||||
|
||||
## Exact row replacements and retained input identities
|
||||
|
||||
Each new row is the complete retained actual collector encoding. The common
|
||||
fields remain `deferred=null`, `error=null`, `ints={}`, `topology=null`; `out.n`
|
||||
stays 134, 191, 45, 133 and 37 respectively. Only the blocks below change.
|
||||
The blocks are `[sum, abs_sum, weighted_sum]`, not error bounds; the errors grade
|
||||
the raw moved components, not their checksums. Input hashes use sorted compact
|
||||
Python JSON, UTF-8.
|
||||
|
||||
| Case | Components / max relative error | Input SHA-256 | Old → new checksum blocks |
|
||||
|---|---|---|---|
|
||||
| `gen0136` | 3 / `5.79439e-15` | `4515a282fe90fd6359b6858d6d7c8301dc3f80f89eb2f6e707b2f2a1d8695052` | `[[91876.89527025135, 92224.64165636596, 3709608.8064747667]]` → `[[91973.71856665419, 92226.07023677968, 3722151.3675662098]]` |
|
||||
| `gen0287` | 3 / `1.17606e-12` | `e51e3bd2ec6e6c620c88445e04bb4153986ad684128ca811a218da31284c462f` | `[[106623.85073001102, 106758.36789985334, 8192383.812744899]]` → `[[106623.09246265274, 106758.03749782688, 8192286.540092921]]` |
|
||||
| `gen1623` | 8 / `1.22953e-14` | `857b21820fa862beba1580ea3dd53eb5debdd8553e0b86d9c5790abee8e31467` | `[[937.572243299023, 1479.9961428738736, 24633.179569469605]]` → `[[898.8254877713206, 1424.9679762169394, 23984.775109513852]]` |
|
||||
| `gen1782` | 3 / `1.9561e-14` | `015844bf6a82125fa52f3b3cbbd7dcf3753397ed5a8a9e725be22de887cb8fff` | `[[77236.60030788192, 87804.80267997787, 4353949.4496201]]` → `[[76718.60999413418, 86553.13132175046, 4319698.866069493]]` |
|
||||
| `gen2425` | 9 / `3.87624e-14` | `3e08eda805173750cd4cb0f3a6bcf45b221e3853587034ab96ed05a4060e286e` | `[[994.256720147682, 1013.7863198590826, 32902.28326575608]]` → `[[995.7214865508853, 1015.1216311978034, 32929.3849376887]]` |
|
||||
|
||||
All five original inputs and all raw binary64 bits were compared with the
|
||||
retained streams before editing. Every unrelated row and all 86 known-failure
|
||||
entries stay byte-identical; all 3,182 cases remain selected as 3,096 golden rows
|
||||
plus 86 known failures.
|
||||
|
||||
## Controls, exclusions and provenance
|
||||
|
||||
All 52 numerical/scope controls pass. The four new controls distinguish returned
|
||||
base-offset distance from receiver distance; decode an unchanged inversion result
|
||||
but reject a moved query field; reject a null/wrong returned kind; and still
|
||||
reject extension-enabled receivers or wrong derivative values. Existing controls
|
||||
cover independent closed forms, weights, parameter orientation, clamping,
|
||||
named-slot aliases and precision stability. Exact-zero closed-form controls may
|
||||
compare 95 digits of a 100-digit Decimal calculation; captured kernel values
|
||||
still use strict relative `1e-9`, never a new floor.
|
||||
|
||||
`gen2558` remains unapproved: its three `D(1,2)` components have relative errors
|
||||
about `0.343`, `0.929` and `1.870`. Their small magnitude (about `1e-15`) is not
|
||||
an excuse to add an absolute floor. No new failure attribution is made. Unsupported
|
||||
edits, extension, ambiguous knot sides, singular substitutions and actual aliases
|
||||
remain excluded. No B-rep topology, validity, volume or global fold certificate is
|
||||
claimed by these local derivative observations.
|
||||
|
||||
The raw collector was actually run at
|
||||
`7a90407a0fe189ebceb551e5df28aaf4e8cc9893`, raw-stream SHA-256
|
||||
`735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`.
|
||||
At pre-edit head `b982cc76604d6c910dfe313064aa4417250f0674`, numerical source
|
||||
SHA-256 remains
|
||||
`86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`.
|
||||
These identities are preserved, not relabelled as newer executions.
|
||||
|
||||
The 39-member executable/data/control archive was read back and hash-verified,
|
||||
SHA-256 `94b10bb4a4e6f0fe58e9d55aa98416b09ede4ec237b0d99bd5a3e95ee7efa65c`.
|
||||
It includes complete original inputs/raw values/bits, all full-precision
|
||||
observations and exclusions, the disagreement, full old/new encodings, controls,
|
||||
the prior helper versions and the pre-edit identity receipt. Local retained path:
|
||||
`~/.local/share/opencode/solidcore-cleanup-evidence/pr1914-returned-base-input-oracle-20261108-b982cc766/`.
|
||||
|
||||
Projected accounting is 152 supported replacements / 747 moved components and
|
||||
205 remaining ordinary differences, pending the actual gate. Parent canonical
|
||||
run 42465643185 ended `action_required` with zero jobs, not success. The PR stays
|
||||
draft with its correctness and attribution-review holds; no workflow approval,
|
||||
rerun, review resolution or #2717 implementation is implied.
|
||||
Vendored
+54
@@ -0,0 +1,54 @@
|
||||
# surface.offset_surface: six published named-slot proofs retained (2026-11-08)
|
||||
|
||||
Historical excerpt from #1914's published description, read back at
|
||||
`beb1eb1843a2e988eb42ab169467494395fc6047`. The section below is retained
|
||||
verbatim so the PR can link it without dropping any published per-case detail.
|
||||
Its collector revisions, nine controls, counts and archive hash remain historical
|
||||
measurements, not new executions. This preservation changes no production file,
|
||||
golden, failure entry or disposition, and resolves no review or CI hold.
|
||||
|
||||
## Six additional wrong named-slot results
|
||||
|
||||
These are not transferred by case name from an old trace. The current profile-matched collector at `2a187b487004d6d31a40e63e8bf16c97517dee53` reproduces all 3,182 complete input/raw-output records byte for byte (SHA-256 `735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`). The disposition commit changes only the two expected-data files.
|
||||
|
||||
For each additional case, a successful unequal upper-half request returns a named partial overwritten by another partial in the inspected flat write order. Independent 80/160-digit Cox-de Boor/Taylor evaluation from its input net confirms **21 wrong scalar components** under the unchanged relative rule. Request shape alone is not proof: the returned named value must independently disagree. Zero-distance bypasses, failed steps, clamped/extended parameters, nonregular tangents, interior knots and edited/unsupported script forms are excluded.
|
||||
|
||||
| Case | Input SHA-256 | Step / output index / wrong named slot |
|
||||
|---|---|---|
|
||||
| `gen0033` | `70780a5c41ad46c90f83d5f576df88d61a7714aacf419d3909471911b1361dea` | `step 3, out[67]: D(2,0) overwritten by D(1,1)` |
|
||||
| `gen0351` | `4b95c449950c93ce3cd46293ea0557556f3b4801767e67d3a3cc326722446cc9` | `step 3, out[73]: D(2,0) overwritten by D(1,1)` |
|
||||
| `gen0690` | `007587d1c0dd72171f7817ca8b70124a16071d41dbbd6b873a4a253aa5b96ef6` | `step 1, out[62]: D(2,0) overwritten by D(1,1)` |
|
||||
| `gen1110` | `d7b12a3aa2f98cf9d6204c234379b7a897e18ae42e9d6c67ecddc5cf557d4f67` | `step 1, out[9]: D(2,0) overwritten by D(1,1)` |
|
||||
| `gen1310` | `e9c4f52efed32ca8c5470cc6cecb59828ab3872d2e25614d5d0ff90aee05d13b` | `step 0, out[8]: D(2,0) overwritten by D(1,1)` |
|
||||
| `gen1643` | `18c66e2311bd6262fe0f848206b7065ed0b349560a682daab876fffa6c173a41` | `step 1, out[69]: D(2,0) overwritten by D(1,2)` |
|
||||
|
||||
The second-order D(2,0)←D(1,1) alias is the same requested-rectangle defect as the third-order aliases, not another numerical correction. All nine oracle controls pass: the five original controls plus a wrong-slot control, a correct-slot negative control, zero-offset exclusion and failed-step exclusion. Full precision observations and code are retained in the verified 11-member evidence archive, SHA-256 `3e8e88ffcba10c6985f9548f13113530a0617c08baaaf6c0bc8f468599cb3aa9`.
|
||||
|
||||
<details>
|
||||
<summary>All 21 new component observations (display rounded; proof uses full precision)</summary>
|
||||
|
||||
| Case | Step / index | Named partial / axis | Last writer | Observed | Independent expected (17 significant digits) | Relative error |
|
||||
|---|---|---|---|---|---|---|
|
||||
| `gen0033` | `3 / 67` | `D(2,0) / x` | `D(1,1)` | `0.018724977469827681` | `0.94947706571689405` | `0.9802786` |
|
||||
| `gen0033` | `3 / 68` | `D(2,0) / y` | `D(1,1)` | `-0.00013649133486782865` | `-0.46554174393040504` | `0.9997068` |
|
||||
| `gen0033` | `3 / 69` | `D(2,0) / z` | `D(1,1)` | `0.03180708635890208` | `2.8042190423216997` | `0.9886574` |
|
||||
| `gen0351` | `3 / 73` | `D(2,0) / x` | `D(1,1)` | `0.45960729386454163` | `-2.5116317991687791` | `1.182992` |
|
||||
| `gen0351` | `3 / 74` | `D(2,0) / y` | `D(1,1)` | `0.093772116550005127` | `-0.50950947374403088` | `1.184044` |
|
||||
| `gen0351` | `3 / 75` | `D(2,0) / z` | `D(1,1)` | `-0.20616503773553352` | `0.8025178110146608` | `1.256898` |
|
||||
| `gen0351` | `3 / 76` | `D(3,0) / x` | `D(1,2)` | `-0.074509313044287567` | `-6.3156316792075415` | `0.9882024` |
|
||||
| `gen0351` | `3 / 77` | `D(3,0) / y` | `D(1,2)` | `-0.015739847674017218` | `-1.122898963269378` | `0.9859828` |
|
||||
| `gen0351` | `3 / 78` | `D(3,0) / z` | `D(1,2)` | `0.032706421316059255` | `2.7671039657496665` | `0.9881803` |
|
||||
| `gen0690` | `1 / 62` | `D(2,0) / x` | `D(1,1)` | `-0.019052016500627499` | `-0.7775375111457119` | `0.975497` |
|
||||
| `gen0690` | `1 / 63` | `D(2,0) / y` | `D(1,1)` | `-0.0161844375287322` | `0.44902605842363585` | `1.036043` |
|
||||
| `gen0690` | `1 / 64` | `D(2,0) / z` | `D(1,1)` | `-0.031707902133859094` | `-2.0671257497366193` | `0.9846609` |
|
||||
| `gen1110` | `1 / 9` | `D(2,0) / x` | `D(1,1)` | `0.14139133719370992` | `0.010038776196591289` | `0.9290001` |
|
||||
| `gen1110` | `1 / 10` | `D(2,0) / y` | `D(1,1)` | `0.049876113749574992` | `-0.24302254799445155` | `1.205232` |
|
||||
| `gen1110` | `1 / 11` | `D(2,0) / z` | `D(1,1)` | `0.088310451664655662` | `0.067595805569719364` | `0.2345662` |
|
||||
| `gen1310` | `0 / 8` | `D(2,0) / x` | `D(1,1)` | `0.053073370992377245` | `0.092257247937169787` | `0.4247241` |
|
||||
| `gen1310` | `0 / 9` | `D(2,0) / y` | `D(1,1)` | `-0.10517003905227755` | `-0.035204568600612281` | `0.6652605` |
|
||||
| `gen1310` | `0 / 10` | `D(2,0) / z` | `D(1,1)` | `-0.087096203244838494` | `0.11288825209382408` | `1.771526` |
|
||||
| `gen1643` | `1 / 69` | `D(2,0) / x` | `D(1,2)` | `-1.2098301821953668` | `21.441414232216133` | `1.056425` |
|
||||
| `gen1643` | `1 / 70` | `D(2,0) / y` | `D(1,2)` | `-2.0784483827338414` | `35.121179153073513` | `1.059179` |
|
||||
| `gen1643` | `1 / 71` | `D(2,0) / z` | `D(1,2)` | `1.5222138413884911` | `-23.137063892159638` | `1.065791` |
|
||||
|
||||
</details>
|
||||
Vendored
+101
@@ -0,0 +1,101 @@
|
||||
# surface.offset_surface: two query-prefix named-slot failures (2026-11-08)
|
||||
|
||||
Continues #1914's evidence-backed dispositions. `gen0757` and `gen2243` each
|
||||
return three independently wrong named `D(2,0)` components in the #2717 family.
|
||||
Their old goldens are **removed, not replaced by wrong values**; both full cases
|
||||
remain executing through new case-specific #2717 known-failure entries. This
|
||||
does not implement the requested-grid change or choose refusal versus masking.
|
||||
|
||||
## Prefixes, state and independent expected values
|
||||
|
||||
Both prefixes start from a nonzero offset of the original direct B-spline.
|
||||
Extension is disabled. The first operation is an independently decoded query
|
||||
or returned copy; subsequent prefix operations are evaluations. The default
|
||||
evidence decoder is not relaxed to accept aliases: only the new private proof
|
||||
walks the aliased requests, using the inspected ordered write audit.
|
||||
|
||||
- `gen0757`: first two of five steps, 66 of 108 raw scalars. Step 0's
|
||||
`base_offset(d=1.0804625073576302, tol=0.001)` returns a non-null offset kind
|
||||
`15400`; it **does not replace** the receiver. The receiver distance remains
|
||||
`0.7822430607713939`. Step 1 asks `(hu,hv,upper)=(2,0,true)` at
|
||||
`[-5.856672193765806,2.801506594459069]`. With extension disabled,
|
||||
`OffsetSurface::select_surface` explicitly clamps u to `-2.73069809326579`;
|
||||
v remains `2.801506594459069`. The expected value is the named jet **at that
|
||||
clamped point**, not the derivative of a constant continuation outside it.
|
||||
- `gen2243`: first three of six steps, 63 of 137 scalars. Step 0 is a bounding
|
||||
query, not an edit. The wrong `D(2,0)` occurs at step 2's `(2,0,true)` request,
|
||||
at in-domain UV `[-1.858474282224452,3.331215267820798]`, before step 3's swap.
|
||||
The receiver distance is `0.8689135148110283`. No post-swap value is graded.
|
||||
|
||||
For `(2,0,true)`, `D(2,0)` is stored at `2*(hv+1)=2`, then the later `D(1,1)`
|
||||
branch writes `(hv+1)+1=2` into the same slot. Serialization still names it
|
||||
`D(2,0)`. Independent 80/160-digit Cox-de Boor/Taylor algebra evaluates
|
||||
`S + d (Su x Sv)/|Su x Sv|` from original homogeneous control points, weights,
|
||||
knots and distance. No kernel derivatives or query/copy results supply a
|
||||
mathematical expected value. Ambiguous interior knots, nonregular tangents,
|
||||
normal substitution and unsupported orders are excluded by the same checks as
|
||||
the earlier input-only oracle.
|
||||
|
||||
All six named components disagree by far more than the unchanged `1e-9`
|
||||
relative rule, without an absolute floor. Precision drift is at most
|
||||
`3.9304004881181306e-77`. The ordered-write defect and independent wrong named
|
||||
value are both established; **the overwriting expression is not certified as
|
||||
a correct `D(1,1)`**. The suffix is not graded and is not asserted correct.
|
||||
|
||||
| Case | Step / raw index | Axis | Observed | Independent expected (rounded display) | Observed binary64 bits | Relative error |
|
||||
|---|---|---|---|---|---|---|
|
||||
| gen0757 | 1 / 63 | x | -2.1616383101165546 | 0.2822558764347538 | `13835422032398768568` | 1.1305749787620736 |
|
||||
| gen0757 | 1 / 64 | y | -9.08591818283331 | 0.12107242226112541 | `13844676572127350072` | 1.0133252820270687 |
|
||||
| gen0757 | 1 / 65 | z | -4.69820136261125 | -0.2167761814816701 | `13840347759758655608` | 0.9538597508385238 |
|
||||
| gen2243 | 2 / 60 | x | 0.22943334526922846 | -0.1462000843762228 | `4597434227716622333` | 1.6372224761168189 |
|
||||
| gen2243 | 2 / 61 | y | 0.24036374908130256 | -0.14694417604158103 | `4597828037016902861` | 1.611340839054218 |
|
||||
| gen2243 | 2 / 62 | z | 0.6333616623683682 | 0.05521866007976685 | `4603880034238542298` | 0.9128165417002281 |
|
||||
|
||||
## Removed encodings, controls and provenance
|
||||
|
||||
These are `[sum, abs_sum, weighted_sum]` checksum blocks of the old complete
|
||||
goldens, not bounds or replacement values. Common removed-row fields are
|
||||
`deferred=null`, `error=null`, `ints={}`, `topology=null`. Input hashes are of
|
||||
full original inputs using sorted compact Python JSON, UTF-8.
|
||||
|
||||
| Case | Full original input SHA-256 | Prefix steps / scalars | Removed old golden block / full n |
|
||||
|---|---|---|---|
|
||||
| `gen0757` | `a7fff71f532ef0b76a0f9aace5c2d210fa393ff426cb68f470377a44d426a08b` | `2/5 steps, 66/108 scalars` | `[[45835.32261187165, 45951.766035862245, 580801.8107888201]]` / `108` |
|
||||
| `gen2243` | `b5c1b0a415107215e7fdcd7fc301a26bf021c40add31c08ae54074e3f9e07f4d` | `3/6 steps, 63/137 scalars` | `[[30474.99107836607, 30522.408270029144, 3002299.3746962883]]` / `137` |
|
||||
|
||||
All **71 numerical/scope controls pass**. Five new controls bind the actual
|
||||
prefixes without changing original input/bit records, restore each independently
|
||||
expected named value and eliminate its wrong-value finding, reject extension,
|
||||
zero-distance bypasses, bit tampering and an unmodelled edit, exclude failed
|
||||
evaluations, require the returned offset's unambiguous kind, and show that a
|
||||
non-aliasing request is not proof of a wrong output. A test initially expected
|
||||
the wrong error string for the kind rejection; it was corrected to assert the
|
||||
existing stronger direct-B-spline guard, without changing that guard.
|
||||
|
||||
The other three potential-alias candidates stay unapproved: `gen1864` and
|
||||
`gen2081` are not supported canonical B-spline generators, and `gen2743`'s alias
|
||||
is after an unmodelled transform. Request shape alone never transfers a case
|
||||
into the failure registry. No other golden or known-failure entry changes.
|
||||
|
||||
The 49-member executable/raw/control archive was read back and hash-verified,
|
||||
SHA-256 `9169e48e605bddc010862db3b610c420e54372dba1ce9ad46ce73c5b35fccfb7`.
|
||||
It includes full original inputs/raw values/bits, exact old rows, both decoded
|
||||
prefixes, full-precision expected values and bounds, the models and all controls.
|
||||
Local path:
|
||||
`~/.local/share/opencode/solidcore-cleanup-evidence/pr1914-clamped-alias-prefix-20261108-0d6fda79b/`.
|
||||
|
||||
The collector remains attributed to measured head
|
||||
`7a90407a0fe189ebceb551e5df28aaf4e8cc9893`, stream SHA-256
|
||||
`735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`.
|
||||
The pre-edit head is `0d6fda79b520fb6d2d8d6a2cde89f6f51e74852b`, based on
|
||||
`3ef79991375bfb6f5cdde7c80584d76589808498`. Numerical source SHA-256 remains
|
||||
`86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`.
|
||||
No fresh collector execution is claimed.
|
||||
|
||||
Projected accounting is **164 supported replacements / 800 supported moved
|
||||
components**, **3,094 golden rows + 88 known failures = all 3,182 cases**, with
|
||||
**191 ordinary differences**, pending the real gate. These known failures are
|
||||
not successful deliveries. No production case is cropped or skipped, no
|
||||
tolerance/floor or geometry source changes, and no body-construction, topology,
|
||||
validity, volume or global-regularity claim follows. The correctness, historical
|
||||
attribution-review and canonical-CI holds remain.
|
||||
solidcore/plan/findings/surface.offset_surface--unchanged-suffix-input-oracle-evidence-2026-11-08.md
Vendored
+153
@@ -0,0 +1,153 @@
|
||||
# surface.offset_surface: seven input-only dispositions, unchanged suffixes (2026-11-08)
|
||||
|
||||
Continues #1914 with seven supported replacements / 29 moved components. Two
|
||||
scripts have complete-script proofs; five use decoded prefixes covering **every
|
||||
moved bit**, with the entire remaining output bit-identical to the four-term
|
||||
counterfactual. This proves no correctness of the unchanged suffix. No original
|
||||
input, production execution, case selection, tolerance, absolute floor or known
|
||||
failure changes. #2717's implementation and refusal-versus-mask contract remain
|
||||
separate.
|
||||
|
||||
## Independent values and scope
|
||||
|
||||
The existing independent 80/160-digit Cox-de Boor/Taylor evaluator constructs
|
||||
`O = S + d (Su x Sv) / |Su x Sv|` from the original control points, weights,
|
||||
knots and distance, with binary64 inputs converted exactly. It covers all 29
|
||||
moved scalar components with the unchanged relative `1e-9` rule and no absolute
|
||||
floor. Maximum relative discrepancy is `7.941402674945828e-14`, maximum relative
|
||||
precision drift `9.382196956836735e-78`. The counterfactual supplies changed
|
||||
indices only, never mathematical expected values.
|
||||
|
||||
The proof first tries the **complete script**. If that model produces a numerical
|
||||
disagreement, it returns that disagreement rather than trying a shorter proof.
|
||||
Only a script outside the complete decoder's scope may use a prefix. A private
|
||||
copy of the evidence record ends at an explicitly decoded operation boundary;
|
||||
the complete production case still runs. Full original input identity, raw
|
||||
output length and value/bit agreement are checked before any prefix is made.
|
||||
All moved indices must decode as independently graded receiver jets before the
|
||||
boundary. Every suffix bit, including statuses and payloads, must equal the
|
||||
counterfactual. Extension-enabled scripts and potential named-slot aliases
|
||||
**anywhere in the full original script** are refused. The prefix returned-copy
|
||||
decoder accepts only unambiguous offset kind `15400`. Default decoder callers
|
||||
still reject incomplete records; no production decoder is changed.
|
||||
|
||||
Case boundaries (steps and scalar ranges are zero-based, half-open):
|
||||
|
||||
- `gen0294`: **complete**, 7 steps / 139 scalars. The changed `D(0,3)` is at step
|
||||
2, before the unchanged inversion query. The original revolution generator's
|
||||
rational full-turn net is independently constructed, with explicit parameter
|
||||
clamping. No kernel-generated net or inversion result supplies an expected jet.
|
||||
- `gen1956`: **complete**, 2 steps / 68 scalars. The changed `D(0,3)` is at step 1.
|
||||
- `gen0046`: steps `[0,4)`, scalars `[0,131)`; moved step 1 precedes trim and a
|
||||
returned offset in the ungraded 56-scalar suffix.
|
||||
- `gen0715`: steps `[0,4)`, scalars `[0,140)`; moved step 2 follows a **returned
|
||||
copy**, not a receiver replacement. Trim/inversion form the ungraded six-scalar
|
||||
suffix. Eight rather than nine fields move; every actually moved bit is graded.
|
||||
- `gen1107`: steps `[0,4)`, scalars `[0,101)`; moved step 3 follows copy and
|
||||
precedes trim in the ungraded five-scalar suffix.
|
||||
- `gen1871`: steps `[0,4)`, scalars `[0,98)`; moved step 1 precedes trim in the
|
||||
ungraded five-scalar suffix.
|
||||
- `gen2606`: steps `[0,2)`, scalars `[0,22)`; moved step 0 precedes transform and
|
||||
a later evaluation in the ungraded 19-scalar suffix. **No post-transform
|
||||
derivative or transform-correctness claim** is made.
|
||||
|
||||
## Exact old/new encodings and original input identities
|
||||
|
||||
Each new row equals the **complete** retained collector encoding, not an encoding
|
||||
of a cropped case. Common fields stay `deferred=null`, `error=null`, `ints={}`,
|
||||
`topology=null`. `out.n` stays 187, 139, 146, 106, 103, 68 and 41 respectively.
|
||||
Only the following `[sum, abs_sum, weighted_sum]` blocks change. These blocks are
|
||||
checksums, not error bounds; every moved raw scalar is graded separately below.
|
||||
Input hashes use sorted compact Python JSON, UTF-8, of the full original input.
|
||||
|
||||
| Case | Proof steps / raw scalars; unchanged suffix | Components / max relative error | Input SHA-256 | Old → new checksum blocks |
|
||||
|---|---|---|---|---|
|
||||
| `gen0046` | `4/6 steps, 131/187 scalars; 56` | 3 / `1.37231e-15` | `dbd153151a9ece86d7374df7e75c3b8fd643697463040a2c9b0aca8d7078246c` | `[[77121.34624082278, 78371.89588151565, 7204413.02628398]]` → `[[77127.56162394208, 78413.58757987301, 7204937.948856801]]` |
|
||||
| `gen0294` | `7/7 steps, 139/139 scalars; 0` | 3 / `6.07478e-15` | `8e631a42bc095bbf10e999e257af4b43316e25bff9aa5b110989c4598f8075d1` | `[[131571.70347178396, 142646.29819385172, 8950770.303338341]]` → `[[131585.2632002976, 142668.59266738236, 8951797.094917087]]` |
|
||||
| `gen0715` | `4/6 steps, 140/146 scalars; 6` | 8 / `7.9414e-14` | `3095b349ba413411105bf66000545935862075cf6b359fe85ebb31e65a068ad5` | `[[77220.71046083543, 77311.38053866001, 3702379.153818082]]` → `[[77227.07637822005, 77297.60213367597, 3703184.8790371185]]` |
|
||||
| `gen1107` | `4/5 steps, 101/106 scalars; 5` | 6 / `6.85615e-15` | `9ea3bc28cade8ee485e49065c45b30dbad3f665b0e575a3b437e41e607b4185f` | `[[46154.69065168403, 46690.47230266395, 1392869.5927645955]]` → `[[46145.861751782475, 46681.36711117941, 1391635.70220002]]` |
|
||||
| `gen1871` | `4/5 steps, 98/103 scalars; 5` | 3 / `3.18996e-15` | `b1f76deb657f9c21511623f227d889bc3682961414b54382f3dc3db102abd84d` | `[[30452.32264385231, 31097.267325821787, 505666.83287312003]]` → `[[30457.86551369243, 31094.125835654002, 506083.6793920865]]` |
|
||||
| `gen1956` | `2/2 steps, 68/68 scalars; 0` | 3 / `9.69707e-15` | `025de42ef6f9465e60ab68ca104811b32a4bc5d9bd59e3289a451edb3d5fd2ff` | `[[31752.321348733272, 33425.56012012197, 595083.5858024094]]` → `[[31972.454180961, 33392.31834752314, 609529.5325767717]]` |
|
||||
| `gen2606` | `2/5 steps, 22/41 scalars; 19` | 3 / `2.37756e-15` | `90597c56d3e9efbe5c336f44a7b90af5dcbe4059a4667c1a442afa29d7ea3c79` | `[[3.6721180340205315, 9.99814166857267, 125.20427053028689]]` → `[[3.8326148961392716, 10.356535523557282, 128.5298394660693]]` |
|
||||
|
||||
All 29 observations (display rounded to binary64 precision; decisions and archived
|
||||
expected values use full decimal precision). Axis 0/1/2 means x/y/z:
|
||||
|
||||
| Case | Step / raw index | Partial / axis | Observed | Independent expected | Relative error |
|
||||
|---|---|---|---|---|---|
|
||||
| gen0046 | 1 / 71 | (1,2) / 0 | -28.380060620125426 | -28.380060620125423 | 9.451e-17 |
|
||||
| gen0046 | 1 / 72 | (1,2) / 1 | 6.367558855092271 | 6.367558855092262 | 1.372e-15 |
|
||||
| gen0046 | 1 / 73 | (1,2) / 2 | 31.966781891409557 | 31.966781891409568 | 3.876e-16 |
|
||||
| gen0294 | 2 / 74 | (0,3) / 0 | 34458.23563946715 | 34458.2356394673 | 4.177e-15 |
|
||||
| gen0294 | 2 / 75 | (0,3) / 1 | -3052.6896165881717 | -3052.6896165881813 | 3.111e-15 |
|
||||
| gen0294 | 2 / 76 | (0,3) / 2 | 38200.35328405772 | 38200.353284057484 | 6.075e-15 |
|
||||
| gen0715 | 2 / 120 | (0,3) / 0 | -0.0009522569330325635 | -0.000952256933032534 | 3.094e-14 |
|
||||
| gen0715 | 2 / 121 | (0,3) / 1 | -0.008402533916048624 | -0.008402533916048654 | 3.551e-15 |
|
||||
| gen0715 | 2 / 122 | (0,3) / 2 | -0.002305644043414734 | -0.0023056440434147387 | 2.071e-15 |
|
||||
| gen0715 | 2 / 129 | (1,2) / 0 | -0.10535987629543768 | -0.1053598762954376 | 7.396e-16 |
|
||||
| gen0715 | 2 / 130 | (1,2) / 1 | 0.006463147274761187 | 0.006463147274760673 | 7.941e-14 |
|
||||
| gen0715 | 2 / 131 | (1,2) / 2 | -0.032374004940173076 | -0.032374004940173215 | 4.273e-15 |
|
||||
| gen0715 | 2 / 136 | (2,1) / 1 | 2.3190759575134994 | 2.319075957513507 | 3.178e-15 |
|
||||
| gen0715 | 2 / 137 | (2,1) / 2 | -2.6345573074983024 | -2.634557307498287 | 5.822e-15 |
|
||||
| gen1107 | 3 / 89 | (1,2) / 0 | 36.912671780944954 | 36.91267178094503 | 2.167e-15 |
|
||||
| gen1107 | 3 / 90 | (1,2) / 1 | -38.609716645925296 | -38.609716645925225 | 1.802e-15 |
|
||||
| gen1107 | 3 / 91 | (1,2) / 2 | -39.64200472819031 | -39.642004728190365 | 1.385e-15 |
|
||||
| gen1107 | 3 / 95 | (2,1) / 0 | 25.86625615297529 | 25.866256152975268 | 8.698e-16 |
|
||||
| gen1107 | 3 / 96 | (2,1) / 1 | 26.864676213724515 | 26.8646762137247 | 6.856e-15 |
|
||||
| gen1107 | 3 / 97 | (2,1) / 2 | -16.43263921285802 | -16.43263921285799 | 2.054e-15 |
|
||||
| gen1871 | 1 / 74 | (1,2) / 0 | 0.8535555622602854 | 0.8535555622602853 | 9.382e-17 |
|
||||
| gen1871 | 1 / 75 | (1,2) / 1 | -0.6555910077224903 | -0.6555910077224882 | 3.190e-15 |
|
||||
| gen1871 | 1 / 76 | (1,2) / 2 | 0.8089661538410308 | 0.8089661538410307 | 1.672e-16 |
|
||||
| gen1956 | 1 / 65 | (0,3) / 0 | -632.537752764933 | -632.5377527649268 | 9.697e-15 |
|
||||
| gen1956 | 1 / 66 | (0,3) / 1 | 1400.051215352398 | 1400.051215352393 | 3.556e-15 |
|
||||
| gen1956 | 1 / 67 | (0,3) / 2 | 853.8463232765255 | 853.8463232765242 | 1.402e-15 |
|
||||
| gen2606 | 0 / 17 | (1,2) / 0 | -0.01668319697464882 | -0.01668319697464886 | 2.378e-15 |
|
||||
| gen2606 | 0 / 18 | (1,2) / 1 | -0.08226529945828799 | -0.082265299458288 | 2.328e-16 |
|
||||
| gen2606 | 0 / 19 | (1,2) / 2 | 0.25944535855167694 | 0.25944535855167716 | 8.984e-16 |
|
||||
|
||||
The complete suffix digests are SHA-256 of each raw u64 bit pattern encoded
|
||||
big-endian, concatenated in output order:
|
||||
|
||||
| Case | Suffix scalars | Suffix bits SHA-256 |
|
||||
|---|---|---|
|
||||
| gen0046 | 56 | `f25d4910341087acdf5c2f761cf5f654286070e583fbe8a04fefea9aeb6b875c` |
|
||||
| gen0715 | 6 | `7d995755fcb29d284d08fbf128459ab6bd6db711d77d2f29ebb960be9edecafb` |
|
||||
| gen1107 | 5 | `d0c794b747c8caf28182702f2a59282c854fa40f4a50c1446f8df2f83359e15f` |
|
||||
| gen1871 | 5 | `e4d7dca9a8dd98ef3dba9038fde2c7b9d591cedc2458b6654a85f29e2a92fc29` |
|
||||
| gen2606 | 19 | `bb3ae3fb0a4f5fde38e896a01c336fc4c21d8d873090bd768a6b22921de55a1d` |
|
||||
|
||||
## Controls, provenance and limits
|
||||
|
||||
All **66 numerical/scope controls pass**. The seven added controls prefer the
|
||||
complete-script proof, preserve the complete original record during prefixing,
|
||||
reject a moved suffix, changed input/shape or tampered value/bit pair, reject a
|
||||
wrong prefix value despite an unchanged tail and a potential suffix alias, keep
|
||||
the default decoder strict, and bind the actual retained `gen0046` before
|
||||
deliberately moving a suffix field. The 23 numerical disagreements in this scan
|
||||
remain visible and unapproved; an unchanged suffix is never a correctness waiver.
|
||||
|
||||
The 44-member executable/raw/control archive was read back and hash-verified:
|
||||
`ffbef76485eb2d56b266d1e1dad0a8c785d27f05dfe03023ed629b1439026afe`.
|
||||
It retains all original inputs/raw values/bits, full-precision observations and
|
||||
disagreements, exact old/new rows, controls, prefix boundaries/suffix digests and
|
||||
the previous strict helper sources. Local path:
|
||||
`~/.local/share/opencode/solidcore-cleanup-evidence/pr1914-unchanged-suffix-input-oracle-20261108-8e07893cf/`.
|
||||
|
||||
The raw collector was measured at `7a90407a0fe189ebceb551e5df28aaf4e8cc9893`,
|
||||
stream SHA-256 `735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`;
|
||||
counterfactual stream SHA-256
|
||||
`56cd28f6ad7ff18c4890469a148c0cfbaf49b70ff241ff9136cfbfee01d84dd1`.
|
||||
The archive's pre-edit head is `8e07893cff99db33d90e3ed10d6551a87587f032`.
|
||||
Before applying these seven rows the branch was refreshed onto main
|
||||
`3ef79991375bfb6f5cdde7c80584d76589808498`, preserving every PR-owned file byte,
|
||||
at `c8262aea0a1d8c77f4a718e037ef698ee56385eb`. Numerical source SHA-256 stays
|
||||
`86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`.
|
||||
These are not relabelled as new raw-collector measurements.
|
||||
|
||||
All other expected rows and all 86 known failures remain unchanged. All 3,182
|
||||
cases remain selected as 3,096 golden rows plus 86 known failures. Projected
|
||||
accounting is **164 supported cases / 800 moved components / 193 ordinary
|
||||
differences**, pending the real full-case gate. This data-only disposition makes
|
||||
no body-construction, topology, validity, volume, post-edit or global-regularity
|
||||
claim. No full-suite or canonical-CI success, review resolution or readiness is
|
||||
implied; the correctness and attribution-review holds remain.
|
||||
solidcore/plan/findings/surface.offset_surface--unused-extension-input-oracle-evidence-2026-11-08.md
Vendored
+116
@@ -0,0 +1,116 @@
|
||||
# surface.offset_surface: two enabled-but-unused extension prefixes (2026-11-08)
|
||||
|
||||
Continues #1914 with two supported replacements / 12 moved components. Enabling
|
||||
extension is not executing an extension. These prefixes never leave the original
|
||||
direct B-spline domain, and contain no operation that can have created a stored
|
||||
extension beforehand. This is not evidence for actual extension behavior. All
|
||||
full original production cases remain executing, with no decoder relaxation,
|
||||
input change, crop, skip, tolerance/floor change or new compatibility flag.
|
||||
|
||||
## State proof and mathematical values
|
||||
|
||||
`OffsetSurface::new` starts with `extended_surface=None` and an empty pending
|
||||
extension (`surface/offset_surface.rs:430-436`). `select_surface` reads the
|
||||
extension flag only after a point falls outside the natural domain
|
||||
(`:1304-1348`). Thus an original direct B-spline, with only in-domain point
|
||||
requests and the audited read-only queries/scalar setters, cannot reach either
|
||||
the extension or clamping branch. `put_grid` samples only the natural domain;
|
||||
`put_state` runs that grid on a clone, not a replacement receiver
|
||||
(`crates/goldens/src/units/surface_offset_surface.rs:836-874`). Copies, type and
|
||||
knot queries and scalar setters introduce no extended surface. The two accepted
|
||||
prefixes actually use only `eval` and `state`.
|
||||
|
||||
The private proof audits **every** prefix operation and point request, not just
|
||||
the moved evaluation. Other operations, earlier out-of-domain queries, nested
|
||||
bases, possible named-slot aliases anywhere in the original script, ambiguous
|
||||
interior knots, nonregular tangents and normal-substitution/step-off thresholds
|
||||
remain excluded. It validates full original input identity, output shape and
|
||||
every value/bit pair against the retained counterfactual, decodes the prefix at
|
||||
an operation boundary, grades every moved bit, and proves the entire suffix
|
||||
bit-identical. No suffix-correctness or post-edit claim follows.
|
||||
|
||||
Original binary64 inputs are converted exactly. Independent 80/160-digit
|
||||
Cox-de Boor/Taylor jets differentiate `S + d (Su x Sv)/|Su x Sv|`, without using
|
||||
kernel jets or a kernel-generated net. All 12 moved components satisfy strict
|
||||
relative `1e-9` without an absolute floor. Maximum relative discrepancy is
|
||||
`8.805332234651928e-14`; maximum relative precision drift is
|
||||
`4.472617148231448e-77`.
|
||||
|
||||
- `gen2007`: first **1/3 steps, 32/36 scalars**. The changed equal-order
|
||||
upper-half evaluation is at `[0.9822670381287524,0.6137966653036512]` in original
|
||||
domain `[0,0]–[1,1]`, distance `0.8570806631900703`. The four-scalar suffix
|
||||
contains swap and equality; no post-swap/equality correctness is claimed.
|
||||
Suffix SHA-256: `19bc6bb623ffec75dcd46d274dff9c601467c2db29de1ce040b5dae0eca63c9c`.
|
||||
- `gen2248`: first **2/7 steps, 74/308 scalars**. After the original state query,
|
||||
the changed evaluation is at `[-1.3714566043894583,-0.6961094625742988]` in
|
||||
original domain `[-1.9135790103933323,-0.8312686221256724]–[1.3829268584332177,-0.2906319839201781]`,
|
||||
distance `-27.14016406633157`. Split, trim, copy, reverse and state form the
|
||||
**234-scalar ungraded suffix**, all unchanged bits. Suffix SHA-256:
|
||||
`16665a339beb0204f724908b09b01bbd38d7dde4273d04406f89552667d69ee8`.
|
||||
|
||||
Suffix digests concatenate big-endian u64 binary64 bit patterns in output order.
|
||||
|
||||
## Complete original encodings and observations
|
||||
|
||||
New rows equal the complete original collector encoding, not a cropped record.
|
||||
Common fields stay `deferred=null`, `error=null`, `ints={}`, `topology=null`;
|
||||
`out.n` stays **36 / 308**. For `gen2248`, the complete second checksum block is
|
||||
unchanged too. Blocks are `[sum, abs_sum, weighted_sum]`, not error bounds.
|
||||
Input hashes use sorted compact Python JSON, UTF-8, of the full original input.
|
||||
|
||||
| Case | Components / max relative error | Original input SHA-256 | Old → new checksum blocks |
|
||||
|---|---|---|---|
|
||||
| `gen2007` | 9 / `1.08547e-14` | `40979f91a5c8143e5b0b2e560902302e5bc30d21b034c5bc5e5bee592e922ac6` | `[[8385.129761675184, 10208.861909515392, 240531.36113004576]]` → `[[7433.183654517214, 8963.545179952707, 224246.08082010786]]` |
|
||||
| `gen2248` | 3 / `8.80533e-14` | `a8b8b0afe101dabe69c50ee63ee7897ba829c8c8873bd9089fde1faf5ce3d839` | `[[156372.75134309038, 252429.00380531867, 19263689.92973941], [40312.70837088957, 63077.20645060704, 274696.5340730896]]` → `[[155970.61055021366, 252143.7086417839, 19234501.757323023], [40312.70837088957, 63077.20645060704, 274696.5340730896]]` |
|
||||
|
||||
All moved observations (display rounded; decisions use archived full precision):
|
||||
|
||||
| Case / raw index | Partial / axis | Observed | Independent expected | Relative error |
|
||||
|---|---|---|---|---|
|
||||
| gen2007 / 11 | (0,3) / x | 5.840236929270969 | 5.8402369292709695 | 2.153e-16 |
|
||||
| gen2007 / 12 | (0,3) / y | -5.829472830029468 | -5.829472830029531 | 1.085e-14 |
|
||||
| gen2007 / 13 | (0,3) / z | 4.353237972167417 | 4.3532379721674035 | 2.990e-15 |
|
||||
| gen2007 / 20 | (1,2) / x | 59.72664999179381 | 59.72664999179384 | 4.863e-16 |
|
||||
| gen2007 / 21 | (1,2) / y | -30.088202301598827 | -30.088202301598802 | 8.212e-16 |
|
||||
| gen2007 / 22 | (1,2) / z | 36.106361567067125 | 36.10636156706718 | 1.572e-15 |
|
||||
| gen2007 / 26 | (2,1) / x | 366.6287166271855 | 366.6287166271859 | 1.137e-15 |
|
||||
| gen2007 / 27 | (2,1) / y | -58.98860905290834 | -58.988609052908714 | 6.378e-15 |
|
||||
| gen2007 / 28 | (2,1) / z | 261.43275620586513 | 261.43275620586473 | 1.606e-15 |
|
||||
| gen2248 / 71 | (1,2) / x | -38.71656614072562 | -38.71656614072553 | 2.136e-15 |
|
||||
| gen2248 / 72 | (1,2) / y | -3.1621556721435087 | -3.1621556721432302 | 8.805e-14 |
|
||||
| gen2248 / 73 | (1,2) / z | -17.167331184126198 | -17.167331184125945 | 1.462e-14 |
|
||||
|
||||
## Controls, preserved evidence and limits
|
||||
|
||||
All **78 numerical/scope controls pass**. Seven new controls establish the
|
||||
enabled-but-unused flag on an independent affine-plane closed form; reject
|
||||
out-of-domain evaluations and earlier out-of-domain normal queries; allow only
|
||||
bit-identical suffixes after every moved field; reject a wrong jet despite an
|
||||
unused flag; keep the previous stricter model unchanged; reject aliases,
|
||||
tampered bits and changed full inputs; and bind both actual retained prefixes
|
||||
before deliberately moving a suffix field. `gen2690` independently disagrees
|
||||
and remains unapproved. Actual extensions and other unsupported scripts stay red.
|
||||
|
||||
The **56-member archive** was read back and hash-verified, SHA-256
|
||||
`b2b23e145751baaa363d55a718475028b67f24f513de9dce23d9884d297e1064`.
|
||||
It retains executable models/controls, complete original inputs/raw values/bits,
|
||||
full-precision observations/disagreements, old/new encodings, prefix/suffix
|
||||
identities and the inspected production source snapshots. Local path:
|
||||
`~/.local/share/opencode/solidcore-cleanup-evidence/pr1914-unused-extension-20261108-beb1eb184/`.
|
||||
|
||||
Pre-edit head: `beb1eb1843a2e988eb42ab169467494395fc6047`, based on
|
||||
`3ef79991375bfb6f5cdde7c80584d76589808498`. The collector remains attributed to
|
||||
its actual measured `7a90407a0fe189ebceb551e5df28aaf4e8cc9893` head, raw SHA-256
|
||||
`735d018cce5a61c0ffd3479cf6b2f780182779dcfba91d2f8bb89e20583bb958`.
|
||||
Numerical source SHA-256 stays
|
||||
`86565c6a5d30bf5e8efb6e3dcbe8b34b4ecb4683d60982a4e214adb525889bef`.
|
||||
No new collector execution is claimed.
|
||||
|
||||
Only these two complete expected rows change; every other row and all 88 known
|
||||
failures remain unchanged. Projected accounting is **166 supported cases / 812
|
||||
moved components**, all **3,182 cases = 3,094 golden rows + 88 known failures**,
|
||||
and **189 ordinary differences**, pending the actual gate. This proves no actual
|
||||
extension, suffix correctness, B-rep, topology, validity, volume or global
|
||||
regularity result. Correctness/review holds remain. Parent canonical run
|
||||
42475855876 stopped at `action_required`, zero jobs, not success; no approval,
|
||||
rerun, review resolution or readiness is implied.
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
Updates: WR-160
|
||||
|
||||
#### WR-160 (update, 2026-10-31). The four third-order terms are corrected by default
|
||||
- **Location:** `source/SMLib/src/SmOffsetSurface.cpp:1468`, `:1479`, `:1482` and `:1491`, `SmOffsetSurface::EvaluatePlainOrSimple` (the pinned v1.0.1 source; the same four terms in `crates/solidcore/src/surface/offset_surface.rs`).
|
||||
- **What changed:** solidcore corrects exactly four third-order terms unconditionally:
|
||||
1. `Cuuv`'s `Buuv x Buv` coefficient is `1.0`, not upstream's `3.0` (the derivative of `Cuu` gives `2 - 1 = 1`; the two cross-product terms cancel one sign).
|
||||
2. `Cuvv`'s `Buvv x Buv` coefficient is `-1.0`, not upstream's `3.0` (the derivative of `Cvv` gives `1 - 2 = -1`).
|
||||
3. `Duvv` adds `Buvv` (`d(1, 2)`), not `Buuv` (`d(2, 1)`).
|
||||
4. `Dvvv` adds `Bvvv` (`d(0, 3)`), not `Buuv` (`d(2, 1)`).
|
||||
The correction can change `Duuv`, `Duvv` and `Dvvv`; downstream effects are unmeasured. Sampled bits for orders 0..2 and `Duuu` are retained in a regression, not a universal bit-identity proof.
|
||||
- **Evidence:** a new focused unit test uses the biquadratic Bezier base `B(u, v) = (u + u^2 v, v + u v^2, u v)` on `[0, 1]^2`, whose `Bu x Bv = (1 + uv) q` with `q = (-v, -u, 1 + 3uv)` gives both `Buuv x Buv` and `Buvv x Buv` non-zero (a surface of revolution alone cannot reach the `Cuvv` coefficient). The test builds it through the public `BSplineSurface::from_data` (quadratic 3x3 clamped net), constructs a public `OffsetSurface::new` and calls the public `OffsetSurface::evaluate(uv, 3, 3, flags)` with `flags.only_upper_half = true` at `(0.25, 0.5)` and `(0.5, 0.25)` with `d = +0.125` and `-0.125`. This requests total order 3 in the upper triangle of a 4x4 matrix; a full rectangular `(3, 3)` request exceeds the existing derivative bound and is not claimed. The oracle is the independently derived closed-form `B + d q / sqrt(L)`, `L = 1 + u^2 + v^2 + 6uv + 9u^2v^2`, checked to `1e-10` relative without an absolute floor. Before the four corrections the test failed on `Suuv.x` (`1.850528767371623` vs the closed-form `1.740100020590324` at `d = 0.125`, `uv = (0.25, 0.5)`); after them it passes, and a second test retains pre-fix default bits for orders 0..2 and `Suuu` at those four samples.
|
||||
- **Still unfixed:** `WR-162` (the upper-half, unequal-order second-derivative slot write) is separate and remains. The fix makes no claim about `SM_API` higher derivatives or an end-to-end `CrvOnSurf` improvement; an in-kernel `CrvOnSurf` evaluator that reads these third partials can consume the corrected values, but no production case that does was measured.
|
||||
- **Default-path regression (2026-11-04):** test-only commit `6cb0f2987ed9336e0a385de522258d6266b546c0` compiled and failed with exit 101 on `Suuv.x = 1.850528767371623` versus the closed form `1.740100020590324`. Fix `8ec4825280f7b2f9a41fc4183d609f8a080146e9` passed all 23 offset tests, including the default-kernel oracle and four-sample bit controls, strict kernel Clippy, wasm and formatting. Individual one-term mutation runs were not performed.
|
||||
- **Native diagnostic:** at `8ec4825`, the existing `surface.offset_surface` runner observed 3,182 cases: 2,663 passed, 519 failed, zero deferred. In `third_derivative_outputs`, all ten mismatches map to the corrected `Duvv` or `Dvvv` slots; both original WR-160/161 records name this confirmed fixture. It alone is parked with `cpp_defect = "WR-161"`, whose explanation names both defects. The other 518 failures remain unparked, including `upper_half_slot_overwrite`; see `plan/findings/surface.offset_surface--default-third-derivatives-diagnostic-attribution.md`. No native parity or complete attribution is claimed.
|
||||
- **Reference limitation:** headers in the preserved reference copies match all 492 SMLib/SM_API blobs at pinned `3fd5b9548d19aa8c12c29bc9637a96d42a06f8a5`; shared `cpp-v101` library hashes match preserved historical build receipts. This is source/hash provenance, not a reproducible-build proof. The full `curve.crv_on_surf` run timed out without a summary; it is not a pass or evidence of an end-to-end improvement.
|
||||
+432
@@ -0,0 +1,432 @@
|
||||
Updates: WR-160
|
||||
|
||||
#### WR-160 (update, 2026-11-04): confirmed per-case attribution
|
||||
|
||||
- **Confirmed:** yes, for the listed cases and measured components, conditional on traced base derivatives and the local formula.
|
||||
- **Location:** `source/SMLib/src/SmOffsetSurface.cpp`, `SmOffsetSurface::EvaluatePlainOrSimple`; see existing WR-160 record.
|
||||
- **Algebra:** Differentiating the cross product gives Cuuv coefficient 1 rather than 3 for Buuv × Buv.
|
||||
- **Evidence and scope:** At source commit `8ec4825280f7b2f9a41fc4183d609f8a080146e9`, the native diagnostic reported 3,182 cases, 2,663 pass and 519 fail; the 518 remaining cases below contain 2,206 mismatches. The legacy counterfactual reverts all four terms as a bundle: full outputs, statuses and lengths agree with C++ at the unchanged 1e-9 relative comparator for all 518. This is not a single-term isolation or proof of C++ internals. The Rust runs used their own inputs, not C++ outputs. Pinned C++ source/header blobs match `3fd5b9548d19aa8c12c29bc9637a96d42a06f8a5`; native library hashes match historical build receipts, not a reproducible-build proof. No current integrated-head native pass is claimed. Original runner inputs are reconstructed at the source commit using `crates/difftest/src/units/surface_offset_surface.rs` and the fixture or generator seed indicated per case, with the canonical input hash as a check.
|
||||
|
||||
The independent high-precision local jets and this algebra, together with the bundle counterfactual, support a C++ defect for each listed case within the maintainer-authorized scope. Geometry providers, clamping, extensions and outer wrappers are not globally proved. See `plan/findings/surface.offset_surface--default-third-derivatives-diagnostic-attribution--addendum-2026-11-04-per-case-four-term-attribution.md`.
|
||||
|
||||
### gen0000
|
||||
|
||||
Source: `generated:seed=7714667220713741961`; canonical input SHA-256: `d86adf0182edf66bca08bb424017b4636e5e3d8f620f594de13d1d51274a2a33`.
|
||||
Steps: `[{"ivl":null,"op":"knots","param":0},{"hu":2,"hv":1,"nzt":false,"op":"eval","ul":true,"upper":false,"uv":[2.3355856564636195,0.8434519827610206],"via":true,"vl":true},{"op":"normal","ul":true,"uv":[-1.214248178557854,0.75],"via":true,"vl":true}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["2.3355856564636195","0.8434519827610206"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":4604929028410531046,"effective_uv_bits":[4612441690146088124,4605772359615811293],"hod":3,"used_extension":false},"simple":true,"step":1,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[24]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-12.227574803897136` (`0xc0287484af48437d`) | `-12.227574803897136` (`0xc0287484af48437d`) | `-11.67420743125171` (`0xc0275931b767e47d`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-11.674207431251701923447684752528402870886345922023930357967114578427701557975186","observed":"-11.6742074312517107870235122391022741794586181640625","relative_error":"7.5924433240400453895755513524838710025577317312992036246181046299818049739560316E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[25]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `12.444954109737397` (`0x4028e3d1066b15f9`) | `12.444954109737397` (`0x4028e3d1066b15f9`) | `12.419601413286166` (`0x4028d6d5ff16d6c4`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"12.419601413286166905095879980692937743458380817341049670708281535729131705305772","observed":"12.41960141328616629152747918851673603057861328125","relative_error":"4.9403228040458421501098763621267610191349025267442921687652739272436936516377650E-17"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[26]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `2.0276398940869482` (`0x4000389b43c958c6`) | `2.0276398940869482` (`0x4000389b43c958c6`) | `1.8561025277274346` (`0x3ffdb2989069cbd6`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"1.8561025277274457808847821069222649188271620657573865776262319423109172263609532","observed":"1.856102527727434559068342423415742814540863037109375","relative_error":"6.0459033227130775078996338411729040342671175233588766961323942288598855299553108E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen0188
|
||||
|
||||
Source: `generated:seed=7714667220713742149`; canonical input SHA-256: `5e83f9202e9fb09597713cd3a70572dfd25075fcb041ba89d15c5e48f8776b12`.
|
||||
Steps: `[{"op":"copy"},{"op":"normal","ul":true,"uv":[1.5691969346358605,0.4392693148918997],"via":false,"vl":true},{"op":"eval_pt","uv":[1.6211505359860625,0.43432097181076346],"via":false},{"op":"normal","ul":true,"uv":[1.788472050253253,-0.9363306057511785],"via":false,"vl":true},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.9330594195962286,0.0],"via":false,"vl":true}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"1","effective_uv_decimal":["1.0817446888166975","0.0"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":4471350808576507456,"effective_uv_bits":[4607550564150111804,0],"hod":3,"used_extension":false},"simple":false,"step":4,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[85]`; 4; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `0.09948975123201027` (`0x3fb978290bd4230d`) | `0.09948975123201027` (`0x3fb978290bd4230d`) | `0.09948975296163098` (`0x3fb978291341e000`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.099489752961630983918364570622987197304678328251607194338796804074889057333065110","observed":"0.0994897529616309839184395968914031982421875","relative_error":"7.5411051070692090090684339111909367177086197349175452969473722323333592682274881E-22"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen0266
|
||||
|
||||
Source: `generated:seed=7714667220713742227`; canonical input SHA-256: `984b9941277afdeb2f272c579c34dd04817a5f861056c20be69b912946ee693a`.
|
||||
Steps: `[{"hu":2,"hv":1,"nzt":false,"op":"eval","ul":false,"upper":false,"uv":[0.1368337682830849,3.8675261073002405],"via":false,"vl":false},{"dom":[0.0,2.479152079378988,1.0,4.902819980658611],"expand":true,"op":"bbox","want":[false,true,false]},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":true,"uv":[0.14306597911533814,4.902819980658611],"via":false,"vl":true},{"op":"transform","origin":[-0.05455171692083516,1.2103679507128482,-1.5556776964513093],"scale":[1e-06,1e-06,1e-06],"x":[-0.748167294862878,-0.06001569071144388,0.6607902963618577],"y":[-0.18131727502142322,-0.967982329392702,-0.1735922111221694]}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["0.1368337682830849","3.8675261073002405"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15020,"distance_bits":4472155641099042081,"effective_uv_bits":[4594097976353346640,4615891313367858922],"hod":3,"used_extension":false},"simple":true,"step":0,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[19]`; 0; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `8.232316805511756` (`0x402076f23a73f7e7`) | `8.232316805511756` (`0x402076f23a73f7e7`) | `8.232316773426959` (`0x402076f239605cb0`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"8.2323167734269588891038523554338871612630692415820879185577603224735725405808274","observed":"8.232316773426958889103843830525875091552734375","relative_error":"1.0355417857081501988043106060875015783271648607593020350094693536878565991983788E-24"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen0693
|
||||
|
||||
Source: `generated:seed=7714667220713742654`; canonical input SHA-256: `09f41f3cf32a195ae9340c98529931e9695223d011e272821c2ff36b6ab0ea12`.
|
||||
Steps: `[{"op":"state"},{"hu":2,"hv":1,"op":"eval_simple","ul":false,"upper":false,"uv":[0.25,2.2714559620354917],"via":false,"vl":false},{"hu":0,"hv":0,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.04396972125911869,2.4800487823977804],"via":true,"vl":true},{"op":"eval_pt","uv":[0.8378504980348408,-3.8775965970128015],"via":false},{"dom":[0.0,1.4218881183066046,1.0,4.994600456588541],"expand":true,"op":"bbox","want":[true,false,false]},{"dom":[0.0,1.4218881183066046,1.0,4.994600456588541],"expand":true,"op":"bbox","want":[true,true,false]}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["0.25","2.2714559620354917"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":13827477389403381660,"effective_uv_bits":[4598175219545276416,4612297282912123174],"hod":3,"used_extension":false},"simple":true,"step":1,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[71]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-0.0945933091700395` (`0xbfb83744614e44c0`) | `-0.0945933091700395` (`0xbfb83744614e44c0`) | `-0.5418760696489624` (`0xbfe1570c7bb412f0`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.54187606964896209782551952938641205900013574124177905436843330111738114392314500","observed":"-0.5418760696489623995830697822384536266326904296875","relative_error":"5.5687557940755034392577385062935373001312845590477668638023494816141176537990166E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[72]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `3.351061564844372` (`0x400acef95d9f1d00`) | `3.351061564844372` (`0x400acef95d9f1d00`) | `3.4886507237847235` (`0x400be8c1b5ee93b2`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"3.4886507237847228905904671530765907809639606607416446936756710007715363116090550","observed":"3.48865072378472351743994295247830450534820556640625","relative_error":"1.7968249774209357904638078153859893880467840106352835668789187777421965450276448E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[73]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `3.2089936762114855` (`0x4009ac04e0633172`) | `3.2089936762114855` (`0x4009ac04e0633172`) | `2.893475439687791` (`0x400725d67389e801`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"2.8934754396877916644739801509802835808138920064080410286652481924484771227084132","observed":"2.893475439687791084253376538981683552265167236328125","relative_error":"2.0052722606645137845248322210573243238743434433824170864553736300606240870971096E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen0704
|
||||
|
||||
Source: `generated:seed=7714667220713742665`; canonical input SHA-256: `2588ffe7b51755622083174036545aa52f23abffb20612e9cf11b4c195308a4c`.
|
||||
Steps: `[{"op":"state"},{"op":"eq","other":{"allow":false,"base":{"bspline":{"form":9,"net":[[[-1.5906605258319162,1.0598152136993677,-1.3157291935997713,-1.7976931348623157e+308],[-1.3023252228906999,1.1134112882709148,-0.8982446305925211,-1.7976931348623157e+308],[-1.1272096812759829,1.148592060415123,-0.35964248736507665,-1.7976931348623157e+308],[-1.0003777618411274,1.1759194552485852,0.2306113764999571,-1.7976931348623157e+308]],[[-1.707407571677413,1.5473525708378644,-1.2863151934684094,-1.7976931348623157e+308],[-1.4134124698261006,1.601869217113381,-0.8748852373645151,-1.7976931348623157e+308],[-1.2233356581041905,1.6394834541447525,-0.3522880106920381,-1.7976931348623157e+308],[-1.0775757695006385,1.6698895012602288,0.2177175343518323,-1.7976931348623157e+308]],[[-1.9593650662845123,2.012897819212761,-1.1122589313977542,-1.7976931348623157e+308],[-1.6356040258261915,2.0722559238614404,-0.7326712828100117,-1.7976931348623157e+308],[-1.3668431027837922,2.1226682068276967,-0.2942468988750464,-1.7976931348623157e+308],[-1.121537492295005,2.1692654607818627,0.16926895907927736,-1.7976931348623157e+308]],[[-2.2828844635026666,2.466803455708791,-0.8616488559410298,-1.7976931348623157e+308],[-1.9165989939721473,2.5330781994029827,-0.5275519934945618,-1.7976931348623157e+308],[-1.5354278104930332,2.601774118702904,-0.20937922090820743,-1.7976931348623157e+308],[-1.14790847559803,2.6715025708999853,0.1020025751793832,-1.7976931348623157e+308]],[[-2.5870357200343244,2.923859338805046,-0.6317579756656828,-1.7976931348623157e+308],[-2.18167889114134,2.9964890764550383,-0.3394579554528663,-1.7976931348623157e+308],[-1.6972253878903518,3.0819839638124122,-0.1317721199854112,-1.7976931348623157e+308],[-1.1790403708502462,3.1729653141377416,0.03982920797702945,-1.7976931348623157e+308]]],"oob":false,"p":1,"q":2,"u":[2.358943599315694,2.358943599315694,2.689492632873705,3.988133272280419,4.84847779985509,5.962416397517994,5.962416397517994],"v":[0.0,0.0,0.0,0.006640290215333633,1.0,1.0,1.0]}},"d":0.31334513864035585,"owns":false,"sing":0}},{"hu":2,"hv":1,"op":"eval_simple","ul":true,"upper":false,"uv":[0.23897749219580744,4.1273888315602125],"via":true,"vl":false},{"dom":[0.0,1.150223655157201,1.0,4.1570437694580455],"expand":false,"op":"bbox","want":[false,true,false]},{"hu":2,"hv":1,"op":"eval_simple","ul":false,"upper":false,"uv":[0.7934594627202374,2.6921834621193073],"via":true,"vl":true},{"ivl":[0.5408239619845675,1.2500215336607046],"op":"knots","param":0}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["0.23897749219580744","4.1273888315602125"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15020,"distance_bits":13823981171229410796,"effective_uv_bits":[4597778091848959216,4616333045128344834],"hod":3,"used_extension":false},"simple":true,"step":2,"upper":false}`.
|
||||
Trace: `{"call":"1","effective_uv_decimal":["0.7934594627202374","2.6921834621193073"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15020,"distance_bits":13823981171229410796,"effective_uv_bits":[4605322067026557326,4613244677018424170],"hod":3,"used_extension":false},"simple":true,"step":4,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[74]`; 2; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-0.33396465707019757` (`0xbfd55fad4c08ba05`) | `-0.33396465707019757` (`0xbfd55fad4c08ba05`) | `0.03794139253368374` (`0x3fa36d0de03198fa`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.037941392533683562206226558594557359644496805360231560332647254337718586481972756","observed":"0.03794139253368374042896249420664389617741107940673828125","relative_error":"4.6973166780156761732352465411100623442486039674220830888248804197656726821845867E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[75]`; 2; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `0.030361924414052943` (`0x3f9f1732419ba100`) | `0.030361924414052943` (`0x3f9f1732419ba100`) | `-0.3143813116203811` (`0xbfd41ed2caf88510`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.31438131162038054311087393435054414796915487541309386592892605544561063430311270","observed":"-0.31438131162038107646594653488136827945709228515625","relative_error":"1.6965228303537425110730540964403644724501111331110747148308218943941773515227386E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[76]`; 2; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `0.010310147895697508` (`0x3f851d7ca03b4700`) | `0.010310147895697508` (`0x3f851d7ca03b4700`) | `-0.14278456507835618` (`0xbfc246c3beb14bba`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.14278456507835580034739478870026648385920850657036025895978839985671004915140614","observed":"-0.142784565078356184830710162714240141212940216064453125","relative_error":"2.6927512449473811080709728145205988528840698553733677085909736019843807766650746E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[109]`; 4; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-0.4667341580887969` (`0xbfdddef8f23ab7f0`) | `-0.4667341580887969` (`0xbfdddef8f23ab7f0`) | `0.1394536543026621` (`0x3fc1d99e0a44d0d8`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.13945365430266221311179313804401217813256478308492967514492805987106258671215225","observed":"0.1394536543026621000507248027133755385875701904296875","relative_error":"8.1074295901883917934555748783047968525232691236039720631249850426314465310074799E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[110]`; 4; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-1.7815827067506433` (`0xbffc815cde49cf8d`) | `-1.7815827067506433` (`0xbffc815cde49cf8d`) | `-2.0853264829068507` (`0xc000aebfa6ac8a80`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-2.0853264829068500484027431606893283716969543259781724262093124876604248108625148","observed":"-2.08532648290685074243810959160327911376953125","relative_error":"3.3281856444054748664625468868312812220264473137570551627214707024726672355925752E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[111]`; 4; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `1.4367520623094876` (`0x3ff6fcefbb0146e0`) | `1.4367520623094876` (`0x3ff6fcefbb0146e0`) | `1.7383163587384411` (`0x3ffbd024d06e2271`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"1.7383163587384412424320042471037313233055330393129155129690131550159868858789524","observed":"1.7383163587384411474801026997738517820835113525390625","relative_error":"5.4622912032099779915310551516506331085416963544722617915414206196662123617033316E-17"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen0742
|
||||
|
||||
Source: `generated:seed=7714667220713742703`; canonical input SHA-256: `b99ba94e058200def521ec5e716b96235f2cff52586710bd9d6d1551f9d680fd`.
|
||||
Steps: `[{"op":"state"},{"hu":0,"hv":0,"nzt":false,"op":"eval","ul":true,"upper":false,"uv":[0.0,0.6378214581648076],"via":false,"vl":true},{"ivl":[0.2893175885655095,0.739441713316929],"op":"knots","param":0},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.0,0.6715971687278237],"via":false,"vl":true}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"1","effective_uv_decimal":["0.0","0.6715971687278237"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15020,"distance_bits":13823629838839249400,"effective_uv_bits":[0,4604224429062927830],"hod":3,"used_extension":false},"simple":false,"step":3,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[78]`; 3; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `0.723555051529345` (`0x3fe7275cec65927c`) | `0.723555051529345` (`0x3fe7275cec65927c`) | `0.6352378750290085` (`0x3fe453de614dc399`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.63523787502900862152672612954286766687539869001297299493679780241524825352221706","observed":"0.63523787502900852519616137215052731335163116455078125","relative_error":"1.5164486965295218224085199718669516121894695284649664324682229031546660195486936E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[79]`; 3; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `0.5432830670949382` (`0x3fe162932bb49630`) | `0.5432830670949382` (`0x3fe162932bb49630`) | `0.5822927839454307` (`0x3fe2a22479f7c1e5`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.58229278394542984671859783075516947068443479654608416911236285667797098292759548","observed":"0.58229278394543071417643886888981796801090240478515625","relative_error":"1.4897279598083221985032488238020051735816286582060262990451782182240040186179816E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[80]`; 3; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-1.512672525761659` (`0xbff833e81b3b43c2`) | `-1.512672525761659` (`0xbff833e81b3b43c2`) | `-1.7409715936002073` (`0xbffbdb05079c7240`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-1.7409715936002070460655839477690413601472867403737045755456159231504172002706384","observed":"-1.7409715936002072567134746350347995758056640625","relative_error":"1.2099444440196791577608594934333901565207774124132088405507584489306399479466860E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen0745
|
||||
|
||||
Source: `generated:seed=7714667220713742706`; canonical input SHA-256: `e2a1f4cb563f32b2d7c0cb89ead0526110bf06ec7f9d5a686ce24881920badba`.
|
||||
Steps: `[{"op":"state"},{"op":"eval_pt","uv":[4.284317350996803,-0.38652981573177025],"via":false},{"dom":[0.7260745001764879,0.0,4.284317350996803,1.0],"expand":true,"op":"bbox","want":[true,true,true]},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[4.284317350996803,0.8819094785161189],"via":false,"vl":true},{"dom":[0.7260745001764879,0.0,4.284317350996803,1.0],"guess":[0.8958611613416056,0.9632592919213674],"op":"step_inv","p":[2.8573485677847295,1.4451047064082818,-0.07978327764237036],"tol":1e-06},{"op":"state"}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["4.284317350996803","0.8819094785161189"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":4579800855402217472,"effective_uv_bits":[4616509730933759442,4606118753942915819],"hod":3,"used_extension":false},"simple":false,"step":3,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[111]`; 3; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `59.886507148241996` (`0x404df17910f4af4f`) | `59.886507148241996` (`0x404df17910f4af4f`) | `59.33699329683165` (`0x404dab2298aa6e7c`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"59.336993296831650634433599676348525640219546125659482506811126362601391874024962","observed":"59.336993296831650468448060564696788787841796875","relative_error":"2.7973365330682280506147618270741043526572581568826648973095267754862998653226993E-18"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[112]`; 3; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-6.16721173615604` (`0xc018ab398da930b7`) | `-6.16721173615604` (`0xc018ab398da930b7`) | `-5.977981605429894` (`0xc017e974028da4d6`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-5.9779816054299001395511229859434007171080529909280810066572424935857352692575142","observed":"-5.9779816054298944294487228034995496273040771484375","relative_error":"9.5518902149111045273165824324818440471115183692252450382718728591138413803218697E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[113]`; 3; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-21.625434325576553` (`0xc035a01c76c625a9`) | `-21.625434325576553` (`0xc035a01c76c625a9`) | `-22.215718593299318` (`0xc0363739556f5c15`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-22.215718593299316427800886632957575555082579597322209986946780781298834818437256","observed":"-22.215718593299317973333018017001450061798095703125","relative_error":"6.9569306295147512122623869365767742959730807419938685360454309918901424099363429E-17"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen0794
|
||||
|
||||
Source: `generated:seed=7714667220713742755`; canonical input SHA-256: `5c1bcec6a01982e65601656e0b8e2f6ae088d0464027fd41e279f7086f3e0967`.
|
||||
Steps: `[{"op":"state"},{"hu":2,"hv":1,"nzt":false,"op":"eval","ul":true,"upper":false,"uv":[3.0184314340650307,5.995624031994012],"via":true,"vl":true},{"dom":[2.52101918518958,2.163293054723291,6.289804465699969,5.995624031994012],"guess":null,"op":"step_inv","p":[2.294840929560758,0.7927965247795279,0.05590829177138401],"tol":0.3203735544424991},{"hu":1,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[6.289804465699969,-2.8935952049319438],"via":false,"vl":false},{"op":"state"}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["3.0184314340650307","5.995624031994012"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":13829665680373935344,"effective_uv_bits":[4613979322140866740,4618436490966473360],"hod":3,"used_extension":false},"simple":true,"step":1,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[71]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-0.5001132677184879` (`0xbfe000ed8a24b0ee`) | `-0.5001132677184879` (`0xbfe000ed8a24b0ee`) | `-0.15908695644430484` (`0xbfc45cf61d9300ed`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.15908695644430540834733406383606128947699077108419430807493531519329427648662252","observed":"-0.1590869564443048445046002825620234943926334381103515625","relative_error":"3.5442423840616321684013620144277886860165767430448347722288550189894844562338178E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[72]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-0.8588165559660194` (`0xbfeb7b6cdba465a3`) | `-0.8588165559660194` (`0xbfeb7b6cdba465a3`) | `-0.6595753406248082` (`0xbfe51b3dbea7695c`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.65957534062480925159498802205458715275584194298471111689872213907854388412390368","observed":"-0.659575340624808159617487035575322806835174560546875","relative_error":"1.6555766016844409114647790736692662452687791004395372980250237218512432246764201E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[73]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `0.15677814104732257` (`0x3fc4114e5e435188`) | `0.15677814104732257` (`0x3fc4114e5e435188`) | `-0.16716401607935225` (`0xbfc565a167107db3`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.16716401607935175647158978063415249897122446908861378675818535192190919646201121","observed":"-0.1671640160793522456028625811086385510861873626708984375","relative_error":"2.9260560033942075872539894960066381859878676613355979232994645078207418648626213E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen0985
|
||||
|
||||
Source: `generated:seed=7714667220713742946`; canonical input SHA-256: `e15e88940b8e33ddf1322799d8301d59f01f439dd3db8a36e9a1155cbf8df36b`.
|
||||
Steps: `[{"op":"state"},{"hu":2,"hv":1,"op":"eval_simple","ul":false,"upper":false,"uv":[0.762311906293362,-1.9490172414442608],"via":false,"vl":false}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["0.762311906293362","-1.9490172414442608"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15020,"distance_bits":4605787037843772908,"effective_uv_bits":[4605041514779522171,13834828449349729765],"hod":3,"used_extension":false},"simple":true,"step":1,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[71]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `1.1566559421087441` (`0x3ff281a9a9414c4a`) | `1.1566559421087441` (`0x3ff281a9a9414c4a`) | `0.01708054646438084` (`0x3f917d9011d96b80`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.01708054646438154473072269607135364852377016108493863882788112757973984005556778","observed":"0.017080546464380841342745043220929801464080810546875","relative_error":"4.1180648354526683629391271493792063377292348715984774033615528073815178976718988E-14"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[72]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-10.336730531309902` (`0xc024ac67f1b714db`) | `-10.336730531309902` (`0xc024ac67f1b714db`) | `0.6917287915751178` (`0x3fe622a46b308910`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.69172879157511979206572319538322316814184668212739460705383630304406781631870604","observed":"0.6917287915751177962420115363784134387969970703125","relative_error":"2.8852691054168214342380427648026042367006847419437660969154467338488868719625087E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[73]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `6.267531007627194` (`0x401911f3a601b2eb`) | `6.267531007627194` (`0x401911f3a601b2eb`) | `5.220112887557889` (`0x4014e16545d5f500`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"5.2201128875578906403697584395734594414606182743767713321412205274011944775937866","observed":"5.220112887557888825540430843830108642578125","relative_error":"3.4766093505781814122440975645043589119662105857951506781846894417261826401640700E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen1060
|
||||
|
||||
Source: `generated:seed=7714667220713743021`; canonical input SHA-256: `934a5ff61c49b6e42430c0a907f944cc5d8e2b2e0be8dff107b477616b33aee3`.
|
||||
Steps: `[{"op":"state"},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[6.4065164080874455,-1.1787421234718467],"via":false,"vl":true},{"op":"split","param":1,"t":-0.9124948782379375}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["6.4065164080874455","-1.1787421234718467"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":13827876879029957872,"effective_uv_bits":[4618899114654439301,13831359438615456436],"hod":3,"used_extension":true},"simple":false,"step":1,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[71]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `6.547018345573314e-17` (`0x3c92ded8ccc7361a`) | `6.547018345573314e-17` (`0x3c92ded8ccc7361a`) | `-3.872168990439994e-17` (`0xbc86525015a2e5fa`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-3.8721689904399938350575181407846889772139939220338810857431432934572221400029388E-17","observed":"-3.87216899043999387632348118783987397419198370489452909470884378606569953262805938720703125E-17","relative_error":"1.0657066659264305746978918915150648703245255204237300863155109262742777362357569E-17"},"observations":{"effective_uv_changed":false,"extension_selected":true,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[72]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-7.366687317775092e-18` (`0xbc60fc86501c8e90`) | `-7.366687317775092e-18` (`0xbc60fc86501c8e90`) | `-1.0133036786263165e-16` (`0xbc9d34dc8814ab13`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-1.0133036786263168834757607710514274385856031789512933888505578923672838109897472E-16","observed":"-1.013303678626316491817783306411894833510171917765989302306905983641627244651317596435546875E-16","relative_error":"3.8651589422392099747308173515382153039745308790039553207853418694855808710388580E-16"},"observations":{"effective_uv_changed":false,"extension_selected":true,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[73]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-1.9503230108482398e-16` (`0xbcac1b6c00e16ebc`) | `-1.9503230108482398e-16` (`0xbcac1b6c00e16ebc`) | `-1.1266635841610087e-16` (`0xbca03ca7ab61e263`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-1.1266635841610089329282753558644908727055528825891431657761491669038313459128107E-16","observed":"-1.12666358416100870539469036813361550971017776916725805502750290543190203607082366943359375E-16","relative_error":"2.0195343861865208533251949631903002698663864365260741063416272957208450209501366E-16"},"observations":{"effective_uv_changed":false,"extension_selected":true,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen1084
|
||||
|
||||
Source: `generated:seed=7714667220713743045`; canonical input SHA-256: `0c460999f6ab3c2f57deb31d16a0381560523d7b5b46c9107aa46227991a2912`.
|
||||
Steps: `[{"op":"eval_pt","uv":[0.7371722324916445,0.7380167354927215],"via":false},{"hu":2,"hv":2,"op":"eval_simple","ul":true,"upper":true,"uv":[1.0,0.22853009418487702],"via":true,"vl":false},{"op":"eval_pt","uv":[1.0,0.40267104888261085],"via":false},{"hu":2,"hv":1,"nzt":false,"op":"eval","ul":true,"upper":false,"uv":[1.8387123412949309,0.2374808394148531],"via":false,"vl":true},{"op":"max_anal"}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"1","effective_uv_decimal":["1.0","0.2374808394148531"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15020,"distance_bits":4615276929000429200,"effective_uv_bits":[4607182418800017408,4597724169249706344],"hod":3,"used_extension":false},"simple":true,"step":3,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[44]`; 3; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `178.09467034138433` (`0x406643078a1884b3`) | `178.09467034138433` (`0x406643078a1884b3`) | `249.5976654650177` (`0x406f332013534664`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"249.59766546501760062354102770912729367746104505992151666039723020664493778102420","observed":"249.5976654650177124494803138077259063720703125","relative_error":"4.4802478051130462321691681012411962967504055669755582832309940739139087351159426E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[45]`; 3; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-52.03196303959208` (`0xc04a04175d68dd47`) | `-52.03196303959208` (`0xc04a04175d68dd47`) | `-206.90633856361194` (`0xc069dd00b9bb3a24`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-206.90633856361189040270400070175282931873642354297348186924949875717828517882408","observed":"-206.9063385636119392074760980904102325439453125","relative_error":"2.3587857402630496934688033552610889997645764109105949763167835365002632565358705E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[46]`; 3; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-243.3006381276756` (`0xc06e699ed3d9c984`) | `-243.3006381276756` (`0xc06e699ed3d9c984`) | `-278.875702638454` (`0xc0716e02e0c512e5`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-278.87570263845394182278262102358994322727460546434167778871160382032047084250860","observed":"-278.87570263845401541402679868042469024658203125","relative_error":"2.6388546395905836455040118589457043655321480734688806460954868741937729713183482E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen1187
|
||||
|
||||
Source: `generated:seed=7714667220713743148`; canonical input SHA-256: `dc0328356a89c190f9595b4886f2e69322fd347dcabcf15d79b4c7ea50f1a7bd`.
|
||||
Steps: `[{"ivl":null,"op":"knots","param":0},{"hu":3,"hv":0,"nzt":false,"op":"eval","ul":false,"upper":false,"uv":[0.07152149122316642,0.31767332792688396],"via":true,"vl":false},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":false,"upper":false,"uv":[-1.1525220314909523,-0.19693967889937403],"via":false,"vl":false},{"op":"state"}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"1","effective_uv_decimal":["0.0","-0.19693967889937403"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15020,"distance_bits":4605251504641833320,"effective_uv_bits":[0,13819635556861356720],"hod":3,"used_extension":false},"simple":false,"step":2,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[39]`; 2; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `1.045632596679093` (`0x3ff0bae93ee5e467`) | `1.045632596679093` (`0x3ff0bae93ee5e467`) | `0.4884707542006529` (`0x3fdf431ad6960856`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.48847075420065253423680666347996799000323636628205262978802137366945803529843796","observed":"0.48847075420065289019788679070188663899898529052734375","relative_error":"7.2872547039121414186893992861429818847346255674329562147098599578740641170814421E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[40]`; 2; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-1.743796550772154` (`0xbffbe69736471aa5`) | `-1.743796550772154` (`0xbffbe69736471aa5`) | `-1.4338453702761766` (`0xbff6f107d7cdb70c`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-1.4338453702761769451238047710809812590538409625461148200581246686635902415710355","observed":"-1.43384537027617664506351502495817840099334716796875","relative_error":"2.0926962974279950132175299569960124860938614256553731738409789996719446613791027E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[41]`; 2; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `1.0356033199707828` (`0x3ff091d4c96e74e2`) | `1.0356033199707828` (`0x3ff091d4c96e74e2`) | `0.19650361507091468` (`0x3fc92707cc233eb6`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.19650361507091590629636979878767828251768967616888091564504848677543243909858498","observed":"0.196503615070914683382596876981551758944988250732421875","relative_error":"6.2233652672520581282081927951359579955831450537793383713760273002547431939725212E-15"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen1188
|
||||
|
||||
Source: `generated:seed=7714667220713743149`; canonical input SHA-256: `ad62109dc45dd91069f3ec202ae0e3043daf5186c046f85dc1348083bc412b40`.
|
||||
Steps: `[{"dom":[0.0,0.0,1.0,1.0],"guess":[0.08227042306776189,0.9518191593433647],"op":"step_inv","p":[-0.29911936268241845,-0.34993432188635376,1.4448438732465982],"tol":0.039981892808861046},{"hu":2,"hv":1,"op":"eval_simple","ul":true,"upper":false,"uv":[0.41321024067167234,0.0],"via":true,"vl":true}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["0.41321024067167234","0.0"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":13817877422250580360,"effective_uv_bits":[4601115353861564386,0],"hod":3,"used_extension":false},"simple":true,"step":1,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[18]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-22.41638460722188` (`0xc0366a982e7e9366`) | `-22.41638460722188` (`0xc0366a982e7e9366`) | `-33.728760866710374` (`0xc040dd48093c9016`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-33.728760866710371197765046707774717951834862528981754100583132678405380910146272","observed":"-33.7287608667103739890080760233104228973388671875","relative_error":"8.2755575882137961266941763472286990314785826039664872685813696910829174821661608E-17"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[19]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-59.03289122451959` (`0xc04d8435c796d18a`) | `-59.03289122451959` (`0xc04d8435c796d18a`) | `-46.50188640593028` (`0xc047403dd051e386`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-46.501886405930278986361476171578045615098110143631622523066428813793848288259650","observed":"-46.5018864059302785562977078370749950408935546875","relative_error":"9.2483080058373288690453821193399152057217077787554636259000900379938016272343136E-18"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[20]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-48.02893801039339` (`0xc04803b43da0201e`) | `-48.02893801039339` (`0xc04803b43da0201e`) | `-53.55866475407344` (`0xc04ac78253a0162f`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-53.558664754073396487210103514244146240404334037084569142274475703474150410992404","observed":"-53.55866475407344040604584733955562114715576171875","relative_error":"8.2001364196602819102605651630136246399096592427436625620904486143539134412723802E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen1393
|
||||
|
||||
Source: `generated:seed=7714667220713743354`; canonical input SHA-256: `91eb993684a6bd0ab17ce83f5596c50aa0f08bd2c7af3eb987325432687bad16`.
|
||||
Steps: `[{"dom":[-1.3318813211759284,0.0,-0.5558519620630855,1.0],"guess":null,"op":"step_inv","p":[-2.709608793519871,-2.4725186806262567,-0.5280712396312572],"tol":0.4492685546403934},{"dom":[-1.3318813211759284,0.0,-0.5558519620630855,1.0],"expand":true,"op":"bbox","want":[true,false,false]},{"op":"copy"},{"hu":2,"hv":1,"op":"eval_simple","ul":true,"upper":false,"uv":[0.5780974626166233,2.0259850766495373],"via":false,"vl":true},{"ivl":null,"op":"knots","param":1},{"op":"state"}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["-0.5558519620630855","1.0"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":13831527948615457070,"effective_uv_bits":[13826553925778493166,4607182418800017408],"hod":3,"used_extension":false},"simple":true,"step":3,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[80]`; 3; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `4449.9818749872275` (`0x40b161fb5c28bee7`) | `4449.9818749872275` (`0x40b161fb5c28bee7`) | `4230.249268191276` (`0x40b0863fd00a4977`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"4230.2492681912800794593323589998474244809933346993460017280795726156886048758672","observed":"4230.2492681912763146101497113704681396484375","relative_error":"8.8998282227878241295210270494035469344040509530683565523081429256223381475030723E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[81]`; 3; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `7541.873290072862` (`0x40bd75df8ff02edd`) | `7541.873290072862` (`0x40bd75df8ff02edd`) | `5464.379791604597` (`0x40b558613a05c90a`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"5464.3797916045936886479539914887270297240500311454682718546837074047933822212554","observed":"5464.379791604596903198398649692535400390625","relative_error":"5.8827361333796708705256967584099209891339406813715323648027731647493718287221488E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[82]`; 3; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-5845.071187450852` (`0xc0b6d51239573d4c`) | `-5845.071187450852` (`0xc0b6d51239573d4c`) | `-5290.84250034043` (`0xc0b4aad7ae1a3104`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-5290.8425003404298244497343375123713699571296400732355041024433650042983043885426","observed":"-5290.84250034042997867800295352935791015625","relative_error":"2.9150039640396295895588664464161137736160332893324634183909745311264751968854743E-17"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen1423
|
||||
|
||||
Source: `generated:seed=7714667220713743384`; canonical input SHA-256: `72bd487b427528ae27448710b1b49d9866c6860505836328ca77bf128906416e`.
|
||||
Steps: `[{"op":"state"},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[2.596561767714335,0.49192488535628787],"via":false,"vl":true},{"op":"copy"},{"op":"state"}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["2.596561767714335","0.49192488535628787"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":13821755959934902832,"effective_uv_bits":[4613029356104778786,4602533350839445328],"hod":3,"used_extension":false},"simple":false,"step":1,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[71]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `0.4725309325435524` (`0x3fde3df26167de3e`) | `0.4725309325435524` (`0x3fde3df26167de3e`) | `0.6510854299296156` (`0x3fe4d5b11c8e64c0`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.65108542992961554075892583510625439502486954204752372530271843299932512676224192","observed":"0.65108542992961560003095655702054500579833984375","relative_error":"9.1035719733924602060279187347356858440923357243943033470491528557363147566978230E-17"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[72]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-0.2549116686165397` (`0xbfd050790804eabe`) | `-0.2549116686165397` (`0xbfd050790804eabe`) | `-0.16431418708626574` (`0xbfc5083f4de6f483`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.16431418708626568619952730372356549116730002226755037666439649362329948342986581","observed":"-0.1643141870862657449858801328446133993566036224365234375","relative_error":"3.5776796801032115148824257006204952143443478638813690021314064949941675272846579E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[73]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `0.05094297083005503` (`0x3faa1532735a32bc`) | `0.05094297083005503` (`0x3faa1532735a32bc`) | `0.2643655684638169` (`0x3fd0eb5d8faf650d`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.26436556846381695259630672568385124167894464069437794468976598888933675271700108","observed":"0.264365568463816924538178909642738290131092071533203125","relative_error":"1.0613382059956630855064258507849980862054756923409023882218456950531343037762157E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen1540
|
||||
|
||||
Source: `generated:seed=7714667220713743501`; canonical input SHA-256: `290796843dea20ecc18426f80ab9327fae258f28e059c414ec274247f995bcd9`.
|
||||
Steps: `[{"op":"state"},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[1.0,2.146064513316582],"via":false,"vl":false},{"hu":0,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.29890519434250407,2.4148914612168184],"via":false,"vl":true},{"op":"eq","other":{"allow":false,"base":{"bspline":{"form":9,"net":[[[1.2908736259897482,0.031454686947780884,0.20719691950824815,-1.7976931348623157e+308],[1.1541085033209153,-0.02490443634500978,0.005553179713321286,-1.7976931348623157e+308],[1.0175702290960413,-0.0704051079408164,-0.1996432987713979,-1.7976931348623157e+308],[0.881180585091884,-0.10879136409607545,-0.40716751786741523,-1.7976931348623157e+308],[0.7448285443532214,-0.14537768177744817,-0.61528065251363,-1.7976931348623157e+308],[0.6083947793554504,-0.1858758575457231,-0.8221138800458154,-1.7976931348623157e+308],[0.471778002440291,-0.23513418185305202,-1.0260809053319044,-1.7976931348623157e+308]],[[0.8728198385292734,0.1344697994902051,0.46161576540347293,-1.7976931348623157e+308],[0.7360317326936532,0.07701055136495759,0.2603319715902514,-1.7976931348623157e+308],[0.5994295822876624,0.02845234754570396,0.05613587633959349,-1.7976931348623157e+308],[0.4629492691579914,-0.01427392656434905,-0.1499683475183668,-1.7976931348623157e+308],[0.32649978071139296,-0.055524729534389056,-0.35655532559866726,-1.7976931348623157e+308],[0.18998330009394934,-0.09998221639656706,-0.5620931200340566,-1.7976931348623157e+308],[0.05331679834728229,-0.15162069668664457,-0.7652813904402027,-1.7976931348623157e+308]],[[0.4550452356740123,0.2508485150503663,0.7116622209431439,-1.7976931348623157e+308],[0.3182033329755703,0.1908141968642229,0.5112209552628064,-1.7976931348623157e+308],[0.18145166713574418,0.13509920550910415,0.3093664642005572,-1.7976931348623157e+308],[0.04475912413572602,0.08221422034243207,0.1065860333488591,-1.7976931348623157e+308],[-0.09191846085755989,0.03004522330753116,-0.09642865914604193,-1.7976931348623157e+308],[-0.2286285545173632,-0.02367985134003814,-0.29893422406980114,-1.7976931348623157e+308],[-0.3654114475326578,-0.0808895797563402,-0.5002996573605996,-1.7976931348623157e+308]],[[0.03740611013069964,0.37371206172577154,0.959586927356621,-1.7976931348623157e+308],[-0.09950454210571875,0.3103869405511701,0.7602223679530011,-1.7976931348623157e+308],[-0.23644728074156618,0.24552595423132034,0.5613603228742682,-1.7976931348623157e+308],[-0.3734110422618818,0.17965867502470584,0.36282752323234696,-1.7976931348623157e+308],[-0.5103801225464589,0.11353680493876724,0.16437802228643544,-1.7976931348623157e+308],[-0.6473376434075944,0.04796824453790094,-0.03425251411282155,-1.7976931348623157e+308],[-0.7842692782922642,-0.01636124355470364,-0.2332884582305873,-1.7976931348623157e+308]],[[-0.3802811884010283,0.4942697337886825,1.208266084789288,-1.7976931348623157e+308],[-0.5172552733069626,0.4279083097594989,1.0098949626570608,-1.7976931348623157e+308],[-0.6543743077824661,0.3546086503507992,0.8137939374004813,-1.7976931348623157e+308],[-0.7915883126538068,0.2767630860293492,0.6191802708129217,-1.7976931348623157e+308],[-0.9288263449200579,0.1977674132809364,0.42494290416387565,-1.7976931348623157e+308],[-1.06601215775745,0.12127130427656359,0.22988771402867642,-1.7976931348623157e+308],[-1.2030810312930398,0.05037267585410103,0.033001103873048554,-1.7976931348623157e+308]]],"oob":false,"p":3,"q":3,"u":[0.0,0.0,0.0,0.0,0.811613594564398,1.0,1.0,1.0,1.0],"v":[0.0,0.0,0.0,0.0,0.2239332322577543,0.5704866891609076,0.5853643688103138,1.0,1.0,1.0,1.0]}},"d":0.19330236139490586,"owns":true,"sing":14}}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["1.0","2.146064513316582"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":13829264586295779816,"effective_uv_bits":[4607182418800017408,4612014926471260210],"hod":3,"used_extension":false},"simple":false,"step":1,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[71]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-0.938646918289514` (`0xbfee096543116dbf`) | `-0.938646918289514` (`0xbfee096543116dbf`) | `-0.43225584188568517` (`0xbfdbaa146819da8f`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.43225584188568536453374283190504753569398198931504877961325887072923571501981236","observed":"-0.432255841885685165859598555471166037023067474365234375","relative_error":"4.5962165232916704717915283925158075847729972803572422698649851789391849684624805E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[72]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-0.9004664475474536` (`0xbfecd09f02eb9255`) | `-0.9004664475474536` (`0xbfecd09f02eb9255`) | `-0.08403823428409753` (`0xbfb583879bdd2101`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.084038234284097333618423966498378710151549714360167435941637339271880325515288954","observed":"-0.08403823428409752660517284539309912361204624176025390625","relative_error":"2.2964160363780205617125441644395649251549429615272475897921346217240897604607761E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[73]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `3.140505145174922` (`0x40091fc1295b9174`) | `3.140505145174922` (`0x40091fc1295b9174`) | `-0.7315561128175535` (`0xbfe768e85d77b05d`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.73155611281755333813587692880971651952022046790535932106223138730979186185944110","observed":"-0.73155611281755350550071170800947584211826324462890625","relative_error":"2.2877921713291694618481064646171890949222445548119939332260493404813182733937234E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen1904
|
||||
|
||||
Source: `generated:seed=7714667220713743865`; canonical input SHA-256: `a903a07a31a9c3aa065db54938e0b5d3df91f97144d52e77ac29e9ad704e6884`.
|
||||
Steps: `[{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.048727412995444586,-3.0570665746203565],"via":false,"vl":true},{"dom":[0.0,-1.0023489285348026,1.0,0.3933326287589487],"expand":false,"op":"bbox","want":[true,true,true]},{"op":"state"}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["0.048727412995444586","-3.0570665746203565"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":13823665810316556016,"effective_uv_bits":[4587183181324082832,13837438357597946734],"hod":3,"used_extension":true},"simple":false,"step":0,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[17]`; 0; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-0.7902742150649749` (`0xbfe949ed26926fb8`) | `-0.7902742150649749` (`0xbfe949ed26926fb8`) | `-0.9523024138687969` (`0xbfee7942e96efca3`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.95230241386879647908680373106413829675388412563060286220492415140149538623133636","observed":"-0.95230241386879688203492833054042421281337738037109375","relative_error":"4.2313042446513457741982516152101839208476008122219670152119982245030470726961262E-16"},"observations":{"effective_uv_changed":false,"extension_selected":true,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[18]`; 0; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `0.7551720366461071` (`0x3fe82a5e8c07f5b5`) | `0.7551720366461071` (`0x3fe82a5e8c07f5b5`) | `0.696735814951438` (`0x3fe64ba8e86562fe`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.69673581495143825983611485311724261006444048390830753027057851308282406867790492","observed":"0.6967358149514379928035623379400931298732757568359375","relative_error":"3.8326227356891224606254028623695511322845354828616886442927710550290300927965282E-16"},"observations":{"effective_uv_changed":false,"extension_selected":true,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[19]`; 0; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `0.6035263122537337` (`0x3fe3501669acf7f9`) | `0.6035263122537337` (`0x3fe3501669acf7f9`) | `0.38227665313640047` (`0x3fd877387ecfb0f6`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.38227665313640142162519143635534813341796446097821712957665748884399319134344770","observed":"0.38227665313640046829135599182336591184139251708984375","relative_error":"2.4938322223522494893195039821920040873253519951166464835548073482220797230105292E-15"},"observations":{"effective_uv_changed":false,"extension_selected":true,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen2083
|
||||
|
||||
Source: `generated:seed=7714667220713744044`; canonical input SHA-256: `5e72522e820fe5313d85140130ba8bfef652adaee983566f23f8d87be657b9a6`.
|
||||
Steps: `[{"op":"state"},{"hu":1,"hv":0,"nzt":true,"op":"eval","ul":true,"upper":true,"uv":[0.0,0.029597499211137746],"via":false,"vl":true},{"op":"copy"},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.9456497335512446,0.18644450857407346],"via":false,"vl":true}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"1","effective_uv_decimal":["0.9456497335512446","0.18644450857407346"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15020,"distance_bits":4604678354016580390,"effective_uv_bits":[4606692875120565204,4595885391645251204],"hod":3,"used_extension":false},"simple":false,"step":3,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[133]`; 3; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-44.37804236885662` (`0xc0463063b13d5eeb`) | `-44.37804236885662` (`0xc0463063b13d5eeb`) | `-46.08889292977614` (`0xc0470b60d7f11df8`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-46.088892929776149255060457671251197026686873801848207607774791384518363435335518","observed":"-46.08889292977613649782142601907253265380859375","relative_error":"2.7679638673660239167173331319250472620991697049829427189713753897686167486067303E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[134]`; 3; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-10.160535911162013` (`0xc0245231c3508c7f`) | `-10.160535911162013` (`0xc0245231c3508c7f`) | `5.728343316701154` (`0x4016e9d2d495f76d`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"5.7283433167011600416504853254949779099046374761622976574608014543322140425888620","observed":"5.72834331670115393109199430909939110279083251953125","relative_error":"1.0667235103037339820456033179976695272046645071014339529586268510013775245147798E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[135]`; 3; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-49.63112967112802` (`0xc048d0c8db6883da`) | `-49.63112967112802` (`0xc048d0c8db6883da`) | `-37.09290411473311` (`0xc0428be4483338a5`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-37.092904114733107104027469425335596904401206016865253380750078655882365121213428","observed":"-37.09290411473310911105727427639067173004150390625","relative_error":"5.4108187340712242774579596353611794397087756887661123514968158261870462489503673E-17"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen2241
|
||||
|
||||
Source: `generated:seed=7714667220713744202`; canonical input SHA-256: `cabd3cf8f51d1c504398211e2971acf0cc2de1634405f8105304cac05eb48d43`.
|
||||
Steps: `[{"op":"transform","origin":[-0.6095555121927125,1.7212235828586055,1.264940535424408],"scale":null,"x":[-0.8551972095772238,0.5129119789729973,-0.07455893345088538],"y":[-0.7271170120394526,0.6639307667382538,0.17463329516782589]},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[-1.0514033593256977,1.0],"via":true,"vl":true},{"hu":2,"hv":8,"nzt":true,"op":"eval","ul":false,"upper":false,"uv":[-1.495381116559781,0.11929062743244334],"via":true,"vl":true},{"op":"copy"},{"op":"eval_pt","uv":[-1.477156196336289,0.0],"via":true},{"op":"state"}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["-1.0514033593256977","1.0"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":13830531084667775732,"effective_uv_bits":[13830785955804698020,4607182418800017408],"hod":3,"used_extension":false},"simple":false,"step":1,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[18]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-307.00281148842805` (`0xc073300b840f2da0`) | `-307.00281148842805` (`0xc073300b840f2da0`) | `-276.39849811011663` (`0xc07146603f8de780`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-276.39849811011595964496828922978652941216237824193994885722208841834459664538234","observed":"-276.3984981101166340522468090057373046875","relative_error":"2.4399817044269660913089103498890761983130572673299527524751518944524978578366444E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[19]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `75.41219753418767` (`0x4052da6171c434fc`) | `75.41219753418767` (`0x4052da6171c434fc`) | `74.30860971023986` (`0x405293c042f12d54`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"74.308609710239047166531002070641051992935812495808752113147922676924636530299170","observed":"74.30860971023986394357052631676197052001953125","relative_error":"1.0991687809921341230997756869888916164492748339746210901976648199811835905030852E-14"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[20]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-867.282752531175` (`0xc08b1a4313c25210`) | `-867.282752531175` (`0xc08b1a4313c25210`) | `-889.9742199890065` (`0xc08bcfcb33d97f24`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-889.97421998900602326336354291775014808393570791355446521137036240176669328612226","observed":"-889.97421998900654216413386166095733642578125","relative_error":"5.8305146223803309589641344930220273637258683278660987906055179492656627940295034E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen2243
|
||||
|
||||
Source: `generated:seed=7714667220713744204`; canonical input SHA-256: `b5c1b0a415107215e7fdcd7fc301a26bf021c40add31c08ae54074e3f9e07f4d`.
|
||||
Steps: `[{"dom":[-2.3955961097301937,1.2001027453248296,1.6019116940050564,3.485683281549754],"expand":true,"op":"bbox","want":[true,true,true]},{"hu":2,"hv":1,"op":"eval_simple","ul":false,"upper":true,"uv":[-0.14399469619919625,3.485683281549754],"via":false,"vl":true},{"hu":2,"hv":0,"nzt":true,"op":"eval","ul":true,"upper":true,"uv":[-1.858474282224452,3.331215267820798],"via":true,"vl":true},{"op":"swap"},{"hu":2,"hv":1,"op":"eval_simple","ul":true,"upper":false,"uv":[6.788927939736725,1.9092560703395898],"via":true,"vl":true},{"op":"state"}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"2","effective_uv_decimal":["3.485683281549754","1.6019116940050564"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":13829373733563092494,"effective_uv_bits":[4615031479763976928,4609893188080848524],"hod":3,"used_extension":false},"simple":true,"step":4,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[80]`; 4; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `0.23645799402435283` (`0x3fce44416b9b2e93`) | `0.23645799402435283` (`0x3fce44416b9b2e93`) | `0.09034281810192132` (`0x3fb720b4f92d1d56`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.090342818101921386389049744801854744505033256943207124282230624010689495586152362","observed":"0.0903428181019213238922560549326590262353420257568359375","relative_error":"6.9177379013528946993964085148402886736592442015638424420803049246576427416825733E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":2,"verified":true}` |
|
||||
| `values.out[81]`; 4; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-0.20376279839812728` (`0xbfca14e63da1757c`) | `-0.20376279839812728` (`0xbfca14e63da1757c`) | `-0.16559813966873096` (`0xbfc53251e113ec01`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.16559813966873092818642287225999023459124207198061931770857033142292236337139723","observed":"-0.1655981396687309648019237329208408482372760772705078125","relative_error":"2.2111058091538914281025843933359420633980818543650753599015162182313083189890187E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":2,"verified":true}` |
|
||||
| `values.out[82]`; 4; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `0.0680023729734183` (`0x3fb1689a7ff8a242`) | `0.0680023729734183` (`0x3fb1689a7ff8a242`) | `0.1123305272423861` (`0x3fbcc1b184d93656`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.11233052724238611416091394232054792923658021475260280877830807247783770010944539","observed":"0.1123305272423860967645481423460296355187892913818359375","relative_error":"1.5486765910424998000981115151178271703548767979172263961391836661254218757439312E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":2,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen2270
|
||||
|
||||
Source: `generated:seed=7714667220713744231`; canonical input SHA-256: `466ddea59ecfbd9246039141e77a3aeabe8e6a457514a49507e9ef1712b35ba8`.
|
||||
Steps: `[{"op":"eval_pt","uv":[0.04000450661557142,-0.5122519781467008],"via":false},{"op":"normal","ul":true,"uv":[0.32617637241995645,0.0],"via":false,"vl":true},{"hu":1,"hv":1,"op":"eval_simple","ul":true,"upper":false,"uv":[1.0,0.08311533699099938],"via":false,"vl":false},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":false,"upper":false,"uv":[0.0,0.344687735090091],"via":false,"vl":true},{"op":"state"}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"1","effective_uv_decimal":["0.0","0.344687735090091"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15020,"distance_bits":4605657899551932164,"effective_uv_bits":[0,4599880962139149576],"hod":3,"used_extension":false},"simple":false,"step":3,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[38]`; 3; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `12.311765909445098` (`0x40289f9fc8022617`) | `12.311765909445098` (`0x40289f9fc8022617`) | `11.951284079414354` (`0x4027e70eb4f4948a`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"11.951284079414354329646599010406856171141021998292658391799213955888732325237070","observed":"11.951284079414353556103378650732338428497314453125","relative_error":"6.4724695289611110583185771098210297209534159924891475725266923954559970510285837E-17"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[39]`; 3; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-19.366017183779064` (`0xc0335db34d5a1ae8`) | `-19.366017183779064` (`0xc0335db34d5a1ae8`) | `-16.119631950833877` (`0xc0301ea033146360`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-16.119631950833873356874681433618789769115637390047502652764178904443642976932097","observed":"-16.1196319508338774539879523217678070068359375","relative_error":"2.5416915742150074880368569451510357674877255651216370057656939756833432041123029E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[40]`; 3; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-2.4903132069934992` (`0xc003ec2954a6abf2`) | `-2.4903132069934992` (`0xc003ec2954a6abf2`) | `-0.8722549957384413` (`0xbfebe9834f0f03e4`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.87225499573844315846617960733906587338046633066311313236141481360597681713837522","observed":"-0.872254995738441341046609522891230881214141845703125","relative_error":"2.0835874589010945485049596912692475496113640033897828590587244337113135939634251E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen2410
|
||||
|
||||
Source: `generated:seed=7714667220713744371`; canonical input SHA-256: `f3726ebaaa5640845fa2dec12fc8008485e81396b63909a7d1f0d351112fc354`.
|
||||
Steps: `[{"hu":2,"hv":1,"op":"eval_simple","ul":true,"upper":false,"uv":[2.354742835519051,0.1247310636777702],"via":false,"vl":true},{"hu":3,"hv":0,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.38470472248237564,0.4908609007063788],"via":false,"vl":true}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["1.0","0.1247310636777702"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15020,"distance_bits":4468590870868251252,"effective_uv_bits":[4607182418800017408,4593652241013576632],"hod":3,"used_extension":false},"simple":true,"step":0,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[19]`; 0; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-2.68841473237388e-11` (`0xbdbd8f36f952275e`) | `-2.68841473237388e-11` (`0xbdbd8f36f952275e`) | `4.787836800378111e-16` (`0x3cc140000067669e`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"4.7878367988933735352483938979479388264107472174590318165786099485404780396837040E-16","observed":"4.78783680037811079218975111503273705341920583010428824621840249164961278438568115234375E-16","relative_error":"3.1010607062130914008165945073493927402952575029999322278621980241022253274757491E-10"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen2423
|
||||
|
||||
Source: `generated:seed=7714667220713744384`; canonical input SHA-256: `03bfb2de669ecf0e8900265f00e674bb769afb85c7c75524f2555cb78677cdd6`.
|
||||
Steps: `[{"op":"state"},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.7039651834103567,-0.009098691962300842],"via":true,"vl":true},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[1.0,-1.536171191746163],"via":false,"vl":true},{"op":"copy"},{"hu":0,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.9897115366349584,0.49992547463231984],"via":false,"vl":true},{"op":"normal","ul":true,"uv":[1.0,0.4186409062848606],"via":false,"vl":true}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["0.7039651834103567","-0.009098691962300842"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15045,"distance_bits":4735750320078830162,"effective_uv_bits":[4604515974220653787,13799770697449394304],"hod":3,"used_extension":false},"simple":false,"step":1,"upper":false}`.
|
||||
Trace: `{"call":"1","effective_uv_decimal":["1.0","-1.536171191746163"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15045,"distance_bits":4735750320078830162,"effective_uv_bits":[4607182418800017408,13832969156034148030],"hod":3,"used_extension":false},"simple":false,"step":2,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[71]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-23520150812.139603` (`0xc215e7a414708ef4`) | `-23520150812.139603` (`0xc215e7a414708ef4`) | `-22940207355.3365` (`0xc2155d5f23ed5893`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-22940207355.336498756200468392138144579943075730407632499355720415180385412697076","observed":"-22940207355.336498260498046875","relative_error":"2.1608454267167931908853766457877592717978939239344681424824637571419664729705222E-17"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[72]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `1226873005.564001` (`0x41d248262b641898`) | `1226873005.564001` (`0x41d248262b641898`) | `2434448490.510294` (`0x41e223578d505454`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"2434448490.5102974030306399964176193949532347405606677653951176244768917917203704","observed":"2434448490.5102939605712890625","relative_error":"1.4140612809648421930637826297701746488453019228477986646095822332454601393660953E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[73]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-1827094613.091106` (`0xc1db39d01545d4ae`) | `-1827094613.091106` (`0xc1db39d01545d4ae`) | `-2398325735.193825` (`0xc1e1de717ce633d0`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-2398325735.1938187895732872833497789958773318055812523403309728211233563549294142","observed":"-2398325735.19382476806640625","relative_error":"2.4927777871188494521052713716501592374580717488702032338115652604712644148719016E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[90]`; 2; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-1382595758.4633026` (`0xc1d49a2f2b9da6c0`) | `-1382595758.4633026` (`0xc1d49a2f2b9da6c0`) | `-2387510684.043724` (`0xc1e1c9d0b3816630`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-2387510684.0437477868193846664151097788036130116030654686831620995916803113748534","observed":"-2387510684.04372406005859375","relative_error":"9.9378658070464389490507862584382019307446927916918454941598744880786872435989836E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[91]`; 2; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-16234217167.59932` (`0xc20e3d13f67ccb68`) | `-16234217167.59932` (`0xc20e3d13f67ccb68`) | `-21746697320.231216` (`0xc21440d111a0ecc4`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-21746697320.231210611824248170194724906457525670440686970343447872895788846892328","observed":"-21746697320.2312164306640625","relative_error":"2.6757349535170418634207643966465518354032526018958290999166322811854317000563357E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
| `values.out[92]`; 2; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `-90839440270.66617` (`0xc2352673db8eaa8a`) | `-90839440270.66617` (`0xc2352673db8eaa8a`) | `-64074153297.93849` (`0xc22dd63bfaa3e082`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-64074153297.938461316906288017212537031361553244429900760374313693580911619220918","observed":"-64074153297.9384918212890625","relative_error":"4.7607937373187620390502268720813319967676350601484118572422127395945043513239525E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":1,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen2456
|
||||
|
||||
Source: `generated:seed=7714667220713744417`; canonical input SHA-256: `c4c256ba30620c541b089ff0911d147849f876c85bc20cf46fe59e56b6b297e0`.
|
||||
Steps: `[{"op":"state"},{"hu":2,"hv":1,"op":"eval_simple","ul":false,"upper":false,"uv":[4.919850270656859,1.0],"via":true,"vl":true},{"op":"is_planar","tol":0.001}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["4.919850270656859","1.0"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":4651362212541756169,"effective_uv_bits":[4617225277388800120,4607182418800017408],"hod":3,"used_extension":false},"simple":true,"step":1,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[71]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-149100539.7370812` (`0xc1a1c62ff77962b5`) | `-149100539.7370812` (`0xc1a1c62ff77962b5`) | `-148991984.45221484` (`0xc1a1c2dfe0e788b4`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-148991984.45221493916674564929872168608448790656213171619470752662386664653775033","observed":"-148991984.45221483707427978515625","relative_error":"6.8522119655964316823984832221327884890483678991620258596154272512393962022405858E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[72]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `78397493.56155671` (`0x4192b100d63f08b9`) | `78397493.56155671` (`0x4192b100d63f08b9`) | `78238449.28600912` (`0x4192a74bc524df93`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"78238449.286009085030702619742621042266312793948747095063708562482108167446188596","observed":"78238449.28600911796092987060546875","relative_error":"4.2089570475103409115825477128480052934697053285527923633731873566699135436962174E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[73]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `36384867.4068251` (`0x418159831b412d85`) | `36384867.4068251` (`0x418159831b412d85`) | `36481183.77271136` (`0x41816544fe2e834b`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"36481183.772711359059988658267006156693439551669700520320162025609750941506104788","observed":"36481183.772711358964443206787109375","relative_error":"2.6190337483337548180520231518088148335958704254097697682985298865940105402504300E-18"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen2531
|
||||
|
||||
Source: `generated:seed=7714667220713744492`; canonical input SHA-256: `be2221978e98e31d856b00abc7753267057b708f92496c105d0271c8ae329689`.
|
||||
Steps: `[{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[6.277318753508208,-1.5020207941852206],"via":true,"vl":true},{"d":1.2468838758568417,"op":"base_offset","tol":1e-06},{"hu":0,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.9698094843121348,-0.32120948252423864],"via":false,"vl":true},{"op":"normal","ul":true,"uv":[1.5387393473608975,-1.263811270594287],"via":false,"vl":true},{"op":"reverse","param":1}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["3.0940389978703795","-1.5020207941852206"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":4604315093149848080,"effective_uv_bits":[4614149575238956820,13832815356316418016],"hod":3,"used_extension":false},"simple":false,"step":0,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[17]`; 0; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `-2.8260082560835103` (`0xc0069baa3770d65d`) | `-2.8260082560835103` (`0xc0069baa3770d65d`) | `-2.2953622171862316` (`0xc0025ce6ddba4fb2`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-2.2953622171862302108804647354408953936136235915279512416866102204367056331376536","observed":"-2.29536221718623156817784547456540167331695556640625","relative_error":"5.9132165310404329423734755242426528832056805996032425874702791250948447860808358E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[18]`; 0; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `2.546200288338782` (`0x40045e9e41bbd8c2`) | `2.546200288338782` (`0x40045e9e41bbd8c2`) | `3.7333073113753645` (`0x400dddd0394232f4`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"3.7333073113753635445763319690673014813420804457981222499288632095615304329794540","observed":"3.7333073113753645344559117802418768405914306640625","relative_error":"2.6514816414791719731588598730083446655113852951966978435554247984040659488708177E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[19]`; 0; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `1.1520583395443187` (`0x3ff26ed4b9b6d4a2`) | `1.1520583395443187` (`0x3ff26ed4b9b6d4a2`) | `0.6427022069735775` (`0x3fe49104380097de`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.64270220697357692848632956227760465398878070297810757949935292102359328144665254","observed":"0.6427022069735774945087314335978589951992034912109375","relative_error":"8.8069154848038406007379275652914143477655232096180082691563330005230418110469198E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen2731
|
||||
|
||||
Source: `generated:seed=7714667220713744692`; canonical input SHA-256: `0b381d32a486769ecea2814957ce86ed4485d9882f4e44b521f86048f268d3af`.
|
||||
Steps: `[{"op":"state"},{"op":"normal","ul":false,"uv":[-0.9798998157367476,0.8739381973814105],"via":false,"vl":false},{"op":"eq","other":{"allow":false,"base":{"bspline":{"form":9,"net":[[[0.9108082781397742,-0.7544705696118594,0.24984991994132644,-1.7976931348623157e+308],[0.5217070173203113,-0.7282690033203555,0.5627615476456613,-1.7976931348623157e+308],[0.1326057565008486,-0.7020674370288514,0.8756731753499962,-1.7976931348623157e+308],[-0.2564955043186141,-0.6758658707373475,1.1885848030543311,-1.7976931348623157e+308]],[[0.7801752585649075,1.214238776867928,-0.07743974271223253,-1.7976931348623157e+308],[0.39107399774544477,1.240440343159432,0.23547188499210236,-1.7976931348623157e+308],[0.0019727369259819882,1.2666419094509358,0.5483835126964373,-1.7976931348623157e+308],[-0.38712852389348074,1.2928434757424399,0.8612951404007722,-1.7976931348623157e+308]]],"oob":true,"p":1,"q":1,"u":[-1.5744089044607625,-1.5744089044607625,2.0317563378621646,2.0317563378621646],"v":[-1.1386455850683426,-1.1386455850683426,-0.35576061301818973,0.41559605597628013,1.3730505411591296,1.3730505411591296]}},"d":0.46003599055708677,"owns":true,"sing":16}},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[-2.090050615584399,0.0],"via":false,"vl":false},{"op":"state"}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["-1.3960484534726056","0.0"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15002,"distance_bits":4610895479846230185,"effective_uv_bits":[13832338099322273104,0],"hod":3,"used_extension":false},"simple":false,"step":3,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[78]`; 3; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `5245.318466443832` (`0x40b47d5187045122`) | `5245.318466443832` (`0x40b47d5187045122`) | `5107.4113298286475` (`0x40b3f3694ce961e9`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"5107.4113298286487979178315622145525916401852205064697158271107755206520853061320","observed":"5107.4113298286474673659540712833404541015625","relative_error":"2.6051394563037290945596733294590439094768336994708003741559525485828417834206118E-16"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[79]`; 3; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-1603.545437548365` (`0xc0990e2e872e40f4`) | `-1603.545437548365` (`0xc0990e2e872e40f4`) | `-651.0900779587619` (`0xc08458b87acaf7c8`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-651.09007795876271046903636469265346648961817253798967032893276299198435539885272","observed":"-651.0900779587618671939708292484283447265625","relative_error":"1.2951741918402474845634357528648376523129375372775667262502343746135639879221678E-15"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[80]`; 3; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `2340.673461892583` (`0x40a24958cfff477e`) | `2340.673461892583` (`0x40a24958cfff477e`) | `1461.6650668591205` (`0x4096d6a90749664e`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"1461.6650668591249214275844259648355658359950534401381908800645357528216851275009","observed":"1461.66506685912054308573715388774871826171875","relative_error":"2.9954480999401630177197343393698373940358648888782266785069250294507746536541576E-15"},"observations":{"effective_uv_changed":true,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen2766
|
||||
|
||||
Source: `generated:seed=7714667220713744727`; canonical input SHA-256: `adeba1dbd034c1039a4994c4ab29fa57ec2a04f662aa7c04c5cbb6a090f18415`.
|
||||
Steps: `[{"op":"state"},{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.0,0.0],"via":false,"vl":true}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["0.0","0.0"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15045,"distance_bits":13963293391446979919,"effective_uv_bits":[0,0],"hod":3,"used_extension":false},"simple":false,"step":1,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[71]`; 1; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `590057910273.8309` (`0x42612c4626003a97`) | `590057910273.8309` (`0x42612c4626003a97`) | `590013419943.2698` (`0x42612bf14a34e8a2`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"590013419943.26935810629575026727282471925609652154083436058471784662987337126270","observed":"590013419943.269775390625","relative_error":"7.0724548822949641141468808984053150367029015460529633002494230156882762677503905E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[72]`; 1; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `143936066697.85992` (`0x4240c1a10a44ee12`) | `143936066697.85992` (`0x4240c1a10a44ee12`) | `120138234122.80193` (`0x423bf8cbf90acd4b`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"120138234122.80243851831612245154321157630184769442606397365883057129324450897489","observed":"120138234122.8019256591796875","relative_error":"4.2689085633697525620199233002617930736649030030304449889541513619319928614869120E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[73]`; 1; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `371415830277.7452` (`0x42559e86f3c16fb1`) | `371415830277.7452` (`0x42559e86f3c16fb1`) | `378660588086.4269` (`0x42560a7b828d9b52`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"378660588086.42739479899957650589740944269720964634629957715681086444372785016290","observed":"378660588086.4268798828125","relative_error":"1.3598357032049473293132199452758807313157548506498453471341780728435821386945760E-15"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
|
||||
### gen2828
|
||||
|
||||
Source: `generated:seed=7714667220713744789`; canonical input SHA-256: `801fb4e1a59fe5ef32536a0be65750d611ea69d264c3c1d9837808bee919d7b6`.
|
||||
Steps: `[{"hu":2,"hv":1,"nzt":true,"op":"eval","ul":true,"upper":false,"uv":[0.5,0.33163065917456913],"via":false,"vl":false}]`.
|
||||
Disposition: `four-term-change-locally-verified-conditional-on-base`.
|
||||
Trace: `{"call":"0","effective_uv_decimal":["0.5","0.33163065917456913"],"flags":[],"pole_depth":0,"selected":{"base_type_code":15020,"distance_bits":13815166225336368064,"effective_uv_bits":[4602678819172646912,4599645746770238806],"hod":3,"used_extension":false},"simple":false,"step":0,"upper":false}`.
|
||||
|
||||
| Field; step; serialized partial / component; last write; history | C++ decimal (bits) | legacy Rust decimal (bits) | corrected Rust decimal (bits) | Local jet / observations |
|
||||
|---|---|---|---|---|
|
||||
| `values.out[17]`; 0; `[2,1]` / x; `[2,1]`; `[[2,1]]` | `0.0034674287147792504` (`0x3f6c67b99dcc4b2e`) | `0.0034674287147792504` (`0x3f6c67b99dcc4b2e`) | `0.003349020034729185` (`0x3f6b6f6770badd5e`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.0033490200347291823151357078778967791634918370756902808570107432552262788693837250","observed":"0.003349020034729185101018966719266245490871369838714599609375","relative_error":"8.3185028156054220687740432169193027937274507795990811287489429489387103099214625E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[18]`; 0; `[2,1]` / y; `[2,1]`; `[[2,1]]` | `-0.004677403062997442` (`0xbf73289cd2f8f8e5`) | `-0.004677403062997442` (`0xbf73289cd2f8f8e5`) | `-0.004799127010807076` (`0xbf73a83fd8f8e66e`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"-0.0047991270108070730912710789492383684313994923159682965506682317580973912003479086","observed":"-0.00479912701080707597423025134730778518132865428924560546875","relative_error":"6.0072574989284105171243762545471183576088095499754749923386421634869072149673394E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
| `values.out[19]`; 0; `[2,1]` / z; `[2,1]`; `[[2,1]]` | `0.02073466720437944` (`0x3f953b77f6251f9f`) | `0.02073466720437944` (`0x3f953b77f6251f9f`) | `0.020741281256499454` (`0x3f953d33d2b1f966`) | `{"alias":false,"blockers":[],"jet":{"accepted_existing_relative_rule":true,"expected":"0.020741281256499446046591548056124105271103343502303797730540119896328028875769598","observed":"0.020741281256499453922170772557365125976502895355224609375","relative_error":"3.7970553154874954575966425882206712722570589024362798385654099676297657719901602E-16"},"observations":{"effective_uv_changed":false,"extension_selected":false,"scope":"Local formula at selected base/UV only; no claim about the derivative of an outer clamping/extension map.","simple_dispatch_rule":"eval_simple or eval with nzt=false; offset_surface.rs:1173-1197"},"trace_call":0,"verified":true}` |
|
||||
|
||||
Limitation: local jets, when available, assume the traced base derivatives; this does not prove the geometry provider or outer wrapper.
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
Updates: WR-161
|
||||
|
||||
#### WR-161 (update, 2026-10-31). `Duvv` and `Dvvv` add `Buvv` / `Bvvv` by default
|
||||
- **Location:** `source/SMLib/src/SmOffsetSurface.cpp:1482` and `:1491`, `SmOffsetSurface::EvaluatePlainOrSimple` (pinned v1.0.1); `crates/solidcore/src/surface/offset_surface.rs`.
|
||||
- **What changed:** solidcore corrects exactly four third-order terms unconditionally. This record's two:
|
||||
1. `Duvv` is written as `Buvv + d * Nuvv` (`d(1, 2)`), not `Buuv + d * Nuvv` (`d(2, 1)`).
|
||||
2. `Dvvv` is written as `Bvvv + d * Nvvv` (`d(0, 3)`), not `Buuv + d * Nvvv` (`d(2, 1)`).
|
||||
The other two, from `WR-160`, correct the `Cuuv` coefficient (`1.0`, not `3.0`) and the `Cuvv` coefficient (`-1.0`, not `3.0`). `Duuv`, `Duvv` and `Dvvv` can change; downstream effects are unmeasured. Sampled bits for orders 0..2 and `Duuu` are retained in a regression, not a universal bit-identity proof.
|
||||
- **Evidence:** the new focused `surface::offset_surface::tests` build the biquadratic Bezier base `B(u, v) = (u + u^2 v, v + u v^2, u v)` through the public `BSplineSurface::from_data`, construct a public `OffsetSurface::new` and evaluate through the public `OffsetSurface::evaluate(uv, 3, 3, flags)` with `flags.only_upper_half = true` at two asymmetric UV points and `d = +0.125` / `-0.125`. The upper triangle contains derivatives with total order at most 3; this is not a full rectangular `(3, 3)` request, which exceeds the existing bound. The closed-form oracle is `B + d q / sqrt(L)`, `L = 1 + u^2 + v^2 + 6uv + 9u^2v^2`, checked to `1e-10` relative without an absolute floor. `Buvv = (0, 2, 0)` and `Bvvv = (0, 0, 0)` both differ from `Buuv = (2, 0, 0)`, so both wrong bases are caught: at `d = 0.125`, `uv = (0.25, 0.5)` the corrected `Suvv = (-0.073477204663, 1.884574138045, 0.009817341315)` and `Svvv = (-0.161697725660, 0.012630381645, 0.070751767665)`. The former default path visibly disagrees with both.
|
||||
- **Still unfixed:** `WR-162` (upper-half, unequal-order second-derivative slot write) is separate and remains. No claim is made about `SM_API` higher derivatives or an end-to-end `CrvOnSurf` improvement; an in-kernel `CrvOnSurf` evaluator that reads the third partials can consume the corrected values, but no production case that does was measured.
|
||||
- **Confirmed:** the default-kernel closed-form regression failed with exit 101 before fix `8ec4825280f7b2f9a41fc4183d609f8a080146e9`, then passed with the sampled unchanged-partial bit controls. The biquadratic counterexample itself has not been newly replayed in C++. The existing native fixture `third_derivative_outputs` was replayed at that fix: ten mismatches map only to corrected `Duvv`/`Dvvv` slots, including `out[50]` (`Dvvv.y`), C++ `-2.316474981309934` versus Rust `6.683525018690066`. The confirmed original WR-160/161 entries identify this fixture; its single `cpp_defect = "WR-161"` marker explains both defects. No other failing case is parked by this PR.
|
||||
- **Limits:** the full offset diagnostic had 519 failures among 3,182 cases; after identifying that one fixture, 518 remain unparked and require individual attribution. The unequal-order upper-half slot problem remains, so a value changed by this correction is not by itself proof that the destination slot is correct. See `plan/findings/surface.offset_surface--default-third-derivatives-diagnostic-attribution.md`. The curve-on-surface diagnostic timed out without a summary. These are not native parity or caller-improvement claims.
|
||||
+4185
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user