@davidorex/pi-context 0.26.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/CHANGELOG.md +23 -0
- package/README.md +195 -0
- package/dist/block-api.d.ts +328 -0
- package/dist/block-api.d.ts.map +1 -0
- package/dist/block-api.js +1167 -0
- package/dist/block-api.js.map +1 -0
- package/dist/block-validation.d.ts +33 -0
- package/dist/block-validation.d.ts.map +1 -0
- package/dist/block-validation.js +213 -0
- package/dist/block-validation.js.map +1 -0
- package/dist/context-dir.d.ts +93 -0
- package/dist/context-dir.d.ts.map +1 -0
- package/dist/context-dir.js +224 -0
- package/dist/context-dir.js.map +1 -0
- package/dist/context-sdk.d.ts +428 -0
- package/dist/context-sdk.d.ts.map +1 -0
- package/dist/context-sdk.js +1327 -0
- package/dist/context-sdk.js.map +1 -0
- package/dist/context.d.ts +497 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +1060 -0
- package/dist/context.js.map +1 -0
- package/dist/dispatch-context.d.ts +112 -0
- package/dist/dispatch-context.d.ts.map +1 -0
- package/dist/dispatch-context.js +119 -0
- package/dist/dispatch-context.js.map +1 -0
- package/dist/execution-context.d.ts +138 -0
- package/dist/execution-context.d.ts.map +1 -0
- package/dist/execution-context.js +151 -0
- package/dist/execution-context.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1655 -0
- package/dist/index.js.map +1 -0
- package/dist/lens-validator.d.ts +50 -0
- package/dist/lens-validator.d.ts.map +1 -0
- package/dist/lens-validator.js +46 -0
- package/dist/lens-validator.js.map +1 -0
- package/dist/lens-view.d.ts +75 -0
- package/dist/lens-view.d.ts.map +1 -0
- package/dist/lens-view.js +253 -0
- package/dist/lens-view.js.map +1 -0
- package/dist/rename-canonical-id.d.ts +64 -0
- package/dist/rename-canonical-id.d.ts.map +1 -0
- package/dist/rename-canonical-id.js +378 -0
- package/dist/rename-canonical-id.js.map +1 -0
- package/dist/roadmap-plan.d.ts +186 -0
- package/dist/roadmap-plan.d.ts.map +1 -0
- package/dist/roadmap-plan.js +534 -0
- package/dist/roadmap-plan.js.map +1 -0
- package/dist/samples-catalog.d.ts +48 -0
- package/dist/samples-catalog.d.ts.map +1 -0
- package/dist/samples-catalog.js +128 -0
- package/dist/samples-catalog.js.map +1 -0
- package/dist/schema-migrations.d.ts +82 -0
- package/dist/schema-migrations.d.ts.map +1 -0
- package/dist/schema-migrations.js +106 -0
- package/dist/schema-migrations.js.map +1 -0
- package/dist/schema-validator.d.ts +76 -0
- package/dist/schema-validator.d.ts.map +1 -0
- package/dist/schema-validator.js +219 -0
- package/dist/schema-validator.js.map +1 -0
- package/dist/schema-write.d.ts +122 -0
- package/dist/schema-write.d.ts.map +1 -0
- package/dist/schema-write.js +210 -0
- package/dist/schema-write.js.map +1 -0
- package/dist/status-vocab.d.ts +60 -0
- package/dist/status-vocab.d.ts.map +1 -0
- package/dist/status-vocab.js +109 -0
- package/dist/status-vocab.js.map +1 -0
- package/dist/test-helpers.d.ts +12 -0
- package/dist/test-helpers.d.ts.map +1 -0
- package/dist/test-helpers.js +28 -0
- package/dist/test-helpers.js.map +1 -0
- package/dist/topo.d.ts +19 -0
- package/dist/topo.d.ts.map +1 -0
- package/dist/topo.js +99 -0
- package/dist/topo.js.map +1 -0
- package/dist/update-check.d.ts +6 -0
- package/dist/update-check.d.ts.map +1 -0
- package/dist/update-check.js +82 -0
- package/dist/update-check.js.map +1 -0
- package/package.json +115 -0
- package/samples/blocks/context-contracts.json +3 -0
- package/samples/blocks/conventions.json +3 -0
- package/samples/blocks/decisions.json +3 -0
- package/samples/blocks/features.json +3 -0
- package/samples/blocks/framework-gaps.json +3 -0
- package/samples/blocks/issues.json +3 -0
- package/samples/blocks/layer-plans.json +3 -0
- package/samples/blocks/phase.json +3 -0
- package/samples/blocks/rationale.json +3 -0
- package/samples/blocks/requirements.json +3 -0
- package/samples/blocks/research.json +3 -0
- package/samples/blocks/spec-reviews.json +3 -0
- package/samples/blocks/story.json +3 -0
- package/samples/blocks/tasks.json +3 -0
- package/samples/blocks/verification.json +3 -0
- package/samples/conception.json +467 -0
- package/samples/schemas/context-contracts.schema.json +89 -0
- package/samples/schemas/conventions.schema.json +34 -0
- package/samples/schemas/decisions.schema.json +87 -0
- package/samples/schemas/features.schema.json +53 -0
- package/samples/schemas/framework-gaps.schema.json +64 -0
- package/samples/schemas/issues.schema.json +39 -0
- package/samples/schemas/layer-plans.schema.json +92 -0
- package/samples/schemas/phase.schema.json +118 -0
- package/samples/schemas/rationale.schema.json +24 -0
- package/samples/schemas/requirements.schema.json +34 -0
- package/samples/schemas/research.schema.json +134 -0
- package/samples/schemas/spec-reviews.schema.json +62 -0
- package/samples/schemas/story.schema.json +73 -0
- package/samples/schemas/tasks.schema.json +34 -0
- package/samples/schemas/verification.schema.json +37 -0
- package/schemas/bootstrap.schema.json +24 -0
- package/schemas/config.schema.json +193 -0
- package/schemas/layer.schema.json +9 -0
- package/schemas/priority.schema.json +9 -0
- package/schemas/relations.schema.json +31 -0
- package/schemas/severity.schema.json +9 -0
- package/schemas/source.schema.json +9 -0
- package/schemas/status.schema.json +9 -0
- package/schemas/verification-method.schema.json +9 -0
- package/skill-narrative.md +130 -0
- package/skills/pi-context/SKILL.md +684 -0
- package/skills/pi-context/references/bundled-resources.md +47 -0
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0.0",
|
|
3
|
+
"block_kinds": [
|
|
4
|
+
{
|
|
5
|
+
"canonical_id": "decisions",
|
|
6
|
+
"display_name": "Decisions",
|
|
7
|
+
"prefix": "DEC-",
|
|
8
|
+
"schema_path": "schemas/decisions.schema.json",
|
|
9
|
+
"array_key": "decisions",
|
|
10
|
+
"data_path": "decisions.json"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"canonical_id": "framework-gaps",
|
|
14
|
+
"display_name": "Framework Gaps",
|
|
15
|
+
"prefix": "FGAP-",
|
|
16
|
+
"schema_path": "schemas/framework-gaps.schema.json",
|
|
17
|
+
"array_key": "gaps",
|
|
18
|
+
"data_path": "framework-gaps.json"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"canonical_id": "tasks",
|
|
22
|
+
"display_name": "Tasks",
|
|
23
|
+
"prefix": "TASK-",
|
|
24
|
+
"schema_path": "schemas/tasks.schema.json",
|
|
25
|
+
"array_key": "tasks",
|
|
26
|
+
"data_path": "tasks.json"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"canonical_id": "verification",
|
|
30
|
+
"display_name": "Verification",
|
|
31
|
+
"prefix": "VER-",
|
|
32
|
+
"schema_path": "schemas/verification.schema.json",
|
|
33
|
+
"array_key": "verifications",
|
|
34
|
+
"data_path": "verification.json"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"canonical_id": "issues",
|
|
38
|
+
"display_name": "Issues",
|
|
39
|
+
"prefix": "issue-",
|
|
40
|
+
"schema_path": "schemas/issues.schema.json",
|
|
41
|
+
"array_key": "issues",
|
|
42
|
+
"data_path": "issues.json"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"canonical_id": "features",
|
|
46
|
+
"display_name": "Features",
|
|
47
|
+
"prefix": "FEAT-",
|
|
48
|
+
"schema_path": "schemas/features.schema.json",
|
|
49
|
+
"array_key": "features",
|
|
50
|
+
"data_path": "features.json"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"canonical_id": "research",
|
|
54
|
+
"display_name": "Research",
|
|
55
|
+
"prefix": "R-",
|
|
56
|
+
"schema_path": "schemas/research.schema.json",
|
|
57
|
+
"array_key": "research",
|
|
58
|
+
"data_path": "research.json"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"canonical_id": "rationale",
|
|
62
|
+
"display_name": "Design Rationale",
|
|
63
|
+
"prefix": "RAT-",
|
|
64
|
+
"schema_path": "schemas/rationale.schema.json",
|
|
65
|
+
"array_key": "rationales",
|
|
66
|
+
"data_path": "rationale.json"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"canonical_id": "spec-reviews",
|
|
70
|
+
"display_name": "Spec Reviews",
|
|
71
|
+
"prefix": "REVIEW-",
|
|
72
|
+
"schema_path": "schemas/spec-reviews.schema.json",
|
|
73
|
+
"array_key": "reviews",
|
|
74
|
+
"data_path": "spec-reviews.json"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"canonical_id": "layer-plans",
|
|
78
|
+
"display_name": "Layer Restructure Plans",
|
|
79
|
+
"prefix": "PLAN-",
|
|
80
|
+
"schema_path": "schemas/layer-plans.schema.json",
|
|
81
|
+
"array_key": "plans",
|
|
82
|
+
"data_path": "layer-plans.json"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"canonical_id": "requirements",
|
|
86
|
+
"display_name": "Requirements",
|
|
87
|
+
"prefix": "REQ-",
|
|
88
|
+
"schema_path": "schemas/requirements.schema.json",
|
|
89
|
+
"array_key": "requirements",
|
|
90
|
+
"data_path": "requirements.json"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"canonical_id": "conventions",
|
|
94
|
+
"display_name": "Conventions",
|
|
95
|
+
"prefix": "",
|
|
96
|
+
"schema_path": "schemas/conventions.schema.json",
|
|
97
|
+
"array_key": "rules",
|
|
98
|
+
"data_path": "conventions.json"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"canonical_id": "context-contracts",
|
|
102
|
+
"display_name": "Context Contracts",
|
|
103
|
+
"prefix": "CTX-",
|
|
104
|
+
"schema_path": "schemas/context-contracts.schema.json",
|
|
105
|
+
"array_key": "contracts",
|
|
106
|
+
"data_path": "context-contracts.json"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"canonical_id": "phase",
|
|
110
|
+
"display_name": "Phases",
|
|
111
|
+
"prefix": "PHASE-",
|
|
112
|
+
"schema_path": "schemas/phase.schema.json",
|
|
113
|
+
"array_key": "phases",
|
|
114
|
+
"data_path": "phase.json"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"canonical_id": "story",
|
|
118
|
+
"display_name": "Stories",
|
|
119
|
+
"prefix": "STORY-",
|
|
120
|
+
"schema_path": "schemas/story.schema.json",
|
|
121
|
+
"array_key": "stories",
|
|
122
|
+
"data_path": "story.json"
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
"relation_types": [
|
|
126
|
+
{
|
|
127
|
+
"canonical_id": "decision_supersedes_decision",
|
|
128
|
+
"display_name": "supersedes",
|
|
129
|
+
"category": "ordering",
|
|
130
|
+
"source_kinds": ["decisions"],
|
|
131
|
+
"target_kinds": ["decisions"]
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"canonical_id": "decision_relates_to_decision",
|
|
135
|
+
"display_name": "relates to decision",
|
|
136
|
+
"category": "data_flow",
|
|
137
|
+
"source_kinds": ["decisions"],
|
|
138
|
+
"target_kinds": ["decisions"]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"canonical_id": "decision_addresses_issue",
|
|
142
|
+
"display_name": "addresses issue",
|
|
143
|
+
"category": "data_flow",
|
|
144
|
+
"source_kinds": ["decisions"],
|
|
145
|
+
"target_kinds": ["issues"]
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"canonical_id": "decision_addresses_feature",
|
|
149
|
+
"display_name": "addresses feature",
|
|
150
|
+
"category": "data_flow",
|
|
151
|
+
"source_kinds": ["decisions"],
|
|
152
|
+
"target_kinds": ["features"]
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"canonical_id": "decision_addresses_gap",
|
|
156
|
+
"display_name": "addresses gap",
|
|
157
|
+
"category": "data_flow",
|
|
158
|
+
"source_kinds": ["decisions"],
|
|
159
|
+
"target_kinds": ["framework-gaps"]
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"canonical_id": "gap_addressed_by_decision",
|
|
163
|
+
"display_name": "addressed by decision",
|
|
164
|
+
"category": "data_flow",
|
|
165
|
+
"source_kinds": ["framework-gaps"],
|
|
166
|
+
"target_kinds": ["decisions"]
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"canonical_id": "gap_addressed_by_feature",
|
|
170
|
+
"display_name": "addressed by feature",
|
|
171
|
+
"category": "data_flow",
|
|
172
|
+
"source_kinds": ["framework-gaps"],
|
|
173
|
+
"target_kinds": ["features"]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"canonical_id": "gap_relates_to_issue",
|
|
177
|
+
"display_name": "relates to issue",
|
|
178
|
+
"category": "data_flow",
|
|
179
|
+
"source_kinds": ["framework-gaps"],
|
|
180
|
+
"target_kinds": ["issues"]
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"canonical_id": "feature_depends_on_item",
|
|
184
|
+
"display_name": "depends on item",
|
|
185
|
+
"category": "ordering",
|
|
186
|
+
"source_kinds": ["features"],
|
|
187
|
+
"target_kinds": ["*"]
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"canonical_id": "feature_gated_by_item",
|
|
191
|
+
"display_name": "gated by",
|
|
192
|
+
"category": "ordering",
|
|
193
|
+
"source_kinds": ["features"],
|
|
194
|
+
"target_kinds": ["*"]
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"canonical_id": "feature_resolves_issue",
|
|
198
|
+
"display_name": "resolves issue",
|
|
199
|
+
"category": "data_flow",
|
|
200
|
+
"source_kinds": ["features"],
|
|
201
|
+
"target_kinds": ["issues"]
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"canonical_id": "feature_governed_by_decision",
|
|
205
|
+
"display_name": "governed by decision",
|
|
206
|
+
"category": "data_flow",
|
|
207
|
+
"source_kinds": ["features"],
|
|
208
|
+
"target_kinds": ["decisions"]
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"canonical_id": "story_depends_on_story",
|
|
212
|
+
"display_name": "story depends on story",
|
|
213
|
+
"category": "ordering",
|
|
214
|
+
"source_kinds": ["story"],
|
|
215
|
+
"target_kinds": ["story"]
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"canonical_id": "story_gated_by_item",
|
|
219
|
+
"display_name": "story gated by",
|
|
220
|
+
"category": "ordering",
|
|
221
|
+
"source_kinds": ["story"],
|
|
222
|
+
"target_kinds": ["*"]
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"canonical_id": "task_depends_on_task",
|
|
226
|
+
"display_name": "depends on task",
|
|
227
|
+
"category": "ordering",
|
|
228
|
+
"source_kinds": ["tasks"],
|
|
229
|
+
"target_kinds": ["tasks"]
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"canonical_id": "requirement_depends_on_requirement",
|
|
233
|
+
"display_name": "depends on requirement",
|
|
234
|
+
"category": "ordering",
|
|
235
|
+
"source_kinds": ["requirements"],
|
|
236
|
+
"target_kinds": ["requirements"]
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"canonical_id": "research_supersedes_research",
|
|
240
|
+
"display_name": "research supersedes research",
|
|
241
|
+
"category": "ordering",
|
|
242
|
+
"source_kinds": ["research"],
|
|
243
|
+
"target_kinds": ["research"]
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"canonical_id": "research_informs_item",
|
|
247
|
+
"display_name": "informs item",
|
|
248
|
+
"category": "data_flow",
|
|
249
|
+
"source_kinds": ["research"],
|
|
250
|
+
"target_kinds": ["*"]
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"canonical_id": "research_relates_to_research",
|
|
254
|
+
"display_name": "relates to research",
|
|
255
|
+
"category": "data_flow",
|
|
256
|
+
"source_kinds": ["research"],
|
|
257
|
+
"target_kinds": ["research"]
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"canonical_id": "review_targets_item",
|
|
261
|
+
"display_name": "review targets",
|
|
262
|
+
"category": "membership",
|
|
263
|
+
"source_kinds": ["spec-reviews"],
|
|
264
|
+
"target_kinds": ["*"]
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"canonical_id": "verification_verifies_item",
|
|
268
|
+
"display_name": "verifies",
|
|
269
|
+
"category": "data_flow",
|
|
270
|
+
"source_kinds": ["verification"],
|
|
271
|
+
"target_kinds": ["*"]
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"canonical_id": "task_positioned_in_phase",
|
|
275
|
+
"display_name": "positioned in phase",
|
|
276
|
+
"category": "membership",
|
|
277
|
+
"source_kinds": ["tasks"],
|
|
278
|
+
"target_kinds": ["phase"]
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"canonical_id": "feature_contains_story",
|
|
282
|
+
"display_name": "contains story",
|
|
283
|
+
"category": "membership",
|
|
284
|
+
"source_kinds": ["features"],
|
|
285
|
+
"target_kinds": ["story"]
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"canonical_id": "story_contains_task",
|
|
289
|
+
"display_name": "contains task",
|
|
290
|
+
"category": "membership",
|
|
291
|
+
"source_kinds": ["story"],
|
|
292
|
+
"target_kinds": ["tasks"]
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"canonical_id": "rationale_supports_decision",
|
|
296
|
+
"display_name": "supports decision",
|
|
297
|
+
"category": "data_flow",
|
|
298
|
+
"source_kinds": ["rationale"],
|
|
299
|
+
"target_kinds": ["decisions"]
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"canonical_id": "task_addresses_gap",
|
|
303
|
+
"display_name": "addresses gap",
|
|
304
|
+
"category": "data_flow",
|
|
305
|
+
"source_kinds": ["tasks"],
|
|
306
|
+
"target_kinds": ["framework-gaps"]
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"canonical_id": "task_addresses_feature",
|
|
310
|
+
"display_name": "addresses feature",
|
|
311
|
+
"category": "data_flow",
|
|
312
|
+
"source_kinds": ["tasks"],
|
|
313
|
+
"target_kinds": ["features"]
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"canonical_id": "task_governed_by_decision",
|
|
317
|
+
"display_name": "governed by decision",
|
|
318
|
+
"category": "data_flow",
|
|
319
|
+
"source_kinds": ["tasks"],
|
|
320
|
+
"target_kinds": ["decisions"]
|
|
321
|
+
}
|
|
322
|
+
],
|
|
323
|
+
"lenses": [
|
|
324
|
+
{
|
|
325
|
+
"id": "tasks-by-status",
|
|
326
|
+
"kind": "target",
|
|
327
|
+
"target": "tasks",
|
|
328
|
+
"derived_from_field": "status",
|
|
329
|
+
"bins": [
|
|
330
|
+
"planned",
|
|
331
|
+
"in-progress",
|
|
332
|
+
"completed",
|
|
333
|
+
"blocked",
|
|
334
|
+
"cancelled"
|
|
335
|
+
]
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"id": "gaps-by-status",
|
|
339
|
+
"kind": "target",
|
|
340
|
+
"target": "framework-gaps",
|
|
341
|
+
"derived_from_field": "status",
|
|
342
|
+
"bins": [
|
|
343
|
+
"identified",
|
|
344
|
+
"accepted",
|
|
345
|
+
"in-progress",
|
|
346
|
+
"closed",
|
|
347
|
+
"wontfix"
|
|
348
|
+
]
|
|
349
|
+
}
|
|
350
|
+
],
|
|
351
|
+
"layers": [],
|
|
352
|
+
"status_buckets": {},
|
|
353
|
+
"installed_schemas": [
|
|
354
|
+
"decisions",
|
|
355
|
+
"framework-gaps",
|
|
356
|
+
"tasks",
|
|
357
|
+
"verification",
|
|
358
|
+
"issues",
|
|
359
|
+
"features",
|
|
360
|
+
"research",
|
|
361
|
+
"rationale",
|
|
362
|
+
"spec-reviews",
|
|
363
|
+
"layer-plans",
|
|
364
|
+
"requirements",
|
|
365
|
+
"conventions",
|
|
366
|
+
"context-contracts",
|
|
367
|
+
"phase",
|
|
368
|
+
"story"
|
|
369
|
+
],
|
|
370
|
+
"installed_blocks": [
|
|
371
|
+
"decisions",
|
|
372
|
+
"framework-gaps",
|
|
373
|
+
"tasks",
|
|
374
|
+
"verification",
|
|
375
|
+
"issues",
|
|
376
|
+
"features",
|
|
377
|
+
"research",
|
|
378
|
+
"rationale",
|
|
379
|
+
"spec-reviews",
|
|
380
|
+
"layer-plans",
|
|
381
|
+
"requirements",
|
|
382
|
+
"conventions",
|
|
383
|
+
"context-contracts",
|
|
384
|
+
"phase",
|
|
385
|
+
"story"
|
|
386
|
+
],
|
|
387
|
+
"invariants": [
|
|
388
|
+
{
|
|
389
|
+
"id": "completed-task-has-verification",
|
|
390
|
+
"class": "requires-edge",
|
|
391
|
+
"block": "tasks",
|
|
392
|
+
"where": {
|
|
393
|
+
"status": "completed"
|
|
394
|
+
},
|
|
395
|
+
"relation_types": [
|
|
396
|
+
"verification_verifies_item"
|
|
397
|
+
],
|
|
398
|
+
"direction": "as_child",
|
|
399
|
+
"severity": "error",
|
|
400
|
+
"message": "Completed task '{id}' has no verification edge (verification_verifies_item)"
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
"id": "decision-cites-forcing-artifact",
|
|
404
|
+
"class": "requires-edge",
|
|
405
|
+
"block": "decisions",
|
|
406
|
+
"relation_types": [
|
|
407
|
+
"decision_addresses_issue",
|
|
408
|
+
"decision_addresses_feature",
|
|
409
|
+
"decision_addresses_gap"
|
|
410
|
+
],
|
|
411
|
+
"direction": "as_parent",
|
|
412
|
+
"severity": "error",
|
|
413
|
+
"message": "Decision '{id}' cites no forcing artifact (decision_addresses_issue|feature|gap edge)"
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"id": "task-completed-gap-closed",
|
|
417
|
+
"class": "status-consistency",
|
|
418
|
+
"block": "tasks",
|
|
419
|
+
"relation_types": [
|
|
420
|
+
"task_addresses_gap"
|
|
421
|
+
],
|
|
422
|
+
"direction": "as_parent",
|
|
423
|
+
"when_bucket": "complete",
|
|
424
|
+
"require_target_bucket": "complete",
|
|
425
|
+
"severity": "warning",
|
|
426
|
+
"message": "Completed task '{id}' addresses a gap that is not closed"
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"id": "task-completed-feature-complete",
|
|
430
|
+
"class": "status-consistency",
|
|
431
|
+
"block": "tasks",
|
|
432
|
+
"relation_types": [
|
|
433
|
+
"task_addresses_feature"
|
|
434
|
+
],
|
|
435
|
+
"direction": "as_parent",
|
|
436
|
+
"when_bucket": "complete",
|
|
437
|
+
"require_target_bucket": "complete",
|
|
438
|
+
"severity": "warning",
|
|
439
|
+
"message": "Completed task '{id}' addresses a feature that is not complete"
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"id": "verification-passed-task-complete",
|
|
443
|
+
"class": "status-consistency",
|
|
444
|
+
"block": "verification",
|
|
445
|
+
"relation_types": [
|
|
446
|
+
"verification_verifies_item"
|
|
447
|
+
],
|
|
448
|
+
"direction": "as_parent",
|
|
449
|
+
"when_bucket": "complete",
|
|
450
|
+
"require_target_bucket": "complete",
|
|
451
|
+
"severity": "error",
|
|
452
|
+
"message": "Passed verification '{id}' verifies a task that is not completed"
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"id": "task-not-on-superseded-decision",
|
|
456
|
+
"class": "status-consistency",
|
|
457
|
+
"block": "tasks",
|
|
458
|
+
"relation_types": [
|
|
459
|
+
"task_governed_by_decision"
|
|
460
|
+
],
|
|
461
|
+
"direction": "as_parent",
|
|
462
|
+
"forbid_target_bucket": "unknown",
|
|
463
|
+
"severity": "warning",
|
|
464
|
+
"message": "Task '{id}' is governed by a superseded or cancelled decision"
|
|
465
|
+
}
|
|
466
|
+
]
|
|
467
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "pi-context://schemas/context-contracts",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"title": "Context contracts",
|
|
6
|
+
"description": "Per-work-unit-kind context contracts declaring which relation_types compose the execution bundle (DEC-0017 surface; FGAP-030 closure). Each contract is keyed by a plain-string unit_kind type tag (carve-out from DEC-0013's edges-only constraint — unit_kind is a type marker, not a reference to a substrate item).",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"required": [
|
|
9
|
+
"contracts"
|
|
10
|
+
],
|
|
11
|
+
"additionalProperties": false,
|
|
12
|
+
"properties": {
|
|
13
|
+
"contracts": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"items": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"required": [
|
|
18
|
+
"id",
|
|
19
|
+
"unit_kind",
|
|
20
|
+
"bundle_relation_types",
|
|
21
|
+
"created_by",
|
|
22
|
+
"created_at"
|
|
23
|
+
],
|
|
24
|
+
"additionalProperties": false,
|
|
25
|
+
"properties": {
|
|
26
|
+
"id": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"pattern": "^CTX-\\d{3,}$"
|
|
29
|
+
},
|
|
30
|
+
"unit_kind": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"description": "Type tag for the unit kind this contract composes context for (e.g. 'task', 'decision', 'verification'). Plain-string keyed lookup — NOT a substrate-block-item reference (DEC-0013 carve-out for type tags)."
|
|
33
|
+
},
|
|
34
|
+
"bundle_relation_types": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"items": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"required": [
|
|
39
|
+
"relation_type",
|
|
40
|
+
"direction",
|
|
41
|
+
"max_depth"
|
|
42
|
+
],
|
|
43
|
+
"additionalProperties": false,
|
|
44
|
+
"properties": {
|
|
45
|
+
"relation_type": {
|
|
46
|
+
"type": "string"
|
|
47
|
+
},
|
|
48
|
+
"direction": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"enum": [
|
|
51
|
+
"in",
|
|
52
|
+
"out",
|
|
53
|
+
"both"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"max_depth": {
|
|
57
|
+
"type": "integer",
|
|
58
|
+
"minimum": 1
|
|
59
|
+
},
|
|
60
|
+
"applicability_predicate": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"description": "Optional FGAP-010 territory; reserved for relevance-scoping language."
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"description": {
|
|
68
|
+
"type": "string"
|
|
69
|
+
},
|
|
70
|
+
"notes": {
|
|
71
|
+
"type": "string"
|
|
72
|
+
},
|
|
73
|
+
"created_by": {
|
|
74
|
+
"type": "string"
|
|
75
|
+
},
|
|
76
|
+
"created_at": {
|
|
77
|
+
"type": "string"
|
|
78
|
+
},
|
|
79
|
+
"modified_by": {
|
|
80
|
+
"type": "string"
|
|
81
|
+
},
|
|
82
|
+
"modified_at": {
|
|
83
|
+
"type": "string"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "pi-context://schemas/conventions",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"title": "Conventions",
|
|
6
|
+
"description": "Code and process conventions the project follows. Rules with enforcement methods (lint, review, test) that agents must comply with when writing code. Injected into agent prompts as constraints.",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"required": ["rules"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"rules": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"items": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"required": ["id", "description", "enforcement", "severity"],
|
|
15
|
+
"properties": {
|
|
16
|
+
"id": { "type": "string" },
|
|
17
|
+
"description": { "type": "string", "x-prompt-budget": { "tokens": 1000, "words": 800 } },
|
|
18
|
+
"enforcement": { "type": "string", "enum": ["lint", "test", "review", "manual"] },
|
|
19
|
+
"severity": { "type": "string", "enum": ["error", "warning", "info"] }
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"test_conventions": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"required": ["runner_command", "file_pattern"],
|
|
26
|
+
"properties": {
|
|
27
|
+
"runner_command": { "type": "string" },
|
|
28
|
+
"file_pattern": { "type": "string" }
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"lint_command": { "type": "string" },
|
|
32
|
+
"lint_scope": { "type": "string" }
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "pi-context://schemas/decisions",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"title": "Decisions",
|
|
6
|
+
"description": "Live decision log; each entry is open, enacted, or superseded, with supporting references and intra-item options.",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"required": ["decisions"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"decisions": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"items": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"required": ["id", "title", "status", "context", "decision", "consequences", "created_by", "created_at"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"id": { "type": "string", "pattern": "^DEC-\\d{4}$" },
|
|
18
|
+
"title": { "type": "string" },
|
|
19
|
+
"status": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"enum": ["open", "enacted", "superseded"],
|
|
22
|
+
"description": "open = decision needs to be made; gates work. enacted = ratified by user authority; new constraint is in code and forward-looking constraint blocks. superseded = withdrawn without enactment; the entry was filed under proliferation pressure or on incorrect framing and is acknowledged as not-a-real-decision. Reasoning for supersession lives in consequences. Entry is preserved; not deleted."
|
|
23
|
+
},
|
|
24
|
+
"context": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "Forces at play; what must be resolved and why. Grounded in citations to the forcing artifact and supporting research.",
|
|
27
|
+
"x-prompt-budget": { "tokens": 1000, "words": 800 }
|
|
28
|
+
},
|
|
29
|
+
"decision": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"description": "The chosen direction. Populated at creation as the proposed direction and edited if needed at the moment of enactment. Only mandate-compliant, structurally-correct candidates appear here.",
|
|
32
|
+
"x-prompt-budget": { "tokens": 1000, "words": 800 }
|
|
33
|
+
},
|
|
34
|
+
"options_considered": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"description": "Populated only when multiple mandate-compliant candidates genuinely compete for user choice. Mandate-violating or structurally-wrong candidates are never listed.",
|
|
37
|
+
"items": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"additionalProperties": false,
|
|
40
|
+
"required": ["label", "description"],
|
|
41
|
+
"properties": {
|
|
42
|
+
"label": { "type": "string" },
|
|
43
|
+
"description": { "type": "string" },
|
|
44
|
+
"tradeoffs": { "type": "string" },
|
|
45
|
+
"rejected_reason": { "type": "string", "description": "Populated only post-enactment for the non-chosen options." }
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"consequences": {
|
|
50
|
+
"type": "array",
|
|
51
|
+
"items": { "type": "string", "x-prompt-budget": { "tokens": 1000, "words": 800 } },
|
|
52
|
+
"description": "What follows from the decision if enacted — what becomes easier, harder, or impossible; which constraint blocks or code files change."
|
|
53
|
+
},
|
|
54
|
+
"references": {
|
|
55
|
+
"type": "array",
|
|
56
|
+
"description": "Supporting references: code paths (file + lines), research documents, commit SHAs that enacted the decision, external specs. Each reference is a labeled pointer.",
|
|
57
|
+
"items": {
|
|
58
|
+
"type": "object",
|
|
59
|
+
"additionalProperties": false,
|
|
60
|
+
"required": ["label"],
|
|
61
|
+
"properties": {
|
|
62
|
+
"label": { "type": "string" },
|
|
63
|
+
"path": { "type": "string" },
|
|
64
|
+
"lines": { "type": "string" },
|
|
65
|
+
"commit": { "type": "string" }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"created_by": { "type": "string" },
|
|
70
|
+
"created_at": { "type": "string" },
|
|
71
|
+
"enacted_by": { "type": "string", "description": "User identifier; populated on status transition to enacted. Requires user authority." },
|
|
72
|
+
"enacted_at": { "type": "string" }
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"x-lifecycle": {
|
|
78
|
+
"field": "status",
|
|
79
|
+
"states": ["open", "enacted", "superseded"],
|
|
80
|
+
"transitions": [
|
|
81
|
+
{ "from": "open", "to": "enacted", "required_authority": "user", "note": "Enactment updates forward-looking constraint blocks and lands code change; entry is NOT removed on enactment." },
|
|
82
|
+
{ "from": "enacted", "to": "open", "required_authority": "user", "note": "Reopening for revision; creates a new open state on the existing entry rather than a new entry. Alternative pattern: create a new decision entry with a decision_supersedes_decision edge referencing this one." },
|
|
83
|
+
{ "from": "open", "to": "superseded", "required_authority": "user", "note": "Withdrawal of an entry that was filed under proliferation pressure or on incorrect framing. Reasoning lives in consequences. Used when the entry is acknowledged as not-a-real-decision rather than enacted." }
|
|
84
|
+
],
|
|
85
|
+
"note": "Three-state lifecycle. AJV draft-07 cannot enforce transition validity or required_authority; this block is metadata for future framework-level state-machine validation (FGAP-005) and authorship attestation (FGAP-004)."
|
|
86
|
+
}
|
|
87
|
+
}
|