Extensibility Model¶
Reason extensions enter through execution runtimes, named tools, structured reasoners, verification checks, or interface adapters. Every extension must leave the evidence chain stronger than plain generated text: inputs, effects, claims, supports, failures, and replay conditions remain typed and retained.
Extension path¶
flowchart LR
extension["runtime, tool, reasoner, check, or adapter"]
contract["typed contract and stable identity"]
plan["content-addressed plan"]
trace["ordered trace events"]
verify["structural and provenance checks"]
bundle["manifested run directory"]
extension --> contract --> plan --> trace --> verify --> bundle
contract --> descriptor["version and configuration fingerprint"]
descriptor --> bundle
An extension that cannot describe its behavior and evidence contribution cannot participate in a replayable reason run.
Supported extension points¶
| Seam | Suitable extension | Required obligations |
|---|---|---|
ExecutionRuntime |
Live, local, remote, or application-controlled execution | Stable runtime kind and mode, named tool inventory, versions, configuration fingerprint, seeded invocation, and normalized failures |
| Tool protocol | Retrieval, computation, or model-backed capability | Stable tool name/version, typed ToolCall to ToolResult linkage, bounded effects, and registered evidence identity |
ReasonerBackend |
Structured derivation strategy | Emit typed derivations and citations, respect insufficient evidence, avoid untracked side effects, and expose implementation identity through the runtime/run configuration |
| Verification sequence | Additional structural or provenance invariant | Stable check and invariant identifiers, deterministic ordering, explicit severity, actionable failures, and policy-aware reporting |
| Retrieval runtime | External corpus or search integration | Preserve corpus and candidate provenance, exact evidence bytes, content digests, selection configuration, and a frozen replay path |
| CLI or HTTP adapter | New transport or application workflow | Load and emit canonical models, confine artifact paths, retain the complete run bundle, and add no alternate claim meaning |
The built-in check sequence is ordered. Adding or reordering checks can change report identity and acceptance behavior; treat it as a verification-contract change rather than a private implementation detail.
Evidence obligations¶
External retrieval and reasoning integrations must retain the bytes used to
support claims. A URL, candidate ID, rendered paragraph, or provider response
identifier alone cannot validate a SupportRef. The run needs a permitted
relative evidence path, file digest, exact non-empty byte interval, and snippet
SHA-256.
If the upstream source cannot be retained, the extension must make that limitation explicit and must not claim frozen file-backed replay. A later live call is a new run, not a reconstruction of the old one.
Non-extension boundaries¶
Extensions must not:
- mutate canonical specification, plan, trace, claim, or manifest models after identity has been established;
- convert an assumed or observed claim into a validated derived claim without the required supports and checks;
- catch tool failure and emit plausible text as if the call succeeded;
- resolve evidence outside the configured artifact root;
- normalize or re-encode evidence after byte spans have been recorded;
- omit runtime or provider changes from fingerprints;
- replace frozen replay with another live provider invocation.
Conformance evidence¶
An extension is ready when deterministic fixtures cover successful and failed calls, descriptor stability, call/result linkage, exact support verification, manifest coverage, and frozen replay. For non-deterministic providers, record the sources of variation and prove that strict replay refuses when equivalence cannot be established.
See data contracts for model semantics and security and safety for artifact-root, provider, and network controls.