Review workflow for changes touching scientific or numerical behavior in MacroFlow3D. Use when reviewing changes to src/numerics/, src/physics/, src/multigrid/, or any code path that changes numerical output.
Review workflow for changes touching scientific or numerical behavior.
Use this skill when reviewing or authoring changes that touch:
src/numerics/ — operators, solvers, BLAS, multigridsrc/physics/ — flow, stochastic, transport (Par2 or PSPTA)src/multigrid/ — transfers, smoothers, V-cycleapps/ configs that affect physics behaviorBefore reviewing scientific changes, read the applicable documents:
| Changed area | Required reading |
|---|---|
| PSPTA, invariants, eigensolver, refinement, tracking, velocity reconstruction, transverse macrodispersion | docs/plans/active/pspta-execution-plan.md and docs/theory/lester-2023-key-claims.md |
| Large-domain macrodispersion, Monte Carlo design, historical baseline comparisons |
docs/theory/beaudoin-de-dreuzy-2013-key-claims.md |
For PSPTA-related changes, verify that the change aligns with the current phase of the execution plan before accepting.
Skip if the change is Gate 0 or Gate 1 only.
Map changed files to the required acceptance gate:
| Changed area | Minimum gate |
|---|---|
| docs / scripts / AGENTS only | Gate 0 |
| refactor, no numerical change | Gate 1 |
| operators / eigensolver / algebra | Gate 2 |
| PSPTA / invariants / tracking | Gate 3 |
| helicity-free regime correctness | Gate 4 |
| ensemble / macrodispersion output | Gate 5 |
Reference: docs/validation/acceptance-gates.md
For any change in the scientific core, apply the Lester constraints (docs/theory/lester-2023-key-claims.md):
Does this change the velocity field structure?
Does this change invariant construction quality?
Does this change tracking behavior?
Does this change macrodispersion interpretation?
α_L / α_T output.Could this create spurious transverse macrodispersion?
For each affected gate, verify the author provides:
./build/*/macroflow3d_pipeline apps/config_pspta_small.yamlctest -R operator_tests passesctest -R validate_slepc_eigensolver passes (if eigensolver touched)v·∇ψ1 and v·∇ψ2 residuals inspectedα_L(t), α_T1(t), α_T2(t) before/afterBlock if:
Approve only when:
Use the template from docs/validation/acceptance-gates.md:
## Scientific change report
### Scope
- files changed:
- intended effect:
### Commands run
- configure:
- build:
- tests:
- smoke:
### Evidence
- gate(s) satisfied:
- metrics inspected:
- before/after comparison:
### Remaining risk
docs/validation/acceptance-gates.mddocs/theory/lester-2023-key-claims.mddocs/theory/beaudoin-de-dreuzy-2013-key-claims.mdsrc/physics/particles/pspta/AGENTS.mdsrc/numerics/AGENTS.mddocs/runbooks/autonomy-policy.md