Two non-blocking wake-canon adoption gaps surfaced by the dragon-lin pilot in
the A10 component installer (wake-install.sh). Both fixes are ADDITIVE per #869:
framework-manifest.txt ownership, the install-ordering-guard, and the bash/TS
manifest parity contract are all UNCHANGED.
(a) DEP-CHECK — wake-install.sh sourced the shared framework-manifest reader
(_lib/manifest.sh) unconditionally, so an older host seed that predates that
helper aborted with a bare, obscure `source: No such file or directory`. It now
checks the library FIRST and FAILS LOUD naming the missing file + the remedy
(re-seed the framework, then retry --component wake). The dependency is genuinely
required (Gate A cannot be skipped on an enforcement path), so it fails loud
rather than degrading.
(b) SYSTEMD SEARCH PATH — wi_install copies mosaic-wake.service under mosaic
home (systemd/user/, framework-owned) but `systemctl --user` searches
~/.config/systemd/user/, so the unit was invisible and could not be
enabled/started. install now LINKS the unit into the user systemd search path
(symlink -> the mosaic-home SSOT copy, so upgrades propagate) and post-install
VALIDATES it resolves (search-path entry exists, dereferences to a readable,
well-formed unit; an opportunistic `systemctl --user cat` probe runs only behind
a guard, since the installer may run where no user manager is live). Both steps
are idempotent (a re-install neither duplicates nor breaks the link). #869
ADDITIVE: the link target lives OUTSIDE mosaic home, so it is not a
framework-manifest path — ownership of the SSOT unit stays systemd/** in the
single framework-manifest.txt authority; NO new owned path, NO second authority.
Red-first: test-wake-install.sh gains I9 (a: missing _lib/manifest.sh fails loud
naming dep + remedy, not a bare source error; positive control installs) and I10
(b: install links the unit into the search path + validate resolves; negative
control catches a not-in-path unit; idempotent re-install). Both go RED against
the prior code and GREEN after. Wake component manifest.txt bumped 0.6.6 -> 0.6.7
(VERSION metadata only).
Closes#913
Part of #892
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0158NZqN2n2ymKFeJAZ4GUCb