Architecture decisions: files, diagram references, views and panels

- *.archify-decision files: id (unique, words), title, status, date,
  elements, diagrams, supersedes, and prose; parsed, merged and link-checked
  in the model index; diagnostics on the file
- diagrams point at decisions with decisions: [...] on the diagram, nodes
  and edges; stripped before Archify, unknown ids reported, completion,
  hover and go-to-definition for the ids and for elements/diagrams/
  supersedes in decision files
- Decisions panel on the main.archify page; Decisions rail panel under a
  diagram (hover lights up the node or connection); decisions on element
  cards and in the element dialog; decision view for the file, with a
  lost-model note outside a model
- Archify | New Decision… command and template; editor schemas; the three
  New Model examples carry decisions; docs, changelog, 0.8.0
This commit is contained in:
2026-10-19 23:13:05 +03:00
parent 33ebdd6328
commit ebf320a023
49 changed files with 1637 additions and 55 deletions
+27
View File
@@ -0,0 +1,27 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Archify architecture decision",
"description": "One architecture decision of a model. Diagrams point at it with `decisions: [<id>]`.",
"type": "object",
"additionalProperties": false,
"required": [
"decision"
],
"properties": {
"schema_version": {
"const": 1
},
"decision": {
"type": "string",
"description": "What was decided."
},
"context": {
"type": "string",
"description": "The situation and what forced a decision."
},
"consequences": {
"type": "string",
"description": "What becomes easier, harder, or must change."
}
}
}
+24
View File
@@ -219,6 +219,14 @@
"diagram": {
"type": "string",
"description": "Diagram that explains this element, relative to the model root (main.archify). Double-click the node to open it."
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
},
"anyOf": [
@@ -332,6 +340,14 @@
},
"width": {
"$ref": "common.schema.json#/$defs/relationshipWidth"
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
@@ -363,6 +379,14 @@
"description": "What the model covers; shown on the model page."
}
}
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
+24
View File
@@ -180,6 +180,14 @@
},
"yOffset": {
"type": "number"
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
@@ -256,6 +264,14 @@
},
"width": {
"$ref": "common.schema.json#/$defs/relationshipWidth"
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
@@ -287,6 +303,14 @@
"description": "What the model covers; shown on the model page."
}
}
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
+24
View File
@@ -208,6 +208,14 @@
},
"yOffset": {
"type": "number"
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
@@ -288,6 +296,14 @@
},
"width": {
"$ref": "common.schema.json#/$defs/relationshipWidth"
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
@@ -319,6 +335,14 @@
"description": "What the model covers; shown on the model page."
}
}
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
+24
View File
@@ -144,6 +144,14 @@
},
"sources": {
"$ref": "common.schema.json#/$defs/sourceReferences"
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
@@ -213,6 +221,14 @@
},
"note": {
"type": "string"
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
@@ -270,6 +286,14 @@
"description": "What the model covers; shown on the model page."
}
}
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
+24
View File
@@ -331,6 +331,14 @@
},
"yOffset": {
"type": "number"
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
@@ -419,6 +427,14 @@
"width": {
"type": "number",
"minimum": 0.5
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
}
}
@@ -450,6 +466,14 @@
"description": "What the model covers; shown on the model page."
}
}
},
"decisions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Ids of architecture decisions (*.archify-decision files of the model) this is about. Shown in the Decisions panel under the diagram."
}
},
"$defs": {