Files
vdm/docs/agents/AGENT-PKG-QA.md
T
samiandClaude Sonnet 5 99b429abfa pkg: fix qt6 svg dev package name — libqt6svg6-dev has no 26.04 candidate
`apt-cache policy libqt6svg6-dev` is "Candidate: (none)" on 26.04; the package
that carries the Svg headers and Qt6SvgConfig.cmake is qt6-svg-dev. Since
gui/CMakeLists.txt landed on main the root build's
find_package(Qt6 ... Svg REQUIRED) is live, so a clean 26.04 box could not
configure the project at all. Same name in README.md and AGENT-PKG-QA.md.

Reported in gui/docs/pkg-qa-requests-m1.md R1.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_0143aKiohmDiyefJBwHDJJqw
2026-09-10 14:58:10 +04:00

3.6 KiB
Raw Blame History

Agent brief — PKG/QA (build, packaging, test infrastructure)

Starts in M0 alongside PROTO. You unblock everyone else and you own the release.

You own

packaging/**   .github/workflows/**   tools/testserver/**   tests/integration/**   tests/e2e/**
CMakeLists.txt   CMakePresets.json   .clang-format   .clang-tidy   .editorconfig   .gitignore

Do not write feature code in any lane's directory.

M0 — unblock the lanes (do these first, in this order)

  1. Toolchain scripttools/bootstrap.sh installing the apt list in the README, verified on a clean 26.04 VM. The dev machine already has git 2.53, CMake 4.2.3, g++ 15.2, ninja, Qt 6 dev, libcurl, SQLite, nlohmann-json and ffmpeg; only qt6-svg-dev, libsecret-1-dev, nodejs/npm and (optionally) clang are missing. The script must still install the full list for clean machines. ⚠ CMake 4.x rejects cmake_minimum_required below 3.5 — check every dependency.
  2. CMake — top-level CMakeLists.txt + CMakePresets.json with presets: dev (Debug + ASan/UBSan), tsan, release (RelWithDebInfo + LTO), ci. Ninja, C++23, -Wall -Wextra -Werror.
  3. tools/testserver — the hostile HTTP server every lane tests against. Modes, each toggleable by URL path or flag: no-range · lies-about-accept-ranges · etag-changes · flaky-reset · slow-loris · redirect-chain · 401-basic · 401-digest · 403-without-referer · 416-always · content-length-mismatch · expiring-signed-url · throttled · chunked-no-length · utf8-content-disposition · legacy-content-disposition. CORE's definition of done is written in terms of this server, so it must exist first.
  4. CI — GitHub Actions: build matrix (gcc + clang), unit tests, ASan/UBSan/TSan jobs, clang-format --dry-run -Werror, clang-tidy, web-ext lint, and conformance as a required check on every PR.

M1M5 — keep it honest

  • Nightly integration run: real veloxd + testserver, 50 concurrent downloads, assert checksums and zero leaked FDs.
  • tests/e2e/ with Playwright: real Firefox + real daemon + a real file on disk.
  • 72-hour soak job (M7 gate): 500 queued tasks, memory and FD graphs must be flat.
  • tools/bench results published per commit so a performance regression is visible the day it lands, not in M7.

M6 — packaging

  • .deb (primary): veloxd, velox-gui, velox, velox-nmhost, desktop entry, systemd user units, icons, man pages, and native-messaging manifests installed to /usr/lib/mozilla/native-messaging-hosts/ plus a postinst that also drops the per-user snap and flatpak copies where applicable. lintian clean. Publish via PPA.
  • Flatpak (secondary): note that the sandbox changes the native-messaging story again — test it, don't assume it.
  • AppImage (optional): if you bundle Qt, bundle it as shared objects and honour LGPLv3 relink requirements (docs/06 R5).
  • AMO: signed XPI, reproducible build script, permission justification from EXT.
  • Uninstall test: removes manifests, units, and sockets; leaves user data alone unless purged.
  • Upgrade test: install N-1, create tasks, upgrade, confirm the DB migrates and in-flight .veloxpart files still resume.

Definition of done

  • One command builds everything from a clean checkout on a clean 26.04 VM.
  • CI red on: format, tidy, sanitizer failure, conformance failure, web-ext lint failure.
  • A fresh VM can install the .deb, install the extension, and complete the M2 vertical slice with snap Firefox — no manual steps beyond clicking "Allow" once at pairing.