Repository navigation
Conversation
The production compose sets root_source = env and mode = off and takes the root key from the sealed environment; the deploy maps the new production secret, refuses a malformed key before the sealed file is written, and the preflight validates it. Compose comments are ASCII-only for the strict compose reader; the N0 template hash, its fixture and docs move together. Draft: not for merging before the switch-on gates.
samgbafa
force-pushed
the
skgbafa/tc-887-r9-deploy-wiring
branch
from
November 8, 2026 00:15
82fc22c to
ce47dc8
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TC-887. Draft, not for merging. This PR prepares the deploy for an at-rest root from the environment (base: #515). It stays a draft until the switch-on prerequisites tracked on TC-887 are met, and it will be rebased onto the top of the at-rest stack before then.
What
docker-compose.dstack-postgres.yaml:TINYCLOUD_AT_REST__ROOT_SOURCE: envandTINYCLOUD_AT_REST__MODE: "off"as literals in the measured compose, andTINYCLOUD_AT_REST_ROOT_KEY: "${AT_REST_ROOT_KEY:?…}"from the sealed environment;mode = "off"the node provisions and checks the keys (fingerprint in/at-rest/status) without encrypting. Turning encryption on is a later, reviewed one-line change to"encrypt".docker.ymldeploy:productionsecretPROD_TINYCLOUD_AT_REST_ROOT_KEYas a required input;^[A-Za-z0-9+/]{43}=$with a constant message, before.phala-prod.envis written;AT_REST_ROOT_KEY;ROOT_SOURCE=env, to--validate-config(feat(TC-887): node wiring for at-rest keys, with a root from the environment #515 makes that check the key).6cc584f6…, raweef0594d…), its byte-identical fixturescripts/ci/fixtures/tc959-n0-compose.yaml,docs/releasing.mdand CHANGELOG move together.scripts/ci/test-deploy-recovery.pydeploys with a valid key, checks the key never reaches logs, and adds a refusal test for malformed keys;production_compose_passesis back;Before this can deploy
root_source = "env"in a TEE while the measured app-compose allowsDSTACK_AUTHORIZED_KEYS, or on a non-production OS image (feat(TC-887): node wiring for at-rest keys, with a root from the environment #515). The SSH-key provisioning and the image must change first.productionenvironment. OnceAT_REST_ROOT_KEYis in the CVM'sallowed_envs, it must stay present on every deploy and rollback.Verification
python3 scripts/ci/test-deploy-recovery.py: 31 tests OK.bash scripts/ci/test-phala-os-guard.sh: passed.cargo test --locked -p tinycloud-at-rest-escrow production_composecargo test --locked -p tinycloud-node --lib -- at_rest::tests