dna-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -0
  3. package/dist/adapters/embedding/onnx.d.ts +32 -0
  4. package/dist/adapters/embedding/onnx.js +51 -0
  5. package/dist/adapters/filesystem/cache.d.ts +16 -0
  6. package/dist/adapters/filesystem/cache.js +113 -0
  7. package/dist/adapters/filesystem/index.d.ts +2 -0
  8. package/dist/adapters/filesystem/index.js +2 -0
  9. package/dist/adapters/filesystem/source.d.ts +82 -0
  10. package/dist/adapters/filesystem/source.js +357 -0
  11. package/dist/adapters/postgres/index.d.ts +2 -0
  12. package/dist/adapters/postgres/index.js +2 -0
  13. package/dist/adapters/postgres/migrations.d.ts +14 -0
  14. package/dist/adapters/postgres/migrations.js +88 -0
  15. package/dist/adapters/postgres/source.d.ts +172 -0
  16. package/dist/adapters/postgres/source.js +569 -0
  17. package/dist/adapters/resolvers/github.d.ts +12 -0
  18. package/dist/adapters/resolvers/github.js +47 -0
  19. package/dist/adapters/resolvers/http.d.ts +22 -0
  20. package/dist/adapters/resolvers/http.js +145 -0
  21. package/dist/adapters/resolvers/index.d.ts +3 -0
  22. package/dist/adapters/resolvers/index.js +3 -0
  23. package/dist/adapters/resolvers/local.d.ts +24 -0
  24. package/dist/adapters/resolvers/local.js +132 -0
  25. package/dist/adapters/search/driver.d.ts +45 -0
  26. package/dist/adapters/search/driver.js +138 -0
  27. package/dist/adapters/search/migrations.d.ts +26 -0
  28. package/dist/adapters/search/migrations.js +58 -0
  29. package/dist/adapters/search/rrf.d.ts +23 -0
  30. package/dist/adapters/search/rrf.js +42 -0
  31. package/dist/adapters/search/sqlite-vec.d.ts +66 -0
  32. package/dist/adapters/search/sqlite-vec.js +294 -0
  33. package/dist/bootstrap.d.ts +45 -0
  34. package/dist/bootstrap.js +134 -0
  35. package/dist/extensions/agentskills/DOCS.md +18 -0
  36. package/dist/extensions/agentskills.d.ts +28 -0
  37. package/dist/extensions/agentskills.js +252 -0
  38. package/dist/extensions/agentsmd/DOCS.md +18 -0
  39. package/dist/extensions/agentsmd.d.ts +22 -0
  40. package/dist/extensions/agentsmd.js +170 -0
  41. package/dist/extensions/audit/kinds/audit-log.kind.yaml +148 -0
  42. package/dist/extensions/audit.d.ts +25 -0
  43. package/dist/extensions/audit.js +62 -0
  44. package/dist/extensions/automation/kinds/automation.kind.yaml +296 -0
  45. package/dist/extensions/automation/query.d.ts +49 -0
  46. package/dist/extensions/automation/query.js +77 -0
  47. package/dist/extensions/automation/write-guards.d.ts +59 -0
  48. package/dist/extensions/automation/write-guards.js +153 -0
  49. package/dist/extensions/automation.d.ts +41 -0
  50. package/dist/extensions/automation.js +54 -0
  51. package/dist/extensions/collab.d.ts +16 -0
  52. package/dist/extensions/collab.js +79 -0
  53. package/dist/extensions/doc/kinds/doc.kind.yaml +118 -0
  54. package/dist/extensions/doc.d.ts +25 -0
  55. package/dist/extensions/doc.js +10 -0
  56. package/dist/extensions/eval/kinds/eval-baseline.kind.yaml +65 -0
  57. package/dist/extensions/eval/kinds/eval-case.kind.yaml +140 -0
  58. package/dist/extensions/eval/kinds/eval-run.kind.yaml +134 -0
  59. package/dist/extensions/eval/kinds/eval-suite.kind.yaml +87 -0
  60. package/dist/extensions/eval.d.ts +24 -0
  61. package/dist/extensions/eval.js +31 -0
  62. package/dist/extensions/evidence/kinds/evidence.kind.yaml +92 -0
  63. package/dist/extensions/evidence.d.ts +17 -0
  64. package/dist/extensions/evidence.js +94 -0
  65. package/dist/extensions/federation.d.ts +22 -0
  66. package/dist/extensions/federation.js +173 -0
  67. package/dist/extensions/guardrails/DOCS.md +20 -0
  68. package/dist/extensions/guardrails.d.ts +31 -0
  69. package/dist/extensions/guardrails.js +228 -0
  70. package/dist/extensions/helix/DOCS-Actor.md +20 -0
  71. package/dist/extensions/helix/DOCS-Agent.md +20 -0
  72. package/dist/extensions/helix/DOCS-UseCase.md +20 -0
  73. package/dist/extensions/helix/layers.d.ts +12 -0
  74. package/dist/extensions/helix/layers.js +18 -0
  75. package/dist/extensions/helix/write-guards.d.ts +70 -0
  76. package/dist/extensions/helix/write-guards.js +172 -0
  77. package/dist/extensions/helix.d.ts +29 -0
  78. package/dist/extensions/helix.js +963 -0
  79. package/dist/extensions/helix_extras.d.ts +124 -0
  80. package/dist/extensions/helix_extras.js +328 -0
  81. package/dist/extensions/hooks.d.ts +31 -0
  82. package/dist/extensions/hooks.js +247 -0
  83. package/dist/extensions/kinddef/DOCS.md +24 -0
  84. package/dist/extensions/kinddef.d.ts +40 -0
  85. package/dist/extensions/kinddef.js +171 -0
  86. package/dist/extensions/lesson.d.ts +6 -0
  87. package/dist/extensions/lesson.js +194 -0
  88. package/dist/extensions/modelreg/kinds/model-profile.kind.yaml +155 -0
  89. package/dist/extensions/modelreg.d.ts +30 -0
  90. package/dist/extensions/modelreg.js +38 -0
  91. package/dist/extensions/recognizer.d.ts +34 -0
  92. package/dist/extensions/recognizer.js +272 -0
  93. package/dist/extensions/research.d.ts +32 -0
  94. package/dist/extensions/research.js +292 -0
  95. package/dist/extensions/safety.d.ts +33 -0
  96. package/dist/extensions/safety.js +230 -0
  97. package/dist/extensions/sdlc/kinds/adr.kind.yaml +136 -0
  98. package/dist/extensions/sdlc/kinds/archive-proposal.kind.yaml +107 -0
  99. package/dist/extensions/sdlc/kinds/changelog.kind.yaml +108 -0
  100. package/dist/extensions/sdlc/kinds/cognitive-policy.kind.yaml +470 -0
  101. package/dist/extensions/sdlc/kinds/forecast.kind.yaml +125 -0
  102. package/dist/extensions/sdlc/kinds/insight.kind.yaml +87 -0
  103. package/dist/extensions/sdlc/kinds/kaizen.kind.yaml +106 -0
  104. package/dist/extensions/sdlc/kinds/lesson-learned.kind.yaml +270 -0
  105. package/dist/extensions/sdlc/kinds/narrative.kind.yaml +189 -0
  106. package/dist/extensions/sdlc/kinds/pattern-insight.kind.yaml +204 -0
  107. package/dist/extensions/sdlc/kinds/postmortem.kind.yaml +168 -0
  108. package/dist/extensions/sdlc/kinds/pre-mortem.kind.yaml +145 -0
  109. package/dist/extensions/sdlc/kinds/prompt-template.kind.yaml +109 -0
  110. package/dist/extensions/sdlc/kinds/retrospective.kind.yaml +186 -0
  111. package/dist/extensions/sdlc/kinds/risk-register.kind.yaml +178 -0
  112. package/dist/extensions/sdlc/kinds/saved-view.kind.yaml +127 -0
  113. package/dist/extensions/sdlc/kinds/status-report.kind.yaml +129 -0
  114. package/dist/extensions/sdlc/kinds/synthesis-run.kind.yaml +279 -0
  115. package/dist/extensions/sdlc/kinds/synthesizer-state.kind.yaml +196 -0
  116. package/dist/extensions/sdlc/kinds/workflow-event.kind.yaml +195 -0
  117. package/dist/extensions/sdlc.d.ts +32 -0
  118. package/dist/extensions/sdlc.js +1318 -0
  119. package/dist/extensions/soulspec/DOCS.md +19 -0
  120. package/dist/extensions/soulspec.d.ts +22 -0
  121. package/dist/extensions/soulspec.js +287 -0
  122. package/dist/extensions/tenant.d.ts +6 -0
  123. package/dist/extensions/tenant.js +291 -0
  124. package/dist/extensions/testkit.d.ts +24 -0
  125. package/dist/extensions/testkit.js +211 -0
  126. package/dist/index.d.ts +80 -0
  127. package/dist/index.js +102 -0
  128. package/dist/kernel/_text.d.ts +28 -0
  129. package/dist/kernel/_text.js +42 -0
  130. package/dist/kernel/bundle-handle.d.ts +83 -0
  131. package/dist/kernel/bundle-handle.js +184 -0
  132. package/dist/kernel/capabilities.d.ts +157 -0
  133. package/dist/kernel/capabilities.js +109 -0
  134. package/dist/kernel/collaborator-ports.d.ts +91 -0
  135. package/dist/kernel/collaborator-ports.js +1 -0
  136. package/dist/kernel/composition-resolver.d.ts +215 -0
  137. package/dist/kernel/composition-resolver.js +558 -0
  138. package/dist/kernel/composition.d.ts +10 -0
  139. package/dist/kernel/composition.js +1 -0
  140. package/dist/kernel/descriptor-loader.d.ts +13 -0
  141. package/dist/kernel/descriptor-loader.js +48 -0
  142. package/dist/kernel/document.d.ts +43 -0
  143. package/dist/kernel/document.js +71 -0
  144. package/dist/kernel/embedding.d.ts +28 -0
  145. package/dist/kernel/embedding.js +78 -0
  146. package/dist/kernel/errors.d.ts +62 -0
  147. package/dist/kernel/errors.js +82 -0
  148. package/dist/kernel/events.d.ts +6 -0
  149. package/dist/kernel/events.js +21 -0
  150. package/dist/kernel/evidence-capture.d.ts +69 -0
  151. package/dist/kernel/evidence-capture.js +138 -0
  152. package/dist/kernel/fs.d.ts +20 -0
  153. package/dist/kernel/fs.js +128 -0
  154. package/dist/kernel/generic-rw.d.ts +33 -0
  155. package/dist/kernel/generic-rw.js +235 -0
  156. package/dist/kernel/hooks.d.ts +172 -0
  157. package/dist/kernel/hooks.js +256 -0
  158. package/dist/kernel/index.d.ts +624 -0
  159. package/dist/kernel/index.js +1638 -0
  160. package/dist/kernel/instance.d.ts +211 -0
  161. package/dist/kernel/instance.js +487 -0
  162. package/dist/kernel/kind-registry.d.ts +183 -0
  163. package/dist/kernel/kind-registry.js +710 -0
  164. package/dist/kernel/kind_base.d.ts +106 -0
  165. package/dist/kernel/kind_base.js +244 -0
  166. package/dist/kernel/layer-resolver.d.ts +48 -0
  167. package/dist/kernel/layer-resolver.js +284 -0
  168. package/dist/kernel/lock-manager.d.ts +21 -0
  169. package/dist/kernel/lock-manager.js +43 -0
  170. package/dist/kernel/lock.d.ts +38 -0
  171. package/dist/kernel/lock.js +115 -0
  172. package/dist/kernel/meta.d.ts +135 -0
  173. package/dist/kernel/meta.js +817 -0
  174. package/dist/kernel/models.d.ts +3089 -0
  175. package/dist/kernel/models.js +764 -0
  176. package/dist/kernel/navigator.d.ts +36 -0
  177. package/dist/kernel/navigator.js +132 -0
  178. package/dist/kernel/port-surface.d.ts +33 -0
  179. package/dist/kernel/port-surface.js +180 -0
  180. package/dist/kernel/preview.d.ts +60 -0
  181. package/dist/kernel/preview.js +54 -0
  182. package/dist/kernel/prompt-budget.d.ts +39 -0
  183. package/dist/kernel/prompt-budget.js +43 -0
  184. package/dist/kernel/prompt-builder.d.ts +25 -0
  185. package/dist/kernel/prompt-builder.js +237 -0
  186. package/dist/kernel/protocols.d.ts +751 -0
  187. package/dist/kernel/protocols.js +493 -0
  188. package/dist/kernel/reports.d.ts +26 -0
  189. package/dist/kernel/reports.js +215 -0
  190. package/dist/kernel/resolver.d.ts +146 -0
  191. package/dist/kernel/resolver.js +232 -0
  192. package/dist/kernel/resource.d.ts +57 -0
  193. package/dist/kernel/resource.js +97 -0
  194. package/dist/kernel/runtime.d.ts +16 -0
  195. package/dist/kernel/runtime.js +18 -0
  196. package/dist/kernel/safety-scanner.d.ts +38 -0
  197. package/dist/kernel/safety-scanner.js +228 -0
  198. package/dist/kernel/serialize-to-files.d.ts +29 -0
  199. package/dist/kernel/serialize-to-files.js +23 -0
  200. package/dist/kernel/spec-access.d.ts +23 -0
  201. package/dist/kernel/spec-access.js +40 -0
  202. package/dist/kernel/studio_ui.d.ts +88 -0
  203. package/dist/kernel/studio_ui.js +135 -0
  204. package/dist/kernel/templates.d.ts +77 -0
  205. package/dist/kernel/templates.js +116 -0
  206. package/dist/kernel/tool-registry.d.ts +52 -0
  207. package/dist/kernel/tool-registry.js +89 -0
  208. package/dist/kernel/write-pipeline.d.ts +65 -0
  209. package/dist/kernel/write-pipeline.js +271 -0
  210. package/dist/kernel/writer-helpers.d.ts +24 -0
  211. package/dist/kernel/writer-helpers.js +42 -0
  212. package/dist/memory/decay.d.ts +31 -0
  213. package/dist/memory/decay.js +97 -0
  214. package/dist/memory/ecphory.d.ts +25 -0
  215. package/dist/memory/ecphory.js +178 -0
  216. package/dist/memory/encodingContext.d.ts +21 -0
  217. package/dist/memory/encodingContext.js +62 -0
  218. package/dist/memory/index.d.ts +23 -0
  219. package/dist/memory/index.js +23 -0
  220. package/dist/memory/memoryType.d.ts +7 -0
  221. package/dist/memory/memoryType.js +24 -0
  222. package/dist/memory/policy.d.ts +35 -0
  223. package/dist/memory/policy.js +35 -0
  224. package/dist/memory/retrieval.d.ts +21 -0
  225. package/dist/memory/retrieval.js +145 -0
  226. package/dist/testing/index.d.ts +8 -0
  227. package/dist/testing/index.js +8 -0
  228. package/dist/testing/recordSearchConformance.d.ts +43 -0
  229. package/dist/testing/recordSearchConformance.js +147 -0
  230. package/dist/viz/ascii.d.ts +7 -0
  231. package/dist/viz/ascii.js +60 -0
  232. package/dist/viz/health.d.ts +8 -0
  233. package/dist/viz/health.js +161 -0
  234. package/dist/viz/index.d.ts +10 -0
  235. package/dist/viz/index.js +10 -0
  236. package/dist/viz/matrix.d.ts +8 -0
  237. package/dist/viz/matrix.js +84 -0
  238. package/dist/viz/mermaid.d.ts +38 -0
  239. package/dist/viz/mermaid.js +706 -0
  240. package/package.json +82 -0
@@ -0,0 +1,109 @@
1
+ # PromptTemplate — versioned, overlayable user-prompt template
2
+ # (record plane, GLOBAL scope; bundle storage, body = PROMPT.md after frontmatter).
3
+ #
4
+ # expr batch B (plan 2026-06-11-descriptor-expressiveness, Chunk 4): the twin
5
+ # PromptTemplateKind classes (Py+TS) were DELETED — this descriptor is the
6
+ # single source. It exercises FOUR descriptor fields the lote-3 skip flagged:
7
+ # - D2 summary: variables_count {count_of: variables}, body_length
8
+ # {count_of: body} (count_of over a STRING), default_locale plain.
9
+ # - D3 describe: {path: description}.
10
+ # - D4 ui_schema: pass-through Studio widget hints (the class's ui_schema).
11
+ # - D7 description_fallback_field: body.
12
+ # The dead to_card (zero consumers) was NOT migrated.
13
+ #
14
+ # FIDELITY DELTA (port-canonical, pinned in the equivalence test): the class's
15
+ # describe() returned `s.get("description") or None` (empty string → None);
16
+ # the {path: description} projection returns "" verbatim. An empty-string
17
+ # description is implausible (descriptions are human text).
18
+ # PARITY-CRITICAL package data: byte-identical mirror at
19
+ # packages/sdk-{py,ts}/{dna/extensions,src/extensions}/sdlc/kinds/
20
+ # prompt-template.kind.yaml (test_descriptor_hash_parity enforces). Equivalence
21
+ # frozen in tests/test_expr_batch_b_equivalence.py.
22
+ apiVersion: github.com/ruinosus/dna/core/v1
23
+ kind: KindDefinition
24
+ metadata:
25
+ name: prompt-template
26
+ spec:
27
+ target_api_version: github.com/ruinosus/dna/sdlc/v1
28
+ target_kind: PromptTemplate
29
+ alias: sdlc-prompt-template
30
+ origin: github.com/ruinosus/dna/sdlc
31
+ plane: record
32
+ prompt_target: false
33
+ flatten_in_context: false
34
+ prompt_target_priority: 0
35
+ is_runtime_artifact: false
36
+ storage:
37
+ type: bundle
38
+ container: prompts
39
+ marker: PROMPT.md
40
+ body_field: body
41
+ schema:
42
+ type: object
43
+ required:
44
+ - body
45
+ properties:
46
+ body:
47
+ type: string
48
+ description: Template text with {var} placeholders.
49
+ variables:
50
+ type: array
51
+ items:
52
+ type: string
53
+ default: []
54
+ description: Names of placeholders body expects.
55
+ description:
56
+ type: string
57
+ default_locale:
58
+ type: string
59
+ tags:
60
+ type: array
61
+ items:
62
+ type: string
63
+ default: []
64
+ # Authored projection — 1:1 with the extinct class summary(). body_length is
65
+ # count_of over a STRING (len(body or "")); variables_count over a list.
66
+ summary:
67
+ variables_count:
68
+ count_of: variables
69
+ body_length:
70
+ count_of: body
71
+ default_locale:
72
+ path: default_locale
73
+ # D3: the class's describe(doc) returned s.get("description") or None — the
74
+ # {path: …} projection returns the field as-is (or None). See the DELTA note.
75
+ describe:
76
+ path: description
77
+ # D7: the class declared description_fallback_field = "body".
78
+ description_fallback_field: body
79
+ # D4: Studio form widget hints — pass-through (the kernel does not interpret;
80
+ # the Studio form renderer owns the vocabulary). Verbatim from the class.
81
+ ui_schema:
82
+ body:
83
+ widget: markdown
84
+ label: Template body
85
+ help: Template with {placeholders}. Variables listed in frontmatter must match.
86
+ height: 320
87
+ order: 10
88
+ variables:
89
+ widget: list
90
+ label: Variables
91
+ help: Names of placeholders the body expects (e.g. scope, events_encoded).
92
+ order: 20
93
+ default_locale:
94
+ widget: text
95
+ label: Default locale
96
+ help: Optional. e.g. 'pt-br'. Caller may override.
97
+ order: 30
98
+ graph_style:
99
+ fill: '#0EA5E9'
100
+ stroke: '#0284C7'
101
+ text_color: '#fff'
102
+ ascii_icon: 📝
103
+ display_label: Prompt Templates
104
+ docs: A PromptTemplate is a versioned, overlayable user-prompt template owned by
105
+ the kernel — the declarative answer to 'where does the user prompt live?'. Callers
106
+ (typically Python helpers or HTTP endpoints) fetch the template by name and format()
107
+ it with per-call variables. Tenants can override the template body without touching
108
+ code. Templates can ship versioned with their consuming Kind (Narrative, StatusReport,
109
+ etc.) so prompt-engineering changes are reviewable diffs, not commits to call sites.
@@ -0,0 +1,186 @@
1
+ # Retrospective — curated period summary: sprint / PI / release / incident
2
+ # (record plane). Atlassian Team Playbook "4 Ls": what_went_well /
3
+ # what_didnt / longed_for / learned + action_items. Distinct from ADR (one
4
+ # decision) and Postmortem (one incident factual).
5
+ #
6
+ # F3 lote-1 (spec 2026-06-10-kinds-descriptor-f3): synthesized from this
7
+ # descriptor; the twin RetrospectiveKind classes (Py+TS) were deleted.
8
+ # PARITY-CRITICAL package data — byte-identical mirror under
9
+ # packages/sdk-{py,ts}; tests/test_descriptor_hash_parity.py enforces.
10
+ # O descriptor cura um drift Py↔TS: a classe TS tinha um summary() que o Py
11
+ # de produção nunca serviu (list endpoints = kinds-api/Py) e um schema
12
+ # magro sem descriptions — canônico é a superfície Py (sem summary).
13
+ apiVersion: github.com/ruinosus/dna/core/v1
14
+ kind: KindDefinition
15
+ metadata:
16
+ name: retrospective
17
+ spec:
18
+ target_api_version: github.com/ruinosus/dna/sdlc/v1
19
+ target_kind: Retrospective
20
+ alias: sdlc-retrospective
21
+ origin: github.com/ruinosus/dna/sdlc
22
+ tenant_scope: global
23
+ plane: record
24
+ prompt_target: false
25
+ flatten_in_context: false
26
+ prompt_target_priority: 0
27
+ storage:
28
+ type: bundle
29
+ container: retrospectives
30
+ marker: RETROSPECTIVE.md
31
+ body_field: body
32
+ dep_filters:
33
+ covers_features: sdlc-feature
34
+ covers_epics: sdlc-epic
35
+ covers_stories: sdlc-story
36
+ covers_session: sdlc-agent-session
37
+ schema:
38
+ type: object
39
+ required:
40
+ - title
41
+ - period_start
42
+ - period_end
43
+ properties:
44
+ title:
45
+ type: string
46
+ description: Headline for this retrospective.
47
+ period_start:
48
+ type: string
49
+ format: date-time
50
+ description: Start of period covered (ISO-8601).
51
+ period_end:
52
+ type: string
53
+ format: date-time
54
+ description: End of period covered.
55
+ intent:
56
+ type: string
57
+ enum:
58
+ - daily
59
+ - weekly
60
+ - sprint
61
+ - release
62
+ - incident
63
+ - freeform
64
+ description: What kind of retro this is. Drives Studio grouping — daily
65
+ stack on timeline, releases pin as marquee, incidents surface in alert
66
+ filter.
67
+ summary:
68
+ type: string
69
+ description: Optional one-line tl;dr (shown above body in Studio card).
70
+ what_went_well:
71
+ type: array
72
+ items:
73
+ type: string
74
+ description: 'Loved / Liked — things that worked in this period. Atlassian
75
+ 4 Ls bucket #1.'
76
+ what_didnt:
77
+ type: array
78
+ items:
79
+ type: string
80
+ description: 'Loathed / Lacked — things that didn''t work or caused friction.
81
+ Atlassian 4 Ls bucket #2.'
82
+ longed_for:
83
+ type: array
84
+ items:
85
+ type: string
86
+ description: 'Longed for — capabilities/conditions wished for but absent.
87
+ Atlassian 4 Ls bucket #3.'
88
+ learned:
89
+ type: array
90
+ items:
91
+ type: string
92
+ description: 'Learned — insights surfaced during the period. Atlassian 4
93
+ Ls bucket #4. Feeds future ADRs.'
94
+ action_items:
95
+ type: array
96
+ items:
97
+ type: object
98
+ required:
99
+ - title
100
+ properties:
101
+ title:
102
+ type: string
103
+ owner:
104
+ type: string
105
+ due:
106
+ type: string
107
+ format: date
108
+ story_ref:
109
+ type: string
110
+ description: Optional Story slug if turned into work.
111
+ description: Concrete next-steps surfaced by the retro.
112
+ open_items:
113
+ type: array
114
+ items:
115
+ type: object
116
+ required:
117
+ - title
118
+ properties:
119
+ title:
120
+ type: string
121
+ owner:
122
+ type: string
123
+ blocker:
124
+ type: string
125
+ description: Work that started but didn't close — carry-over to next period.
126
+ covers_features:
127
+ type: array
128
+ items:
129
+ type: string
130
+ description: Feature names this retro discusses.
131
+ covers_epics:
132
+ type: array
133
+ items:
134
+ type: string
135
+ description: Epic names this retro discusses.
136
+ covers_stories:
137
+ type: array
138
+ items:
139
+ type: string
140
+ description: Story names this retro discusses.
141
+ covers_session:
142
+ type: string
143
+ description: AgentSession name (Karpathy pattern).
144
+ actor:
145
+ type: string
146
+ description: Who wrote this retro (Actor name, 'claude-code', 'human', ...).
147
+ auto_generated:
148
+ type: boolean
149
+ description: true = LLM-generated draft; false = human-curated.
150
+ narrative_origin:
151
+ type: string
152
+ description: When extracted from a Narrative during Phase 2.2 migration,
153
+ this points to the source Narrative slug for provenance.
154
+ tags:
155
+ type: array
156
+ items:
157
+ type: string
158
+ description: Free-form tags.
159
+ body:
160
+ type: string
161
+ description: Optional full markdown body (RETROSPECTIVE.md). Falls back
162
+ from structured fields when present.
163
+ created_at:
164
+ type: string
165
+ format: date-time
166
+ updated_at:
167
+ type: string
168
+ format: date-time
169
+ # Curated list/tree projection (campos do summary da classe TS extinta).
170
+ # DELTA INTENCIONAL: a classe Py ecoava o spec inteiro (KindBase default);
171
+ # list endpoints não usam summary() — produção inalterada.
172
+ summary:
173
+ title: ''
174
+ intent: ''
175
+ period_end: ''
176
+ graph_style:
177
+ fill: '#F59E0B'
178
+ stroke: '#D97706'
179
+ text_color: '#fff'
180
+ ascii_icon: 🔄
181
+ display_label: Retrospectives
182
+ docs: A Retrospective captures lessons + action items from a period of work. Schema
183
+ follows Atlassian 4 Ls (Loved/Loathed/Longed for/Learned) — what_went_well,
184
+ what_didnt, action_items. Adopt for sprint retros, release retros, incident
185
+ retros. For one architectural decision, use ADR. For one incident factual analysis,
186
+ use Postmortem (Phase 3 — TBD).
@@ -0,0 +1,178 @@
1
+ # RiskRegister — one risk entry per doc, PMBOK 7 + ISO 31000:2018 (record
2
+ # plane). The collection of RiskRegister docs in a scope IS the project's
3
+ # risk register; Studio aggregates them into a likelihood × impact heatmap.
4
+ #
5
+ # F3 lote-2 (spec 2026-06-10-kinds-descriptor-f3): synthesized from this
6
+ # descriptor; the hand-written class twins were deleted. PARITY-CRITICAL
7
+ # package data — byte-identical mirror under packages/sdk-{py,ts};
8
+ # tests/test_descriptor_hash_parity.py enforces. Equivalence vs the extinct
9
+ # class frozen in tests/test_lote2_descriptor_equivalence.py (golden:
10
+ # tests/goldens/lote2/RiskRegister.golden.json). Deltas intencionais (semântica
11
+ # canônica = port): summary curado substitui o eco whole-spec do KindBase
12
+ # default (list endpoints não usam kp.summary()); parse valida contra o
13
+ # schema (classe era pass-through); to_card morto não migrado.
14
+ apiVersion: github.com/ruinosus/dna/core/v1
15
+ kind: KindDefinition
16
+ metadata:
17
+ name: risk-register
18
+ spec:
19
+ target_api_version: github.com/ruinosus/dna/sdlc/v1
20
+ target_kind: RiskRegister
21
+ alias: sdlc-risk-register
22
+ origin: github.com/ruinosus/dna/sdlc
23
+ tenant_scope: global
24
+ plane: record
25
+ prompt_target: false
26
+ flatten_in_context: false
27
+ prompt_target_priority: 0
28
+ storage:
29
+ type: bundle
30
+ container: risks
31
+ marker: RISK.md
32
+ body_field: body
33
+ dep_filters:
34
+ owner: helix-actor
35
+ related_features: sdlc-feature
36
+ related_epics: sdlc-epic
37
+ schema:
38
+ type: object
39
+ required:
40
+ - description
41
+ - category
42
+ - likelihood
43
+ - impact
44
+ - owner
45
+ - status
46
+ properties:
47
+ title:
48
+ type: string
49
+ description: Short risk name (used as doc name typically).
50
+ description:
51
+ type: string
52
+ description: 'Risk in cause→event→consequence format. ISO 31000 convention:
53
+ ''If <cause>, then <event> may occur, resulting in <consequence>''.'
54
+ category:
55
+ type: string
56
+ enum:
57
+ - strategic
58
+ - operational
59
+ - financial
60
+ - compliance
61
+ - reputational
62
+ - cyber
63
+ - ESG
64
+ description: PMBOK 7 categorization.
65
+ likelihood:
66
+ type: integer
67
+ minimum: 1
68
+ maximum: 5
69
+ description: 1=rare, 5=almost certain.
70
+ impact:
71
+ type: integer
72
+ minimum: 1
73
+ maximum: 5
74
+ description: 1=negligible, 5=catastrophic.
75
+ inherent_score:
76
+ type: integer
77
+ minimum: 1
78
+ maximum: 25
79
+ description: likelihood × impact (auto-derivable).
80
+ owner:
81
+ type: string
82
+ description: Actor name accountable for monitoring/mitigation.
83
+ response:
84
+ type: string
85
+ enum:
86
+ - avoid
87
+ - transfer
88
+ - mitigate
89
+ - accept
90
+ description: 'Strategy: avoid|transfer|mitigate|accept.'
91
+ mitigation_actions:
92
+ type: array
93
+ items:
94
+ type: object
95
+ required:
96
+ - action
97
+ properties:
98
+ action:
99
+ type: string
100
+ owner:
101
+ type: string
102
+ due:
103
+ type: string
104
+ format: date
105
+ story_ref:
106
+ type: string
107
+ status:
108
+ type: string
109
+ enum:
110
+ - todo
111
+ - in-progress
112
+ - done
113
+ residual_likelihood:
114
+ type: integer
115
+ minimum: 1
116
+ maximum: 5
117
+ description: Likelihood after mitigation.
118
+ residual_impact:
119
+ type: integer
120
+ minimum: 1
121
+ maximum: 5
122
+ residual_score:
123
+ type: integer
124
+ minimum: 1
125
+ maximum: 25
126
+ status:
127
+ type: string
128
+ enum:
129
+ - identified
130
+ - assessed
131
+ - mitigated
132
+ - realized
133
+ - closed
134
+ description: 'Lifecycle: identified → assessed → mitigated → (realized = risk
135
+ happened) → closed.'
136
+ last_reviewed:
137
+ type: string
138
+ format: date
139
+ next_review_due:
140
+ type: string
141
+ format: date
142
+ related_features:
143
+ type: array
144
+ items:
145
+ type: string
146
+ related_epics:
147
+ type: array
148
+ items:
149
+ type: string
150
+ tags:
151
+ type: array
152
+ items:
153
+ type: string
154
+ body:
155
+ type: string
156
+ created_at:
157
+ type: string
158
+ format: date-time
159
+ updated_at:
160
+ type: string
161
+ format: date-time
162
+ summary:
163
+ title: ''
164
+ category: ''
165
+ likelihood: null
166
+ impact: null
167
+ owner: ''
168
+ status: ''
169
+ graph_style:
170
+ fill: '#EAB308'
171
+ stroke: '#A16207'
172
+ text_color: '#fff'
173
+ ascii_icon: ⚠️
174
+ display_label: Risks
175
+ docs: 'One risk entry per RiskRegister doc. PMBOK 7 + ISO 31000:2018 compliant schema:
176
+ cause→event→consequence description, category, likelihood × impact scoring, mitigation
177
+ actions, residual score, owner, status lifecycle. Studio aggregates all RiskRegister
178
+ docs into a heatmap.'
@@ -0,0 +1,127 @@
1
+ # SavedView — filter + groupBy + sort + layout persisted as a first-class
2
+ # named view (record plane; Linear/Notion/Plane pattern). Loaded by the
3
+ # Studio ViewToolbar "Load view" dropdown. tenant_scope: tenanted — views
4
+ # are per-user/tenant personalization, unlike the global SDLC ledger.
5
+ #
6
+ # F3 lote-2 (spec 2026-06-10-kinds-descriptor-f3): synthesized from this
7
+ # descriptor; the hand-written class twins were deleted. PARITY-CRITICAL
8
+ # package data — byte-identical mirror under packages/sdk-{py,ts};
9
+ # tests/test_descriptor_hash_parity.py enforces. Equivalence vs the extinct
10
+ # class frozen in tests/test_lote2_descriptor_equivalence.py (golden:
11
+ # tests/goldens/lote2/SavedView.golden.json). Deltas intencionais (semântica
12
+ # canônica = port): summary curado substitui o eco whole-spec do KindBase
13
+ # default (list endpoints não usam kp.summary()); parse valida contra o
14
+ # schema (classe era pass-through); to_card morto não migrado.
15
+ apiVersion: github.com/ruinosus/dna/core/v1
16
+ kind: KindDefinition
17
+ metadata:
18
+ name: saved-view
19
+ spec:
20
+ target_api_version: github.com/ruinosus/dna/sdlc/v1
21
+ target_kind: SavedView
22
+ alias: sdlc-saved-view
23
+ origin: github.com/ruinosus/dna/sdlc
24
+ tenant_scope: tenanted
25
+ plane: record
26
+ prompt_target: false
27
+ flatten_in_context: false
28
+ prompt_target_priority: 0
29
+ storage:
30
+ type: bundle
31
+ container: saved-views
32
+ marker: SAVED_VIEW.md
33
+ body_field: body
34
+ dep_filters:
35
+ owner: helix-actor
36
+ schema:
37
+ type: object
38
+ required:
39
+ - title
40
+ - target_kind
41
+ - layout
42
+ properties:
43
+ title:
44
+ type: string
45
+ description: Human label (e.g. 'My open Stories', 'This sprint blocked').
46
+ description:
47
+ type: string
48
+ target_kind:
49
+ type: string
50
+ description: Kind name this view targets (Story, Bug, Spike, ...).
51
+ layout:
52
+ type: string
53
+ enum:
54
+ - board
55
+ - list
56
+ - tree
57
+ - table
58
+ - timeline
59
+ - calendar
60
+ - gallery
61
+ description: Visual layout pra render (board=group-by-status, list=flat, ...).
62
+ filters:
63
+ type: object
64
+ description: 'Filter spec — map property → value. E.g. {feature: ''f-X'',
65
+ owner: ''alice'', created_window: ''7d''}.'
66
+ additionalProperties: true
67
+ group_by:
68
+ type: string
69
+ description: Property to group by (status|feature|owner|priority|sprint|...).
70
+ sort_by:
71
+ type: string
72
+ description: Property to sort by.
73
+ sort_direction:
74
+ type: string
75
+ enum:
76
+ - asc
77
+ - desc
78
+ default: asc
79
+ visible_columns:
80
+ type: array
81
+ items:
82
+ type: string
83
+ description: Subset of properties shown (table layout). Empty = show all default
84
+ columns.
85
+ owner:
86
+ type: string
87
+ description: Actor name (creator). Determines edit permission.
88
+ visibility:
89
+ type: string
90
+ enum:
91
+ - private
92
+ - team
93
+ - shared
94
+ default: private
95
+ is_default:
96
+ type: boolean
97
+ default: false
98
+ description: Whether this view loads by default when opening the target Kind
99
+ list.
100
+ tags:
101
+ type: array
102
+ items:
103
+ type: string
104
+ body:
105
+ type: string
106
+ created_at:
107
+ type: string
108
+ format: date-time
109
+ updated_at:
110
+ type: string
111
+ format: date-time
112
+ summary:
113
+ title: ''
114
+ target_kind: ''
115
+ layout: ''
116
+ visibility: private
117
+ owner: ''
118
+ is_default: false
119
+ graph_style:
120
+ fill: '#06B6D4'
121
+ stroke: '#0E7490'
122
+ text_color: '#fff'
123
+ ascii_icon: 🔖
124
+ display_label: Saved Views
125
+ docs: Named view persisting filter + groupBy + sort + layout for a given Kind in
126
+ a scope. Linear/Notion/Plane pattern — views as first-class entities (não só URL
127
+ state). Load via ViewToolbar dropdown.