- packages.x86_64.desktop: 30+ packages for desktop variant (Plasma,
Firefox, VLC, LibreOffice, PipeWire). No duplicates with base list.
- build-desktop.sh: creates temp profile, merges package lists, enables
SDDM via preset + display-manager.service symlink. WORK_DIR is
mktemp-created (not caller-selected) to prevent symlink races. VERSION
copied into temp profile so profiledef.sh resolves correctly.
Cleans up both temp dirs via trap.
- CI workflow: Python AST validation (sys.argv), VERSION SSOT gate,
single make check (no double-lint).
- test_packages.sh: 15 assertions for desktop overlay (existence,
package count, no dups, Plasma/Firefox exact match, build script
structure: mktemp WORK_DIR, VERSION copy, SDDM, cleanup trap).
Codex D-grade findings fixed: symlink race (use mktemp), VERSION path
(../../VERSION not ../VERSION).
- Add VERSION at repo root (canonical) + airootfs mirror
- Refactor samios CLI, voice-bridge, installer, profiledef,
desktop-setup, PKGBUILD to derive VERSION from canonical file via
walk-up or conditional read (no embedded release-version literals)
- Makefile targets: version-set NEW=X (single file change), version-sync
- tests/test_version.sh: 55 assertions locking the invariants
Verified end-to-end:
make version-set NEW=0.3.0-rc2 → all 7 components see 0.3.0-rc2;
PKGBUILD transforms hyphen to underscore for Arch.
Codex verdict: B (0 blocking issues, shippable).