Decision Record Schema
Purpose
A decision record captures an explicit human decision regarding an inferred system intent element.
Decision records:
- Establish authority
- Preserve rationale
- Enable traceability
- Support audit and review
Decision records are immutable and version-linked.
Schema overview
A decision record consists of:
- Identification
- Decision classification
- Intent element reference
- Human authorship
- Evidence and rationale
- Supersession linkage
All fields defined below are normative unless explicitly marked optional.
Field definitions
decisionRecordId
Type: string
Required: yes
Immutable: yes
Globally unique identifier for the decision record.
This identifier is never reused.
decisionType
Type: enum
Required: yes
Allowed values:
acceptmodifyrejectdefer
Defines the semantic outcome of the decision.
Each decision record MUST declare exactly one decision type.
intentElement
Type: object
Required: yes
Identifies the intent element under review.
intentElement.intentId
Type: string
Unique identifier of the intent element.
intentElement.axis
Type: enum
One of:
componentfunctionmodescenariointerfacesignalhazardsafetyConstraintuca
Axis names may be extended in project-specific schemas. See Intent Axes and the Axis Definition Schema for more information.
intentElement.label
Type: string
Human-readable description of the intent element at the time of review.
intentElement.version
Type: string
The intentSnapshotId of the intent snapshot in which the element appears.
decisionAuthor
Type: object
Required: yes
Identifies the human making the decision.
decisionAuthor.name
Type: string
Full name of the decision author.
decisionAuthor.role
Type: string
Engineering or review role.
decisionAuthor.organization
Type: string
Organizational affiliation.
decisionTimestamp
Type: string (ISO 8601 timestamp)
Required: yes
Records when the decision was made.
This timestamp refers to the decision, not the inference.
sourceArtifacts
Type: array of objects
Required: yes
Lists artifacts used to justify the decision.
Each entry includes:
sourceArtifacts[].artifactId
Type: string
Identifier of the artifact.
sourceArtifacts[].artifactType
Type: enum
Typical values include:
requirementdocumentmodelanalysisemailmeetingNoteimage
Artifact types are extensible.
sourceArtifacts[].reference
Type: string
Human-readable reference such as section number, filename, or description.
rationale
Type: string
Required: yes
Free-text explanation of the decision.
The rationale should explain:
- Why the decision was made
- Why alternatives were rejected
- What assumptions apply
Empty rationales are not permitted.
supersedesDecisionId
Type: string or null
Required: no
References a prior decision record that is superseded by this one.
If present, the referenced decision record remains valid historically but is no longer active.
Formal JSON representation
{
"decisionRecordId": "string",
"decisionType": "accept | modify | reject | defer",
"intentElement": {
"intentId": "string",
"axis": "component | function | mode | scenario | interface | signal | hazard | safetyConstraint | uca",
"label": "string",
"version": "string"
},
"decisionAuthor": {
"name": "string",
"role": "string",
"organization": "string"
},
"decisionTimestamp": "YYYY-MM-DDThh:mm:ssZ",
"sourceArtifacts": [
{
"artifactId": "string",
"artifactType": "string",
"reference": "string"
}
],
"rationale": "string",
"supersedesDecisionId": "string | null"
}
Examples
Example: Accept decision
{
"decisionRecordId": "DR-001",
"decisionType": "accept",
"intentElement": {
"intentId": "INT-SAF-003",
"axis": "safetyConstraint",
"label": "Transition to inertial navigation on GNSS signal loss during approach",
"version": "intent-v1.2"
},
"decisionAuthor": {
"name": "A. Engineer",
"role": "Systems Engineer",
"organization": "Example Aerospace"
},
"decisionTimestamp": "2025-03-14T10:42:00Z",
"sourceArtifacts": [
{
"artifactId": "R3",
"artifactType": "requirement",
"reference": "Navigation Spec §4.2"
}
],
"rationale": "The requirement explicitly describes behavior intended to preserve situational awareness under degraded conditions.",
"supersedesDecisionId": null
}
Example: Modify decision
{
"decisionRecordId": "DR-002",
"decisionType": "modify",
"intentElement": {
"intentId": "INT-SCN-001",
"axis": "scenario",
"label": "GNSS signal loss",
"version": "intent-v1.2"
},
"decisionAuthor": {
"name": "A. Engineer",
"role": "Systems Engineer",
"organization": "Example Aerospace"
},
"decisionTimestamp": "2025-03-14T11:05:00Z",
"sourceArtifacts": [
{
"artifactId": "R4",
"artifactType": "requirement",
"reference": "Navigation Spec §4.3"
}
],
"rationale": "Protected mode is entered under multiple conditions. Scenario description is too narrow.",
"supersedesDecisionId": null
}
Example: Reject decision
{
"decisionRecordId": "DR-003",
"decisionType": "reject",
"intentElement": {
"intentId": "INT-MOD-004",
"axis": "mode",
"label": "Emergency mode",
"version": "intent-v1.2"
},
"decisionAuthor": {
"name": "A. Engineer",
"role": "Certification Engineer",
"organization": "Example Aerospace"
},
"decisionTimestamp": "2025-03-14T11:30:00Z",
"sourceArtifacts": [
{
"artifactId": "NavSpec",
"artifactType": "document",
"reference": "Full document review"
}
],
"rationale": "No artifact supports the existence of an emergency mode.",
"supersedesDecisionId": null
}
Notes on extensibility
- Axis values may be extended in project-specific schemas
- Artifact types are intentionally open-ended
- Additional metadata fields may be added without altering core semantics
Backward compatibility is a design goal.
Intended use
This schema is intended to be:
- Referenced by tools
- Cited in audits
- Used as a stable contract for decision traceability
It is not intended to encode workflow or approval logic.