Resolution semantics
April 19, 2026 · View on GitHub
MTG defines three modes for how violations affect tool-call flow. v0.1.0 ships advisory only.
advisory (v0.1.0 ships this)
- All violations are recorded on the receipt.
- Tool call proceeds unchanged.
- Downstream consumers (ToolProof, scorecards, analytics) decide what to do with the violation log.
surfaceis always authoritative — theanalysisblock is metadata.
Use this mode when:
- Measuring baseline violation rates on real agents.
- Producing diagnostic reports.
- Integrating MTG into an existing pipeline without altering behavior.
reconciled (defined, not shipped in v0.1.0)
- High-severity pre-call violations pause the call.
- The agent is re-prompted with the violation detail appended as a hint.
- If the second attempt also violates, the call proceeds in advisory mode with both attempts logged.
- Post-call violations trigger a response rewrite attempt (agent decides whether to accept the rewrite).
In v0.1.0 the reference validator raises NotImplementedError("reconciled mode not shipped in v0.1.0; see spec/resolution.md") with a link back to this doc.
enforced (defined, not shipped in v0.1.0)
- Any high-severity violation rejects the call outright.
- Medium-severity violations reject only if
dialect_enforcement: strict. - Receipts carry
outcome: "fail".
In v0.1.0 the reference validator raises NotImplementedError("enforced mode not shipped in v0.1.0; see spec/resolution.md").
Why advisory-only for v0.1.0
Enforcement policy requires confidence in the signal. Dialect classifiers and morphological backends have real error rates — the built-in keyword classifier's accuracy on short tool-call inputs has not been measured in a public bundle yet, and CAMeL Tools / Farasa disagreement rates on dialectal inputs are known to be non-trivial in the literature but also not yet measured here. Shipping enforced mode before publishing those numbers means blocking real calls on a noisy signal we haven't characterized.
Advisory-only first, measure the violation distribution, then enable enforcement once the data supports it.
Backward compatibility
The x-mtg extension is strictly additive. Tools without the extension behave exactly as today. Adapters that do not understand x-mtg are expected to ignore the field per the JSON Schema spec's rules on extension keywords.