| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .. | ||
| hololake-release-broadcast.service | ||
| operator.mjs | ||
| README.md | ||
| server.mjs | ||
HoloLake release broadcast candidate
This is the HoloLake-owned, loopback-only origin for signed update broadcasts. It has no upstream software feed and never uploads or activates a release.
Without ACTIVE.json, /health reports EMPTY_FAIL_CLOSED and /latest.json
returns HTTP 204, the updater protocol's explicit no-update result. An active
release is accepted only when the human activation record, immutable broadcast,
pipeline receipt, package bytes, Developer ID receipt, and Apple notarization
receipt form one exact evidence chain. Invalid evidence locks the whole release
endpoint until an operator fixes the evidence and explicitly restarts the
service.
The service listens only on 127.0.0.1. Public HTTPS routing, updater trust-key
provisioning, artifact upload, activation, and desktop rollout are independent
deployment gates.
operator.mjs supplies the separate, root-operated verification and activation
boundary. verify reconstructs a private candidate tree and accepts it only when
the broadcast, pipeline receipt, package bytes, Developer ID receipt, Apple
notarization receipt, and exact human approval all agree. activate additionally
requires the operator to repeat the expected release id, version, source commit,
and broadcast SHA-256. It copies only referenced immutable artifacts, commits
ACTIVE.json atomically, and reports that an explicit service restart is still
required. It never uploads, activates, or restarts on its own.
node operator.mjs verify \
--source /secure/release/out/0.2.0 \
--human-approval /secure/approvals/0.2.0.json
sudo node operator.mjs activate \
--source /secure/release/out/0.2.0 \
--human-approval /secure/approvals/0.2.0.json \
--state-root /var/lib/guanghu/hololake-release-broadcast \
--expect-release-id GH-HOLOLAKE-RELEASE-0.2.0 \
--expect-version 0.2.0 \
--expect-source-commit 0000000000000000000000000000000000000000 \
--expect-broadcast-sha256 0000000000000000000000000000000000000000000000000000000000000000
The zeros above are placeholders, not deployable values. A real activation must
use the exact facts printed by verify and a separately issued human approval.