Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
185 commits
Select commit Hold shift + click to select a range
4ecb7fc
clean up
lmoresi Aug 8, 2025
43c2020
Evaluation fixes
lmoresi Aug 8, 2025
f9ffdd4
Data structures for swarm and mesh variables
lmoresi Aug 8, 2025
dd81f28
Update __init__.py
lmoresi Aug 8, 2025
276cf76
Notebooks to match
lmoresi Aug 8, 2025
d090f6c
Update terrain_flow_plot.html
lmoresi Aug 8, 2025
ff65767
Evaluation updates
lmoresi Aug 11, 2025
b63ebb4
Fixes for the comments
lmoresi Aug 15, 2025
84f58f2
Merge branch 'development' into global_evaluation_rewrite
lmoresi Aug 15, 2025
5017dd8
Modified kdtree query calls, added query wrapper for pykdtree
Aug 19, 2025
da0546a
Same fixes as for development
lmoresi Aug 19, 2025
9218047
Merge branch 'global_evaluation_rewrite' of https://github.com/underw…
lmoresi Aug 19, 2025
90a044a
Merge branch 'development' into global_evaluation_rewrite
lmoresi Aug 20, 2025
f629790
Updates to global evaluation routine.
lmoresi Aug 22, 2025
38923e1
Fix to set particle ranks when adding locally
lmoresi Aug 22, 2025
098669c
rbf interpolator does not need write access to vars
lmoresi Aug 22, 2025
7512104
Update test_0503_evaluate2.py
lmoresi Aug 23, 2025
3ebf2e4
Tests passing again
lmoresi Aug 23, 2025
fe575bf
Fixing serious bug in kd-tree based particle migration
lmoresi Aug 25, 2025
2b81b66
Fix a swarm issue
lmoresi Aug 25, 2025
c0d2dea
Update swarm.py
lmoresi Aug 25, 2025
d239bd6
Update swarm.py
lmoresi Aug 26, 2025
cf42885
Swarm fixes, derivative changes
lmoresi Aug 28, 2025
04171b3
Corrected swarm rank indexing, points_in_domain return if empty
Aug 28, 2025
d2bf127
Update swarm advection to use global evaluation for mid-point calcula…
lmoresi Aug 29, 2025
99b84eb
Moving PIC swarm to its own file
lmoresi Sep 1, 2025
5c3acc8
Moving NodalPointUWSwarm to NodalPointSwarm
lmoresi Sep 1, 2025
24115dd
Update swarm.py
lmoresi Sep 1, 2025
6cb735b
Refactor discretisation into two files
lmoresi Sep 1, 2025
5d24f12
Updating the swarm.particle_coordinate and hiding it so we can wrap i…
lmoresi Sep 3, 2025
b4d8b96
Updating swarm so particle updates are through the data variable
lmoresi Sep 3, 2025
af308d8
Implementation of swarm.points
lmoresi Sep 6, 2025
d00f613
First pass at updating the ddt.py code to work with the swarm changes
lmoresi Sep 9, 2025
d6120f1
Fixing up Semi-Lagrange ddt so that it uses the global evaluation
lmoresi Sep 15, 2025
51fea08
Implementing NDArray_with_callback for meshVariable / swarmVariable
lmoresi Sep 17, 2025
ddbd0b5
Adding examples and re-working their structure to be more AI friendly
lmoresi Sep 20, 2025
494fae9
Ensure solver internal expressions use the unique-name option
lmoresi Sep 21, 2025
f2ad242
First pass at AI training examples and documentation
lmoresi Sep 21, 2025
589308a
Moving examples code into underworld3 and re-factoring
lmoresi Sep 23, 2025
b1de287
Update docs
lmoresi Sep 25, 2025
65a9e5b
Lots or renumbering of files and re-structuring of where docs live
lmoresi Sep 29, 2025
d7ce754
Clean up repository and fix regression tests
lmoresi Oct 10, 2025
ee29df2
Complete data access migration and universal units system
lmoresi Oct 10, 2025
c1b484f
Fix MPI hanging in global statistics and add parallel testing infrast…
lmoresi Oct 13, 2025
790d7b3
Add planning documentation for coordinate interface and units system …
lmoresi Oct 13, 2025
9b738ea
Bug fixes and follow-up changes for units system and coordinate inter…
lmoresi Oct 13, 2025
a6dfcb0
Add tutorial 13 (Coordinate Units and Gradients) and ignore visualiza…
lmoresi Oct 13, 2025
ccaeb02
Minor improvements to Units System tutorial (notebook 12)
lmoresi Oct 13, 2025
99cde09
Add uw.expression shorthand for uw.function.expression
lmoresi Oct 13, 2025
60ba830
Consolidate parallel tests into modern pytest suite
lmoresi Oct 13, 2025
a8f0ca1
Improve units handling in geometric calculations (WIP)
lmoresi Oct 13, 2025
d76b3fe
Fix infinite loop in mesh geometric calculations with units
lmoresi Oct 13, 2025
54d1181
Document internal coordinate access pattern and deprecate mesh.data
lmoresi Oct 13, 2025
60d56b5
Rename internal _points to _coords and deprecate points properties
lmoresi Oct 13, 2025
0bd538a
Fix coordinate units arithmetic and test assertion issues
lmoresi Oct 21, 2025
3762958
Improve Notebook 12 to suppress reference quantities warnings
lmoresi Oct 22, 2025
d16b3f2
Clarify that reference quantities are optional but recommended
lmoresi Oct 22, 2025
bbb23b6
Fix reference quantities timing and clarify optional nature
lmoresi Oct 22, 2025
cd29f34
Fix reference quantities parameter names to match expected values
lmoresi Oct 22, 2025
bbb0333
Improve Notebook 14: enforce Units Everywhere principle in constituti…
lmoresi Oct 29, 2025
021e45b
Fix unit system consistency in semi-Lagrangian characteristic tracing
lmoresi Oct 29, 2025
75d52e1
Fix UnitAwareArray non-dimensionalisation import errors
lmoresi Nov 1, 2025
509e3fb
fix(coords): Properly scale variable-specific DOF coordinates with units
lmoresi Nov 1, 2025
7e821ae
fix(coords): Properly dimensionalise meshVariable.coords using uw.dim…
lmoresi Nov 1, 2025
7b475c9
Fix multiplication between UWexpression and MeshVariable objects
lmoresi Nov 3, 2025
0b07a5a
Fix critical units system bugs affecting visualization, SymPy compati…
lmoresi Nov 10, 2025
18e4235
Fix parameter units with lazy evaluation in constitutive models
lmoresi Nov 12, 2025
0afd4af
Fix non-dimensionalisation of parameters during JIT compilation
lmoresi Nov 12, 2025
d03988a
Migrate DiffusionModel to Parameter descriptor pattern
lmoresi Nov 12, 2025
538be1a
Migrate DiffusionModel and DarcyFlowModel to Parameter descriptor pat…
lmoresi Nov 12, 2025
fcd3754
Fix show_nondimensional_form() to handle all expression types univers…
lmoresi Nov 12, 2025
99e74a2
Many fixes for unit aware quantities and non-dimensionalisation
lmoresi Nov 12, 2025
2f780cb
Fix critical bugs in non-dimensionalization and visualization
lmoresi Nov 14, 2025
6576946
Clean up _apply_scaling_to_unwrapped after scaling fix
lmoresi Nov 14, 2025
fe079aa
Refactor: Consolidate UWQuantity unwrapping into main JIT flow
lmoresi Nov 14, 2025
45654c6
Add TODO list for future work
lmoresi Nov 14, 2025
f150554
Refactor: Switch evaluate() to use unwrap_for_evaluate()
lmoresi Nov 14, 2025
97b56a5
Refactor: Move EnhancedMeshVariable to enhanced_variables.py
lmoresi Nov 14, 2025
0887023
Fix: Critical non-dimensionalization bug in units.py
lmoresi Nov 14, 2025
7cc9dbb
Enhance: Improve units handling in mesh variable array property
lmoresi Nov 14, 2025
6e03bd2
Add: Architecture analysis document
lmoresi Nov 14, 2025
07a6708
Major cleanup: Organize 73 markdown files and prevent future clutter
lmoresi Nov 14, 2025
2c0bb95
Cleanup: Remove temporary debug and demo scripts from root
lmoresi Nov 14, 2025
e5351fd
Add GitHub integration for architectural reviews
lmoresi Nov 18, 2025
61ff9cf
Add Review System Infrastructure review (meta-review)
lmoresi Nov 18, 2025
367916b
Add review history markers to Review System Infrastructure files
lmoresi Nov 18, 2025
9296407
Address reviewer feedback: Add navigation and workflow sections
lmoresi Nov 18, 2025
5599a27
Add code change review requirements and fix branch links
lmoresi Nov 18, 2025
3df5265
[REVIEW] Review System Infrastructure (#10) (#35)
lmoresi Nov 19, 2025
c012dd4
fix(units): Prevent double-conversion in .to_base_units() and .to_red…
lmoresi Nov 25, 2025
3383493
fix(units): Critical fixes for ND scaling and data caching in solvers
lmoresi Nov 29, 2025
33396c8
test(units): Add model reset to fix strict units collection error
lmoresi Nov 29, 2025
2e302bd
Fix quad mesh boundary interpolation in Semi-Lagrangian scheme
lmoresi Nov 30, 2025
d8abddb
Reorganize documentation and clean up repository root
lmoresi Nov 30, 2025
10b56a0
refactor(tests): Migrate test system from file patterns to pytest mar…
lmoresi Nov 30, 2025
b7a3d7f
fix(tests): Move test_0503_evaluate2 from level_1 to level_2
lmoresi Nov 30, 2025
8871f1d
fix(tests): Fix Level 1 test assertions and move units TDD tests to L…
lmoresi Nov 30, 2025
5112dc8
Merge remote-tracking branch 'origin/review/review-system-infrastruct…
lmoresi Dec 3, 2025
e219f73
snapshot: Pre-UWCoordinate implementation - units system WIP
lmoresi Dec 5, 2025
a65e2bf
fix(units): Smart BC scaling for numeric vs symbolic values
lmoresi Dec 7, 2025
fe3eb54
Fix meshVariable_to_pv_mesh_object returning 0 points with units
lmoresi Dec 7, 2025
5471366
fix(vis): propagate coord_array through Delaunay triangulation
lmoresi Dec 7, 2025
c2a1b3d
fix: Add missing coords_nd property to EnhancedMeshVariable
lmoresi Dec 8, 2025
ed40ee4
feat(units): Enhance solver estimate_dt and expression handling
lmoresi Dec 8, 2025
806cff0
refactor(swarm): Update IndexSwarmVariable and PIC swarm handling
lmoresi Dec 8, 2025
281e164
test: Update pointwise function and integral tests
lmoresi Dec 8, 2025
953e24a
docs(tutorials): Update solver and timestepping tutorials
lmoresi Dec 8, 2025
8ccf7b3
docs(tutorials): Update multi-material and scaling tutorials
lmoresi Dec 8, 2025
fd15497
chore(tutorials): Remove deprecated notebook variants
lmoresi Dec 8, 2025
a743f41
docs: Update Quarto configuration and review process
lmoresi Dec 8, 2025
4765ae0
docs(tutorials): Update coupled timestepping tutorial
lmoresi Dec 8, 2025
25b13a8
docs(tutorials): Add new units-aware tutorials
lmoresi Dec 8, 2025
53ab850
wip(tutorials): Add work-in-progress tutorial drafts
lmoresi Dec 8, 2025
01da257
docs(design): Add units system analysis and development utilities
lmoresi Dec 8, 2025
4fc6257
docs(presentations): Add Quarto presentation system
lmoresi Dec 8, 2025
9cdb75a
docs(reviews): Add units system analysis for December 2025
lmoresi Dec 8, 2025
1e93d92
fix(evaluate): Unwrap UWexpressions before extracting coordinate symbols
lmoresi Dec 12, 2025
d549b58
docs(claude): Reorganize CLAUDE.md for leaner AI context
lmoresi Dec 14, 2025
22bd989
test(units): Check dimensionality instead of specific unit strings
lmoresi Dec 15, 2025
70dc148
fix(tests): Move module-level mesh creation inside test functions
lmoresi Dec 16, 2025
e27b1b2
docs: Add symbol disambiguation to CHANGELOG
lmoresi Dec 16, 2025
ca8469b
Add PETSc 3.24 API compatibility for setCoordinateDisc
lmoresi Dec 16, 2025
94ae766
Fix PETSc 3.24 swarm addNPoints off-by-one bug workaround
lmoresi Dec 16, 2025
648b1fd
fix: PETSc 3.24 API compatibility for addNPoints and setCoordinateDisc
lmoresi Dec 16, 2025
42ebc3f
fix(tests): Make visualization imports optional
lmoresi Dec 16, 2025
4230884
feat: Add pixi build system with conda-forge PETSc
lmoresi Dec 16, 2025
201dff5
refactor: Move global reduction logic to parent class with OOP inheri…
lmoresi Dec 16, 2025
7f7dfaf
feat: Add AMR environment with custom PETSc build infrastructure
lmoresi Dec 16, 2025
2673262
feat: Add ./uw wrapper script with status, setup wizard, and help
lmoresi Dec 16, 2025
14e1269
refactor: Simplify ./uw wrapper and make test default to level 1
lmoresi Dec 16, 2025
4486185
refactor: Flip test script defaults to fast mode
lmoresi Dec 16, 2025
c4926a6
docs: Update ./uw help with test passthrough examples
lmoresi Dec 17, 2025
1dd5293
refactor: Consolidate PETSc tasks to petsc-local-build
lmoresi Dec 17, 2025
b003ebb
docs: Add setup to welcome message commands
lmoresi Dec 17, 2025
430c0c1
fix: Show "(not configured)" when no environment set
lmoresi Dec 17, 2025
d33bcae
docs: Add Jupyter kernel info to setup completion message
lmoresi Dec 17, 2025
f6efcef
feat: Add pixi-kernel to runtime environments
lmoresi Dec 17, 2025
e4d0218
feat: Add ipykernel and pixi-kernel to ALL environments
lmoresi Dec 17, 2025
cb84486
feat: Add automatic pixi installation to setup wizard
lmoresi Dec 17, 2025
6a65fac
feat: Show all environments with status in ./uw welcome
lmoresi Dec 17, 2025
80457d1
refactor: Replace colors with text symbols in env status
lmoresi Dec 17, 2025
69bd6e6
chore: Update pixi.lock for ipykernel/pixi-kernel in base deps
lmoresi Dec 17, 2025
7367c39
docs: Update README with pixi-based installation instructions
lmoresi Dec 17, 2025
d3a918b
docs: Expand README environment documentation
lmoresi Dec 17, 2025
fab4adf
docs: Add Getting Started section with tutorial path
lmoresi Dec 17, 2025
7247e2c
docs: Open tutorial index directly in Getting Started
lmoresi Dec 17, 2025
788ff6b
fix: Update VTK/PyVista versions for vtkCapsuleSource compatibility
lmoresi Dec 17, 2025
0d27149
fix: Use private attributes for PyVista 0.46 compatibility
lmoresi Dec 17, 2025
7d594a2
Improve expression display in notebooks and solver view()
lmoresi Dec 21, 2025
360e6f1
Add status and update commands to ./uw script
lmoresi Dec 21, 2025
c031d83
docs: Add status and update commands to README
lmoresi Dec 21, 2025
62fee03
docs: Update installation docs to focus on ./uw workflow
lmoresi Dec 21, 2025
fd47f07
docs: Add ./uw wrapper and documentation overhaul to CHANGELOG
lmoresi Dec 21, 2025
0b6af0b
docs: Move parallel visualization patterns to design docs
lmoresi Dec 21, 2025
46b9368
feat: Add docstring sweep tool for systematic documentation
lmoresi Dec 21, 2025
6cd4fe2
chore: Ignore Untitled notebooks
lmoresi Dec 21, 2025
5fb0f2e
docs: Comprehensive docstring overhaul with RST math notation
lmoresi Dec 21, 2025
f04c87a
fix(units): Replace model.to_model_magnitude with uw.scaling.non_dime…
lmoresi Jan 4, 2026
914f2df
feat(adapt): Add mesh adaptation with Surface integration
lmoresi Jan 6, 2026
74088a4
feat(params): Add unit-aware parameters with CLI support
lmoresi Jan 6, 2026
0984017
feat(adapt): Add gradient-based and field-based metric creation
lmoresi Jan 6, 2026
bb23386
feat(function): Add derivative evaluation via Clement interpolation
lmoresi Jan 8, 2026
1dd7606
docs: Move gradient comparison notebook to docs/examples/utilities
lmoresi Jan 8, 2026
b810e28
refactor(adapt): Use Clement interpolant for gradient-based metrics
lmoresi Jan 8, 2026
39b824a
fix(gradient): Support P2 and vector fields in Clement gradient evalu…
lmoresi Jan 8, 2026
785c8e3
feat(evaluate): Add L2 projection path for derivative evaluation
lmoresi Jan 8, 2026
670e4b6
refactor(evaluate): Extract shared helpers for PETSc and RBF paths
lmoresi Jan 8, 2026
0d162a3
feat(evaluate): Add mode parameter for gradient evaluation strategies
lmoresi Jan 9, 2026
38742a1
refactor(units): Consolidate units system and remove deprecated mixin
lmoresi Jan 9, 2026
d79b683
feat(meshing): Enhance geographic and geometry tools
lmoresi Jan 9, 2026
4c319d3
refactor(discretisation): Simplify units handling in MeshVariables
lmoresi Jan 9, 2026
6876888
refactor(utilities): Improve JIT extension and array callback docs
lmoresi Jan 9, 2026
32a429c
docs(tutorials): Update beginner tutorials for units system changes
lmoresi Jan 9, 2026
04c2093
chore: Update tests, scripts, and project config
lmoresi Jan 9, 2026
ca8dad9
feat(meshing): Add fault surface implementation and examples
lmoresi Jan 9, 2026
d221df2
feat(docs): Add geographic mesh tutorials and new tests
lmoresi Jan 9, 2026
cc45213
chore: Add output directory with .gitignore
lmoresi Jan 9, 2026
f061673
feat(binder): Add mybinder.org support via pixi
lmoresi Jan 9, 2026
bdc57d3
fix: Replace broken LICENSE.md symlink with actual file
lmoresi Jan 9, 2026
ac39388
chore: Remove binder directory (using uw-demo-launcher instead)
lmoresi Jan 9, 2026
8840f10
Migrate examples from deprecated mesh.data to mesh.X.coords
lmoresi Jan 9, 2026
bad75ee
Remove unnecessary with mesh.access() wrappers from examples
lmoresi Jan 9, 2026
d7d04e7
Remove unnecessary with swarm.access() wrappers from examples
lmoresi Jan 9, 2026
d765d14
Remove unnecessary access context managers and update CLAUDE.md
lmoresi Jan 9, 2026
dd35661
Add Claude Code slash commands and simplify CLAUDE.md patterns section
lmoresi Jan 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
69 changes: 69 additions & 0 deletions .claude/commands/check-patterns.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
description: Find deprecated access patterns in code and documentation
---

## Reference Document

**Read the authoritative patterns guide first:**
`docs/developer/UW3_Style_and_Patterns_Guide.qmd`

Key sections:
- Section 4 "Array and Data Management" - array indexing patterns
- Section 5 "Context Managers" - deprecated vs current access patterns
- Section 6 "MPI and Parallel Patterns" - parallel safety

---

## Search for Legacy Patterns

### Source Code
```bash
grep -r "with.*\.access(" src/underworld3/ --include="*.py"
```

### Examples
```bash
grep -r "with.*\.access(" docs/examples/ --include="*.py"
grep -r "mesh\.data\[" docs/examples/ --include="*.py"
```

### Documentation (markdown, quarto)
```bash
grep -r "with.*\.access(" docs/ --include="*.md" --include="*.qmd"
grep -r "mesh\.data\[" docs/ --include="*.md" --include="*.qmd"
```

### Notebooks
```bash
find docs -name "*.ipynb" -exec grep -l "\.access(" {} \;
find docs -name "*.ipynb" -exec grep -l "mesh\.data" {} \;
```

---

## Pattern Classification

| Pattern | Status | Replacement |
|---------|--------|-------------|
| `with mesh.access(var):` | **Deprecated** | Direct: `var.data[...]` |
| `with swarm.access(var):` | **Deprecated** | Direct: `var.data[...]` |
| `mesh.data` (coordinates) | **Deprecated** | `mesh.X.coords` |
| `var.array[:, 0, 0]` | Current | Scalar indexing |
| `var.array[:, 0, :]` | Current | Vector indexing |
| `uw.synchronised_array_update()` | Current | Multi-variable batch |

---

## Analysis Required

For each occurrence found, classify as:
- **Safe to remove**: Simple data access, visualization, I/O
- **Preserve for now**: Solver-critical operations needing further analysis
- **Already correct**: Part of the access context implementation itself

## Output Format

- Total occurrences by location (src, examples, docs, notebooks)
- Files needing updates grouped by type
- Priority order (user-facing examples first)
- Recommended fixes
24 changes: 24 additions & 0 deletions .claude/commands/test-regression.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
description: Check regression test suite status
---

Run the regression test suite and report on any failures:

```bash
pixi run -e default pytest tests/test_06*_regression.py -v --tb=short
```

## Analysis Required

- Count total tests and number passing/failing
- For each failure, identify:
- Test name and location
- Error type (AttributeError, AssertionError, etc.)
- Root cause category (API assumption issue, actual bug, naming convention)
- Provide summary with recommended next actions

## Output Format

- Summary: X/Y tests passing
- Failures grouped by category
- Recommended fixes for each failure type
39 changes: 39 additions & 0 deletions .claude/commands/test-solvers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
description: Validate complex solver tests
---

Run the complex solver test suite to validate core physics functionality:

```bash
# Test Stokes solvers
pixi run -e default pytest tests/test_101*_Stokes*.py -v --tb=short

# Test advection-diffusion solvers
pixi run -e default pytest tests/test_110*_AdvDiff*.py -v --tb=short

# Test other complex systems
pixi run -e default pytest tests/test_11*_*.py -v --tb=short
```

## Analysis Required

- Report pass/fail counts for each category (Stokes, AdvDiff, Other)
- For failures, categorize by:
- Solver type
- Error pattern (convergence, numerical accuracy, API usage)
- Identify if failures are related to recent changes

## Critical Note

These tests validate core physics. Any failures are **high priority**.

## Output Format

| Test Category | Total | Passed | Failed |
|---------------|-------|--------|--------|
| Stokes | | | |
| AdvDiff | | | |
| Other | | | |

- Detailed failure analysis grouped by solver type
- Assessment: Are failures new regressions or pre-existing?
35 changes: 35 additions & 0 deletions .claude/commands/test-tier-a.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
description: Run only Tier A (production-ready) tests - trusted for TDD and CI
---

Run only the most reliable, production-ready tests:

```bash
pixi run -e default pytest -m "tier_a" -v --tb=short
```

## What This Tests

**Tier A tests are:**
- Long-lived tests with proven track record (>3 months)
- Consistently passing across multiple environments
- Testing stable, well-understood functionality
- Failure indicates **DEFINITE regression** in production code

## When to Use

- Test-Driven Development (TDD) sprints
- Continuous Integration (CI) pipelines
- Release validation
- Bisecting regressions (these tests can be trusted)

## If a Tier A Test Fails

**HIGH PRIORITY** - This indicates a real regression:
1. Investigate immediately
2. Bisect to find breaking commit
3. Fix production code (or demote test if incorrectly promoted)

## Reference

See `docs/developer/TESTING-RELIABILITY-SYSTEM.md` for tier definitions.
31 changes: 31 additions & 0 deletions .claude/commands/test-tier-ab.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
description: Run Tier A+B tests - full validation suite
---

Run production-ready and validated tests (excludes experimental):

```bash
pixi run -e default pytest -m "tier_a or tier_b" -v --tb=short
```

## What This Tests

**Tier A:** Production-ready (failures = definite regression)
**Tier B:** Validated but newer (failures need investigation)

## When to Use

- Full validation before merging
- Feature completion verification
- Manual review of new functionality

## Interpreting Results

| Tier | If Fails | Action |
|------|----------|--------|
| A | HIGH priority | Investigate immediately - real regression |
| B | MEDIUM priority | Could be test OR code issue - investigate |

## Reference

See `docs/developer/TESTING-RELIABILITY-SYSTEM.md` for tier definitions.
45 changes: 45 additions & 0 deletions .claude/commands/test-units-classify.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
description: Analyze units test failures and classify for reliability tiers
---

Run units tests and classify any failures by reliability tier:

```bash
pixi run -e default pytest tests/test_07*_units*.py tests/test_08*_*.py -v --tb=short 2>&1 | head -200
```

## Classification Criteria

### Tier A Candidates (Production-Ready)
- [ ] Test has existed for >3 months
- [ ] Test passes consistently
- [ ] Functionality is stable and production-used
- [ ] Failure would indicate definite bug

### Tier B Candidates (Validated)
- [ ] Test passes at least once
- [ ] Functionality appears correct
- [ ] Needs more production validation
- [ ] Test is new (<3 months)

### Tier C Candidates (Experimental)
- [ ] Feature is not fully implemented
- [ ] Test documents expected future behavior
- [ ] Known issues exist

## Analysis Required

For each failing test:
1. Identify root cause (test issue vs code issue)
2. Classify into appropriate tier
3. Recommend: fix, mark xfail, or remove

## Output Format

| Test File | Status | Tier | Recommendation |
|-----------|--------|------|----------------|
| test_0700_* | Pass/Fail | A/B/C | Action needed |

## Reference

See `docs/developer/TEST-CLASSIFICATION-2025-11-15.md` for current status.
29 changes: 29 additions & 0 deletions .claude/commands/test-units.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
description: Quick validation of units system
---

Run the complete units test suite to ensure dimensional analysis is working:

```bash
pixi run -e default pytest tests/test_07*_units*.py tests/test_08*_*.py -v --tb=short
```

## Expected Results

Most tests should pass. Check `docs/developer/TEST-CLASSIFICATION-2025-11-15.md` for current baseline.

## Analysis Required

If failures occur, identify which subsystem:
- **Core units** (test_0700): Fundamental units system
- **Unit conversion** (test_0801): Utility functions
- **Workflow integration** (test_0803): End-to-end workflows
- **Stokes ND** (test_0818): Non-dimensional solver integration
- **Coordinate units**: Dimensional analysis of mesh coordinates

## Output Format

- Quick status: X/Y tests passing
- If failures: detailed breakdown by subsystem
- Assessment: regression vs known issue
- Recommended fixes if needed
Loading