docs: new acceptance bar (peer agreement, not fidelity) — and C1's documented fix is wrong
Jahni: "I do not need your work to be identical or near identical to what I had before, only having it 99.99% at worst reproducible if two people share the same seed, since everyone rebuilds it on multiplayer." Recorded as OPSTACK-PLAN 2.6.1, superseding 2.6's "recognisably the same place". Consequences, each recorded where it will be found: - C10 closed permanently rather than parked: it measures old-path vs new-path agreement and the two never coexist in a shipped world. - The equivalence tests keep their value as PORT-CORRECTNESS checks, not fidelity checks. Isosurface hard-fail stays; ULP grading is diagnostic only. - C9 promoted to top open risk. "Two people share a seed" is exactly what /fp:fast weakens across toolchains, and a Linux dedicated server against Windows clients compiles the density path under opposite float models. FPSemantics = Precise is the fix and the IWYU debt now blocks something that matters. - C1 unblocked: it was deferred only because it re-rolls the world's noise. Then, doing C1's arithmetic before applying its documented one-liner: THE FIX IS WRONG. It bounds SeedF but keeps the * 97.7 multiplier, so the coordinate term still reaches 1.6e6 where the ULP is 0.19 — 9.5x the ~0.02/voxel step. It would have left the bug live for mid-range seeds while closing the ticket. The real fix deletes the multipliers: they only decorrelate the ~40 noise sites, which is a hashing job. VoxelHash::SeedOffset(Seed, Site) gives a site-salted, bounded, final-units offset. Bounding SeedF alone would also funnel every seed through 16384 offsets shared by all sites; per-site salting requires a collision at all ~40 sites instead. The op stack has already inherited the bug via FSlabVoidSource, so it must land in both paths at once — and every further port copies it again. Docs only; the C1 fix is not written. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -220,6 +220,38 @@ SIMD noise switch required.
|
||||
|
||||
---
|
||||
|
||||
### 2.6.1 ⚠️ RELAXED FURTHER, 2026-07-27 — resemblance to the old world is NOT a requirement at all
|
||||
|
||||
**Jahni, verbatim:** *"I do not need your work to be identical or near identical to what I had
|
||||
before, only having it 99.99% at worst reproducible if two people share the same seed, since
|
||||
everyone rebuilds it on multiplayer."*
|
||||
|
||||
**This replaces the "recognisably the same place" bar above.** The requirement is not fidelity to the
|
||||
past — it is **agreement between peers in the present**. Restated as the only two properties that
|
||||
now matter:
|
||||
|
||||
| Property | Required? | Enforced by |
|
||||
|---|---|---|
|
||||
| **Same seed ⇒ same world, on every peer** | **YES — this is the whole bar** | `DensityPurity` within a binary; **`§C9`** across binaries/platforms |
|
||||
| Resemblance to the pre-refactor world | **NO** | nothing; freely re-tunable |
|
||||
| Bit-identity with the archetype `switch` | **NO** | nothing; never compare them |
|
||||
|
||||
**What this changes, concretely:**
|
||||
|
||||
1. **`§C10` is closed, not parked.** It measures old-path vs new-path agreement, and the two paths
|
||||
will never both exist in a shipped world. The residue cannot affect anything Jahni requires.
|
||||
2. **The equivalence tests keep their value, but for a different reason.** They are no longer
|
||||
*fidelity* checks; they are **port-correctness** checks — a transcription slip is still a real
|
||||
bug, and comparing against the old function is the cheapest way to catch one. Read them that way.
|
||||
The hard-fail (isosurface crossing) stays; the ULP grading is now diagnostic only.
|
||||
3. **`§C9` is promoted from a footnote to THE risk.** "Two people share a seed" is exactly the
|
||||
guarantee `/fp:fast` weakens across toolchains, and a Linux dedicated server generating collision
|
||||
geometry against Windows clients is the concrete case.
|
||||
4. **Changes that re-roll the world's noise are no longer expensive.** `§C1` in particular was
|
||||
deferred *only* because it forces a re-tune. That objection is gone.
|
||||
|
||||
---
|
||||
|
||||
## 3. The contract
|
||||
|
||||
```cpp
|
||||
|
||||
Reference in New Issue
Block a user