[WIP] feat(cesium): optional Cesium/ArcGIS reference + parity oracle crate#202
Conversation
…le (skeleton) 12-module skeleton — compiling, ///-commented scaffold only, NO live impl yet. Optional/dev workspace member (crates/*, NOT in default-members → optional by construction). Hard rules baked into lib.rs: reverse-engineer-ONLY → CAM SoA; NO JSON in hotpath (ArcGIS PBF preferred over f=json); refactor > reverse- engineer. Grounding refs (CesiumGS/cesium, KHR_gaussian_splatting + SPZ, arcpbf/arcgisutils/arcGIS-Rust-runtime/locup, staehlli/3D-settlement, Inria .ply) in the module map. Sonnet battery fills the 12 slots next (groups A-D); Opus + CodeRabbit/Codex review live before any impl is uncommented. The oracle's live 'run real Cesium' stays commented until a reference renderer is wired (first ref = Inria .ply via splat3d::ply).
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdds a new optional ChangesCesium reverse-engineering framework
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Groups A (tileset, implicit_tiling, khr_gs) and B (arcgis_pbf, spz, esri_crs) written by Sonnet battery, ///-commented scaffold only, compiling. - arcgis_pbf grounded verbatim against Esri/arcgis-pbf FeatureCollectionPBuffer (field numbers, QuantizeOriginPostion, delta-zigzag dequant) — the no-JSON path. - spz grounded against nianticlabs/spz (NgspFileHeader 32B LE, stream order, dequant formulas; smallest-three quaternion bits marked UNVERIFIED). - tileset/implicit_tiling/khr_gs grounded against OGC 3D Tiles 1.1 + KHR spec (.3tz internals + KHR non-normalized SCALE variants marked UNVERIFIED). Groups C+D (to_cam_soa/sse/hlod, point_fallback/oracle/fixtures) still stubs; filled next.
…k/oracle), fmt-clean 4 of C+D's 6 modules landed + rustfmt'd. hlod + fixtures still being written by the agents; full cargo fmt --all + cargo check + review at finalize when they land. Commented scaffold only.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ebc409e51a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| pub fn decode_pbf(_bytes: &[u8]) -> Result<PbfFeatureCollection, PbfError> { | ||
| unimplemented!("scaffold only — wire prost dep + uncomment after Opus review") |
There was a problem hiding this comment.
Replace unconditional panic in public decode entrypoint
decode_pbf is publicly exported and currently always calls unimplemented!, so any caller (including workspace experiments or downstream tools using this optional crate) will deterministically panic at runtime instead of receiving a typed failure. Since this is the module’s primary ingestion API, the current behavior makes the crate unusable for its stated parity-oracle purpose once invoked; it should return a concrete Err(PbfError::...) (or be feature-gated/private) until implementation is ready.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Resolved in aaccaa8. decode_pbf now returns Err(PbfError::NotImplemented(..)) instead of panicking; the unimplemented helper (decode_delta_coords) was demoted to pub(crate) so external callers cannot reach a panic.
…ules All 12 cesium modules now ///-commented scaffold; cargo check + cargo test clean (unit + 33 doctests), cargo fmt --check green (fixes the FMT CI). - C: to_cam_soa grounded against real GaussianBatch (sh[i*48+ch*16+k] layout, glTF xyzw -> splat3d wxyz quat reorder, both unit-tested); sse + hlod are live pure-arithmetic (LOD + ADD/REPLACE traversal). - D: oracle MEASURES parity (SSIM/PSNR live); cesium-native FFI is DEFERRED; sort-order (front-to-back vs back-to-front accumulation) = named risk. fixtures: scenes + gates (INRIA/SETTLEMENT/SYNTHETIC).
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
crates/cesium/Cargo.toml (1)
1-22:⚠️ Potential issue | 🔴 CriticalFix
cesiumclippylen-zerofailure before enforcing-D warningsin CI
cargo clippy -p cesium -- -D warningscurrently fails withclippy::len_zeroatcrates/cesium/src/oracle.rs:159(candidate.len() == 0); switch tocandidate.is_empty()(or explicitly allow the lint). Thecargo fmtcheck wasn’t reached in this run, so ensure CI runs bothcargo clippy -p cesium -- -D warningsandcargo fmt -p cesium --all -- --checkonce the clippy issue is fixed.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/cesium/Cargo.toml` around lines 1 - 22, Replace the clippy-violating equality check candidate.len() == 0 with candidate.is_empty() in the oracle code path (see function/condition around the check in crates/cesium/src/oracle.rs, ~line where candidate.len() == 0 is used) to satisfy clippy::len_zero; after fixing that, update CI job for the cesium crate to run both `cargo clippy -p cesium -- -D warnings` and `cargo fmt -p cesium --all -- --check` so formatting is validated as well.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@crates/cesium/src/arcgis_pbf.rs`:
- Around line 342-344: Public functions decode_pbf and decode_delta_coords must
not unconditionally panic; change their bodies to return a typed error (e.g.,
Err(PbfError::NotImplemented) or Err(PbfError::FeatureDisabled)) and add the
corresponding PbfError variant if missing, or alternatively gate both functions
behind a non-default cargo feature (e.g., "pbf") so they are not exported by
default; update the function signatures to return the error and adjust any
tests/usages to handle the Err result.
In `@crates/cesium/src/esri_crs.rs`:
- Around line 169-176: Public CRS functions like from_pbf_spatial_ref (and the
other exported functions currently using unimplemented!()) must not panic;
change their signatures to return a Result<EsriCrs, CrsError> (or wrap their
current return type in Result) and replace unimplemented!() with
Err(CrsError::UnimplementedFeature("function_name")) (or similar CrsError
variant), or alternatively add a feature-gate (#[cfg(feature = "esri-crs-impl")]
/ #[cfg(not(feature = "esri-crs-impl"))]) to keep the public API from panicking;
update the function bodies for from_pbf_spatial_ref and the other unimplemented
exporters to return an Err variant with a clear message and adjust callers/tests
accordingly.
In `@crates/cesium/src/spz.rs`:
- Around line 285-287: Public decoder entrypoints (e.g., decode_spz) currently
call unimplemented!() which panics; change each public decoder to return a
Result::Err placeholder instead of panicking. Specifically, replace
unimplemented!() in decode_spz and the other public decode functions with a
return like Err(SpzError::Unimplemented) (or add an
SpzError::Unimplemented/NotImplemented variant if missing) so callers get a
recoverable error; alternatively make these functions non-public until
implemented if you prefer to avoid adding an error variant.
---
Outside diff comments:
In `@crates/cesium/Cargo.toml`:
- Around line 1-22: Replace the clippy-violating equality check candidate.len()
== 0 with candidate.is_empty() in the oracle code path (see function/condition
around the check in crates/cesium/src/oracle.rs, ~line where candidate.len() ==
0 is used) to satisfy clippy::len_zero; after fixing that, update CI job for the
cesium crate to run both `cargo clippy -p cesium -- -D warnings` and `cargo fmt
-p cesium --all -- --check` so formatting is validated as well.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: db132253-1575-4d8f-8dab-ad892b8517bc
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (14)
crates/cesium/Cargo.tomlcrates/cesium/src/arcgis_pbf.rscrates/cesium/src/esri_crs.rscrates/cesium/src/fixtures.rscrates/cesium/src/hlod.rscrates/cesium/src/implicit_tiling.rscrates/cesium/src/khr_gs.rscrates/cesium/src/lib.rscrates/cesium/src/oracle.rscrates/cesium/src/point_fallback.rscrates/cesium/src/spz.rscrates/cesium/src/sse.rscrates/cesium/src/tileset.rscrates/cesium/src/to_cam_soa.rs
Both bots flagged public scaffold fns that unconditionally unimplemented!()
-> runtime panic on call. Resolved:
- Result entrypoints return Err(NotImplemented): decode_spz, decode_pbf,
esri_crs::{from_json_value, reproject_to_wgs84}. Added NotImplemented(&'static
str) variant to SpzError/CrsError/PbfError (+ Display/Error arms).
- Non-Result helpers demoted to pub(crate) so external callers can't reach the
panic: spz decode_{positions,alphas,colors,scales,rotations,sh_rest},
esri_crs::{from_pbf_spatial_ref,inverse_mercator,rebase_to_local_enu},
arcgis_pbf::decode_delta_coords.
- lib.rs: #![allow(dead_code)] (scaffold has many unused stubs).
- oracle.rs panic!() untouched — legitimate #[cfg(test)] assertions.
cargo fmt --all --check + check + test (40 unit/33 doc) clean.
There was a problem hiding this comment.
Actionable comments posted: 12
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@crates/cesium/src/fixtures.rs`:
- Around line 51-234: Public APIs like Thresholds, Fixture, ParityGate,
GateResult and the public functions ParityGate::check,
gates::settlement_dev_smoke, gates::settlement_dev_nominal, and
gates::synthetic_unit_tight lack runnable doc examples; add short /// doc-tests
for each exported item showing typical usage (construct or obtain the
Fixture/ParityGate via gates::..., call ParityGate::check with a minimal
crate::oracle::ParityMetrics stub or example values, and assert expected fields
on GateResult/threshold margins) so the docs contain a compiled/runnable example
that verifies behavior; target the items Thresholds (show selecting a constant),
Fixture (show accessing fields), ParityGate and its check method (show creating
gate via gates::settlement_dev_smoke and calling .check), and the three gates
functions (show calling them) using fully qualified names to make the examples
self-contained.
In `@crates/cesium/src/hlod.rs`:
- Around line 53-156: Add minimal rustdoc examples for the public API: add ///
doc-tests showing how to construct a tiny HlodTree, push a couple of HlodTile
instances (using Refine::Add/Replace, content_uri Some/None), call traverse_hlod
with a sample camera, sse_denominator and maximum_sse, and assert the returned
TraversalResult.render_list contains the expected URIs; also add short examples
on HlodTile::is_leaf and HlodTile::distance_to_camera and on HlodTree::new/push
that demonstrate their basic behavior so the docs compile as tests (refer to
types/functions: HlodTile, HlodTile::is_leaf, HlodTile::distance_to_camera,
HlodTree, HlodTree::new, HlodTree::push, traverse_hlod, TraversalResult).
- Around line 109-156: The traversal currently assumes the root is at index 0;
instead add and use an explicit root index on HlodTree (e.g., pub root:
Option<usize> or pub root_index: usize) and initialize it in HlodTree::new, set
it when the real root is added (or expose a set_root method), then change
traverse_hlod to start from that stored root (e.g., let root =
tree.root.unwrap_or(0); traverse_tile(..., root, ...)). Update HlodTree::push or
callers/tests to set the root appropriately so traversal uses the correct tile
rather than always tiles[0].
- Around line 160-198: traverse_tile currently dereferences indices from
HlodTile::children without bounds or cycle checks, risking panics or infinite
recursion on malformed input; fix by validating each child index against
tree.tiles.len() before recursing and by adding cycle detection (e.g., pass a
mutable visited set like HashSet<usize> through traverse_tile or store visited
in TraversalResult) to skip already-seen indices, and skip/log invalid indices
instead of recursing; update traverse_tile signature and all call sites
accordingly (or wrap this in a fallible public traversal API that performs
upfront arena validation).
In `@crates/cesium/src/oracle.rs`:
- Around line 67-223: Add runnable doc examples for the public API: add short
/// code examples demonstrating basic usage and expected output for OracleError
(display formatting), ParityMetrics::compute (create small reference and
candidate &[f32], call compute, unwrap and assert fields like ssim, psnr, mse,
sample_count) and ParityMetrics::passes (show calling passes with thresholds).
Ensure examples are valid Rust doctests (use fn main() or assert! macros),
reference the exact symbols OracleError, ParityMetrics::compute, and
ParityMetrics::passes, and keep examples minimal and deterministic so they run
in CI.
- Around line 219-221: The passes() method currently treats any infinite PSNR as
passing because it checks psnr.is_infinite(), which also counts -∞; change the
condition so only positive infinity qualifies. Update the second clause in
passes (the psnr check) to allow psnr >= min_psnr_db OR (psnr.is_infinite() &&
psnr.is_sign_positive()), referencing the passes method and the psnr field so
negative infinity no longer satisfies the minimum PSNR gate.
In `@crates/cesium/src/point_fallback.rs`:
- Around line 42-67: Add runnable doc examples for the public PointCloud API:
add /// doc test blocks showing how to construct a PointCloud (populate xyz and
point_count), call position(i) to get a [f32;3] and call byte_length() to verify
the returned byte count; include at least one example that demonstrates typical
usage (e.g., create a 2-point cloud, assert position values and assert
byte_length() == xyz.len()*4). Place examples on the PointCloud struct doc and
on the position and byte_length methods so doctests exercise those public
symbols (PointCloud, position, byte_length) and compile as part of cargo test.
- Around line 48-63: PointCloud currently exposes xyz and point_count publicly
which allows constructing inconsistent state and panics in position(); make the
fields private (e.g., change pub xyz and pub point_count to xyz and point_count)
and provide a safe constructor (e.g., pub fn new(xyz: Vec<f32>) ->
Result<PointCloud, Error> or pub fn from_xyz(xyz: Vec<f32>) -> PointCloud) that
validates xyz.len() is divisible by 3 and sets point_count = xyz.len() / 3 (or
returns an error if not); update or keep pub fn position(&self, i: usize) to
assert/check i < self.point_count and index using computed base = i*3 (or use
get/expect with a clear error) so the invariant xyz.len() == 3*point_count is
always maintained by the type.
In `@crates/cesium/src/sse.rs`:
- Around line 33-100: Add rustdoc examples to the public API: add a short
runnable snippet under each of SseFrustum, SseFrustum::sse_denominator,
sse_for_tile, and tile_meets_sse showing end-to-end usage; the snippet should
construct an SseFrustum (e.g. viewport_height_px and fovy_rad), call
sse_denominator(), compute sse_for_tile(geometric_error, distance,
sse_denominator) and assert the numeric result (or use a float-approx check),
then call tile_meets_sse(...) and assert true/false. Put the snippet in a /// #
Examples section so it runs with cargo doc/tests and reference the
types/functions by name (SseFrustum, sse_denominator, sse_for_tile,
tile_meets_sse).
In `@crates/cesium/src/to_cam_soa.rs`:
- Around line 78-153: The public APIs lack runnable doc examples; add concise
doctests for the exported symbols so rustdoc tests pass: add a short /// ```rust
... ``` example for convert_to_cam_soa showing a successful call (construct
minimal slices matching splat_count and assert Ok(CamSoaResult { splat_count, ..
})) and one showing the EmptySplats error case, and add a tiny example for
ToCamSoaError/Display (format! or to_string) demonstrating the error message;
place these examples in the existing doc comments for convert_to_cam_soa,
CamSoaResult, and ToCamSoaError so they are run as doctests. Ensure the examples
use only public API names (convert_to_cam_soa, CamSoaResult, ToCamSoaError) and
compile without external deps.
- Around line 151-175: convert_to_cam_soa currently only validates SH length and
empty splats; add explicit length checks for all per-splat buffers before
returning Ok: verify _position.len() == splat_count * 3, _rotation_xyzw.len() ==
splat_count * 4, _scale.len() == splat_count * 3, and _opacity.len() ==
splat_count * 1 and return an Err(ToCamSoaError::...) when any mismatch is
found; place these checks alongside the SH validation in convert_to_cam_soa and
use the existing ToCamSoaError variants (or add clear mismatch variants) so
callers get precise expected vs actual lengths for _position, _rotation_xyzw,
_scale, and _opacity.
- Line 1: CI is failing because the repo expects stable rustfmt/clippy on the
declared toolchain and formatting/lint checks weren’t run; switch to the stable
toolchain and re-run formatting and clippy, then fix reported issues in code:
ensure rustfmt is available (rustup component add rustfmt on stable) and run the
repository formatter against crates/cesium/src/to_cam_soa.rs per rustfmt.toml,
then enable clippy (rustup component add clippy) and run cargo clippy
--workspace --all-targets -- -D warnings and fix any warnings/errors reported
(address issues in to_cam_soa.rs and any referenced functions/types) so both
cargo fmt and cargo clippy succeed on the required stable toolchain.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 6ba90329-b4e4-4244-b3e5-487eda4d7b15
📒 Files selected for processing (7)
crates/cesium/src/esri_crs.rscrates/cesium/src/fixtures.rscrates/cesium/src/hlod.rscrates/cesium/src/oracle.rscrates/cesium/src/point_fallback.rscrates/cesium/src/sse.rscrates/cesium/src/to_cam_soa.rs
|
P1 resolved (Codex + CodeRabbit) in
|
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
crates/cesium/src/spz.rs (1)
1-463:⚠️ Potential issue | 🔴 CriticalFix Rust quality gates:
cargo clippy -- -D warningscurrently fails.Clippy errors:
- Missing
/// # Safetydocs forpub unsafe extern "C"fns incrates/blas-mock-tests/src/lib.rs(e.g.,cblas_sgemm,cblas_dgemm,cblas_cgemm,cblas_zgemm).crates/cesium/src/oracle.rs:159— usecandidate.is_empty()instead ofcandidate.len() == 0(len-zero).crates/cesium/src/to_cam_soa.rs:403-404— remove no-op/erasing arithmetic with zeros (identity-op,erasing-op).crates/cesium/src/fixtures.rs:292-295—assert!on constant values should be moved into aconst { ... }block (assertions-on-constants).Re-run the quality gates (
cargo clippy ... -D warningsand thencargo fmt -- --check) after addressing these.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/cesium/src/spz.rs` around lines 1 - 463, Add missing safety docs and small Clippy fixes: in crates/blas-mock-tests/src/lib.rs add a short /// # Safety section to each pub unsafe extern "C" function (e.g., cblas_sgemm, cblas_dgemm, cblas_cgemm, cblas_zgemm) describing caller safety requirements and UB conditions; in crates/cesium/src/oracle.rs replace candidate.len() == 0 with candidate.is_empty() (use the is_empty method); in crates/cesium/src/to_cam_soa.rs remove the no-op zero arithmetic identified around the code that performs identity/erasing ops (eliminate additions/multiplications by 0 or +0 sequences); in crates/cesium/src/fixtures.rs move the compile-time assertions on constant values into a const { ... } block (wrap the assert! calls inside a const context) so they satisfy assertions-on-constants; after these edits re-run cargo clippy -- -D warnings and cargo fmt -- --check and fix any remaining style warnings.
🧹 Nitpick comments (1)
crates/cesium/src/lib.rs (1)
1-1: ⚡ Quick winNarrow the
dead_codesuppression scope.Crate-level
#![allow(dead_code)]disables dead-code signal for the whole crate and weakens strict lint gating. Prefer removing it here and applying targeted#[allow(dead_code)]only where stubs are intentionally incomplete.Suggested change
-#![allow(dead_code)]As per coding guidelines, "
cargo clippy -- -D warningsmust pass without errors."🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/cesium/src/lib.rs` at line 1, Remove the crate-level attribute "#![allow(dead_code)]" from lib.rs and instead apply #[allow(dead_code)] directly to the specific items that are intentionally unused (for example the individual stub functions, structs, enums, or modules that are incomplete); locate occurrences that currently rely on the global suppression and annotate those symbols with #[allow(dead_code)] so the rest of the crate is linted normally and "cargo clippy -- -D warnings" can pass.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@crates/cesium/src/spz.rs`:
- Around line 1-463: Add missing safety docs and small Clippy fixes: in
crates/blas-mock-tests/src/lib.rs add a short /// # Safety section to each pub
unsafe extern "C" function (e.g., cblas_sgemm, cblas_dgemm, cblas_cgemm,
cblas_zgemm) describing caller safety requirements and UB conditions; in
crates/cesium/src/oracle.rs replace candidate.len() == 0 with
candidate.is_empty() (use the is_empty method); in
crates/cesium/src/to_cam_soa.rs remove the no-op zero arithmetic identified
around the code that performs identity/erasing ops (eliminate
additions/multiplications by 0 or +0 sequences); in
crates/cesium/src/fixtures.rs move the compile-time assertions on constant
values into a const { ... } block (wrap the assert! calls inside a const
context) so they satisfy assertions-on-constants; after these edits re-run cargo
clippy -- -D warnings and cargo fmt -- --check and fix any remaining style
warnings.
---
Nitpick comments:
In `@crates/cesium/src/lib.rs`:
- Line 1: Remove the crate-level attribute "#![allow(dead_code)]" from lib.rs
and instead apply #[allow(dead_code)] directly to the specific items that are
intentionally unused (for example the individual stub functions, structs, enums,
or modules that are incomplete); locate occurrences that currently rely on the
global suppression and annotate those symbols with #[allow(dead_code)] so the
rest of the crate is linted normally and "cargo clippy -- -D warnings" can pass.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 776d9511-35be-4cc8-878c-2e0f13a52bc1
📒 Files selected for processing (4)
crates/cesium/src/arcgis_pbf.rscrates/cesium/src/esri_crs.rscrates/cesium/src/lib.rscrates/cesium/src/spz.rs
The oracle's cross-renderer reference is an existing in-scope 3DGS renderer (brush via wgpu by default; Inria gaussian-splatting / diff-gaussian-rasterization under CUDA) wired as an ordinary workspace dependency in the SAME binary. Remove the cesium-native `extern "C"` / `#[link]` FFI placeholder and the CesiumJS framing entirely — there is no foreign ABI and never will be. Both reference paths consume the same CAM SoA GaussianBatch and emit the same interleaved-RGB framebuffer, so ParityMetrics diffs like-for-like. Also fix a clippy len_zero warning. https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41
… residue The ~7 GB workspace target/ multiplies if each fleet agent compiles in its own worktree (12 agents → ~84 GB). Codify: spawn the Sonnet fleet in the shared checkout (no per-agent worktrees), edit-only; the Opus orchestrator compiles/lints/tests once in the single target/. Opus runs cargo freely. https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41
Doc examples (project rule: every public API needs a runnable `///` example): runnable doctests added across sse, oracle, fixtures, hlod, to_cam_soa, point_fallback. Doctests up 33 → 67, all green. Hardening: - hlod::traverse_tile — skip out-of-range child indices and guard recursion with MAX_HLOD_DEPTH=64 (cyclic input no longer panics or loops forever); root=0 invariant documented on HlodTree/push/traverse_hlod. - point_fallback::PointCloud — add `new` (derives point_count, enforces the 3·n invariant) and non-panicking `try_position`; `position` now delegates via expect for a clear desync message. - to_cam_soa::convert_to_cam_soa — validate position/rotation/scale/opacity buffer lengths before Ok; new BufferLengthMismatch error variant. fmt + clippy clean; 42 unit + 67 doc tests pass. https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41
is_infinite() is true for both +inf and -inf; a -inf PSNR would wrongly satisfy any minimum-PSNR gate. Only +inf (identical buffers, MSE=0) should auto-pass. (CodeRabbit, oracle.rs passes().) https://claude.ai/code/session_017GFLBnDy23AWBqvkbHHC41
What this is
The optional
cesiumreference + parity oracle crate (the "modesty clause" / runnable legacy pillar from.claude/knowledge/crate-registry.md). Not a production dependency — a workspace member viacrates/*but not indefault-members, so optional/dev by construction. Relocates tolance-graph/crates/cesiumonce flawless.Its job: reverse-engineer external geospatial-splat formats into ndarray CAM SoA, and diff our
splat3drender against a reference — so "parity / better" is measured, not asserted.Hard rules (enforced in
lib.rs)splat3d::gaussian::GaussianBatch+cam_pqindices. No AoS survives import.f=json.Status: skeleton (commented scaffold only)
This PR is WIP/draft. The 12 module slots compile (
cargo check -p cesium✓) but contain only///commented scaffold — no live implementation. They are filled in parallel, then reviewed live by Opus + CodeRabbit + Codex before anything is uncommented.tileset·implicit_tiling·khr_gsarcgis_pbf·spz·esri_crsto_cam_soa·sse·hlodpoint_fallback·oracle·fixturesGrounding references (reverse-engineer against these;
// UNVERIFIED:if unconfirmed)CesiumGS/cesium· KhronosKHR_gaussian_splatting+_compression_spz·R-ArcGIS/arcpbf·AdaWorldAPI/arcgisutils·dfridkin/arcGIS-Rust-runtime·EsriDevEvents/locup·staehlli/3D-settlement-development· Inria.plyviasplat3d::ply.Honest scope
The
oraclemodule's live "run real Cesium" path is FFI / reference-renderer territory — it stays commented scaffold until a reference renderer is wired; the first real reference is the Inria.plyharness (we havesplat3d::ply). Modules 1–9 (formats → CAM SoA) are the buildable core.Review loop
CodeRabbit + Codex: please review the scaffold's spec correctness against the real KHR/3D-Tiles/ArcGIS-PBF specs (it's commented, so flag fabricated field names / wrong formats / wrong CAM-SoA mapping). Goes live module-by-module under the bot+Opus loop until flawless.
Generated by Claude Code
Summary by CodeRabbit
New Features
Tests
Documentation