docs: tighten deployment runbooks
Some checks failed
CI / fmt, clippy, docs (push) Failing after 5s
CI / test (ubuntu-latest) (push) Failing after 5s
CI / test (macos-latest) (push) Has been cancelled
CI / test (windows-latest) (push) Has been cancelled
CI / iroh integration smoke tests (push) Has been cancelled
Security / RustSec cargo-audit (push) Has been cancelled
CodeQL / Analyze Rust (push) Has been cancelled

This commit is contained in:
Eric Wendland 2026-07-11 11:54:50 +02:00
commit 0595b39532
4 changed files with 128 additions and 13 deletions

View file

@ -6,6 +6,34 @@ on two real machines before the first broader deployment. Do not mark the Phase
10 roadmap item complete until every checkbox here has a date, platform, geth
version or commit, and evidence note.
Create one evidence directory per run and keep raw JSON, command transcripts,
and relevant redacted logs there. Do not store bearer tokens, private keys, or
unencrypted backup contents in the evidence directory. A run is reviewable only
when its evidence can be tied to the matrix and sign-off records below.
## Evidence Log
Copy this table for each attempt. Use ISO 8601 timestamps and paths or issue
links that another reviewer can open.
| Field | Machine A | Machine B |
| --- | --- | --- |
| Run ID | `<YYYYMMDD-sequence>` | `<same run ID>` |
| Started at | `<timestamp>` | `<timestamp>` |
| Platform/architecture | `<value>` | `<value>` |
| geth version/commit | `<value>` | `<value>` |
| Install method/artifact checksum | `<value>` | `<value>` |
| Fresh `GETH_HOME` | `<path or identifier>` | `<path or identifier>` |
| Command transcript | `<path or link>` | `<path or link>` |
| JSON and log evidence | `<path or link>` | `<path or link>` |
| Result | `pass` / `fail` / `incomplete` | `pass` / `fail` / `incomplete` |
Record each failed or skipped step separately:
| Timestamp | Machine | Step | Result | Evidence | Follow-up |
| --- | --- | --- | --- | --- | --- |
| `<timestamp>` | `A` / `B` | `<section and command>` | `<result>` | `<path or link>` | `<issue or action>` |
## Test Matrix
- `[ ]` Machine A platform, architecture, geth version/commit, and install
@ -80,7 +108,9 @@ On Machine A:
```sh
geth kv create prefs
geth kv set prefs theme dark
geth document create notes
geth document set notes '{"purpose":"dogfood"}'
geth cas add README.md
geth pipe listen ops
geth auth grant <worker-node-id> resource:kv:prefs kv.read --signing-key ~/.ssh/id_ed25519 --grant-id dogfood-kv-read
@ -95,22 +125,45 @@ On Machine B:
```sh
geth auth sync owner
geth kv sync owner prefs
geth kv get prefs theme
geth document sync owner notes
geth document get notes
geth cas fetch owner <hash>
geth pipe send ops "dogfood" --node owner
geth ssh proxy owner
geth sync now owner
geth sync status --json
```
Back on Machine A, verify the pipe payload:
```sh
geth pipe recv ops
```
Verify the SSH proxy with a bounded OpenSSH probe from Machine B. Replace
`<ssh-user>` with an account accepted by Machine A's local SSH service:
```sh
ssh -o BatchMode=yes -o ConnectTimeout=10 \
-o 'ProxyCommand=geth ssh proxy owner' \
<ssh-user>@owner true
```
An authentication failure after the SSH handshake is sufficient to prove byte
transport when Machine A intentionally has no matching SSH credential; record
the verbose `ssh -v` transcript. A timeout or geth authorization error is not a
successful proxy check.
Acceptance:
- `[ ]` Auth sync imports the expected grants.
- `[ ]` KV sync imports `prefs`.
- `[ ]` Document sync imports `notes`.
- `[ ]` KV sync imports `prefs` and Machine B reads `theme=dark`.
- `[ ]` Document sync imports the `{"purpose":"dogfood"}` state.
- `[ ]` CAS fetch retrieves the expected blob.
- `[ ]` Pipe send reaches the Machine A daemon-lifetime listener.
- `[ ]` SSH proxy opens only after `ssh_proxy.connect` is granted.
- `[ ]` Pipe send reaches the Machine A listener and `pipe recv` returns the
exact payload.
- `[ ]` The bounded SSH probe reaches Machine A's SSH handshake only after
`ssh_proxy.connect` is granted.
- `[ ]` `geth sync status --json` reports healthy or intentionally skipped
streams with actionable `next_action` values.
@ -186,3 +239,9 @@ Acceptance:
- `[ ]` Evidence is attached for Machine B.
- `[ ]` Phase 10 in `docs/production-readiness-roadmap.md` is marked complete
only after the real-machine evidence is reviewed.
| Role | Name | Timestamp | Run ID | Result |
| --- | --- | --- | --- | --- |
| Operator A | `<name>` | `<timestamp>` | `<run ID>` | `<result>` |
| Operator B | `<name>` | `<timestamp>` | `<run ID>` | `<result>` |
| Reviewer | `<name>` | `<timestamp>` | `<run ID>` | `approved` / `rejected` |