@bvdm/delano 0.1.7 → 0.2.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/.delano/README.md +7 -0
- package/.delano/viewer/README.md +19 -0
- package/.delano/viewer/public/app.js +818 -0
- package/.delano/viewer/public/explorer.svg +3 -0
- package/.delano/viewer/public/index.html +21 -0
- package/.delano/viewer/public/markdown.svg +6 -0
- package/.delano/viewer/public/styles.css +1042 -0
- package/.delano/viewer/public/vscode.svg +24 -0
- package/.delano/viewer/server.js +389 -0
- package/HANDBOOK.md +65 -45
- package/README.md +10 -2
- package/assets/install-manifest.json +112 -35
- package/assets/payload/.agents/README.md +31 -6
- package/assets/payload/.agents/adapters/claude/README.md +22 -3
- package/assets/payload/.agents/adapters/codex/README.md +22 -3
- package/assets/payload/.agents/adapters/opencode/README.md +22 -3
- package/assets/payload/.agents/adapters/pi/README.md +22 -3
- package/assets/payload/.agents/common/log-safety.js +55 -0
- package/assets/payload/.agents/eval-fixtures/skill-output/invalid/missing-evidence/output.json +6 -0
- package/assets/payload/.agents/eval-fixtures/skill-output/valid/summary/output.json +7 -0
- package/assets/payload/.agents/fixtures/github/status-snapshot.json +6 -0
- package/assets/payload/.agents/fixtures/linear/issue-snapshot.json +6 -0
- package/assets/payload/.agents/hooks/bash-worktree-fix.sh +2 -1
- package/assets/payload/.agents/hooks/post-tool-logger.js +2 -1
- package/assets/payload/.agents/hooks/user-prompt-logger.js +17 -1
- package/assets/payload/.agents/logs/delivery-metrics.md +22 -0
- package/assets/payload/.agents/logs/schema.md +20 -1
- package/assets/payload/.agents/rules/delivery-modes.md +17 -0
- package/assets/payload/.agents/schemas/README.md +22 -0
- package/assets/payload/.agents/schemas/artifact-scope.json +237 -0
- package/assets/payload/.agents/schemas/artifacts/context.schema.json +11 -0
- package/assets/payload/.agents/schemas/artifacts/decision_log.schema.json +12 -0
- package/assets/payload/.agents/schemas/artifacts/evidence.schema.json +17 -0
- package/assets/payload/.agents/schemas/artifacts/plan.schema.json +83 -0
- package/assets/payload/.agents/schemas/artifacts/spec.schema.json +101 -0
- package/assets/payload/.agents/schemas/artifacts/task.schema.json +121 -0
- package/assets/payload/.agents/schemas/artifacts/update.schema.json +12 -0
- package/assets/payload/.agents/schemas/artifacts/workstream.schema.json +66 -0
- package/assets/payload/.agents/schemas/evidence-map.json +53 -0
- package/assets/payload/.agents/schemas/learning/closeout-learning-proposal.schema.json +20 -0
- package/assets/payload/.agents/schemas/learning/delivery-metric-event.schema.json +21 -0
- package/assets/payload/.agents/schemas/leases/lease.schema.json +39 -0
- package/assets/payload/.agents/schemas/metrics/delivery-event.schema.json +29 -0
- package/assets/payload/.agents/schemas/metrics/delivery-events.schema.json +49 -0
- package/assets/payload/.agents/schemas/operating-modes.json +42 -0
- package/assets/payload/.agents/schemas/status-transitions.json +31 -0
- package/assets/payload/.agents/schemas/sync/drift-report.schema.json +25 -0
- package/assets/payload/.agents/schemas/sync/drift-taxonomy.json +38 -0
- package/assets/payload/.agents/schemas/sync/sync-map.schema.json +39 -0
- package/assets/payload/.agents/scripts/README.md +1 -0
- package/assets/payload/.agents/scripts/audit-context-files.mjs +54 -0
- package/assets/payload/.agents/scripts/audit-context-scoring.mjs +14 -0
- package/assets/payload/.agents/scripts/build-drift-report.mjs +133 -0
- package/assets/payload/.agents/scripts/check-artifact-schemas.mjs +116 -0
- package/assets/payload/.agents/scripts/check-closeout-learning-proposals.mjs +23 -0
- package/assets/payload/.agents/scripts/check-context-audit.mjs +61 -0
- package/assets/payload/.agents/scripts/check-delivery-metric-events.mjs +35 -0
- package/assets/payload/.agents/scripts/check-delivery-metrics.mjs +52 -0
- package/assets/payload/.agents/scripts/check-evidence-map.mjs +143 -0
- package/assets/payload/.agents/scripts/check-github-status-inspection.mjs +93 -0
- package/assets/payload/.agents/scripts/check-github-sync.mjs +159 -0
- package/assets/payload/.agents/scripts/check-handoff-summaries.mjs +57 -0
- package/assets/payload/.agents/scripts/check-lease-conflicts.mjs +24 -0
- package/assets/payload/.agents/scripts/check-lease-contracts.mjs +17 -0
- package/assets/payload/.agents/scripts/check-linear-issue-inspection.mjs +63 -0
- package/assets/payload/.agents/scripts/check-local-sync-map.mjs +151 -0
- package/assets/payload/.agents/scripts/check-log-safety.sh +62 -0
- package/assets/payload/.agents/scripts/check-operating-modes.mjs +99 -0
- package/assets/payload/.agents/scripts/check-path-standards.sh +1 -1
- package/assets/payload/.agents/scripts/check-skill-output-evals.mjs +13 -0
- package/assets/payload/.agents/scripts/check-status-transitions.mjs +169 -0
- package/assets/payload/.agents/scripts/check-strict-fixtures.mjs +140 -0
- package/assets/payload/.agents/scripts/check-sync-schemas.mjs +52 -0
- package/assets/payload/.agents/scripts/check-text-safety.mjs +158 -0
- package/assets/payload/.agents/scripts/check-worktree-health.mjs +100 -0
- package/assets/payload/.agents/scripts/fix-path-standards.sh +1 -1
- package/assets/payload/.agents/scripts/inspect-github-sync.mjs +108 -0
- package/assets/payload/.agents/scripts/lease-manager.mjs +88 -0
- package/assets/payload/.agents/scripts/log-event.js +3 -0
- package/assets/payload/.agents/scripts/plan-sync-repairs.mjs +66 -0
- package/assets/payload/.agents/scripts/pm/validate.sh +656 -2
- package/assets/payload/.agents/scripts/propose-closeout-learning.mjs +20 -0
- package/assets/payload/.agents/scripts/read-local-sync-map.mjs +135 -0
- package/assets/payload/.agents/scripts/select-next-task.mjs +22 -0
- package/assets/payload/.agents/scripts/summarize-project-metrics.mjs +15 -0
- package/assets/payload/.agents/skills/closeout-skill/SKILL.md +3 -0
- package/assets/payload/.agents/skills/closeout-skill/references/runbook.md +5 -2
- package/assets/payload/.agents/skills/closeout-skill/templates/closure-checklist.md +2 -0
- package/assets/payload/.agents/skills/closeout-skill/templates/learning-proposal.md +21 -0
- package/assets/payload/.agents/skills/closeout-skill/templates/learning-proposals.md +25 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/broken-dependencies/dependency.md +18 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/broken-dependencies/task.md +24 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/invalid-transition/task.md +20 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/missing-evidence/task.md +27 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/path-leak/task.md +27 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/stale-context/context.md +9 -0
- package/assets/payload/.agents/validation-fixtures/strict/manifest.json +11 -0
- package/assets/payload/.agents/validation-fixtures/strict/valid/minimal-project/task.md +27 -0
- package/assets/payload/.delano/viewer/README.md +19 -0
- package/assets/payload/.delano/viewer/public/app.js +818 -0
- package/assets/payload/.delano/viewer/public/explorer.svg +3 -0
- package/assets/payload/.delano/viewer/public/index.html +21 -0
- package/assets/payload/.delano/viewer/public/markdown.svg +6 -0
- package/assets/payload/.delano/viewer/public/styles.css +1042 -0
- package/assets/payload/.delano/viewer/public/vscode.svg +24 -0
- package/assets/payload/.delano/viewer/server.js +389 -0
- package/assets/payload/.project/templates/plan.md +1 -1
- package/assets/payload/.project/templates/spec.md +1 -1
- package/assets/payload/.project/templates/task.md +1 -0
- package/assets/payload/HANDBOOK.md +65 -45
- package/package.json +31 -2
- package/src/cli/commands/viewer.js +81 -0
- package/src/cli/index.js +8 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://delano.local/schemas/artifacts/plan.schema.json",
|
|
4
|
+
"title": "Delano project plan frontmatter",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": true,
|
|
7
|
+
"required": [
|
|
8
|
+
"name",
|
|
9
|
+
"status",
|
|
10
|
+
"lead",
|
|
11
|
+
"created",
|
|
12
|
+
"updated",
|
|
13
|
+
"linear_project_id",
|
|
14
|
+
"risk_level",
|
|
15
|
+
"spec_status_at_plan_time"
|
|
16
|
+
],
|
|
17
|
+
"properties": {
|
|
18
|
+
"name": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"minLength": 1
|
|
21
|
+
},
|
|
22
|
+
"status": {
|
|
23
|
+
"enum": [
|
|
24
|
+
"planned",
|
|
25
|
+
"active",
|
|
26
|
+
"done",
|
|
27
|
+
"deferred"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"lead": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"minLength": 1
|
|
33
|
+
},
|
|
34
|
+
"created": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"format": "date-time"
|
|
37
|
+
},
|
|
38
|
+
"updated": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"format": "date-time"
|
|
41
|
+
},
|
|
42
|
+
"linear_project_id": {
|
|
43
|
+
"type": "string"
|
|
44
|
+
},
|
|
45
|
+
"risk_level": {
|
|
46
|
+
"enum": [
|
|
47
|
+
"low",
|
|
48
|
+
"medium",
|
|
49
|
+
"high"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"spec_status_at_plan_time": {
|
|
53
|
+
"enum": [
|
|
54
|
+
"planned",
|
|
55
|
+
"active",
|
|
56
|
+
"complete",
|
|
57
|
+
"deferred"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"target_version": {
|
|
61
|
+
"type": "string"
|
|
62
|
+
},
|
|
63
|
+
"operating_mode": {
|
|
64
|
+
"enum": [
|
|
65
|
+
0,
|
|
66
|
+
1,
|
|
67
|
+
2,
|
|
68
|
+
3,
|
|
69
|
+
4,
|
|
70
|
+
"0",
|
|
71
|
+
"1",
|
|
72
|
+
"2",
|
|
73
|
+
"3",
|
|
74
|
+
"4",
|
|
75
|
+
"patch",
|
|
76
|
+
"scoped-change",
|
|
77
|
+
"feature",
|
|
78
|
+
"uncertain-feature",
|
|
79
|
+
"multi-stream"
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://delano.local/schemas/artifacts/spec.schema.json",
|
|
4
|
+
"title": "Delano project spec frontmatter",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": true,
|
|
7
|
+
"required": [
|
|
8
|
+
"name",
|
|
9
|
+
"slug",
|
|
10
|
+
"owner",
|
|
11
|
+
"status",
|
|
12
|
+
"created",
|
|
13
|
+
"updated",
|
|
14
|
+
"outcome",
|
|
15
|
+
"uncertainty",
|
|
16
|
+
"probe_required",
|
|
17
|
+
"probe_status"
|
|
18
|
+
],
|
|
19
|
+
"properties": {
|
|
20
|
+
"name": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"minLength": 1
|
|
23
|
+
},
|
|
24
|
+
"slug": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
27
|
+
},
|
|
28
|
+
"owner": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"minLength": 1
|
|
31
|
+
},
|
|
32
|
+
"status": {
|
|
33
|
+
"enum": [
|
|
34
|
+
"planned",
|
|
35
|
+
"active",
|
|
36
|
+
"complete",
|
|
37
|
+
"deferred"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"created": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"format": "date-time"
|
|
43
|
+
},
|
|
44
|
+
"updated": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"format": "date-time"
|
|
47
|
+
},
|
|
48
|
+
"outcome": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"minLength": 1
|
|
51
|
+
},
|
|
52
|
+
"uncertainty": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"minLength": 1
|
|
55
|
+
},
|
|
56
|
+
"probe_required": {
|
|
57
|
+
"enum": [
|
|
58
|
+
"true",
|
|
59
|
+
"false",
|
|
60
|
+
true,
|
|
61
|
+
false
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
"probe_status": {
|
|
65
|
+
"enum": [
|
|
66
|
+
"not-started",
|
|
67
|
+
"pending",
|
|
68
|
+
"completed",
|
|
69
|
+
"skipped"
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"source_review": {
|
|
73
|
+
"type": "string"
|
|
74
|
+
},
|
|
75
|
+
"external_reference": {
|
|
76
|
+
"type": "string"
|
|
77
|
+
},
|
|
78
|
+
"target_version": {
|
|
79
|
+
"type": "string"
|
|
80
|
+
},
|
|
81
|
+
"operating_mode": {
|
|
82
|
+
"enum": [
|
|
83
|
+
0,
|
|
84
|
+
1,
|
|
85
|
+
2,
|
|
86
|
+
3,
|
|
87
|
+
4,
|
|
88
|
+
"0",
|
|
89
|
+
"1",
|
|
90
|
+
"2",
|
|
91
|
+
"3",
|
|
92
|
+
"4",
|
|
93
|
+
"patch",
|
|
94
|
+
"scoped-change",
|
|
95
|
+
"feature",
|
|
96
|
+
"uncertain-feature",
|
|
97
|
+
"multi-stream"
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://delano.local/schemas/artifacts/task.schema.json",
|
|
4
|
+
"title": "Delano task frontmatter",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": true,
|
|
7
|
+
"required": [
|
|
8
|
+
"id",
|
|
9
|
+
"name",
|
|
10
|
+
"status",
|
|
11
|
+
"workstream",
|
|
12
|
+
"created",
|
|
13
|
+
"updated",
|
|
14
|
+
"linear_issue_id",
|
|
15
|
+
"github_issue",
|
|
16
|
+
"github_pr",
|
|
17
|
+
"depends_on",
|
|
18
|
+
"conflicts_with",
|
|
19
|
+
"parallel",
|
|
20
|
+
"priority",
|
|
21
|
+
"estimate"
|
|
22
|
+
],
|
|
23
|
+
"properties": {
|
|
24
|
+
"id": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"pattern": "^T-[0-9]{3}$"
|
|
27
|
+
},
|
|
28
|
+
"name": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"minLength": 1
|
|
31
|
+
},
|
|
32
|
+
"status": {
|
|
33
|
+
"enum": [
|
|
34
|
+
"ready",
|
|
35
|
+
"in-progress",
|
|
36
|
+
"blocked",
|
|
37
|
+
"done",
|
|
38
|
+
"deferred"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"workstream": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"pattern": "^WS-[A-Za-z0-9]+$"
|
|
44
|
+
},
|
|
45
|
+
"created": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"format": "date-time"
|
|
48
|
+
},
|
|
49
|
+
"updated": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"format": "date-time"
|
|
52
|
+
},
|
|
53
|
+
"linear_issue_id": {
|
|
54
|
+
"type": "string"
|
|
55
|
+
},
|
|
56
|
+
"github_issue": {
|
|
57
|
+
"type": "string"
|
|
58
|
+
},
|
|
59
|
+
"github_pr": {
|
|
60
|
+
"type": "string"
|
|
61
|
+
},
|
|
62
|
+
"depends_on": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"items": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"pattern": "^T-[0-9]{3}$"
|
|
67
|
+
},
|
|
68
|
+
"uniqueItems": true
|
|
69
|
+
},
|
|
70
|
+
"conflicts_with": {
|
|
71
|
+
"type": "array",
|
|
72
|
+
"items": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"pattern": "^T-[0-9]{3}$"
|
|
75
|
+
},
|
|
76
|
+
"uniqueItems": true
|
|
77
|
+
},
|
|
78
|
+
"parallel": {
|
|
79
|
+
"enum": [
|
|
80
|
+
"true",
|
|
81
|
+
"false",
|
|
82
|
+
true,
|
|
83
|
+
false
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
"priority": {
|
|
87
|
+
"enum": [
|
|
88
|
+
"low",
|
|
89
|
+
"medium",
|
|
90
|
+
"high"
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
"estimate": {
|
|
94
|
+
"enum": [
|
|
95
|
+
"S",
|
|
96
|
+
"M",
|
|
97
|
+
"L",
|
|
98
|
+
"XL"
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
"operating_mode": {
|
|
102
|
+
"enum": [
|
|
103
|
+
0,
|
|
104
|
+
1,
|
|
105
|
+
2,
|
|
106
|
+
3,
|
|
107
|
+
4,
|
|
108
|
+
"0",
|
|
109
|
+
"1",
|
|
110
|
+
"2",
|
|
111
|
+
"3",
|
|
112
|
+
"4",
|
|
113
|
+
"patch",
|
|
114
|
+
"scoped-change",
|
|
115
|
+
"feature",
|
|
116
|
+
"uncertain-feature",
|
|
117
|
+
"multi-stream"
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://delano.local/schemas/artifacts/update.schema.json",
|
|
4
|
+
"title": "Delano update frontmatter",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": true,
|
|
7
|
+
"properties": {
|
|
8
|
+
"date": { "type": "string", "format": "date-time" },
|
|
9
|
+
"related_task": { "type": "string", "pattern": "^T-[0-9]{3}$" },
|
|
10
|
+
"status": { "type": "string", "minLength": 1 }
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://delano.local/schemas/artifacts/workstream.schema.json",
|
|
4
|
+
"title": "Delano workstream frontmatter",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": true,
|
|
7
|
+
"required": [
|
|
8
|
+
"name",
|
|
9
|
+
"status",
|
|
10
|
+
"owner",
|
|
11
|
+
"created",
|
|
12
|
+
"updated"
|
|
13
|
+
],
|
|
14
|
+
"properties": {
|
|
15
|
+
"id": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"pattern": "^WS-[A-Za-z0-9]+$"
|
|
18
|
+
},
|
|
19
|
+
"name": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"minLength": 1
|
|
22
|
+
},
|
|
23
|
+
"status": {
|
|
24
|
+
"enum": [
|
|
25
|
+
"planned",
|
|
26
|
+
"active",
|
|
27
|
+
"done",
|
|
28
|
+
"deferred"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"owner": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"minLength": 1
|
|
34
|
+
},
|
|
35
|
+
"created": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"format": "date-time"
|
|
38
|
+
},
|
|
39
|
+
"updated": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"format": "date-time"
|
|
42
|
+
},
|
|
43
|
+
"child_project": {
|
|
44
|
+
"type": "string"
|
|
45
|
+
},
|
|
46
|
+
"operating_mode": {
|
|
47
|
+
"enum": [
|
|
48
|
+
0,
|
|
49
|
+
1,
|
|
50
|
+
2,
|
|
51
|
+
3,
|
|
52
|
+
4,
|
|
53
|
+
"0",
|
|
54
|
+
"1",
|
|
55
|
+
"2",
|
|
56
|
+
"3",
|
|
57
|
+
"4",
|
|
58
|
+
"patch",
|
|
59
|
+
"scoped-change",
|
|
60
|
+
"feature",
|
|
61
|
+
"uncertain-feature",
|
|
62
|
+
"multi-stream"
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"status": "draft",
|
|
4
|
+
"purpose": "Maps task acceptance criteria to proof signals required before a task can be treated as done.",
|
|
5
|
+
"done_task_rules": [
|
|
6
|
+
{
|
|
7
|
+
"id": "acceptance-criteria-checked",
|
|
8
|
+
"description": "Done tasks must have no unchecked acceptance criteria."
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "evidence-log-present",
|
|
12
|
+
"description": "Done tasks must have an Evidence Log section with at least one implementation evidence item."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "repo-inspection-proof",
|
|
16
|
+
"acceptance_criterion_contains": "repo state has been inspected",
|
|
17
|
+
"proof_terms": [
|
|
18
|
+
"inspected"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "representation-proof",
|
|
23
|
+
"acceptance_criterion_contains": "represented in Delano runtime assets",
|
|
24
|
+
"proof_terms": [
|
|
25
|
+
"added",
|
|
26
|
+
"updated",
|
|
27
|
+
"wired",
|
|
28
|
+
"rebuilt",
|
|
29
|
+
"represented",
|
|
30
|
+
"mirrored"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "validation-proof",
|
|
35
|
+
"acceptance_criterion_contains": "validated with the smallest meaningful command",
|
|
36
|
+
"proof_terms": [
|
|
37
|
+
"validation passed",
|
|
38
|
+
"passed:",
|
|
39
|
+
"npm test",
|
|
40
|
+
"check:",
|
|
41
|
+
"Validation:"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "evidence-recorded-proof",
|
|
46
|
+
"acceptance_criterion_contains": "Evidence is recorded",
|
|
47
|
+
"proof_terms": [
|
|
48
|
+
"Evidence Log"
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"strict_since": "2026-04-29T00:00:00Z"
|
|
53
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://delano.local/schemas/learning/closeout-learning-proposal.schema.json",
|
|
4
|
+
"title": "Delano closeout learning proposal",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema_version", "project", "task_ids", "proposal_type", "title", "rationale", "target_paths", "review_gate", "adoption_status"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema_version": { "const": 1 },
|
|
10
|
+
"project": { "type": "string", "minLength": 1 },
|
|
11
|
+
"task_ids": { "type": "array", "items": { "type": "string", "pattern": "^T-[0-9]{3}$" }, "minItems": 1 },
|
|
12
|
+
"proposal_type": { "enum": ["rule", "skill", "schema", "fixture"] },
|
|
13
|
+
"title": { "type": "string", "minLength": 1 },
|
|
14
|
+
"rationale": { "type": "string", "minLength": 1 },
|
|
15
|
+
"target_paths": { "type": "array", "items": { "type": "string", "not": { "pattern": "^/" } }, "minItems": 1 },
|
|
16
|
+
"review_gate": { "enum": ["required-before-adoption"] },
|
|
17
|
+
"adoption_status": { "enum": ["proposed", "accepted", "rejected", "deferred"] },
|
|
18
|
+
"evidence": { "type": "array", "items": { "type": "string" } }
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://delano.local/schemas/learning/delivery-metric-event.schema.json",
|
|
4
|
+
"title": "Delano delivery metric event",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema_version", "event_id", "event_type", "project", "task_id", "occurred_at", "privacy"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema_version": { "const": 1 },
|
|
10
|
+
"event_id": { "type": "string", "pattern": "^evt-[0-9TZ-]+-[a-z0-9-]+$" },
|
|
11
|
+
"event_type": { "enum": ["task_started", "validation_passed", "validation_failed", "task_completed", "blocked", "handoff_created"] },
|
|
12
|
+
"project": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
|
|
13
|
+
"task_id": { "type": "string", "pattern": "^T-[0-9]{3}$" },
|
|
14
|
+
"occurred_at": { "type": "string" },
|
|
15
|
+
"duration_seconds": { "type": "number", "minimum": 0 },
|
|
16
|
+
"validation_command": { "type": "string" },
|
|
17
|
+
"outcome": { "enum": ["pass", "fail", "blocked", "info"] },
|
|
18
|
+
"privacy": { "enum": ["summary-only", "local-detail"] },
|
|
19
|
+
"notes": { "type": "string" }
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://delano.local/schemas/leases/lease.schema.json",
|
|
4
|
+
"title": "Delano multi-agent path lease",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema_version", "lease_id", "owner", "project", "task_id", "status", "mode", "paths", "conflict_zones", "created_at", "acquired_at", "expires_at"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema_version": { "const": 1 },
|
|
10
|
+
"lease_id": { "type": "string", "pattern": "^lease-[0-9TZ._-]+-[a-z0-9-]+$" },
|
|
11
|
+
"owner": {
|
|
12
|
+
"oneOf": [
|
|
13
|
+
{ "type": "string", "minLength": 1 },
|
|
14
|
+
{
|
|
15
|
+
"type": "object",
|
|
16
|
+
"additionalProperties": false,
|
|
17
|
+
"required": ["agent_id", "stream"],
|
|
18
|
+
"properties": {
|
|
19
|
+
"agent_id": { "type": "string", "minLength": 1 },
|
|
20
|
+
"stream": { "type": "string", "minLength": 1 },
|
|
21
|
+
"task": { "type": "string" }
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"project": { "type": "string", "minLength": 1 },
|
|
27
|
+
"task_id": { "type": "string", "pattern": "^T-[0-9]{3}$" },
|
|
28
|
+
"mode": { "enum": ["shared", "exclusive"] },
|
|
29
|
+
"paths": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1, "not": { "pattern": "^/" } } },
|
|
30
|
+
"conflict_zones": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1, "not": { "pattern": "^/" } } },
|
|
31
|
+
"created_at": { "type": "string" },
|
|
32
|
+
"acquired_at": { "type": "string" },
|
|
33
|
+
"expires_at": { "type": "string" },
|
|
34
|
+
"released_at": { "type": "string" },
|
|
35
|
+
"status": { "enum": ["active", "expired", "released"] },
|
|
36
|
+
"release_reason": { "type": "string" },
|
|
37
|
+
"handoff_summary": { "type": "string" }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://delano.local/schemas/metrics/delivery-event.schema.json",
|
|
4
|
+
"title": "Delano privacy-safe delivery metric event",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema_version", "event_id", "event_type", "project", "created_at", "source", "privacy", "summary"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema_version": { "const": 1 },
|
|
10
|
+
"event_id": { "type": "string", "pattern": "^metric-[0-9TZ._-]+-[a-z0-9-]+$" },
|
|
11
|
+
"event_type": { "enum": ["task-status-change", "validation-run", "sync-drift", "evidence-gap", "blocked-time", "closeout-learning"] },
|
|
12
|
+
"project": { "type": "string", "minLength": 1 },
|
|
13
|
+
"task_id": { "type": "string", "pattern": "^T-[0-9]{3}$" },
|
|
14
|
+
"created_at": { "type": "string" },
|
|
15
|
+
"source": { "enum": ["local-runtime", "pm-validation", "sync-inspection", "closeout"] },
|
|
16
|
+
"privacy": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"additionalProperties": false,
|
|
19
|
+
"required": ["raw_text_allowed", "summary_only", "redaction_required"],
|
|
20
|
+
"properties": {
|
|
21
|
+
"raw_text_allowed": { "const": false },
|
|
22
|
+
"summary_only": { "const": true },
|
|
23
|
+
"redaction_required": { "const": true }
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"summary": { "type": "string", "minLength": 1 },
|
|
27
|
+
"metrics": { "type": "object", "additionalProperties": { "type": ["number", "string", "boolean"] } }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://delano.local/schemas/metrics/delivery-events.schema.json",
|
|
4
|
+
"title": "Delano delivery metric event contract",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema_version", "event_id", "event_type", "timestamp", "project", "actor", "summary"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema_version": { "const": 1 },
|
|
10
|
+
"event_id": { "type": "string", "pattern": "^evt-[0-9TZ._-]+-[a-z0-9-]+$" },
|
|
11
|
+
"event_type": {
|
|
12
|
+
"enum": [
|
|
13
|
+
"task_status_changed",
|
|
14
|
+
"validation_run",
|
|
15
|
+
"lease_acquired",
|
|
16
|
+
"lease_released",
|
|
17
|
+
"drift_report_generated",
|
|
18
|
+
"repair_plan_created",
|
|
19
|
+
"closeout_recorded"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"timestamp": { "type": "string" },
|
|
23
|
+
"project": { "type": "string", "minLength": 1 },
|
|
24
|
+
"task_id": { "type": "string", "pattern": "^T-[0-9]{3}$" },
|
|
25
|
+
"actor": { "enum": ["agent", "system", "user"] },
|
|
26
|
+
"summary": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"additionalProperties": false,
|
|
29
|
+
"required": ["label", "privacy"],
|
|
30
|
+
"properties": {
|
|
31
|
+
"label": { "type": "string", "minLength": 1 },
|
|
32
|
+
"privacy": { "const": "metadata-only" },
|
|
33
|
+
"counts": { "type": "object", "additionalProperties": { "type": "integer", "minimum": 0 } },
|
|
34
|
+
"status_from": { "type": "string" },
|
|
35
|
+
"status_to": { "type": "string" },
|
|
36
|
+
"result": { "enum": ["passed", "failed", "blocked", "warning", "generated"] }
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"evidence": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"properties": {
|
|
43
|
+
"repo_paths": { "type": "array", "items": { "type": "string", "not": { "pattern": "^/" } } },
|
|
44
|
+
"commands": { "type": "array", "items": { "type": "string" } },
|
|
45
|
+
"commit": { "type": "string", "pattern": "^[0-9a-f]{7,40}$" }
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"status": "draft",
|
|
4
|
+
"purpose": "Defines Delano operating modes used to size governance, evidence, and coordination overhead for delivery work.",
|
|
5
|
+
"modes": [
|
|
6
|
+
{
|
|
7
|
+
"mode": 0,
|
|
8
|
+
"slug": "patch",
|
|
9
|
+
"name": "Patch",
|
|
10
|
+
"use_when": "A small, well-understood correction with low uncertainty and no meaningful coordination surface.",
|
|
11
|
+
"requires": ["single task or direct patch", "focused validation evidence", "no new workstream unless needed"]
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"mode": 1,
|
|
15
|
+
"slug": "scoped-change",
|
|
16
|
+
"name": "Scoped change",
|
|
17
|
+
"use_when": "A bounded change with clear acceptance criteria, known affected files, and no material discovery risk.",
|
|
18
|
+
"requires": ["task contract", "acceptance criteria evidence", "local validation"]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"mode": 2,
|
|
22
|
+
"slug": "feature",
|
|
23
|
+
"name": "Feature",
|
|
24
|
+
"use_when": "A feature-sized delivery with multiple implementation steps but a clear solution direction.",
|
|
25
|
+
"requires": ["spec and plan", "workstream or task sequence", "validation gate before done"]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"mode": 3,
|
|
29
|
+
"slug": "uncertain-feature",
|
|
30
|
+
"name": "Uncertain feature",
|
|
31
|
+
"use_when": "A feature where the solution, user value, or integration path is uncertain enough to require a probe first.",
|
|
32
|
+
"requires": ["uncertainty statement", "probe_required=true or explicit skip rationale", "probe evidence before build commitment"]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"mode": 4,
|
|
36
|
+
"slug": "multi-stream",
|
|
37
|
+
"name": "Multi-stream delivery",
|
|
38
|
+
"use_when": "Delivery spans concurrent streams, leases, external sync, or coordination boundaries where collision risk matters.",
|
|
39
|
+
"requires": ["workstream map", "conflict zones or leases", "handoff summaries", "sync/drift checks when external systems are involved"]
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"status": "draft",
|
|
4
|
+
"purpose": "Defines local validation rules for Delano task status readiness and blocked-state hygiene.",
|
|
5
|
+
"task_rules": [
|
|
6
|
+
{
|
|
7
|
+
"id": "ready-dependencies-done",
|
|
8
|
+
"status": "ready",
|
|
9
|
+
"description": "A ready task must not depend on a local task that is not done.",
|
|
10
|
+
"requires": ["all local depends_on task statuses are done"]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"id": "in-progress-dependencies-done",
|
|
14
|
+
"status": "in-progress",
|
|
15
|
+
"description": "An in-progress task must not start while local dependencies remain unresolved.",
|
|
16
|
+
"requires": ["all local depends_on task statuses are done"]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "done-dependencies-done",
|
|
20
|
+
"status": "done",
|
|
21
|
+
"description": "A done task must not close over unresolved local dependencies.",
|
|
22
|
+
"requires": ["all local depends_on task statuses are done"]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "blocked-owner-check-back",
|
|
26
|
+
"status": "blocked",
|
|
27
|
+
"description": "A blocked task must name who owns unblocking and when to check back.",
|
|
28
|
+
"requires": ["blocked_owner", "blocked_check_back"]
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|