core/conformance is the reusable V2-native connector review package. The
workspace root exposes it through a stable task surface:
mix jido.conformance <ConnectorModule>Example:
mix jido.conformance Jido.Integration.V2.Connectors.GitHub
mix jido.conformance Jido.Integration.V2.Connectors.NotionConformance keeps connector review semantics out of the workspace root while giving the repo one canonical connector acceptance command.
It exists to prove that a connector:
- publishes a valid authored manifest contract and derived executable capabilities
- fits the declared runtime family
- declares policy posture explicitly
- can execute deterministic fixtures through lease-only auth context
- publishes ingress definitions when it claims trigger capability
The default and current stable profile is connector_foundation.
It runs these suites in order:
manifest_contractcapability_contractsruntime_class_fitpolicy_contractdeterministic_fixturesingress_definition_discipline
The task API is intentionally narrow:
--profile--format--output
Future async or webhook-routing profiles should extend the suite list, not change the root task shape.
For a connector package under connectors/<name>/:
- implement or update the connector
manifest/0 - author auth, catalog, operation, and trigger entries in that manifest rather than hand-writing executable capabilities
Keep
auth.requested_scopesas the authored superset of every operation and triggerrequired_scopes, and keepauth.secret_namesas the authored superset of triggerverification.secret_nameandsecret_requirements. - keep runtime handlers in the connector package and declare explicit child
deps in that package
mix.exs - add or update deterministic tests in the connector package
- add or update the optional
<ConnectorModule>.Conformancecompanion module - run package-local
mix testandmix docs - run
mix jido.conformance <ConnectorModule>from the workspace root - finish with the root monorepo gates and
mix ci
For thin provider-SDK connectors such as connectors/notion, deterministic
fixtures should run through the provider package's transport seam instead of a
second handwritten fake provider layer.
Conformance is part of connector review. It does not replace package-local tests, docs, or the root acceptance gate.
Connectors can publish deterministic conformance evidence through an optional
companion module named <ConnectorModule>.Conformance.
The companion module may expose:
fixtures/0: deterministic execution fixtures for runtime/result reviewingress_definitions/0: ingress definitions for trigger-capable connectors
The companion module returns plain maps so the connector package does not need
to depend on core/conformance.
Each fixture map should declare:
capability_idinputcredential_refcredential_lease- optional
context - optional
expect
expect currently supports:
outputevent_typesartifact_typesartifact_keys
manifest_contract- fix connector id stability, authored auth/catalog/operation/trigger completeness, auth scope or trigger-secret coverage, or derived capability ownership
capability_contracts- fix authored operation or trigger ids, projection drift, invalid policy metadata, or malformed derived capability structs
runtime_class_fit- fix handler modules so they match
direct,session, orstream
- fix handler modules so they match
policy_contract- declare scopes, environment, runtime class, and sandbox posture explicitly
deterministic_fixtures- fix provider determinism, expected output/events/artifacts, or auth lease assumptions
ingress_definition_discipline- keep trigger definitions explicit and aligned with the derived trigger capability surface
- human
- default stdout summary
- json
- full JSON report to stdout with
--format json
- full JSON report to stdout with
- file
--output path.jsonwrites the JSON report to disk
mix jido.integration.new emits a package-local baseline conformance test and
companion module. Treat that output as the starting contract, not the finished
connector.
Generated connectors still need:
- real provider or handler implementation
- real fixture expectations
- package-local docs
- optional live acceptance or proof code kept inside the connector package when appropriate