Skip to content

docs(deployment): operator runbook (BLEU-836)#17

Merged
brunota20 merged 1 commit into
dev/m3-basefrom
docs/deployment-guide-bleu-836
Jun 24, 2026
Merged

docs(deployment): operator runbook (BLEU-836)#17
brunota20 merged 1 commit into
dev/m3-basefrom
docs/deployment-guide-bleu-836

Conversation

@brunota20

Copy link
Copy Markdown

Summary

New `docs/deployment.md` aimed at operators (not module authors). Branched from `dev/m3-base` directly — independent of the shepherd-sdk stack (#12#16) so reviewers can land it in parallel.

Sections

  • What an operator runs (engine + engine.toml + .wasm + state_dir)
  • `engine.toml` reference — every section / field, ws vs http invariants on `[chains.]`, fuel + memory caps on `[engine.limits]`, forward note that `[[modules]]` lands with BLEU-818 supervisor PR
  • Building module `.wasm` artefacts (rustup target + cargo build + size sanity)
  • Local runs (`cargo run -p nexum-engine -- <module.toml>` + RUST_LOG hints)
  • Docker (sketched Dockerfile pointing at the proper BLEU-X18 milestone)
  • Observability — RUST_LOG patterns, `/metrics` forward reference, suggested Grafana panels
  • Backups (redb WAL safety, per-module keccak prefix for partial restores)
  • Troubleshooting table (5 most common errors → likely cause → fix)
  • Cross-links to SDK overview, tutorial (BLEU-848), ADRs 0001 / 0003 / 0005

No code changes. Branches independently from `dev/m3-base`.

Linear: BLEU-836.

@linear-code

linear-code Bot commented Jun 17, 2026

Copy link
Copy Markdown

BLEU-836

@brunota20

Copy link
Copy Markdown
Author

Heads up to myself: dev/m3-base advanced from 103c00a to 4f096c3 (HEAD of fix/supervisor-alive-on-init-err = PR #55 "M3 epic"). This was the conformance fix from the 2026-06-23 audit (dev/m3-base previously did not contain the M3 SDK deliverables).

To rebase this PR:

git fetch origin
git checkout docs/deployment-guide-bleu-836
git rebase origin/dev/m3-base
# resolve conflicts if any (likely none - this is a docs-only PR on a base advance that adds SDK code)
git push --force-with-lease

26 commits added between the old base and the new tip - all SDK / examples / tutorial / QA work that was already shipped on feature branches but missing from dev/m3-base.

@brunota20
brunota20 force-pushed the docs/deployment-guide-bleu-836 branch from cc64e76 to 8de0579 Compare June 23, 2026 20:12
New docs/deployment.md aimed at operators (not module authors).
Branched from dev/m3-base — independent of the shepherd-sdk stack
so reviewers can land it without unblocking #12#16.

Covers:

- What an operator runs: nexum-engine + engine.toml + .wasm
  artefacts + state_dir.
- engine.toml reference: every section / field with the
  invariants ws/wss vs http/https on `[chains.<id>]`, fuel +
  memory caps on `[engine.limits]`, and a forward note that
  `[[modules]]` lands with the BLEU-818 supervisor PR (today's
  flow is positional CLI args).
- Building .wasm artefacts: `rustup target add wasm32-wasip2`
  plus the cargo build command + size sanity check.
- Local runs: the canonical `cargo run -p nexum-engine -- <wasm>
  <module.toml>` invocation + RUST_LOG hints.
- Docker: sketched Dockerfile pointing at the proper
  BLEU-X18 milestone.
- Observability: RUST_LOG patterns, /metrics endpoint (forward
  reference to BLEU-X14), suggested Grafana panels.
- Backups: redb WAL guarantees + how the per-module keccak
  prefix lets partial restores stay clean.
- Troubleshooting table mapping the five most common dispatches
  to their likely cause + fix.
- Cross-links to the SDK overview, tutorial (BLEU-848), and
  ADRs 0001 / 0003 / 0005.

No code changes.
@brunota20
brunota20 force-pushed the docs/deployment-guide-bleu-836 branch from 8de0579 to d0de865 Compare June 24, 2026 12:37
@brunota20
brunota20 merged commit 841a359 into dev/m3-base Jun 24, 2026
brunota20 added a commit that referenced this pull request Jun 25, 2026
Three threads from the internal review mirror of upstream nullislabs/shepherd PR #17:

1. ethflow-watcher/module.toml capabilities: move `chain` from required to optional. The comment on the original manifest already said the module does not call `chain` today; declaring it as required widened the grant for a capability the module does not exercise. Optional keeps "future-proofing" (BLEU-855 can use it without manifest churn) without violating least-privilege.

2. ethflow-watcher/module.toml subscription comment: soften the "identical on every chain" claim. cow-rs::ETH_FLOW_PRODUCTION is identical across chains today, but unlike ComposableCoW's CREATE2 address EthFlow has had multiple per-network and per-version deployments historically. Multi-chain config in M5 must re-check per `chain_id` instead of assuming the address carries. Address itself stays unchanged: 0xbA3cB449bD2B4ADddBc894D8697F5170800EAdeC is verified against the live Sepolia deployment (event firing observed in the COW-1064 dry-run on 2026-06-18 + cow-rs canonical constant + multiple load-test runs).

3. README.md module manifest example: the documented `address` field said `0xC92E8bdf79f0507f65a392b0ab4667716BFE0110` labeled "ComposableCoW", but that is the GPv2VaultRelayer (per scripts/lib.sh). ComposableCoW is `0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74`. Fixed the address; expanded the comment to clarify it is the canonical CREATE2 address (same on every supported chain).

Stays on `feat/m2-module-manifests-bleu-834` as a stacked branch so upstream PR #17 + internal mirror PR #54 can see the fixes as a separate, atomic commit.
brunota20 added a commit that referenced this pull request Jun 25, 2026
Squash of PR #17 - operator deployment runbook for BLEU-836.
brunota20 added a commit that referenced this pull request Jun 25, 2026
Squash of PR #17 - operator deployment runbook for BLEU-836.
brunota20 added a commit that referenced this pull request Jun 25, 2026
Squash of PR #17 - operator deployment runbook for BLEU-836.
brunota20 added a commit that referenced this pull request Jun 25, 2026
Squash of PR #17 - operator deployment runbook for BLEU-836.
brunota20 added a commit that referenced this pull request Jun 25, 2026
Three threads from the internal review mirror of upstream nullislabs/shepherd PR #17:

1. ethflow-watcher/module.toml capabilities: move `chain` from required to optional. The comment on the original manifest already said the module does not call `chain` today; declaring it as required widened the grant for a capability the module does not exercise. Optional keeps "future-proofing" (BLEU-855 can use it without manifest churn) without violating least-privilege.

2. ethflow-watcher/module.toml subscription comment: soften the "identical on every chain" claim. cow-rs::ETH_FLOW_PRODUCTION is identical across chains today, but unlike ComposableCoW's CREATE2 address EthFlow has had multiple per-network and per-version deployments historically. Multi-chain config in M5 must re-check per `chain_id` instead of assuming the address carries. Address itself stays unchanged: 0xbA3cB449bD2B4ADddBc894D8697F5170800EAdeC is verified against the live Sepolia deployment (event firing observed in the COW-1064 dry-run on 2026-06-18 + cow-rs canonical constant + multiple load-test runs).

3. README.md module manifest example: the documented `address` field said `0xC92E8bdf79f0507f65a392b0ab4667716BFE0110` labeled "ComposableCoW", but that is the GPv2VaultRelayer (per scripts/lib.sh). ComposableCoW is `0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74`. Fixed the address; expanded the comment to clarify it is the canonical CREATE2 address (same on every supported chain).

Stays on `feat/m2-module-manifests-bleu-834` as a stacked branch so upstream PR #17 + internal mirror PR #54 can see the fixes as a separate, atomic commit.
brunota20 added a commit that referenced this pull request Jun 25, 2026
Squash of PR #17 - operator deployment runbook for BLEU-836.
jean-neiverth pushed a commit that referenced this pull request Jun 29, 2026
Three threads from the internal review mirror of upstream nullislabs/shepherd PR #17:

1. ethflow-watcher/module.toml capabilities: move `chain` from required to optional. The comment on the original manifest already said the module does not call `chain` today; declaring it as required widened the grant for a capability the module does not exercise. Optional keeps "future-proofing" (BLEU-855 can use it without manifest churn) without violating least-privilege.

2. ethflow-watcher/module.toml subscription comment: soften the "identical on every chain" claim. cow-rs::ETH_FLOW_PRODUCTION is identical across chains today, but unlike ComposableCoW's CREATE2 address EthFlow has had multiple per-network and per-version deployments historically. Multi-chain config in M5 must re-check per `chain_id` instead of assuming the address carries. Address itself stays unchanged: 0xbA3cB449bD2B4ADddBc894D8697F5170800EAdeC is verified against the live Sepolia deployment (event firing observed in the COW-1064 dry-run on 2026-06-18 + cow-rs canonical constant + multiple load-test runs).

3. README.md module manifest example: the documented `address` field said `0xC92E8bdf79f0507f65a392b0ab4667716BFE0110` labeled "ComposableCoW", but that is the GPv2VaultRelayer (per scripts/lib.sh). ComposableCoW is `0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74`. Fixed the address; expanded the comment to clarify it is the canonical CREATE2 address (same on every supported chain).

Stays on `feat/m2-module-manifests-bleu-834` as a stacked branch so upstream PR #17 + internal mirror PR #54 can see the fixes as a separate, atomic commit.
jean-neiverth pushed a commit that referenced this pull request Jun 30, 2026
Three threads from the internal review mirror of upstream nullislabs/shepherd PR #17:

1. ethflow-watcher/module.toml capabilities: move `chain` from required to optional. The comment on the original manifest already said the module does not call `chain` today; declaring it as required widened the grant for a capability the module does not exercise. Optional keeps "future-proofing" (BLEU-855 can use it without manifest churn) without violating least-privilege.

2. ethflow-watcher/module.toml subscription comment: soften the "identical on every chain" claim. cow-rs::ETH_FLOW_PRODUCTION is identical across chains today, but unlike ComposableCoW's CREATE2 address EthFlow has had multiple per-network and per-version deployments historically. Multi-chain config in M5 must re-check per `chain_id` instead of assuming the address carries. Address itself stays unchanged: 0xbA3cB449bD2B4ADddBc894D8697F5170800EAdeC is verified against the live Sepolia deployment (event firing observed in the COW-1064 dry-run on 2026-06-18 + cow-rs canonical constant + multiple load-test runs).

3. README.md module manifest example: the documented `address` field said `0xC92E8bdf79f0507f65a392b0ab4667716BFE0110` labeled "ComposableCoW", but that is the GPv2VaultRelayer (per scripts/lib.sh). ComposableCoW is `0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74`. Fixed the address; expanded the comment to clarify it is the canonical CREATE2 address (same on every supported chain).

Stays on `feat/m2-module-manifests-bleu-834` as a stacked branch so upstream PR #17 + internal mirror PR #54 can see the fixes as a separate, atomic commit.
jean-neiverth pushed a commit that referenced this pull request Jun 30, 2026
Three threads from the internal review mirror of upstream nullislabs/shepherd PR #17:

1. ethflow-watcher/module.toml capabilities: move `chain` from required to optional. The comment on the original manifest already said the module does not call `chain` today; declaring it as required widened the grant for a capability the module does not exercise. Optional keeps "future-proofing" (BLEU-855 can use it without manifest churn) without violating least-privilege.

2. ethflow-watcher/module.toml subscription comment: soften the "identical on every chain" claim. cow-rs::ETH_FLOW_PRODUCTION is identical across chains today, but unlike ComposableCoW's CREATE2 address EthFlow has had multiple per-network and per-version deployments historically. Multi-chain config in M5 must re-check per `chain_id` instead of assuming the address carries. Address itself stays unchanged: 0xbA3cB449bD2B4ADddBc894D8697F5170800EAdeC is verified against the live Sepolia deployment (event firing observed in the COW-1064 dry-run on 2026-06-18 + cow-rs canonical constant + multiple load-test runs).

3. README.md module manifest example: the documented `address` field said `0xC92E8bdf79f0507f65a392b0ab4667716BFE0110` labeled "ComposableCoW", but that is the GPv2VaultRelayer (per scripts/lib.sh). ComposableCoW is `0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74`. Fixed the address; expanded the comment to clarify it is the canonical CREATE2 address (same on every supported chain).

Stays on `feat/m2-module-manifests-bleu-834` as a stacked branch so upstream PR #17 + internal mirror PR #54 can see the fixes as a separate, atomic commit.
jean-neiverth pushed a commit that referenced this pull request Jun 30, 2026
Three threads from the internal review mirror of upstream nullislabs/shepherd PR #17:

1. ethflow-watcher/module.toml capabilities: move `chain` from required to optional. The comment on the original manifest already said the module does not call `chain` today; declaring it as required widened the grant for a capability the module does not exercise. Optional keeps "future-proofing" (BLEU-855 can use it without manifest churn) without violating least-privilege.

2. ethflow-watcher/module.toml subscription comment: soften the "identical on every chain" claim. cow-rs::ETH_FLOW_PRODUCTION is identical across chains today, but unlike ComposableCoW's CREATE2 address EthFlow has had multiple per-network and per-version deployments historically. Multi-chain config in M5 must re-check per `chain_id` instead of assuming the address carries. Address itself stays unchanged: 0xbA3cB449bD2B4ADddBc894D8697F5170800EAdeC is verified against the live Sepolia deployment (event firing observed in the COW-1064 dry-run on 2026-06-18 + cow-rs canonical constant + multiple load-test runs).

3. README.md module manifest example: the documented `address` field said `0xC92E8bdf79f0507f65a392b0ab4667716BFE0110` labeled "ComposableCoW", but that is the GPv2VaultRelayer (per scripts/lib.sh). ComposableCoW is `0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74`. Fixed the address; expanded the comment to clarify it is the canonical CREATE2 address (same on every supported chain).

Stays on `feat/m2-module-manifests-bleu-834` as a stacked branch so upstream PR #17 + internal mirror PR #54 can see the fixes as a separate, atomic commit.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant