Skip to content

Commit e9aa58b

Browse files
committed
feat: define evidence-labelled diagnosis records
1 parent 8a2a3d0 commit e9aa58b

16 files changed

Lines changed: 1853 additions & 2 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ Generated artifacts:
4444
## 4) First-party catalog summary
4545

4646
Current canonical inventory snapshot (recompute with the commands shown):
47-
- 27 specifications (`find library/organization/specs -name "*.spec.md"`)
48-
- 33 skills (`find library/organization/skills -name "SKILL.md"`)
47+
- 28 specifications (`find library/organization/specs -name "*.spec.md"`)
48+
- 34 skills (`find library/organization/skills -name "SKILL.md"`)
4949
- 9 canonical agent profiles (`find library/organization/agents -name "AGENT.md"`)
5050

5151
Machine-readable catalog and provenance:

catalog/first-party/catalog.v1.json

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,53 @@
375375
],
376376
"title": "Create Design System Document"
377377
},
378+
{
379+
"artifact_version": "1.0.0",
380+
"compatibility": {
381+
"required_tools": []
382+
},
383+
"dependencies": [
384+
"specification/diagnosis-record"
385+
],
386+
"deprecation": {
387+
"replacement_id": null
388+
},
389+
"description": "Creates or updates an evidence-labelled technical diagnosis record from supplied logs, code, commands, and debugging context. Use when an investigation needs a durable, resumable trace without implying that a root cause is confirmed or a fix is authorized.",
390+
"domain": "quality",
391+
"generated_distribution_paths": [
392+
"dist/skills/create-diagnosis-record/SKILL.md"
393+
],
394+
"id": "skill/create-diagnosis-record",
395+
"implements_specification_id": "specification/diagnosis-record",
396+
"kind": "skill",
397+
"license": "MIT",
398+
"lifecycle": {
399+
"state": "draft"
400+
},
401+
"owner": {
402+
"maintainers": [
403+
"egohygiene"
404+
],
405+
"primary": "egohygiene"
406+
},
407+
"related_ids": [],
408+
"release": {
409+
"included": false,
410+
"reason": "Only stable artifacts are releasable under catalog policy."
411+
},
412+
"scope": "organization",
413+
"source_digest": {
414+
"algorithm": "sha256-utf8-lf",
415+
"value": "68923d96542858b36c38e2a2166addb1ae2ddcfb22bfc29696fb4fd65afb29b8"
416+
},
417+
"source_path": "library/organization/skills/quality/create-diagnosis-record/SKILL.md",
418+
"supersedes_ids": [],
419+
"tags": [
420+
"quality",
421+
"skill"
422+
],
423+
"title": "Create Diagnosis Record"
424+
},
378425
{
379426
"artifact_version": "1.0.0",
380427
"compatibility": {
@@ -2793,6 +2840,61 @@
27932840
],
27942841
"title": "Repository Auditor Specification"
27952842
},
2843+
{
2844+
"artifact_version": "1.0.0",
2845+
"compatibility": {
2846+
"required_tools": []
2847+
},
2848+
"dependencies": [
2849+
"specification/specfile"
2850+
],
2851+
"deprecation": {
2852+
"replacement_id": null
2853+
},
2854+
"description": "A diagnosis record is a durable, evidence-labelled account of a bounded",
2855+
"domain": "quality",
2856+
"generated_distribution_paths": [
2857+
"dist/specs/diagnosis-record.spec.md"
2858+
],
2859+
"id": "specification/diagnosis-record",
2860+
"implements_specification_id": null,
2861+
"kind": "specification",
2862+
"license": "MIT",
2863+
"lifecycle": {
2864+
"state": "draft"
2865+
},
2866+
"owner": {
2867+
"maintainers": [
2868+
"egohygiene"
2869+
],
2870+
"primary": "egohygiene"
2871+
},
2872+
"related_ids": [
2873+
"skill/bug-fixing",
2874+
"skill/create-diagnosis-record",
2875+
"specification/auditor",
2876+
"specification/repository-journal"
2877+
],
2878+
"release": {
2879+
"included": false,
2880+
"reason": "Only stable artifacts are releasable under catalog policy."
2881+
},
2882+
"scope": "organization",
2883+
"source_digest": {
2884+
"algorithm": "sha256-utf8-lf",
2885+
"value": "b695aac9e9fd72cbcf9ffd4b96f137e7a476da0d952fcc5b73b37b7d5ad43e86"
2886+
},
2887+
"source_path": "library/organization/specs/quality/diagnosis-record.spec.md",
2888+
"supersedes_ids": [],
2889+
"tags": [
2890+
"diagnosis",
2891+
"debugging",
2892+
"evidence",
2893+
"provenance",
2894+
"traceability"
2895+
],
2896+
"title": "Diagnosis Record Specification"
2897+
},
27962898
{
27972899
"artifact_version": "2.0.0",
27982900
"compatibility": {
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
{
2+
"$schema": "https://json-schema.org/draft/2020-12/schema",
3+
"$id": "https://github.com/egohygiene/aether/catalog/schemas/aether.diagnosis-record.v1.schema.json",
4+
"title": "Aether Diagnosis Record v1 Frontmatter",
5+
"type": "object",
6+
"additionalProperties": false,
7+
"required": [
8+
"schema",
9+
"id",
10+
"title",
11+
"status",
12+
"created",
13+
"updated",
14+
"authors",
15+
"scope",
16+
"context",
17+
"symptom_summary",
18+
"reproduction",
19+
"root_cause",
20+
"remediation",
21+
"validation",
22+
"sensitivity",
23+
"redactions",
24+
"related",
25+
"supersedes",
26+
"superseded_by"
27+
],
28+
"properties": {
29+
"schema": {
30+
"const": "aether.diagnosis-record/v1"
31+
},
32+
"id": {
33+
"type": "string",
34+
"pattern": "^diag-[0-9]{8}-[a-z0-9]+(?:-[a-z0-9]+)*$"
35+
},
36+
"title": {
37+
"type": "string",
38+
"minLength": 1
39+
},
40+
"status": {
41+
"enum": ["open", "monitoring", "resolved", "closed", "superseded"]
42+
},
43+
"created": {
44+
"type": "string",
45+
"format": "date-time"
46+
},
47+
"updated": {
48+
"type": "string",
49+
"format": "date-time"
50+
},
51+
"authors": {
52+
"type": "array",
53+
"minItems": 1,
54+
"uniqueItems": true,
55+
"items": {
56+
"type": "string",
57+
"minLength": 1
58+
}
59+
},
60+
"scope": {
61+
"type": "array",
62+
"minItems": 1,
63+
"uniqueItems": true,
64+
"items": {
65+
"type": "string",
66+
"minLength": 1
67+
}
68+
},
69+
"context": {
70+
"type": "object",
71+
"additionalProperties": false,
72+
"required": ["repository", "environment", "component", "artifact_version", "correlation_ids"],
73+
"properties": {
74+
"repository": {"type": "string", "minLength": 1},
75+
"environment": {"type": "string", "minLength": 1},
76+
"component": {"type": "string", "minLength": 1},
77+
"artifact_version": {"type": "string", "minLength": 1},
78+
"correlation_ids": {
79+
"type": "array",
80+
"uniqueItems": true,
81+
"items": {"type": "string", "minLength": 1}
82+
}
83+
}
84+
},
85+
"symptom_summary": {
86+
"type": "string",
87+
"minLength": 1
88+
},
89+
"reproduction": {
90+
"$ref": "#/$defs/reproductionState"
91+
},
92+
"root_cause": {
93+
"type": "object",
94+
"additionalProperties": false,
95+
"required": ["status", "hypothesis_id"],
96+
"properties": {
97+
"status": {"enum": ["unknown", "suspected", "confirmed"]},
98+
"hypothesis_id": {
99+
"type": ["string", "null"],
100+
"pattern": "^H-[0-9]{3,}$"
101+
}
102+
}
103+
},
104+
"remediation": {
105+
"type": "object",
106+
"additionalProperties": false,
107+
"required": ["status"],
108+
"properties": {
109+
"status": {
110+
"enum": ["not-authorized", "not-planned", "planned", "in-progress", "implemented", "reverted", "not-applicable"]
111+
}
112+
}
113+
},
114+
"validation": {
115+
"type": "object",
116+
"additionalProperties": false,
117+
"required": ["status"],
118+
"properties": {
119+
"status": {"enum": ["not-run", "partial", "passed", "failed", "blocked"]}
120+
}
121+
},
122+
"sensitivity": {
123+
"enum": ["public", "internal", "restricted"]
124+
},
125+
"redactions": {
126+
"enum": ["none", "present"]
127+
},
128+
"related": {"$ref": "#/$defs/stringList"},
129+
"supersedes": {"$ref": "#/$defs/stringList"},
130+
"superseded_by": {"$ref": "#/$defs/stringList"}
131+
},
132+
"$defs": {
133+
"reproductionState": {
134+
"type": "object",
135+
"additionalProperties": false,
136+
"required": ["status"],
137+
"properties": {
138+
"status": {
139+
"enum": ["not-attempted", "blocked", "not-reproduced", "reproduced", "intermittent"]
140+
}
141+
}
142+
},
143+
"stringList": {
144+
"type": "array",
145+
"uniqueItems": true,
146+
"items": {"type": "string", "minLength": 1}
147+
}
148+
},
149+
"allOf": [
150+
{
151+
"if": {
152+
"properties": {
153+
"root_cause": {
154+
"properties": {"status": {"const": "confirmed"}},
155+
"required": ["status"]
156+
}
157+
}
158+
},
159+
"then": {
160+
"properties": {
161+
"root_cause": {
162+
"properties": {
163+
"hypothesis_id": {"type": "string", "pattern": "^H-[0-9]{3,}$"}
164+
}
165+
}
166+
}
167+
}
168+
}
169+
]
170+
}

0 commit comments

Comments
 (0)