@@ -78,6 +78,21 @@ backend-native values and call typed mathematical kernels directly; they must
7878not invoke ` math.run ` , construct a capability runtime, or expose MCP,
7979artifact, provider-loading, or installation objects.
8080
81+ ### Mathematical interoperability
82+
83+ Capabilities interoperate through shared, typed domain values and artifacts—not
84+ backend-specific objects, JSON round-trips, or wire encodings. Reuse existing
85+ contract models and typed kernels; add explicit domain-owned conversions when
86+ representations differ. Cover producer-to-consumer compatibility and canonical
87+ or backend-native round trips in tests. Architecture checks must reject internal
88+ JSON round-trips and unsafe canonical conversions.
89+
90+ Canonical decimal strings are wire and persistence values, not computational
91+ values. Use the canonical conversion API before calling backends or constructing
92+ results. Do not directly apply ` int() ` or ` str() ` to canonical components or
93+ change ` sys.set_int_max_str_digits() ` as a workaround. Keep backend coercion in
94+ thin adapters, and test above 4,300 digits whenever the contract permits it.
95+
8196Keep Pydantic models authoritative at capability, persistence, artifact, and
8297wire boundaries. Domain implementations and operation factories must preserve
8398their concrete request, result, and obligation types: do not accept
0 commit comments