Skip to content

refactor(api)!: return fallible facet iterators#458

Merged
acgetchell merged 3 commits into
mainfrom
refactor/fallible-facet-iterators
Jun 15, 2026
Merged

refactor(api)!: return fallible facet iterators#458
acgetchell merged 3 commits into
mainfrom
refactor/fallible-facet-iterators

Conversation

@acgetchell

Copy link
Copy Markdown
Owner
  • Make all-facet and boundary-facet traversal yield Result<FacetView, FacetError> so corrupted facet views and invalid boundary incidence are surfaced instead of skipped.
  • Route boundary-facet consumers, hull extraction, Euler counting, examples, benches, and prelude coverage through explicit item-error handling.
  • Use SimplexKeyBuffer for local repair and topology frontiers, and add a Semgrep guard for future raw Vec<SimplexKey> regressions.
  • Add a compact 2D-5D timing summary to just perf-large-scale-smoke.

BREAKING CHANGE: facet iteration APIs now yield Result<FacetView, FacetError> items, AllFacetsIter::try_new is crate-private in favor of Tds::facets(), and validate_ridge_links_for_simplices now accepts IntoIterator<Item = SimplexKey>; slice callers should pass .iter().copied().

- Make all-facet and boundary-facet traversal yield `Result<FacetView, FacetError>` so corrupted facet views and invalid boundary incidence are surfaced instead of skipped.
- Route boundary-facet consumers, hull extraction, Euler counting, examples, benches, and prelude coverage through explicit item-error handling.
- Use `SimplexKeyBuffer` for local repair and topology frontiers, and add a Semgrep guard for future raw `Vec<SimplexKey>` regressions.
- Add a compact 2D-5D timing summary to `just perf-large-scale-smoke`.

BREAKING CHANGE: facet iteration APIs now yield `Result<FacetView, FacetError>` items, `AllFacetsIter::try_new` is crate-private in favor of `Tds::facets()`, and `validate_ridge_links_for_simplices` now accepts `IntoIterator<Item = SimplexKey>`; slice callers should pass `.iter().copied()`.
@acgetchell acgetchell self-assigned this Jun 15, 2026
@coderabbitai

coderabbitai Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: 884d0c62-1a46-4fe3-b7e3-bb397b33df1b

📥 Commits

Reviewing files that changed from the base of the PR and between 5864b0c and 893ec82.

📒 Files selected for processing (1)
  • tests/proptest_delaunay_triangulation.rs

Walkthrough

AllFacetsIter and BoundaryFacetsIter are refactored to yield Result<FacetView, FacetError> items. Tds gains simplex_key_iter and facets(), SimplexUuidSortKey switches from Vec to SmallBuffer, and validate_ridge_links_for_simplices is generalized to impl IntoIterator. Hull-extension errors adopt structured variants. Vec<SimplexKey> frontier buffers migrate to SimplexKeyBuffer throughout. All callsites, docs, examples, and tests are updated. A perf smoke summary table and a Semgrep lint rule are added.

Changes

Fallible Facet Iterators and SimplexKeyBuffer Migration

