plans: Console service follow-ups brief from row 75 review (N1-N5)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,68 @@
|
|||||||
|
# Console service follow-ups from row 75's review (2026-10-11)
|
||||||
|
|
||||||
|
Status: written by Sage, lead. It follows `docs/plans/BRIEF-TEMPLATE.md`.
|
||||||
|
Filbert approved row 75 round 1 (comment 27430 on #1569) with five
|
||||||
|
non-blocking notes. Sage placed them in one row after the cutover, so the
|
||||||
|
service lands on the 10-12 date.
|
||||||
|
|
||||||
|
## Console service hardening
|
||||||
|
|
||||||
|
### Problem
|
||||||
|
|
||||||
|
`scripts/webui-service.sh` (row 75) works as briefed, but the review
|
||||||
|
found five gaps:
|
||||||
|
|
||||||
|
- N1: `install` doesn't refuse while the unit is active. The unit's next
|
||||||
|
`Restart=on-failure` then runs the new ExecStart without Jason starting
|
||||||
|
it. Any process under Jason's user can already change the code the unit
|
||||||
|
runs. Q95 accepted that limit for the PoC, so N1 opens no new gap. But
|
||||||
|
replacing the running unit should still be Jason's act, as starting it
|
||||||
|
is.
|
||||||
|
- N2: the unit's paths come from the checkout the script runs from, so an
|
||||||
|
install from a worktree points the unit at the worktree. No doc says to
|
||||||
|
install from the canonical checkout.
|
||||||
|
- N3: `uninstall --no-reload` skips the active check, as `bus-service.sh`
|
||||||
|
does, while the docs say uninstall always refuses while active.
|
||||||
|
- N4: if `systemctl --user list-units` fails, the script exits 1 with no
|
||||||
|
message.
|
||||||
|
- N5: the `--allow-user` value has no check that it starts with a letter
|
||||||
|
or digit.
|
||||||
|
|
||||||
|
### Owner and reviewer
|
||||||
|
|
||||||
|
Owner: Rocko. Reviewer: Filbert. Rocko has no Gitea token; Sage runs the
|
||||||
|
review request as jarvis.
|
||||||
|
|
||||||
|
### Files owned
|
||||||
|
|
||||||
|
- `scripts/webui-service.sh`
|
||||||
|
- `packages/webui/tests/service.test.mjs`
|
||||||
|
- `docs/TOOLS.md`, the script's entry only
|
||||||
|
- `agents/rocko/work/queue-<row>/`
|
||||||
|
|
||||||
|
### What ships
|
||||||
|
|
||||||
|
- `install` refuses while the unit is active, and its message says Jason
|
||||||
|
stops it first. A test uses a stand-in `systemctl`.
|
||||||
|
- `install` refuses when the script isn't in the canonical checkout,
|
||||||
|
meaning the repository root has a `.git` directory, not a worktree's
|
||||||
|
`.git` file. `--allow-worktree` overrides the refusal for tests. The
|
||||||
|
TOOLS.md entry says to install from the canonical checkout.
|
||||||
|
- `uninstall` checks for an active unit even with `--no-reload`, or the
|
||||||
|
docs say exactly when it doesn't. Rocko picks one and the test shows
|
||||||
|
it.
|
||||||
|
- A failed state read prints one line to stderr naming the failed
|
||||||
|
`systemctl` call.
|
||||||
|
- `--allow-user` and the other values must start with a letter or digit.
|
||||||
|
Tests cover the two leading-character checks that the row 75 mutants
|
||||||
|
left untested.
|
||||||
|
|
||||||
|
### Out of scope
|
||||||
|
|
||||||
|
Starting, stopping or enabling the unit. Any `src/` change. The bus
|
||||||
|
service script.
|
||||||
|
|
||||||
|
### Gate
|
||||||
|
|
||||||
|
Filbert approves on the row's issue naming the candidate manifest. The
|
||||||
|
webui node suite and every `scripts/test-*.sh` green on Sage's gate rerun.
|
||||||
Reference in New Issue
Block a user