yaaw-se 0.3.7 → 0.3.8

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 (81) hide show
  1. package/README.md +6 -2
  2. package/dist/installer/migrations/index.d.ts +2 -2
  3. package/dist/installer/migrations/index.js +2 -2
  4. package/dist/installer/migrations/project/index.js +2 -2
  5. package/dist/installer/migrations/project/index.js.map +1 -1
  6. package/dist/installer/migrations/project/v1-to-v2.d.ts +2 -0
  7. package/dist/installer/migrations/project/v1-to-v2.js +64 -0
  8. package/dist/installer/migrations/project/v1-to-v2.js.map +1 -0
  9. package/dist/installer/project-state.js +1 -0
  10. package/dist/installer/project-state.js.map +1 -1
  11. package/dist/installer/transaction.js +5 -0
  12. package/dist/installer/transaction.js.map +1 -1
  13. package/dist/installer/types.d.ts +5 -0
  14. package/dist/payload/bootstrap/claude-code.md +1 -1
  15. package/dist/payload/bootstrap/cline.md +1 -1
  16. package/dist/payload/bootstrap/codex.md +1 -1
  17. package/dist/payload/bootstrap/gemini-cli.md +1 -1
  18. package/dist/payload/integrations/codex/yaaw-runtime.md +1 -1
  19. package/dist/payload/payload-files.json +146 -111
  20. package/dist/payload/payload.json +1 -1
  21. package/dist/payload/skills/yaaw-create-spec/SKILL.md +6 -2
  22. package/dist/payload/skills/yaaw-create-ticket/SKILL.md +6 -2
  23. package/dist/payload/skills/yaaw-create-tickets/SKILL.md +6 -2
  24. package/dist/payload/skills/yaaw-implement/SKILL.md +6 -2
  25. package/dist/payload/skills/yaaw-orchestrator/SKILL.md +6 -2
  26. package/dist/payload/skills/yaaw-planner/SKILL.md +6 -2
  27. package/dist/payload/skills/yaaw-planning-review/SKILL.md +6 -2
  28. package/dist/payload/skills/yaaw-prd/SKILL.md +6 -2
  29. package/dist/payload/skills/yaaw-refine-prd/SKILL.md +6 -2
  30. package/dist/payload/skills/yaaw-repair/SKILL.md +6 -2
  31. package/dist/payload/skills/yaaw-review/SKILL.md +6 -2
  32. package/dist/payload/skills/yaaw-revise-prd/SKILL.md +6 -2
  33. package/dist/payload/yaaw-core/system/core/dispatch-execution.md +16 -53
  34. package/dist/payload/yaaw-core/system/core/invalidation.md +7 -38
  35. package/dist/payload/yaaw-core/system/core/io-contract.md +12 -45
  36. package/dist/payload/yaaw-core/system/core/lifecycle.md +11 -18
  37. package/dist/payload/yaaw-core/system/core/recovery.md +12 -26
  38. package/dist/payload/yaaw-core/system/core/routing.md +16 -31
  39. package/dist/payload/yaaw-core/system/core/state-model.md +7 -27
  40. package/dist/payload/yaaw-core/system/registries/handoff-policy.json +41 -59
  41. package/dist/payload/yaaw-core/system/registries/reconciliation-policy.json +17 -0
  42. package/dist/payload/yaaw-core/system/registries/role-io.json +15 -144
  43. package/dist/payload/yaaw-core/system/registries/skills.json +108 -12
  44. package/dist/payload/yaaw-core/system/roles/implementer.md +10 -13
  45. package/dist/payload/yaaw-core/system/roles/orchestrator.md +12 -17
  46. package/dist/payload/yaaw-core/system/roles/planner.md +9 -18
  47. package/dist/payload/yaaw-core/system/roles/reviewer.md +9 -14
  48. package/dist/payload/yaaw-core/system/schemas/engineering-v1.schema.json +15 -0
  49. package/dist/payload/yaaw-core/system/schemas/engineering-v2.schema.json +59 -0
  50. package/dist/payload/yaaw-core/system/schemas/engineering.schema.json +9 -12
  51. package/dist/payload/yaaw-core/system/schemas/evidence-v3.schema.json +111 -0
  52. package/dist/payload/yaaw-core/system/schemas/evidence.schema.json +3 -0
  53. package/dist/payload/yaaw-core/system/schemas/handoff.schema.json +3 -60
  54. package/dist/payload/yaaw-core/system/schemas/intent.schema.json +63 -8
  55. package/dist/payload/yaaw-core/system/schemas/observed-state.schema.json +55 -61
  56. package/dist/payload/yaaw-core/system/schemas/project-state-v1.schema.json +74 -0
  57. package/dist/payload/yaaw-core/system/schemas/project-state-v2.schema.json +251 -0
  58. package/dist/payload/yaaw-core/system/schemas/project-state.schema.json +9 -71
  59. package/dist/payload/yaaw-core/system/templates/engineering-research.md +2 -2
  60. package/dist/payload/yaaw-core/system/templates/engineering.md +2 -1
  61. package/dist/payload/yaaw-core/system/templates/evidence.json +2 -1
  62. package/dist/payload/yaaw-core/system/templates/handoff.json +7 -8
  63. package/dist/payload/yaaw-core/system/templates/intent.json +4 -3
  64. package/dist/payload/yaaw-core/system/templates/observed-state.json +6 -13
  65. package/dist/payload/yaaw-core/system/templates/project-state.json +2 -2
  66. package/dist/payload/yaaw-core/system/templates/review.md +4 -4
  67. package/dist/payload/yaaw-core/system/templates/spec.md +2 -2
  68. package/dist/payload/yaaw-core/system/templates/ticket.md +3 -3
  69. package/dist/payload/yaaw-core/system/tools/orchestration-engine.mjs +187 -0
  70. package/dist/payload/yaaw-core/system/tools/orchestration-runtime.mjs +46 -688
  71. package/dist/payload/yaaw-core/system/workflows/implementation/implement-ticket.md +9 -17
  72. package/dist/payload/yaaw-core/system/workflows/implementation/repair-ticket.md +7 -12
  73. package/dist/payload/yaaw-core/system/workflows/implementation/verify-ticket.md +9 -10
  74. package/dist/payload/yaaw-core/system/workflows/orchestration/reconcile-state.md +10 -13
  75. package/dist/payload/yaaw-core/system/workflows/orchestration/recover-interruption.md +9 -12
  76. package/dist/payload/yaaw-core/system/workflows/orchestration/route.md +14 -21
  77. package/dist/payload/yaaw-core/system/workflows/planning/create-spec.md +3 -0
  78. package/dist/payload/yaaw-core/system/workflows/planning/create-tickets.md +3 -0
  79. package/dist/payload/yaaw-core/system/workflows/planning/decision-frontier.md +3 -0
  80. package/dist/payload/yaaw-core/system/workflows/planning/replan.md +2 -0
  81. package/package.json +4 -3
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.engineering/v1",
4
+ "type": "object",
5
+ "required": ["schema", "revision", "status", "product_revision", "current_frontier", "readiness"],
6
+ "properties": {
7
+ "schema": {"const": "yaaw.engineering/v1"},
8
+ "revision": {"type": "integer", "minimum": 1},
9
+ "status": {"enum": ["discovery", "questions", "ready", "blocked"]},
10
+ "product_revision": {"type": "integer", "minimum": 1},
11
+ "current_frontier": {"type": ["string", "null"]},
12
+ "readiness": {"enum": ["pending", "PASS", "MISSING_DECISIONS", "PRODUCT_GAP", "REPLAN", "BLOCKED"]}
13
+ },
14
+ "additionalProperties": false
15
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.engineering/v2",
4
+ "type": "object",
5
+ "required": [
6
+ "schema",
7
+ "revision",
8
+ "status",
9
+ "product_revision",
10
+ "current_frontier",
11
+ "readiness",
12
+ "scope_status"
13
+ ],
14
+ "properties": {
15
+ "schema": {
16
+ "const": "yaaw.engineering/v2"
17
+ },
18
+ "revision": {
19
+ "type": "integer",
20
+ "minimum": 1
21
+ },
22
+ "status": {
23
+ "enum": [
24
+ "discovery",
25
+ "questions",
26
+ "ready",
27
+ "blocked"
28
+ ]
29
+ },
30
+ "product_revision": {
31
+ "type": "integer",
32
+ "minimum": 1
33
+ },
34
+ "current_frontier": {
35
+ "type": [
36
+ "string",
37
+ "null"
38
+ ]
39
+ },
40
+ "readiness": {
41
+ "enum": [
42
+ "pending",
43
+ "PASS",
44
+ "MISSING_DECISIONS",
45
+ "PRODUCT_GAP",
46
+ "REPLAN",
47
+ "BLOCKED"
48
+ ]
49
+ },
50
+ "scope_status": {
51
+ "enum": [
52
+ "UNKNOWN",
53
+ "OPEN",
54
+ "COMPLETE"
55
+ ]
56
+ }
57
+ },
58
+ "additionalProperties": false
59
+ }
@@ -1,15 +1,12 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "yaaw.engineering/v1",
4
- "type": "object",
5
- "required": ["schema", "revision", "status", "product_revision", "current_frontier", "readiness"],
6
- "properties": {
7
- "schema": {"const": "yaaw.engineering/v1"},
8
- "revision": {"type": "integer", "minimum": 1},
9
- "status": {"enum": ["discovery", "questions", "ready", "blocked"]},
10
- "product_revision": {"type": "integer", "minimum": 1},
11
- "current_frontier": {"type": ["string", "null"]},
12
- "readiness": {"enum": ["pending", "PASS", "MISSING_DECISIONS", "PRODUCT_GAP", "REPLAN", "BLOCKED"]}
13
- },
14
- "additionalProperties": false
3
+ "$id": "yaaw.engineering",
4
+ "oneOf": [
5
+ {
6
+ "$ref": "engineering-v1.schema.json"
7
+ },
8
+ {
9
+ "$ref": "engineering-v2.schema.json"
10
+ }
11
+ ]
15
12
  }
@@ -0,0 +1,111 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.evidence/v3",
4
+ "type": "object",
5
+ "required": [
6
+ "schema",
7
+ "id",
8
+ "ticket",
9
+ "ticket_revision",
10
+ "spec_revision",
11
+ "kind",
12
+ "result",
13
+ "repository",
14
+ "workflow",
15
+ "commands",
16
+ "checks"
17
+ ],
18
+ "properties": {
19
+ "schema": {
20
+ "const": "yaaw.evidence/v3"
21
+ },
22
+ "id": {
23
+ "type": "string",
24
+ "minLength": 1
25
+ },
26
+ "ticket": {
27
+ "type": "string",
28
+ "pattern": "^TASK-[0-9]+$"
29
+ },
30
+ "ticket_revision": {
31
+ "type": "integer",
32
+ "minimum": 0
33
+ },
34
+ "spec_revision": {
35
+ "type": "integer",
36
+ "minimum": 0
37
+ },
38
+ "kind": {
39
+ "enum": [
40
+ "implementation_start",
41
+ "implementation_verification"
42
+ ]
43
+ },
44
+ "result": {
45
+ "enum": [
46
+ "STARTED",
47
+ "PASS",
48
+ "FAIL",
49
+ "BLOCKED"
50
+ ]
51
+ },
52
+ "repository": {
53
+ "$ref": "repository-identity.schema.json"
54
+ },
55
+ "workflow": {
56
+ "type": "string",
57
+ "minLength": 1
58
+ },
59
+ "commands": {
60
+ "type": "array"
61
+ },
62
+ "checks": {
63
+ "type": "array"
64
+ }
65
+ },
66
+ "allOf": [
67
+ {
68
+ "if": {
69
+ "properties": {
70
+ "kind": {
71
+ "const": "implementation_start"
72
+ }
73
+ },
74
+ "required": [
75
+ "kind"
76
+ ]
77
+ },
78
+ "then": {
79
+ "properties": {
80
+ "result": {
81
+ "const": "STARTED"
82
+ }
83
+ }
84
+ }
85
+ },
86
+ {
87
+ "if": {
88
+ "properties": {
89
+ "kind": {
90
+ "const": "implementation_verification"
91
+ }
92
+ },
93
+ "required": [
94
+ "kind"
95
+ ]
96
+ },
97
+ "then": {
98
+ "properties": {
99
+ "result": {
100
+ "enum": [
101
+ "PASS",
102
+ "FAIL",
103
+ "BLOCKED"
104
+ ]
105
+ }
106
+ }
107
+ }
108
+ }
109
+ ],
110
+ "additionalProperties": false
111
+ }
@@ -20,6 +20,9 @@
20
20
  },
21
21
  {
22
22
  "$ref": "evidence-v2.schema.json"
23
+ },
24
+ {
25
+ "$ref": "evidence-v3.schema.json"
23
26
  }
24
27
  ]
25
28
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "yaaw.handoff/v2",
3
+ "$id": "yaaw.handoff/v3",
4
4
  "type": "object",
5
5
  "required": [
6
6
  "schema",
@@ -24,7 +24,7 @@
24
24
  ],
25
25
  "properties": {
26
26
  "schema": {
27
- "const": "yaaw.handoff/v2"
27
+ "const": "yaaw.handoff/v3"
28
28
  },
29
29
  "role": {
30
30
  "enum": [
@@ -119,64 +119,7 @@
119
119
  ]
120
120
  },
121
121
  "repository": {
122
- "type": "object",
123
- "required": [
124
- "status",
125
- "workspace_scope",
126
- "git_root_relation",
127
- "head_commit",
128
- "dirty",
129
- "worktree_digest",
130
- "error"
131
- ],
132
- "properties": {
133
- "status": {
134
- "enum": [
135
- "READY",
136
- "UNVERSIONED",
137
- "UNAVAILABLE",
138
- "ROOT_MISMATCH",
139
- "IDENTITY_FAILED"
140
- ]
141
- },
142
- "workspace_scope": {
143
- "type": "string",
144
- "minLength": 1
145
- },
146
- "git_root_relation": {
147
- "enum": [
148
- "same",
149
- "ancestor",
150
- "none",
151
- "unknown"
152
- ]
153
- },
154
- "head_commit": {
155
- "type": [
156
- "string",
157
- "null"
158
- ]
159
- },
160
- "dirty": {
161
- "type": [
162
- "boolean",
163
- "null"
164
- ]
165
- },
166
- "worktree_digest": {
167
- "type": [
168
- "string",
169
- "null"
170
- ]
171
- },
172
- "error": {
173
- "type": [
174
- "string",
175
- "null"
176
- ]
177
- }
178
- },
179
- "additionalProperties": false
122
+ "$ref": "repository-identity.schema.json"
180
123
  },
181
124
  "transition_sequence": {
182
125
  "type": "integer",
@@ -1,15 +1,70 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "yaaw.intent/v1",
3
+ "$id": "yaaw.intent/v2",
4
4
  "type": "object",
5
- "required": ["schema", "source", "desired_outcome", "target_artifact", "completion_condition", "created_from_transition_sequence"],
5
+ "required": [
6
+ "schema",
7
+ "source_skill",
8
+ "desired_outcome",
9
+ "requested_workflow",
10
+ "target_artifact",
11
+ "completion_kind",
12
+ "created_from_transition_sequence"
13
+ ],
6
14
  "properties": {
7
- "schema": {"const": "yaaw.intent/v1"},
8
- "source": {"type": "string", "minLength": 1},
9
- "desired_outcome": {"type": "string", "minLength": 1},
10
- "target_artifact": {"type": ["string", "null"]},
11
- "completion_condition": {"type": "string", "minLength": 1},
12
- "created_from_transition_sequence": {"type": "integer", "minimum": 0}
15
+ "schema": {
16
+ "const": "yaaw.intent/v2"
17
+ },
18
+ "source_skill": {
19
+ "type": "string",
20
+ "minLength": 1
21
+ },
22
+ "desired_outcome": {
23
+ "enum": [
24
+ "CONTINUE",
25
+ "CONTINUE_PRODUCT",
26
+ "REVISE_PRODUCT",
27
+ "REFINE_PRODUCT",
28
+ "CONTINUE_PLANNING",
29
+ "PLANNING_REVIEW",
30
+ "CREATE_SPEC",
31
+ "CREATE_TICKETS",
32
+ "IMPLEMENT",
33
+ "REPAIR",
34
+ "REVIEW"
35
+ ]
36
+ },
37
+ "requested_workflow": {
38
+ "type": "string",
39
+ "minLength": 1
40
+ },
41
+ "target_artifact": {
42
+ "type": [
43
+ "string",
44
+ "null"
45
+ ]
46
+ },
47
+ "completion_kind": {
48
+ "enum": [
49
+ "CONTINUE_UNTIL_STOP",
50
+ "PRODUCT_READY",
51
+ "PRODUCT_REVISION_ADVANCED",
52
+ "PRODUCT_REFINED",
53
+ "PLANNING_READY",
54
+ "PLANNING_READINESS_DECIDED",
55
+ "CURRENT_SPEC_ACCEPTED",
56
+ "CURRENT_TICKETS_REGISTERED",
57
+ "TICKET_REVIEW_REQUIRED",
58
+ "TICKET_REVIEW_APPLIED"
59
+ ]
60
+ },
61
+ "created_from_transition_sequence": {
62
+ "type": "integer",
63
+ "minimum": 0
64
+ },
65
+ "note": {
66
+ "type": "string"
67
+ }
13
68
  },
14
69
  "additionalProperties": false
15
70
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "yaaw.observed-state/v2",
3
+ "$id": "yaaw.observed-state/v3",
4
4
  "type": "object",
5
5
  "required": [
6
6
  "schema",
@@ -10,71 +10,15 @@
10
10
  "claims",
11
11
  "artifacts",
12
12
  "inconsistencies",
13
- "candidate_actions"
13
+ "candidate_actions",
14
+ "reconciliation"
14
15
  ],
15
16
  "properties": {
16
17
  "schema": {
17
- "const": "yaaw.observed-state/v2"
18
+ "const": "yaaw.observed-state/v3"
18
19
  },
19
20
  "repository": {
20
- "type": "object",
21
- "required": [
22
- "status",
23
- "workspace_scope",
24
- "git_root_relation",
25
- "head_commit",
26
- "dirty",
27
- "worktree_digest",
28
- "error"
29
- ],
30
- "properties": {
31
- "status": {
32
- "enum": [
33
- "READY",
34
- "UNVERSIONED",
35
- "UNAVAILABLE",
36
- "ROOT_MISMATCH",
37
- "IDENTITY_FAILED"
38
- ]
39
- },
40
- "workspace_scope": {
41
- "type": "string",
42
- "minLength": 1
43
- },
44
- "git_root_relation": {
45
- "enum": [
46
- "same",
47
- "ancestor",
48
- "none",
49
- "unknown"
50
- ]
51
- },
52
- "head_commit": {
53
- "type": [
54
- "string",
55
- "null"
56
- ]
57
- },
58
- "dirty": {
59
- "type": [
60
- "boolean",
61
- "null"
62
- ]
63
- },
64
- "worktree_digest": {
65
- "type": [
66
- "string",
67
- "null"
68
- ]
69
- },
70
- "error": {
71
- "type": [
72
- "string",
73
- "null"
74
- ]
75
- }
76
- },
77
- "additionalProperties": false
21
+ "$ref": "repository-identity.schema.json"
78
22
  },
79
23
  "transition_sequence": {
80
24
  "type": "integer",
@@ -168,6 +112,56 @@
168
112
  }
169
113
  },
170
114
  "additionalProperties": false
115
+ },
116
+ "reconciliation": {
117
+ "anyOf": [
118
+ {
119
+ "type": "null"
120
+ },
121
+ {
122
+ "type": "object",
123
+ "required": [
124
+ "id",
125
+ "kind",
126
+ "reason"
127
+ ],
128
+ "properties": {
129
+ "id": {
130
+ "type": "string"
131
+ },
132
+ "kind": {
133
+ "enum": [
134
+ "STATE",
135
+ "BLOCKED"
136
+ ]
137
+ },
138
+ "subject": {
139
+ "type": [
140
+ "string",
141
+ "null"
142
+ ]
143
+ },
144
+ "from": {},
145
+ "to": {},
146
+ "reason": {
147
+ "type": "string"
148
+ },
149
+ "workflow": {
150
+ "type": [
151
+ "string",
152
+ "null"
153
+ ]
154
+ },
155
+ "evidence": {
156
+ "type": "array",
157
+ "items": {
158
+ "type": "string"
159
+ }
160
+ }
161
+ },
162
+ "additionalProperties": true
163
+ }
164
+ ]
171
165
  }
172
166
  },
173
167
  "additionalProperties": false
@@ -0,0 +1,74 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "yaaw.project-state/v1",
4
+ "type": "object",
5
+ "required": ["schema", "phase", "product", "planning", "active_ticket", "tickets", "transition_sequence", "last_transition", "blocker", "last_observed_commit", "last_workflow"],
6
+ "properties": {
7
+ "schema": {"const": "yaaw.project-state/v1"},
8
+ "phase": {"enum": ["product", "planning", "implementation", "complete", "blocked"]},
9
+ "product": {
10
+ "type": "object",
11
+ "required": ["artifact", "status", "revision"],
12
+ "properties": {
13
+ "artifact": {"type": "string"},
14
+ "status": {"enum": ["missing", "draft", "ready", "blocked"]},
15
+ "revision": {"type": "integer", "minimum": 0}
16
+ },
17
+ "additionalProperties": false
18
+ },
19
+ "planning": {
20
+ "type": "object",
21
+ "required": ["artifact", "status", "revision", "current_frontier", "readiness", "active_spec"],
22
+ "properties": {
23
+ "artifact": {"type": "string"},
24
+ "status": {"enum": ["missing", "discovery", "questions", "ready", "blocked"]},
25
+ "revision": {"type": "integer", "minimum": 0},
26
+ "current_frontier": {"type": ["string", "null"]},
27
+ "readiness": {"enum": ["pending", "PASS", "MISSING_DECISIONS", "PRODUCT_GAP", "REPLAN", "BLOCKED"]},
28
+ "active_spec": {"type": ["string", "null"]}
29
+ },
30
+ "additionalProperties": false
31
+ },
32
+ "active_ticket": {"type": ["string", "null"], "pattern": "^TASK-[0-9]+$"},
33
+ "tickets": {"type": "object", "additionalProperties": {"enum": ["DRAFT", "READY", "IN_PROGRESS", "REVIEW_REQUIRED", "REPAIR_REQUIRED", "REPLAN_REQUIRED", "BLOCKED", "PASS", "CANCELLED"]}},
34
+ "transition_sequence": {"type": "integer", "minimum": 0},
35
+ "last_transition": {
36
+ "anyOf": [
37
+ {"type": "null"},
38
+ {
39
+ "type": "object",
40
+ "required": ["sequence", "subject", "from", "to", "workflow", "reason", "evidence", "observed_commit"],
41
+ "properties": {
42
+ "sequence": {"type": "integer", "minimum": 1},
43
+ "subject": {"type": "string", "minLength": 1},
44
+ "from": {"type": ["string", "null"]},
45
+ "to": {"type": "string", "minLength": 1},
46
+ "workflow": {"type": "string", "minLength": 1},
47
+ "reason": {"type": "string", "minLength": 1},
48
+ "evidence": {"type": "array", "items": {"type": "string"}},
49
+ "observed_commit": {"type": ["string", "null"]}
50
+ },
51
+ "additionalProperties": false
52
+ }
53
+ ]
54
+ },
55
+ "blocker": {
56
+ "anyOf": [
57
+ {"type": "null"},
58
+ {
59
+ "type": "object",
60
+ "required": ["kind", "summary", "missing"],
61
+ "properties": {
62
+ "kind": {"type": "string", "minLength": 1},
63
+ "summary": {"type": "string", "minLength": 1},
64
+ "missing": {"type": "array", "items": {"type": "string"}}
65
+ },
66
+ "additionalProperties": false
67
+ }
68
+ ]
69
+ },
70
+ "last_observed_commit": {"type": ["string", "null"]},
71
+ "last_workflow": {"type": ["string", "null"]}
72
+ },
73
+ "additionalProperties": false
74
+ }