Skip to main content

Operations

Build

dotnet build .\AptDiskwright.slnx -c Release

cmake -S .\engine -B .\engine\build
cmake --build .\engine\build --config Release

Test

Tests are non-destructive by contract — they run against disposable VHD/VHDX fixtures and must never select a physical disk:

$env:APTDISKWRIGHT_TEST_ENGINE = "$PWD\engine\build\Release\AptDiskwrightEngine.exe"
dotnet run --project .\AptDiskwright.Tests\AptDiskwright.Tests.csproj -c Release

Per the analyzer's evidence, the current build passes 7/7 non-destructive tests.

Run the client

dotnet run --project .\AptDiskwright.vbproj

The client runs unelevated. Privileged operations only happen through the named-pipe connection to the engine service.

Safety boundaries (from AGENTS.md, verbatim rules)

  • Never identify a destructive target by drive letter alone.
  • Never bypass preview, refreshed inventory, validation, and explicit confirmation.
  • Keep the WPF client unelevated; privileged operations stay behind the authenticated named-pipe service.
  • Automated tests must use disposable VHD/VHDX fixtures and must never select a physical disk.
  • Physical-disk mutation and live migration remain disabled until disposable-VHD and bootable-VM qualification is complete.
  • Plans and evidence live under %ProgramData%\Aptlantis\AptDiskwright.

Installer / release bundling

.\installer\build-release.ps1

Assembles a release bundle and produces SHA256SUMS.txt. If a certificate thumbprint is supplied, build-release.ps1 can sign artifacts; otherwise an unsigned-artifact warning is emitted. install-engine.ps1 and uninstall-engine.ps1 handle installing/removing the privileged Windows service — this requires elevation.

Data locations

All plans, inventory snapshots, and execution session/checkpoint records are written as atomic, durable JSON under:

%ProgramData%\Aptlantis\AptDiskwright\
plans/ <-- schema-versioned plan JSON manifests
inventory/ <-- inventory snapshot JSON
sessions/ <-- execution session + checkpoint JSON