task-pipeline-skill 1.98.0 → 1.99.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 +230 -0
- package/README.md +1 -1
- package/SKILL-CARD.md +1 -1
- package/package.json +1 -1
- package/plugins/task-pipeline/.claude-plugin/plugin.json +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/pipeline.schema.json +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/build.md +15 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/continuity.md +6 -3
- package/plugins/task-pipeline/skills/task-pipeline/references/iteration.md +168 -9
- package/plugins/task-pipeline/skills/task-pipeline/references/retrospective.md +2 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/stages.md +5 -8
- package/plugins/task-pipeline/skills/task-pipeline/references/waves.md +2 -1
- package/plugins/task-pipeline/skills/task-pipeline/scripts/graph.py +2 -1
- package/plugins/task-pipeline/skills/task-pipeline/scripts/lessons.py +1229 -110
- package/plugins/task-pipeline/skills/task-pipeline/templates/lesson.schema.json +38 -10
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"maximum": 3
|
|
52
52
|
},
|
|
53
53
|
"stages": {
|
|
54
|
-
"description": "The stage that owned the failure and the stage that surfaced it. A profile's stage ids need not be numbers.",
|
|
54
|
+
"description": "The stage that owned the failure and the stage that surfaced it. A profile's stage ids need not be numbers; a string id is one line of at most 32 characters, not blank, and gets the text fields' checks (no path, URL or credential shape). A longer or ill-shaped id an older index holds is normalised when read, never set aside.",
|
|
55
55
|
"type": "object",
|
|
56
56
|
"additionalProperties": false,
|
|
57
57
|
"required": [
|
|
@@ -63,13 +63,19 @@
|
|
|
63
63
|
"type": [
|
|
64
64
|
"integer",
|
|
65
65
|
"string"
|
|
66
|
-
]
|
|
66
|
+
],
|
|
67
|
+
"minLength": 1,
|
|
68
|
+
"maxLength": 32,
|
|
69
|
+
"pattern": "\\S"
|
|
67
70
|
},
|
|
68
71
|
"surfaced": {
|
|
69
72
|
"type": [
|
|
70
73
|
"integer",
|
|
71
74
|
"string"
|
|
72
|
-
]
|
|
75
|
+
],
|
|
76
|
+
"minLength": 1,
|
|
77
|
+
"maxLength": 32,
|
|
78
|
+
"pattern": "\\S"
|
|
73
79
|
}
|
|
74
80
|
}
|
|
75
81
|
},
|
|
@@ -96,7 +102,7 @@
|
|
|
96
102
|
],
|
|
97
103
|
"properties": {
|
|
98
104
|
"project": {
|
|
99
|
-
"description": "The project's pseudonymous key: `p-` and the first 12 hex digits of the repository's root commit. Never its name: a repository name can be a customer's or a product's (redaction rule 4). The shared store receives the same key, never a `project:<slug>` id.",
|
|
105
|
+
"description": "The project's pseudonymous key: `p-` and the first 12 hex digits of the repository's root commit: the first-parent root of its default branch (origin/HEAD, main, master or the branch init.defaultBranch names; without them the main worktree's HEAD), so every worktree and branch of one repository shares it. Never its name: a repository name can be a customer's or a product's (redaction rule 4). The shared store receives the same key, never a `project:<slug>` id.",
|
|
100
106
|
"type": "string",
|
|
101
107
|
"pattern": "^p-[0-9a-f]{12}$"
|
|
102
108
|
},
|
|
@@ -116,7 +122,7 @@
|
|
|
116
122
|
},
|
|
117
123
|
"$defs": {
|
|
118
124
|
"indexEntry": {
|
|
119
|
-
"description": "One line of the local index (lesson-index/1): one entry per classKey, a pure function of its origins, so a rebuild
|
|
125
|
+
"description": "One line of the local index (lesson-index/1): one entry per classKey, a pure function of its origins, so a complete rebuild of the same retros with nothing carried and no memory id recorded equals the incremental index byte for byte.",
|
|
120
126
|
"type": "object",
|
|
121
127
|
"additionalProperties": false,
|
|
122
128
|
"required": [
|
|
@@ -169,13 +175,13 @@
|
|
|
169
175
|
},
|
|
170
176
|
"seen": {
|
|
171
177
|
"type": "integer",
|
|
172
|
-
"minimum":
|
|
173
|
-
"description": "How many origins hold the class
|
|
178
|
+
"minimum": 0,
|
|
179
|
+
"description": "How many origins hold the class, counting re-derived and temporarily unavailable carried origins — not those carried as `checkout holds another project`."
|
|
174
180
|
},
|
|
175
181
|
"projects": {
|
|
176
182
|
"type": "integer",
|
|
177
|
-
"minimum":
|
|
178
|
-
"description": "How many distinct projects hold it."
|
|
183
|
+
"minimum": 0,
|
|
184
|
+
"description": "How many distinct projects hold it, counted like `seen`: an origin carried as `checkout holds another project` is kept but not counted."
|
|
179
185
|
},
|
|
180
186
|
"status": {
|
|
181
187
|
"enum": [
|
|
@@ -207,7 +213,29 @@
|
|
|
207
213
|
},
|
|
208
214
|
"memory": {
|
|
209
215
|
"type": "string",
|
|
210
|
-
"pattern": "^mem:[^@\\s]+@[0-9]
|
|
216
|
+
"pattern": "^mem:[^@\\s]+@[1-9][0-9]*$",
|
|
217
|
+
"description": "The shared store's id, `mem:<id>@<revision>` with the revision from 1. One id belongs to one (project, classKey): `record` refuses an id another project's or class's origin holds, and one the loader would refuse."
|
|
218
|
+
},
|
|
219
|
+
"carried": {
|
|
220
|
+
"enum": [
|
|
221
|
+
"checkout not read",
|
|
222
|
+
"checkout holds another project",
|
|
223
|
+
"retro file not read",
|
|
224
|
+
"no provenance",
|
|
225
|
+
"commit does not resolve",
|
|
226
|
+
"retro cites a commit that does not resolve",
|
|
227
|
+
"lesson refused",
|
|
228
|
+
"no checkout read holds it",
|
|
229
|
+
"source not read"
|
|
230
|
+
],
|
|
231
|
+
"description": "Set by `rebuild` on every previous origin it did not re-derive: a rebuild never removes or moves anything on its own, and `rebuild --prune-carried` (optionally `--prune-carried-reason`) is the only way an origin leaves the index. The origin keeps everything recorded on it, its memory id included. `checkout holds another project` — every checkout in the provenance now holds another project key AND the origin's own commit does not resolve there — is kept but not counted in seen/projects/status; every other reason is a temporary unavailability and is counted. `source not read` is the round-7 label, still accepted. Cleared when a checkout holding the origin reads it again."
|
|
232
|
+
},
|
|
233
|
+
"checkouts": {
|
|
234
|
+
"type": "array",
|
|
235
|
+
"items": {
|
|
236
|
+
"type": "string"
|
|
237
|
+
},
|
|
238
|
+
"description": "Provenance: the real top-level paths of the checkouts this origin was derived from; they decide only the carried reason, never a removal. Local to this machine's index; never emitted to a store, and not printed by `show`."
|
|
211
239
|
},
|
|
212
240
|
"lesson": {
|
|
213
241
|
"type": "object"
|