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.
- package/LICENSE +21 -0
- package/README.md +58 -0
- package/dist/adapters/embedding/onnx.d.ts +32 -0
- package/dist/adapters/embedding/onnx.js +51 -0
- package/dist/adapters/filesystem/cache.d.ts +16 -0
- package/dist/adapters/filesystem/cache.js +113 -0
- package/dist/adapters/filesystem/index.d.ts +2 -0
- package/dist/adapters/filesystem/index.js +2 -0
- package/dist/adapters/filesystem/source.d.ts +82 -0
- package/dist/adapters/filesystem/source.js +357 -0
- package/dist/adapters/postgres/index.d.ts +2 -0
- package/dist/adapters/postgres/index.js +2 -0
- package/dist/adapters/postgres/migrations.d.ts +14 -0
- package/dist/adapters/postgres/migrations.js +88 -0
- package/dist/adapters/postgres/source.d.ts +172 -0
- package/dist/adapters/postgres/source.js +569 -0
- package/dist/adapters/resolvers/github.d.ts +12 -0
- package/dist/adapters/resolvers/github.js +47 -0
- package/dist/adapters/resolvers/http.d.ts +22 -0
- package/dist/adapters/resolvers/http.js +145 -0
- package/dist/adapters/resolvers/index.d.ts +3 -0
- package/dist/adapters/resolvers/index.js +3 -0
- package/dist/adapters/resolvers/local.d.ts +24 -0
- package/dist/adapters/resolvers/local.js +132 -0
- package/dist/adapters/search/driver.d.ts +45 -0
- package/dist/adapters/search/driver.js +138 -0
- package/dist/adapters/search/migrations.d.ts +26 -0
- package/dist/adapters/search/migrations.js +58 -0
- package/dist/adapters/search/rrf.d.ts +23 -0
- package/dist/adapters/search/rrf.js +42 -0
- package/dist/adapters/search/sqlite-vec.d.ts +66 -0
- package/dist/adapters/search/sqlite-vec.js +294 -0
- package/dist/bootstrap.d.ts +45 -0
- package/dist/bootstrap.js +134 -0
- package/dist/extensions/agentskills/DOCS.md +18 -0
- package/dist/extensions/agentskills.d.ts +28 -0
- package/dist/extensions/agentskills.js +252 -0
- package/dist/extensions/agentsmd/DOCS.md +18 -0
- package/dist/extensions/agentsmd.d.ts +22 -0
- package/dist/extensions/agentsmd.js +170 -0
- package/dist/extensions/audit/kinds/audit-log.kind.yaml +148 -0
- package/dist/extensions/audit.d.ts +25 -0
- package/dist/extensions/audit.js +62 -0
- package/dist/extensions/automation/kinds/automation.kind.yaml +296 -0
- package/dist/extensions/automation/query.d.ts +49 -0
- package/dist/extensions/automation/query.js +77 -0
- package/dist/extensions/automation/write-guards.d.ts +59 -0
- package/dist/extensions/automation/write-guards.js +153 -0
- package/dist/extensions/automation.d.ts +41 -0
- package/dist/extensions/automation.js +54 -0
- package/dist/extensions/collab.d.ts +16 -0
- package/dist/extensions/collab.js +79 -0
- package/dist/extensions/doc/kinds/doc.kind.yaml +118 -0
- package/dist/extensions/doc.d.ts +25 -0
- package/dist/extensions/doc.js +10 -0
- package/dist/extensions/eval/kinds/eval-baseline.kind.yaml +65 -0
- package/dist/extensions/eval/kinds/eval-case.kind.yaml +140 -0
- package/dist/extensions/eval/kinds/eval-run.kind.yaml +134 -0
- package/dist/extensions/eval/kinds/eval-suite.kind.yaml +87 -0
- package/dist/extensions/eval.d.ts +24 -0
- package/dist/extensions/eval.js +31 -0
- package/dist/extensions/evidence/kinds/evidence.kind.yaml +92 -0
- package/dist/extensions/evidence.d.ts +17 -0
- package/dist/extensions/evidence.js +94 -0
- package/dist/extensions/federation.d.ts +22 -0
- package/dist/extensions/federation.js +173 -0
- package/dist/extensions/guardrails/DOCS.md +20 -0
- package/dist/extensions/guardrails.d.ts +31 -0
- package/dist/extensions/guardrails.js +228 -0
- package/dist/extensions/helix/DOCS-Actor.md +20 -0
- package/dist/extensions/helix/DOCS-Agent.md +20 -0
- package/dist/extensions/helix/DOCS-UseCase.md +20 -0
- package/dist/extensions/helix/layers.d.ts +12 -0
- package/dist/extensions/helix/layers.js +18 -0
- package/dist/extensions/helix/write-guards.d.ts +70 -0
- package/dist/extensions/helix/write-guards.js +172 -0
- package/dist/extensions/helix.d.ts +29 -0
- package/dist/extensions/helix.js +963 -0
- package/dist/extensions/helix_extras.d.ts +124 -0
- package/dist/extensions/helix_extras.js +328 -0
- package/dist/extensions/hooks.d.ts +31 -0
- package/dist/extensions/hooks.js +247 -0
- package/dist/extensions/kinddef/DOCS.md +24 -0
- package/dist/extensions/kinddef.d.ts +40 -0
- package/dist/extensions/kinddef.js +171 -0
- package/dist/extensions/lesson.d.ts +6 -0
- package/dist/extensions/lesson.js +194 -0
- package/dist/extensions/modelreg/kinds/model-profile.kind.yaml +155 -0
- package/dist/extensions/modelreg.d.ts +30 -0
- package/dist/extensions/modelreg.js +38 -0
- package/dist/extensions/recognizer.d.ts +34 -0
- package/dist/extensions/recognizer.js +272 -0
- package/dist/extensions/research.d.ts +32 -0
- package/dist/extensions/research.js +292 -0
- package/dist/extensions/safety.d.ts +33 -0
- package/dist/extensions/safety.js +230 -0
- package/dist/extensions/sdlc/kinds/adr.kind.yaml +136 -0
- package/dist/extensions/sdlc/kinds/archive-proposal.kind.yaml +107 -0
- package/dist/extensions/sdlc/kinds/changelog.kind.yaml +108 -0
- package/dist/extensions/sdlc/kinds/cognitive-policy.kind.yaml +470 -0
- package/dist/extensions/sdlc/kinds/forecast.kind.yaml +125 -0
- package/dist/extensions/sdlc/kinds/insight.kind.yaml +87 -0
- package/dist/extensions/sdlc/kinds/kaizen.kind.yaml +106 -0
- package/dist/extensions/sdlc/kinds/lesson-learned.kind.yaml +270 -0
- package/dist/extensions/sdlc/kinds/narrative.kind.yaml +189 -0
- package/dist/extensions/sdlc/kinds/pattern-insight.kind.yaml +204 -0
- package/dist/extensions/sdlc/kinds/postmortem.kind.yaml +168 -0
- package/dist/extensions/sdlc/kinds/pre-mortem.kind.yaml +145 -0
- package/dist/extensions/sdlc/kinds/prompt-template.kind.yaml +109 -0
- package/dist/extensions/sdlc/kinds/retrospective.kind.yaml +186 -0
- package/dist/extensions/sdlc/kinds/risk-register.kind.yaml +178 -0
- package/dist/extensions/sdlc/kinds/saved-view.kind.yaml +127 -0
- package/dist/extensions/sdlc/kinds/status-report.kind.yaml +129 -0
- package/dist/extensions/sdlc/kinds/synthesis-run.kind.yaml +279 -0
- package/dist/extensions/sdlc/kinds/synthesizer-state.kind.yaml +196 -0
- package/dist/extensions/sdlc/kinds/workflow-event.kind.yaml +195 -0
- package/dist/extensions/sdlc.d.ts +32 -0
- package/dist/extensions/sdlc.js +1318 -0
- package/dist/extensions/soulspec/DOCS.md +19 -0
- package/dist/extensions/soulspec.d.ts +22 -0
- package/dist/extensions/soulspec.js +287 -0
- package/dist/extensions/tenant.d.ts +6 -0
- package/dist/extensions/tenant.js +291 -0
- package/dist/extensions/testkit.d.ts +24 -0
- package/dist/extensions/testkit.js +211 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.js +102 -0
- package/dist/kernel/_text.d.ts +28 -0
- package/dist/kernel/_text.js +42 -0
- package/dist/kernel/bundle-handle.d.ts +83 -0
- package/dist/kernel/bundle-handle.js +184 -0
- package/dist/kernel/capabilities.d.ts +157 -0
- package/dist/kernel/capabilities.js +109 -0
- package/dist/kernel/collaborator-ports.d.ts +91 -0
- package/dist/kernel/collaborator-ports.js +1 -0
- package/dist/kernel/composition-resolver.d.ts +215 -0
- package/dist/kernel/composition-resolver.js +558 -0
- package/dist/kernel/composition.d.ts +10 -0
- package/dist/kernel/composition.js +1 -0
- package/dist/kernel/descriptor-loader.d.ts +13 -0
- package/dist/kernel/descriptor-loader.js +48 -0
- package/dist/kernel/document.d.ts +43 -0
- package/dist/kernel/document.js +71 -0
- package/dist/kernel/embedding.d.ts +28 -0
- package/dist/kernel/embedding.js +78 -0
- package/dist/kernel/errors.d.ts +62 -0
- package/dist/kernel/errors.js +82 -0
- package/dist/kernel/events.d.ts +6 -0
- package/dist/kernel/events.js +21 -0
- package/dist/kernel/evidence-capture.d.ts +69 -0
- package/dist/kernel/evidence-capture.js +138 -0
- package/dist/kernel/fs.d.ts +20 -0
- package/dist/kernel/fs.js +128 -0
- package/dist/kernel/generic-rw.d.ts +33 -0
- package/dist/kernel/generic-rw.js +235 -0
- package/dist/kernel/hooks.d.ts +172 -0
- package/dist/kernel/hooks.js +256 -0
- package/dist/kernel/index.d.ts +624 -0
- package/dist/kernel/index.js +1638 -0
- package/dist/kernel/instance.d.ts +211 -0
- package/dist/kernel/instance.js +487 -0
- package/dist/kernel/kind-registry.d.ts +183 -0
- package/dist/kernel/kind-registry.js +710 -0
- package/dist/kernel/kind_base.d.ts +106 -0
- package/dist/kernel/kind_base.js +244 -0
- package/dist/kernel/layer-resolver.d.ts +48 -0
- package/dist/kernel/layer-resolver.js +284 -0
- package/dist/kernel/lock-manager.d.ts +21 -0
- package/dist/kernel/lock-manager.js +43 -0
- package/dist/kernel/lock.d.ts +38 -0
- package/dist/kernel/lock.js +115 -0
- package/dist/kernel/meta.d.ts +135 -0
- package/dist/kernel/meta.js +817 -0
- package/dist/kernel/models.d.ts +3089 -0
- package/dist/kernel/models.js +764 -0
- package/dist/kernel/navigator.d.ts +36 -0
- package/dist/kernel/navigator.js +132 -0
- package/dist/kernel/port-surface.d.ts +33 -0
- package/dist/kernel/port-surface.js +180 -0
- package/dist/kernel/preview.d.ts +60 -0
- package/dist/kernel/preview.js +54 -0
- package/dist/kernel/prompt-budget.d.ts +39 -0
- package/dist/kernel/prompt-budget.js +43 -0
- package/dist/kernel/prompt-builder.d.ts +25 -0
- package/dist/kernel/prompt-builder.js +237 -0
- package/dist/kernel/protocols.d.ts +751 -0
- package/dist/kernel/protocols.js +493 -0
- package/dist/kernel/reports.d.ts +26 -0
- package/dist/kernel/reports.js +215 -0
- package/dist/kernel/resolver.d.ts +146 -0
- package/dist/kernel/resolver.js +232 -0
- package/dist/kernel/resource.d.ts +57 -0
- package/dist/kernel/resource.js +97 -0
- package/dist/kernel/runtime.d.ts +16 -0
- package/dist/kernel/runtime.js +18 -0
- package/dist/kernel/safety-scanner.d.ts +38 -0
- package/dist/kernel/safety-scanner.js +228 -0
- package/dist/kernel/serialize-to-files.d.ts +29 -0
- package/dist/kernel/serialize-to-files.js +23 -0
- package/dist/kernel/spec-access.d.ts +23 -0
- package/dist/kernel/spec-access.js +40 -0
- package/dist/kernel/studio_ui.d.ts +88 -0
- package/dist/kernel/studio_ui.js +135 -0
- package/dist/kernel/templates.d.ts +77 -0
- package/dist/kernel/templates.js +116 -0
- package/dist/kernel/tool-registry.d.ts +52 -0
- package/dist/kernel/tool-registry.js +89 -0
- package/dist/kernel/write-pipeline.d.ts +65 -0
- package/dist/kernel/write-pipeline.js +271 -0
- package/dist/kernel/writer-helpers.d.ts +24 -0
- package/dist/kernel/writer-helpers.js +42 -0
- package/dist/memory/decay.d.ts +31 -0
- package/dist/memory/decay.js +97 -0
- package/dist/memory/ecphory.d.ts +25 -0
- package/dist/memory/ecphory.js +178 -0
- package/dist/memory/encodingContext.d.ts +21 -0
- package/dist/memory/encodingContext.js +62 -0
- package/dist/memory/index.d.ts +23 -0
- package/dist/memory/index.js +23 -0
- package/dist/memory/memoryType.d.ts +7 -0
- package/dist/memory/memoryType.js +24 -0
- package/dist/memory/policy.d.ts +35 -0
- package/dist/memory/policy.js +35 -0
- package/dist/memory/retrieval.d.ts +21 -0
- package/dist/memory/retrieval.js +145 -0
- package/dist/testing/index.d.ts +8 -0
- package/dist/testing/index.js +8 -0
- package/dist/testing/recordSearchConformance.d.ts +43 -0
- package/dist/testing/recordSearchConformance.js +147 -0
- package/dist/viz/ascii.d.ts +7 -0
- package/dist/viz/ascii.js +60 -0
- package/dist/viz/health.d.ts +8 -0
- package/dist/viz/health.js +161 -0
- package/dist/viz/index.d.ts +10 -0
- package/dist/viz/index.js +10 -0
- package/dist/viz/matrix.d.ts +8 -0
- package/dist/viz/matrix.js +84 -0
- package/dist/viz/mermaid.d.ts +38 -0
- package/dist/viz/mermaid.js +706 -0
- 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.
|