← Explainer · Markdown · Source on GitHub
# Current work **Updated: 2026-09-26.** This is the source of current roadmap/task status. See [tracking rules](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/README.md) and [roadmap outcomes](/docs/ROADMAP). **Current focus:** Validate a bounded prescribed-flow enclosure using the delivered scenario/study workflow. **Workbench UI direction:** Build a fresh independent `src/workbench-ui` package. Keep the existing `src/ui` viewer available through the initial release; later W4-13a owns its removal after explicit capability and replacement acceptance. No frontend imports or compatibility state carry over. **Next workbench task:** Gate B passed (2026-09-24). Next: finish W4-14a docs, then Phase 4 bounded fields (W4-09a/b/c). W4-03 engineer/learner review is still unperformed. **Parallel work:** The user has assigned the OpenFOAM reference to another agent; this task does not take over that work. **Active format implementation:** FMT-01 (Codex) delivers the reviewed saved/live formats, selective capture and texture rendering. The [verification plan](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/format-modernization.md) records the completed concurrent full suite: 29 checks passed and four failed. All simulation cases, channel refinement and field regression passed. The frozen report retains the stale viewer-test failure (source fixed; separate CPU test passes), deferred performance failure and two independent accuracy-qualification failures. Acceptance is not a clean full-suite pass; the independent OpenFOAM campaign remains owned by the other agent. **Latest format reviews:** W4-04a/b [review binary correctness, precision and efficiency](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/BINARY_FORMAT_REVIEW.md) and define [typed result delivery](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/RESULT_DELIVERY.md). Keep HDF5/f32 fields and f64 measurements; correct saved axes, compact native Half geometry, request only needed quantities and use bounded texture rendering. Shared format prerequisites are implemented under FMT-01; the new W4 service/API remains planned. **Latest workbench delivery:** W4-05a–06c and W4-07a: wire contracts and fixtures, the fresh `src/workbench-ui` package, the secure local host, exact revisions/assets and durable job submission, and the runner lifecycle seams. Gate A (worker execution) and Gate B (real browser scalar investigation) passed on 2026-09-24; W4-03 human review remains unperformed. **Current task:** W3-03c diffusion correction has completed numerical verification; performance acceptance remains blocked by a failed historical gate and competing Windows workbench workers. After pulling `eee86ac`, the shared 800-sweep fallback passes four 20-step startups, 92 focused diffusion tests, 1,579 repository static/CUDA tests and every scientific check in the full suite (1,525 selected tests, 25 native cases, channel/refinement/field checks). Full regression remains 30/31 after one deliberate timing retry. The exact historical solver also fails its old gate under current conditions; monitoring caught intermittent Windows workers during both sequences. Coordinate a quiet timing window without changing references or limits. W3-03b reference generation and its old continuation remain paused; seven completed OpenFOAM cases are retained. [Evidence and next action](https://github.com/hankbeasley/polycfd/blob/main/../openfoam/compare/ENCLOSURE_N128_DIAGNOSTICS.md). **Post-pull integration (2026-09-24):** Pulled `422be0b` and retained the measured solver changes. Static, UI build, 1,066 core, 482 GPU, 730 Workbench host and 1,010 UI tests pass; Workbench CUDA is 53/54, with an unresolved `AfterStart / KillService` orphan-exit ordering failure. Full numerical validation was not rerun after this pull. [Receipts and limits](https://github.com/hankbeasley/polycfd/blob/main/docs/COMPLETE_VALIDATION.md#post-pull-integration--2026-09-24). **Authorized continuation (2026-09-21):** Regression/qualification separation and validation simplification are complete. All 25 native simulations and the unchanged performance gate remain required. Strict cavity and nonlinear spectral accuracy failures remain explicit; they were not converted to passes. The old waiting controller was replaced with one that verifies the full regression evidence, channel-v2 assessment and frozen executable before the authorized enclosure continuation. **Latest validation delivery:** VAL-05 adds documented `quick`, `multigrid` and `full` validation selections, removes duplicate short simulation work, and supports isolated test builds. [The guide](https://github.com/hankbeasley/polycfd/blob/main/docs/COMPLETE_VALIDATION.md) records scope, timings and commands; 862 selected C# tests, five comparison tests, the short CUDA fan and resume checks pass. The full numerical/performance suite was not rerun for this tooling change. CFG-01 makes limited MacCormack the runtime and packaged-case default. Its isolated Release build passes 1,097 tests with CUDA and no skips; [default-change evidence](https://github.com/hankbeasley/polycfd/blob/main/output/validation/maccormack-default-20260921/assessment.json) records the executable and preserved explicit regression settings. The running enclosure comparison already specifies MacCormack and retains its validated frozen build. VAL-04 passes: 1,095 tests without failures/skips, all 25 native simulations, channel refinement, field regression and unchanged performance limits. Completed-suite resume reused all 33 outcomes, including both failed qualifications. The minimal Jacobi residual correction fixes the reproduced stationary-fan failure; [validation evidence](https://github.com/hankbeasley/polycfd/blob/main/docs/COMPLETE_VALIDATION.md#local-regression-result--2026-09-21) retains failures, timings and current-build results. W3-03a's [two enclosure layouts](https://github.com/hankbeasley/polycfd/blob/main/examples/scenarios/prescribed-flow-enclosure/README.md) remain physically unvalidated until W3-03b/c complete. The [enclosure plan](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/prescribed-flow-enclosure.md) fixes the independent-reference and numerical gates. Commit `403b9b9` completed VAL-03: independent headless verification, CLI host composition and shared settings with preserved scientific records. The preceding commit `897efe6` contains VAL-02/W2-03 and DOC-04. The preceding local commit `9b1c7dc` completes CLI-01, its documentation, W3-01c duct accuracy and QA-06 boundary fixes. VAL-02 contracts are in the [scientific verification guide](https://github.com/hankbeasley/polycfd/blob/main/validation/PolyCfd.Validation/README.md); its completed plan is retired. W2-02 is blocked on GPU/host peak-memory calibration; its software steps are delivered. The [remaining plan](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w2-inspection-preflight.md) and [calibration procedure](https://github.com/hankbeasley/polycfd/blob/main/docs/RESOURCE_PREFLIGHT.md) define the handoff. This computer has an RTX 3080 (10 GiB) under WSL2, but no installed CUDA allocation-event profiler was found; sampled free memory cannot satisfy calibration. The independent [W3 channel accuracy study](https://github.com/hankbeasley/polycfd/blob/main/docs/DUCT_ACCURACY.md) passed on its preserved non-incremental build; the incremental reassessment below retains its failed temporal ratio verdict. The [W2 parameter-study workflow](https://github.com/hankbeasley/polycfd/blob/main/docs/PARAMETER_STUDIES.md) has passed. The initial scenario-authoring plan is delivered; its lasting contract is in the [format/API guide](https://github.com/hankbeasley/polycfd/blob/main/docs/SCENARIO_FORMAT.md) and [runnable examples](https://github.com/hankbeasley/polycfd/blob/main/examples/scenarios/README.md). W3-03c incremental-pressure delivery (2026-09-20): - Static geometry now includes old pressure before diffusion and projects a zero-initialized increment, then accumulates physical pressure. Moving geometry retains its existing method. Advection remains limited semi-Lagrangian MacCormack in the enclosure. Frozen scientific limits/references are unchanged; the full independent enclosure qualification is incomplete. - **28 focused CUDA numerical/diagnostic tests and two host-only memory checks pass**. The Release solution builds with zero warnings/errors. Disabled stage diagnostics perform only seven null checks and one delegate read, with no diagnostic device allocation, kernel, copy or barrier. The memory estimate includes the new retained pressure buffer. - All **nine mandatory scientific regressions pass** on preserved old/candidate builds. The final-build repeat and separate cavity pair pass the unchanged raw-clock performance gate. Largest slowdown across the ten workloads is **2.8% whole-case / 3.6% median-step**. A matched enclosure process pair takes **112.722 s before / 109.321 s after** (-3.0%). - Original n64 enclosure dt=1/256 narrow-gap difference falls from **9.9788% to 0.1916%**; dt=1/512 gives **0.3223%**. Both profiles are settled at t=4. These are differences from a still-unqualified OpenFOAM field, separate from the frozen t=16 matrix. - The original channel protocol is preserved as **FAIL** because its steady temporal monotonicity/ratio check no longer measures a resolved splitting term; all its physical checks and spatial refinement pass. Independent transient analytical convergence passes. See [the channel reassessment](https://github.com/hankbeasley/polycfd/blob/main/docs/DUCT_ACCURACY.md#incremental-pressure-reassessment-2026-09-20). - Current validation evidence is under `output/validation/incremental-projection-20260920/` and sibling `openfoam/enclosure/runs/incremental-projection/`. The full 128³ cavity at t=10 passes native maxDiv (**5.722e-6**) and unchanged cross-code limits (**0.6822%** velocity L2 difference). New-method full cavity refinement and nonlinear Taylor–Green trajectories have not been rerun. [The current report](https://github.com/hankbeasley/polycfd/blob/main/../openfoam/compare/INCREMENTAL_PROJECTION.md) records remaining qualification; the [old investigation](https://github.com/hankbeasley/polycfd/blob/main/../openfoam/compare/ENCLOSURE_GAP_INVESTIGATION.md) and `output/validation/stage-diagnostics-20260920/` preserve earlier builds/results. ## Roadmap status | Milestone | Status | Current boundary / next action | | --- | --- | --- | | W1 — Scenario and API | Done | Version 1.2 typed/JSON model and shared execution; bounded profiles/sources, masks, analytic solids, rigid STL rotation, fixed/adaptive steps and stationary measurements | | W2 — Local CLI workflow | Active | Validate/run/status/replay, inspection, parameter studies and measured comparisons work; hardware-calibrated resource budgets remain | | W3 — Enclosure measurements | Active | Named diagnostics, CLI integration and independent plane-channel accuracy delivered; enclosure/fan accuracy remains | | W4 — Browser workbench | Active | [Phased plan](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): contracts, local host, inputs, durable submission and runner seams done (W4-05a–07a); Gate A worker execution (W4-07b/07c) and browser workflows in progress. W4-03 user review unperformed; browser authoring/execution acceptance (Gate B) not yet passed | | T1 — Temperature transport | Planned | Follow local airflow workflow | | T2 — Cooling / heat exchange | Planned | Follow T1; bounded air-side model before broader conjugate heat transfer | | T3 — Buoyancy | Planned | Follow temperature and initial cooling workflow | | S1 — Single-GPU performance | Planned | Establish representative W2 workload budgets | | S2 — Uniform multiblock | Planned | Follow AMR-02 alignment and workflow/capacity evidence; [implementation plan](/docs/amrex-alignment/S2_S3_PLAN#s2-same-resolution-patches-on-one-gpu) | | S3 — Multiple resolutions | Planned | Follow S2; [fixed regions before adaptation](/docs/amrex-alignment/S2_S3_PLAN#s3-fixed-refinement-then-adaptation); begin with one full-domain coarse patch | | G1 — Assemblies / motion fidelity | Planned | Extend according to W3 accuracy needs | | C1 — Worker / restart | Planned | Complete local workflows first | | C2 — Remote GPU execution | Planned | Follow C1 | | A1 — Modeling / agent workflow | Planned | Build on W1–W4 contracts | | A2 — Agent experiments / contributions | Planned | Follow A1 and validated physics | Active at milestone level means the workstream has begun; it does not assign an agent ongoing autonomous work. Individual task status below identifies actual activity. ## Current task queue | ID | Task | Status | Owner | Evidence / dependency / next action | | --- | --- | --- | --- | --- | | AMR-01 | Document AMReX alignment and S2/S3 delivery boundaries | Done | Codex | [Design folder](/docs/amrex-alignment/README): separate alignment and S2/S3 plans plus offline HTML explainer. [Static receipt](https://github.com/hankbeasley/polycfd/blob/main/output/verify/amrex-alignment-20260926-final/receipt.json): all 11 steps passed, 39 tooling tests; `notRun`: verify-all (not required for documentation). [Browser checks](https://github.com/hankbeasley/polycfd/blob/main/output/amrex-alignment/browser-checks.json): 16 stage/viewport combinations, keyboard, offline/no-JS and console checks pass; desktop/mobile screenshots inspected. CPU backend not run (user directive). No runtime or W4 binding-decision changes. Next: AMR-02 when prioritized; S2/S3 remain planned | | AMR-02 | Align current data structures with AMReX concepts | Planned | Unassigned | [Design and acceptance](/docs/amrex-alignment/DATA_MODEL_ALIGNMENT): one level/one patch, canonical bounds/placement/domain mapping and explicit field ownership; preserve existing equations, supported cases and output semantics. Next: inventory consumers and establish equivalence/performance evidence before migration. No multiblock or refinement features in this effort | | FMT-01 | Modernize saved/live formats and verify integration | Active | Codex | [Plan](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/format-modernization.md), [HDF5 guide](https://github.com/hankbeasley/polycfd/blob/main/docs/HDF5_FIELD_FORMAT.md), [PCFD contract](https://github.com/hankbeasley/polycfd/blob/main/src/PolyCfd.Core/LiveViewer/BINARY_FORMAT.md): implementation delivered; Windows/Linux builds, focused format checks and UI tests/build/lint pass. Full concurrent suite completed: 29 passed, four failed; all simulation cases, channel refinement and field regression passed. Frozen CUDA project has 426 pass/1 stale viewer-test failure; corrected source passes a separate CPU check. Performance investigation deferred by user; two independent qualification failures remain recorded. Next: verify corrected viewer test on CUDA and retain explicit qualification/performance limitations; no baseline or acceptance limit changed | | W4-01 | Fresh workbench design and interactive prototype | Done | Codex | [Brainstorm and prototype guide](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/README.md): light standalone interface for engineers/learners, SimScale workflow/knowledge-transfer ideas, editable setup, mock run lifecycle, results, comparison and scenario export. Six Node state tests and syntax checks pass; desktop/mobile, invalid/failure/cancel/empty/reload/backup/keyboard journeys checked with no final console errors. Repository schema checks plus 12 generated and one browser-downloaded export pass in WSL; local links/whitespace pass. No simulation or production W4 acceptance claimed | | W4-02 | Expand workbench interactions and user guidance | Done | Codex | [Guide](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/README.md), [manual](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/USER_MANUAL.md) and [design decisions](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/BRAINSTORM.md#interaction-decisions-represented-in-the-expanded-prototype): independent variations/frozen scenarios; Three.js orbit/selection, boundaries and sample import; editable sections/windows, synthetic slices/probes and linked comparison; profile-preserving JSON import; queued mock jobs/reconnect/missing fields; 15 help topics and guided lesson. 17 Node tests, syntax, repository schema and 13 generated exports pass; desktop/mobile, actual 3D pick/probe, linked cameras, imports/backups, reopen, keyboard help and final console checks pass. Documentation/whitespace checked. No solver or production acceptance claimed | | W4-03 | Review expanded workbench with engineers and learners | Ready | Unassigned | Walk the [complete investigation](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/README.md#walk-through-the-complete-investigation), review the [system design](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/SYSTEM_DESIGN.md), and record usability findings. Technical design/plan is delivered in W4-04; actual user review remains unperformed. Recheck against the real Phase 3 investigation | | W4-04 | Specify workbench system and implementation phases | Done | Codex | [System design](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/SYSTEM_DESIGN.md), [execution](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/JOB_EXECUTION.md), [API](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/API_CONTRACT.md), [frontend](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/FRONTEND_ARCHITECTURE.md) and [phased checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): ownership, persistence, worker IPC, recovery, bounded results, security and acceptance reconciled. Local links/anchors, 21 checklist/board mappings and whitespace checks pass. Documentation only; W4-03 review and runtime/scientific gates remain unperformed | | W4-04a | Review binary formats for the new workbench | Done | Codex | [Review](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/BINARY_FORMAT_REVIEW.md): reproduced HDF5 axis mismatch and malformed-packet acceptance; recommend versioned ZYX storage, one strict slice envelope, canonical provenance and bounded selected reads. Design/implementation gates updated. 12 existing UI tests pass; independent HDF5 and TS/C# probes confirm findings; documentation checks pass. Original review only; shared runtime corrections are now implemented under FMT-01, with service integration remaining W4-05a/07a/09a/09b | | W4-04b | Review transfer efficiency, precision and feature extensibility | Done | Codex | [Extended review](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/BINARY_FORMAT_REVIEW.md#transfer-efficiency-and-precision-follow-up) and [result delivery design](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/RESULT_DELIVERY.md): retain f32 fields/f64 measurements, exact f16 Half geometry, independent products, physical sampling/validity, texture planes and complete buffer/read-work bounds. Three component reviews, exhaustive 63,488 finite-Half round trips, analytical byte costs, local links/JSON/task mappings and whitespace pass. Original review made no runtime changes; FMT-01 now implements the shared formats and selective rendering. W4-05a remains the next service task | | W4-04c | Separate fresh UI and defer existing-viewer retirement | Done | Codex | [Plan](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md), frontend/system/result designs, roadmap and viewer guides now specify standalone `src/workbench-ui`, no old-UI dependency, independent builds/assets/storage, existing viewer through initial release and later W4-13a retirement. 257 local links, JSON/encoding and whitespace checks pass. Documentation only; W4-05b/13a remain unstarted | | W4-05a | Freeze executable contracts and capability dispositions | Done | Claude | [Contracts](https://github.com/hankbeasley/polycfd/blob/main/src/PolyCfd.Workbench.Contracts/README.md), [PCFD v2](https://github.com/hankbeasley/polycfd/blob/main/src/PolyCfd.Core/LiveViewer/BINARY_FORMAT.md#version-2-result-bundle), [inventory](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/CAPABILITY_INVENTORY.md): strict API/IPC DTOs incl. result-request response bridged to Core descriptors, digest and full-closure build fingerprint, generated TS/OpenAPI (`--check` reproducible), shared api/ipc/digest/results fixtures, schema-drift and no-upward-dependency tests. Workbench.Tests 568 + core 1040 pass on CUDA; WSL run passes. Inventory dispositions recorded as proposed scope decisions (ratify before W4-13a) | | W4-05b | Scaffold independent UI, client ports and mocks | Done | Claude | [Package](https://github.com/hankbeasley/polycfd/blob/main/src/workbench-ui/README.md): fresh Vite/React/TS/Three package, own lockfile/port 5174/dist/storage namespaces; client ports with HTTP and mock adapters under one contract suite (success, validation, conflicts, disconnect, missing fields, cancellation); strict TS PCFD v2 decoder over shared fixtures; production build excludes mock; boundary check rejects `src/ui` imports; clean temp-dir install/build/test. 680 vitest, lint, typecheck, build pass | | W4-06a | Host and persist one secure local workspace | Done | Claude | [Host](https://github.com/hankbeasley/polycfd/blob/main/src/PolyCfd.Web/README.md): loopback ASP.NET host, `PolyCfd.Web workbench` launcher (start/attach/status/open/shutdown/backup), service/user locks, SQLite migrations with backups and newer-DB refusal, Host/Origin/CSRF checks, session cookie plus `X-PolyCfd-Session` request proof, advertised request/connection limits and per-session mutation rate limits, CSP, log redaction, path/reparse safety. Tests pass on Windows and WSL | | W4-06b | Persist revisions and immutable asset bundles | Done | Claude | Projects/variations/exact draft revisions with ETags, content-addressed assets, validations with editor capability, portable import/export with archive limits; conflict, byte-exact, tamper, traversal/link/limit and real-CLI export validation tests pass (Windows + WSL) | | W4-06c | Commit immutable jobs and submission keys | Done | Claude | Preflight (cached devices, auto resolution, digest), idempotent submission with staged/promoted frozen bundles and one-transaction commit, queued cancel CAS, startup reconciliation (quarantine, inputMissing, buildChanged, restored promotions); concurrency, lost-response, key-conflict, crash/storage-error at every boundary and immutable-input tests pass (Windows + WSL). Real submissions need W4-07b device probe | | W4-06d | Map contract routes through endpoint routing | Done | Claude | [Web guide](https://github.com/hankbeasley/polycfd/blob/main/src/PolyCfd.Web/README.md): every `WorkbenchRoutes` entry mapped with endpoint routing from typed per-resource handlers, startup completeness check, endpoint filter for access/mutation/rate checks, catch-all 404/405 `ApiError`, strict JSON only; route-driven C# test client; generated `WorkbenchRouteTypes`; hand-owned TS runtime files. Undeclared query members are now refused on every route (accepted pre-release tightening). Workbench tests pass on Windows and WSL (CUDA) | | W4-07a | Expose accepted execution lifecycle and device identity | Done | Claude | [Runtime seams](https://github.com/hankbeasley/polycfd/blob/main/docs/RUNTIME_CONTRACTS.md#host-lifecycle-seams), [lifecycle tests](https://github.com/hankbeasley/polycfd/blob/main/test/PolyCfd.Gpu.Tests/Scenarios/ExecutionLifecycleTests.cs): caller run/study IDs, accepted-progress/phase/finalization hooks after teardown, study completion after comparison, pinned devices that never fall back (auto = CUDA#0 else CPU#0), optional-observer isolation. CUDA: 932 core + 148 scenario tests pass after merge; before/after CLI measured-duct/duct controls identical except build hashes in `scientificId`. `verify-all --suite quick` not run (shared GPU; no kernel/numerics change); CPU backend not rerun (user directive) | | W4-07b | Implement owned worker IPC and single-slot scheduling | Done | Claude | [Execution design](https://github.com/hankbeasley/polycfd/blob/main/docs/w4-design/JOB_EXECUTION.md): `PolyCfd.Worker` with stdin bootstrap, CurrentUserOnly pipes, HMAC Hello and build fingerprint, execution lock before Ready, pinned backend, accepted progress; single-slot scheduler with launch intent before start, cancel/force-stop of the verified owned process, heartbeats, probe worker feeding devices, bounded data channel (products arrive in W4-09b). Real child-process CUDA tests pass on Windows and WSL | | W4-07c | Reconcile terminal evidence and process recovery | Done | Claude | Receipt validation against artifact inspection, lost-worker/lost-service handling, graceful shutdown, startup reconciliation with PID + start time + executable + epoch checks, per-variant study recovery; fault matrix with actual child processes on Windows and WSL (697 Workbench tests, CUDA). Gate A demo transcripts (ignored `output/w4-evidence/gate-a/`): headless completion, honest cancel and worker/service kills recovered without duplicate dispatch. **Gate A passed.** Flaky lock-race test fixed (5/5 repeats) | | W4-08a | Connect real scenario authoring and preflight | Done | Claude | Project/tree/viewport/inspector, measured-channel and enclosure forms with byte-preserving patches, exact text editor, validation/conflict states and Start-run flow, now against the real service: Playwright journey 1 fixes an invalid setting by keyboard, holds a validation answer to show Start stays unavailable, keeps unexposed settings byte-identical and submits a pinned-CUDA run (desktop and 390 px). Evidence: ignored `output/w4-evidence/gate-b/` | | W4-08b | Connect job history and browser reconnection | Done | Claude | `GET /events` SSE (cursor replay, retention reset, bounded queues, heartbeats, coalesced progress), typed terminal reasons, job summaries with names, study status; UI job views with fetch-stream SSE and session proof. Journeys: close/reopen observes the same job, dropped submit response yields one job, two tabs converge, cancel/force stop, setup failure/crash/missing output with distinct next actions. Windows + WSL tests pass (CUDA) | | W4-08c | Deliver scalar investigation and CLI-equivalent export | Done | Claude | Run, measurement, comparison (service-owned compatibility and scientific-input flags; terminal-evidence gating) and export routes; UI run/measurement/compare/export views. Two channel variations compare the same sections/window; failed, interrupted and incompatible runs are refused with reasons; exported inputs/run records validate, replay and compare through the real CLI (CUDA) with equivalent settings. **Gate B passed** (8/8 journeys on consecutive runs, live suite 32 passed/10 pending routes, `tools/verify` static/fast/gpu). The W4-03 engineer/learner walk remains with W4-03 | | W4-09a | Correct saved-field storage and implement bounded reads | Planned | Unassigned | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): Depends on Gate B; versioned ZYX HDF5 migration with preserved samples and independent all-axis fixtures, then bounded selected-read work, physical selectors, independent quantities/validity, chunk measurements and identity/units | | W4-09b | Bridge bounded live slice demand through the worker | Planned | Unassigned | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): Depends on W4-07c/W4-09a; strict typed bundle, transient/retained reservations, coherent products, detached ownership before IPC, slow-transfer expiry and no-client/full-bootstrap audit | | W4-09c | Build fresh field inspection and linked comparison | Planned | Unassigned | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): Depends on W4-09a/b; scalar texture planes, source-precision probes/validity, unequal-grid sampling, linked replacement headroom and total byte budgets | | W4-10a | Host sequential studies as durable jobs | Planned | Unassigned | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): Depends on Gate B/W4-07a; existing StudyRunner, per-variant records, stop rules and export | | W4-10b | Build study table and aggregate results workflow | Planned | Unassigned | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): Depends on W4-10a; explicit variants, fair measurements, charts and drill-down | | W4-11a | Prepare supported STL geometry and selections | Planned | Unassigned | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): Depends on W4-06b/W4-08a/W4-09c; bounded import, units/transforms, stale-selection checks | | W4-11b | Deliver help, saved views and evidence reports | Planned | Unassigned | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): Depends on Phases 3–5; guided channel investigation, separate evidence states; enclosure claims depend on W3 | | W4-12a | Verify reliability, security and performance gates | Planned | Unassigned | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): Depends on Phases 4–6; fault matrix, bounded resources, applicable unchanged numerical/performance gates | | W4-12b | Package and verify Windows/Linux installation | Planned | Unassigned | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): Depends on W4-12a; matched host/worker/UI, launcher, clean-install user workflow | | W4-12c | Release fresh workbench and finalize W4 guides | Planned | Unassigned | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): Depends on W4-12b/W4-03; new default documented entry, existing viewer still explicitly launchable; preserve separate assets and open retirement scope | | W4-13a | Retire the existing viewer after replacement acceptance | Planned | Unassigned | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md): Later than W4-12c; tested replacements or explicit capability deferrals, preserved supported data/scientific coverage, then remove `src/ui` and obsolete launch/build paths. Does not block initial release | | W4-14a | Keep agent guidance and decisions in the repository | Active | Claude | [Checklist](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md#maintainability-tasks-for-agent-development): AGENTS.md rules, plan Decisions, `tools/check_docs.py` (0 errors), Context lines and next-action cleanup done; remaining: move implemented contracts from the design docs into component READMEs and trim W4 history on this board (resumes after the restart) | | W4-14b | Make verification one command with GPU-default tests | Done | Claude | [Test guide](https://github.com/hankbeasley/polycfd/blob/main/test/README.md), `tools/verify`: CUDA-default `TestBackend` (no silent CPU), serial runsettings, shared test support, verify static/fast/gpu tiers with JSON receipts and protected paths, `--check` for both generators and digest fixtures, multigrid selection snapshot, dead test files removed. Static+fast and gpu (Workbench 44, core 1046) receipts pass | | W4-14c | Enforce service invariants structurally | Done | Claude | [Workbench guide](https://github.com/hankbeasley/polycfd/blob/main/src/PolyCfd.Workbench/README.md): `WriteScope` single write path with read-only reads, typed events, job lifecycle table + SQLite triggers (8×8 agreement), `WorkbenchRuntime` composition root, Dapper + DbUp with golden schemas and refusal of unknown/older dev schemas, `HostError`/`WorkbenchRefusal`, typed diagnostic-code catalogue in TS. 723 Workbench tests pass on Windows and WSL (CUDA) | | W4-14d | Keep client and service contracts executable | Done | Claude | Typed routes from generated `WorkbenchRouteTypes`, header-enforcing fake service, one live-event service, service-owned comparison fields; live contract suite against a real host (`npm run test:live`) and Gate B Playwright journeys (`npm run test:e2e`) pass | | W4-14e | Layer the UI modules | Done | Claude | [UI guide](https://github.com/hankbeasley/polycfd/blob/main/src/workbench-ui/README.md): shared kit, declared module order enforced by the boundary check (cycles and deep imports rejected), per-feature deps, typed page registry, lazy-loaded Three.js with per-chunk budgets. 1000 UI tests, lint, typecheck, build and boundary pass | | EXE-01 | Accept completed runs that end within float32 time rounding | Planned | Unassigned | Found by Gate B: a measured duct with end 0.06 s and dt 0.001 s completes at step 60 with t=0.059999954, and RunComparison (service and CLI) refuses it as not reaching the resolved final time. Fix the comparison rule with explicit float32 tolerance or step-count evidence; scientific rule change, needs `verify-all` per COMPLETE_VALIDATION | | W3-03a | Runnable enclosure inputs and geometry checks | Done | Codex | [Example/study](https://github.com/hankbeasley/polycfd/blob/main/examples/scenarios/prescribed-flow-enclosure/README.md) and [geometry tests](https://github.com/hankbeasley/polycfd/blob/main/test/PolyCfd.Gpu.Tests/Scenarios/EnclosureScenarioTests.cs): both layouts at all three grids; 78 focused tests, short CPU/CUDA studies, inspection/comparison and CUDA replay pass. Fixed unexpected static SDF in ordinary scenario exports while preserving explicit scientific exports. Full accuracy remains unvalidated | | W3-03b | Qualify independent enclosure reference | Blocked | Codex | Seven completed cases retained; active offset n128 dt=1/256 and waiting continuation paused after a CUDA diffusion failure, per user stop-early policy. Eight-CPU affinity and storage guard remain. [Hold/evidence](https://github.com/hankbeasley/polycfd/blob/main/../openfoam/compare/ENCLOSURE_N128_DIAGNOSTICS.md). Resume only after resolving the numerical-policy issue and verifying process identities | | W3-03c | Enclosure assessment and frozen campaign | Blocked | Codex | Shared 800-sweep colored fallback retains the 1e-6 target; four 20-step enclosure startups, 92 diffusion tests and independent step-3 audit pass. Final static/CUDA repository checks pass 1,579 tests. Full CUDA scientific checks pass (1,525 tests, 25 native cases, five-case channel/replay and field regressions), but historical timing remains failed after one fresh retry: 30/31 required checks. Earlier matched comparison passes; exact historical-build control also fails its old gate. Intermittent Windows workers invalidate isolated timing claims for both final sequences. Coordinate a quiet timing window; preserve all failed attempts, references and limits. OpenFOAM and old continuation remain paused. [Evidence](https://github.com/hankbeasley/polycfd/blob/main/../openfoam/compare/ENCLOSURE_N128_DIAGNOSTICS.md) | | W3-03d | Deliver enclosure comparison guide | Planned | Unassigned | Depends on W3-03c acceptance. Publish reproducible inputs/results/reference provenance and verify the user workflow; retire the plan into the lasting guide. General fan/assembly/turbulence support remains separate | | W3-02 | Plan prescribed-flow enclosure validation | Done | Codex | [Plan](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/prescribed-flow-enclosure.md): fixed supported geometry/BCs, Re=20, two layouts, named flow/static-pressure measurements, independent reference and conservation/settling/refinement/replay limits. Documentation links, protocol arithmetic and whitespace checked; no enclosure simulation or accuracy acceptance claimed | | CFG-01 | MacCormack as the user-facing advection default | Done | Codex | Runtime operator/integrator/execution options and all 13 packaged CLI inputs default to limited MacCormack. Explicit SL round trips and all ten historical input hashes pass; established full-suite schemes stay pinned. Isolated Release build, schemas, 684 core + 413 GPU tests pass with CUDA and no skips. [Evidence](https://github.com/hankbeasley/polycfd/blob/main/output/validation/maccormack-default-20260921/assessment.json), [tradeoffs/API](https://github.com/hankbeasley/polycfd/blob/main/docs/PHYSICS_GUIDE.md#advection). Frozen enclosure CLI/report and previous test deployment retained | | VAL-05 | Focused validation suites and agent guidance | Done | Codex | Quick now runs broad tests plus the 20-step Jacobi fan; multigrid runs focused pressure/integration tests plus 64³ cavity field accuracy. Full cases/limits unchanged; eight duplicate xUnit simulation wrappers run once in each suite. Isolated Release build, 682 core + 180 GPU tests, five Python checks, saved-field comparison, CUDA short fan and bounded resume pass. [Selection/timing/commands](https://github.com/hankbeasley/polycfd/blob/main/docs/COMPLETE_VALIDATION.md), [evidence](https://github.com/hankbeasley/polycfd/blob/main/output/validation/validation-subsets-20260921/assessment.json). Full suite/performance not rerun; frozen enclosure evidence and runtime binaries preserved | | VAL-04 | Resumable complete regression validation | Done | Codex | Full CUDA: 31/31 required checks pass, 1,095 tests without skips, all 25 native cases, channel-v2 and field regression; unchanged nine-case performance gate passes. Completed resume reuses all 33 outcomes. Two strict accuracy qualifications remain failed separately. Minimal Jacobi residual compatibility fix, old-build failing tests and all failed numerical/timing evidence retained. [Guide/results](https://github.com/hankbeasley/polycfd/blob/main/docs/COMPLETE_VALIDATION.md#local-regression-result--2026-09-21); frozen v4 CLI, v5 report. Its continuation is now paused for W3-03c diffusion validation | | OPS-01 | Recover space from superseded runs | Done | Codex | Removed 185 historical intermediate HDF5 exports (16.063 GiB) after verifying their retained canonical snapshot hashes. All 195 analysis snapshots, 10 initial/final native fields, qualified references and current validation artifacts remain. Windows free space rose to about 39.7 GiB without WSL shutdown or manual compaction. [Deletion inventory](https://github.com/hankbeasley/polycfd/blob/main/../openfoam/compare/cleanup-20260921.json). | | VAL-03 | Isolate verification from host setup and consolidate settings | Done | Codex | [Verification guide](https://github.com/hankbeasley/polycfd/blob/main/validation/PolyCfd.Validation/README.md): scientific/run settings separated, CLI host composition, no Validation Web/ASP.NET dependency, one typed settings catalog. 279 focused tests, standalone headless execution, nine CUDA checks/performance and 5,001-step frozen replay pass; all 20 captured specification identities preserved. Completed plan retired | | DOC-04 | Finalize delivery and remove timeout from the queue | Done | Codex | W2-03/VAL-02 delivery finalized for the user-requested commit. Timeout removed from current tasks and next actions; historical test exclusions preserved. Documentation links/whitespace pass. Follow-up delivered in VAL-03: separate host options/composition and consolidated setting declarations | | VAL-02 | Simplify scenario-driven validation | Done | Codex | [Verification guide](https://github.com/hankbeasley/polycfd/blob/main/validation/PolyCfd.Validation/README.md): direct immutable scenario inputs, five fan modes through shared studies, shared VTU/HDF5 export and Web viewer hosting. 297 focused tests, nine mandatory CUDA checks plus unchanged performance gate, five fan modes and full frozen-reference replay pass; scientific inputs/references preserved. Completed plan retired | | DOC-03 | Finalize scenario-validation documentation and commit | Done | Codex | Committed in `9b1c7dc`. README, baseline usage, scientific guides and historical status notes aligned with JSON definitions and the unified CLI; Release build, documented help commands, repository-local links/anchors and whitespace checks pass. Prior numerical acceptance remains recorded below | | DOC-01 | Refresh documentation after scenario measurements | Done | Codex | [README](https://github.com/hankbeasley/polycfd/blob/main/README.md), [architecture tour](https://github.com/hankbeasley/polycfd/blob/main/docs/architecture.html), [API](https://github.com/hankbeasley/polycfd/blob/main/docs/API.md), runtime/scenario guides and remaining plans aligned with scenario 1.1; local links, anchors, documented CLI help/validation/estimate commands and schema checks pass; no runtime files changed | | W2-01 | First general CLI run and result path | Done | Codex | [CLI](https://github.com/hankbeasley/polycfd/blob/main/src/PolyCfd.Cli/Program.cs), [examples](https://github.com/hankbeasley/polycfd/blob/main/examples/scenarios/README.md); duct and static-obstacle run/replay on CPU and load in the existing HDF5 reader | | W2-02 | Result inspection and resource preflight | Blocked | Unassigned | Software delivered; [remaining acceptance](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w2-inspection-preflight.md) requires W2-02d hardware calibration | | W2-02a | Saved-run inspection | Done | Codex | [Inspector](https://github.com/hankbeasley/polycfd/blob/main/src/PolyCfd.Execution/RunInspector.cs), [guide](https://github.com/hankbeasley/polycfd/blob/main/docs/SCENARIO_FORMAT.md#inspection-and-resource-preflight); metadata-only, selective/missing/corrupt artifacts, run states and text/JSON verified | | W2-02b | Allocation-based memory estimates | Done | Codex | [Estimator](https://github.com/hankbeasley/polycfd/blob/main/src/PolyCfd.Gpu/Scenarios/ScenarioMemoryEstimator.cs); exact tracked setup matches for small CPU Jacobi/MG and none/box/sphere/STL cases; explicit unknown costs and uncalibrated peaks | | W2-02c | Device resource preflight | Done | Codex | [Preflight](https://github.com/hankbeasley/polycfd/blob/main/src/PolyCfd.Gpu/Scenarios/ScenarioPreflight.cs); CPU/injected-capacity checks plus actual RTX 3080 CUDA probe; assessment correctly remains `unknown` without calibration | | W2-02d | Hardware calibration and user guide | Blocked | Unassigned | RTX 3080 available; device allocation-event and host peak instrumentation still needed for the [frozen calibration procedure](https://github.com/hankbeasley/polycfd/blob/main/docs/RESOURCE_PREFLIGHT.md) | | W3-01 | Named section flow/pressure measurements | Done | Codex | API, scenario/CLI and [independent channel accuracy/refinement](https://github.com/hankbeasley/polycfd/blob/main/docs/DUCT_ACCURACY.md) pass; enclosure/fan accuracy is separate | | W3-01a | Reusable aligned-section diagnostics and windows | Done | Codex | [API guide](https://github.com/hankbeasley/polycfd/blob/main/docs/SECTION_MEASUREMENTS.md), [tests](https://github.com/hankbeasley/polycfd/blob/main/test/PolyCfd.Gpu.Tests/Diagnostics/AlignedSectionTests.cs); signed flow, static pressure and streaming windows verified on CPU/CUDA with compact transfers | | W3-01b | Scenario declarations and saved measurement output | Done | Codex | [Named-measurement contract](https://github.com/hankbeasley/polycfd/blob/main/docs/SCENARIO_FORMAT.md#named-section-measurements), [example](https://github.com/hankbeasley/polycfd/blob/main/examples/scenarios/measured-duct/scenario.json), [tests](https://github.com/hankbeasley/polycfd/blob/main/test/PolyCfd.Gpu.Tests/Scenarios/ScenarioMeasurementTests.cs); CPU workflow and actual CUDA run/replay pass, including independent scalar cadence, windows, gauge checks and inspection | | W3-01c | Independent duct accuracy and refinement | Done | Codex | [Frozen protocol/results](https://github.com/hankbeasley/polycfd/blob/main/docs/DUCT_ACCURACY.md): five CUDA cases plus replay pass; finest flow error 0.783%, spatial/temporal increment ratios 4.010/1.994, pressure/conservation/settling gates pass. Also fixed nonzero pressure values entering PCG/MG correction equations; 116 focused tests and 9 mandatory regressions pass | | QA-02 | Mandatory analytical Taylor–Green validation | Done | Codex | Both schemes are mandatory. Current 128³ planar MacCormack t=20 passes: 0.8564% velocity, 1.6512% energy decay. [Guide](https://github.com/hankbeasley/polycfd/blob/main/docs/TAYLOR_GREEN_VALIDATION.md). | | QA-03 | Investigate 3D Taylor–Green numerical discrepancies | Done | Codex | Operator, initial-acceleration, sampling and solver-acceptance checks completed. See QA-05 and the [current comparison](https://github.com/hankbeasley/polycfd/blob/main/../openfoam/compare/TAYLOR_GREEN_COMPARISON.md). | | QA-04 | Diagnose moving-fan diffusion iteration-limit failures | Done | Codex | Delivered mixed-precision residual/correction with the then-current moving cap 400 and unchanged 1e-6 target; W3-03c now validates the shared 800-sweep policy. 38 CUDA diffusion tests, both ten-revolution fans and all nine mandatory regressions pass. [Contract](https://github.com/hankbeasley/polycfd/blob/main/docs/ADAPTIVE_DIFFUSION_RELATIVE_TOLERANCE.md). | | QA-05 | Isolate 3D transport error and establish a converged reference | Done | Codex | Qualified spectral reference through t=20; remaining differences supported by transport/refinement evidence. Strict accuracy failures remain. [Current assessment](https://github.com/hankbeasley/polycfd/blob/main/../openfoam/compare/TAYLOR_GREEN_COMPARISON.md), [compiler report](https://github.com/hankbeasley/polycfd/blob/main/docs/ILGPU_PERIODIC_INDEX_BUG_REPORT.md). | | DOC-02 | Consolidate comparison results and prepare ILGPU upstream report | Done | Codex | Fan source confirmed; 38 CUDA diffusion tests pass. Single current comparison report, 110 obsolete artifacts removed, final fields retained and error histories unchanged; 86 comparison tests pass. ILGPU duplicate search and standalone 12-configuration reproduction complete. [Issue-ready report](https://github.com/hankbeasley/polycfd/blob/main/docs/ILGPU_PERIODIC_INDEX_BUG_REPORT.md). | | QA-06 | Reproduce normal Dirichlet diffusion endpoint concern | Done | Codex | Confirmed on CUDA for U/V/W: post-reset residual 3.87–4.51% despite reported convergence. Fixed constraints inside diffusion with partial-mask support; 18 new endpoint/mask cases, all 56 diffusion tests and all 9 mandatory regressions pass. [Contract](https://github.com/hankbeasley/polycfd/blob/main/docs/ADAPTIVE_DIFFUSION_RELATIVE_TOLERANCE.md) | | W2-03 | Parameter variations and measured comparisons | Done | Codex | [Guide/API](https://github.com/hankbeasley/polycfd/blob/main/docs/PARAMETER_STUDIES.md), [JSON example](https://github.com/hankbeasley/polycfd/blob/main/examples/scenarios/pressure-driven-channel/study.json); 45 host + 60 runtime/inspection tests, three-pressure CUDA study, portable run/replay and unchanged five-case refinement/replay pass. Failed/canceled/unstarted/incompatible runs remain explicit; completed plan retired | | CLI-01 | Scenario-driven validation and unified CLI | Done | Codex | [Delivered verification workflow](https://github.com/hankbeasley/polycfd/blob/main/validation/PolyCfd.Validation/README.md) and [scenario 1.2](https://github.com/hankbeasley/polycfd/blob/main/docs/SCENARIO_FORMAT.md); all case definitions share one executor/CLI. Full reference, replay/conversion and unchanged performance gates pass; duplicate host/physical constructors/readers retired | | CLI-01a | Plan scenario-driven validation migration | Done | Codex | Inventory and acceptance delivered; completed plan retired into the [verification guide](https://github.com/hankbeasley/polycfd/blob/main/validation/PolyCfd.Validation/README.md) and runtime/scenario contracts | | CLI-01b | Shared scenario execution and cavity-sphere pilot | Done | Codex | Shared Execution library and JSON verifier; 5,001-step CUDA pilot passes with exactly matching saved fields/geometry and 52 matching diagnostic samples; CPU failure/regime checks and Windows publication checks pass; channel refinement/control and full pilot replay pass. Evidence: ignored `output/validation/scenario-migration/`; full case retirement completed in CLI-01c/e | | CLI-01c | Static initialization, sources and solver options | Done | Codex | Ten case definitions in JSON; six mandatory periodic controls pass; Poiseuille, channel-obstacle and stationary-fan legacy references convert losslessly and pass current comparison; cavity and adaptive sphere pass | | CLI-01d | Cylinder and backward-step scenario definitions | Done | Codex | Exact SDF/mask checks pass. Full CUDA cylinder 512x64x16, adaptive t=80 passes unchanged force limits (Cd=2.5983, Cl amplitude=0.8222, St=0.2208); full 384x32x32 step, dt=0.05, t=120 passes conservation, settling and OpenFOAM reference. Evidence: ignored `output/validation/scenario-migration/` | | CLI-01e | Adaptive and moving scenario validation | Done | Codex | Both full 128³ fans complete 4,684 steps through t=10 with every pressure solve converged and unchanged bounds. Both mandatory fan checks, all five diagnostic modes, fixed/adaptive replay, inspection, cancellation and disposal pass | | CLI-01f | Unified host, record conversion and retirement | Done | Codex | One CLI/shared loop, canonical records and portable cases; four unchanged converted references pass. Nine mandatory checks and comparative performance pass; 554 host + 151 runtime/scenario tests pass, two existing skips; viewer reader/replay passes | ### Next implementation sequence **Workbench track:** finish Gate A (W4-07b/07c), then W4-06d with W4-14b/14c, then the Phase 3 service routes with W4-14d in the [phased plan](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/w4-workbench-implementation.md). W4-03 user review can proceed at any time. Tests run on tiny pinned-CUDA channel fixtures while the independently assigned W3 reference work continues. Enclosure accuracy and calibrated memory-fit claims retain their separate gates. 1. **W3-03b — Qualify the independent enclosure reference.** The [two JSON layouts](https://github.com/hankbeasley/polycfd/blob/main/examples/scenarios/prescribed-flow-enclosure/README.md) and W3-03a workflow checks are delivered. Use the installed OpenFOAM Foundation 14 environment and [frozen protocol](https://github.com/hankbeasley/polycfd/blob/main/docs/plans/prescribed-flow-enclosure.md) to generate and qualify both reference layouts. Then run the scientific campaign (**W3-03c**) and deliver the comparison guide (**W3-03d**). Short runs do not establish accuracy. Extend fan modeling after this bounded workflow passes, then expose it through **W4 browser authoring**. 2. **W2-02d — Complete memory calibration when instrumentation is available.** Keep this blocked and estimates explicitly uncalibrated until the frozen hardware procedure passes. W2-03, VAL-02–04, W3-02 planning and W3-03a are complete. W3-03b/c are both Blocked (Codex) pending the quiet performance check; W3-03d remains Planned/Unassigned. No enclosure reference or production result is accepted yet. The CPU PCG timeout investigation was removed from the queue at the user's request on 2026-09-19. Recorded test exclusions below remain evidence limits, not a claim of a fix. ### Scenario-driven verification Validation physics now comes directly from the same immutable scenario JSON and resolver used by ordinary runs, with no duplicate mutable physical parameter classes or conversion round trip. Reference formulas, specialized diagnostics, thresholds/windows and baseline/performance policy remain in Validation. Core/GPU/Execution stay independent of Validation, CLI and Web. See the [verification guide](https://github.com/hankbeasley/polycfd/blob/main/validation/PolyCfd.Validation/README.md) for commands, records and conversion. Parameter studies reuse these resolved inputs and the shared runner. The duct accuracy script now defines a study and retains only its independent scientific analysis, with no separate run loop. Fan diagnostic experiments use the same study scheduler without stationary measurements. VTU/HDF5 output is shared in Execution; the CLI composes it with Web viewer hosting. Validation has no Web/ASP.NET dependency. Scientific and run/output settings are separate, with one typed catalog preserving existing verification-record keys and identities. Scientific acceptance is recorded separately from numerical completion and can fail an otherwise completed study run. ### Ongoing cleanup policy There are no external users requiring backward compatibility at this stage. Remove legacy code as affected features are replaced, updating in-repository consumers and documentation together. Keep cleanup local to the feature; old interfaces and formats are disposable, while scientific capabilities, reference evidence and acceptance checks remain requirements. See [repository guidance](https://github.com/hankbeasley/polycfd/blob/main/AGENTS.md#cleanup-and-compatibility). ## Verification and handoff W4-04 design verification (2026-09-22): seven design/plan documents and added navigation links checked, including local Markdown anchors, code fences, final newlines and authored whitespace. All 21 unchecked implementation tasks map to one unassigned workboard row; W4-05a is Ready. Three component designs were cross-reviewed for state, identity, completion and resource-bound consistency. `git diff --check` passes. Evidence: ignored `output/w4-design/system-design-checks.json`. No UI/.NET/GPU implementation or simulation tests were performed for this documentation-only task. W4-03 user review remains unperformed. W3-03a verification (2026-09-19): - `dotnet build PolyCfd.sln -c Release --no-restore -m:1`: **zero warnings/errors**. The four new enclosure checks cover both layouts at `n=16/32/64`, exact cell fractions/fluid volume, open/pressure areas, physical plane alignment, signed flow/pressure units and rejection of a moved pressure plane. - **78 focused runtime tests pass**: enclosure, field exports, measurements, studies, moving-scenario workflows and inspection/preflight. The new export regression first reproduced `inspect.fieldUnexpected` for static SDF, then passed with the fix. Scenario HDF5 now honors recorded SDF demand; explicit scientific static-SDF exports and moving-frame exports retain their data. No numerical kernels, reference limits or scenario/record format versions changed. - Schema checker: **12 scenario examples and two study examples pass**, alongside 13 packaged scenarios, one diagnostic study and all existing rejection fixtures. Both enclosure variants pass CLI study validation. Actual RTX 3080 preflight succeeds while the memory-fit assessment correctly remains uncalibrated/unknown. - Short studies: **both layouts complete two steps** on CPU (`32x8x8`) and CUDA (`256x64x64`); each saves three scalar samples, a complete smoke window and one final U/V/W/P HDF5. Inspection and comparison pass. The CUDA offset replay reproduces scalar windows exactly and passes inspection. These generated smoke copies use `t=2/256 s`; the maintained `t=16 s` inputs and acceptance windows are unchanged. - Evidence: ignored `output/validation/enclosure-inputs/`, including initial CPU `64x16x16` and CUDA runs that completed numerically but exposed the SDF inspection failure. An initial rebuild hit the running CPU process's DLL lock; the focused tests and corrected runs used an isolated Release output, and the normal final build passed after that process exited. No full scientific/performance campaign was run or claimed. OpenFOAM Foundation 14 runner availability is verified for W3-03b; no enclosure reference had been generated at that milestone. VAL-03 verification (2026-09-19): - `dotnet build PolyCfd.sln -c Release --no-restore -m:1`: **zero warnings/errors**. Focused scientific/record/conversion tests: **159 passed**, including exact identities and round trips for 20 pre-change specifications (default/configured inputs for ten cases). Scenario/runtime/session/slice/export tests: **120 passed**, including CLI export/viewer composition, compressed record/replay, destination preflight, injected consumers, cancellation and initialization-failure disposal before device teardown. - A standalone app referencing only Validation passes a two-step CPU scientific run. Its dependency graph and loaded assemblies contain **no Web or ASP.NET**, and its runtime configuration requires only `Microsoft.NETCore.App`. - CUDA `verify-all`: **nine mandatory checks and the performance gate pass**, including the full backward-step reference. Comparison uses the prior VAL-02 timings with the unchanged 20% allowance; median-step changes range **−1.5% to +5.8%**. - Frozen cavity-sphere CUDA replay: **5,001 steps and the reference comparison pass**; all 52 diagnostic samples are present and the specification identity matches the pre-refactor reference. CLI help, repository-local documentation links and `git diff --check` pass; existing OpenFOAM sibling links require that separate workspace. - Evidence: ignored `output/validation/validation-host-separation/`. No numerical kernels, physical case definitions, reference data or acceptance limits changed. The previously excluded CPU equivalence test was not run; no full-suite pass is claimed and its removed investigation task remains out of the queue. VAL-02 verification (2026-09-19): - Release build: **zero warnings/errors**. Focused scientific/host tests: **183 passed**; scenario/runtime/session/slice/export tests: **114 passed**. The study/export subset was rerun after final orchestration fixes: **22 passed**; final case-definition/study checks: **80 passed**. Coverage includes direct input and invalid reference regimes, scientific record identity, frozen conversion, failed scientific outcomes, cancellation, optional measurements, independent exports, compression, moving SDF and live viewer capture/disposal. - Before/after `verify-all` runs on CUDA: **nine mandatory scientific checks and the performance comparison pass**, with unchanged 20% limits and noise floors. All nine resolved scenarios/effective inputs/assets match the captured pre-refactor workloads; all ten packaged case defaults match the pre-refactor canonical input hashes. - Full five-mode fan diagnostic study: **all five complete** on CUDA at 32×32×64 through t=.5, including half-dt, rebuild-each-step and zero-pressure-guess modes. - Frozen cavity-sphere reference conversion preserves source manifest/CSV bytes. Its **5,001-step CUDA replay and reference comparison pass**, with 52 diagnostic samples. Maintained baseline/reference files and acceptance thresholds are unchanged. - Schema checker passes for **13 packaged scenarios, one packaged study, 11 scenario examples**, the study example and structural/strict-JSON rejection fixtures. Documented CLI help and all 11 example semantic validations pass. Repository-local documentation links and `git diff --check` pass; seven existing OpenFOAM sibling links require that separate workspace. - Evidence: ignored `output/validation/validation-simplification/`. The existing CPU equivalence test was excluded; no full-suite pass is claimed. This refactor did not repeat the earlier full cylinder or ten-revolution fan studies, whose recorded acceptance remains below. W2-02d remains blocked on calibration instrumentation. These runs preceded the DOC-04 commit. W2-03 verification (2026-09-19): - `dotnet build PolyCfd.sln -c Release --no-restore -m:1`: **zero warnings/errors**. Focused `ParameterStudyTests`: **45 passed**. Study execution, existing inspection, measurement and moving-workflow tests: **60 distinct tests passed** (59 in the first combined run; the final 10 study tests include one added prevalidation test). Invalid inputs, snapshots, scalar arithmetic, matching physical windows/planes, corrupt artifacts, membership, cancellation/failure, unstarted variants and interrupted status pass. - `study run examples/scenarios/pressure-driven-channel/study.json --backend cuda`: all three variants complete 4096 steps. Reference/half/double flow is **0.0864254497 / 0.0432127248 / 0.1728508994 m³/s**, with **0.3 / 0.15 / 0.6 Pa** drops. Existing flow/pressure/conservation/settling limits pass; relative flow error is **3.71054%**. Comparison arithmetic independently matches the saved means. - A copied two-file bundle runs from a separate working directory, with full three-variant CUDA execution and ordinary double-pressure replay. All replay scalar windows match exactly. The portability check required approved execution outside the filesystem sandbox after two directory-creation denials; no solver or acceptance changes were made. - `python tools/validate_duct_accuracy.py run --output output/validation/parameter-studies/refinement`: **five frozen cases and replay pass** through the shared study runner. Finest flow error **0.782899%**, spatial/temporal increment ratios **4.010316 / 1.993648**. Existing physical inputs and limits remain unchanged; explicit default final-step policy is false. - Schema checker: **12 packaged cases, four scenario examples, two primitives, one study example, 17 scenario/3 study structural rejection fixtures and five strict-JSON fixtures pass**. CLI help, text/JSON comparisons/status, repository-local documentation links/anchors and `git diff --check` pass. Existing sibling OpenFOAM links still require that separate workspace. - Evidence: ignored `output/validation/parameter-studies/`. No numerical kernels, baselines, tolerances or scientific references changed. The existing CPU equivalence test was excluded, so no full-suite pass is claimed. W2-02d remains blocked; W2 as a whole is not complete. DOC-03 final documentation pass (2026-09-19): removed stale standalone-validation commands and runtime legacy replay claims from the baseline guide; clarified JSON definitions versus C# verification and marked retired runner references as historical. Release build has zero warnings/errors; CLI help, repository-local links/anchors and `git diff --check` pass. No runtime code changed during this final documentation pass; numerical checks below were not rerun for documentation-only edits. CLI-01 verification (2026-09-19): - `dotnet build PolyCfd.sln -c Release --no-restore -m:1`: **zero warnings/errors**. Focused `PolyCfd.Tests` suite: **554 passed, two existing skips**. Affected GPU-project scenario, diffusion, pressure-boundary and session tests: **151 passed**. The existing CPU PCG equivalence test was excluded after timing out; no full-suite pass is claimed. - Frozen 32³ sphere-cavity CUDA pilot and full replay: **5,001 steps**, exactly matching saved fields/geometry and 52 diagnostic samples within the predeclared CSV rounding limits. The independent channel refinement/control also passes without changing its protocol. - Full cylinder **512x64x16, t=80** passes unchanged settled-cycle force limits: Cd **2.5983**, Cl amplitude **0.8222**, St **0.2208**. Full backward step **384x32x32, dt=.05, t=120** passes conservation, settling and OpenFOAM references. - Both full **128³ fans through t=10** pass 4,684 steps with every pressure solve converged. Peak velocity is **2.22086 / 2.22085** and peak continuity residual **.75457 / .76109** for Semi-Lagrangian/MacCormack. All five fixed-step diagnostic experiment modes pass. - Old and migrated `verify-all` runs execute sequentially on the otherwise idle device: **9/9 mandatory checks and the performance comparison pass** with unchanged 20% limits and noise floors. Median-step changes range **−2.8% to +4.2%**; backward-step elapsed increases **3.6%**. The largest short-case elapsed increase is **22.2% / 430 ms**, below the existing 1,000 ms floor. This covers nine mandatory workload keys, not every case/grid. - Explicit conversion and current replay pass for sphere-cavity, Poiseuille, channel-obstacle and stationary-fan. CSV and original manifest hashes remain unchanged. The small frozen [conversion fixture](https://github.com/hankbeasley/polycfd/blob/main/test/PolyCfd.Tests/Fixtures/scenario-migration/README.md) is maintained; incomplete historical CSV-only references remain preserved and explicitly archived. - Fixed/adaptive moving run/replay, selective pressure/SDF output, actual frame times, inspection, cancellation, failure and resource release pass. A same-input repeatability control exposes pressure roundoff up to 2.87e-6 absolute; replay uses the already frozen 1e-5 absolute/relative-L2 field limits, with exact input/initial/geometry/time checks. Inspection now recognizes moving SDF output and adaptive/final-clipped timesteps. - `npm test -- --run src/__tests__/ScenarioHdf5.test.ts`: **two viewer-reader integration tests pass**, including actual CLI run/replay. The Python schema checker passes all **12 packaged cases, four examples, two primitive variants and 22 rejection fixtures**. Documentation links/anchors and `git diff --check` pass; existing sibling OpenFOAM links require that separate workspace, which is absent from this worktree. - Evidence and unsuccessful diagnostic attempts remain under ignored `output/validation/scenario-migration/`. Solver thresholds, force windows and accepted scientific/performance references were not weakened or replaced. The diffusion-RHS normalization prerequisite is documented in [the physics guide](https://github.com/hankbeasley/polycfd/blob/main/docs/PHYSICS_GUIDE.md). W2 memory estimates remain uncalibrated; this migration does not close W2-02d. W3-01c / QA-06 verification (2026-09-19): - Release solution build (`--no-restore -m:1`): zero warnings/errors. Focused diffusion, PCG/MG/nullspace/workspace, aligned-section/window and scenario-measurement tests: **116 passed**. The six original endpoint cases and eight nonzero-pressure cases failed on their respective original implementations; before/after TRX is retained. - `python tools/validate_duct_accuracy.py run --output output/validation/duct-accuracy/study-traced`: **all five frozen cases and replay pass**. Final clean-CLI `analyze` passes; an additional clean-CLI replay completes 4096 steps with all scalar windows exactly equal. [Guide](https://github.com/hankbeasley/polycfd/blob/main/docs/DUCT_ACCURACY.md) records physics, limits, actual metrics and preserved evidence. - `verify-all --baseline output/validation/duct-accuracy/empty-baselines`: **9/9 mandatory regressions pass**, including both fan schemes, both planar analytical schemes, four exact periodic controls and the full backward-step reference/settling checks. Saved baselines, current-build comparative performance and ten-revolution fan trajectories were not rerun. Broader CPU numerical coverage was incomplete after a timeout. - `tools/check_scenario_format.py` with jsonschema 4.26: **four examples**, two primitive variants, 17 structural and five JSON rejection fixtures pass. No schema change was needed. Added/updated local documentation links, UTF-8 formatting and `git diff --check` pass. - Three early study attempts stopped on Windows file-access errors during publication; subsequent complete runs preserve unchanged scientific criteria. No failed run counts toward acceptance. Generated results remain ignored; no reference data was replaced. - The completed W3 measurement plan is retired into [the section contract](https://github.com/hankbeasley/polycfd/blob/main/docs/SECTION_MEASUREMENTS.md) and [channel accuracy guide](https://github.com/hankbeasley/polycfd/blob/main/docs/DUCT_ACCURACY.md). Next: W2-03's bounded comparison workflow. Current numerical comparison handoff (2026-09-19): - Fan arithmetic is applied in production and passes 38 CUDA diffusion tests. Both full fans complete ten revolutions; all nine mandatory checks pass. - The current planar 128³ analytical run passes through t=20. The latest full 3D trajectories predate the fan arithmetic update and retain their measured build identities. Their stricter accuracy failures remain visible. - The comparison workspace now has one [current report](https://github.com/hankbeasley/polycfd/blob/main/../openfoam/compare/TAYLOR_GREEN_COMPARISON.md) with metrics and retained final fields; obsolete investigation outputs were removed as requested. No current-build comparative performance claim exists. - The [ILGPU issue-ready report](https://github.com/hankbeasley/polycfd/blob/main/docs/ILGPU_PERIODIC_INDEX_BUG_REPORT.md) has a fresh public duplicate search and standalone reproducer. All twelve CPU/CUDA, Debug/Release, O0/O1/O2 combinations were rerun. No issue has been posted. - QA-06 is now confirmed and fixed; current endpoint/channel evidence is above. DOC-01 documentation review (2026-09-18): overview/API links now include scenario measurements; the W3 plan retains the remaining accuracy acceptance. Scenario/validation replay formats, full-field viewer requirements, uncalibrated memory estimates and the CPU test timeout are explicit. Removed two broken links to a retired report and stale test-duration/availability claims. Local documentation links and architecture anchors pass; CLI help, all three example validations, measured-duct estimate-only and the Python schema checks pass. Non-document file hashes are unchanged during this review; numerical tests were not rerun for documentation-only edits. W3-01b verification (2026-09-18): - Latest origin fetched before this board update; `webxr` and `origin/webxr` match at `fb41d61`. Existing local physics/Taylor–Green edits are preserved; implementation remains uncommitted. - `dotnet build PolyCfd.sln -c Release --no-restore -m:1`: zero warnings/errors. - Release GPU-test project with `--no-build --no-restore` and filter `FullyQualifiedName~ScenarioMeasurementTests|FullyQualifiedName~SectionTimeWindowTests`: **17 passed**. Covers typed/JSON selections, pressure connectivity/periodic seams, run/replay, pressure-only HDF5, independent scalar cadence, incomplete windows, failure/cancellation, allocation accounting and corrupt/missing/inconsistent artifacts. - **41 additional scenario/schema/inspection/preflight tests passed**, selecting `ScenarioTests` and `InspectionPreflightTests` except the numerical methods `JsonTypedAndDirectRuntimeProduceEquivalentFields`, `RunnerWritesReplayableOutputSelectiveFieldsAndDetectsChangedAssets`, `CancellationExistingDestinationsAndFailedStepsNeverPublishInvalidFrames` and `EstimateAccountsForAuditedSetupStepAndCapture`. - Actual RTX 3080 measured-duct validate, estimate-only, CUDA run, inspect and replay pass on the final build: three scalar samples, one pressure-only HDF5 file, complete demonstration window and exactly matching scalar replay. This short startup example is workflow evidence, not settled-flow/pressure-loss accuracy or calibrated memory/performance acceptance. - `python3 tools/check_scenario_format.py`: three examples, two primitive variants, 17 structural and five JSON rejection fixtures pass. Documentation links and `git diff --check` pass. - Broader CPU numerical regression is **incomplete**: the combined run was canceled after remaining in the existing PCG equivalence test, and its isolated retry timed out at 240 seconds. No solver checks or tolerances were weakened and no full-suite pass is claimed. - Raw TRX, CUDA CLI artifacts and managed stack captures are under ignored `output/validation/w3-scenario-measurements/`. The subsequent W3-01c accuracy evidence is above. W3-01a verification (2026-09-18): - `dotnet build PolyCfd.sln -c Release -m:1`: restored dependencies introduced by the latest origin changes and passed with zero warnings/errors. Final `--no-restore -m:1` build also passes. - `dotnet test test/PolyCfd.Gpu.Tests/PolyCfd.Gpu.Tests.csproj -c Release --no-restore` with `FullyQualifiedName~AlignedSectionTests|FullyQualifiedName~SectionTimeWindowTests|FullyQualifiedName~DeviceStatisticsTests|FullyQualifiedName~DeviceSliceCaptureTests`: **28 passed**, including 18 new section/window tests, CPU and RTX 3080 CUDA paths, accepted session-step sampling and opposite-boundary mass balance. - Exact affine fields cover non-cubic grids/all axes, pressure conversion and gauge shifts; manufactured parabolic-profile flux converges to its exact integral at second order under transverse refinement. This is measurement quadrature evidence, not solved-duct accuracy. - Audits verify repeated section requests copy only one 24-byte result, without recurring uploads or allocations; retained storage returns to its prior level on disposal. - Actual duct `preflight --backend cuda --json` exits 0, identifies the RTX 3080 and returns total/free capacity with `unknown` assessment as intended. Raw TRX and probe output are under ignored `output/validation/w3-sections/`. This does not satisfy the W2-02d memory-peak calibration. - Local documentation file-link and whitespace checks passed. That API-only increment retained scenario 1.0; W3-01b supplies scenario 1.1 integration and W3-01c now supplies independent channel accuracy. Existing local Taylor–Green edits were unchanged at that handoff. Prior W2 inspection/preflight verification: - Solution Release build with `--no-restore -m:1`: zero warnings/errors. - `InspectionPreflightTests`, `ScenarioTests` and `SimulationSessionTests`: **58 passed** (27 new reporting/resource cases). The new collection runs without other collections to avoid concurrent mutation of ILGPU compiler state observed during the first combined run. - Existing `RunManifestTests` and `Hdf5WriterTests`: **15 passed**. - The duct and static-obstacle 32x8x8, two-step examples pass actual estimate-only/CPU preflight, run, text/JSON inspection and replay; each run reports three published frames without diagnostics. - A counting-stream test verifies that HDF5 inspection reads headers, not field payloads; corrupt-file tests verify stream disposal. Small CPU allocation audits exercise setup, two steps and capture, including the STL path. No GPU capacity or timing acceptance is implied. The report/estimate contract is in [SCENARIO_FORMAT.md](https://github.com/hankbeasley/polycfd/blob/main/docs/SCENARIO_FORMAT.md#inspection-and-resource-preflight). Current memory estimates intentionally return `unknown` fit unless mandatory resident storage already exceeds reported capacity. That W2 verification performed no large CFD, CUDA run or hardware calibration; the subsequent CUDA probe above verifies discovery/capacity reporting only. The delivered profile covers constant fields, fixed steps, one uniform block, full domain-face BCs and zero/one stationary box, sphere or STL. Advanced runtime APIs remain available outside the data profile. Replay records effective settings, exact mesh snapshots and build identity; it is not a numerical checkpoint. See the guide for geometry-quality and format limitations. Prior W1 scenario/session verification (before the W3 changes): - `dotnet build PolyCfd.sln -c Release --no-restore -m:1`: zero warnings/errors. - Focused `ScenarioTests` and `SimulationSessionTests`: **31 passed**, including JSON/C#/direct duct/STL equivalence, pressure conversion, replay/default drift, failures, cancellation and disposal. - Existing `RunManifestTests` and `Hdf5WriterTests`: **15 passed**; validation replay is unchanged. - UI `ScenarioHdf5.test.ts` and `Hdf5Reader.test.ts` with one worker: **3 passed**, including actual CLI validate/run/status/replay and existing viewer-reader compatibility for duct and static-obstacle. - UI production build and targeted ESLint for the new integration test pass. - Python schema/example/rejection checks and documentation link/whitespace checks pass. Numerical tests used small grids: 8³ for focused runtime comparisons and 32×8×8 with two steps for each executable example. Scenario STL imports use finite distances instead of the legacy far-field sentinel so geometry-aware advection remains finite; that choice is in resolved records. Those W1 scenario checks did not run large CFD references, CUDA acceptance or performance benchmarks. The examples demonstrate authoring/execution, not engineering pressure-drop accuracy. Large physical-validation or performance work needs appropriate hardware before it can be accepted.