Me captured handler schema profile
The host checks manifest schemas before binding an approved handler, validates input
before entering its backend, and validates the unwrapped result before returning it.
This applies to direct calls, schedules, channels, lenses and producers. A method’s
schema describes args; its transport envelope independently requires object-valued
self and accepts no fields beyond self and args, but args itself is typed by
whatever schema the method declares — a method with no schema of its own admits any
JSON value there, not only an object. Validation does not coerce values or add defaults.
The current profile supports these JSON Schema keywords:
| Contract | Supported fields |
|---|---|
| Types | type, including nullable type arrays |
| Objects | properties, required, additionalProperties, minProperties, maxProperties |
| Arrays | One items schema, minItems, maxItems |
| Strings | minLength, maxLength, measured in Unicode code points |
| Numbers | minimum, maximum, numeric exclusiveMinimum/exclusiveMaximum, positive multipleOf |
| Values and alternatives | Scalar enum/const, allOf, anyOf, oneOf, not, nested boolean schemas |
title, description, default, examples, readOnly, writeOnly and deprecated
are annotations. $schema may identify draft 2020-12 or draft-07. Unsupported
keywords, including references, definitions, patterns, formats, tuples and
uniqueItems, refuse the binding. The host performs no schema network or file access.
This is a bounded subset of JSON Schema validation, not a claim of full dialect support.
Each schema is limited to 64 KiB, 2,048 schema nodes and 16 nested schema levels. Objects declare at most 256 properties or required names; enums contain at most 256 scalar values; each combination contains at most 16 alternatives. Input and output are each limited to 1 MiB, 32 JSON nesting levels, 65,536 characters per string and 100,000 JSON nodes. Numeric precision and absolute decimal scale are limited to 1,000. Validation allows 100,000 steps; exceeding a limit refuses the call. An empty schema still permits any value within these limits, while function input must remain an object. Backend and surface limits can be stricter.
Malformed schemas, invalid values and exhausted limits produce a fixed refusal without returning schema or payload contents. Final Realm admission is checked again after output validation. Validation cannot reverse effects the handler already made.

