Skip to content

Commit 2f05725

Browse files
committed
docs(spec): mark ToolSchema as a read-only projection, not an execution entry point (#1892)
#1892 tool disposition (ADR-0049 line): the ledger already documents that tool metadata is a one-way, write-only projection (no executor loads a metadata-authored tool; the runtime uses a separate AIToolDefinition in cloud service-ai). Surface that on the SPEC itself so an author/AI reading the Zod schema — not just the ledger — knows a hand-authored tool will not run in the open edition. Non-breaking describe-only change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LddW4NaQBdf5FTEnBPpnUJ
1 parent 906655b commit 2f05725

2 files changed

Lines changed: 3 additions & 1 deletion

File tree

content/docs/references/ai/tool.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ const result = Tool.parse(data);
2727

2828
## Tool
2929

30+
AI tool definition. [READ-ONLY PROJECTION — not an execution entry point] Authoring a tool as metadata does NOT make it runnable: this schema has no `implementation`/`handler` field and no framework executor loads a metadata-authored tool. The runtime executes a separately-registered `AIToolDefinition` (cloud `@objectstack/service-ai`); tool metadata is a one-way projection for Studio/discovery. Do not expect a hand-authored tool to run in the open edition (liveness audit #1878/#1892).
31+
3032
### Properties
3133

3234
| Property | Type | Required | Description |

packages/spec/src/ai/tool.zod.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ export const ToolSchema = lazySchema(() => z.object({
117117
// ADR-0010 — runtime protection envelope (internal — set by loader).
118118
...MetadataProtectionFields,
119119

120-
}));
120+
}).describe('AI tool definition. [READ-ONLY PROJECTION — not an execution entry point] Authoring a tool as metadata does NOT make it runnable: this schema has no `implementation`/`handler` field and no framework executor loads a metadata-authored tool. The runtime executes a separately-registered `AIToolDefinition` (cloud `@objectstack/service-ai`); tool metadata is a one-way projection for Studio/discovery. Do not expect a hand-authored tool to run in the open edition (liveness audit #1878/#1892).'));
121121

122122
export type Tool = z.infer<typeof ToolSchema>;
123123

0 commit comments

Comments
 (0)