Layer / File(s) Summary
AllFacetsIter/BoundaryFacetsIter fallible iteration and Tds support
src/core/facet.rs, src/core/tds.rs
AllFacetsIter is rewritten as a state-machine iterator yielding Result<FacetView, FacetError>; AllFacetsIter::try_new is narrowed to pub(crate); Tds::facets() is added; BoundaryFacetsIter validates multiplicity via the facet-key cache and yields Result; Tds::simplex_key_iter and SimplexUuidSortKey (SmallBuffer-backed) are introduced. New tests cover overflow, cache-miss, empty-multiplicity, and overshared-multiplicity error cases.
validate_ridge_links_for_simplices generalization and hull-extension error structuring
src/topology/manifold.rs, src/core/algorithms/incremental_insertion.rs, src/core/validation.rs
validate_ridge_links_for_simplices and build_ridge_star_map_for_simplices are updated to accept impl IntoIterator<Item=SimplexKey>; all test callsites updated. Private helpers standardize HullExtensionReason construction in incremental insertion; 2D edge-split emits InvalidPatch; total_boundary stat uses try_fold.
SimplexKeyBuffer migration in construction, insertion, locality, and debug paths
src/delaunay/construction.rs, src/delaunay/insertion.rs, src/delaunay/locality.rs, src/core/algorithms/flips.rs, src/core/algorithms/incremental_insertion.rs, src/core/insertion.rs, src/core/algorithms/locate.rs, src/core/orientation.rs
Vec<SimplexKey> frontier buffers (soft_fail_seeds, pending_repair_seeds, completion_seed_simplices, collect_local_repair_seed_simplices return, locality function parameters, seed_sample, and debug samplers) are replaced with SimplexKeyBuffer. validate_ridge_links_after_repair is rewritten to remove the closure pattern. orientation.rs reverts one buffer to Vec.
Fallible iterator callsite updates: boundary, query, traits, util, and re-exports
src/core/boundary.rs, src/core/query.rs, src/core/traits/boundary_analysis.rs, src/core/util/jaccard.rs, src/lib.rs
boundary_facets/facets consumption switches to try_fold, .transpose()?, and let facet = facet? patterns throughout docs, examples, and tests. ExampleError enums gain FacetError variants. facets() sources from self.tds.facets(). AllFacetsIter and BoundaryFacetsIter are added to query, prelude::triangulation, and prelude::query re-exports.
Downstream callsite updates: geometry, topology, delaunay query, examples, benchmarks, and tests
src/geometry/algorithms/convex_hull.rs, src/geometry/util/measures.rs, src/topology/characteristics/euler.rs, src/delaunay/query.rs, examples/topology_editing.rs, examples/triangulation_and_hull.rs, benches/boundary_uuid_iter.rs, tests/example_workflows.rs, tests/prelude_exports.rs, tests/trait_bound_ergonomics.rs
from_triangulation in convex hull maps per-facet errors and uses fallible collect. Euler's count_boundary_simplices maps items to TopologyError::BoundaryFacetSimplexAccess. measures.rs tests use collect::<Result<Vec<_>,_>>(). The topology-editing example gains a FacetError variant and fallible helper return types. Bench and integration/prelude tests are updated to try_fold patterns.

Perf Smoke Summary Table and Semgrep Rule

Layer / File(s) Summary
Justfile smoke summary, Semgrep rule, and tooling docs
justfile, semgrep.yaml, tests/semgrep/src/project_rules/rust_style.rs, docs/dev/tooling-alignment.md, benches/README.md
The perf-large-scale-smoke recipe tees nextest output to a temp log, extracts wall-time metrics via awk, and prints a 2D–5D summary table. A new Semgrep rule prefer-simplex-key-buffer-for-local-frontiers is added with path scoping, regex matching, and fixture structs/functions. Tooling-alignment docs document the rule. benches/README.md describes the new output.

Sequence Diagram(s)

sequenceDiagram
  participant Caller
  participant Tds
  participant AllFacetsIter
  participant BoundaryFacetsIter

  Caller->>Tds: facets() → Result<AllFacetsIter, TdsError>
  Tds->>AllFacetsIter: try_new(simplex_key_iter())
  AllFacetsIter-->>Caller: Ok(AllFacetsIter)
  loop per simplex key
    Caller->>AllFacetsIter: next()
    alt facet-index overflow
      AllFacetsIter-->>Caller: Some(Err(FacetError::InvalidFacetIndexOverflow))
    else valid facet
      AllFacetsIter-->>Caller: Some(Ok(FacetView))
    end
  end

  Caller->>Tds: boundary_facets() → Result<BoundaryFacetsIter, TdsError>
  Tds->>BoundaryFacetsIter: new(AllFacetsIter, facet_key_cache)
  BoundaryFacetsIter-->>Caller: Ok(BoundaryFacetsIter)
  loop per facet
    Caller->>BoundaryFacetsIter: next()
    BoundaryFacetsIter->>BoundaryFacetsIter: lookup facet key in cache
    alt key missing from cache
      BoundaryFacetsIter-->>Caller: Some(Err(FacetKeyNotFoundInCache))
    else multiplicity ≠ 1
      BoundaryFacetsIter-->>Caller: Some(Err(InvalidFacetMultiplicity))
    else boundary facet
      BoundaryFacetsIter-->>Caller: Some(Ok(FacetView))
    end
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • acgetchell/delaunay#103: Directly connected — that PR introduced/rewired FacetView and the facet iterators (AllFacetsIter/BoundaryFacetsIter) that this PR upgrades to yield Result items.
  • acgetchell/delaunay#455: Both modify the core facet/boundary iteration APIs in src/core/facet.rs to make facet handling fallible and propagate FacetError via Result.
  • acgetchell/delaunay#354: Related through Semgrep tooling — both touch Semgrep configuration and rule enablement for the repository.

