feat(cli)!: add notebook-backed artifact workflows#508
Conversation
Closes #188 - Add the opt-in `delaunay` binary for triangulation, convex-hull, validation-demo, and Pachner stress JSON/CSV artifact generation. - Add Jupyter quickstart, validation visualization, and Pachner stress notebooks that render README imagery and Parquet-backed telemetry under `target/notebooks`. - Package the active docs, notebooks, and README hero asset for Cargo consumers, and align validation docs on valid affine realization terminology. - Add notebook Semgrep guardrails and CLI integration coverage for subcommands, artifact outputs, invalid arguments, and unsupported topology flags. - Implement spherical unit-sphere canonicalization for finite nonzero coordinates. BREAKING CHANGE: `GlobalTopology::model` is now crate-private, and `ToroidalModel::try_new` was removed. Construct `ToroidalDomain` with `ToroidalDomain::try_new` and pass it to `ToroidalModel::new` instead.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
WalkthroughThis PR adds an opt-in ChangesCLI, stress workflow, and notebook tooling
Topology and validation wording
Rust docs and misc cleanup
Estimated code review effort: 5 (Critical) | ~150 minutes Sequence Diagram(s)sequenceDiagram
participant Notebook
participant DelaunayCLI
participant FileSystem
participant Polars
Notebook->>DelaunayCLI: run pachner-stress cases
DelaunayCLI->>FileSystem: write progress.csv and summary.json
Notebook->>FileSystem: load artifacts
Notebook->>Polars: normalize telemetry
Polars-->>Notebook: summary and progress tables
Possibly related issues
Possibly related PRs
Suggested labels: Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 332 |
🟢 Coverage 100.00% diff coverage · +0.03% coverage variation
Metric Results Coverage variation ✅ +0.03% coverage variation (-1.00%) Diff coverage ✅ 100.00% diff coverage Coverage variation details
Coverable lines Covered lines Coverage Common ancestor commit (bc53e32) 78537 71617 91.19% Head commit (4e6dcdb) 78696 (+159) 71784 (+167) 91.22% (+0.03%) 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 (#508) 206 206 100.00% 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.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #508 +/- ##
==========================================
+ Coverage 91.16% 91.19% +0.02%
==========================================
Files 87 87
Lines 78316 78475 +159
==========================================
+ Hits 71398 71565 +167
+ Misses 6918 6910 -8
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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 `@docs/dev/rust/reference.md`:
- Around line 1052-1069: Update the API Stability guidance in reference.md to
match the crate’s pre-1.0 policy: in the relevant section, change the advice
away from preserving public APIs and adding #[deprecated] migration shims, and
instead state that intentional breaking changes to public types/functions are
acceptable until v1.0.0. Make sure this aligns with the existing Constructor
Naming guidance and the behavior reflected by GlobalTopology::model and
ToroidalModel::try_new, explicitly discouraging deprecated compatibility
aliases, re-exports, or shim functions.
🪄 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: 878d2e76-8d15-4f95-8a13-5fde0868cc23
⛔ Files ignored due to path filters (2)
Cargo.lockis excluded by!**/*.lockdocs/images/delaunay_3d_readme.pngis excluded by!**/*.png
📒 Files selected for processing (44)
.gitignoreAGENTS.mdCITATION.cffCargo.tomlREADME.mdbenches/README.mdbenches/pachner_stress.rsdocs/api_design.mddocs/dev/README.mddocs/dev/commands.mddocs/dev/debug_env_vars.mddocs/dev/rust.mddocs/dev/rust/reference.mddocs/invariants.mddocs/limitations.mddocs/roadmap.mddocs/topology.mddocs/validation.mddocs/workflows.mdjustfilenotebooks/00_quickstart.ipynbnotebooks/01_validation_check_visualization.ipynbnotebooks/02_pachner_stress_cli.ipynbnotebooks/nonfaithful_embedding.ipynbscripts/README.mdscripts/benchmark_utils.pyscripts/postprocess_changelog.pyscripts/tests/test_notebook_check.pyscripts/tests/test_tag_release.pysemgrep.yamlsrc/config.rssrc/core/embedding.rssrc/core/tds/storage.rssrc/core/tds/validation.rssrc/core/validation.rssrc/delaunay/builder.rssrc/lib.rssrc/main.rssrc/topology/spaces/spherical.rssrc/topology/traits/global_topology_model.rssrc/topology/traits/topological_space.rstests/cli.rstests/prelude_exports.rstests/semgrep/notebooks/notebook_structure.ipynb
💤 Files with no reviewable changes (2)
- scripts/tests/test_tag_release.py
- notebooks/nonfaithful_embedding.ipynb
- Add `just notebook-reset-from-git` for restoring tracked source notebooks from the Git index or an explicit tree. - Ignore standard Jupyter checkpoint, virtual-document, and nbconvert artifacts. - Clarify pre-1.0 API guidance to prefer intentional breaking changes over deprecated compatibility shims. - Simplify spherical normalization by removing an unreachable post-scaling fallback.
- Move the adversarial 3D k=1 roundtrip fixture behind slow-tests so the default nextest profile stays inside the Windows watchdog. - Keep faster 3D benchmark-fixture coverage in the default suite.
Closes #188
delaunaybinary for triangulation, convex-hull, validation-demo, and Pachner stress JSON/CSV artifact generation.target/notebooks.BREAKING CHANGE:
GlobalTopology::modelis now crate-private, andToroidalModel::try_newwas removed. ConstructToroidalDomainwithToroidalDomain::try_newand pass it toToroidalModel::newinstead.