Five JSON Schema documents. They are emitted from the Zod definitions the host itself validates against, so they cannot describe a protocol the host does not implement.
Generated from the repository, and needed only when you are implementing the protocol outside Aumos. Writing a package needs neither page.
These files are generated, never authored. A test in the repository regenerates them and compares, so a hand-edit fails the build rather than quietly becoming the stale document an outside implementer reads.
manager-invocation.schema.jsonEverything an agent is sent. Note asOf, which is separate from clock.now and is the instant the judgement is about — every gateway call is pinned to it; and language, which governs the agent’s prose and nothing else.
manager-result.schema.jsonEverything an agent may send back. Strict at every level, except that a field this schema does not define is dropped from the judgement and named back to you rather than refusing it.
manager-error.schema.jsonWhat to return when you could not look, as opposed to when you looked and decided to do nothing. The two are never scored alike.
decision-proposal.schema.jsonThe judgement itself. It expresses portfolio intent — there is nowhere in it to put a quantity, a limit price, an order type or a venue, because turning intent into orders is the host’s and happens behind a person’s approval. One judgement may name a whole basket: target and targets are read as a single list and resolved together against one book.
manager-package-manifest.schema.jsonWhat a package declares about itself: identity, the capabilities it asks for, and — for a ported harness — whose work it is derived from. This is the whole of what Aumos reads before deciding to run something; agent code is never analysed.
asOf is not clock.nowasOf is the instant your judgement is about; clock.now is when the machine is running. In a replay they are months apart. There is no default for asOf — absent, null, empty, malformed and future are five separate refusals, and none of them reaches a data source. A default of "now" is exactly how a backtest becomes a leak without anyone noticing.
⚠️ What it is not, since the port layer was removed: a boundary. Every gateway call is pinned to it and every Evidence row records it, so what was asked, and as of when is always answerable. Whether the answer was confined to that instant is not — a data source relays a vendor's response unread, and the session reaches the open web on its own. It is the largest thing this project has given up on purpose, and it is written down rather than papered over.
language governs your prose and nothing elseField names and enum values are the wire format and are always English. A translated key or a translated enum value does not fail that field — it fails the whole payload, and the run is recorded as one that could not answer in the protocol. Evidence is never translated at all: a translated source is one no auditor can check against the original.
Nothing requires a manager to be TypeScript, in-process, or running now. The conformance suite judges an implementation from its manifest plus one response per canonical invocation — a Python harness, a hosted service, or a directory of recorded JSON all qualify.