feat(moves)!: add invariant-bearing move preparation - #123
Conversation
Prepare every supported Pachner move as a handle-free applicable value before entering its mutation boundary. Replace string failures with typed move errors and outcomes so command and Metropolis accounting distinguish inapplicable proposals, execution failures, and accepted or rejected transitions. BREAKING CHANGE: Public move functions now return MoveResult<Manifold> with MoveError instead of std::expected<Manifold, std::string>. MoveCommand result customization now accepts only that typed result. Refs: #101
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (11)
Walkthrough3D ergodic Pachner moves now use point-based prepare/execute stages with typed ChangesTyped move pipeline
Estimated code review effort: 4 (Complex) | ~60 minutes Possibly related issues
Possibly related PRs
Sequence Diagram(s)sequenceDiagram
participant MoveCommand
participant Metropolis
participant ErgodicMoves
participant Delaunay
MoveCommand->>Metropolis: request random move
Metropolis->>ErgodicMoves: propose candidate
ErgodicMoves->>Delaunay: prepare and resolve candidate
Delaunay-->>ErgodicMoves: mutated manifold or MoveError
ErgodicMoves-->>Metropolis: MoveResult
Metropolis->>Metropolis: record MoveOutcome
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Prepare every supported Pachner move as a handle-free applicable value before entering its mutation boundary.
Replace string failures with typed move errors and outcomes so command and Metropolis accounting distinguish inapplicable proposals, execution failures, and accepted or rejected transitions.
BREAKING CHANGE: Public move functions now return MoveResult with MoveError instead of std::expected<Manifold, std::string>. MoveCommand result customization now accepts only that typed result.
Refs: #101
Summary by CodeRabbit
New Features
Documentation
Tests