{"$schema":"https://embeddedsemantics.com/schemas/embedded-semantics-integration-readiness-v1.schema.json","authorization":{"evaluatedSeparately":true,"policyVersionRequired":true,"rule":"Record an independent authorization outcome and policy version; the self-test never performs the downstream action.","semanticIdentityGrantsPermission":false,"sideEffectPerformedBySelfTest":false},"clientRecord":{"alwaysRetained":["originalExpression","language","semanticOutcome","resolverEvidence"],"noAssignmentRule":"Every non-resolved fixture must omit conceptCode and registryVersion.","resolvedOnly":["conceptCode","registryVersion"],"staleFieldRule":"Remove or reject stale identity fields whenever the observed outcome is not a valid resolved result."},"fitGate":{"failWhen":["The integration would call the resolver on every conversational turn without a durable consumer.","The client would guess or reconstruct a ConceptCode after abstention or error.","The client would treat a ConceptCode or readiness result as permission to act."],"passWhen":["One durable memory, routing, record, clarification, or audit boundary is named.","The workflow can keep originalExpression, language or null, semanticOutcome, and resolverEvidence.","Unknown, ambiguity, malformed response, request error, and service error can continue with no ConceptCode.","A separate authorization policy decides whether any downstream action is allowed."],"question":"Does one durable workflow boundary need a stable governed ConceptCode, and can the client preserve no-assignment outcomes?"},"fixtureSet":{"credentialsRequired":false,"networkRequired":false,"productionDataRequired":false,"requiredFixtureIds":["resolved-valid","unknown-expression","ambiguous-expression","malformed-resolved","request-error","service-error"],"rule":"Exercise all six fixed cases locally and preserve the complete fixture evidence in every client record.","version":"1.0.0"},"notProvenBySelfTest":["live registry coverage","deployment correctness","permission to perform a downstream action","model quality or semantic generalization"],"purpose":"Prove locally, before deployment or side effects, that one selected integration recipe preserves every resolver outcome, assigns identity only from a valid resolved result, and keeps authorization independent.","readyWhen":["Exactly one canonical recipe is selected.","All six fixed fixtures pass.","Only resolved-valid contains conceptCode and registryVersion.","Every other fixture contains neither identity field.","Authorization is evaluated separately and grants no permission by semantic identity.","The deterministic report validates and records zero side effects."],"recipeSelection":{"recipes":[{"benefitMetrics":[{"calculation":"duplicate semantic categories / reviewed durable memory categories","id":"duplicate-memory-category-rate","name":"Duplicate memory category rate","targetDirection":"decrease without increasing wrong accepted identity"},{"calculation":"unresolved memories retained with explicit outcome / all unresolved memories","id":"unresolved-memory-visibility","name":"Unresolved memory visibility","targetDirection":"increase toward complete visibility"}],"bestPlacement":"At the durable-memory write boundary, not on every conversational turn.","fitStatement":"Will this reviewed meaning be written to durable memory and reused across sessions, languages, or models?","id":"multilingual-memory","title":"Multilingual agent memory"},{"benefitMetrics":[{"calculation":"unsupported or ambiguous inputs blocked from semantic routing / all unsupported or ambiguous routing inputs","id":"wrong-route-prevention","name":"Wrong-route prevention","targetDirection":"increase toward complete prevention"},{"calculation":"authorized routes using exact published codes / all semantic routes","id":"policy-code-consistency","name":"Routing policy code consistency","targetDirection":"increase toward complete consistency"}],"bestPlacement":"Immediately before a semantic routing decision whose policy already recognizes published codes.","fitStatement":"Does an already-authorized routing policy need a stable governed semantic key at one decision boundary?","id":"workflow-routing","title":"Agent and workflow routing"},{"benefitMetrics":[{"calculation":"records using the same exact code for the same reviewed meaning / compared resolved records","id":"cross-system-code-consistency","name":"Cross-system code consistency","targetDirection":"increase"},{"calculation":"retired local label mappings / baseline local label mappings","id":"mapping-table-reduction","name":"One-off mapping table reduction","targetDirection":"increase while preserving unresolved records"}],"bestPlacement":"At an API, event, or persistence boundary where semantic metadata is part of the contract.","fitStatement":"Will an API, event, or stored record cross a boundary where another system benefits from inspecting the same governed definition?","id":"api-event-interoperability","title":"API, event, and record interoperability"},{"benefitMetrics":[{"calculation":"clarifications producing a reviewed resolved result or explicit preserved uncertainty / all clarification attempts","id":"clarification-resolution-quality","name":"Clarification resolution quality","targetDirection":"increase without forcing resolution"},{"calculation":"material decisions made without resolved identity or explicit no-code handling / material semantic decisions","id":"silent-assumption-rate","name":"Silent semantic assumption rate","targetDirection":"decrease toward zero"}],"bestPlacement":"At a decision point where choosing the wrong meaning would materially change the next step.","fitStatement":"Would choosing the wrong meaning materially change the assistance, record, route, or next question?","id":"clarification","title":"Human clarification and safer assistance"},{"benefitMetrics":[{"calculation":"semantic decisions with original input, complete outcome evidence, and version data / audited semantic decisions","id":"provenance-completeness","name":"Provenance completeness","targetDirection":"increase toward complete coverage"},{"calculation":"audits that can reconstruct semantic and authorization gates independently / attempted audits","id":"reproducible-review-rate","name":"Reproducible review rate","targetDirection":"increase"}],"bestPlacement":"At evidence capture, logging, or review boundaries where semantic decisions must be reproducible.","fitStatement":"Must a reviewer reproduce what expression was submitted, what the resolver returned, and what separate policy authorized later action?","id":"audit-provenance","title":"Audit, provenance, and explainability"}],"requiredCount":1,"rule":"Select exactly one canonical recipe and document why its durable boundary fits."},"report":{"containsCurrentTimestamp":false,"containsRandomIdentifier":false,"containsSecrets":false,"deterministic":true,"requiredEvidence":["selected recipe and fit statement","all six fixture case results","always-retained and resolved-only field checks","resolved-only identity-assignment proof","separate authorization result and policy version","side-effect count of zero","benefit metric plan","source and report SHA-256 values"],"schemaUrl":"https://embeddedsemantics.com/schemas/embedded-semantics-integration-readiness-report-v1.schema.json"},"schema":"embedded-semantics.integration-readiness.v1","service":{"canonicalOrigin":"https://embeddedsemantics.com","capabilities":"https://embeddedsemantics.com/api/v1/capabilities","fixtures":"https://embeddedsemantics.com/examples/agent-readiness/fixtures.json","humanGuide":"https://embeddedsemantics.com/readiness","interactionGuide":"https://embeddedsemantics.com/api/v1/interaction-guide","name":"Embedded Semantics","pythonSelfTest":"https://embeddedsemantics.com/examples/agent-readiness/python-stdlib-self-test.py","recipesGuide":"https://embeddedsemantics.com/api/v1/use-case-recipes","reportSchema":"https://embeddedsemantics.com/schemas/embedded-semantics-integration-readiness-report-v1.schema.json","reportUrlTemplate":"https://embeddedsemantics.com/api/v1/integration-readiness/report/{recipeId}","resolve":"https://embeddedsemantics.com/api/v1/resolve","status":"https://embeddedsemantics.com/api/v1/status"},"version":"1.0.0"}
