Skip to content

Commit 3c44cce

Browse files
committed
trusted-workload-launcher: address PR #97 review
- Shorten root README Details row - Document line-oriented config and call-a-script pattern for multi-line - Drop non-ASCII (em-dash) from launcher script comments and log line - Rewrite VERIFY.md: lead with 5-step quick path, add Mermaid diagrams, drop TIP terminology, promote compose-mounted config as the recommended production path, rewrite source provenance around Sigstore attestation (not bit-for-bit reproducibility), and re-anchor the smoke transcript on compose-hash <-> sha256(app_compose) binding from a real production Phala smoke (CVM twl-cfg-smoke-20260511-180207, deleted after capture).
1 parent 82b45dc commit 3c44cce

4 files changed

Lines changed: 193 additions & 174 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ Implementation details and infrastructure patterns.
231231
| Example | Description |
232232
|---------|-------------|
233233
| [launcher](./launcher) | Generic launcher pattern for Docker Compose apps (auto-update) |
234-
| [trusted-workload-launcher](./trusted-workload-launcher) | Tiny auditable launcher image that fetches a workload at a full upstream Git commit SHA — opposite trust posture to `launcher/` (no auto-update). The launcher image digest attests the launcher itself; the workload pin lives in a config file that must be attested via dstack `compose_hash`/`config_id` or baked into a derived image |
234+
| [trusted-workload-launcher](./trusted-workload-launcher) | Auditable launcher that pins a workload to a full upstream Git commit SHA (no auto-update). |
235235
| [prelaunch-script](./prelaunch-script) | Pre-launch script patterns (Phala Cloud) |
236236
| [private-docker-image-deployment](./private-docker-image-deployment) | Using private Docker registries |
237237
| [attestation/rtmr3-based](./attestation/rtmr3-based) | RTMR3-based attestation (legacy) |

trusted-workload-launcher/README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,23 @@ shell expansion in the parse step.
126126
| `REPO_SUBDIR` | Relative directory inside the repo to `cd` into before `INSTALL_CMD` and `RUN_CMD`. Must not be absolute and must not contain `..`. |
127127
| `CHILD_ENV_FILE` | Path to a separate env file. Each `KEY=VALUE` line is `export`ed into the environment seen by `INSTALL_CMD` and `RUN_CMD`. The file is parsed line-by-line just like the main config (not sourced). |
128128

129+
### Multi-line install or run logic
130+
131+
`INSTALL_CMD` and `RUN_CMD` are single-line shell strings — the config is
132+
line-oriented and the launcher does not implement multi-line value parsing.
133+
This is intentional: a config that "almost" parses a multi-line script is a
134+
trust hazard. If you need more than one command, put a script in the
135+
workload repo at the pinned commit (e.g. `scripts/install.sh`,
136+
`scripts/run.sh`) and call it:
137+
138+
```
139+
INSTALL_CMD=./scripts/install.sh
140+
RUN_CMD=./scripts/run.sh
141+
```
142+
143+
The script then lives at the same pinned `COMMIT_SHA` as the workload, so
144+
its bytes are covered by the same audit.
145+
129146
### What the launcher will and will not do
130147

131148
* Will: clone fresh if `WORK_DIR` is empty; reuse the existing clone otherwise

0 commit comments

Comments
 (0)