This temporary document is the implementation source of truth for unfinished
GUI-2 work. Completed implementation detail belongs in Git history and the
short indexes under docs/archive/; durable implemented ownership belongs in
DESKTOP_ARCHITECTURE.md. Keeping completed ledgers
out of this mandatory reading path is an intentional context-budget safeguard.
Delete this plan only after every GUI-2 stage is complete, permanent documentation describes the final architecture, and the maintainer accepts the finished application.
0.1.0a4is the published baseline and contains the accepted Stage 3 QML parity application.0.1.0a3is the historical GUI-1 release and contains the retired Widgets presentation.carnopy-guiis canonical.carnopy-applaunches the same QML application as a compatibility alias for0.1.0a4.- The obsolete Widgets presentation is deleted. Carnopy does not ship a frontend selector or two normal desktop applications.
0.1.0a4is a bounded post-Stage-3 release. It does not wait for sweep and preparation QML workflows or native 3D.- The
appextra is the cross-platform QML application. A future optional3dextra may add the native VTK bridge to that application; it is not a second GUI.
Stage 3 product implementation, remote CI, the complete local gate, and native
acceptance passed on 2026-07-30. Its accepted implementation record is indexed
in docs/archive/GUI2_STAGE3.md, and durable
ownership is recorded in DESKTOP_ARCHITECTURE.md.
AGENTS.md, its routed guides, and .agents/local.md control scientific and
public contracts, local authority, dependencies, verification, and release
operations. The README records public direction; maintainer-local
PRODUCT_SCOPE.md and .agents/private/PRODUCT_STRATEGY.md control private
cross-roadmap priority when present. DESKTOP_ARCHITECTURE.md records
implemented desktop ownership. Repository source and tests establish exact
current behavior.
Locked GUI-2 boundaries:
- QML remains the only normal desktop presentation.
- Preserve public CLI and Python APIs, YAML schemas, immutable output layouts, provenance, identities, integrity checks, and no-overwrite behavior.
- Preserve one globally active request and one short-lived private worker per request.
- Keep CoolProp, NumPy, pandas, PyArrow, Matplotlib, scientific pipelines, table readers, and renderers outside the QML process.
- YAML remains portable configuration authority; QML must not create a second scientific state owner.
- Worker validation remains authoritative at Save, generation, inspection, rendering, and other established trust boundaries.
- Provide emitted-value 3D without interpolation, smoothing, extrapolation, resampling, invented states, or silent hole filling.
- Keep the native VTK bridge as a companion distribution in this repository.
- Support QML startup and focused interaction smokes on Linux, Windows, and macOS. Native 3D remains Linux-first until separately qualified.
- Deliver one branch and pull request per GUI-2 stage with coherent commits, stage-specific verification, documentation synchronization, and explicit maintainer acceptance.
- Git mutation, dependencies, credentials, tags, publication, and external service configuration remain human-controlled.
Changes to scientific behavior, public interfaces, renderer families, companion-distribution strategy, or platform promises require explicit review. Internal grouping may change when source and tests justify a smaller correct implementation.
| Stage | Status | Durable outcome or active purpose |
|---|---|---|
| 0 | Complete | Qualified the native Qt Quick and VTK bridge feasibility baseline |
| 1 | Complete | Established request ownership and QML-ready dataset controllers |
| 2 | Complete | Added the packaged QML shell and Dataset/YAML/Save workflows |
| 3 | Complete | Reached parity, migrated both launchers, retired Widgets, and qualified 0.1.0a4 |
| 4 | Complete | Added controlled sweep and preparation worker operations for the existing public contracts |
| 5 | Approved next | Add structured sweep and preparation QML workflows |
| 6 | Pending | Build exact emitted-value 3D scenes |
| 7 | Pending | Add native interactive 3D to QML |
| 8 | Pending | Qualify native 3D packaging, platforms, and a later release |
Stage 0 qualified a same-repository carnopy-vtk-bridge wheel containing a
QQuickVTKItem subtype at commit
094378ca3fef53de7338f593188d5e14f1461a84. The Linux Ubuntu 24.04,
CPython 3.12, Qt 6.11.1, VTK 9.6.2, software-OpenGL qualification proved clean
installation, rendering, interaction, resize, reconstruction, teardown, and
process exit. It did not qualify other platforms or future bridge changes.
Stage 1 introduced the composition-owned request coordinator, workspace and configuration controllers, Dataset and Visualization drafts, deterministic document workflow, and the worker-validated Save boundary. Execution, inspection, plotting, Activity, and Recovery were deliberately extracted only immediately before their Stage 3 QML migrations.
Stage 2 added the packaged Qt 6.11.1 QML runtime, responsive Precision Grid
shell, themes and resources, Workspace, Dataset, configured-Visualization
editing, deterministic YAML preview, worker-validated Save, exact sampler
canonicalization and unit changes, typed projections, and cross-platform
installed-QML smokes. Its historical index is
docs/archive/GUI2_STAGE2.md.
Stage 3 added authoritative Run, Inspect, configured-result, inspected-data
plotting, Activity, Recovery, guarded cross-page workflows, and native QML
acceptance. Both public commands launch QML and the duplicate Widgets frontend
is removed. The durable ownership graph is in DESKTOP_ARCHITECTURE.md; the
full implementation ledger is indexed in
docs/archive/GUI2_STAGE3.md.
The accepted public Dataset capture is:
The checkpoint completed on 2026-07-30 through:
branch: release/0.1.0a4
PR: chore(release): publish Carnopy 0.1.0a4
commit: chore(release): prepare 0.1.0a4
The release commit aligned 0.1.0a4 across Carnopy source, companion-bridge
metadata and qualification constants, uv.lock, tracked citation metadata,
release assertions, and version-specific documentation. The complete source,
package, Twine, installed-distribution, and local release gates passed before
the protected main merge. The annotated v0.1.0a4 tag then passed the
protected publication workflow and produced the byte-identical
PyPI distributions. The matching
GitHub prerelease
was archived under the version-specific Zenodo DOI
10.5281/zenodo.21709965.
Do not replace the published distributions or move the release tag.
No Stage 4–8 functionality or native VTK is part of the 0.1.0a4 gate.
At the 0.1.0a4 checkpoint, Stage 4 was the approved next implementation
stage. It began the accepted workflow-depth milestone by exposing the existing
sweep and preparation contracts through controlled worker operations without
changing their public schemas or output layouts. Stage 4 has since completed;
Stage 5 now adds the corresponding structured QML workflows. Their numbers,
dependencies, and reviewed technical content remain unchanged by this
reprioritization.
Stage 4 is complete. The accepted implementation record is indexed in
docs/archive/GUI2_STAGE4.md. It adds private
worker operations for sweep and preparation loading, exact-text validation,
non-writing planning, execution, progress, cancellation, protected
finalization, and guarded recovery.
Preparation planning is revision-bound and non-writing. It classifies eligible sources explicitly, performs stable descriptor-backed reads, computes semantic resolution, exclusions, scenarios, transformations, leakage checks, matrix diagnostics, array feasibility, and baseline feasibility without fitting. Execution recomputes and verifies the plan in its short-lived worker, fits requested baselines only during execution, and writes only after the plan and source checks succeed.
The desktop now composes nonvisual sweep and preparation workflow controllers with execution-only Activity records, stale-input invalidation, and inspection handoff. Protected finalization is sticky and distinct from ordinary non-cooperative phases, so the existing force-only plot behavior remains unchanged. Public APIs, YAML schemas, result models, output layouts, dependencies, and visible QML are unchanged.
The original complete implementation gate and preflight passed on 2026-08-08 with 820 tests. A post-acceptance repair baseline passed with 825 tests. The independent Stage 4 audit remediation then passed the complete gate on 2026-08-09 with 836 tests, including stable metadata consumption, atomic no-replace finalization, cancellation, Activity, controller-state, runtime fingerprint, and complete worker-lifecycle regressions. No screenshot or native UI acceptance was required for Stage 4 because it made no visible QML changes. The separate WSLg launch-hardening follow-up remains desktop maintenance. Its native XCB/WSLg acceptance passed on 2026-08-09 with a real six-row generation, configured plot, verified inspection, clean workspace reopen, and a fixed workspace-scoped smoke lifecycle; exhaustive verification now collects 837 tests. Stage 5 is now the approved next stage.
The sweep workflow covers models, reference-model settings, comparison options, comparison plots, validation, execution, cancellation, and inspection handoff.
The preparation workflow covers immutable dataset or sweep sources, numeric and categorical features, targets, auxiliary and derived fields, current scenarios and partitions, transformations, canonical Parquet, optional NPY, NPZ, and SafeTensors outputs, matrix diagnostics, and optional baseline diagnostics.
Inspection presents manifests, quality flags, exclusions, provenance, leakage audits, partition summaries, correlations, singular values, rank, conditioning, and baseline metrics. Missing optional dependencies disable only the affected feature and provide exact installation guidance.
Worker-prepared scenes support dataset runs and prepared main or scenario tables.
- Points represent finite emitted rows.
- Wireframe edges connect exact adjacent coordinate levels only within compatible fluid, model, phase, and partition contexts.
- Surfaces require two independent coordinates, explicit structured-grid evidence, and one unambiguous row per coordinate pair.
- A surface cell exists only when all corners exist and share a compatible context.
- Missing and invalid rows remain gaps.
- Ambiguous duplicates, incompatible contexts, non-positive logarithmic domains, and unsupported shapes fail clearly.
- Picking maps exactly to source-row identity and provenance.
- No backend call, interpolation, smoothing, extrapolation, resampling, or silent repair is permitted.
The bounded, hashed scene representation must be reconstructible by the GUI and bridge without scientific imports in QML.
Expand the qualified bridge with render-thread-owned VTK state, scene reconstruction, rotate, pan, zoom, camera reset, standard views, axes and units, scalar legends, validated linear and logarithmic presentation, points, wireframe, surfaces, exact picking, and deterministic teardown.
The QML page selects inspection-backed sources, coordinates, scalar values, scales, representations, and filters. Unsupported surfaces receive an explicit explanation rather than an approximation.
Authoritative image export uses a short-lived worker with explicit scene, camera, dimensions, scalar mapping, and rendering settings. It writes a guarded no-overwrite PNG and sidecar; live framebuffer capture is not authoritative.
The package has one QML GUI with optional capabilities:
appinstalls the cross-platform QML application without native VTK;3dadds the native bridge to that application;- base,
viz,ml, andanalysisremain isolated.
Two packaging decisions remain open for Stage 8 review:
- whether
allremains cross-platform without3dor includes3dand becomes Linux-only; - whether native 3D initially supports only CPython 3.12 or requires bridge wheels for every Carnopy-supported Python version.
Qualification covers installed QML resources, Linux/Windows/macOS startup, Linux native build and wheel inspection, rendering, picking, resize, hide/show reconstruction, teardown, process exit, dependency isolation, optional-feature errors, security auditing, and non-destructive distribution rehearsal.
The bridge and Carnopy remain separate artifacts. Human configuration is required before any companion PyPI project, Trusted Publisher, tag, or publication. Publication order is bridge first and Carnopy second.
Before each remaining stage PR merges:
- run focused and complete gates appropriate to that stage;
- complete its recorded native/manual acceptance;
- resolve concrete high- and medium-severity findings;
- synchronize active and durable documentation; and
- mark the stage complete only after explicit maintainer acceptance.
Before final GUI-2 completion, run complete source, distribution, installed- profile, cross-platform QML, Linux-native, and manual workflow qualification; obtain an independent explicitly configured review; refresh permanent documentation from the final architecture; and delete this plan.
Manim, PyMC, SINDy, optimization, ORC/TFC workflows, mixtures, training infrastructure, deployment, additional backends, and standalone installers remain outside the current GUI-2 milestone unless separately approved.
