Proposal 090: Inference Execution Provenance and Non-local Disclosure¶
Based on:
doc/normative/20-vision/VISION.mddoc/normative/30-core-values/CORE-VALUES.mddoc/normative/40-constitution/CONSTITUTION.mddoc/project/40-proposals/004-human-origin-flags-and-operator-participation.mddoc/project/40-proposals/021-service-offers-orders-and-procurement-bridge.mddoc/project/40-proposals/047-classification-label-propagation.mddoc/project/40-proposals/063-inquirium-model-inquiry-organ.mddoc/project/40-proposals/064-inquirium-implementation-recommendations.mddoc/project/40-proposals/066-inquirium-assistant-channel.mddoc/project/40-proposals/067-shared-offer-catalog-over-agora.mddoc/project/40-proposals/069-corpus.mddoc/project/40-proposals/070-room-primitive.mddoc/project/40-proposals/073-agent-orchestration-organ.mddoc/project/40-proposals/081-horizontal-protocol-primitives.mddoc/project/40-proposals/086-component-communication-observation-and-trace-sessions.md
Related producer contract, extended by this proposal:
doc/project/40-proposals/089-external-agent-runtime-adapter-contract.md
Related design (reuse boundary):
Proposal 091: File-backed Configuration and Explainable Composition. P091 reuses sealed-registry, bounded carrier, conservative projection and inventory-checker idioms, not inference-provenance semantics. Configuration describes intended/resolved behavior; it cannot prove realized locality or egress. The configuration contract keeps its own identities and types. This reciprocal reference does not add a P091 dependency to P090's existing completion gates.
Status¶
Accepted design, with the repository-evidenced carrier inventory and the five
V1 design questions resolved on 2026-09-04. The two canonical schemas, pure
comparison/join/projection and migration core, boundary Schema Gate, fixtures,
and layering guards are implemented by P090-003. A first producer-to-Agent
vertical is now partial: Inquirium generate and External Agent Runtime
terminal products/outcomes emit durable compatible successors, while both an
Inquirium passage and an ordinary External Agent Runtime controller step
preserve a monotone join through trace, restart replay, and agent.outcome.v2.
Real three-host Story-012 evidence now also retains the exact ordinary-controller
sidecar for the final Codex Reviewer product after a mid-passage Agent restart;
this is a bounded producer-to-Agent acceptance slice, not completion of the
cross-node consumer matrix. The admitted provider registry, guided CLI/UI, and
runtime/profile operator inspection are implemented. Direct successful
generate, embed, classify, rerank, summarize, transform, image-generate,
and image-edit executions now bind exact result sidecars into durable traces from
explicit runtime characteristics; absent characteristics stay unknown, and a
typed pre-I/O generation refusal is recorded as not-dispatched. The executable
translator inventory runs its named verification sets in CI. P090-004a now
carries bound generate/embed results, sanitized failure dispatch evidence,
generate-backed translation, current embedding cache/restart and exact Agent
passage ancestry through a compatible shared V2 envelope. Optional scoped
Agent/external-runtime invocation preflight precedes new I/O and does not block
historical replay. Other operation terminals, general public V2 negotiation,
batch embedding, training, artifact/deferred/effect carriage, higher-layer
consumer policies and the complete cross-node provenance matrix remain
implementation work. Existing locality policies,
provider metadata, classification labels, origin classes, runtime traces, and
offer fields are antecedents only; none currently proves the proposal's
complete result-level vertical.
Date¶
2026-09-01
Executive Summary¶
Orbiplex should let a consumer distinguish inference performed within an operator-declared local processing boundary from inference that involved an external processing boundary. The information must remain attached to the result as higher layers transform, aggregate, cache, replay, offer, deliberate over, or present it. When policy permits, the node may also disclose one or more inference-provider references. When exact disclosure is not permitted, the fact of non-local processing must remain visible.
This proposal introduces two separate semantic targets:
inference-execution-posture.v1 for a scoped pre-execution declaration and
inference-execution-provenance.v1 for an immutable, provider-neutral
description of one realized execution path or one terminal operation whose
dispatch state is known or ambiguous. Together they keep three facts from being
collapsed:
- pre-execution posture — what a profile, participant binding, or service offer declares it may do;
- realized per-result provenance — what is known about the execution that produced this exact result;
- evidence basis — why the emitting node is entitled to make each claim.
The propagation rule resembles taint tracking internally, but public contracts do not call non-local inference "tainted." Non-local processing is not contamination. It is a material execution characteristic that can affect consent, routing, disclosure, filtering, and presentation.
The contract is deliberately cumulative rather than absolute. It cannot prove physical locality against a dishonest node, a compromised runtime, or an adapter that conceals another provider hop. It can make honest implementations more transparent, preserve uncertainty, and prevent known non-local processing from silently becoming "local" as data crosses architectural layers.
Context and Problem Statement¶
Orbiplex already has several pieces of the intended mechanism:
- model-runtime catalog entries describe runtime locality, egress policy, adapter provider, transport, model binding, and trust posture;
- Inquirium performs pre-I/O locality, classification, and egress admission;
- external Agent runtime profiles declare transport, retention, authentication, and egress constraints;
- classification labels propagate conservatively under Proposal 047;
- human/model participation origin is made visible by Proposal 004;
- Corpus service offers may describe a coarse model class;
- communication observations and execution receipts can support evidence refs.
Those pieces answer different questions. A selection policy says what may be used. A runtime catalog says what is configured. A transport says how the host reaches an adapter. A trace says what one observation point recorded. None of them, alone, is a portable statement of how one exact inference result was produced.
Today this information narrows at the Inquirium result boundary. Runtime and model-binding refs survive, and some provider/model details survive in local diagnostics, but higher-level products do not receive one typed execution- provenance value. Agent, Corpus, Room, and Assistant therefore cannot preserve, join, filter, or present the characteristic without reverse-engineering local catalog state or relying on naming conventions.
That reverse inference is unsafe. A local process or local HTTP sidecar may call a remote provider. Conversely, an operator-controlled model may run on another machine that still belongs to the policy's declared local processing boundary. Transport location, model name, adapter name, and processing locality are related observations, not synonyms.
The missing abstraction is a small horizontal value that carries known execution origin and uncertainty without becoming an identity, authority, classification, or provider-specific protocol.
Normative and architectural lineage¶
This proposal operationalizes existing commitments rather than creating a new normative authority. Local-first operation, user and data sovereignty, minimal disclosure, layered audit traces, and explicit model-backed inference already come from the Vision, Core Values, and Constitution. The proposal compresses those commitments into a project-level data contract and newly determines the join, evidence, projection, and consumer boundaries needed to implement them.
The stratified chain is:
locality, agency, privacy, and transparent model use
-> explicit and minimally disclosed processing facts
-> inference execution provenance contract
-> producer derivation and monotone propagation
-> consumer policy, filtering, and presentation
-> schemas, ledgers, fixtures, tests, and runtime evidence
Goals¶
- Give every inference-derived result a typed, immutable execution-provenance descriptor or exact content-addressed reference to one.
- Represent terminal pre-dispatch refusal without falsely claiming unknown inference execution.
- Distinguish an advertised pre-execution posture from realized per-result provenance.
- Preserve known non-local or mixed processing through higher-layer transformations, aggregation, cache, replay, and cross-node carriage.
- Preserve uncertainty instead of treating missing metadata as local execution.
- Let providers be identified through optional, open, namespaced references without defining a closed global provider enumeration.
- Support selective disclosure: provider identity may be redacted while the non-local characteristic and evidence limits remain visible.
- Let Corpus consumers filter offers by declared posture and validate delivered results against that declaration.
- Let Room and Assistant surfaces warn, label, or restrict non-local and unknown inference according to local policy.
- Reuse P081 receipts and P086 observations as evidence references without turning either diagnostic subsystem into the semantic owner.
- Keep the contract small enough for pure join and projection functions, schema fixtures, replay tests, and independent implementations.
Non-Goals¶
- No proof of physical locality against a dishonest or compromised node.
- No promise that an adapter or provider has disclosed every hidden downstream processor.
- No provider reputation, trust ranking, certification, or allowlist imposed by this proposal.
- No closed catalog of deliberation profiles, problem domains, provider names, or acceptable evidence policies.
- No reinterpretation of local inference as inherently trustworthy or non-local inference as inherently untrustworthy.
- No addition of locality or provider identity to the classification lattice.
- No replacement of human/model participation origin from Proposal 004.
- No promotion of runtime sessions, provider accounts, endpoints, request ids, or credentials to Agent, Room, or Corpus identity.
- No new capability, grant, membership, or publication authority derived from a provenance descriptor.
- No requirement to disclose exact provider identity when policy requires a coarser projection.
- No use of optional communication tracing as the only source of mandatory provenance.
Terminology¶
| Term | Meaning |
|---|---|
| Local processing boundary | Versioned, operator-admitted boundary relative to which locality is asserted. It may be narrower than an organization and broader than one process, but its meaning must not be inferred from a hostname or transport. |
| Pre-execution posture | Signed or locally admitted statement of what an offer, runtime profile, or scoped participant binding may use before a particular invocation occurs, relative to an exact processing-boundary ref and assertion scope. |
| Realized provenance | Immutable claim about the dispatch, locality, egress, processors, and evidence of one exact result or terminal operation. |
| Evidence basis | Typed reason supporting one provenance claim, such as host-enforced no-egress, host-selected runtime profile, host-observed egress, adapter report, provider report, peer attestation, or derivation from parent values. |
| Provider ref | Optional opaque namespaced reference identifying a processor or inference service. Values are open; the shared schema does not enumerate providers. |
| Provenance projection | Policy-governed reduction of a fuller local descriptor for another consumer. Projection may remove details but may not strengthen evidence or erase known non-local processing. |
| Provenance join | Pure conservative combination of parent descriptors into a descriptor for a derived or aggregate result. |
| Unknown | An explicit absence of sufficient evidence for a claim after possible execution. It never means local. |
| Not dispatched | Host-established fact that provider/runtime I/O for the scoped inference did not begin. It is distinct from unknown execution. |
The word posture in this proposal is always qualified as inference execution
posture: a workload-scoped pre-execution declaration. It is not
topology/host-posture, node-extension-posture.v1, an extension-posture
evaluation, or an unqualified posture/ref/posture/digest from those contract
families. Their refs, digests, evidence, and policy meanings are not
interchangeable. The qualified inference-execution-posture.v1 name is retained
because it describes an admitted operational stance rather than merely the fact
that a declaration was serialized.
Proposed Model / Decision¶
Decision 1: Posture, realized provenance, and evidence remain separate¶
The system must not use one remote Boolean for three different claims.
| Stratum | Question | Typical owner | May drive |
|---|---|---|---|
| Pre-execution posture | What processing may this offer, binding, or profile use? | profile owner, offer signer, participant-binding owner | admission, routing, consent, filtering |
| Realized provenance | What is known about the path that produced this exact result? | host boundary that admitted and observed execution | result labels, downstream joins, policy validation, presentation |
| Evidence basis | Why may the node make that claim, and with what limitation? | host evidence assembler; peer only attests to its own claim | assurance policy, warning strength, audit |
Posture is an open characteristic map. Its small common locality vocabulary is:
local-only;may-use-non-local;non-local-required;unknown.
Posture has its own contract, inference-execution-posture.v1; it is not a
projection of realized provenance. The contract binds at least:
- the assertion owner and the offer, runtime profile, participant binding, or other exact subject;
- the versioned local-processing-boundary ref against which locality words are interpreted;
- the scope, generation or validity interval, and shared locality commitment;
- optional open provider refs, their disclosure state, namespaced extensions, and locally admitted evidence requirements.
An assertion that crosses an ownership boundary is signed. A locally admitted
assertion retains equivalent owner, generation, and boundary binding in durable
host state. Absence, invalidity, expiry, or a missing boundary ref becomes
explicit unknown; it never becomes local-only.
The existing model-runtime LocalityMode and TrustMode values are legacy
admission and routing inputs, not realized provenance and not sufficient evidence
of locality. In particular, TrustMode names whether the legacy routing surface
is restricted to, prefers, or is capable of admitting non-local candidates; it is
not provider trust, evidence strength, or cryptographic assurance. Migration to
the shared posture vocabulary is total and conservative:
| Legacy catalog/profile facts | P090 posture result | Preserved qualification |
|---|---|---|
Candidate policy and capabilities are both LocalOnly, trust mode is StrictLocal, and the host binds an exact admitted processing boundary plus the required enforcement facts |
local-only |
This remains a pre-execution commitment, never realized proof. |
Any complete legacy tuple contains LocalPreferred, RemoteAllowed, or RemoteCapable |
may-use-non-local |
LocalPreferred may survive as an optional namespaced routing preference; it is not a separate shared locality ceiling. |
| A new explicit binding requires processing outside the admitted boundary | non-local-required |
There is no lossless legacy equivalent; this value must be declared explicitly. |
| A required legacy field or boundary binding is missing, invalid, stale, or cannot be reconciled | unknown |
No Rust or schema default may strengthen it to local-only. |
At a deserialization or migration boundary, an enum's Rust Default
implementation is never locality evidence. Raw legacy DTOs therefore keep
locality and trust inputs required or optional until explicit validation and
migration completes. Builders, container defaults, and unwrap_or_default()
paths are subject to the same rule. An absent profile override may mean only “no
additional override”; it cannot repair absent candidate facts or establish local
execution.
This vocabulary describes one horizontal dimension, not a closed repertoire of profiles. Operators and communities may add namespaced characteristics and evidence requirements without changing the shared core. An offer or Room policy may require stronger evidence than another without creating a universal catalog of acceptable deliberation meanings.
Two posture or locality assertions are directly comparable only when they name
the same boundary ref or when local policy admits an explicit, versioned
equivalence or containment relation between their boundaries. Otherwise a
federated filter returns non-match or unknown according to caller policy; it
must not reinterpret another operator's local-only as its own.
Realized provenance never inherits a favorable posture merely because the profile promised it. It is derived from the selected binding and host-known execution facts after dispatch. A mismatch between posture and realized provenance is a policy violation or typed uncertainty, not a reason to rewrite the result metadata.
Decision 2: inference-execution-provenance.v1 is a horizontal value¶
The canonical contract uses one deterministic representation rule: carry the
bounded descriptor inline together with its digest at or below the V1 canonical
byte threshold, and carry an immutable content-addressed ref above that threshold.
P090-003 freezes the exact threshold as a schema/core constant. In either form,
descriptor/id is always the sha256: digest of the same domain-separated
canonical semantic identity material, not a random identifier or a digest of the
carrier wrapper. V1 uses CanonicalJsonProfile::JcsV1 and
sha256_base64url_canonical_json_prefixed; the identity material includes a fixed
descriptor-type domain and excludes only the self id, signature, carrier wrapper,
and explicitly enumerated presentation-only fields. It never excludes locality,
egress, dispatch, evidence/disclosure completeness, boundary, subject, or lineage
semantics.
Its semantic fields are:
| Field family | Required semantics |
|---|---|
| Contract and scope | Exact schema id, descriptor id/digest, subject result or terminal-operation ref, producing node or host assertion ref, and timestamp or sequence context. |
| Dispatch | not-dispatched, dispatched, or ambiguous, scoped only to the provider/runtime I/O for this invocation. |
| Locality | local, non-local, mixed, unknown, or not-applicable, interpreted relative to an exact local-processing-boundary ref. |
| Input egress | none, possible, occurred, or unknown, independent from transport kind and data classification. |
| Provider disclosure | Bounded open provider/refs, plus whether the set is complete, partial, withheld, or unknown. |
| Execution bindings | Optional runtime, adapter-profile, model-binding, model-snapshot, and external-runtime-profile refs that remain meaningful under the selected projection. |
| Evidence | Bounded typed assertions naming their basis, asserting subject, evidence refs, and any scope or completeness limitation. |
| Lineage | Bounded parent provenance refs or one content-addressed aggregate ref sufficient to reproduce the join. |
| Extensions | Bounded namespaced values admitted by policy; extensions cannot redefine core fields or authority. |
not-dispatched is required for a host refusal that occurs before provider or
runtime I/O. Such an outcome records locality=not-applicable and
input-egress=none; it must not synthesize unknown execution. Every
inference-derived result and every terminal outcome after a possible dispatch
must carry or reference a descriptor. ambiguous dispatch preserves the fact
that egress or provider execution may have occurred even when no result was
committed.
The exact JSON field spelling, size ceilings, inline threshold, identity-material projection, and conditional requirements belong to the canonical schema tasks. Those details may not weaken the semantic distinctions frozen here.
Decision 3: Locality is relative to an admitted boundary, not a transport¶
local means that the emitting host has sufficient evidence that the scoped
inference remained within the exact operator-admitted local processing boundary.
It does not mean:
- the adapter process used loopback;
- the transport was stdio or a Unix socket;
- the model name appeared in a local catalog;
- the endpoint was configured by the local operator;
- the result arrived through a local Agent process.
A local Python sidecar calling the OpenAI API is non-local. A local Codex/App Server process using a provider-managed inference service is non-local. An operator-controlled runtime on another host may count as local only when the referenced boundary policy explicitly includes it and the evidence basis supports that claim.
Boundary-relative locality does not grant access to a host-local data plane. A
runtime on another admitted host may be local for P090 while remaining unable
to dereference this host's file:// path. Raw file-lease eligibility is a
separate operation-scoped decision over placement, reachability, lease policy,
canonical containment, and egress controls; cross-host data uses an admitted
artifact or object-store carrier. Conversely, a co-located loopback sidecar may
have file reachability while its provider inference is non-local. Neither
decision may be derived from the other.
The boundary ref is part of claim interpretation. A receiving node treats another node's locality as a peer assertion relative to the sender's boundary; it must not silently reinterpret that claim as host-observed locality relative to its own boundary.
Decision 4: The host derives provenance; adapters contribute evidence¶
The host boundary that admits the runtime/profile and observes dispatch owns the realized descriptor. An adapter may report provider, model, request, or downstream processing information, but it cannot lower host-known egress, replace the selected runtime facts, or self-certify local execution.
Evidence basis is not a single confidence score and has no universal total ordering. At minimum the schema must distinguish:
host-enforced-no-egress;host-observed-egress;host-selected-profile;adapter-declared;provider-declared;peer-attested;derived;unknown.
An implementation may admit additional namespaced evidence classes. It may not
promote adapter-declared or peer-attested to host-observed merely because a
signature verifies. A signature authenticates the assertion and signer, not the
physical truth of the asserted processing path.
P081 execution receipts and P086 communication observations may appear as evidence refs. P081 continues to own causal/execution linkage, and P086 continues to own optional diagnostic observation. The provenance descriptor owns the portable semantic claim.
The existing model-runtime EgressPolicy is configuration and admission input,
whereas P090 input-egress is a realized observation or enforced fact for one
invocation. They are connected conservatively:
| Host-known state | Realized input-egress |
|---|---|
| Refusal proven before provider/runtime I/O | none, together with dispatch=not-dispatched; catalog policy is irrelevant to that invocation. |
| Every relevant execution path is host-enforced no-egress for the complete invocation scope | none, with host-enforced-no-egress evidence. An empty allowed_domains, offline_ok=true, or a local transport is not sufficient without enforcement. |
| Dispatch occurred through a path that may egress, but no observation proves whether it did | possible. |
| The host observed an outbound write or received a dispatch-bound provider acknowledgement | occurred, with the corresponding observation/ref. |
| Dispatch or observation coverage is incomplete in a way that cannot establish even the preceding cases | unknown. |
allowed_domains, proxy_profile, offline_ok, and on_error may constrain
admission or posture, but configuration alone never proves occurred and cannot
prove none. Conversely, an observed or acknowledged egress cannot be lowered by
a more favorable configured policy.
Decision 5: Propagation is monotone and joins are conservative¶
Any component that derives a result from inference-derived inputs must either:
- preserve the exact descriptor when the result is only a carrier or lossless projection; or
- compute a new descriptor with the canonical pure join and retain bounded parent lineage.
The following invariants are mandatory:
- known non-local participation cannot become
local; localis emitted only when all relevant paths are known local under the same compatible boundary and evidence is sufficient;- local plus non-local becomes
mixed; - non-local plus unknown remains at least non-local, while evidence completeness records that other paths remain unresolved;
- local plus unknown becomes
unknown, not local; occurredegress cannot becomepossible,none, or absent;noneis emitted only when all relevant paths establish no scoped input egress;- provider refs form a bounded set union; redaction changes disclosure completeness but not known locality;
- cache and exact replay reproduce the original descriptor id and semantics;
- a summary may point to bounded parent evidence, but truncation is explicit and never presented as complete lineage;
- missing legacy metadata migrates to
unknown, neverlocal.
The fold over no inference parents returns locality=not-applicable only when the
producer proves that the parent set is complete and that the result is a purely
deterministic, non-inference transform. not-applicable is then the join identity
for such irrelevant parents. An empty set caused by missing, stripped, truncated,
or unversioned inference lineage becomes unknown or a typed refusal according to
policy; it must not use this identity rule.
The pure core must define a table-driven join for locality, dispatch, egress,
provider disclosure, evidence completeness, and lineage bounds. A consumer must
not reimplement the join from prose, runtime names, or provider-specific rules.
The locality table covers all 25 ordered pairs, and exhaustive plus property tests
cover commutativity, associativity, idempotence, permutation invariance over
parent multisets, identity for proven not-applicable, and monotone preservation
of known exposure and uncertainty. The tests apply to the complete value and its
explicit completeness fields rather than assuming a misleading total order over
the locality labels alone.
Decision 6: Selective disclosure narrows detail, not the material fact¶
The local full descriptor may contain provider refs, local runtime refs, model snapshots, and detailed evidence refs. A projection for Room, Corpus, Assistant, or another node discloses only what its policy and classification allow.
Projection rules are asymmetric:
- exact provider refs may become a provider class, withheld marker, or omitted set with explicit incomplete disclosure;
- local paths, endpoints, account ids, session/thread refs, credentials, provider request ids, and raw diagnostic payloads are never required public fields;
- known
non-localormixedlocality survives provider redaction; - known egress survives redaction;
- evidence strength may be preserved or weakened, never strengthened;
- the receiver records the sender's signed assertion as
peer-attestedeven when the enclosed sender evidence cites stronger local observations; - projection must not make a partial provider set appear complete.
Projection is a pure function project(full, policy) -> projected. Every
projection has its own canonical projection digest and names the unchanged source
descriptor/id; it does not reuse the full descriptor's content digest after
redacting semantic bytes. Property tests require every admitted policy to preserve
or conservatively weaken locality, input egress, disclosure completeness, and
evidence basis, never strengthen them. Presentation-only wording may be excluded
from the source semantic identity exactly as enumerated by the canonical contract;
provider disclosure and other material semantics may not be erased under that
label.
This preserves the Constitution's layered-trace and minimal-disclosure model: the full local trace may be richer than a federated projection without making the projection misleading.
Decision 7: Producers and consumers have distinct ownership¶
| Layer | Responsibility |
|---|---|
| model-runtime / external runtime host | Describe admitted profile facts, dispatch state, host-observed egress, and adapter/provider assertions without inventing domain authority. |
| Inquirium | Emit or reference realized provenance on every inference-derived result and post-dispatch terminal outcome; retain it in operation traces, artifacts, cache, and replay. |
| Orbiplex Agent | Preserve or join provenance across passages and external-runtime products; expose it through Agent product/outcome contracts without provider-native session semantics. |
| Other Inquirium/Agent result translators | Declare a compatible successor or immutable sidecar carrier and preserve or conservatively join provenance; this includes Whisper redaction preparation, Semantic Index embedding projections, and generic workflow/JSON-e/Flow result translations. |
| Shared Offer Catalog | Index signed pre-execution posture and disclosed provider characteristics; support exact query/filter semantics without claiming that an offer proves a future execution. |
| Dator / service-order result producer | Bind the producer's realized descriptor or immutable sidecar ref to a compatible result contract; never synthesize provenance from offer posture. |
| Artifact Delivery | Carry the bound descriptor or sidecar opaquely with content, identity, digest, and correlation protection; do not reinterpret locality or evidence. |
| Arca / buyer host | Verify and preserve the producer assertion, retain Artifact Delivery provenance, compare boundaries explicitly, and apply buyer policy without upgrading peer evidence. |
| Corpus | Route by offer posture, validate delivered provenance against the selected offer and policy, and preserve realized provenance in answers/drafts/publication candidates. |
| Room | Carry per-contribution provenance or a stable ref; derive scoped display aggregates without changing participant identity or membership authority. |
| Assistant Channel | Present preflight disclosure before admitted non-local egress and post-result provenance after execution; preserve it in response, transcript, trace, and activity projections. |
| P081 / P086 mechanisms | Supply causal, receipt, or observation evidence refs; do not own the result-level semantic descriptor. |
| Receiving node or client | Verify framing/signature, preserve assertion provenance, apply local admit/warn/filter policy, and never upgrade peer evidence. |
Carrier inventory and compatibility migration plan¶
The P090-001a audit below records the current repository carriers rather than
an aspirational component list. A major successor is required when the
consumer interprets the result and absence of provenance would change admission,
completion, or product meaning. A bound sidecar/ref is appropriate when the
carrier transports or stores an opaque product and can bind the descriptor to
the exact content digest and result identity without interpreting it. Internal
provider-edge DTOs remain provider evidence inputs and do not become realized
provenance owners.
| Current owner and carrier | Current inference relationship | V1 migration assignment | Repository evidence |
|---|---|---|---|
model-runtime catalog, RuntimeCandidateConfig, AdapterInstanceConfig, and ModelRuntimeProfile |
Selection and admission inputs, not realized results | Compatible local configuration additions may bind posture and processing-boundary refs; current LocalityMode/TrustMode migrate conservatively and never become realized proof. |
node:model-runtime/src/lib.rs |
Inquirium GenerateResponse |
Direct inference result and common lower carrier for summarize, transform, Agent, Corpus, JSON-e Flow, and Assistant | inquirium.generate.response.v2; V1 remains readable only as provenance unknown or through an exact bound sidecar. |
node:inquirium-core/src/lib.rs, node:inquirium-host/src/lib.rs, node:daemon/src/model_runtime_host.rs |
Inquirium EmbeddingResponse |
Direct embedding result; cached and consumed by future Semantic Index projections | inquirium.embed.response.v2; exact cache replay preserves its descriptor identity. V1 cache entries migrate to unknown, never current catalog facts. |
node:inquirium-core/src/lib.rs, node:daemon/src/model_runtime_host.rs, node:daemon/src/inquirium_response_cache.rs |
Inquirium BatchEmbeddingResponse |
Artifact-producing batch inference | inquirium.batch-embed.response.v2; the artifact also carries a content-bound descriptor sidecar/ref so an opaque store does not need to interpret it. |
node:inquirium-core/src/lib.rs, node:daemon/src/model_runtime_host.rs |
Inquirium ClassifyResponse and RerankResponse |
Direct interpreted inference results | inquirium.classify.response.v2 and inquirium.rerank.response.v2. |
node:inquirium-core/src/lib.rs, node:daemon/src/model_runtime_host.rs |
Inquirium SummarizeResponse and TransformResponse |
Lossy translations of GenerateResponse |
inquirium.summarize.response.v2 and inquirium.transform.response.v2; conversion preserves the exact descriptor for one-parent projection or performs the canonical join. |
node:inquirium-core/src/lib.rs, node:daemon/src/host_capabilities_host.rs |
Inquirium ImageResponse |
Host-verified artifact result shared by image generation and editing | inquirium.image.response.v2 plus a content-bound artifact sidecar/ref. |
node:inquirium-core/src/lib.rs, node:daemon/src/model_runtime_host.rs, node:daemon/src/host_capabilities_host.rs |
training adapter TrainAdaptAdapterResponse |
Private provider-edge response, followed by host evaluation and artifact publication | Keep the private adapter DTO as evidence input. Bind realized provenance to the host-published artifact and deferred terminal result through an immutable sidecar/ref; do not call adapter self-report realized provenance. | node:inquirium-core/src/lib.rs, node:daemon/src/inquirium_training_worker.rs, node:daemon/src/deferred_registry.rs |
AssistantTurnResponse and retained transcript facts |
Assistant-visible projection and durable transcript of generate output | inquirium.assistant.turn.response.v2 and a compatible transcript-fact successor; preflight posture remains separate from the result descriptor. |
node:inquirium-core/src/lib.rs, node:daemon/src/host_capabilities_host.rs, node:daemon/src/inquirium_transcript_projection.rs |
| model invocation traces and deterministic response cache | Local diagnostics and replay state | Add an immutable descriptor/ref to the trace and cache record. Exact replay returns the original descriptor; V1 cache absence becomes unknown. |
node:daemon/src/middleware_host.rs, node:daemon/src/inquirium_response_cache.rs, node:daemon/src/model_runtime_host.rs |
ExternalRuntimeProduct and ExternalRuntimeTurnOutcome |
Provider-neutral external-Agent result and terminal state | agent.external-runtime.product.v2 and agent.external-runtime.turn-outcome.v2; provider-native sessions, accounts, endpoints, auth, and request ids stay private. |
node:external-agent-runtime-core/src/lib.rs, node:daemon/src/external_agent_runtime.rs |
AgentInferencePassageProduct, AgentInferenceTerminalSelection, and AgentInferencePassageTrace |
Agent passage product, selected lineage, and replay trace | Compatible V2 successors; every inference parent is preserved or canonically joined before terminal selection. | node:agent-core/src/passage.rs, node:daemon/src/agent_runtime.rs, node:daemon/src/agent_memarium_store.rs |
AgentOutcome and Assistant draft projection |
Interpreted terminal Agent product | agent.outcome.v2 and a compatible Assistant draft successor. V1 is historical and is not extended in place. |
node:agent-core/src/lib.rs, node:daemon/src/agent_runtime.rs, node:daemon/src/host_capabilities_host.rs |
| JSON-e Flow and generic middleware envelopes/traces | Declarative translation and routing of Inquirium or Agent results | Carry a schema-gated content-bound provenance sidecar/ref in the workflow envelope and trace; JSON-e must not reimplement join or infer locality. | node:middleware-runtime/src/json_e_executor.rs, node:daemon/src/middleware_host.rs, node:middleware-runtime/fixtures/json-e-flow/ |
| Whisper redaction prepare request/response | Currently deterministic JSON-e/Sensorium transform; future implementations may use Inquirium | Preserve a bound provenance sidecar/ref when the selected implementation has inference ancestry. Deterministic no-inference execution uses the proven empty-fold identity; missing ancestry does not. | node:whisper-intake/src/lib.rs, node:middleware-runtime/fixtures/json-e-flow/whisper-redaction/ |
| Semantic Index embedding row/projection | Planned rebuildable consumer of Inquirium embeddings; no current Node runtime carrier exists | Require a content-bound descriptor/ref in the first durable row schema rather than introducing a legacy provenance-free row. | orbidocs:doc/project/60-solutions/022-semantic-index/022-semantic-index.md; no implementing Node crate exists as of the audit |
service-offer.v1 and Shared Offer Catalog projections |
Pre-execution declaration and indexing | Add the separate posture through a compatible offer successor or signed characteristic sidecar; never place realized provenance in an offer. | orbidocs:doc/schemas/service-offer.v1.schema.json, node:catalog/, node:daemon/src/catalog_host.rs |
service-order.result.v1, Dator result production, and Arca admission |
Interpreted remote procurement result | Compatible result successor or mandatory content-bound sidecar/ref. Producer assertion, Artifact Delivery transport provenance, and buyer verification remain distinct. | orbidocs:doc/schemas/service-order-result.v1.schema.json, node:daemon/src/execution_host.rs, node:daemon/src/settlement_host.rs |
| Artifact Delivery envelopes, object pointers, results, and retained artifacts | Opaque transport and storage | Carry the immutable sidecar/ref with exact artifact, result, and digest binding; Artifact Delivery does not interpret locality. | node:artifact-delivery-core/, node:artifact-delivery/, orbidocs:doc/schemas/artifact-delivery-envelope.v1.schema.json |
| Corpus query/bid/answer, draft, experiment-review, and publication paths | Offer selection plus interpreted deliberation products | Posture enters a compatible offer/query binding; realized result contracts that affect validation or publication receive major successors. Domain-specific review claims remain orthogonal. | node:corpus-core/src/lib.rs, node:daemon/src/corpus_host.rs, orbidocs:doc/schemas/corpus-reasoning-answer.v1.schema.json |
| Room live messages, relay delivery, durable events, and read models | Per-contribution carriage and participant aggregate projection | Compatible message/event successors carry a descriptor or immutable ref; relay carriers transport it opaquely. Participant posture and badges remain scoped read-model data, not membership identity. | node:room-core/src/lib.rs, node:room-service/, node:room-wss/, orbidocs:doc/schemas/room-live-message.v2.schema.json |
| P081 receipts and P086 observations | Causal and diagnostic evidence | Reuse as bounded evidence refs. Neither contract is extended into a competing inference-provenance vocabulary. | node:horizontal-protocol-core/, node:communication-trace-core/ |
This inventory is also the initial layering allowlist for P090-003. Adding a
new inference-derived translator without assigning a successor or bound sidecar
is a promotion-blocking compatibility change, not an implicit extension of V1.
No consumer may infer the characteristic from adapter name, model name, host
label, URL shape, or transport. If the producer contract is absent during
migration, the consumer receives unknown or refuses according to policy.
Decision 8: Corpus posture is open and result validation is separate¶
corpus/model-class currently mixes execution locality (local-llm,
remote-llm) with authorship/production mode (human-curated,
hybrid-llm-curated). It is therefore not the source of truth for this
proposal.
Service offers should expose a general, namespaced inference-posture
contract that can state the shared locality ceiling and optional open provider
refs. It binds the exact assertion owner, scope, generation or validity, and
local-processing-boundary ref. Communities may define additional profile and
evidence criteria. The Shared Offer Catalog indexes only registered bounded
characteristics and does not impose a global repertoire of deliberation
meanings. A query compares matching or explicitly related boundaries; an
unrelated sender boundary is non-matching or unknown, never silently local.
The selected provider's actual result must still carry realized provenance. A
local-only offer followed by a non-local, mixed, or insufficiently evidenced
result is refused, quarantined, or surfaced as a typed contract violation
according to the consuming policy. The catalog declaration is not retroactive
proof.
The legacy corpus/model-class may remain as a compatibility projection while
consumers migrate. It must not be extended into a second provenance vocabulary.
The 2026-09-05 procurement implementation freezes the exact selected declaration
and host selection time before dispatch. Scope and the half-open validity
interval are checked at selection; later delivery does not replace that promise
with today's catalog generation or a new expiry check. Existing catalog
admission still owns source/signature authority. Realized-result comparison and
buyer consumption policy are independent conjunctions. Unknown handling follows
the admitted buyer policy, defaulting to denial when a selected declaration has
no explicit policy. A known contradiction remains a denial. Complete declared
provider refs bound the set of possible providers, including a complete empty
set; partial declarations do not assert a closed set. Evidence requirements are
matched against bases actually verified by the receiving boundary, not labels
inside an unverified peer claim. The initial remote receiving path supplies only
peer-attested; stronger or namespaced requirements need an admitted verifier.
This generic procurement checkpoint does not implement Corpus output carriage.
Decision 9: Room posture is scoped; realized provenance is per contribution¶
Whether an Agent may use non-local inference is not a permanent property of its identity. It may vary by runtime binding, task, Room policy, turn, or operator choice.
Room may therefore carry:
- a signed, scoped participant posture for admission and presentation;
- realized provenance on each inference-derived contribution or product ref;
- a read-model aggregate such as "non-local inference observed" and a bounded disclosed-provider set.
The aggregate is derived presentation metadata, not membership authority. A
provider runtime never becomes the speaking participant, and an exact provider
session never enters membership or floor-control semantics. Room policy may
deny, warn, or allow non-local, mixed, or unknown contributions, but the
policy decision does not rewrite their provenance.
Decision 10: Assistant disclosure has both preflight and post-result phases¶
Before any admitted non-local inference I/O, Assistant must show the operator
the host-admitted non-local inference-execution-posture.v1 value and, when
local operator disclosure policy permits, the provider ref. This preflight
disclosure is unconditional for the admitted non-local route. Consent or an
explicit acknowledgement remains a separate authority decision required when
the local classification/context policy demands it; when required, it is bound
to the posture assertion owner, exact runtime/profile generation,
processing-boundary ref, classification ceiling, context digest, purpose, and
expiry already owned by the Assistant/Inquirium path. The posture is policy
input, not authority by itself.
After execution, the response and activity projection show realized locality, egress, provider disclosure state, and evidence limitation. Preflight consent is not substituted for post-result provenance. A route change, ambiguous dispatch, or provider mismatch is visible even if the operator previously approved a different route.
Decision 11: Classification and participation origin remain orthogonal¶
Classification answers what may flow and which gates must enforce it. Human/model origin answers how a contribution entered the social transcript. Inference execution provenance answers where and through which disclosed processing relationship model-backed computation occurred.
They compose but do not merge:
Classified<Originated<Provenanced<T>>>
The notation is illustrative, not a required Rust wrapper layout. A component may use an envelope or refs as long as it preserves all three contracts. No classification downgrade follows from local execution, and no classification upgrade follows merely from non-local execution. Existing Proposal 047 join and Proposal 004 origin rules remain authoritative for their own dimensions.
Decision 12: Honest provenance is not a locality guarantee¶
The descriptor can establish only what follows from its stated evidence. A signed peer may lie. A local adapter may conceal a provider cascade. A provider may subcontract processing. A compromised host may suppress an observation.
Consumers may require stronger evidence profiles, independent network controls, attestation, or local-only execution for sensitive work. Those policies are open and operator/community-defined. This proposal provides the shared facts and uncertainty needed to apply them; it does not claim to solve remote attestation or supply-chain truth.
Concrete Scenarios¶
Scenario A: Inquirium OpenAI through a local sidecar¶
The daemon selects an admitted OpenAI Responses adapter implemented as a local
Python process. The Assistant has a may-use-non-local posture and asks for
operator admission before sending protected context. The local sidecar calls a
provider-managed API.
The host does not infer locality from stdio or loopback. The completed response receives:
dispatch=dispatched;locality=non-localrelative to the node's admitted boundary;input-egress=occurred;- an optional open ref such as
inference-provider:openaiwhen disclosure is permitted; - host-selected-profile and host-observed-egress evidence, plus separately scoped adapter/provider declarations;
- the selected runtime, adapter profile, model binding, and model snapshot refs allowed by projection policy.
An Agent passage consuming the result preserves that provenance. The Assistant shows a non-local result marker even though the adapter process itself was local.
Scenario B: Codex-backed External Agent Runtime¶
Orbiplex Agent invokes the admitted openai-codex external-runtime profile over
local stdio. The provider runtime maintains a remote working session and returns
a critique candidate. The speaking Room actor remains the Orbiplex Agent.
The Agent external-runtime product receives non-local realized provenance. The
provider session/thread ref stays private to the fenced adapter checkpoint. A
Room projection may disclose inference-provider:openai or only
provider-disclosure=withheld; both projections retain locality=non-local.
The Room read model may show that non-local inference was observed for this
participant without calling Codex a Room member.
Scenario C: Corpus offer and delivered result¶
A Corpus provider signs an offer with:
- the shared posture
may-use-non-local; - the provider's exact local-processing-boundary ref and assertion scope;
- optional disclosed provider refs;
- a community-defined evidence-profile ref.
One buyer allows only local-only; the Shared Offer Catalog excludes this offer
without knowing the topic's semantic profile. Another buyer admits it but denies
one provider ref. A third selects it and receives a result whose realized
provenance is mixed. Corpus compares that result with the offer and buyer
policy, preserves the descriptor in its answer lineage, and either accepts,
warns, or refuses by explicit policy. It does not rewrite mixed to the offer's
pre-execution declaration.
Scenario D: Room aggregation¶
A Room participant contributes two Agent products: one from a local model and
one from a non-local provider. Each contribution carries its own provenance ref.
The Chair synthesizes them with a local model. The Chair's output joins all
parents and becomes mixed; the additional local transform does not erase the
known non-local parent.
Another node receives a redacted signed projection. It records the claim as peer-attested, preserves the mixed locality, and does not pretend it observed the sender's egress itself.
Scenario E: Refusal and ambiguous dispatch¶
A local-only request selects no admissible candidate. The host refuses before
runtime I/O and records dispatch=not-dispatched,
locality=not-applicable, and input-egress=none. It does not create an
unknown inference result.
In a different request, a remote write begins and the adapter connection drops
before the host can establish whether the provider accepted it. The terminal
operation records dispatch=ambiguous, preserves the remote selected-profile
fact, and uses input-egress=possible or occurred according to host evidence.
It cannot be replayed as a fresh "local" result.
Acceptance Matrix¶
| Case | Required evidence | Expected provenance | Required consumer behavior |
|---|---|---|---|
| Native MLX or llama-server wholly inside an admitted local boundary | host-selected profile plus enforced no-egress evidence | local, none |
Preserve; no remote warning unless local policy adds one. |
| OpenAI API reached by a loopback/stdio sidecar | selected external profile plus a host-observed outbound write or a successful dispatch-bound provider acknowledgement | non-local, occurred; provider optional |
Assistant preflight and post-result marker; Agent preserves. A profile alone can establish posture, not realized egress. |
| Codex/App Server reached over local stdio but using provider inference | admitted external-runtime profile and driver dispatch evidence | non-local, occurred or conservatively possible |
Provider session remains private; Agent/Room carry generic provenance. |
| Result combines local and non-local parents | complete parent refs and canonical join | mixed; known egress retained |
Every aggregate and publication candidate preserves mixed lineage. |
| Known non-local parent plus unknown parent | parent refs and incomplete-evidence marker | at least non-local, with incomplete evidence |
Never present as complete or local. |
| Provider identity redacted | local full descriptor plus policy projection receipt | locality unchanged; provider disclosure withheld or partial |
Filtering by locality still works; exact-provider filter treats identity as unavailable. |
| Peer supplies signed locality claim | verified peer assertion | sender claim retained with peer-attested basis |
Receiver does not upgrade to host-observed evidence. |
| Offer posture uses an unrelated processing boundary | signed posture plus no admitted boundary relation | posture comparison is unknown or non-match |
Catalog and buyer do not treat the offer as satisfying their own local-only filter. |
| Refusal before provider I/O | host admission/dispatch evidence | not-dispatched, not-applicable, none |
Do not invent an inference result or warn that data left the boundary. |
| Dispatch outcome is ambiguous | durable dispatch intent plus missing terminal acknowledgement | ambiguous; egress possible, occurred, or unknown |
No silent retry, downgrade, or local claim. |
| Egress policy lists no domains but execution lacks complete host enforcement | catalog policy only | at most possible after dispatch; never none from configuration alone |
Do not turn offline_ok, empty allowed_domains, or local transport into observation evidence. |
| Cache hit or exact replay | original descriptor id/digest | byte/semantic identity with original provenance | No new provider claim and no metadata loss. |
| Legacy result lacks the field | version/migration evidence | explicit unknown |
Consumer follows configured deny/warn/allow policy. |
| Legacy catalog omits locality or trust facts | legacy migration DTO plus version evidence | posture/provenance unknown; malformed current catalog rejected |
No enum, container, or builder default may establish local processing. |
| Pure deterministic transform has a proven complete empty inference-parent set | producer proof of complete non-inference ancestry | not-applicable; empty-fold identity |
Do not emit warnings for a result that has no inference ancestry. Missing or stripped ancestry is not this case. |
Corpus local-only offer returns non-local or unknown result |
signed offer plus realized descriptor | original realized fact preserved | Typed refusal, quarantine, or explicit policy warning; never silent acceptance. |
| Room receives local and remote contributions from one participant | per-contribution descriptors | per-turn facts plus derived participant aggregate | Badge is read-model metadata, not participant identity or authority. |
| Hidden provider cascade is suspected but not evidenced | incomplete adapter/provider assertion | unknown, or known non-local with incomplete provider set |
UI states the limitation; no claim of physical-locality proof. |
| Downstream component strips or lowers provenance | fixture with parent descriptor and derived output | validation failure | Schema/conformance gate refuses the output. |
| Whisper, Semantic Index, or generic workflow translation consumes an inference-derived result | source descriptor plus translator ownership map | identical descriptor or canonical conservative join | Compatible successor/sidecar retains it; legacy carrier is not extended implicitly and no translator silently drops it. |
Acceptance requires positive and negative fixtures, table-driven join tests, cache/replay tests, redaction tests, cross-layer no-drop tests, and retained multi-node evidence. A schema alone is not runtime acceptance.
For the ordinary Agent controller path, the compatible migration uses an
immutable agent.controller-execution-provenance.v1 fact. It binds the exact
Agent binding, controller step, external request, retained product ref and
digest, and the provider-neutral realized descriptor. The controller execution
value carries that fact only between daemon strata; agent.step-trace.v1
references the durable fact and agent.outcome.v2 names its generic
execution-binding/ref. Neither the step nor the outcome reconstructs execution
characteristics from a runtime name, transport, model snapshot, or product ref.
Recovery must validate the fact against both the exact external-runtime V2
commit and the controller step before repairing a missing trace or outcome, and
must reject substitution, stripping, or a conflicting replay.
Trade-offs¶
| Decision | Benefit | Cost or constraint |
|---|---|---|
| Use a horizontal value rather than provider-specific flags | One contract composes across Inquirium, Agent, Corpus, Room, and Assistant. | Every producer and consumer needs a compatible migration. |
| Separate posture from realized provenance | Prevents promises and catalog metadata from becoming false execution facts. | Consumers must reason over two related values. |
| Make provider refs optional and open | Supports filtering without centralizing a provider registry or leaking identities by default. | Exact-provider filters must handle withheld and unknown explicitly. |
| Require evidence basis | Prevents signed reports from masquerading as host observation. | Descriptors and acceptance fixtures are larger. |
| Use conservative joins | Known exposure and uncertainty survive aggregation. | A derived result may remain mixed or unknown even after a local transform. |
| Define locality relative to a versioned boundary | Avoids equating hostnames and transports with trust or locality. | Cross-node consumers must interpret sender-relative assertions carefully. |
| Preserve provenance through cache and replay | Historical results retain the conditions under which they were produced. | Cache keys and stored artifacts need versioned migration. |
| Keep public term neutral | Supports transparent policy without morally ranking remote execution. | Implementers lose the shorthand of conventional taint APIs in public schemas. |
Alternatives Considered¶
One remote: true|false field¶
Rejected. It cannot distinguish permission from realized execution, unknown from local, mixed ancestry, provider redaction, or evidence basis. It also invites transport-based inference.
Reuse classification labels¶
Rejected. Classification governs allowed information flow. Processing locality and provider origin are independent characteristics. Mixing them would distort the classification lattice and make local execution appear to declassify data.
Reuse human/model origin¶
Rejected. A contribution may be model-generated both locally and remotely. Origin class and execution provenance must compose.
Keep the fact only in local traces¶
Rejected. Local traces support audit but do not give higher-level consumers a portable typed value to preserve, filter, or present. P086 may be disabled and is not a domain carrier.
Infer locality from runtime, provider, or transport names¶
Rejected. A local adapter can invoke a remote provider, names can be misleading, and catalog state can change after a result is cached or federated.
Make provider identity mandatory and public¶
Rejected. Exact identity may expose private infrastructure or provider account relationships and is unnecessary for every policy. The material locality fact and disclosure completeness remain mandatory even when identity is withheld.
Put one permanent locality attribute on a Room participant¶
Rejected. A participant may change runtime per task or turn. A scoped posture and per-contribution realized provenance preserve the temporal fact without changing identity or membership authority.
Failure Modes and Mitigations¶
| Failure | Mitigation |
|---|---|
| Local sidecar is mislabeled local although it calls an external API | Derive locality from the admitted processing boundary and profile, not adapter transport. |
| Offer or profile declaration is copied as realized fact | Require host-produced post-dispatch descriptor and validate it independently against posture. |
| Missing field is interpreted as local | Migration maps absence to explicit unknown; local requires positive evidence. |
| Adapter reports itself local and overwrites host evidence | Host owns the descriptor; lower-layer reports can only add scoped evidence and cannot weaken host-known facts. |
| Provider redaction removes the non-local marker | Projection tests require locality and egress to survive detail redaction. |
| A peer signature is treated as physical-locality proof | Preserve peer-attested basis and sender-relative boundary ref. |
| Classification and provenance become one policy lattice | Separate schema families, pure functions, error vocabularies, and conformance fixtures. |
| Provider/session/account data leaks into Room or Corpus | Permit only open provider refs and policy projections; forbid endpoints, credentials, provider request ids, and session refs in generic contracts. |
| Join drops one parent or allows a local transform to erase ancestry | Canonical pure join, bounded parent refs, no-drop fixtures, and deterministic aggregate digest. |
| Provider set or lineage grows without bound | Bounded deduplicated sets, stable ordering, content-addressed aggregate refs, and explicit truncation/completeness markers. |
| Cache or replay recomputes current catalog metadata | Bind the immutable original descriptor to the cached result and return it unchanged on exact replay. |
| Conflicting evidence is resolved optimistically | Preserve conflict/incompleteness, choose the conservative summary, and route to local deny/warn/allow policy. |
| Hidden provider cascade defeats the claim | State the threat-model limit, retain evidence basis, allow stricter profiles, and never market the descriptor as remote attestation. |
| Provenance grants trust, membership, or effect authority | Validate it only as a characteristic; all existing capability, Room, Corpus, and effect admissions remain separate. |
| Closed offer vocabulary forces every domain into one profile taxonomy | Keep shared posture small and namespaced characteristics open; let communities define additional criteria. |
| UI shows only preflight consent and hides the actual route | Require both preflight posture and post-result realized provenance projections. |
Resolved Design Questions¶
The following decisions were accepted on 2026-09-04 without recorded dissent:
- Node ships two non-normative boundary examples: one exact infrastructure host and one explicitly enumerated operator-controlled host set. “Local” in the default profile means the exact infrastructure host. LAN membership, hostname similarity, co-location, or transport never establishes locality.
- Provider refs use the open convention
inference-provider:<namespace>[:<name>]. A versioned, admitted, digest-bound local registry supplies display metadata and aliases without becoming global naming authority or storing endpoints, accounts, sessions, auth, or secrets. Operator tooling should make the common path a guided selection or simple configuration value. It may accept a URI or DID only through an explicit confirmation step and should help derive, preview, validate, and optionally install the resulting provider ref. unknownnever satisfieslocal-only. Protected-data egress, effects, settlement, automatic publication, and other high-impact paths deny or quarantine it. An explicitly configured ordinary deliberation profile may admit it with a visible warning. Storage and joins preserveunknown; they do not erase the result.- Cryptographic workload attestation is a later optional evidence class after honest-reporting V1. It becomes useful when a profile requires a verifier to bind runtime, model, boundary, and invocation measurements across an operator boundary. It supplements host observation and cannot optimistically upgrade adapter or peer assertions.
- Compatibility follows the inventory-backed hybrid rule above. Interpreted
result contracts receive major successors; opaque transport, artifact,
cache, and replay carriers use content-bound immutable sidecars/refs. Legacy
absence becomes
unknown, and operator or power-user surfaces must make the distinction and remediation path understandable.
Implementation Tracker¶
Status values: todo, in-progress, partial, done, deferred.
| ID | Work item | Depends on | Status | Done criteria / evidence |
|---|---|---|---|---|
P090-001 |
Complete the initial cross-layer semantic audit and distinguish posture, realized provenance, evidence, classification, origin, and authority. | — | done |
This proposal's Context, Decisions 1–12, ownership table, scenarios, and acceptance matrix identify the semantic gap without claiming a complete carrier inventory or implementation. |
P090-001a |
Inventory existing inference-derived translators and carriers and draft their compatibility migration plan. | P090-001 |
done |
The repository-evidenced carrier inventory above covers every current Inquirium/Agent operation, Whisper redaction preparation, the planned first Semantic Index embedding row, generic workflow/JSON-e/Flow paths, and higher-layer response, offer, Room, Corpus, Assistant, cache, replay, artifact, and procurement carriers. Each owner is assigned a compatible major successor or an immutable sidecar/ref; no V1 carrier is silently extended. |
P090-002 |
Review and accept the horizontal semantic contract and threat model. | P090-001, P090-001a |
done |
The 2026-09-04 resolution above records acceptance without dissent of the host-local and operator-controlled boundary examples, open provider-ref convention and registry UX, risk-tiered unknown, deferred optional attestation, and hybrid compatibility rule. Decisions 1–12 freeze boundary-relative locality, dispatch, egress, evidence, selective disclosure, join, hidden-cascade limits, and inline-plus-digest/ref-above-threshold identity semantics. |
P090-003 |
Define separate canonical inference-execution-posture.v1 and inference-execution-provenance.v1 contracts in a pure inference-provenance-core, plus comparison/join/projection rules, error vocabulary, and Schema Gate corpus. |
P090-002 |
done |
inference-provenance-core binds posture and realized provenance to exact subjects and processing boundaries, conservatively migrates the complete legacy locality/trust matrix, and owns domain-separated JcsV1 source and projection identities. One inference-provenance-common.v1 schema owns the shared ref, digest, provider, disclosure, evidence, and extension vocabulary; posture requirements deliberately exclude observation-only unknown and derived bases. The canonical 16 KiB inline and 64 KiB descriptor limits, content-addressed external form, bounded lineage, hidden uncertainty components, and provider-neutral error vocabulary are mirrored in both schemas and Schema Gate. Exhaustive tables cover all 25 locality, 9 dispatch, 16 egress, and 16 provider-disclosure pairs; unit and property tests cover identity, permutation, associativity, idempotence, replay, redaction, missing ancestry, no-downgrade, and unrelated-boundary policy. Positive, schema-negative, and semantic-negative fixtures are synchronized into Node; every schema conditional has a non-empty local discriminator requirement, and a mechanical test refuses copied common definitions. Mechanical dependency tests protect the pure core and the five currently inventoried semantic consumers; adding another consumer requires extending that explicit inventory and guard. Generated schema docs, full Orbidocs schema validation, crate tests, full Schema Gate tests, and Clippy with warnings denied pass. No provider-specific enum enters the shared core. |
P090-003a |
Add the admitted provider-ref registry and guided operator configuration surface. | P090-003 |
done |
The canonical inference-provider-registry.v1 contract and pure registry own bounded refs, aliases, display metadata, disclosure defaults, generation and JCS identity. The shared daemon configuration service validates raw JSON before set normalization, resolves exact admitted names, previews URI/DID-derived refs without fetching or retaining the source identifier, and atomically installs only the confirmed preview against the current registry digest under a nonblocking lock. The offline CLI accepts hand-authored drafts, lists/resolves entries and requires typing yes; Node UI lists exact refs for configuration and has separate preview and initially unchecked confirmation forms. Tests cover canonical fixture/Rust identity agreement, malformed inputs, collisions, stale previews, duplicate raw aliases, concurrent writes, CLI process restart, escaped UI output, and the real authenticated daemon HTTP path. This installs display vocabulary, not runtime routing or inference authority. |
P090-004 |
Bind Inquirium pre-execution posture and produce realized provenance for every inference-derived result and post-dispatch terminal outcome. | P090-003 |
partial |
inquirium-core owns an exact response-bound inquirium.result-provenance.v1 sidecar, and inquirium-host has pure conservative posture and result-binding functions. Daemon configuration now admits explicit provider-neutral execution characteristics independently of transport and catalog posture, validates their runtime and registered provider refs at startup, and defaults missing characteristics to explicit unknown. Successful direct generate, embed, classify, rerank, summarize, transform, image-generate, and image-edit executions commit exact response-bound sidecars into their durable metadata traces before returning V1 success; a typed pre-I/O generate refusal is represented as not-dispatched, not-applicable, and no egress. The Agent-passage generate V2 response remains schema-gated and replay preserves its descriptor. LocalityMode and TrustMode Rust defaults are Unknown, while malformed current catalog entries missing required fields still fail deserialization. P090-004a now adds bound generate/embed results, sanitized failed/ambiguous terminals, the compatible shared V2 envelope, generate-backed translation and current embedding cache restart. P090-004b1 and P080-044/045 provide explicit V2 response selection, and P090-004b2 closes the scoped ordinary text-controller recovery matrix. Other operation terminals, batch/training and artifact/deferred/effect carriage remain open. |
P090-005 |
Bind External Agent Runtime posture and make its products and terminal outcomes produce the same provider-neutral provenance. | P090-003, provider-neutral P089 runtime contract |
done |
The host layer derives posture only from an explicit host-owned context, not transport. V2 product and terminal-outcome contracts bind exact canonical V1 bytes. The daemon durably writes their V2 commit sidecar before V1 compatibility, recovers an interrupted V2-first bundle without duplicate charging or driver I/O, records not-dispatched plus not-applicable locality and none egress after a host-local pre-turn refusal with zero turn-driver calls, records ambiguous dispatch only after an uncertain dispatch boundary, and leaves the generic fake at unknown. The Codex composition root explicitly admits non-local plus occurred egress with provider identity withheld; neither stdio nor provider-specific session/account data enters the generic contract. Three-host Story acceptance now retains a real Codex-backed descriptor through its ordinary Agent controller sidecar. The 2026-09-06 generic disclosure matrix closes conformance for complete, partial, withheld and unknown identities in both completed and cancelled execution: posture, product and terminal descriptors retain exact provider refs and non-local/egress facts, and restart under a fresh unknown characteristic preserves the entire V2 commit without driver I/O, extra facts or duplicate charging. |
P090-006 |
Expose scoped posture and propagate/join realized provenance through Orbiplex Agent products, passages, lineage, and AgentOutcome. |
P090-004, P090-005 |
partial |
agent-core owns compatible V2 passage product, successful invoke response, terminal selection, passage trace, and outcome contracts. The host distinguishes current execution from inherited Agent products, requires exact parent refs for a complete join, preserves explicit incomplete ancestry as unknown, and refuses substitution or stripping. Memarium facts write stronger V2 values first, repair V1 compatibility projections after interruption, and replay a four-passage Inquirium chain without reinvocation or duplicate charging. An ordinary External Agent Runtime action writes agent.controller-execution-provenance.v1 before its controller step/trace, deterministically rebinds the external product descriptor to the retained Agent artifact, exposes the sidecar ref as trace evidence, and emits agent.outcome.v2; dirty recovery recomputes the exact bridge and appends nothing. Real three-host Story-012 run federation-run:story-012-physical-three-host-three-node-codex-reviewer:20260904T160513Z then interrupted and resumed the Codex Reviewer Agent and retained the exact final sidecar ref agent-controller-execution-provenance:agent:story-012-reviewer:11 in its passing Story report. Operator inspection now reuses a pure five-axis scope matcher and checks runtime/profile catalog and registry fingerprints with half-open validity; a real HTTP regression proves missing, matched and wrong-generation outcomes. P090-004a adds independently scoped optional Agent/external-runtime policy preflight before new I/O, rechecks current fingerprints and preserves durable replay after policy change. Inquirium passages consume the received bound result rather than reconstructing evidence. P090-004b2/004b2a now cover the ordinary text-controller journal; P090-007b and P090-009b/c cover finalized Assistant and signed Corpus publication/receiving paths. Guided policy UX, general parent/effect joins and broader Room/remote projections remain open. |
P090-006a |
Gate every inventoried Inquirium/Agent result translator and higher-layer carrier against metadata loss or downgrade. | P090-003, P090-004, P090-006 |
partial |
Schema Gate refuses stripped provenance across the representative Inquirium result sidecar, Agent/external-runtime V2 product, invoke-response, selection, trace, controller-execution sidecar, and outcome chain. Durable partial-write and restart tests cover the representative generate passage, external-runtime terminal commit, pre-turn refusal, and ordinary-controller bridge through terminal Agent outcome. Story-012 now binds each external Reviewer evidence check to the exact observed controller step, permits a later status projection without confusing value with observation time, rejects an older unrelated sidecar, and retains the final sidecar ref in its report. Node owns a 25-entry inventory with source/test pointers plus operation-enum and translator discovery across Inquirium Rust modules. Its reusable named verification sets use bounded argument vectors rather than a shell; CI executes the deduplicated checks for every done or partial entry, and --require/--promote run the selected checks after refusing unfinished or unlisted claims. P090-004a adds operation-specific checks for bound results, terminal translation, current embedding cache/restart, invocation preflight and the daemon Agent passage. The current embedding-cache row is done; other carrier rows retain honest partial status. P090-012a adds a promotable scoped durable-consumption aggregate, including real supervised role/WSS-AD/Arca and controller/Assistant sink matrices. This proves only the named checks, not runtime completion of remaining rows. Completion still requires the full P090-001a inventory: every operation, aggregate, cache/deferred/artifact replay, Assistant, Corpus, Room, offer, and procurement translator plus promotion-time inventory enforcement. |
P090-007 |
Add Assistant preflight and post-result disclosure. | P090-004, P090-003 |
partial |
Current checkpoint implements authenticated preview/execute, independent sensitive-input acknowledgement, V2 response/refusal carriage, transcript-owned exact sidecars, restart replay without producer I/O, and UI/feed projection; P090-007a/007b and P090-012a close the inline synchronous text and finalized publication gate. Broader provider-disclosure variants and external resolution remain outside that scoped evidence. Acceptance target: before every admitted non-local inference I/O, UI shows posture bound to the exact context and profile generation; acknowledgement remains a separate gate required according to local classification/context policy. Response, transcript, trace, activity feed, and UI then show realized locality/egress and conservative unknown; route changes remain visible. |
P090-008 |
Add open inference posture to service offers and Shared Offer Catalog filtering. | P090-003 |
done |
Current checkpoint admits the optional signed policy_annotations.inference/posture characteristic with exact owner/offer/generation binding, retains it in Rust and Python catalog snapshots, and adds a pure receiving-policy contract/evaluator. Bounded host-evaluated filtering now covers Shared Offer Catalog, topic-query links and Arca local/observed projections before pagination; P090-008b freezes exact signed selection through paid dispatch and restart. The 2026-09-06 four-state disclosure matrix closes the declaration/catalog scope: complete, partial, withheld and unknown values survive signed admission, immutable revision retention and Rust/Python projections. Sixteen schema-gated receiving-policy cases cover provider allow-list checks under deny/warn/allow and known-denial precedence; valid resealed substitutions without a new offer signature refuse. Realized result carriage and remote resolution remain P090-008a. Acceptance target: signed offers carry the separate posture contract with assertion owner, exact scope/generation, processing-boundary ref, open provider characteristics, and disclosure state. Catalog queries support locality, provider allow/deny, explicit boundary matching, and unknown policy; corpus/model-class is compatibility-only and no closed domain-profile repertoire is introduced. |
P090-008a |
Carry realized provenance through the generic remote-procurement result path. | P090-003, P090-008 |
partial |
Current receiver checkpoint adds a content-bound V2 wrapper, all-boundary Schema Gate, authenticated buyer AD admission, optional buyer result-policy assessment, durable carrier/trace retention and replay/restart regression. Arca retains exact artifact bytes. New remote purchases freeze scoped offer posture at host selection time; receiving comparison preserves peer-attested strength and fails before closeout on missing, non-local or unrelated evidence. Paid replay/restart regression proves independence from later catalog generations. Dator now durably binds the unchanged role source before normalization and final result bytes before AD delivery; bounded retries and database restart reuse frozen identity/profile without executing the role again. Authenticated Python-to-daemon preparation is tested with deterministic role and AD doubles. P090-008c now passes real supervised role/schema admission, explicit AD allowlists and WSS delivery to Arca after restart, with exact bytes and one paid release. External descriptor resolution remains pending; this row is not done. A compatible service-order.result revision or immutable sidecar ref binds the producer descriptor without extending V1 in place; Dator stamps or preserves the producer value, Artifact Delivery carries it opaquely with its own source/digest evidence, and Arca verifies, preserves, and applies buyer policy without reinterpreting sender-relative locality. Missing, stripped, substituted, unrelated-boundary, and replay cases have negative fixtures. |
P090-009 |
Make Corpus validate offer posture against delivered provenance and preserve it in outputs. | P090-006, P090-008, P090-008a |
partial |
P090-009a/b/c close the inline draft, signed publication, AD receiving-policy and frozen-offer comparison paths with durable replay. General contribution-to-synthesis aggregation and remote descriptor resolution remain separate work; signed publication of admitted Agent ancestry does not prove that every Room contribution was consumed. |
P090-010 |
Add Room scoped posture, per-contribution provenance, read-model aggregates, and policy/UI projection. | P090-006, P090-003 |
partial |
P090-010a closes contribution carriage, independent receiving policy and derived sender-relative badges. Scoped participant declarations remain open; identity, membership and authority are unchanged. |
P090-011 |
Add federated projection and verification semantics. | P090-003, P090-010 |
todo |
Signed redacted projection preserves locality, egress, incomplete provider disclosure, and sender boundary; receiver records peer-attested basis and never upgrades evidence. Unknown and unsupported versions fail according to explicit policy. |
P090-012 |
Retain end-to-end multi-node acceptance and synchronize evidence-backed documentation. | P090-004 through P090-011 |
partial |
The bounded Codex-over-stdio producer-to-Agent slice is retained on three distinct physical hosts. Fresh run federation-run:story-012-physical-three-host-three-node-codex-reviewer:20260904T154427Z and restarted run federation-run:story-012-physical-three-host-three-node-codex-reviewer:20260904T160513Z both pass all ten Story assertions, exact DNS effects, post-effect revalidation, complete traces, cleanup, and the exact profile-defined three-host claim. The fresh run's aggregate and Story-report SHA-256 values are 5512af53ccd2376e723197ffe5762fd50bf186b2aaf3dcc0cd63be6112e6a861 and 574426784b9762df4e8530dd5c9565614b46633c0d558e45fe734e4bb4b8858a; the restarted run's corresponding values are 12848bc6cf487100cf29cfbe3eb2f8d29b1aeee731ca4207794b6b49a6089a4c and 25ae2c316f596a87e822df9a50ce28081eee724a511286d97cc161ad73aaa4ee, and its report retains the final controller sidecar ref. Completion still requires the full matrix: local MLX/llama, OpenAI via local sidecar, mixed join, cache/replay, redaction, Assistant warning, Corpus filtering, Room aggregation, peer projection, stripping refusal, and hidden-cascade limitation, with all owning documents and ledgers synchronized. |
Active result-lifecycle slice (2026-09-05)¶
| ID | Work item | Depends on | Status | Done criteria / evidence |
|---|---|---|---|---|
P090-004a |
Carry scoped generate/embed execution results through response projection, translation, cache/restart and Agent invocation preflight. | P090-003a, current P090-004 and P090-006 foundations |
done |
Runtime-owned dispatch facts travel with their exact result; the compatible shared inquirium.response.v2 envelope preserves operation-specific V1 payloads. Generate-backed summarize/transform retains inference parents and rebinds failure operation identity. Embedding cache separates historical execution/usage from retrieval/charge and refuses corrupt bound entries. The operation-specific inventory gate passes terminal dispatch-state tests, actual HTTP translation/trace checks, scoped Agent/external-runtime preflight and session-free refusal, L1/reopened-SQLite corruption negatives, and a four-passage daemon restart with exact non-local/withheld ancestry and no duplicate Agent charge. This is local deterministic evidence, not a new physical Story-012 run. Parent P090-004/006/006a remain partial for all-operation/public/consumer coverage. |
The shared response envelope is a carriage contract, not a universal output ontology: the operation owner still validates the enclosed result. This reuses the exact-result sidecar and canonical join instead of copying provenance semantics into each translator. Legacy response-only cache entries remain in their existing namespace and are not upgraded into stronger evidence.
Producer-to-consumer implementation passage (2026-09-05)¶
The following ordered checkpoints implement the operator-approved next passage. Each checkpoint requires implementation review, refusal/replay tests, executable inventory evidence and documentation synchronization before completion. They do not replace the parent completion criteria or claim new physical acceptance.
| ID | Work item | Status | Completion gate |
|---|---|---|---|
P090-004b |
Complete producer terminal coverage, public V2 selection, ordinary Inquirium Agent carriage, batch/training and artifact/deferred preservation. | in-progress |
Exact result evidence survives every owned boundary and restart; stripping, substitution and duplicate execution/charging are refused. Preserve V1 compatibility without silently falling back when V2 is requested. |
P090-007a |
Implement Assistant preflight disclosure and realized result carriage through response, transcript, trace and UI. | done |
Exact authenticated preview/execute, independent sensitive-input acknowledgement, under-lock revalidation, V2 success/refusal and transcript-owned replay are implemented. A durable keyed attempt fence precedes model I/O and refuses automatic redispatch after uncertain completion, including after restart; it is not a rebuildable index. Metadata-only preflight refusals do not invent execution. HTTP, UI/feed and executable inventory cover this inline consumer path. Finalized synchronous-text repair is now covered separately by P090-007b; physical acceptance is not claimed. |
P090-009a |
Implement offer/catalog posture, generic procurement carriage and Corpus result validation in dependency order. | done |
Shared host policy filters before pagination; selected declarations and actual evidence remain distinct. Generic result V2 and Corpus signed V2 enforce buyer policy and frozen offer comparison before accountable closeout/admission, retaining exact evidence through restart. P090-008c now supplies real supervised role/WSS-AD/Arca deployment proof for inline text. External descriptor resolution remains broader P090-008a work and is not certified by this checkpoint. |
P090-010a |
Preserve Room contribution provenance and derive participant read models. | done |
Explicit V3 content-bound contribution evidence, minimal disclosure, four-boundary Schema Gate, WSS delivery/exact replay, evidence-aware sequence recovery and durable observation restart are implemented. Agent effects attach explicitly referenced owned durable sources, retaining incomplete ancestry instead of guessing. Independent receiving policy and bounded sender-relative participant badges preserve unknown and peer-attested strength; readiness frames do not count as inference. Scoped declarations and general federation projection remain P090-010/011; no new physical passage is claimed. |
P090-009b |
Sign provenance-bearing Corpus answer/publication V2 and persist it with the legacy view. | done |
Exact answer, admitted draft lineage and publisher policy assessment share one signed envelope and one durable round transition. Shared V1 signature verification and all-four-boundary Schema Gate reject signature/content/sidecar substitution. The local daemon process passage covers V1 and explicit V2 publication, restart without the product, exact replay after a stricter policy change, and refusal of a new publication under that policy. Historical publications are not enriched. This is deterministic local acceptance, not physical federation evidence. |
P090-009c |
Apply the receiving Corpus policy to both procurement answers and local Agent publications. | done |
Local publication and receiving-host policies are independent of signed producer assertions. Bid admission freezes the catalog-admitted declaration before ranking; named unresolved sources refuse, and later offer expiry or removal cannot invalidate the retained commitment; known violations override incomplete evidence and peer claims remain peer-attested. AD preserves the signed V2 within a 128 KiB materialization budget. Forty-nine Corpus host tests pass in the 2026-09-06 review, including receiving-daemon restart after stricter policy, exact replay and stripping refusal. Evaluation is durably recorded before refusal or admission. Existing candidate discovery remains bounded at 256, not an exhaustive catalog claim; no new physical federation acceptance is asserted. |
V2 publication implementation decision (2026-09-06): use an outer
corpus-reasoning-answer.v2 envelope around the unchanged signed V1 answer,
with content-bound provenance and its own domain-separated signature. The outer
signature binds the complete inner answer and evidence; an unsigned neighboring
sidecar is insufficient. The receiving host still authenticates the accountable
responder independently. New Agent publication consumes the previously admitted
draft evidence, not current model configuration. Historical V1 publication
remains V1 and is not retroactively enriched. Representation and receiving
policy are explicit inputs, never inferred from topology or provider identity.
The publication assessment exports only the exact policy digest and decision,
not private provider allow/deny sets. Its signature makes the publisher
accountable for the assertion; it cannot authorize consumption on another host.
Full policy values remain in the publisher's durable local evidence. Receiving
policy is independently configured and evaluated before admission or settlement.
Producer subcheckpoints keep the remaining durable work explicit:
Consumer review checkpoint (2026-09-06): historical Assistant V1 results retain
principal/session/key-only replay without fabricated provenance; explicit V2
selection refuses unavailable historical evidence. Modern replay requires the
exact request binding and sidecar together. A source-log-backed index replaces
the fixed history ceiling; bounded catch-up commits progress, unknown unrelated
record families are excluded before parsing, and owned corruption or excision
still refuses. New preview/execute requests require an explicit turn id, and
durable disclosure traces retain token bindings rather than credentials. Unknown
and declared possible non-local execution have distinct consent wording.
Direct External Runtime completion also preserves its durable producer V2 into
Agent outcomes without inventing a controller step. These review corrections do
not close the remaining consumer or producer tasks below. The finding-by-finding
implementation record is node:docs/P090-CONSUMER-REVIEW.md.
| ID | Work item | Status | Completion gate |
|---|---|---|---|
P090-004b1 |
Bind synchronous runtime results and select public V2 explicitly. | done |
Eight-operation HTTP V1/V2 tests, malformed received-HTTP terminals, image publication/refusal ancestry, output mutation and catalog-change negatives, and fractional JSON roundtrip pass. This does not close source-artifact lineage or durable publication recovery. |
P090-004b2 |
Preserve ordinary Inquirium Agent controller evidence through its durable source commit and recovery bridge. | done |
Completed for the scoped synchronous text controller. CallInquirium requests V2 and commits its exact canonical source, step, trace and budget through Agent/Memarium. P090-004b2a covers 36 intent/commit refusal and lost-acknowledgement cases across successful and terminal results. Product-free daemon restart retains the exact Agent/Corpus outcome; absent completion remains fenced and does not authorize reinference. Batch, training and general artifact/deferred producers are outside this row. |
P090-004b3 |
Separate batch/training execution commit from deferred status and artifact publication. | todo |
Inquirium owns a durable intent and exact producer-result commit; BDO remains a read model, not inference authority. Recovery reuses a verified committed result without adapter I/O; an interrupted attempt without a commit remains ambiguous and cannot silently reinvoke. Batch acceptance must exercise real batch execution, not admission or a caller-supplied artifact. |
P090-004b4 |
Retain artifact/effect sidecars and source ancestry across publication and restart. | todo |
Verify the immutable producer commit and destination bytes before publication; replay the publication without new inference; preserve source-image ancestry, exact artifact bindings and all failure/refusal evidence. |
P069-DOMAIN-005 is a separate workstream in this passage: optional thematic
profile admission and lifecycle, not a prerequisite for provenance carriage.
An exact profile revision requires receiving-host admission; endorsement cannot
compel it, and general prose outcomes remain valid without such a profile.
Federated projection (P090-011), remaining inventory consumers and full
multi-node acceptance (P090-012) keep their independent completion gates.
Consumer implementation checkpoints preserve three independent inputs: a signed
offer declaration, the delivered producer descriptor, and receiving-host policy.
P090-009a first implements a shared, provider-neutral consumption-policy value
and pure evaluation for locality, explicit processing-boundary matching,
provider allow/deny and incomplete evidence. Catalog, Corpus and Room reuse that
evaluation; policy never rewrites evidence. A known violation dominates a warning
about missing evidence. The offer migration may use the existing signed
policy_annotations extension as a characteristic sidecar, bound to the exact
offer id, sequence and accountable signer; this does not add a V1 top-level field
or change the compatibility-only meaning of corpus/model-class. Wire result
carriage now uses the compatible service-order.result.v2 receiving contract:
the unchanged V1 result plus mandatory provenance whose subject binds the JCS
result digest and whose assertion owner is the selected provider node. The host
still authenticates AD source and request/workflow correlation independently.
Buyer request/output-constraints.inference/policy is an explicit terminal
acceptance rule, not preflight egress authority; absence retains V1 behavior
without claiming local execution. Warnings and exact carriers survive durable
execution/trace replay. External refs refuse until a bounded authenticated
resolver is available. The producer checkpoint below adds the bridge across
normalization. P090-008c closes the inline deployment role/AD admission gate;
external descriptor resolution still keeps P090-008a partial.
The producer bridge uses an explicit service-dispatch-result.v2 wrapper for
the unchanged role product and content-bound source descriptor. A bounded,
data-only service.order.result.prepare host capability reuses the Rust JCS
and join implementation to derive service-order.result.v2 from the final
normalized V1 result. It does not authenticate the role, observe inference,
persist a commit, deliver artifacts, or authorize settlement. Dator owns those
source/commit boundaries; absent legacy evidence stays incomplete and unknown.
The source boundary and observation time survive derivation without relabeling.
Before delivery Dator freezes the result bytes and digest in its existing
request-keyed durable journal. Delivery retry is bounded and generation-fenced;
it cannot invoke the role again. Interrupted execution without a result commit
remains ambiguous and requires reconciliation, not blind execution retry.
Ordinary-controller recovery checkpoint: an intent fences dispatch before I/O; one atomic Memarium completion then binds the exact Inquirium source, Step, trace and budget. Recovery validates and projects this committed value without reconstructing decisions or repeating inference. P090-004b2/004b2a close the scoped synchronous-text gate with a 36-case journal matrix and separate daemon restart evidence. Intent-only and legacy source-only histories remain refused: neither contains a complete decision from which safe replay can be derived.
Corpus draft checkpoint: corpus-agent-answer-draft.v2 preserves the admitted
Agent outcome, not merely its prose or legacy projection. The descriptor subject
is the JCS identity of {draft, source/outcome}; the original draft identity and
classification are unchanged. Derived evidence retains the parent observation
time and sender processing boundary. Round ownership, source admission, Room
membership and publication authority remain independently checked host facts.
The V1 and V2 draft views share one existing round snapshot; evidence is checked
on export and both log/checkpoint recovery. Exact replay precedes current Agent
or product lookup. Historical absence is not backfilled from a live runtime.
Newly accepted legacy outcomes carry explicit unknown evidence. Existing HTTP
draft and answer projections remain V1, with the V2 draft exposed separately in
authenticated round inspection. A separately signed V2 publication must cover
the outcome and its evidence before claiming end-to-end Corpus carriage; a V1
answer signature does not authenticate the adjacent draft sidecar.
Python catalog consumers reuse the pure Rust policy through the data-only,
host-local inference.policy.evaluate capability. Declared and realized inputs
are distinct variants, requests bind unique subjects, and assessment grants no
execution or publication authority. Catalog filtering precedes pagination,
preserves the query in topic links, and refuses unavailable/over-budget
evaluation. Scope: 32 subjects per request, 2 MiB per evaluation, 4096 scanned
catalog rows and a 20-second assessment deadline.
Producer checkpoint: public capability POST routes select the compatible
inquirium.response.v2 envelope explicitly with
response-schema=inquirium.response.v2; absence retains V1. Selection changes
neither execution authority nor routing. Unknown, duplicate and unavailable
versions refuse before execution, with no silent downgrade. Current HTTP evidence
covers generate, embed, classify, rerank, summarize, transform, image-generate and
image-edit. Image publication derives its response or refusal from the
content-bound runtime execution parent without consulting current configuration.
Classify/rerank
carry the exact runtime-bound result into traces, and invalid received classify,
rerank and image HTTP responses preserve dispatched/unknown terminal evidence.
Fractional embedding roundtrip tests protect canonical result identity across
serialization. These checks close a producer subpiece, not P090-004b as a whole:
batch/training execution and artifact/deferred preservation still require their
own durable boundaries. Ordinary synchronous-text Inquirium Agent controller
recovery is now covered by P090-004b2/004b2a.
Durable result to informed consumption and publication (2026-09-06)¶
Review hardening: immutable signed offer admission validates before append and distinguishes exact replay from conflicting signed bytes at the same sequence (HTTP 409), including unchanged catalog projections. Assistant completion checks keyless session excision without synthetic keys and reports bounded replay-index catch-up as retryable HTTP 503, separately from publication failure. Dator's committed-publication polling backs off to 60 seconds on idle/error passes and logs once per continuous failure episode. These corrections preserve the scoped completion criteria below; they do not close broader producer/disclosure work.
Operator-approved scope: synchronous text/prose results through the existing
Inquirium and external Agent runtime paths, inline descriptors, Assistant and
the offer/procurement/Corpus publication path. No new model, thematic interpreter
or Sensorium capability is required. Assistant has no dependency on Corpus
publication. Earlier scoped done checkpoints remain valid; the following work
adds recovery and deployment guarantees rather than reopening their contracts.
| ID | Work item | Status | Completion gate |
|---|---|---|---|
P090-004b2a |
Reconcile committed ordinary-controller results and interrupted step/accounting projections. | done |
Done for synchronous text. A 36-case matrix crosses completed/denied/invalid/unsafe/unavailable/failed results with intent/commit write refusal and lost acknowledgement. Exact Agent, binding, actor, request, source, step and budget survive restart; contradictory source refuses, terminal artifacts are not publishable, and replay appends no new charge or fact. Intent-only and uncommitted execution remain fenced. |
P090-007b |
Recover Assistant post-processing and terminal-result publication. | done |
Done for the finalized synchronous text path. Real HTTP restart tests cover trace, budget, turn/result projection and completion-reference failures, terminal transport failure and rejected controls. Committed plans retain exact source, response, HTTP class and charge; missing completion remains fenced with no blind redispatch. Session excision and original request authentication precede recovery. Recovery of uncommitted provider output is not claimed. |
P090-008b |
Bind policy-aware selection and dispatch to an exact signed offer revision. | done |
Signed admission archives, dispatch and Corpus snapshots retain exact original revisions. Paid-order tests cover catalog replacement, strict unknown refusal before reservation, independent result assessment and restart. The connected deployment uses the provider participant signer and explicit unknown/warn policy, retains its signed selection through WSS result admission, and accounts for one release independently of inference. Unsigned or unavailable declaration sources gain no fabricated signature or local posture. |
P090-008c |
Admit and exercise the inline Dator role-to-AD-to-Arca result profile. | done |
Real supervised role/P080 V2/Inquirium/Dator/WSS-AD/Arca passage passes with restart, exact bytes/digest in both result journals, one role/model invocation and one paid release. Missing/wrong runtime grants cause zero model calls. Repairs require actual AD completion rather than a deferred handle, preserve retryable admission attempts with same-key fencing, and automatically resume only committed Dator publications. This is deterministic local two-identity evidence; inbound dispatch and pending workflow are explicit fixture preconditions. External descriptor resolution and physical federation remain outside this row. |
P090-012a |
Gate the scoped durable consumption/publication passage. | done |
The executable durable-consumption-publication inventory claim passes the aggregate controller/Assistant failure matrices, signed selection, policy/catalog/UI, signed Corpus publication and real supervised role/Inquirium/Dator/WSS-AD/Arca restart checks. It also tests transport-independent non-local external execution, conservative absence, both receiver-policy inputs and independent Assistant behavior. Runtime calls, logical publications, admissions, inference charges and order release are checked separately. Explicit input/workflow fixture preconditions and deterministic HTTP inference bound this to local synchronous text and inline descriptors. No new Room dependency, physical passage or full-P090 completion is claimed. |
Recovery means finishing an already admitted durable transition, not undoing inference or making an uncertain external call exactly-once. A missing result commit after possible execution requires explicit reconciliation/refusal. A receiver's refusal can withhold order closeout but cannot erase the cost or fact of producer execution. Persist repairable intents in the owning fact/journal plane; never infer original authorization, timestamps or evidence from current configuration. Tests and code review precede each status promotion.
Dependency graph¶
graph TD
A[P090-001 initial semantic audit] --> AI[P090-001a carrier inventory and migration plan]
AI --> B[P090-002 semantic acceptance]
B --> C[P090-003 schema and pure join]
C --> I[P090-004 Inquirium producer]
C --> X[P090-005 external-runtime producer]
I --> G[P090-006 Agent propagation]
X --> G
I --> T[P090-006a translator no-drop gates]
G --> T
I --> H[P090-007 Assistant disclosure]
C --> O[P090-008 offer and catalog posture]
O --> P[P090-008a procurement carriage]
C --> P
G --> K[P090-009 Corpus validation]
O --> K
P --> K
G --> R[P090-010 Room carriage]
C --> R
C --> F[P090-011 federated projection]
R --> F
I --> Z[P090-012 end-to-end acceptance and sync]
X --> Z
G --> Z
T --> Z
H --> Z
P --> Z
K --> Z
F --> Z
Next Actions¶
- Complete scoped posture exposure beyond the implemented operator inspection
of exact runtime/profile catalog bindings: expose Agent and external-runtime
scopes, bind invocation policy independently, and integrate the pre-I/O gate.
The completed
P090-003aregistry and its CLI/UI are display/configuration vocabulary, not proof of execution or authority to dispatch. - Complete producer coverage beyond the direct-success traces: add typed post-dispatch terminal outcomes, compatible V2 response successors, batch-embed and train-adapt results, parent-preserving summarize/transform joins, and cache/artifact/deferred/effect-intent replay without deriving execution facts from transport or catalog state. Generic external-runtime disclosure conformance is complete under P090-005, beyond the retained real Codex path; broader Assistant disclosure remains P090-007.
- Extend the implemented ordinary-controller bridge and executable inventory into every remaining repository-wide translator no-drop gate, then add scoped posture and Assistant disclosure, followed by service-offer posture/Catalog filtering, Corpus validation, Room carriage, and federated projection in dependency order.
- Treat legacy absence as
unknown, retain both preflight and post-result disclosure, and keep provider-native sessions, accounts, endpoints, and credentials outside generic contracts. - Promote solution and implementation-ledger status only after the complete cross-layer acceptance matrix has retained evidence. A proposal, schema, or local trace alone does not establish runtime completion.