Repository navigation
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #930 +/- ##
==========================================
+ Coverage 67.18% 67.73% +0.55%
==========================================
Files 123 124 +1
Lines 43674 44537 +863
Branches 11153 11312 +159
==========================================
+ Hits 29342 30169 +827
+ Misses 11194 11153 -41
- Partials 3138 3215 +77
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
This PR rebases and integrates the ND rotor-scan work (superseding #855) onto current main, adds an ESS finalization crash fix, fixes a pipe-mode initialization-order issue in Scheduler.__init__, and introduces adaptive sparse 2D scan support end-to-end (scan utilities, scheduler orchestration, plotting, and tests).
Changes:
- Added
arc/species/nd_scan.pyto centralize ND scan utilities and implement adaptive sparse 2D scanning, validation, coupling metrics, and classification. - Updated
arc/scheduler.pyto use the new ND-scan utilities, fix ESS scan finalization, support adaptive batching, and fix pipe planner/coordinator initialization ordering. - Added sparse/adaptive 2D plotting support in
arc/plotter.py, plus extensive unit/functional tests and an xTB directed-scan--optfix.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| arc/species/nd_scan.py | New ND scan utility module including adaptive sparse 2D scanning, validation, and classification helpers. |
| arc/species/nd_scan_test.py | New unit tests covering dense/continuous/adaptive scan utilities, validation, and classification. |
| arc/scheduler.py | Integrates ND scan module, adds adaptive scan orchestration, fixes ESS finalization crash, and adjusts pipe init ordering. |
| arc/scheduler_test.py | Adds functional directed-scan tests (dense + adaptive) using xTB, and related helpers. |
| arc/plotter.py | Adds sparse/adaptive 2D plotting path (interpolation + overlays) and fixes axis limit setting bugs. |
| arc/plotter_test.py | Adds tests for sparse plotting helpers and non-crashing plot generation. |
| arc/job/adapters/xtb_adapter.py | Ensures directed_scan jobs that are optimization scans pass --opt to xTB. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
9bf5748 to
b0e86c3
Compare
b0e86c3 to
1376b4c
Compare
1376b4c to
274ed64
Compare
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved critical and moderate findings affect adaptive scan correctness, reachability, validation, and completion.
6 open issues
Record failed adaptive points before batch completion · New Enforce max_points when selecting seed batches · New Exclude invalid points from sampled neighbor iteration · New Deduplicate periodic-edge validation checks · New Exclude non-isomorphic results from adaptive metrics · New Persist processed adaptive jobs across scheduler rounds · New
3 resolved since last review
Review effort: Lite
Contains pure scan-surface helpers
Scheduler.__init__ calls run_scan_jobs() from its per-species restart loop,
and run_scan_jobs dereferences self.pipe_planner via try_pipe_rotor_scans_1d().
The planner was constructed after that loop, so restarting a project with
pending 1D rotor scans raised:
AttributeError: 'Scheduler' object has no attribute 'pipe_planner'
Construction now happens before the restart loop. Both PipeCoordinator and
PipePlanner only store references in __init__, so early construction is safe.
This is a latent bug on main (main:464/487/511 call run_scan_jobs; main:521
assigns pipe_planner); it was surfaced by the ND scan functional tests, which
are the first tests to exercise that construction path.
274ed64 to
17a740a
Compare



Summary
This PR supersedes/complements #855. It is #855's four commits (
Added the ND Scan module,Added directed scan to xTB job adapter,Added ND scan functionalities to plotter,Adaptations to Scheduler) rebased onto currentmain(263 commits of drift since #855 was opened), plus two additional fixes:finalize_directed_scan_results(see review comment on Refactor ND scan subsystem with adaptive sparse 2D sampling, surface validation, and coupling classification #855 for details).pipe_plannerinitialization-order bug inScheduler.__init__.#855 should not be force-pushed or rebased in place — its branch (
nd_scans) is currently checked out in a live, long-running working session with uncommitted local patches, and rewriting it there would destroy that work. This PR exists so the rebased/fixed history can be reviewed and landed without touchingnd_scans.Detailed review findings (conflict-resolution notes, two latent bugs found on
main, the finalization-crash fix, and several design questions worth discussing) are posted as a comment on #855.Closes/relates to #855.
Test plan