Sensorium Directive Outcome v1¶
Source schema: doc/schemas/sensorium-directive-outcome.v1.schema.json
Audit-only outcome record for a sensorium-directive.v1. Exactly one outcome record exists for every directive, including rejected, failed, timed_out, and completed directives. Outcome records are not published to local Agora observation topics and are reachable only through host-owned audit capabilities.
Governing Basis¶
doc/project/40-proposals/045-sensorium-local-enaction-stratum.mddoc/project/40-proposals/032-key-delegation-passports.md
Project Lineage¶
Requirements¶
doc/project/50-requirements/requirements-006-node-networking-mvp.mddoc/project/50-requirements/requirements-010-middleware-executor.mddoc/project/50-requirements/requirements-011-dator-arca-contracts.md
Stories¶
doc/project/30-stories/story-001-swarm-node-onboarding.mddoc/project/30-stories/story-004-pod-client-onboarding.mddoc/project/30-stories/story-005-whisper-rumor-intake.mddoc/project/30-stories/story-006-buyer-node-components.mddoc/project/30-stories/story-006-voluntary-swarm-exchange.mddoc/project/30-stories/story-007-settlement-capable-node.mddoc/project/30-stories/story-009-bielik-blog-arca.md
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema |
yes |
const: sensorium-directive-outcome.v1 |
Schema tag for the v1 Sensorium contract. |
schema/v |
yes |
const: 1 |
Schema version. |
outcome/id |
yes |
string | Opaque audit outcome id assigned by sensorium-core; recommended to be ULID-prefixed. |
directive/id |
yes |
string | Identifier of the originating sensorium-directive.v1. |
correlation/id |
no |
string | Optional opaque id threading this directive outcome through a higher-level plan or workflow. |
outcome/status |
yes |
enum: admitted, completed, failed, timed_out, rejected |
Directive outcome status. admitted is used for async acceptance before final execution result is known. |
outcome/recorded_at |
yes |
string | RFC 3339 timestamp at which sensorium-core wrote the outcome record. |
directive/issued_at |
no |
string | RFC 3339 timestamp copied from the directive when available. |
started_at |
no |
string | Connector-reported execution start timestamp, when available. This is connector telemetry, not the source/instrument event time; facts observed in the world belong in linked sensorium-observation.v1 records. |
completed_at |
no |
string | Connector-reported execution completion timestamp, when available. sensorium-core receipt of the connector response is recorded separately as connector/responded_at. |
duration_ms |
no |
integer | Connector-reported or sensorium-core-measured execution duration when available. Implementations SHOULD document which clock pair was used when precision matters. |
issuer |
yes |
object | Identity of the invoking party copied from the directive. participant/did:key is the sovereign identity axis; module_id identifies the local module when applicable. |
action_id |
yes |
string | Public action id invoked by the consumer. |
connector/id |
no |
string | Connector module id selected by sensorium-core after allowlist resolution. Absent for directives rejected before connector selection. |
connector/kind |
no |
string | Connector kind/class label, e.g. OS. |
allowlist/ref |
no |
object | Reference to the operator-signed allowlist entry used for admission. |
policy/decision |
no |
object | Sensorium policy decision summary for admission, rejection, timeout, or failure. |
retry/attempts |
no |
integer | Number of execution attempts made for this directive outcome. Zero is valid for rejection before execution. |
result/summary |
no |
unspecified | Optional compact result summary. Full typed results remain action-specific and may be returned through sensorium-directive-result.v1 or artifact references. |
observation/ids |
no |
array | Ids of sensorium-observation.v1 records emitted because the directive produced facts about the world. Empty or absent when no world-fact observation was produced. |
artifacts |
no |
array | References to artifacts produced by the directive, such as stdout, stderr, generated files, or raw signal captures, using the minimal artifact-lane contract from proposal 045. |
diagnostics |
no |
array | Structured diagnostics from sensorium-core or the connector. These are audit hints, not observation records. |
issuer_delegation |
no |
ref: #/$defs/delegationProof |
Optional proposal-032 DelegationProof copied from the originating directive when the directive was signed by a proxy key. Outcome verification policy treats this as part of the directive audit chain; Sensorium v1 accepts only max_chain_depth=0. |
audit/store |
no |
object | Optional host-owned audit sink reference. Directive outcomes are written to the Node-owned module store behind restricted sensorium.audit.* capabilities, not to local Agora observation topics. |
connector/dispatched_at |
no |
string | RFC 3339 timestamp when sensorium-core dispatched the admitted directive to the selected connector. Absent when the directive was rejected before connector selection. |
connector/responded_at |
no |
string | RFC 3339 timestamp when sensorium-core received the terminal connector response. Absent when the connector did not respond before timing.timeout_ms expired. |
directive/signature_digest |
no |
string | Optional sha256 digest of the originating directive signature bytes, using the canonical signature value exactly as verified by sensorium-core. Preserves audit linkage without duplicating the full signature in the outcome record. |
Definitions¶
| Definition | Shape | Description |
|---|---|---|
artifactRef |
object | Minimal artifact-lane reference. The artifact itself is stored outside this envelope and is addressed by a content or host-owned blob reference. |
delegationProof |
object | Compact DelegationProof from proposal 032. In Sensorium v1 the proof may be present, but sub-delegation chains are not supported; max_chain_depth, when present, MUST be 0. Additional fields are tolerated for open-world forward compatibility; the canonical proof payload verified by implementations is limited to the proposal-032 compact proof fields. |
| ## Field Semantics |
schema¶
- Required:
yes - Shape: const:
sensorium-directive-outcome.v1
Schema tag for the v1 Sensorium contract.
schema/v¶
- Required:
yes - Shape: const:
1
Schema version.
outcome/id¶
- Required:
yes - Shape: string
Opaque audit outcome id assigned by sensorium-core; recommended to be ULID-prefixed.
directive/id¶
- Required:
yes - Shape: string
Identifier of the originating sensorium-directive.v1.
correlation/id¶
- Required:
no - Shape: string
Optional opaque id threading this directive outcome through a higher-level plan or workflow.
outcome/status¶
- Required:
yes - Shape: enum:
admitted,completed,failed,timed_out,rejected
Directive outcome status. admitted is used for async acceptance before final execution result is known.
outcome/recorded_at¶
- Required:
yes - Shape: string
RFC 3339 timestamp at which sensorium-core wrote the outcome record.
directive/issued_at¶
- Required:
no - Shape: string
RFC 3339 timestamp copied from the directive when available.
started_at¶
- Required:
no - Shape: string
Connector-reported execution start timestamp, when available. This is connector telemetry, not the source/instrument event time; facts observed in the world belong in linked sensorium-observation.v1 records.
completed_at¶
- Required:
no - Shape: string
Connector-reported execution completion timestamp, when available. sensorium-core receipt of the connector response is recorded separately as connector/responded_at.
duration_ms¶
- Required:
no - Shape: integer
Connector-reported or sensorium-core-measured execution duration when available. Implementations SHOULD document which clock pair was used when precision matters.
issuer¶
- Required:
yes - Shape: object
Identity of the invoking party copied from the directive. participant/did:key is the sovereign identity axis; module_id identifies the local module when applicable.
action_id¶
- Required:
yes - Shape: string
Public action id invoked by the consumer.
connector/id¶
- Required:
no - Shape: string
Connector module id selected by sensorium-core after allowlist resolution. Absent for directives rejected before connector selection.
connector/kind¶
- Required:
no - Shape: string
Connector kind/class label, e.g. OS.
allowlist/ref¶
- Required:
no - Shape: object
Reference to the operator-signed allowlist entry used for admission.
policy/decision¶
- Required:
no - Shape: object
Sensorium policy decision summary for admission, rejection, timeout, or failure.
retry/attempts¶
- Required:
no - Shape: integer
Number of execution attempts made for this directive outcome. Zero is valid for rejection before execution.
result/summary¶
- Required:
no - Shape: unspecified
Optional compact result summary. Full typed results remain action-specific and may be returned through sensorium-directive-result.v1 or artifact references.
observation/ids¶
- Required:
no - Shape: array
Ids of sensorium-observation.v1 records emitted because the directive produced facts about the world. Empty or absent when no world-fact observation was produced.
artifacts¶
- Required:
no - Shape: array
References to artifacts produced by the directive, such as stdout, stderr, generated files, or raw signal captures, using the minimal artifact-lane contract from proposal 045.
diagnostics¶
- Required:
no - Shape: array
Structured diagnostics from sensorium-core or the connector. These are audit hints, not observation records.
issuer_delegation¶
- Required:
no - Shape: ref:
#/$defs/delegationProof
Optional proposal-032 DelegationProof copied from the originating directive when the directive was signed by a proxy key. Outcome verification policy treats this as part of the directive audit chain; Sensorium v1 accepts only max_chain_depth=0.
audit/store¶
- Required:
no - Shape: object
Optional host-owned audit sink reference. Directive outcomes are written to the Node-owned module store behind restricted sensorium.audit.* capabilities, not to local Agora observation topics.
connector/dispatched_at¶
- Required:
no - Shape: string
RFC 3339 timestamp when sensorium-core dispatched the admitted directive to the selected connector. Absent when the directive was rejected before connector selection.
connector/responded_at¶
- Required:
no - Shape: string
RFC 3339 timestamp when sensorium-core received the terminal connector response. Absent when the connector did not respond before timing.timeout_ms expired.
directive/signature_digest¶
- Required:
no - Shape: string
Optional sha256 digest of the originating directive signature bytes, using the canonical signature value exactly as verified by sensorium-core. Preserves audit linkage without duplicating the full signature in the outcome record.
Definition Semantics¶
$defs.artifactRef¶
- Shape: object
Minimal artifact-lane reference. The artifact itself is stored outside this envelope and is addressed by a content or host-owned blob reference.
$defs.delegationProof¶
- Shape: object
Compact DelegationProof from proposal 032. In Sensorium v1 the proof may be present, but sub-delegation chains are not supported; max_chain_depth, when present, MUST be 0. Additional fields are tolerated for open-world forward compatibility; the canonical proof payload verified by implementations is limited to the proposal-032 compact proof fields.