Repository navigation
feat(types): edit mutable compound curves in place - #50
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #50 +/- ##
============================================
+ Coverage 99.40% 99.45% +0.04%
- Complexity 703 840 +137
============================================
Files 132 158 +26
Lines 1525 1823 +298
============================================
+ Hits 1516 1813 +297
- Misses 9 10 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Alexandre-T
left a comment
There was a problem hiding this comment.
READY FOR MERGE
Independent review of b865d14 against Story #42 and Epic #38: no blocking findings or unresolved technical gates.
Verified all four coordinate layouts; mutable line-string/circular-string component typing; ordered, zero-based editing and atomic rejection; shared component/point identity; recursive and local-only behavior of all three context setters; fixed spatial type/layout; chainable mutation contracts; and updated English documentation. Immutable behavior and dependencies remain unchanged.
Normative source checked: ISO/IEC CD 13249-3:201x(E), clause 7.4.1. Component types follow that source; geometric continuity remains an explicit validation concern under the approved representation contract.
Validation: independently reran the focused suite (29 tests, 214 assertions) and git diff --check. Inspected the full local test report (816 tests, 7,485 assertions) and successful quality report. GitHub Actions run 40904435138 passed PHP 8.4 tests and quality checks, and PHP 8.5 tests, for this revision. GitGuardian also passed.
The PR remains open; merge and final Done verification require the maintainer's decision.
Published as a COMMENT review because GitHub prevents APPROVE submissions through the same account that authored the PR. The reviewing agent is independent from the implementing agent.
Pull Request
Closes #42
Summary
Add mutable
CompoundCurveclasses in all four coordinate layouts. Consumers can append, insert, replace and remove mutable line-string and circular-string components while retaining component identity and interpolation.Acceptance criteria
Validation
composer test-local: 816 tests, 7485 assertions (PHP 8.5.11 with PCOV).composer quality: passed (exit code 0); PHP CS Fixer, PHPStan level 9, PHPMD and PHP_CodeSniffer.git diff --check: passed.tests/Unit/Types/MutableCompoundCurveTest.php.Standards
ISO/IEC CD 13249-3:201x(E), clause 7.4.1, limits compound components to line strings and circular strings. The implementation enforces these technical member types. Continuity and other functional geometry validity remain explicit consumer validation concerns under the approved #38/#42 contract.
Architecture and compatibility
Follows Epic #38 and Stories #39–#41. Mutable classes reside directly under the dimension namespace; Geometry/Geography is instance metadata. Supplied components retain their own context on insertion. Context propagation updates existing shared instances and never transforms coordinates.
This adds the approved mutable API without changing immutable concrete behavior or dependencies. Mutable indices are strict and do not use the legacy immutable wrapping convention. Coordinate tuples and nested compound components are rejected.
Documentation
Updated the constructor/API reference, class hierarchy, ownership rules and spatial-reference propagation documentation. Examples show shared ownership and recursive versus local-only updates.
Developer handoff
Independent local review is favorable, with no blocking code findings. The published revision will receive independent PR review and remote CI verification. Third-party PHPMD/PDepend emits PHP 8.5 deprecation notices; no quality rule was weakened.