Commit Graph

5 Commits

Author SHA1 Message Date
mosaic-coder
a41662f033 test(wake): I14 blank-reset assertion BusyBox-grep-portable (grep -z unsupported on Alpine CI) + portability sweep
All checks were successful
ci/woodpecker/pr/ci Pipeline was successful
#931 CI (node:24-alpine, musl/BusyBox) went RED: the I14 blank-reset assertion
used `grep -qz` (NUL-data), a GNU-only extension BusyBox grep does NOT support
(its option list is -HhnlLoqvsrRiwFE -m -A -B -C -e -f — no -z). BusyBox grep
printed usage + exited non-zero, tripping `|| fail_msg`. Passed locally only
because GNU grep has -z. Toolchain-divergence class (cf. #912, BusyBox sed).

Fix (test-only; product drop-in is correct, verify-single already proves
exactly-one): assert the blank-reset FORM portably — `grep -A1 '^OnUnitActiveSec=$'
| grep -qx 'OnUnitActiveSec=30min'` still requires the empty reset line
IMMEDIATELY followed by the value, and still catches the negative control. Also
simplified a sibling `grep -qi 'EXACTLY ONE\|exactly one'` to `grep -qi 'exactly
one'` (drop the BRE alternation; -i already covers case).

Sweep of all packages/mosaic/framework/tools/wake/test-*.sh for BusyBox-
incompatible constructs (grep -z/-P, sed \xNN/\b/-i, gawk-isms, date -d/%N):
the only #931-introduced defect was this one. Verified in the real Alpine image
(node:24-alpine, BusyBox v1.37.0): all 9 wake harnesses + full test:framework-
shell green under BusyBox with CI=woodpecker (openssl present, I8 HMAC leg runs).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0158NZqN2n2ymKFeJAZ4GUCb
2026-07-26 08:33:36 -05:00
mosaic-coder
8de52b7b59 fix(wake): #925 framework-ship canon fallback-wake (systemd timer + schema bound + A10 install/validate) — F7 out of the box
Some checks failed
ci/woodpecker/pr/ci Pipeline failed
Framework-ship the canon-side FALLBACK WAKE (F7 replacement-before-retirement)
so hosts get it out of the box instead of hand-wiring it per host. ADDITIVE;
honors #869 / Gate A/B discipline.

1. New framework units systemd/user/mosaic-wake-fallback.{timer,service}: a
   low-frequency SAFETY drain (oneshot service running the canon drain
   `digest.sh render --from-store`) fired by a per-class cadence timer,
   INDEPENDENT of the event-driven detector, so a stalled detector/daemon can
   never silently starve delivery. Owned via the existing `systemd/**` glob in
   framework-manifest.txt (Gate A) — no new owned path, no second authority.
2. Optional additive per-class `fallback_cadence` bound in
   wake-watch-list.schema.json (config, not code). Backward-compatible within
   schema_version 1, so [schema_min, schema_max] stays [1,1] and the detector's
   Gate B range check is unchanged.
3. A10 wake-install.sh enumerates + links + validates the two units into the
   user systemd search path (idempotent, fail-closed); write-fallback-cadence
   writes the per-class cadence as a blank-reset drop-in (exactly one
   effective OnUnitActiveUSec).
4. F7 install-validate: the §5 legacy reap now REFUSES unless the canon
   fallback wake is proven live (installed + schedulable floor always; enabled
   + proven-firing when a live user manager is probeable, mirroring #913).

Red-first: test-wake-install.sh I11 (F7 reap-refuses-without-live-fallback),
I12 (stalled detector still drains), I13 (install links+validates units),
I14 (per-class cadence blank-reset = exactly one); test-wake-detector.sh D9
(optional fallback_cadence in-range accepted; out-of-range still fails loud).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0158NZqN2n2ymKFeJAZ4GUCb
2026-07-26 08:07:03 -05:00
0ea41e848b fix(wake): #913 installer adoption gaps — _lib dep-check fail-loud + mosaic-wake.service systemd-search-path link+validate (#930)
All checks were successful
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com>
Co-committed-by: jason.woltje <jason@diversecanvas.com>
2026-07-26 12:37:29 +00:00
712c770b7a fix(wake): #912 exercise the digest/HMAC trust suite in real CI (fix runner divergence + openssl + hard-require) (#921)
All checks were successful
ci/woodpecker/push/ci-image Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com>
Co-committed-by: jason.woltje <jason@diversecanvas.com>
2026-07-26 08:11:28 +00:00
2378665eaf feat(wake): W7 A10 idempotent installer + mosaic-wake.service (component-manifest, Gate-A, blank-reset retire, snapshot-guard, fail-closed install-validate) (#911)
All checks were successful
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: jason.woltje <jason@diversecanvas.com>
Co-committed-by: jason.woltje <jason@diversecanvas.com>
2026-07-26 04:19:09 +00:00