Release v0.2.0 evidence

Release: v0.2.0

Status: Completed

Source reference: unreleased at the time of writing. No annotated tag or frozen branch exists yet. Tagging v0.2.0 and creating release-v0.2.0 remain maintainer steps under section 7 of the release process.

Verification date: 2026-07-24

Required gates

GateCommandResultNotes
Fast./gate.py fast --all-compositionsPassedIncluded in the audit gate below, and run alone during PBI-062
Strict./gate.py strict and ./gate.py strict --app desktopPassedThe required completion gate for every implementation PBI, run per composition
Audit./gate.py audit --all-compositionsPassedFinal release gate, run over headless and desktop-sdl from the existing build/ tree

Release checks

Every row was produced by ./gate.py audit --all-compositions unless noted.

CheckEvidenceResultNotes
GCC build/testIncluded in audit gatePassed7 CTest cases headless, 10 desktop-sdl
Clang build/testIncluded in audit gatePassedSame suites, second toolchain
ASanIncluded in strict or audit gatePassedBoth compositions
UBSanIncluded in strict or audit gatePassedBoth compositions
CppcheckIncluded in fast, strict, or audit gatePassed62 sources analysed
Clang-TidyIncluded in strict or audit gatePassedProject code only, both compositions
Public header self-containmentIncluded in strict or audit gatePassed14 headers headless and 19 desktop-sdl, GCC and Clang
Core boundary symbolsIncluded in strict or audit gatePassedGCC needs nothing external, Clang needs memcpy and memset in 2 objects each, and no Core compile line names a forbidden dependency
Include boundaryIncluded in fast, strict, or audit gatePassedboundaries.py, 3 boundaries hold over 47 scanned source files
Asset manifest and runtime layoutIncluded in fast, strict, or audit gatePassedassets.py, 1 asset set with 5 manifest references resolving under the build output
Runtime allocation probeIncluded in audit gatePassed0 allocations, 0 memory errors, both compositions
CoverageIncluded in audit gatePassedMeasures src only
ValgrindIncluded in audit gatePassedAllocation probe and test suite report 13 framework allocations and 0 errors
Composition selectionpython3 tools/tests/test_compositions.py and CMake valid/invalid pairsPassed31 composition tests, and the registry rejects an unknown or incompatible pair before configure
Desktop process scenariopet_desktop_scenarioPassedDummy-driver lifecycle plus a real-driver frontend failure path
Support matrixpython3 tools/verify/matrix.pyPassedRelease-time step rather than a gate step

Coverage

TargetLine coverageBranch coverageNotes
Pet Core100.0%100.0%143/143 lines, 94/94 branches, measured over src in both compositions, from _reports/coverage

The desktop app, the SDL frontend, and the shared components are exercised by their own CTest suites rather than by the Core coverage figure, which measures src alone.

Desktop runtime evidence

Taken from build/linux-gcc-debug-desktop-sdl as the working directory.

CommandResultKind
./apps/desktop/pet_desktop --steps 240 --step-ms 16Exit 0, name=Pixel activity=idle expression=neutral frames=240 canvas=320x240 assets=loaded images=5 on the real Wayland driverAutomated process
SDL_VIDEODRIVER=x11 ./apps/desktop/pet_desktop --steps 240 --step-ms 16Exit 0, same reported line on the real X11 driverAutomated process
pet_desktop observed by the maintainer on Wayland and X11The window with the pet drawn in it, a visible greet response to the space key and the left mouse button, and a clean exit through the window close button and Ctrl-CManual observation

The manual row is the only evidence for visible rendering and synthesised interaction, because no automated check covers either. That gap is recorded as LIM-011 and has to be repeated by hand for every release.

Support status

EnvironmentStatusNotes
Linux GCCVerifiedBuilt and tested, GCC 15.3.0, plus the real-driver desktop runs
Linux ClangVerifiedBuilt and tested, Clang 22.1.8
Windows MSVCDesignedPresets provided but never executed. The symbol scan and the allocation check cannot run there at all, see LIM-001 and LIM-002
EmbeddedDesignedNo cross compilation or embedded build attempted, so no runtime claim is made, see LIM-012

Verified toolchain

ToolVersion
CMake4.3.4
Ninja1.13.2
GCC15.3.0
Clang and clang-format22.1.8
Cppcheck2.21.0
Gcovr6.0
Valgrind3.27.1
GNU nm2.45.0
Python3.13.13

The verification host was Linux x86_64. tools/verify/matrix.py prints this set from the environment it runs in. The same set is recorded in section 10.5 of the version architecture.

Notes

  • The project version in CMakeLists.txt is 0.2.0, and pet_version_string returns it through the generated pet/version.h.
  • No check required for the release failed or was skipped. The unavailable Windows checks and the absent embedded build are recorded as unavailable rather than passing, and neither environment is required for this release.
  • The full claim-to-evidence mapping is in section 10.5 of the version architecture.
  • This evidence is valid for the commit that will be tagged v0.2.0. If any source changes before tagging, the final required gate must run again against the exact commit to tag.
  • Future fixes require a new commit and a patch release tag, such as v0.2.1.