docs(appliance): correct the appliance docs against the shipped code - #867
Conversation
|
Second commit pushed: six comments in the shipped image still named Rugix as current tooling.
The updater-agnostic design intent is real and is kept; only its attribution moved. Comments only, no build change. One deliberately left alone: |
|
Third commit: Continue-on-error is the correct design here and is the repo's own stated standard ("continue-on-error to collect the whole matrix", Caught because I had propagated the same claim into the |
A quality pass over the appliance work found the docs describing a system that no longer exists in several places. The code is the source of truth, so the docs move. - tests/os/README.md documented `rugix-ctrl`, an image path build-image.sh does not produce, and two of the harness's five phases — with a Status section saying the update phase does not work. Rewritten against run.sh as it stands, plus the verify-image.sh gate it never mentioned. - os/KNOWN-ISSUES.md's battery counts named three phases and the wrong update figure. Its stick/disk label-collision bullet is resolved — pithead-mount- generator resolves both mounts from the booted disk's partition numbers — so it leaves a list of open issues; the invariant it protected is already the generator's own header comment. - dual-distribution-plan.md's decision table, channel table, appliance architecture, reset tiers and repo tree still named Rugix, which the 2026-07-25 bake-off replaced with RAUC. The bake-off appendix is history and keeps its Rugix prose; only current-state claims moved. - os/rauc/mkimage.sh pointed at pithead-dataprep.service, which does not exist. systemd-repart seeds the /var overlay dirs via repart.d/40-data.conf. - docs/appliance.md never mentioned that the appliance arms the hardware watchdog and pins the performance governor — both operator-visible. Also drop tests/os/run.sh's _gen_certs and CERT_DIR: dead since signing moved into mkbundle.sh/populate-slot.sh, with zero call sites. And shellcheck os/overlay/pithead-mount-generator, a shipped script no lint target covered. No behavior change. make lint-sh, lint-md and lint-docs-voice pass; the pithead shell suite is 2016/0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Six comments in the shipped image still told a maintainer the artifact goes to Rugix Bakery. The Dockerfile header named it as the consumer of the tarball (os/rauc/mkimage.sh is), the updater note said rugix-ctrl arrives via a bakery recipe, the test-hook note said the harness drives rugix-ctrl (it drives rauc), and the file's last line claimed the updater lands via bakery recipes rather than the apt install eight lines above it — that one is just deleted. The updater-agnostic design intent is real and kept; only its attribution moved. Comments only, no build change. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… the first fault run.sh's header claimed "Exit non-zero on the first failed assertion". `bad()` increments FAIL and returns; the script runs every phase and exits non-zero at the end. Continue-on-error is the deliberate behaviour — it is the repo's own testing standard, one bench boot collecting the whole matrix — so the comment was describing the wrong design, not a missing one. Caught while rewriting tests/os/README.md, which had inherited the same claim. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
15fe026 to
fcb9184
Compare
|
Rebased onto the current
Re-verified on the rebased branch: The one CI failure on the previous push was infrastructure, not this change: |
Quality pass over the appliance work merged to
develop-v2in the last day, across three axes: testing, documentation accuracy, and concise code. This PR carries only the safe mechanical fixes. Everything needing judgment is in the report / filed as issues.What this fixes
Docs that disagree with the code (repo rule: fix the doc)
tests/os/README.md— documentedrugix-ctrl, an image pathos/build-image.shdoes not produce (it claimedos/bakery/build/…/system.img; the script emitsos/build/pithead-root.tar, and the bootable image comes fromos/rauc/mkimage.sh), and two of the harness's five phases. Its Status section still said the update phase was an open leg that "fails loudly" —os/KNOWN-ISSUES.mdrecords it green. Rewritten againstrun.shas it stands, plus theverify-image.shgate it never mentioned.os/KNOWN-ISSUES.md:5— battery counts said "boot 3/3, update 11/11 and fault 11/11": the wrong update figure and three of five phases. Now matches the maintained per-phase table inappliance-release.md, and links to it rather than re-stating it.os/KNOWN-ISSUES.md— the stick/disk label-collision bullet claimed/dataand the ESP are still mounted by LABEL from a static fstab.os/overlay/pithead-mount-generatorsupersedes that: it resolves both mounts from the booted disk's partition numbers. Every sibling bullet in that file is genuinely open, so the resolved one is dropped; the invariant it protected is already the generator's own header comment.docs/dev/dual-distribution-plan.md— the decision table, channel table, appliance-architecture bullet, reset tiers and repo tree still named Rugix, which the 2026-07-25 bake-off in that same document replaced with RAUC. Only current-state claims moved; the bake-off appendix is a historical record and keeps its Rugix prose. The repo tree also showed anos/bakery/that never shipped.os/rauc/mkimage.sh:110— pointed atpithead-dataprep.service, which does not exist anywhere inos/. The/varoverlay directories are seeded by systemd-repart at format time viaos/rootfs/repart.d/40-data.conf.docs/appliance.md— the appliance arms the hardware watchdog (RuntimeWatchdogSec=20s) and pins theperformanceCPU governor on every boot, whether or not you mine. Both are operator-visible and were undocumented; the only governor mentions in the docs were RigForge's miner tuning.Dead code
tests/os/run.sh—_gen_certsandCERT_DIR, zero call sites. Vestigial since signing moved intomkbundle.sh/populate-slot.shwith the explicit-key custody rule. A sweep of every shell function defined acrosspithead,os/**andtests/os/**found this as the only dead one, and no dead Python or JS.Lint gap
os/overlay/pithead-mount-generatoris a shipped/bin/shscript that no lint target covered. Added tolint-sh; it was already clean.Not in this PR
No behavior was refactored and no test was restructured. Filed separately: the untested fail-closed paths in
install.sh, and the appliance's absence from the four-tier map indocs/dev/testing-strategy.md.Verification
make lint-sh,make lint-md,make lint-docs-voice,make lint-operator-stringspass.make test-stackis 2016 passed / 0 failed.tests/os/run.shneeds KVM and was not run; it is syntax-checked and the deletion has no callers.🤖 Generated with Claude Code