Skip to content

Commit 54390a0

Browse files
authored
docs(copy): ground claims and sandbox boundaries (#155)
1 parent 474f8c6 commit 54390a0

56 files changed

Lines changed: 222 additions & 123 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

pages/blueprints/ai-agent-sandbox/dapp-and-indexer.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ The sandbox app is iframe-first. The parent dapp should:
6262

6363
## Bad copy to avoid
6464

65-
Do not name the product after one harness. The Sandbox SDK supports OpenCode plus 12 peer backend types: Claude Code, Kimi Code, Codex, AMP, Factory Droids, Pi, Hermes, Forge, OpenClaw, ACP, Cursor, and CLI base. The current Sandbox UI picker exposes a subset plus NanoClaw. The AI Agent Sandbox blueprint's current all-harness sidecar advertises Claude Code, Codex, OpenCode, Kimi Code, and Gemini CLI. The product boundary is the sandbox service instance and operator API.
65+
Do not name the product after one harness. The Sandbox SDK supports OpenCode plus 13 peer backend types: Claude Code, Kimi Code, Codex, AMP, Factory Droids, Pi, Hermes, Forge, OpenClaw, NanoClaw, ACP, Cursor, and CLI base. The current Sandbox UI picker exposes OpenClaw and NanoClaw while deferring Pi, Forge, ACP, and Cursor. The AI Agent Sandbox blueprint's current all-harness sidecar advertises Claude Code, Codex, OpenCode, Kimi Code, and Gemini CLI. The product boundary is the sandbox service instance and operator API.
6666

6767
Use capability language instead:
6868

pages/blueprints/ai-agent-sandbox/runtime-and-harnesses.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ description: Runtime backends, capability discovery, harnesses, and AI credentia
77

88
The sandbox is the product. Harnesses are tools inside the sandbox.
99

10-
Do not describe this blueprint as an OpenCode integration, a Codex integration, or a Claude integration. The Sandbox SDK supports OpenCode plus 12 peer backend types: Claude Code, Kimi Code, Codex, AMP, Factory Droids, Pi, Hermes, Forge, OpenClaw, ACP, Cursor, and CLI base. A blueprint service instance asks its operator for the live runtime set through `GET /api/capabilities`.
10+
Do not describe this blueprint as an OpenCode integration, a Codex integration, or a Claude integration. The Sandbox SDK supports OpenCode plus 13 peer backend types: Claude Code, Kimi Code, Codex, AMP, Factory Droids, Pi, Hermes, Forge, OpenClaw, NanoClaw, ACP, Cursor, and CLI base. A blueprint service instance asks its operator for the live runtime set through `GET /api/capabilities`.
1111

1212
## Runtime backends
1313

pages/blueprints/ai-trading/operator-requirements.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ Public admission means public cost exposure. Every accepted bot can use CPU, dis
6262

6363
The operator install path defaults new bots to paper trading. Paper mode uses live market data and simulated fills; it should not move capital.
6464

65-
AI keys are optional. If you set `ZAI_API_KEY`, `ANTHROPIC_API_KEY`, `TANGLE_API_KEY`, or OpenCode model/env settings, agentic activation and chat can use those settings when the selected sidecar advertises OpenCode. Treat OpenCode as one harness inside the same capability model as Claude Code, Kimi Code, Codex, AMP, Factory Droids, Pi, Hermes, Forge, OpenClaw, ACP, Cursor, CLI base, or a smaller blueprint sidecar subset. The operator docs are clear: there is no built-in per-bot, per-day, or total LLM spend cap today. Use provider-side billing limits.
65+
AI keys are optional. If you set `ZAI_API_KEY`, `ANTHROPIC_API_KEY`, `TANGLE_API_KEY`, or OpenCode model/env settings, agentic activation and chat can use those settings when the selected sidecar advertises OpenCode. Treat OpenCode as one harness inside the same capability model as Claude Code, Kimi Code, Codex, AMP, Factory Droids, Pi, Hermes, Forge, OpenClaw, NanoClaw, ACP, Cursor, CLI base, or a smaller blueprint sidecar subset. The operator docs are clear: there is no built-in per-bot, per-day, or total LLM spend cap today. Use provider-side billing limits.
6666

6767
## Public endpoint
6868

pages/blueprints/operator-matrix.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ The three first-party blueprints do not fail the same way. A sandbox operator ru
4343

4444
## Harnesses are not the product boundary
4545

46-
The sandbox product is the sandbox service instance plus its operator API. The Sandbox SDK supports OpenCode, Claude Code, Kimi Code, Codex, AMP, Factory Droids, Pi, Hermes, Forge, OpenClaw, ACP, Cursor, and CLI base. The current all-harness sidecar in the sandbox blueprint advertises Claude Code, Codex, OpenCode, Kimi Code, and Gemini CLI through `GET /api/capabilities`.
46+
The sandbox product is the sandbox service instance plus its operator API. The Sandbox SDK supports OpenCode, Claude Code, Kimi Code, Codex, AMP, Factory Droids, Pi, Hermes, Forge, OpenClaw, NanoClaw, ACP, Cursor, and CLI base. The current all-harness sidecar in the sandbox blueprint advertises Claude Code, Codex, OpenCode, Kimi Code, and Gemini CLI through `GET /api/capabilities`.
4747

4848
That endpoint is the contract the app should read. Do not make docs or UI copy pretend OpenCode, Codex, or any one harness is the integration. Harness support can change by publishing a new sidecar image without changing the blueprint ABI.
4949

pages/developers/api/reference/ITangleServices.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ Approve a service request as one of its operators.
5757

5858
_Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability:_
5959

60-
- `securityCommitments == []` no per-asset commitment supplied. Only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement (auto-filled at min-exposure).
61-
- `blsPubkey == [0,0,0,0]` operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in; the protocol accepts any operator.
62-
- `teeCommitments == []` operator does NOT bind to a TEE attestation profile.
60+
- `securityCommitments == []` - no per-asset commitment supplied. Only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement (auto-filled at min-exposure).
61+
- `blsPubkey == [0,0,0,0]` - operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in; the protocol accepts any operator.
62+
- `teeCommitments == []` - operator does NOT bind to a TEE attestation profile.
6363

6464
#### getTeeCommitmentRoot
6565

@@ -75,7 +75,7 @@ Returns `keccak256(abi.encode(commitments))` over an operator's `TeeAttestationC
7575
function teeNonceFor(uint64 requestId) external view returns (bytes32)
7676
```
7777

78-
Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request it eliminates cross-request attestation replay at approval time.
78+
Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request - it eliminates cross-request attestation replay at approval time.
7979

8080
#### blsPopMessage
8181

pages/developers/api/reference/generated/ITangleServices.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ Approve a service request as one of its operators.
5757

5858
_Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability:_
5959

60-
- `securityCommitments == []` no per-asset commitment supplied. Only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement (auto-filled at min-exposure).
61-
- `blsPubkey == [0,0,0,0]` operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in; the protocol accepts any operator.
62-
- `teeCommitments == []` operator does NOT bind to a TEE attestation profile.
60+
- `securityCommitments == []` - no per-asset commitment supplied. Only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement (auto-filled at min-exposure).
61+
- `blsPubkey == [0,0,0,0]` - operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in; the protocol accepts any operator.
62+
- `teeCommitments == []` - operator does NOT bind to a TEE attestation profile.
6363

6464
#### getTeeCommitmentRoot
6565

@@ -75,7 +75,7 @@ Returns `keccak256(abi.encode(commitments))` over an operator's `TeeAttestationC
7575
function teeNonceFor(uint64 requestId) external view returns (bytes32)
7676
```
7777

78-
Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request it eliminates cross-request attestation replay at approval time.
78+
Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request - it eliminates cross-request attestation replay at approval time.
7979

8080
#### blsPopMessage
8181

pages/developers/blueprint-contexts/introduction.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ The Context pattern offers several significant benefits in software design and d
2727

2828
1. **Decoupling**: By passing dependencies through a Context, we decouple the job implementation from the specific implementations of its dependencies. This makes the code more modular and easier to maintain.
2929

30-
2. **Testability**: With a Context, it's easier to mock or stub dependencies during unit testing, allowing for more comprehensive and isolated tests.
30+
2. **Testability**: With a Context, tests can replace RPC clients, keystores, or service clients with mocks and fixtures.
3131

3232
3. **Flexibility**: Contexts allow for easy swapping of implementations, which is particularly useful when adapting to different environments (e.g., development, staging, production).
3333

pages/developers/blueprint-qos.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -350,9 +350,9 @@ event MetricViolation(
350350

351351
Violation reasons include:
352352

353-
- `"required metric missing"` a required metric was not reported
354-
- `"value below minimum"` reported value < `minValue`
355-
- `"value above maximum"` reported value > `maxValue`
353+
- `"required metric missing"` - a required metric was not reported
354+
- `"value below minimum"` - reported value < `minValue`
355+
- `"value above maximum"` - reported value > `maxValue`
356356

357357
Slashing is intentionally decoupled from validation. Auto-slashing from metric violations is dangerous because transient spikes or network delays could trigger false positives. Instead:
358358

pages/developers/blueprint-runner/background-services.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,6 @@ Now that you understand background services, it might be helpful to take a look
8686
- [Consumers](/developers/blueprint-runner/consumers) - How to handle job results
8787
- [Building a Blueprint Runner](/developers/blueprint-runner/building) - Step-by-step guide to building your own Blueprint Runner
8888

89-
## Conclusion
89+
## Before You Ship
9090

91-
Background services are powerful components that enhance the capabilities of your Blueprint Runner by providing continuous support operations. By implementing well-designed background services, you can build more robust, efficient, and feature-rich Blueprints.
91+
Verify that each background service starts, reports failure, and shuts down cleanly. If the service owns a connection, lock, or local process, its shutdown handler should release that resource before the runner exits.

pages/developers/blueprint-runner/building.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ let result = BlueprintRunner::builder(tangle_config, env)
165165

166166
The `run` method starts the Blueprint Runner and returns a result indicating whether it ran successfully or encountered an error.
167167

168-
With this, the Blueprint Runner, the centerpoint of your Blueprint is ready to be used!
168+
With this, the Blueprint Runner can start and serve the components you attached to the builder.
169169

170170
## Next Steps
171171

@@ -175,6 +175,6 @@ After building your Blueprint Runner, you might want to explore:
175175
- [Producer Patterns](/developers/blueprint-runner/producers#producer-patterns)
176176
- [Consumer Patterns](/developers/blueprint-runner/consumers#consumer-patterns)
177177

178-
## Conclusion
178+
## Before You Ship
179179

180-
Building a Blueprint Runner involves setting up various components that work together to execute your Tangle Blueprint. By following this guide and adhering to best practices, you can create a robust and efficient Blueprint Runner for your blueprint service on the Tangle Network.
180+
Run the runner against a local node or testnet, submit one real job, and keep the transaction hash plus runner logs. A runner is ready for operators only after it can start, receive a job, execute the handler, and return the expected result.

0 commit comments

Comments
 (0)