@bendyline/gilde 0.1.40 → 0.1.41
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/authoring/gstack/overlays/investigate.json +1 -0
- package/authoring/gstack/overlays/qa-only.json +1 -0
- package/authoring/gstack/wave.json +12 -2
- package/authoring/tactical/books/accessibility-retrofit.json +188 -0
- package/authoring/tactical/books/apply-review-findings.json +189 -0
- package/authoring/tactical/books/bug-fix-tdd.json +237 -0
- package/authoring/tactical/books/ci-pipeline.json +168 -0
- package/authoring/tactical/books/codemod-sweep.json +182 -0
- package/authoring/tactical/books/dependency-upgrade.json +196 -0
- package/authoring/tactical/books/flaky-test-fix.json +238 -0
- package/authoring/tactical/books/hotfix-flow.json +187 -0
- package/authoring/tactical/books/perf-optimization.json +219 -0
- package/authoring/tactical/books/refactor-module.json +217 -0
- package/authoring/tactical/books/schema-migration.json +192 -0
- package/authoring/tactical/books/test-suite-backfill.json +172 -0
- package/authoring/tactical/books/type-safety-pass.json +185 -0
- package/authoring/tactical/books/ux-update.json +178 -0
- package/authoring/tactical/evals/accessibility-retrofit.json +230 -0
- package/authoring/tactical/evals/apply-review-findings.json +290 -0
- package/authoring/tactical/evals/bug-fix-tdd.json +221 -0
- package/authoring/tactical/evals/ci-pipeline.json +227 -0
- package/authoring/tactical/evals/codemod-sweep.json +252 -0
- package/authoring/tactical/evals/dependency-upgrade.json +235 -0
- package/authoring/tactical/evals/flaky-test-fix.json +239 -0
- package/authoring/tactical/evals/hotfix-flow.json +220 -0
- package/authoring/tactical/evals/perf-optimization.json +235 -0
- package/authoring/tactical/evals/refactor-module.json +241 -0
- package/authoring/tactical/evals/schema-migration.json +225 -0
- package/authoring/tactical/evals/test-suite-backfill.json +197 -0
- package/authoring/tactical/evals/type-safety-pass.json +221 -0
- package/authoring/tactical/evals/ux-update.json +206 -0
- package/authoring/tactical/wave.json +89 -0
- package/data/chat-models/de/deepseek-r1-8b-q4/manifest.json +56 -1
- package/data/chat-models/gl/glm-5.2-754b-q2/manifest.json +56 -0
- package/data/chat-models/gp/gpt-oss-120b-q4/manifest.json +73 -1
- package/data/chat-models/gp/gpt-oss-20b-q4/manifest.json +77 -1
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/ll/llama3.2-3b-q4/manifest.json +3 -1
- package/data/chat-models/mi/mistral-7b-q4/manifest.json +54 -3
- package/data/chat-models/mi/mistral-medium-3.5-128b-q4/manifest.json +76 -1
- package/data/craftbook-templates/ac/accessibility-retrofit/manifest.json +5 -4
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.0/craftbook.json +451 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.0/test.json +231 -0
- package/data/craftbook-templates/al/alt-text-pass/manifest.json +5 -1
- package/data/craftbook-templates/ap/apply-review-findings/art.json +12 -0
- package/data/craftbook-templates/ap/apply-review-findings/logo.webp +0 -0
- package/data/craftbook-templates/ap/apply-review-findings/manifest.json +23 -0
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.0/craftbook.json +436 -0
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.0/test.json +291 -0
- package/data/craftbook-templates/br/browser-qa-audit/manifest.json +5 -1
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.5/craftbook.json +438 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.5/test.json +379 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/manifest.json +3 -3
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.0/craftbook.json +545 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.0/test.json +222 -0
- package/data/craftbook-templates/ch/changelog-cut/manifest.json +5 -1
- package/data/craftbook-templates/ch/changelog-writeup/manifest.json +5 -1
- package/data/craftbook-templates/ci/ci-pipeline/manifest.json +5 -3
- package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.0/craftbook.json +423 -0
- package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.0/test.json +228 -0
- package/data/craftbook-templates/co/codemod-sweep/art.json +12 -0
- package/data/craftbook-templates/co/codemod-sweep/logo.webp +0 -0
- package/data/craftbook-templates/co/codemod-sweep/manifest.json +23 -0
- package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/craftbook.json +441 -0
- package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/test.json +253 -0
- package/data/craftbook-templates/de/dependency-upgrade/art.json +12 -0
- package/data/craftbook-templates/de/dependency-upgrade/logo.webp +0 -0
- package/data/craftbook-templates/de/dependency-upgrade/manifest.json +23 -0
- package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.0/craftbook.json +459 -0
- package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.0/test.json +236 -0
- package/data/craftbook-templates/fe/feature-flag-release/manifest.json +5 -1
- package/data/craftbook-templates/fe/feature-flag-rollout/manifest.json +4 -1
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.0/craftbook.json +203 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.0/test.json +165 -0
- package/data/craftbook-templates/fl/flaky-test-fix/art.json +12 -0
- package/data/craftbook-templates/fl/flaky-test-fix/logo.webp +0 -0
- package/data/craftbook-templates/fl/flaky-test-fix/manifest.json +24 -0
- package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.0/craftbook.json +534 -0
- package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.0/test.json +240 -0
- package/data/craftbook-templates/ho/hotfix-flow/manifest.json +5 -3
- package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.0/craftbook.json +442 -0
- package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.0/test.json +221 -0
- package/data/craftbook-templates/in/investigate/manifest.json +4 -1
- package/data/craftbook-templates/in/investigate-root-cause/manifest.json +5 -1
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/li/live-browser-qa/manifest.json +5 -1
- package/data/craftbook-templates/ni/nightly-fix-sweep/art.json +12 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/logo.webp +0 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/manifest.json +23 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.0/craftbook.json +145 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.0/test.json +121 -0
- package/data/craftbook-templates/pe/perf-audit/versions/1.1.0/craftbook.json +195 -0
- package/data/craftbook-templates/pe/perf-audit/versions/1.1.0/test.json +165 -0
- package/data/craftbook-templates/pe/perf-optimization/manifest.json +3 -3
- package/data/craftbook-templates/pe/perf-optimization/versions/2.0.0/craftbook.json +511 -0
- package/data/craftbook-templates/pe/perf-optimization/versions/2.0.0/test.json +236 -0
- package/data/craftbook-templates/qa/qa/manifest.json +3 -1
- package/data/craftbook-templates/re/refactor-module/manifest.json +2 -2
- package/data/craftbook-templates/re/refactor-module/versions/1.0.4/craftbook.json +150 -0
- package/data/craftbook-templates/re/refactor-module/versions/1.0.4/test.json +95 -0
- package/data/craftbook-templates/re/refactor-module/versions/2.0.0/craftbook.json +509 -0
- package/data/craftbook-templates/re/refactor-module/versions/2.0.0/test.json +242 -0
- package/data/craftbook-templates/re/release-notes/manifest.json +5 -1
- package/data/craftbook-templates/re/release-notes/versions/1.0.3/craftbook.json +220 -0
- package/data/craftbook-templates/re/release-notes/versions/1.0.3/test.json +114 -0
- package/data/craftbook-templates/re/release-pipeline-ci/manifest.json +5 -1
- package/data/craftbook-templates/re/release-readiness-review/versions/1.1.0/craftbook.json +192 -0
- package/data/craftbook-templates/re/release-readiness-review/versions/1.1.0/test.json +113 -0
- package/data/craftbook-templates/ro/root-cause-investigation/manifest.json +7 -1
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.5/craftbook.json +433 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.5/test.json +157 -0
- package/data/craftbook-templates/sc/schema-migration/manifest.json +4 -4
- package/data/craftbook-templates/sc/schema-migration/versions/2.0.0/craftbook.json +459 -0
- package/data/craftbook-templates/sc/schema-migration/versions/2.0.0/test.json +226 -0
- package/data/craftbook-templates/te/test-coverage-review/versions/1.2.0/craftbook.json +195 -0
- package/data/craftbook-templates/te/test-coverage-review/versions/1.2.0/test.json +116 -0
- package/data/craftbook-templates/te/test-suite-backfill/manifest.json +1 -2
- package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.0/craftbook.json +428 -0
- package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.0/test.json +198 -0
- package/data/craftbook-templates/ty/type-safety-pass/manifest.json +3 -3
- package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.0/craftbook.json +428 -0
- package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.0/test.json +222 -0
- package/data/craftbook-templates/ux/ux-update/art.json +12 -0
- package/data/craftbook-templates/ux/ux-update/logo.webp +0 -0
- package/data/craftbook-templates/ux/ux-update/manifest.json +22 -0
- package/data/craftbook-templates/ux/ux-update/versions/1.0.0/craftbook.json +439 -0
- package/data/craftbook-templates/ux/ux-update/versions/1.0.0/test.json +207 -0
- package/data/craftbook-templates/ve/version-bump/versions/1.1.0/craftbook.json +206 -0
- package/data/craftbook-templates/ve/version-bump/versions/1.1.0/test.json +95 -0
- package/data/gezel-templates/bo/boekwachter/versions/1.1.0/about.md +29 -0
- package/data/gezel-templates/bo/boekwachter/versions/1.1.0/manifest.json +16 -0
- package/data/gezel-templates/bu/builder/versions/1.5.0/about.md +34 -0
- package/data/gezel-templates/bu/builder/versions/1.5.0/manifest.json +16 -0
- package/data/gezel-templates/de/developer/versions/1.5.0/about.md +34 -0
- package/data/gezel-templates/de/developer/versions/1.5.0/manifest.json +21 -0
- package/data/gezel-templates/index.json +1 -1
- package/data/gezel-templates/re/reviewer/versions/1.4.0/about.md +49 -0
- package/data/gezel-templates/re/reviewer/versions/1.4.0/manifest.json +21 -0
- package/data/project-types/index.json +1 -1
- package/data/project-types/so/software-project/manifest.json +20 -0
- package/data/project-types/so/software-project/versions/1.0.0/about.md +3 -0
- package/data/project-types/so/software-project/versions/1.0.0/manifest.json +41 -0
- package/data/project-types/so/software-project/versions/1.0.0/mission.md +4 -0
- package/package.json +1 -1
- package/schemas/craftbook-doc.schema.json +248 -0
- package/schemas/craftbook-template-version.schema.json +248 -0
- package/schemas/craftbook-test.schema.json +200 -0
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "dependency-upgrade",
|
|
3
|
+
"name": "Upgrade a Dependency",
|
|
4
|
+
"description": "Upgrade dependencies the way a careful maintainer would, with each claim mechanically verified. This is the applying sibling of the report-only Dependency Audit: where that book tells you what is risky, this one moves the versions. First SURVEY: read the real dependency state (manifest, lockfile, installed packages, or a vendored tree the repository documents), run the suite so green-before-any-bump is a recorded receipt, and read each candidate's breaking-change surface from what exists LOCALLY - changelogs and READMEs inside node_modules, or the repository's own upgrade notes. Release notes are never invented; a candidate whose changes cannot be read locally is staged conservatively and marked unknown. Then UPGRADE stage by stage, smallest-risk-first: apply the version change at its real location, adapt the call sites it breaks, and run the suite before the next stage begins. A stage that cannot go green is reverted and recorded with the reason, never forced through; a major that needs real design work is deferred honestly. Then VERIFY the final tree green and record a concrete rollback path. Finally an independent reviewer grades the whole chain against fixed criteria, and their REVISE verdict routes the work back automatically with concrete findings. Needs a project whose tests run via `npm run test`. Works identically whether the run edits the project directly or drafts a change proposal for the user to apply.",
|
|
5
|
+
"plan": "Survey the real dependency state and stage the work smallest-risk-first (green-suite receipt before any bump) -> execute stage by stage with the suite run between stages and honest reverts -> verify the final tree green and record the rollback path -> enforced independent review.",
|
|
6
|
+
"entryStepId": "survey",
|
|
7
|
+
"triggers": [
|
|
8
|
+
"upgrade the dependencies",
|
|
9
|
+
"bump the deps",
|
|
10
|
+
"update this package",
|
|
11
|
+
"dependency upgrade"
|
|
12
|
+
],
|
|
13
|
+
"runModes": {
|
|
14
|
+
"scheduled": "supported"
|
|
15
|
+
},
|
|
16
|
+
"commands": [
|
|
17
|
+
{
|
|
18
|
+
"scope": "script",
|
|
19
|
+
"name": "test",
|
|
20
|
+
"reason": "each upgrade stage must leave the suite green - the gates read real run receipts"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"paramSchema": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"properties": {
|
|
26
|
+
"scope": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"title": "What to upgrade",
|
|
29
|
+
"description": "A single dependency, a patch-level sweep, or a named major upgrade. Leave empty to survey and pick the safest valuable set.",
|
|
30
|
+
"default": ""
|
|
31
|
+
},
|
|
32
|
+
"workPath": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"title": "Working folder",
|
|
35
|
+
"description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
|
|
36
|
+
"default": "{{task.dir}}"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"steps": [
|
|
41
|
+
{
|
|
42
|
+
"id": "survey",
|
|
43
|
+
"name": "Survey the dependency state",
|
|
44
|
+
"description": "Read the real dependency state and each candidate's locally-readable breaking-change surface, record the green baseline, and stage the work smallest-risk-first.",
|
|
45
|
+
"prompt": "The upgrade scope: {{scope}}\n\nEstablish the REAL dependency state before changing anything. Read `package.json` (and the lockfile if one exists), run `list_packages`, and work out how this project consumes each dependency - registry installs, or a vendored tree the repository documents. Then run the suite with `run_package_script` (`test`) and record that it is green BEFORE any bump. If the suite is already red, record the failure honestly and stop - never upgrade on top of a red suite. If the command needs first-use approval, say so and wait rather than guessing.\n\nFor each upgrade candidate, read its breaking-change surface from what is available LOCALLY: changelogs and READMEs inside `node_modules/`, or the repository's own upgrade notes for vendored code. Never invent release notes you did not read - a candidate whose changes you cannot read locally gets staged conservatively and marked unknown. Order the stages smallest-risk-first: patches before minors before majors, one dependency (or one tightly-coupled group) per stage. If nothing is worth upgrading here, record that finding honestly and stop.\n\nWrite `{{workPath}}/survey.md` with exactly these sections: `## Current state` (what is installed, from the real manifest and lockfile), `## Candidates` (each candidate with its current and target version and where you read its notes), `## Breaking-change notes` (what actually changes, only from sources you read, each cited with a backtick path), `## Stage plan` (numbered stages, smallest-risk-first, with the reason for the order).\n\nObservable handoff: write the completed result to `{{workPath}}/survey.md` in the project's artifacts drawer with `write_artifact`. Do not merely describe what the file would contain. Re-read it with `read_artifact` before finishing this phase and repair any incomplete sections.",
|
|
46
|
+
"suggestedRole": "dependency auditor",
|
|
47
|
+
"capabilityFloor": "medium",
|
|
48
|
+
"advanceWhen": {
|
|
49
|
+
"file": "{{workPath}}/survey.md",
|
|
50
|
+
"minBytes": 600,
|
|
51
|
+
"sniff": "nonempty",
|
|
52
|
+
"requireChange": true,
|
|
53
|
+
"artifact": true,
|
|
54
|
+
"goto": "upgrade"
|
|
55
|
+
},
|
|
56
|
+
"gate": {
|
|
57
|
+
"at": "completion",
|
|
58
|
+
"checks": [
|
|
59
|
+
{
|
|
60
|
+
"kind": "minBytes",
|
|
61
|
+
"file": "{{workPath}}/survey.md",
|
|
62
|
+
"bytes": 600,
|
|
63
|
+
"artifact": true
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"kind": "sniff",
|
|
67
|
+
"file": "{{workPath}}/survey.md",
|
|
68
|
+
"sniff": "nonempty",
|
|
69
|
+
"artifact": true
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"kind": "contains",
|
|
73
|
+
"file": "{{workPath}}/survey.md",
|
|
74
|
+
"pattern": "^##\\s+Current state",
|
|
75
|
+
"flags": "im",
|
|
76
|
+
"label": "Current state section",
|
|
77
|
+
"artifact": true
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"kind": "contains",
|
|
81
|
+
"file": "{{workPath}}/survey.md",
|
|
82
|
+
"pattern": "^##\\s+Candidates",
|
|
83
|
+
"flags": "im",
|
|
84
|
+
"label": "Candidates section",
|
|
85
|
+
"artifact": true
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"kind": "contains",
|
|
89
|
+
"file": "{{workPath}}/survey.md",
|
|
90
|
+
"pattern": "^##\\s+Breaking-change notes",
|
|
91
|
+
"flags": "im",
|
|
92
|
+
"label": "Breaking-change notes section",
|
|
93
|
+
"artifact": true
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"kind": "contains",
|
|
97
|
+
"file": "{{workPath}}/survey.md",
|
|
98
|
+
"pattern": "^##\\s+Stage plan",
|
|
99
|
+
"flags": "im",
|
|
100
|
+
"label": "Stage plan section",
|
|
101
|
+
"artifact": true
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"kind": "citationsResolve",
|
|
105
|
+
"file": "{{workPath}}/survey.md",
|
|
106
|
+
"minCitations": 2,
|
|
107
|
+
"artifact": true
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"kind": "commandEvidence",
|
|
111
|
+
"script": "test",
|
|
112
|
+
"expect": "pass",
|
|
113
|
+
"label": "green before any bump"
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
"onReject": "survey",
|
|
117
|
+
"maxAttempts": 4
|
|
118
|
+
},
|
|
119
|
+
"next": "upgrade"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "upgrade",
|
|
123
|
+
"name": "Execute the stages",
|
|
124
|
+
"description": "Apply each stage at its real location, adapt the call sites it breaks, and run the suite between stages; revert and record any stage that cannot go green.",
|
|
125
|
+
"prompt": "Read `{{workPath}}/survey.md` and execute its stage plan one stage at a time. For each stage: apply the version change at its real location - edit the manifest and run `npm_install` for registry dependencies, or replace the vendored tree exactly as the repository's convention documents for vendored ones - then adapt every call site the change breaks at its real location with `read_file` plus `write_file`/`replace_in_file`, and run the suite with `run_package_script` (`test`) before starting the next stage. Never begin a stage while the previous one is red.\n\nA stage that cannot go green gets REVERTED - put the manifest, lockfile, and touched files back exactly as they were - and recorded with the concrete failure, never forced through by weakening tests or pinning over the breakage. A major that turns out to need real design work is deferred honestly, not hacked through. If every stage had to be reverted, record that outcome honestly and stop.\n\nWrite `{{workPath}}/change-notes.md` with exactly these sections: `## Stages executed` (each stage with its suite result), `## Files touched` (backtick path per line), `## Adaptations` (each call-site change and why the new version needs it), `## Reverted stages` (each with the concrete failure that forced the revert, or 'none'). Before working, open `{{workPath}}/survey.md` with `read_artifact`.\n\nObservable handoff: write the completed result to `{{workPath}}/change-notes.md` in the project's artifacts drawer with `write_artifact`. Do not merely describe what the file would contain. Re-read it with `read_artifact` before finishing this phase and repair any incomplete sections.",
|
|
126
|
+
"suggestedRole": "software engineer",
|
|
127
|
+
"capabilityFloor": "medium",
|
|
128
|
+
"consumes": [
|
|
129
|
+
{
|
|
130
|
+
"file": "{{workPath}}/survey.md",
|
|
131
|
+
"artifact": true
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
"advanceWhen": {
|
|
135
|
+
"file": "{{workPath}}/change-notes.md",
|
|
136
|
+
"minBytes": 700,
|
|
137
|
+
"sniff": "nonempty",
|
|
138
|
+
"requireChange": true,
|
|
139
|
+
"artifact": true,
|
|
140
|
+
"goto": "verify"
|
|
141
|
+
},
|
|
142
|
+
"gate": {
|
|
143
|
+
"at": "completion",
|
|
144
|
+
"checks": [
|
|
145
|
+
{
|
|
146
|
+
"kind": "minBytes",
|
|
147
|
+
"file": "{{workPath}}/change-notes.md",
|
|
148
|
+
"bytes": 700,
|
|
149
|
+
"artifact": true
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"kind": "sniff",
|
|
153
|
+
"file": "{{workPath}}/change-notes.md",
|
|
154
|
+
"sniff": "nonempty",
|
|
155
|
+
"artifact": true
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"kind": "contains",
|
|
159
|
+
"file": "{{workPath}}/change-notes.md",
|
|
160
|
+
"pattern": "^##\\s+Stages executed",
|
|
161
|
+
"flags": "im",
|
|
162
|
+
"label": "Stages executed section",
|
|
163
|
+
"artifact": true
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"kind": "contains",
|
|
167
|
+
"file": "{{workPath}}/change-notes.md",
|
|
168
|
+
"pattern": "^##\\s+Files touched",
|
|
169
|
+
"flags": "im",
|
|
170
|
+
"label": "Files touched section",
|
|
171
|
+
"artifact": true
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"kind": "contains",
|
|
175
|
+
"file": "{{workPath}}/change-notes.md",
|
|
176
|
+
"pattern": "^##\\s+Adaptations",
|
|
177
|
+
"flags": "im",
|
|
178
|
+
"label": "Adaptations section",
|
|
179
|
+
"artifact": true
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"kind": "contains",
|
|
183
|
+
"file": "{{workPath}}/change-notes.md",
|
|
184
|
+
"pattern": "^##\\s+Reverted stages",
|
|
185
|
+
"flags": "im",
|
|
186
|
+
"label": "Reverted stages section",
|
|
187
|
+
"artifact": true
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"kind": "citationsResolve",
|
|
191
|
+
"file": "{{workPath}}/change-notes.md",
|
|
192
|
+
"minCitations": 2,
|
|
193
|
+
"artifact": true
|
|
194
|
+
}
|
|
195
|
+
],
|
|
196
|
+
"onReject": "upgrade",
|
|
197
|
+
"maxAttempts": 4
|
|
198
|
+
},
|
|
199
|
+
"next": "verify"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"id": "verify",
|
|
203
|
+
"name": "Verify and record the rollback",
|
|
204
|
+
"description": "Re-run the whole suite on the final tree, spot-check the adaptations, and record a concrete rollback path.",
|
|
205
|
+
"prompt": "Prove the result with fresh eyes. Re-run the whole suite with `run_package_script` (`test`) - it must be green on the final tree; if it is not, go back and fix or revert before verifying again. Re-read `{{workPath}}/change-notes.md` and spot-check each adaptation at its real location with `read_file`. Then record the rollback path: exactly which manifest and lockfile entries (or vendored files) to restore, and in what order, to return to the pre-upgrade state. Anything you could not actually run gets labeled unverified, never claimed.\n\nWrite `{{workPath}}/verification.md` with exactly these sections: `## Suite` (the full-suite command and its result), `## Adaptations verified` (which call sites you re-opened and what you confirmed), `## Rollback` (the concrete revert steps), `## Result` (upgraded and green, or what remains unverified and why). Before working, open `{{workPath}}/change-notes.md` with `read_artifact`.\n\nObservable handoff: write the completed result to `{{workPath}}/verification.md` in the project's artifacts drawer with `write_artifact`. Do not merely describe what the file would contain. Re-read it with `read_artifact` before finishing this phase and repair any incomplete sections.",
|
|
206
|
+
"suggestedRole": "software engineer",
|
|
207
|
+
"capabilityFloor": "medium",
|
|
208
|
+
"consumes": [
|
|
209
|
+
{
|
|
210
|
+
"file": "{{workPath}}/change-notes.md",
|
|
211
|
+
"artifact": true
|
|
212
|
+
}
|
|
213
|
+
],
|
|
214
|
+
"advanceWhen": {
|
|
215
|
+
"file": "{{workPath}}/verification.md",
|
|
216
|
+
"minBytes": 450,
|
|
217
|
+
"sniff": "nonempty",
|
|
218
|
+
"requireChange": true,
|
|
219
|
+
"artifact": true,
|
|
220
|
+
"goto": "evaluate"
|
|
221
|
+
},
|
|
222
|
+
"gate": {
|
|
223
|
+
"at": "completion",
|
|
224
|
+
"checks": [
|
|
225
|
+
{
|
|
226
|
+
"kind": "minBytes",
|
|
227
|
+
"file": "{{workPath}}/verification.md",
|
|
228
|
+
"bytes": 450,
|
|
229
|
+
"artifact": true
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"kind": "sniff",
|
|
233
|
+
"file": "{{workPath}}/verification.md",
|
|
234
|
+
"sniff": "nonempty",
|
|
235
|
+
"artifact": true
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"kind": "contains",
|
|
239
|
+
"file": "{{workPath}}/verification.md",
|
|
240
|
+
"pattern": "^##\\s+Suite",
|
|
241
|
+
"flags": "im",
|
|
242
|
+
"label": "Suite section",
|
|
243
|
+
"artifact": true
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"kind": "contains",
|
|
247
|
+
"file": "{{workPath}}/verification.md",
|
|
248
|
+
"pattern": "^##\\s+Adaptations verified",
|
|
249
|
+
"flags": "im",
|
|
250
|
+
"label": "Adaptations verified section",
|
|
251
|
+
"artifact": true
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"kind": "contains",
|
|
255
|
+
"file": "{{workPath}}/verification.md",
|
|
256
|
+
"pattern": "^##\\s+Rollback",
|
|
257
|
+
"flags": "im",
|
|
258
|
+
"label": "Rollback section",
|
|
259
|
+
"artifact": true
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"kind": "contains",
|
|
263
|
+
"file": "{{workPath}}/verification.md",
|
|
264
|
+
"pattern": "^##\\s+Result",
|
|
265
|
+
"flags": "im",
|
|
266
|
+
"label": "Result section",
|
|
267
|
+
"artifact": true
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"kind": "commandEvidence",
|
|
271
|
+
"script": "test",
|
|
272
|
+
"expect": "pass",
|
|
273
|
+
"label": "the whole suite is green on the upgraded tree (verified run receipt)"
|
|
274
|
+
}
|
|
275
|
+
],
|
|
276
|
+
"onReject": "verify",
|
|
277
|
+
"maxAttempts": 4
|
|
278
|
+
},
|
|
279
|
+
"next": "evaluate"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"id": "evaluate",
|
|
283
|
+
"name": "Evaluate the deliverable",
|
|
284
|
+
"description": "Independently grade the observable deliverable and route it to finish, repair, or user escalation.",
|
|
285
|
+
"prompt": "Review `{{workPath}}/verification.md`, `{{workPath}}/survey.md`, `{{workPath}}/change-notes.md` against every criterion below. Inspect the underlying evidence files named by the workflow; do not grade from the author's summary alone.\n\n1. The stages in change-notes.md were real and ordered smallest-risk-first, matching the plan in survey.md or explaining every deviation.\n2. Green between stages is receipts, not claims: the suite was genuinely run before the first bump and between stages - judged from the recorded runs, not the author's summary.\n3. Breaking-change notes cite sources that were genuinely read locally; nothing is presented as a release note that was invented.\n4. Every adaptation cites a real file, and the change at that site matches what the new version actually requires - open the touched files; do not grade from change-notes.md alone.\n5. Stages that could not go green were reverted and recorded with concrete reasons; majors that need design work were deferred honestly, not hacked through.\n6. verification.md records a concrete, runnable rollback path and the final suite run is green - judged from the recorded run receipts.\n\nOpen `{{workPath}}/verification.md`, `{{workPath}}/survey.md`, `{{workPath}}/change-notes.md` with `read_artifact`. Write the evidence-backed review to `{{workPath}}/review.md` in the artifacts drawer with `write_artifact`.\n\nList the findings as a markdown table with columns `| Severity | File | Line | Problem | Fix |` (severities: critical/major/minor/nit; empty table only on PASS). Give each criterion a PASS or FAIL with a concrete path, excerpt, measurement, or observed behavior. End with exactly `Verdict: PASS` or `Verdict: REVISE`. The gate ENFORCES the verdict: a well-formed REVISE is rejected and routed back to `repair` automatically, carrying your findings — so list every finding in the table with a concrete fix. On PASS, `advance_task_step` to `finish`. Never write PASS while a criterion is unmet.",
|
|
286
|
+
"suggestedRole": "dependency reviewer",
|
|
287
|
+
"consumes": [
|
|
288
|
+
{
|
|
289
|
+
"file": "{{workPath}}/verification.md",
|
|
290
|
+
"artifact": true
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"file": "{{workPath}}/survey.md",
|
|
294
|
+
"artifact": true
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"file": "{{workPath}}/change-notes.md",
|
|
298
|
+
"artifact": true
|
|
299
|
+
}
|
|
300
|
+
],
|
|
301
|
+
"gate": {
|
|
302
|
+
"at": "completion",
|
|
303
|
+
"checks": [
|
|
304
|
+
{
|
|
305
|
+
"kind": "minBytes",
|
|
306
|
+
"file": "{{workPath}}/review.md",
|
|
307
|
+
"bytes": 400,
|
|
308
|
+
"artifact": true
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"kind": "contains",
|
|
312
|
+
"file": "{{workPath}}/review.md",
|
|
313
|
+
"pattern": "Verdict:\\s*(?:PASS|REVISE)",
|
|
314
|
+
"flags": "i",
|
|
315
|
+
"label": "explicit PASS or REVISE verdict",
|
|
316
|
+
"artifact": true
|
|
317
|
+
}
|
|
318
|
+
],
|
|
319
|
+
"scripts": [
|
|
320
|
+
{
|
|
321
|
+
"name": "checkFixReview",
|
|
322
|
+
"scope": "standard",
|
|
323
|
+
"inputs": {
|
|
324
|
+
"reviewPath": "{{workPath}}/review.md",
|
|
325
|
+
"fixStepId": "repair"
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
],
|
|
329
|
+
"onReject": "evaluate",
|
|
330
|
+
"maxAttempts": 4
|
|
331
|
+
},
|
|
332
|
+
"next": "finish"
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"id": "repair",
|
|
336
|
+
"name": "Repair the deliverable",
|
|
337
|
+
"description": "Fix only the concrete gaps from the latest independent review.",
|
|
338
|
+
"prompt": "Read `{{workPath}}/review.md` with `read_artifact` and repair every failed criterion in `{{workPath}}/verification.md`, `{{workPath}}/survey.md`, `{{workPath}}/change-notes.md`. Make changes on each file's declared surface (`write_artifact` for artifact inputs, `write_file` for workspace inputs), not in task notes or a reply. Preserve evidence that already passed. Re-run or re-check anything the reviewer found unproven. Ensure `{{workPath}}/verification.md` is genuinely updated this turn so the repair is observable, then hand it back for independent evaluation.",
|
|
339
|
+
"suggestedRole": "software engineer",
|
|
340
|
+
"consumes": [
|
|
341
|
+
{
|
|
342
|
+
"file": "{{workPath}}/review.md",
|
|
343
|
+
"artifact": true
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"file": "{{workPath}}/verification.md",
|
|
347
|
+
"artifact": true
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"file": "{{workPath}}/survey.md",
|
|
351
|
+
"artifact": true
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"file": "{{workPath}}/change-notes.md",
|
|
355
|
+
"artifact": true
|
|
356
|
+
}
|
|
357
|
+
],
|
|
358
|
+
"advanceWhen": {
|
|
359
|
+
"file": "{{workPath}}/verification.md",
|
|
360
|
+
"minBytes": 450,
|
|
361
|
+
"sniff": "nonempty",
|
|
362
|
+
"requireChange": true,
|
|
363
|
+
"artifact": true,
|
|
364
|
+
"goto": "evaluate"
|
|
365
|
+
},
|
|
366
|
+
"gate": {
|
|
367
|
+
"at": "completion",
|
|
368
|
+
"checks": [
|
|
369
|
+
{
|
|
370
|
+
"kind": "minBytes",
|
|
371
|
+
"file": "{{workPath}}/verification.md",
|
|
372
|
+
"bytes": 450,
|
|
373
|
+
"artifact": true
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"kind": "sniff",
|
|
377
|
+
"file": "{{workPath}}/verification.md",
|
|
378
|
+
"sniff": "nonempty",
|
|
379
|
+
"artifact": true
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"kind": "contains",
|
|
383
|
+
"file": "{{workPath}}/verification.md",
|
|
384
|
+
"pattern": "^##\\s+Suite",
|
|
385
|
+
"flags": "im",
|
|
386
|
+
"label": "Suite section",
|
|
387
|
+
"artifact": true
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"kind": "contains",
|
|
391
|
+
"file": "{{workPath}}/verification.md",
|
|
392
|
+
"pattern": "^##\\s+Adaptations verified",
|
|
393
|
+
"flags": "im",
|
|
394
|
+
"label": "Adaptations verified section",
|
|
395
|
+
"artifact": true
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"kind": "contains",
|
|
399
|
+
"file": "{{workPath}}/verification.md",
|
|
400
|
+
"pattern": "^##\\s+Rollback",
|
|
401
|
+
"flags": "im",
|
|
402
|
+
"label": "Rollback section",
|
|
403
|
+
"artifact": true
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"kind": "contains",
|
|
407
|
+
"file": "{{workPath}}/verification.md",
|
|
408
|
+
"pattern": "^##\\s+Result",
|
|
409
|
+
"flags": "im",
|
|
410
|
+
"label": "Result section",
|
|
411
|
+
"artifact": true
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"kind": "commandEvidence",
|
|
415
|
+
"script": "test",
|
|
416
|
+
"expect": "pass",
|
|
417
|
+
"label": "the whole suite is green on the upgraded tree (verified run receipt)"
|
|
418
|
+
}
|
|
419
|
+
],
|
|
420
|
+
"onReject": "repair",
|
|
421
|
+
"maxAttempts": 4
|
|
422
|
+
},
|
|
423
|
+
"next": "evaluate"
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"id": "finish",
|
|
427
|
+
"name": "Finish",
|
|
428
|
+
"description": "All deterministic and reviewer criteria passed.",
|
|
429
|
+
"prompt": "The independent review passed. Read `{{workPath}}/review.md` with `read_artifact`, then use `write_task_note` to record a concise DONE summary with the final deliverable paths (`{{workPath}}/verification.md`, `{{workPath}}/survey.md`, `{{workPath}}/change-notes.md`) and the evidence that each acceptance criterion passed. Report DONE without starting new work.",
|
|
430
|
+
"suggestedRole": "project lead",
|
|
431
|
+
"consumes": [
|
|
432
|
+
{
|
|
433
|
+
"file": "{{workPath}}/review.md",
|
|
434
|
+
"artifact": true
|
|
435
|
+
}
|
|
436
|
+
],
|
|
437
|
+
"terminal": true
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
"id": "needs-user",
|
|
441
|
+
"name": "Escalate unresolved concerns",
|
|
442
|
+
"description": "The bounded repair loop ended without a defensible pass.",
|
|
443
|
+
"prompt": "The deliverable did not pass after 3 review rounds. Do not claim success. Read `{{workPath}}/review.md` with `read_artifact`, then use `write_task_note` to record DONE_WITH_CONCERNS: the unmet criteria, what was attempted, the affected paths, and the smallest user decision or missing input needed to continue.",
|
|
444
|
+
"suggestedRole": "project lead",
|
|
445
|
+
"consumes": [
|
|
446
|
+
{
|
|
447
|
+
"file": "{{workPath}}/review.md",
|
|
448
|
+
"artifact": true
|
|
449
|
+
}
|
|
450
|
+
],
|
|
451
|
+
"terminal": true
|
|
452
|
+
}
|
|
453
|
+
],
|
|
454
|
+
"diffpackCapable": true,
|
|
455
|
+
"capabilityFloor": "medium",
|
|
456
|
+
"version": "1.0.0",
|
|
457
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
458
|
+
"minGezelVersion": "1.26236"
|
|
459
|
+
}
|