vrek: targets for the npm and Debian packaging goals

Each is met by one check on a clean machine: installed, running, with a
camera visible.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Michael Mainguy 2026-09-19 18:42:49 -05:00
parent 47b5759ae3
commit 6b0f093248

View File

@ -1020,3 +1020,7 @@
{"id":"evt-rrzrjptdf3j5","type":"node.created","subject":"gol-9jctv92","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"goal","title":"Publish a Debian package so the app installs and runs as a service","body":"apt install puts this app on a Debian or Ubuntu machine as a proper service: it starts at boot, runs as its own unprivileged user, keeps its data under /var/lib, its configuration under /etc and its logs in the journal. Priority 1. User's answer 2026-09-19: whether the package also carries MediaMTX, or leaves it to the existing first-run download, is to be decided during the work; carrying it means shipping someone else's binary and the licence and update questions that brings, while leaving it out means an install needs network access before video works.\n\nTo settle while doing it: which distributions and architectures; how Node itself is required or bundled; the systemd unit and its hardening; where the admin file, credential key and recordings live, and how the first-run setup is presented on a headless box; how the package is built and signed, and whether it is hosted in our own apt repository or only as a downloadable .deb; and upgrade and removal behaviour, in particular never deleting recordings or credentials on purge without asking.","status":"active","owner":null,"attrs":{},"weight":1,"target":null,"direction":"up","unit":null},"at":"2026-09-19T23:41:01.632Z","parents":["evt-p1911nv9h5nq"],"hash":"a9d0b5605659f5265496f45774ec7b7e5776a9e29c735cf369c45ec5fec0b2a5"}
{"id":"evt-5b1wcbrf4411","type":"edge.added","subject":"gol-9jctv92","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"upholds","from":"gol-9jctv92","to":"pri-mz2jxpb"},"at":"2026-09-19T23:41:01.633Z","parents":["evt-rrzrjptdf3j5"],"hash":"c53d7214e3e7d2a70bd86fab75b51369d756926190d52240b7516abe37483244"}
{"id":"evt-zessfejcj4fd","type":"edge.added","subject":"gol-9jctv92","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"upholds","from":"gol-9jctv92","to":"pri-tyrxdz9"},"at":"2026-09-19T23:41:01.634Z","parents":["evt-5b1wcbrf4411"],"hash":"364c55ab00f531f860f4d30fd5a2cd3ccbc7bc1e76caf607318a9370f57deb1c"}
{"id":"evt-hfez48y4kc4k","type":"node.updated","subject":"gol-k56hc69","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"patch":{"target":1,"direction":"up","unit":"check"}},"at":"2026-09-19T23:42:23.463Z","parents":["evt-zessfejcj4fd"],"hash":"504f66dc11fa0441ad3aa7f8670d369fa36821026d6ac493bd4e6a27a0565221"}
{"id":"evt-3e3qc35ee2ck","type":"node.updated","subject":"gol-9jctv92","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"patch":{"target":1,"direction":"up","unit":"check"}},"at":"2026-09-19T23:42:25.670Z","parents":["evt-hfez48y4kc4k"],"hash":"0a4effde1d59c92963de889b3caf29aa71c7be5a1be526b3a223be0b74dce146"}
{"id":"evt-v71kqfm3x5ex","type":"node.updated","subject":"gol-k56hc69","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"patch":{"body":"Someone with Node installed can run this dashboard with a single command, e.g. npx cameras or a global install with a cameras start entry point, and get discovery, live video, recording and settings without git or a build step. User's answer 2026-09-19: the whole runnable app, not a library; a library split can come later if the lib layer's shape settles. Priority 1.\n\nTarget: 1 check — the published package installed and run on a machine that has never held this repo, reaching a working dashboard with a camera visible. Recorded as a measurement once the user has seen it.\n\nWhat this forces us to settle: what ships (a built .next output plus server, rather than sources); the package name, licence and whether it is scoped; how the app finds its data, since .data and recordings currently sit in the working directory and a globally installed tool needs a sensible location and environment overrides; how MediaMTX is obtained, since the installer downloads a pinned binary and npm install scripts are often disabled, so it likely belongs in a first-run step with a clear message rather than postinstall; the admin setup flow for someone who has never seen the repo; Node version support; and how upgrades work. Nothing here changes what the app does, so the risk is in packaging decisions rather than features."}},"at":"2026-09-19T23:42:34.303Z","parents":["evt-3e3qc35ee2ck"],"hash":"11e8cb932f0c54497592dad92186852433cfccb4a7054a7268c99ac1309320bd"}
{"id":"evt-64tn42sjy299","type":"node.updated","subject":"gol-9jctv92","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"patch":{"body":"apt install puts this app on a Debian or Ubuntu machine as a proper service: it starts at boot, runs as its own unprivileged user, keeps its data under /var/lib, its configuration under /etc and its logs in the journal. Priority 1. User's answer 2026-09-19: whether the package also carries MediaMTX, or leaves it to the existing first-run download, is to be decided during the work; carrying it means shipping someone else's binary and the licence and update questions that brings, while leaving it out means an install needs network access before video works.\n\nTarget: 1 check — the .deb installed on a clean Debian or Ubuntu machine, the service running after a reboot, and the dashboard reachable with a camera visible. Recorded as a measurement once the user has seen it.\n\nTo settle while doing it: which distributions and architectures; how Node itself is required or bundled; the systemd unit and its hardening; where the admin file, credential key and recordings live, and how the first-run setup is presented on a headless box; how the package is built and signed, and whether it is hosted in our own apt repository or only as a downloadable .deb; and upgrade and removal behaviour, in particular never deleting recordings or credentials on purge without asking."}},"at":"2026-09-19T23:42:38.048Z","parents":["evt-v71kqfm3x5ex"],"hash":"712092551f720619100d0aba39c57c0d42b5e39574d34106eb26be204dba4bad"}