Trace
A trace: what one run of a flow or an algorithm did: what it used, each step, what it made, and the verdict. Its terms follow W3C PROV where they map: agents (prov:wasAssociatedWith), inputs (prov:used), outputs (prov:generated).
https://opendevelopmentstandards.org/schema/1.0.0-rc.2/core/Trace.json
Fields
Every entity also has the fields of the Entity base. The first row lists them.
From the Entity baseidnamedescriptionidentifierslinkscreatedAtupdatedAt
idRequiredtextnot emptyThe record's id: unique within the document. Fields that point at the record hold this id.
nametextThe name people use for the record.
descriptiontextWhat the record is, in words.
identifiersList ofDatatypeIdentifierIds the record has in other systems.
linksList ofDatatypeLinkOpen-ended links to other records.
createdAtdate-time (RFC 3339)When the record was created, in its producer's system.
updatedAtdate-time (RFC 3339)When the record last changed, in its producer's system.
flowThe flow that ran.
flowVersiontextThe flow's version when it ran.
frameworkThe framework the run judged against.
statusRequiredOne ofthe codes belowHow the run ended.
completed- The run reached its end.
blocked- The run waits for a person's decision.
failed- The run stopped on an error.
summarytextWhat the run found, in words.
startedAtdate-time (RFC 3339)When the run started.
endedAtdate-time (RFC 3339)When the run ended.
agentsList ofAgentWho or what ran or took part in the run.
inputsList ofId ofany recordThe ids of the records the run used.
outputsList ofId ofany recordThe ids of the records the run made, such as evidence.
algorithmsList ofId ofAlgorithmThe algorithm versions that ran.
parametersconfidentialobject with any keysThe run's full settings, such as a solver's grid and its turbulence settings.
inputsHashtextmatches ^[0-9a-f]{64}$The SHA-256 of the canonical JSON (RFC 8785) of the run's inputs, in lower-case hex.
snapshotThe file that holds the run's full inputs.
drafttrue or falseTrue when the run is a draft and not for release.
scenarioValuesconfidentialList ofScenarioValueThe values the run was given, with who set each one.
stepsList ofTraceStepWhat each step did, in the order the steps ran.
verdictjustificationfindingsList ofPartFindingFindings about the run as a whole.
comparisonsList ofPartComparisonComparisons the run made, such as a validation run against benchmarks.
controlsList ofId ofControlThe controls the run had to meet.
Agent
One agent of a run.
agentRequiredId ofany recordThe id of the stakeholder or algorithm.
roletextThe part it played, such as author, reviewer or engine.
ScenarioValue
One value a run was given.
keyRequiredtextnot emptyThe value's key.
valuenumberortextortrue or falseornullorList ofnumberortextortrue or falseornullThe value: a number, text, true or false, or a list of these.
setByOne ofthe codes belowWho set the value.
flow- The flow.
person- A person, for this run.
default- A default of the producer.
context- The context the run was given.
StepValue
A value a step read or wrote.
nameRequiredtextnot emptyThe input's or output's name on the step.
quantityCode fromcore/quantities or acoustics/quantitiesWhat the value describes, from a quantities vocabulary, such as
a_weighted_sound_pressure_level. With it, the value uses the term's unit.valueThe value, when it is one amount or a list of amounts. A list or an object that is not an amount is in
data; one too large to write here sits in a File (file).countwhole numberat least 0The number of items of a list, or of fields of an object.
recordsList ofId ofany recordThe records the value stands for, in order, such as the receptors a step read or the evidence it wrote.
dataobject with any keysorList ofvaluesThe list or the object itself, as the producer wrote it, when it is not one amount. With it, a reader needs no other file to repeat the step. A value too large to write here sits in a File, under
value.file.snapshotKeytextWhere the full value sits in the snapshot.
variabletextThe variable the value came from.
sourcesList ofnullorobject, fields belowWhere the value came from, when another trace of the document wrote it: one item for each item of the value's list, or one item for one amount. An item names the trace and the name it wrote the value under; null names no source. A check compares each item with what that trace wrote.
fallbackobject, fields belowWhen the step filled an empty input from a fallback: what it read and the value it ran with.
typeRequiredOne ofthe codes belowWhat the step read instead.
parameters- The run's parameters.
scenario- A scenario value, under `key`.
engine_default- A constant in the engine.
keytextThe key read.
valueThe value the step ran with.
TraceStep
What one step did in a run.
stepRequiredThe step that ran.
agentId ofany recordThe id of who or what did the step.
startedAtdate-time (RFC 3339)When the step started.
endedAtdate-time (RFC 3339)When the step ended.
summarytextWhat the step did, in words.
sealedtrue or falseTrue when the step was sealed: its inputs and outputs are here, its internals are not.
inputsList ofStepValueWhat the step read.
outputsList ofStepValueWhat the step wrote.
decisionobject, fields belowFor a decision: what it tested and where the flow went.
edgeThe edge the flow took.
evaluatednumberortextortrue or falseornullThe value the decision tested.
branchesList ofobject, fields belowEach edge the decision could take, and whether it matched and was taken.
edgeRequiredThe edge.
labeltextIts label.
matchedtrue or falseTrue when its
whenheld.takentrue or falseTrue when the flow took it.
tracesList ofId ofTraceFor a flow step: the runs the step started, in order.
oversightobject, fields belowA person's approval of the step.
requiredtrue or falseTrue when a person had to approve the step.
statusOne ofthe codes belowWhere the approval stands.
pending- Not decided yet.
approved- A person approved it.
rejected- A person rejected it.
approvedByWho decided.
approvedAtdate-time (RFC 3339)When they decided.
authorityThe rule that asks for the approval.
findingsList ofPartFindingFindings about the step.
Verdict
The run's verdict against its criteria. Leave it out when the run judged nothing.
levelRequiredOne ofthe codes belowThe verdict. The worst result decides: one criterion that is not met makes it fail, and the run's verdict is the worst level of its subjects that have one.
pass- Every criterion judged is met.
partial- No criterion judged failed, and at least one is met only in part, such as with a warning or a condition.
fail- At least one criterion judged is not met.
subjectsList ofobject, fields belowThe verdict for each thing judged, such as each receptor. A subject that was not judged has no level.
nameRequiredtextWhat was judged, such as one receptor.
levelOne ofthe codes belowIts verdict. Leave it out when the subject was not judged.
pass- Every criterion judged is met.
partial- No criterion judged failed, and at least one is met only in part, such as with a warning or a condition.
fail- At least one criterion judged is not met.
reasontextWhy the subject has no level, when it was not judged.
countsobject, fields belowHow many criteria had each verdict.
passwhole numberat least 0Criteria met.
partialwhole numberat least 0Criteria partly met.
failwhole numberat least 0Criteria not met.
totalwhole numberat least 0How many criteria were judged.
basistextWhy the verdict is what it is, in words.
variablesList oftextThe variables the verdict rests on.
Justification
Why the run's outcome follows from its inputs.
summarytextWhy the outcome follows, in words.
inputsList oftextThe inputs the outcome rests on.
citationsList ofDatatypeCitationThe published works the outcome rests on.
Links
Holds Parts this record embeds, with the field that holds each.
Points at Records whose ids this record holds, with the field that holds each.
- FlowEntityflowThe steps of an evaluation and the edges between them. A flow can run another flow as one of its steps.
- FrameworkEntityframeworkA set of rules for one domain, issued by a regulator, an industry body or an organization, such as AER Directive 038. It holds its policies, controls, periods and variables.
- AlgorithmEntityalgorithmsA published or versioned computation, such as ISO 9613-2:2024, or a model trained on data. Sealed steps and runs refer to it by id, as the method they claim to follow.
- FileEntitysnapshotA file that records point at, such as a recording, a certificate, a photo or a grid, with its media type, its place and its hash. A file does not change: a changed file is a new File.
- ControlPartcontrolsA check on how an evaluation is done, which a framework sets, such as "a person approves each decision" or "measurements use a Class 1 meter". A mitigation is not a control: a barrier is a Structure, and a site's own limit is a criterion of its Permit.
- StepPartTraceStep.stepOne unit of work in a flow, such as a calculation, a question, a decision or a run of an algorithm. A sealed step names its inputs, its outputs and the algorithm it claims to follow, but not how it works.
- EdgePartTraceStep.decision.edgeTraceStep.decision.branches.edgeA link from one step of a flow to the next. Its
whensays when the flow takes it. - StakeholderEntityTraceStep.oversight.approvedByA person or organization involved in a development, such as an operator, a consultant, a regulator or a resident.
Held by Records that embed this one, with their field that holds it.
Pointed at by Records that hold this one's id, with their field that holds it.
- AssessmentEntitytracesAn evaluation of a development and its result, such as a noise impact assessment. It names its authors, scope and framework, the traces and evidence it rests on, and its conclusions. A trace is one run; an assessment can rest on many.
- EvidenceEntitytraceOne observation, measured or calculated: what was observed, of which record, by which instrument or algorithm, over which interval, and the result. As in ISO 19156 (Observations and measurements).
Examples
An id that another example defines opens that record.
Full example
{
"id": "trace-0412-night",
"flow": "flow-d038",
"flowVersion": "3",
"framework": "framework-d038",
"status": "completed",
"startedAt": "2026-07-20T16:02:11Z",
"endedAt": "2026-07-20T16:02:19Z",
"agents": [
{
"agent": "stakeholder-consultant",
"role": "author"
},
{
"agent": "algorithm-iso9613",
"role": "engine"
}
],
"inputs": [
"feature-wellsite",
"feature-dwelling",
"weather-2026-07-14T22"
],
"outputs": [
"evidence-predicted-night"
],
"algorithms": [
"algorithm-iso9613"
],
"inputsHash": "9f2c1e4b7a0d3c5e8f6a1b2c3d4e5f60718293a4b5c6d7e8f9a0b1c2d3e4f5a6",
"steps": [
{
"step": "step-propagation",
"sealed": true,
"outputs": [
{
"name": "receptor_levels",
"value": {
"amount": [
36.4
],
"unit": "dB"
}
}
]
}
],
"verdict": {
"level": "pass",
"basis": "Every dwelling meets the night-time permissible sound level."
}
}Show 1 more exampleHide the other example
Minimal example: the required fields only
{
"id": "trace-1",
"status": "completed"
}Changes and file
Changes
- 0.1.0 First version.
Schema file
Show the JSON SchemaHide the JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://opendevelopmentstandards.org/schema/1.0.0-rc.2/core/Trace.json",
"title": "Trace",
"description": "A trace: what one run of a flow or an algorithm did: what it used, each step, what it made, and the verdict. Its terms follow W3C PROV where they map: agents (prov:wasAssociatedWith), inputs (prov:used), outputs (prov:generated).",
"$ref": "Entity.json",
"type": "object",
"properties": {
"flow": {
"type": "string",
"minLength": 1,
"x-ods-ref": "Flow",
"description": "The flow that ran."
},
"flowVersion": {
"type": "string",
"description": "The flow's version when it ran."
},
"framework": {
"type": "string",
"minLength": 1,
"x-ods-ref": "Framework",
"description": "The framework the run judged against."
},
"status": {
"type": "string",
"enum": [
"completed",
"blocked",
"failed"
],
"description": "How the run ended.",
"x-ods-options": [
{
"value": "completed",
"title": "Completed",
"description": "The run reached its end."
},
{
"value": "blocked",
"title": "Blocked",
"description": "The run waits for a person's decision."
},
{
"value": "failed",
"title": "Failed",
"description": "The run stopped on an error."
}
]
},
"summary": {
"type": "string",
"description": "What the run found, in words."
},
"startedAt": {
"type": "string",
"format": "date-time",
"description": "When the run started."
},
"endedAt": {
"type": "string",
"format": "date-time",
"description": "When the run ended."
},
"agents": {
"type": "array",
"items": {
"$ref": "#/$defs/Agent"
},
"description": "Who or what ran or took part in the run."
},
"inputs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"x-ods-ref": "*"
},
"description": "The ids of the records the run used."
},
"outputs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"x-ods-ref": "*"
},
"description": "The ids of the records the run made, such as evidence."
},
"algorithms": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"x-ods-ref": "Algorithm"
},
"description": "The algorithm versions that ran."
},
"parameters": {
"type": "object",
"x-ods-open": true,
"description": "The run's full settings, such as a solver's grid and its turbulence settings.",
"x-ods-personal": "confidential"
},
"inputsHash": {
"type": "string",
"description": "The SHA-256 of the canonical JSON (RFC 8785) of the run's inputs, in lower-case hex.",
"pattern": "^[0-9a-f]{64}$"
},
"snapshot": {
"type": "string",
"minLength": 1,
"x-ods-ref": "File",
"description": "The file that holds the run's full inputs."
},
"draft": {
"type": "boolean",
"description": "True when the run is a draft and not for release."
},
"scenarioValues": {
"type": "array",
"items": {
"$ref": "#/$defs/ScenarioValue"
},
"description": "The values the run was given, with who set each one.",
"x-ods-personal": "confidential"
},
"steps": {
"type": "array",
"items": {
"$ref": "#/$defs/TraceStep"
},
"description": "What each step did, in the order the steps ran."
},
"verdict": {
"$ref": "#/$defs/Verdict"
},
"justification": {
"$ref": "#/$defs/Justification"
},
"findings": {
"type": "array",
"items": {
"$ref": "Finding.json"
},
"description": "Findings about the run as a whole."
},
"comparisons": {
"type": "array",
"items": {
"$ref": "Comparison.json"
},
"description": "Comparisons the run made, such as a validation run against benchmarks."
},
"controls": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"x-ods-ref": "Control"
},
"description": "The controls the run had to meet."
}
},
"required": [
"status"
],
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false,
"$defs": {
"Agent": {
"type": "object",
"properties": {
"agent": {
"type": "string",
"description": "The id of the stakeholder or algorithm.",
"minLength": 1,
"x-ods-ref": "*"
},
"role": {
"type": "string",
"description": "The part it played, such as author, reviewer or engine."
}
},
"required": [
"agent"
],
"description": "One agent of a run.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
},
"ScenarioValue": {
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "The value's key.",
"minLength": 1
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
}
}
],
"description": "The value: a number, text, true or false, or a list of these."
},
"setBy": {
"type": "string",
"enum": [
"flow",
"person",
"default",
"context"
],
"description": "Who set the value.",
"x-ods-options": [
{
"value": "flow",
"title": "Flow",
"description": "The flow."
},
{
"value": "person",
"title": "Person",
"description": "A person, for this run."
},
{
"value": "default",
"title": "Default",
"description": "A default of the producer."
},
{
"value": "context",
"title": "Context",
"description": "The context the run was given."
}
]
}
},
"required": [
"key"
],
"description": "One value a run was given.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
},
"StepValue": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The input's or output's name on the step.",
"minLength": 1
},
"quantity": {
"type": "string",
"pattern": "^[a-z0-9]+(_[a-z0-9]+)*(\\.[a-z0-9]+(_[a-z0-9]+)*)*$",
"x-ods-vocabulary": "*/quantities",
"description": "What the value describes, from a quantities vocabulary, such as `a_weighted_sound_pressure_level`. With it, the value uses the term's unit."
},
"value": {
"$ref": "Value.json",
"description": "The value, when it is one amount or a list of amounts. A list or an object that is not an amount is in `data`; one too large to write here sits in a File (`file`)."
},
"count": {
"type": "integer",
"minimum": 0,
"description": "The number of items of a list, or of fields of an object."
},
"records": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"x-ods-ref": "*"
},
"description": "The records the value stands for, in order, such as the receptors a step read or the evidence it wrote."
},
"data": {
"anyOf": [
{
"type": "object",
"x-ods-open": true
},
{
"type": "array"
}
],
"description": "The list or the object itself, as the producer wrote it, when it is not one amount. With it, a reader needs no other file to repeat the step. A value too large to write here sits in a File, under `value.file`."
},
"snapshotKey": {
"type": "string",
"description": "Where the full value sits in the snapshot."
},
"variable": {
"type": "string",
"description": "The variable the value came from."
},
"sources": {
"type": "array",
"items": {
"anyOf": [
{
"type": "null"
},
{
"type": "object",
"properties": {
"trace": {
"type": "string",
"minLength": 1,
"x-ods-ref": "Trace",
"description": "The trace that wrote the value."
},
"name": {
"type": "string",
"minLength": 1,
"description": "The name that trace wrote it under. The last value of that name counts."
}
},
"required": [
"trace",
"name"
],
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
}
]
},
"description": "Where the value came from, when another trace of the document wrote it: one item for each item of the value's list, or one item for one amount. An item names the trace and the name it wrote the value under; null names no source. A check compares each item with what that trace wrote."
},
"fallback": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"parameters",
"scenario",
"engine_default"
],
"description": "What the step read instead.",
"x-ods-options": [
{
"value": "parameters",
"title": "Parameters",
"description": "The run's parameters."
},
{
"value": "scenario",
"title": "Scenario",
"description": "A scenario value, under `key`."
},
{
"value": "engine_default",
"title": "Engine default",
"description": "A constant in the engine."
}
]
},
"key": {
"type": "string",
"description": "The key read."
},
"value": {
"$ref": "Value.json",
"description": "The value the step ran with."
}
},
"required": [
"type"
],
"description": "When the step filled an empty input from a fallback: what it read and the value it ran with.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
}
},
"required": [
"name"
],
"description": "A value a step read or wrote.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
},
"TraceStep": {
"type": "object",
"properties": {
"step": {
"type": "string",
"minLength": 1,
"x-ods-ref": "Step",
"description": "The step that ran."
},
"agent": {
"type": "string",
"description": "The id of who or what did the step.",
"x-ods-ref": "*"
},
"startedAt": {
"type": "string",
"format": "date-time",
"description": "When the step started."
},
"endedAt": {
"type": "string",
"format": "date-time",
"description": "When the step ended."
},
"summary": {
"type": "string",
"description": "What the step did, in words."
},
"sealed": {
"type": "boolean",
"description": "True when the step was sealed: its inputs and outputs are here, its internals are not."
},
"inputs": {
"type": "array",
"items": {
"$ref": "#/$defs/StepValue"
},
"description": "What the step read."
},
"outputs": {
"type": "array",
"items": {
"$ref": "#/$defs/StepValue"
},
"description": "What the step wrote."
},
"decision": {
"type": "object",
"properties": {
"edge": {
"type": "string",
"minLength": 1,
"x-ods-ref": "Edge",
"description": "The edge the flow took."
},
"evaluated": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
},
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "The value the decision tested."
},
"branches": {
"type": "array",
"items": {
"type": "object",
"properties": {
"edge": {
"type": "string",
"minLength": 1,
"x-ods-ref": "Edge",
"description": "The edge."
},
"label": {
"type": "string",
"description": "Its label."
},
"matched": {
"type": "boolean",
"description": "True when its `when` held."
},
"taken": {
"type": "boolean",
"description": "True when the flow took it."
}
},
"required": [
"edge"
],
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
},
"description": "Each edge the decision could take, and whether it matched and was taken."
}
},
"description": "For a decision: what it tested and where the flow went.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
},
"traces": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"x-ods-ref": "Trace"
},
"description": "For a flow step: the runs the step started, in order."
},
"oversight": {
"type": "object",
"properties": {
"required": {
"type": "boolean",
"description": "True when a person had to approve the step."
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected"
],
"description": "Where the approval stands.",
"x-ods-options": [
{
"value": "pending",
"title": "Pending",
"description": "Not decided yet."
},
{
"value": "approved",
"title": "Approved",
"description": "A person approved it."
},
{
"value": "rejected",
"title": "Rejected",
"description": "A person rejected it."
}
]
},
"approvedBy": {
"type": "string",
"minLength": 1,
"x-ods-ref": "Stakeholder",
"description": "Who decided."
},
"approvedAt": {
"type": "string",
"format": "date-time",
"description": "When they decided."
},
"authority": {
"$ref": "Citation.json",
"description": "The rule that asks for the approval."
}
},
"description": "A person's approval of the step.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
},
"findings": {
"type": "array",
"items": {
"$ref": "Finding.json"
},
"description": "Findings about the step."
}
},
"required": [
"step"
],
"description": "What one step did in a run.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
},
"Verdict": {
"type": "object",
"properties": {
"level": {
"type": "string",
"enum": [
"pass",
"partial",
"fail"
],
"description": "The verdict. The worst result decides: one criterion that is not met makes it fail, and the run's verdict is the worst level of its subjects that have one.",
"x-ods-options": [
{
"value": "pass",
"title": "Pass",
"description": "Every criterion judged is met."
},
{
"value": "partial",
"title": "Partial",
"description": "No criterion judged failed, and at least one is met only in part, such as with a warning or a condition."
},
{
"value": "fail",
"title": "Fail",
"description": "At least one criterion judged is not met."
}
]
},
"subjects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "What was judged, such as one receptor."
},
"level": {
"type": "string",
"enum": [
"pass",
"partial",
"fail"
],
"description": "Its verdict. Leave it out when the subject was not judged.",
"x-ods-options": [
{
"value": "pass",
"title": "Pass",
"description": "Every criterion judged is met."
},
{
"value": "partial",
"title": "Partial",
"description": "No criterion judged failed, and at least one is met only in part, such as with a warning or a condition."
},
{
"value": "fail",
"title": "Fail",
"description": "At least one criterion judged is not met."
}
]
},
"reason": {
"type": "string",
"description": "Why the subject has no level, when it was not judged."
},
"counts": {
"type": "object",
"properties": {
"pass": {
"type": "integer",
"minimum": 0,
"description": "Criteria met."
},
"partial": {
"type": "integer",
"minimum": 0,
"description": "Criteria partly met."
},
"fail": {
"type": "integer",
"minimum": 0,
"description": "Criteria not met."
}
},
"description": "How many criteria had each verdict.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
},
"total": {
"type": "integer",
"minimum": 0,
"description": "How many criteria were judged."
}
},
"required": [
"name"
],
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
},
"description": "The verdict for each thing judged, such as each receptor. A subject that was not judged has no level."
},
"basis": {
"type": "string",
"description": "Why the verdict is what it is, in words."
},
"variables": {
"type": "array",
"items": {
"type": "string"
},
"description": "The variables the verdict rests on."
}
},
"required": [
"level"
],
"description": "The run's verdict against its criteria. Leave it out when the run judged nothing.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
},
"Justification": {
"type": "object",
"properties": {
"summary": {
"type": "string",
"description": "Why the outcome follows, in words."
},
"inputs": {
"type": "array",
"items": {
"type": "string"
},
"description": "The inputs the outcome rests on."
},
"citations": {
"type": "array",
"items": {
"$ref": "Citation.json"
},
"description": "The published works the outcome rests on."
}
},
"description": "Why the run's outcome follows from its inputs.",
"patternProperties": {
"^x-": {}
},
"unevaluatedProperties": false
}
},
"examples": [
{
"id": "trace-1",
"status": "completed"
},
{
"id": "trace-0412-night",
"flow": "flow-d038",
"flowVersion": "3",
"framework": "framework-d038",
"status": "completed",
"startedAt": "2026-07-20T16:02:11Z",
"endedAt": "2026-07-20T16:02:19Z",
"agents": [
{
"agent": "stakeholder-consultant",
"role": "author"
},
{
"agent": "algorithm-iso9613",
"role": "engine"
}
],
"inputs": [
"feature-wellsite",
"feature-dwelling",
"weather-2026-07-14T22"
],
"outputs": [
"evidence-predicted-night"
],
"algorithms": [
"algorithm-iso9613"
],
"inputsHash": "9f2c1e4b7a0d3c5e8f6a1b2c3d4e5f60718293a4b5c6d7e8f9a0b1c2d3e4f5a6",
"steps": [
{
"step": "step-propagation",
"sealed": true,
"outputs": [
{
"name": "receptor_levels",
"value": {
"amount": [
36.4
],
"unit": "dB"
}
}
]
}
],
"verdict": {
"level": "pass",
"basis": "Every dwelling meets the night-time permissible sound level."
}
}
],
"x-ods-status": "draft",
"x-ods-kind": "entity",
"x-ods-module": "core",
"x-ods-changes": {
"0.1.0": "First version."
}
}