Poem

🐇 Hop, hop through the facets so fine,
No silent None left to confound the design!
Each boundary Result bubbles up with care,
SimplexKeyBuffer stacked fixed in the air.
A summary table now greets the long run —
The warren is safer, the mesh work is done!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely summarizes the main change: refactoring facet iterators to return fallible Results instead of plain values.
Description check ✅ Passed The description is clearly related to the changeset, explaining the key refactoring goals, API changes, and secondary improvements across multiple files.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 100.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/fallible-facet-iterators

Comment @coderabbitai help to get the list of available commands and usage tips.

@acgetchell acgetchell enabled auto-merge (squash) June 15, 2026 00:52
@codacy-production

codacy-production Bot commented Jun 15, 2026

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 27 complexity

Metric Results
Complexity 27

View in Codacy

🟢 Coverage 92.98% diff coverage · +0.08% coverage variation

Metric Results
Coverage variation +0.08% coverage variation (-1.00%)
Diff coverage 92.98% diff coverage

View coverage diff in Codacy

Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (b41393e) 66469 60780 91.44%
Head commit (893ec82) 66786 (+317) 61120 (+340) 91.52% (+0.08%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#458) 513 477 92.98%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/core/boundary.rs (1)

337-489: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Add a 5D case to the dimension-generic boundary-facet regression test.

This test is positioned as cross-dimensional coverage but currently stops at D=4. Please add a D=5 simplex case (or shared macro-driven case) so the Result-yielding facet path is validated through D=5 as required by repo policy.

As per coding guidelines, “Unit tests … dimension-generic tests MUST cover D=2 through D=5 whenever feasible using pastey macros.”

🤖 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 `@src/core/boundary.rs` around lines 337 - 489, Add a fifth test case for a 5D
simplex to the test_boundary_facets_single_simplices function to achieve full
dimension coverage through D=5 as required by repository policy. After Test Case
4 (empty triangulation), create a new test block that generates a 5D simplex
using 6 points (the origin and 5 unit vectors along each axis), verify that the
DelaunayTriangulation has 1 simplex and dimension 5, assert that boundary_facets
returns exactly 6 boundary facets (facets of a 5D simplex), and verify all
facets are confirmed as boundary facets using the is_boundary_facet_with_map
method on the cached facet_to_simplices map, following the same validation
pattern as the 4D test case.

Source: Coding guidelines

🧹 Nitpick comments (2)
src/core/facet.rs (1)

1141-1149: 💤 Low value

Defensive skip when simplex not found from its own key iterator.

Lines 1147-1148 silently skip to the next simplex key when tds.simplex(next_simplex_key) returns None. Since simplex_keys is derived from the TDS's own slotmap and the TDS is immutably borrowed, this path should be unreachable in a correctly-functioning system.

If this path is hit, it would indicate internal inconsistency. Given the PR's goal of surfacing errors explicitly rather than silently skipping, consider whether this warrants a FacetError::SimplexNotFoundInTriangulation error instead of the silent skip.

That said, this is defensive programming and the current behavior is safe—it just continues to the next key rather than panicking or returning stale data.

🤖 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 `@src/core/facet.rs` around lines 1141 - 1149, In the AllFacetsIterState
transition logic, when the else branch is reached (where simplex_keys returns a
key that does not exist in the TDS), replace the silent skip that sets state to
AllFacetsIterState::PendingSimplex with explicit error handling. Instead,
surface a FacetError::SimplexNotFoundInTriangulation error to indicate the
internal inconsistency, aligning with the PR's goal of explicit error handling
rather than silently skipping unreachable defensive paths.
src/core/algorithms/incremental_insertion.rs (1)

3724-3729: ⚡ Quick win

Add coverage for the new 2D edge-split InvalidPatch paths.

Both branches now classify edge-split ambiguity as HullExtensionReason::InvalidPatch, which is retryable via InsertionError::is_retryable(). Add focused tests for the bad boundary-count case and the “point on a hull vertex matches multiple boundary edges” case.

As per coding guidelines, unit tests must cover known values and error paths.

Also applies to: 3935-3936

🤖 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 `@src/core/algorithms/incremental_insertion.rs` around lines 3724 - 3729, Add
focused unit tests to cover the two new 2D edge-split error paths that now use
HullExtensionReason::InvalidPatch. Create a test case for the bad boundary-count
scenario that verifies when boundary_facets.len() does not equal 2, it properly
returns InvalidPatch with appropriate details. Create another test case for the
"point on hull vertex matches multiple boundary edges" scenario (also at line
range 3935-3936). Both tests should verify that these InvalidPatch errors are
properly retryable via InsertionError::is_retryable() and include the correct
error details in the reason string.

Source: Coding guidelines

🤖 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 `@semgrep.yaml`:
- Around line 174-175: The pattern-regex for detecting frontier vector
allocations is incomplete because it only matches explicitly typed declarations
with Vec<SimplexKey> or turbofish syntax Vec::<SimplexKey>::new(), but misses
inferred type forms like let mut pending_seed_simplices = Vec::new() where the
type is inferred. Modify the pattern-regex to also match Vec::new() and
Vec::with_capacity() calls without type parameters when they are assigned to
variables matching the frontier vector naming patterns (pending_, repair_,
seed_, soft_fail_, touched_, affected_, frontier_, sample_, conflict_preview, or
new_simplices/removed_simplices). This can be done by adding an alternative
branch to the regex that matches these variable names followed by assignment to
a bare Vec::new() or Vec::with_capacity() call without requiring explicit type
annotation.

In `@src/core/algorithms/incremental_insertion.rs`:
- Around line 3762-3766: The total_boundary calculation in the
incremental_insertion.rs file is silently converting iterator failures to 0
using unwrap_or, which masks errors in the boundary-facet API. Instead of using
unwrap_or(0), propagate the Result returned by try_fold so that errors in the
boundary_facets iterator are not hidden. Change total_boundary to be a Result
type that can carry the error information, allowing the hull-extension logic to
properly detect and handle facet iterator failures rather than treating
corrupted iterators as empty boundaries.

---

Outside diff comments:
In `@src/core/boundary.rs`:
- Around line 337-489: Add a fifth test case for a 5D simplex to the
test_boundary_facets_single_simplices function to achieve full dimension
coverage through D=5 as required by repository policy. After Test Case 4 (empty
triangulation), create a new test block that generates a 5D simplex using 6
points (the origin and 5 unit vectors along each axis), verify that the
DelaunayTriangulation has 1 simplex and dimension 5, assert that boundary_facets
returns exactly 6 boundary facets (facets of a 5D simplex), and verify all
facets are confirmed as boundary facets using the is_boundary_facet_with_map
method on the cached facet_to_simplices map, following the same validation
pattern as the 4D test case.

---

Nitpick comments:
In `@src/core/algorithms/incremental_insertion.rs`:
- Around line 3724-3729: Add focused unit tests to cover the two new 2D
edge-split error paths that now use HullExtensionReason::InvalidPatch. Create a
test case for the bad boundary-count scenario that verifies when
boundary_facets.len() does not equal 2, it properly returns InvalidPatch with
appropriate details. Create another test case for the "point on hull vertex
matches multiple boundary edges" scenario (also at line range 3935-3936). Both
tests should verify that these InvalidPatch errors are properly retryable via
InsertionError::is_retryable() and include the correct error details in the
reason string.

In `@src/core/facet.rs`:
- Around line 1141-1149: In the AllFacetsIterState transition logic, when the
else branch is reached (where simplex_keys returns a key that does not exist in
the TDS), replace the silent skip that sets state to
AllFacetsIterState::PendingSimplex with explicit error handling. Instead,
surface a FacetError::SimplexNotFoundInTriangulation error to indicate the
internal inconsistency, aligning with the PR's goal of explicit error handling
rather than silently skipping unreachable defensive paths.
🪄 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: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: 35cdf3d6-d9af-46b4-a1c0-e8d9042c3e0a

📥 Commits

Reviewing files that changed from the base of the PR and between b41393e and a8df8ea.

📒 Files selected for processing (32)
  • benches/README.md
  • benches/boundary_uuid_iter.rs
  • docs/dev/tooling-alignment.md
  • examples/topology_editing.rs
  • examples/triangulation_and_hull.rs
  • justfile
  • semgrep.yaml
  • src/core/algorithms/flips.rs
  • src/core/algorithms/incremental_insertion.rs
  • src/core/algorithms/locate.rs
  • src/core/boundary.rs
  • src/core/facet.rs
  • src/core/insertion.rs
  • src/core/orientation.rs
  • src/core/query.rs
  • src/core/tds.rs
  • src/core/traits/boundary_analysis.rs
  • src/core/util/jaccard.rs
  • src/core/validation.rs
  • src/delaunay/construction.rs
  • src/delaunay/insertion.rs
  • src/delaunay/locality.rs
  • src/delaunay/query.rs
  • src/geometry/algorithms/convex_hull.rs
  • src/geometry/util/measures.rs
  • src/lib.rs
  • src/topology/characteristics/euler.rs
  • src/topology/manifold.rs
  • tests/example_workflows.rs
  • tests/prelude_exports.rs
  • tests/semgrep/src/project_rules/rust_style.rs
  • tests/trait_bound_ergonomics.rs

Comment thread semgrep.yaml Outdated
Comment thread src/core/algorithms/incremental_insertion.rs Outdated
@codecov

codecov Bot commented Jun 15, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.98246% with 36 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.49%. Comparing base (b41393e) to head (893ec82).
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
src/core/algorithms/incremental_insertion.rs 83.05% 20 Missing ⚠️
src/core/facet.rs 95.10% 7 Missing ⚠️
src/geometry/algorithms/convex_hull.rs 60.00% 4 Missing ⚠️
src/delaunay/insertion.rs 75.00% 2 Missing ⚠️
src/core/algorithms/flips.rs 80.00% 1 Missing ⚠️
src/core/algorithms/locate.rs 0.00% 1 Missing ⚠️
src/core/insertion.rs 50.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #458      +/-   ##
==========================================
+ Coverage   91.41%   91.49%   +0.07%     
==========================================
  Files          72       72              
  Lines       66257    66574     +317     
==========================================
+ Hits        60570    60910     +340     
+ Misses       5687     5664      -23     
Flag Coverage Δ
unittests 91.49% <92.98%> (+0.07%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

- Propagate boundary-facet iterator errors from hull-extension diagnostics instead of treating failed iteration as an empty boundary.
- Report stale simplex keys from `AllFacetsIter` as `FacetError::SimplexNotFoundInTriangulation`.
- Extend the local-frontier Semgrep guard to inferred `Vec::new` and `Vec::with_capacity` allocations.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
src/core/boundary.rs (1)

541-543: ⚡ Quick win

Use tracing macro for committed test diagnostics

Line 541 keeps committed test diagnostics on println!; switch this to tracing::info! to align with the repo logging rule.

Suggested patch
-        println!(
+        tracing::info!(
             "✓ Single simplex boundary analysis works correctly in 2D, 3D, 4D, 5D, and empty cases"
         );

As per coding guidelines, **/*.rs requires tracing::{debug,info,warn,error}! for committed diagnostics across tests/benchmarks.

🤖 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 `@src/core/boundary.rs` around lines 541 - 543, Replace the println! macro call
with tracing::info! macro to comply with the repository's logging guidelines for
committed test diagnostics. The message string and its content can remain the
same; only the logging mechanism needs to be changed from println! to
tracing::info! for the test output at the single simplex boundary analysis
validation.

Source: Coding guidelines

🤖 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.

Nitpick comments:
In `@src/core/boundary.rs`:
- Around line 541-543: Replace the println! macro call with tracing::info! macro
to comply with the repository's logging guidelines for committed test
diagnostics. The message string and its content can remain the same; only the
logging mechanism needs to be changed from println! to tracing::info! for the
test output at the single simplex boundary analysis validation.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: b9201f40-72c1-422c-b485-e13f7cb4a3ea

📥 Commits

Reviewing files that changed from the base of the PR and between a8df8ea and 5864b0c.

📒 Files selected for processing (5)
  • semgrep.yaml
  • src/core/algorithms/incremental_insertion.rs
  • src/core/boundary.rs
  • src/core/facet.rs
  • tests/semgrep/src/project_rules/rust_style.rs
🚧 Files skipped from review as they are similar to previous changes (4)
  • semgrep.yaml
  • tests/semgrep/src/project_rules/rust_style.rs
  • src/core/facet.rs
  • src/core/algorithms/incremental_insertion.rs

@acgetchell acgetchell disabled auto-merge June 15, 2026 02:19
- Allow dimension-generated incremental insertion properties to override their proptest case count.
- Reduce the 5D incremental insertion validity property to a smaller default-suite sample while preserving active 5D coverage.
@acgetchell acgetchell merged commit 739aba0 into main Jun 15, 2026
22 checks passed
@acgetchell acgetchell deleted the refactor/fallible-facet-iterators branch June 15, 2026 03:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant