@davidorex/pi-context 0.26.0 → 0.28.1
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 +71 -15
- package/README.md +71 -18
- package/dist/block-api.d.ts +165 -18
- package/dist/block-api.d.ts.map +1 -1
- package/dist/block-api.js +800 -57
- package/dist/block-api.js.map +1 -1
- package/dist/citation-rot-scanner.d.ts +80 -0
- package/dist/citation-rot-scanner.d.ts.map +1 -0
- package/dist/citation-rot-scanner.js +421 -0
- package/dist/citation-rot-scanner.js.map +1 -0
- package/dist/content-hash.d.ts +25 -0
- package/dist/content-hash.d.ts.map +1 -0
- package/dist/content-hash.js +62 -0
- package/dist/content-hash.js.map +1 -0
- package/dist/context-dir.d.ts +126 -1
- package/dist/context-dir.d.ts.map +1 -1
- package/dist/context-dir.js +208 -4
- package/dist/context-dir.js.map +1 -1
- package/dist/context-registry.d.ts +122 -0
- package/dist/context-registry.d.ts.map +1 -0
- package/dist/context-registry.js +189 -0
- package/dist/context-registry.js.map +1 -0
- package/dist/context-sdk.d.ts +179 -12
- package/dist/context-sdk.d.ts.map +1 -1
- package/dist/context-sdk.js +536 -101
- package/dist/context-sdk.js.map +1 -1
- package/dist/context.d.ts +222 -4
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +244 -56
- package/dist/context.js.map +1 -1
- package/dist/git-env.d.ts +2 -0
- package/dist/git-env.d.ts.map +1 -0
- package/dist/git-env.js +29 -0
- package/dist/git-env.js.map +1 -0
- package/dist/index.d.ts +124 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +440 -1125
- package/dist/index.js.map +1 -1
- package/dist/lens-view.d.ts.map +1 -1
- package/dist/lens-view.js +5 -3
- package/dist/lens-view.js.map +1 -1
- package/dist/migration-registry-loader.d.ts +121 -0
- package/dist/migration-registry-loader.d.ts.map +1 -0
- package/dist/migration-registry-loader.js +309 -0
- package/dist/migration-registry-loader.js.map +1 -0
- package/dist/migrations-store.d.ts +141 -0
- package/dist/migrations-store.d.ts.map +1 -0
- package/dist/migrations-store.js +206 -0
- package/dist/migrations-store.js.map +1 -0
- package/dist/object-store.d.ts +26 -0
- package/dist/object-store.d.ts.map +1 -0
- package/dist/object-store.js +104 -0
- package/dist/object-store.js.map +1 -0
- package/dist/ops-registry.d.ts +44 -0
- package/dist/ops-registry.d.ts.map +1 -0
- package/dist/ops-registry.js +1223 -0
- package/dist/ops-registry.js.map +1 -0
- package/dist/orientation.d.ts +16 -0
- package/dist/orientation.d.ts.map +1 -0
- package/dist/orientation.js +49 -0
- package/dist/orientation.js.map +1 -0
- package/dist/promote-item.d.ts +28 -0
- package/dist/promote-item.d.ts.map +1 -0
- package/dist/promote-item.js +257 -0
- package/dist/promote-item.js.map +1 -0
- package/dist/read-element.d.ts +129 -0
- package/dist/read-element.d.ts.map +1 -0
- package/dist/read-element.js +296 -0
- package/dist/read-element.js.map +1 -0
- package/dist/rename-canonical-id.d.ts.map +1 -1
- package/dist/rename-canonical-id.js +22 -13
- package/dist/rename-canonical-id.js.map +1 -1
- package/dist/roadmap-plan.d.ts.map +1 -1
- package/dist/roadmap-plan.js +23 -13
- package/dist/roadmap-plan.js.map +1 -1
- package/dist/schema-validator.d.ts +1 -0
- package/dist/schema-validator.d.ts.map +1 -1
- package/dist/schema-validator.js +7 -3
- package/dist/schema-validator.js.map +1 -1
- package/dist/schema-write.d.ts +78 -4
- package/dist/schema-write.d.ts.map +1 -1
- package/dist/schema-write.js +297 -34
- package/dist/schema-write.js.map +1 -1
- package/dist/status-vocab.d.ts +1 -0
- package/dist/status-vocab.d.ts.map +1 -1
- package/dist/status-vocab.js +4 -0
- package/dist/status-vocab.js.map +1 -1
- package/dist/truncate.d.ts +34 -0
- package/dist/truncate.d.ts.map +1 -0
- package/dist/truncate.js +85 -0
- package/dist/truncate.js.map +1 -0
- package/dist/write-schema-migration-tool.d.ts +46 -0
- package/dist/write-schema-migration-tool.d.ts.map +1 -0
- package/dist/write-schema-migration-tool.js +115 -0
- package/dist/write-schema-migration-tool.js.map +1 -0
- package/package.json +35 -2
- package/samples/blocks/work-orders.json +3 -0
- package/samples/conception.json +22 -3
- package/samples/migrations.json +133 -0
- package/samples/schemas/context-contracts.schema.json +19 -4
- package/samples/schemas/conventions.schema.json +68 -12
- package/samples/schemas/decisions.schema.json +125 -28
- package/samples/schemas/features.schema.json +140 -26
- package/samples/schemas/framework-gaps.schema.json +171 -26
- package/samples/schemas/issues.schema.json +86 -13
- package/samples/schemas/layer-plans.schema.json +195 -35
- package/samples/schemas/phase.schema.json +18 -3
- package/samples/schemas/rationale.schema.json +37 -7
- package/samples/schemas/requirements.schema.json +77 -10
- package/samples/schemas/research.schema.json +169 -36
- package/samples/schemas/spec-reviews.schema.json +88 -18
- package/samples/schemas/story.schema.json +18 -3
- package/samples/schemas/tasks.schema.json +66 -10
- package/samples/schemas/verification.schema.json +70 -12
- package/samples/schemas/work-orders.schema.json +195 -0
- package/schemas/bootstrap.schema.json +18 -6
- package/schemas/config.schema.json +58 -26
- package/schemas/context-registry.schema.json +46 -0
- package/schemas/migrations.schema.json +123 -0
- package/schemas/relations.schema.json +41 -10
- package/skill-narrative.md +42 -21
- package/skills/pi-context/SKILL.md +159 -65
- package/skills/pi-context/references/bundled-resources.md +7 -2
|
@@ -1,35 +1,112 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "pi-context://schemas/features",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.1",
|
|
5
5
|
"title": "Features",
|
|
6
6
|
"description": "L3 Work layer. Features with their own scope, acceptance criteria, and status lifecycle. A feature is atomically composable into prompt context as a self-contained unit of work.",
|
|
7
7
|
"type": "object",
|
|
8
|
-
"required": [
|
|
8
|
+
"required": [
|
|
9
|
+
"features"
|
|
10
|
+
],
|
|
9
11
|
"properties": {
|
|
10
12
|
"features": {
|
|
11
13
|
"type": "array",
|
|
12
14
|
"items": {
|
|
13
15
|
"type": "object",
|
|
14
16
|
"additionalProperties": false,
|
|
15
|
-
"required": [
|
|
17
|
+
"required": [
|
|
18
|
+
"id",
|
|
19
|
+
"title",
|
|
20
|
+
"status",
|
|
21
|
+
"layer",
|
|
22
|
+
"description",
|
|
23
|
+
"acceptance_criteria",
|
|
24
|
+
"created_by",
|
|
25
|
+
"created_at"
|
|
26
|
+
],
|
|
16
27
|
"properties": {
|
|
17
|
-
"id": {
|
|
18
|
-
|
|
28
|
+
"id": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"pattern": "^FEAT-\\d{3}$"
|
|
31
|
+
},
|
|
32
|
+
"title": {
|
|
33
|
+
"type": "string"
|
|
34
|
+
},
|
|
19
35
|
"status": {
|
|
20
36
|
"type": "string",
|
|
21
|
-
"enum": [
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
|
|
37
|
+
"enum": [
|
|
38
|
+
"proposed",
|
|
39
|
+
"approved",
|
|
40
|
+
"in-progress",
|
|
41
|
+
"in-review",
|
|
42
|
+
"complete",
|
|
43
|
+
"blocked",
|
|
44
|
+
"cancelled"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
"layer": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"enum": [
|
|
50
|
+
"L1",
|
|
51
|
+
"L2",
|
|
52
|
+
"L3",
|
|
53
|
+
"L4",
|
|
54
|
+
"L5"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"description": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"x-prompt-budget": {
|
|
60
|
+
"tokens": 1000,
|
|
61
|
+
"words": 800
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"motivation": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"x-prompt-budget": {
|
|
67
|
+
"tokens": 1000,
|
|
68
|
+
"words": 800
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"acceptance_criteria": {
|
|
72
|
+
"type": "array",
|
|
73
|
+
"items": {
|
|
74
|
+
"type": "string"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"created_by": {
|
|
78
|
+
"type": "string"
|
|
79
|
+
},
|
|
80
|
+
"created_at": {
|
|
81
|
+
"type": "string"
|
|
82
|
+
},
|
|
83
|
+
"modified_by": {
|
|
84
|
+
"type": "string"
|
|
85
|
+
},
|
|
86
|
+
"modified_at": {
|
|
87
|
+
"type": "string"
|
|
88
|
+
},
|
|
89
|
+
"approved_by": {
|
|
90
|
+
"type": "string"
|
|
91
|
+
},
|
|
92
|
+
"approved_at": {
|
|
93
|
+
"type": "string"
|
|
94
|
+
},
|
|
95
|
+
"oid": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"pattern": "^[0-9a-f]{32}$",
|
|
98
|
+
"description": "Content-independent substrate-stable item identity (content-addressed substrate identity, Cycle 3). Minted once at item birth via mintOid(substrate_id); immutable across content versions. Optional in the schema so pre-Cycle-3 items validate; stamped on next write."
|
|
99
|
+
},
|
|
100
|
+
"content_hash": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"pattern": "^[0-9a-f]{64}$",
|
|
103
|
+
"description": "SHA-256 (hex) of the RFC-8785-canonical content projection of this item (metadata fields excluded). Recomputed on every stamping write; moves with content, stable across metadata-only churn."
|
|
104
|
+
},
|
|
105
|
+
"content_parent": {
|
|
106
|
+
"type": "string",
|
|
107
|
+
"pattern": "^[0-9a-f]{64}$",
|
|
108
|
+
"description": "content_hash of the immediately-prior version of this item; set on a content-changing update, absent on the first (v1) version. Forms the per-item content version chain."
|
|
109
|
+
}
|
|
33
110
|
}
|
|
34
111
|
}
|
|
35
112
|
}
|
|
@@ -37,17 +114,54 @@
|
|
|
37
114
|
"x-lifecycle": {
|
|
38
115
|
"feature": {
|
|
39
116
|
"field": "status",
|
|
40
|
-
"states": [
|
|
117
|
+
"states": [
|
|
118
|
+
"proposed",
|
|
119
|
+
"approved",
|
|
120
|
+
"in-progress",
|
|
121
|
+
"in-review",
|
|
122
|
+
"complete",
|
|
123
|
+
"blocked",
|
|
124
|
+
"cancelled"
|
|
125
|
+
],
|
|
41
126
|
"transitions": [
|
|
42
|
-
{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
{
|
|
127
|
+
{
|
|
128
|
+
"from": "proposed",
|
|
129
|
+
"to": "approved",
|
|
130
|
+
"required_authority": "user",
|
|
131
|
+
"precondition": "all gates in terminal state"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"from": "approved",
|
|
135
|
+
"to": "in-progress",
|
|
136
|
+
"required_authority": "any"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"from": "in-progress",
|
|
140
|
+
"to": "in-review",
|
|
141
|
+
"required_authority": "any"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"from": "in-review",
|
|
145
|
+
"to": "complete",
|
|
146
|
+
"required_authority": "any"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"from": "in-progress",
|
|
150
|
+
"to": "blocked",
|
|
151
|
+
"required_authority": "any"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"from": "blocked",
|
|
155
|
+
"to": "in-progress",
|
|
156
|
+
"required_authority": "any"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"from": "proposed",
|
|
160
|
+
"to": "cancelled",
|
|
161
|
+
"required_authority": "user"
|
|
162
|
+
}
|
|
49
163
|
]
|
|
50
164
|
},
|
|
51
|
-
"note": "AJV draft-07 cannot enforce transition validity; this block is metadata for future framework-level state-machine validation
|
|
165
|
+
"note": "AJV draft-07 cannot enforce transition validity; this block is metadata reserved for future framework-level state-machine validation."
|
|
52
166
|
}
|
|
53
167
|
}
|
|
@@ -1,64 +1,209 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "pi-context://schemas/framework-gaps",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.1.1",
|
|
5
5
|
"title": "Framework Gaps",
|
|
6
|
-
"description": "Capability gaps in the framework — pieces that must exist natively for the target model to be expressible as configuration rather than hand-enactment.",
|
|
6
|
+
"description": "Capability gaps in the pi-project-workflows framework — pieces that must exist natively for the target artifact-ownership model to be expressible as configuration rather than hand-enactment. Each gap carries evidence (file + line references), impact, canonical engineering vocabulary for the missing capability, proposed resolution, and lifecycle state. Framework gaps are distinct from feature-level defects: they describe what the framework cannot yet express at all, not bugs in expressible functionality.",
|
|
7
7
|
"type": "object",
|
|
8
|
-
"required": [
|
|
8
|
+
"required": [
|
|
9
|
+
"gaps"
|
|
10
|
+
],
|
|
9
11
|
"properties": {
|
|
10
12
|
"gaps": {
|
|
11
13
|
"type": "array",
|
|
12
14
|
"items": {
|
|
13
15
|
"type": "object",
|
|
14
16
|
"additionalProperties": false,
|
|
15
|
-
"required": [
|
|
17
|
+
"required": [
|
|
18
|
+
"id",
|
|
19
|
+
"title",
|
|
20
|
+
"status",
|
|
21
|
+
"package",
|
|
22
|
+
"description",
|
|
23
|
+
"evidence",
|
|
24
|
+
"impact",
|
|
25
|
+
"proposed_resolution",
|
|
26
|
+
"created_by",
|
|
27
|
+
"created_at"
|
|
28
|
+
],
|
|
16
29
|
"properties": {
|
|
17
|
-
"id": {
|
|
18
|
-
|
|
30
|
+
"id": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"pattern": "^FGAP-\\d{3}$"
|
|
33
|
+
},
|
|
34
|
+
"title": {
|
|
35
|
+
"type": "string"
|
|
36
|
+
},
|
|
19
37
|
"status": {
|
|
20
38
|
"type": "string",
|
|
21
|
-
"enum": [
|
|
39
|
+
"enum": [
|
|
40
|
+
"identified",
|
|
41
|
+
"accepted",
|
|
42
|
+
"in-progress",
|
|
43
|
+
"closed",
|
|
44
|
+
"wontfix",
|
|
45
|
+
"superseded_by"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"priority": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"enum": [
|
|
51
|
+
"P0",
|
|
52
|
+
"P1",
|
|
53
|
+
"P2",
|
|
54
|
+
"P3"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"package": {
|
|
58
|
+
"type": "string"
|
|
59
|
+
},
|
|
60
|
+
"layer": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"enum": [
|
|
63
|
+
"L1",
|
|
64
|
+
"L2",
|
|
65
|
+
"L3",
|
|
66
|
+
"L4",
|
|
67
|
+
"L5"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
"description": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"x-prompt-budget": {
|
|
73
|
+
"tokens": 1000,
|
|
74
|
+
"words": 800
|
|
75
|
+
}
|
|
22
76
|
},
|
|
23
|
-
"priority": { "type": "string", "enum": ["P0", "P1", "P2", "P3"] },
|
|
24
|
-
"package": { "type": "string" },
|
|
25
|
-
"layer": { "type": "string", "enum": ["L1", "L2", "L3", "L4", "L5"] },
|
|
26
|
-
"description": { "type": "string", "x-prompt-budget": { "tokens": 1000, "words": 800 } },
|
|
27
77
|
"evidence": {
|
|
28
78
|
"type": "array",
|
|
29
79
|
"items": {
|
|
30
80
|
"type": "object",
|
|
31
81
|
"additionalProperties": false,
|
|
32
|
-
"required": [
|
|
82
|
+
"required": [
|
|
83
|
+
"file",
|
|
84
|
+
"reference"
|
|
85
|
+
],
|
|
33
86
|
"properties": {
|
|
34
|
-
"file": {
|
|
35
|
-
|
|
36
|
-
|
|
87
|
+
"file": {
|
|
88
|
+
"type": "string"
|
|
89
|
+
},
|
|
90
|
+
"lines": {
|
|
91
|
+
"type": "string"
|
|
92
|
+
},
|
|
93
|
+
"reference": {
|
|
94
|
+
"type": "string",
|
|
95
|
+
"description": "What specifically at this location demonstrates the gap",
|
|
96
|
+
"x-prompt-budget": {
|
|
97
|
+
"tokens": 1000,
|
|
98
|
+
"words": 800
|
|
99
|
+
}
|
|
100
|
+
}
|
|
37
101
|
}
|
|
38
102
|
}
|
|
39
103
|
},
|
|
40
|
-
"impact": {
|
|
104
|
+
"impact": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"x-prompt-budget": {
|
|
107
|
+
"tokens": 1000,
|
|
108
|
+
"words": 800
|
|
109
|
+
}
|
|
110
|
+
},
|
|
41
111
|
"canonical_vocabulary": {
|
|
42
112
|
"type": "string",
|
|
43
113
|
"description": "The established engineering term for the capability that is missing"
|
|
44
114
|
},
|
|
45
|
-
"proposed_resolution": {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
115
|
+
"proposed_resolution": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"x-prompt-budget": {
|
|
118
|
+
"tokens": 1000,
|
|
119
|
+
"words": 800
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"related_features": {
|
|
123
|
+
"type": "array",
|
|
124
|
+
"items": {
|
|
125
|
+
"type": "string"
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"related_decisions": {
|
|
129
|
+
"type": "array",
|
|
130
|
+
"items": {
|
|
131
|
+
"type": "string"
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"related_issues": {
|
|
135
|
+
"type": "array",
|
|
136
|
+
"items": {
|
|
137
|
+
"type": "string"
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"created_by": {
|
|
141
|
+
"type": "string"
|
|
142
|
+
},
|
|
143
|
+
"created_at": {
|
|
144
|
+
"type": "string"
|
|
145
|
+
},
|
|
146
|
+
"closed_by": {
|
|
147
|
+
"type": "string"
|
|
148
|
+
},
|
|
149
|
+
"closed_at": {
|
|
150
|
+
"type": "string"
|
|
151
|
+
},
|
|
152
|
+
"oid": {
|
|
153
|
+
"type": "string",
|
|
154
|
+
"pattern": "^[0-9a-f]{32}$",
|
|
155
|
+
"description": "Content-independent substrate-stable item identity (content-addressed substrate identity, Cycle 3). Minted once at item birth via mintOid(substrate_id); immutable across content versions. Optional in the schema so pre-Cycle-3 items validate; stamped on next write."
|
|
156
|
+
},
|
|
157
|
+
"content_hash": {
|
|
158
|
+
"type": "string",
|
|
159
|
+
"pattern": "^[0-9a-f]{64}$",
|
|
160
|
+
"description": "SHA-256 (hex) of the RFC-8785-canonical content projection of this item (metadata fields excluded). Recomputed on every stamping write; moves with content, stable across metadata-only churn."
|
|
161
|
+
},
|
|
162
|
+
"content_parent": {
|
|
163
|
+
"type": "string",
|
|
164
|
+
"pattern": "^[0-9a-f]{64}$",
|
|
165
|
+
"description": "content_hash of the immediately-prior version of this item; set on a content-changing update, absent on the first (v1) version. Forms the per-item content version chain."
|
|
166
|
+
}
|
|
50
167
|
}
|
|
51
168
|
}
|
|
52
169
|
}
|
|
53
170
|
},
|
|
54
171
|
"x-lifecycle": {
|
|
55
172
|
"field": "status",
|
|
56
|
-
"states": [
|
|
173
|
+
"states": [
|
|
174
|
+
"identified",
|
|
175
|
+
"accepted",
|
|
176
|
+
"in-progress",
|
|
177
|
+
"closed",
|
|
178
|
+
"wontfix",
|
|
179
|
+
"superseded_by"
|
|
180
|
+
],
|
|
57
181
|
"transitions": [
|
|
58
|
-
{
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
182
|
+
{
|
|
183
|
+
"from": "identified",
|
|
184
|
+
"to": "accepted",
|
|
185
|
+
"required_authority": "user"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"from": "identified",
|
|
189
|
+
"to": "wontfix",
|
|
190
|
+
"required_authority": "user"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"from": "accepted",
|
|
194
|
+
"to": "in-progress",
|
|
195
|
+
"required_authority": "any"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"from": "in-progress",
|
|
199
|
+
"to": "closed",
|
|
200
|
+
"required_authority": "any"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"from": "identified",
|
|
204
|
+
"to": "superseded_by",
|
|
205
|
+
"required_authority": "user"
|
|
206
|
+
}
|
|
62
207
|
]
|
|
63
208
|
}
|
|
64
209
|
}
|
|
@@ -1,37 +1,110 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "pi-context://schemas/issues",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.1",
|
|
5
5
|
"title": "Issues",
|
|
6
6
|
"description": "Known bugs, missing capabilities, design debt, and open work items. Tracked with title/body (GitHub issue pattern), code location, package scope, priority, and resolution lifecycle.",
|
|
7
7
|
"type": "object",
|
|
8
|
-
"required": [
|
|
8
|
+
"required": [
|
|
9
|
+
"issues"
|
|
10
|
+
],
|
|
9
11
|
"properties": {
|
|
10
12
|
"issues": {
|
|
11
13
|
"type": "array",
|
|
12
14
|
"items": {
|
|
13
15
|
"type": "object",
|
|
14
|
-
"required": [
|
|
16
|
+
"required": [
|
|
17
|
+
"id",
|
|
18
|
+
"title",
|
|
19
|
+
"body",
|
|
20
|
+
"location",
|
|
21
|
+
"status",
|
|
22
|
+
"category",
|
|
23
|
+
"priority",
|
|
24
|
+
"package"
|
|
25
|
+
],
|
|
15
26
|
"additionalProperties": false,
|
|
16
27
|
"properties": {
|
|
17
|
-
"id": {
|
|
18
|
-
|
|
28
|
+
"id": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"pattern": "^issue-\\d{3}$"
|
|
31
|
+
},
|
|
32
|
+
"title": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"description": "Scannable one-liner (GitHub issue title pattern)"
|
|
35
|
+
},
|
|
19
36
|
"body": {
|
|
20
37
|
"type": "string",
|
|
21
38
|
"description": "Full detail and context for downstream composition",
|
|
22
|
-
"x-prompt-budget": {
|
|
39
|
+
"x-prompt-budget": {
|
|
40
|
+
"tokens": 1000,
|
|
41
|
+
"words": 800
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"location": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"description": "File path + line number, e.g. packages/pi-workflows/src/dag.ts:219"
|
|
47
|
+
},
|
|
48
|
+
"status": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"enum": [
|
|
51
|
+
"open",
|
|
52
|
+
"resolved",
|
|
53
|
+
"deferred"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"category": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"enum": [
|
|
59
|
+
"primitive",
|
|
60
|
+
"issue",
|
|
61
|
+
"cleanup",
|
|
62
|
+
"capability",
|
|
63
|
+
"composition"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
"priority": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"enum": [
|
|
69
|
+
"low",
|
|
70
|
+
"medium",
|
|
71
|
+
"high",
|
|
72
|
+
"critical"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
"package": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"description": "Which monorepo package this issue touches (e.g. pi-workflows, pi-project, pi-behavior-monitors)"
|
|
23
78
|
},
|
|
24
|
-
"location": { "type": "string", "description": "File path + line number, e.g. packages/pi-workflows/src/dag.ts:219" },
|
|
25
|
-
"status": { "type": "string", "enum": ["open", "resolved", "deferred"] },
|
|
26
|
-
"category": { "type": "string", "enum": ["primitive", "issue", "cleanup", "capability", "composition"] },
|
|
27
|
-
"priority": { "type": "string", "enum": ["low", "medium", "high", "critical"] },
|
|
28
|
-
"package": { "type": "string", "description": "Which monorepo package this issue touches (e.g. pi-workflows, pi-project, pi-behavior-monitors)" },
|
|
29
79
|
"source": {
|
|
30
80
|
"type": "string",
|
|
31
|
-
"enum": [
|
|
81
|
+
"enum": [
|
|
82
|
+
"human",
|
|
83
|
+
"agent",
|
|
84
|
+
"monitor",
|
|
85
|
+
"workflow"
|
|
86
|
+
],
|
|
32
87
|
"description": "How this issue was created"
|
|
33
88
|
},
|
|
34
|
-
"resolved_by": {
|
|
89
|
+
"resolved_by": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"description": "Commit message or reference if resolved"
|
|
92
|
+
},
|
|
93
|
+
"oid": {
|
|
94
|
+
"type": "string",
|
|
95
|
+
"pattern": "^[0-9a-f]{32}$",
|
|
96
|
+
"description": "Content-independent substrate-stable item identity (content-addressed substrate identity, Cycle 3). Minted once at item birth via mintOid(substrate_id); immutable across content versions. Optional in the schema so pre-Cycle-3 items validate; stamped on next write."
|
|
97
|
+
},
|
|
98
|
+
"content_hash": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"pattern": "^[0-9a-f]{64}$",
|
|
101
|
+
"description": "SHA-256 (hex) of the RFC-8785-canonical content projection of this item (metadata fields excluded). Recomputed on every stamping write; moves with content, stable across metadata-only churn."
|
|
102
|
+
},
|
|
103
|
+
"content_parent": {
|
|
104
|
+
"type": "string",
|
|
105
|
+
"pattern": "^[0-9a-f]{64}$",
|
|
106
|
+
"description": "content_hash of the immediately-prior version of this item; set on a content-changing update, absent on the first (v1) version. Forms the per-item content version chain."
|
|
107
|
+
}
|
|
35
108
|
}
|
|
36
109
|
}
|
|
37
110
|
}
|