@bendyline/gilde 0.1.55 → 0.1.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/authoring/chat-models/glm-5.3-flash-320b-q2.json +129 -0
  2. package/authoring/gstack/wave.json +2 -2
  3. package/data/chat-models/gl/glm-5.3-flash-320b-q2/manifest.json +137 -0
  4. package/data/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.0/manifest.json +23 -0
  5. package/data/chat-models/index.json +1 -1
  6. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.3/test.json +16 -8
  7. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.2/craftbook.json +618 -0
  8. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.2/test.json +228 -0
  9. package/data/craftbook-templates/al/album-curate/versions/1.0.3/test.json +6 -3
  10. package/data/craftbook-templates/al/alert-rules/versions/1.0.3/test.json +8 -8
  11. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.5/test.json +10 -5
  12. package/data/craftbook-templates/an/annual-document-review/versions/1.0.3/test.json +16 -8
  13. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.3/test.json +12 -6
  14. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.2/craftbook.json +602 -0
  15. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.2/test.json +290 -0
  16. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.3/test.json +18 -9
  17. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.5/test.json +10 -5
  18. package/data/craftbook-templates/au/auth-flow/versions/1.0.3/test.json +12 -6
  19. package/data/craftbook-templates/au/auth-flow/versions/1.0.4/craftbook.json +282 -0
  20. package/data/craftbook-templates/au/auth-flow/versions/1.0.4/test.json +143 -0
  21. package/data/craftbook-templates/au/automation-recipe/versions/1.0.3/test.json +12 -6
  22. package/data/craftbook-templates/ba/backup-routine/versions/1.0.4/craftbook.json +282 -0
  23. package/data/craftbook-templates/ba/backup-routine/versions/1.0.4/test.json +108 -0
  24. package/data/craftbook-templates/bl/blog-post/versions/1.0.3/test.json +8 -8
  25. package/data/craftbook-templates/br/branding-website/versions/1.1.3/craftbook.json +335 -0
  26. package/data/craftbook-templates/br/branding-website/versions/1.1.3/test.json +164 -0
  27. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.3/test.json +8 -8
  28. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.8/craftbook.json +621 -0
  29. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.8/test.json +376 -0
  30. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.2/craftbook.json +730 -0
  31. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.2/test.json +221 -0
  32. package/data/craftbook-templates/bu/build-loop/versions/1.1.1/test.json +8 -8
  33. package/data/craftbook-templates/ca/case-study/versions/1.0.3/test.json +8 -8
  34. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.4/test.json +10 -5
  35. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.3/test.json +25 -11
  36. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.2/craftbook.json +587 -0
  37. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.2/test.json +225 -0
  38. package/data/craftbook-templates/ci/citation-audit/versions/1.0.3/test.json +28 -14
  39. package/data/craftbook-templates/cl/cli-tool/versions/1.1.3/test.json +8 -8
  40. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.3/test.json +16 -8
  41. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.3/test.json +18 -9
  42. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.2/craftbook.json +605 -0
  43. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.2/test.json +252 -0
  44. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.3/test.json +18 -9
  45. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.3/test.json +23 -15
  46. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.3/test.json +28 -14
  47. package/data/craftbook-templates/co/content-deck/versions/1.2.3/craftbook.json +4 -4
  48. package/data/craftbook-templates/co/content-deck/versions/1.2.3/test.json +3 -0
  49. package/data/craftbook-templates/co/content-deck/versions/1.2.4/craftbook.json +341 -0
  50. package/data/craftbook-templates/co/content-deck/versions/1.2.4/test.json +169 -0
  51. package/data/craftbook-templates/co/copy-review/versions/1.0.3/test.json +14 -7
  52. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/craftbook.json +4 -4
  53. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/test.json +3 -0
  54. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/craftbook.json +345 -0
  55. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/test.json +187 -0
  56. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.3/test.json +26 -13
  57. package/data/craftbook-templates/co/cover-letter/versions/1.0.3/test.json +8 -8
  58. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.4/test.json +7 -7
  59. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.3/test.json +7 -7
  60. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.4/craftbook.json +285 -0
  61. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.4/test.json +104 -0
  62. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.5/craftbook.json +284 -0
  63. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.5/test.json +162 -0
  64. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.3/test.json +38 -19
  65. package/data/craftbook-templates/da/data-to-report/versions/1.0.3/test.json +12 -6
  66. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.4/craftbook.json +286 -0
  67. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.4/test.json +104 -0
  68. package/data/craftbook-templates/de/dependency-audit/versions/1.1.3/test.json +14 -7
  69. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.2/craftbook.json +621 -0
  70. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.2/test.json +235 -0
  71. package/data/craftbook-templates/de/design-review/versions/1.0.3/test.json +16 -8
  72. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.8/craftbook.json +616 -0
  73. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.8/test.json +201 -0
  74. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.4/craftbook.json +285 -0
  75. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.4/test.json +104 -0
  76. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.3/test.json +119 -55
  77. package/data/craftbook-templates/do/dockerize-app/versions/1.0.4/craftbook.json +285 -0
  78. package/data/craftbook-templates/do/dockerize-app/versions/1.0.4/test.json +92 -0
  79. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.3/test.json +18 -9
  80. package/data/craftbook-templates/dr/draft-social-post/versions/1.0.2/craftbook.json +324 -0
  81. package/data/craftbook-templates/dr/draft-social-post/versions/1.0.2/test.json +161 -0
  82. package/data/craftbook-templates/ed/edit-notes/versions/1.0.3/test.json +11 -4
  83. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.8/craftbook.json +566 -0
  84. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.8/test.json +191 -0
  85. package/data/craftbook-templates/ep/episode-plan/versions/1.0.3/test.json +10 -5
  86. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.7/test.json +7 -10
  87. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.8/craftbook.json +595 -0
  88. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.8/test.json +139 -0
  89. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.4/craftbook.json +277 -0
  90. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.4/test.json +104 -0
  91. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.2/craftbook.json +327 -0
  92. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.2/test.json +162 -0
  93. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.2/craftbook.json +718 -0
  94. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.2/test.json +239 -0
  95. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.4/craftbook.json +285 -0
  96. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.4/test.json +162 -0
  97. package/data/craftbook-templates/fo/form-wizard/versions/1.0.3/test.json +8 -8
  98. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.3/test.json +11 -4
  99. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.2/craftbook.json +610 -0
  100. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.2/test.json +220 -0
  101. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.3/craftbook.json +343 -0
  102. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.3/test.json +176 -0
  103. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.8/craftbook.json +566 -0
  104. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.8/test.json +141 -0
  105. package/data/craftbook-templates/im/image-set-index/versions/1.2.3/craftbook.json +298 -0
  106. package/data/craftbook-templates/im/image-set-index/versions/1.2.3/test.json +180 -0
  107. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.3/test.json +11 -4
  108. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.3/test.json +48 -23
  109. package/data/craftbook-templates/in/invitation-design/versions/1.0.3/test.json +1 -1
  110. package/data/craftbook-templates/index.json +1 -1
  111. package/data/craftbook-templates/it/item-intake/versions/1.0.3/test.json +11 -4
  112. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.4/craftbook.json +277 -0
  113. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.4/test.json +104 -0
  114. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.3/test.json +16 -8
  115. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.3/test.json +3 -0
  116. package/data/craftbook-templates/mo/morning-report/versions/1.0.3/test.json +21 -9
  117. package/data/craftbook-templates/of/office-hours/versions/1.1.1/test.json +8 -8
  118. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.2/craftbook.json +697 -0
  119. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.2/test.json +235 -0
  120. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.3/test.json +19 -8
  121. package/data/craftbook-templates/pl/plan/versions/1.0.2/test.json +8 -8
  122. package/data/craftbook-templates/pl/playtest-report/versions/1.0.3/test.json +17 -7
  123. package/data/craftbook-templates/pr/practice-exam/versions/1.0.3/test.json +7 -2
  124. package/data/craftbook-templates/pr/practice-session/versions/1.0.3/test.json +11 -4
  125. package/data/craftbook-templates/pu/pull-request-review/versions/1.9.2/craftbook.json +435 -0
  126. package/data/craftbook-templates/pu/pull-request-review/versions/1.9.2/test.json +141 -0
  127. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.3/test.json +16 -8
  128. package/data/craftbook-templates/re/receipt-intake/versions/1.0.3/test.json +11 -4
  129. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.4/craftbook.json +277 -0
  130. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.4/test.json +104 -0
  131. package/data/craftbook-templates/re/recipe-capture/versions/1.0.3/test.json +13 -5
  132. package/data/craftbook-templates/re/record-a-relative/versions/1.0.3/test.json +3 -0
  133. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.4/craftbook.json +285 -0
  134. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.4/test.json +104 -0
  135. package/data/craftbook-templates/re/refactor-module/versions/2.0.2/craftbook.json +695 -0
  136. package/data/craftbook-templates/re/refactor-module/versions/2.0.2/test.json +241 -0
  137. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.4/craftbook.json +361 -0
  138. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.4/test.json +138 -0
  139. package/data/craftbook-templates/re/release-notes/versions/1.0.4/test.json +8 -8
  140. package/data/craftbook-templates/re/release-notes/versions/1.0.5/craftbook.json +339 -0
  141. package/data/craftbook-templates/re/release-notes/versions/1.0.5/test.json +111 -0
  142. package/data/craftbook-templates/re/reliability-review/versions/1.0.3/test.json +16 -8
  143. package/data/craftbook-templates/re/research-report/versions/1.0.3/test.json +16 -8
  144. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.8/craftbook.json +596 -0
  145. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.8/test.json +157 -0
  146. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.4/test.json +13 -5
  147. package/data/craftbook-templates/sc/schema-migration/versions/2.0.2/craftbook.json +624 -0
  148. package/data/craftbook-templates/sc/schema-migration/versions/2.0.2/test.json +225 -0
  149. package/data/craftbook-templates/sc/script-automation/versions/1.0.4/craftbook.json +284 -0
  150. package/data/craftbook-templates/sc/script-automation/versions/1.0.4/test.json +162 -0
  151. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.7/test.json +10 -13
  152. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.8/craftbook.json +597 -0
  153. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.8/test.json +157 -0
  154. package/data/craftbook-templates/so/social-digest/versions/1.0.3/craftbook.json +239 -0
  155. package/data/craftbook-templates/so/social-digest/versions/1.0.3/test.json +168 -0
  156. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.3/test.json +25 -11
  157. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.8/craftbook.json +599 -0
  158. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.8/test.json +162 -0
  159. package/data/craftbook-templates/te/technical-documentation/versions/2.0.8/craftbook.json +577 -0
  160. package/data/craftbook-templates/te/technical-documentation/versions/2.0.8/test.json +174 -0
  161. package/data/craftbook-templates/te/test-coverage-review/versions/1.2.1/test.json +16 -8
  162. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.2/craftbook.json +592 -0
  163. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.2/test.json +195 -0
  164. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.3/test.json +6 -3
  165. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.3/test.json +11 -4
  166. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.3/test.json +9 -3
  167. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.3/test.json +10 -5
  168. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.3/test.json +6 -3
  169. package/data/craftbook-templates/tr/translate-content/versions/1.1.3/craftbook.json +140 -0
  170. package/data/craftbook-templates/tr/translate-content/versions/1.1.3/test.json +141 -0
  171. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.2/craftbook.json +594 -0
  172. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.2/test.json +221 -0
  173. package/data/craftbook-templates/ux/ux-update/versions/1.0.2/craftbook.json +606 -0
  174. package/data/craftbook-templates/ux/ux-update/versions/1.0.2/test.json +206 -0
  175. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.3/test.json +11 -4
  176. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.3/test.json +21 -9
  177. package/data/craftbook-templates/wh/whitepaper/versions/1.0.3/test.json +16 -8
  178. package/data/craftbook-templates/ye/year-in-review/versions/1.0.3/test.json +8 -4
  179. package/data/project-types/index.json +1 -1
  180. package/data/project-types/ju/just-chat/manifest.json +1 -1
  181. package/data/project-types/ju/just-chat/versions/1.0.1/about.md +5 -0
  182. package/data/project-types/ju/just-chat/versions/1.0.1/manifest.json +19 -0
  183. package/package.json +1 -1
  184. package/schemas/chat-model-identity.schema.json +27 -0
  185. package/schemas/chat-model-version.schema.json +22 -0
@@ -0,0 +1,730 @@
1
+ {
2
+ "id": "bug-fix-tdd",
3
+ "name": "Reproduce-Then-Fix a Bug",
4
+ "description": "Fix a bug with the discipline a senior engineer would demand, and with each claim mechanically verified. First REPRODUCE: write a focused failing test in the project's real test layout and run the suite so the failure is recorded — a bug you cannot reproduce you cannot prove fixed, and this book's gates read the actual run receipts, not the author's summary. Then LOCATE the defect site and its causal chain before touching anything. Then make the SMALLEST change at that real site — never a prescribed scratch file — keeping the new test as a permanent regression guard. Then VALIDATE by re-running the original reproduction and the whole suite, which must now be green. 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": "Reproduce with a failing test (verified red by a real run) -> locate the defect site and causal chain -> smallest fix at the real site -> validate red-to-green with the original reproduction -> enforced independent review.",
6
+ "entryStepId": "reproduce",
7
+ "triggers": [
8
+ "fix this bug",
9
+ "reproduce and fix",
10
+ "tdd bug fix",
11
+ "write a regression test",
12
+ "debug and fix"
13
+ ],
14
+ "commands": [
15
+ {
16
+ "scope": "script",
17
+ "name": "test",
18
+ "reason": "Red-then-green proof: the reproduction must actually fail against the current code, and the whole suite must pass after the fix. The gates verify real run receipts."
19
+ }
20
+ ],
21
+ "paramSchema": {
22
+ "type": "object",
23
+ "properties": {
24
+ "scope": {
25
+ "type": "string",
26
+ "title": "Bug to fix",
27
+ "description": "The bug report, failing behavior, or area to focus on. Leave empty when the task description already carries it.",
28
+ "default": ""
29
+ },
30
+ "workPath": {
31
+ "type": "string",
32
+ "title": "Working folder",
33
+ "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.",
34
+ "default": "{{task.dir}}"
35
+ }
36
+ }
37
+ },
38
+ "steps": [
39
+ {
40
+ "id": "reproduce",
41
+ "name": "Reproduce with a failing test",
42
+ "description": "Establish the failure on the real code, as a running test that fails for the right reason.",
43
+ "prompt": "The bug to fix: {{scope}}\n\nEstablish the failure on the REAL code before changing anything. Read the bug description and the involved source. Find how this project runs its tests (`list_package_scripts`, then read the existing test layout). Write ONE focused test that captures the exact wrong behavior, in the project's real test layout and style — never a scratch file like `src/bug.test.js`. Then run the suite with `run_package_script` (`test`) and confirm it FAILS because of your new test, for the right reason — quote the failing assertion. If the command needs first-use approval, say so and wait rather than guessing. If you cannot reproduce the bug at all, record every attempt honestly; do not invent a cause.\n\nWrite `{{workPath}}/repro.md` with exactly these sections: `## Symptom` (what the user sees, in their words), `## Repro command` (the exact command you ran), `## Expected`, `## Actual`, `## Red evidence` (the failing test's path and the quoted failing output from the real run). Cite the real files involved with backtick paths.\n\nObservable handoff: write the completed result to `{{workPath}}/repro.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.",
44
+ "suggestedRole": "debugging engineer",
45
+ "capabilityFloor": "small",
46
+ "toolPolicy": {
47
+ "disallowBuiltinToolsets": [
48
+ "ai-apps",
49
+ "archives",
50
+ "audio",
51
+ "browser-automation",
52
+ "craftbooks",
53
+ "data-tables",
54
+ "entity-intel",
55
+ "git",
56
+ "image-intel",
57
+ "images",
58
+ "role-delegation",
59
+ "role-delegation-escalation",
60
+ "security-intel",
61
+ "team-management",
62
+ "videos",
63
+ "web",
64
+ "workspace-fs-write"
65
+ ],
66
+ "outputMedium": "artifact"
67
+ },
68
+ "advanceWhen": {
69
+ "file": "{{workPath}}/repro.md",
70
+ "minBytes": 500,
71
+ "sniff": "nonempty",
72
+ "requireChange": true,
73
+ "artifact": true,
74
+ "goto": "locate"
75
+ },
76
+ "gate": {
77
+ "at": "completion",
78
+ "checks": [
79
+ {
80
+ "kind": "minBytes",
81
+ "file": "{{workPath}}/repro.md",
82
+ "bytes": 500,
83
+ "artifact": true
84
+ },
85
+ {
86
+ "kind": "sniff",
87
+ "file": "{{workPath}}/repro.md",
88
+ "sniff": "nonempty",
89
+ "artifact": true
90
+ },
91
+ {
92
+ "kind": "contains",
93
+ "file": "{{workPath}}/repro.md",
94
+ "pattern": "^##\\s+Symptom",
95
+ "flags": "im",
96
+ "label": "Symptom section",
97
+ "artifact": true
98
+ },
99
+ {
100
+ "kind": "contains",
101
+ "file": "{{workPath}}/repro.md",
102
+ "pattern": "^##\\s+Repro command",
103
+ "flags": "im",
104
+ "label": "Repro command section",
105
+ "artifact": true
106
+ },
107
+ {
108
+ "kind": "contains",
109
+ "file": "{{workPath}}/repro.md",
110
+ "pattern": "^##\\s+Expected",
111
+ "flags": "im",
112
+ "label": "Expected section",
113
+ "artifact": true
114
+ },
115
+ {
116
+ "kind": "contains",
117
+ "file": "{{workPath}}/repro.md",
118
+ "pattern": "^##\\s+Actual",
119
+ "flags": "im",
120
+ "label": "Actual section",
121
+ "artifact": true
122
+ },
123
+ {
124
+ "kind": "contains",
125
+ "file": "{{workPath}}/repro.md",
126
+ "pattern": "^##\\s+Red evidence",
127
+ "flags": "im",
128
+ "label": "Red evidence section",
129
+ "artifact": true
130
+ },
131
+ {
132
+ "kind": "citationsResolve",
133
+ "file": "{{workPath}}/repro.md",
134
+ "minCitations": 2,
135
+ "artifact": true
136
+ },
137
+ {
138
+ "kind": "commandEvidence",
139
+ "script": "test",
140
+ "expect": "fail",
141
+ "label": "the suite genuinely fails (red) with the new reproduction test"
142
+ }
143
+ ],
144
+ "onReject": "reproduce",
145
+ "maxAttempts": 4
146
+ },
147
+ "next": "locate"
148
+ },
149
+ {
150
+ "id": "locate",
151
+ "name": "Locate the defect",
152
+ "description": "Name the defect site and the causal chain from it to the symptom. No source edits.",
153
+ "prompt": "Read `{{workPath}}/repro.md`, then trace the failure to its source. Name the defect site precisely: file, symbol, and the first place state or logic goes wrong. Explain the causal chain from that site to the observed symptom, step by step. Check sibling cases: does the same defect pattern appear in neighboring code paths that just have no test yet? Do not edit any source in this phase.\n\nWrite `{{workPath}}/diagnosis.md` with exactly these sections: `## Defect site` (the file and symbol, with backtick paths), `## Causal chain`, `## Siblings checked` (which neighboring paths you inspected and what you found). Every path you cite must be real. Before working, open `{{workPath}}/repro.md` with `read_artifact`.\n\nObservable handoff: write the completed result to `{{workPath}}/diagnosis.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.",
154
+ "suggestedRole": "root-cause analyst",
155
+ "capabilityFloor": "small",
156
+ "toolPolicy": {
157
+ "disallowBuiltinToolsets": [
158
+ "ai-apps",
159
+ "archives",
160
+ "audio",
161
+ "browser-automation",
162
+ "code-execution",
163
+ "craftbooks",
164
+ "data-tables",
165
+ "entity-intel",
166
+ "git",
167
+ "image-intel",
168
+ "images",
169
+ "role-delegation",
170
+ "role-delegation-escalation",
171
+ "security-intel",
172
+ "team-management",
173
+ "videos",
174
+ "web",
175
+ "workspace-fs-write"
176
+ ],
177
+ "outputMedium": "artifact"
178
+ },
179
+ "consumes": [
180
+ {
181
+ "file": "{{workPath}}/repro.md",
182
+ "artifact": true
183
+ }
184
+ ],
185
+ "advanceWhen": {
186
+ "file": "{{workPath}}/diagnosis.md",
187
+ "minBytes": 600,
188
+ "sniff": "nonempty",
189
+ "requireChange": true,
190
+ "artifact": true,
191
+ "goto": "fix"
192
+ },
193
+ "gate": {
194
+ "at": "completion",
195
+ "checks": [
196
+ {
197
+ "kind": "minBytes",
198
+ "file": "{{workPath}}/diagnosis.md",
199
+ "bytes": 600,
200
+ "artifact": true
201
+ },
202
+ {
203
+ "kind": "sniff",
204
+ "file": "{{workPath}}/diagnosis.md",
205
+ "sniff": "nonempty",
206
+ "artifact": true
207
+ },
208
+ {
209
+ "kind": "contains",
210
+ "file": "{{workPath}}/diagnosis.md",
211
+ "pattern": "^##\\s+Defect site",
212
+ "flags": "im",
213
+ "label": "Defect site section",
214
+ "artifact": true
215
+ },
216
+ {
217
+ "kind": "contains",
218
+ "file": "{{workPath}}/diagnosis.md",
219
+ "pattern": "^##\\s+Causal chain",
220
+ "flags": "im",
221
+ "label": "Causal chain section",
222
+ "artifact": true
223
+ },
224
+ {
225
+ "kind": "contains",
226
+ "file": "{{workPath}}/diagnosis.md",
227
+ "pattern": "^##\\s+Siblings checked",
228
+ "flags": "im",
229
+ "label": "Siblings checked section",
230
+ "artifact": true
231
+ },
232
+ {
233
+ "kind": "citationsResolve",
234
+ "file": "{{workPath}}/diagnosis.md",
235
+ "minCitations": 2,
236
+ "artifact": true
237
+ }
238
+ ],
239
+ "onReject": "locate",
240
+ "maxAttempts": 4
241
+ },
242
+ "next": "fix"
243
+ },
244
+ {
245
+ "id": "fix",
246
+ "name": "Make the smallest fix",
247
+ "description": "Change the real defect site, minimally, keeping the new test as a regression guard.",
248
+ "prompt": "Read `{{workPath}}/diagnosis.md` and make the SMALLEST correct change at the defect site it names. There is no prescribed output path for source changes — edit the actual files from the diagnosis with `read_file` plus `write_file`/`replace_in_file`. Never special-case the reproduction's exact input just to silence the test; fix the cause. Cover the sibling cases the diagnosis flagged, and keep (or strengthen) the reproduction test so it becomes the permanent regression guard. Re-run the focused test while you work.\n\nThen write `{{workPath}}/fix-notes.md` with exactly these sections: `## Problem` (one paragraph), `## Change` (what you altered and why it breaks the causal chain), `## Files touched` (backtick path per line), `## Regression coverage` (which test now guards this), `## Risk` (what could still go wrong; be honest about anything unverified), `## How to verify` (the exact commands a person runs to confirm). Before working, open `{{workPath}}/diagnosis.md` with `read_artifact`.\n\nObservable handoff: write the completed result to `{{workPath}}/fix-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.",
249
+ "suggestedRole": "software engineer",
250
+ "capabilityFloor": "small",
251
+ "toolPolicy": {
252
+ "disallowBuiltinToolsets": [
253
+ "ai-apps",
254
+ "archives",
255
+ "audio",
256
+ "browser-automation",
257
+ "craftbooks",
258
+ "data-tables",
259
+ "entity-intel",
260
+ "git",
261
+ "image-intel",
262
+ "images",
263
+ "role-delegation",
264
+ "role-delegation-escalation",
265
+ "security-intel",
266
+ "team-management",
267
+ "videos",
268
+ "web"
269
+ ],
270
+ "outputMedium": "artifact",
271
+ "additionalOutputMedia": [
272
+ "task-note",
273
+ "workspace"
274
+ ]
275
+ },
276
+ "consumes": [
277
+ {
278
+ "file": "{{workPath}}/diagnosis.md",
279
+ "artifact": true
280
+ }
281
+ ],
282
+ "advanceWhen": {
283
+ "file": "{{workPath}}/fix-notes.md",
284
+ "minBytes": 700,
285
+ "sniff": "nonempty",
286
+ "requireChange": true,
287
+ "artifact": true,
288
+ "goto": "validate"
289
+ },
290
+ "gate": {
291
+ "at": "completion",
292
+ "checks": [
293
+ {
294
+ "kind": "minBytes",
295
+ "file": "{{workPath}}/fix-notes.md",
296
+ "bytes": 700,
297
+ "artifact": true
298
+ },
299
+ {
300
+ "kind": "sniff",
301
+ "file": "{{workPath}}/fix-notes.md",
302
+ "sniff": "nonempty",
303
+ "artifact": true
304
+ },
305
+ {
306
+ "kind": "contains",
307
+ "file": "{{workPath}}/fix-notes.md",
308
+ "pattern": "^##\\s+Problem",
309
+ "flags": "im",
310
+ "label": "Problem section",
311
+ "artifact": true
312
+ },
313
+ {
314
+ "kind": "contains",
315
+ "file": "{{workPath}}/fix-notes.md",
316
+ "pattern": "^##\\s+Change",
317
+ "flags": "im",
318
+ "label": "Change section",
319
+ "artifact": true
320
+ },
321
+ {
322
+ "kind": "contains",
323
+ "file": "{{workPath}}/fix-notes.md",
324
+ "pattern": "^##\\s+Files touched",
325
+ "flags": "im",
326
+ "label": "Files touched section",
327
+ "artifact": true
328
+ },
329
+ {
330
+ "kind": "contains",
331
+ "file": "{{workPath}}/fix-notes.md",
332
+ "pattern": "^##\\s+Regression coverage",
333
+ "flags": "im",
334
+ "label": "Regression coverage section",
335
+ "artifact": true
336
+ },
337
+ {
338
+ "kind": "contains",
339
+ "file": "{{workPath}}/fix-notes.md",
340
+ "pattern": "^##\\s+Risk",
341
+ "flags": "im",
342
+ "label": "Risk section",
343
+ "artifact": true
344
+ },
345
+ {
346
+ "kind": "contains",
347
+ "file": "{{workPath}}/fix-notes.md",
348
+ "pattern": "^##\\s+How to verify",
349
+ "flags": "im",
350
+ "label": "How to verify section",
351
+ "artifact": true
352
+ },
353
+ {
354
+ "kind": "citationsResolve",
355
+ "file": "{{workPath}}/fix-notes.md",
356
+ "minCitations": 2,
357
+ "artifact": true
358
+ }
359
+ ],
360
+ "onReject": "fix",
361
+ "maxAttempts": 4
362
+ },
363
+ "next": "validate"
364
+ },
365
+ {
366
+ "id": "validate",
367
+ "name": "Validate red-to-green",
368
+ "description": "Re-run the original reproduction and the whole suite; record the real results.",
369
+ "prompt": "Prove the fix with fresh eyes. Read `{{workPath}}/repro.md` and re-run the EXACT reproduction command it records with `run_package_script` (the suite runs ONLY through `run_package_script` with script name \"test\"; `run_installed_script` is for named ops scripts and is NOT the test runner) — the previously failing test must now pass, and the whole suite must be green. Anything you could not actually run gets labeled unverified, never claimed. If something regressed, your fix was too broad — go back and narrow it before validating again.\n\nWrite `{{workPath}}/validation.md` with exactly these sections: `## Repro re-run` (the command and what happened to the once-failing test), `## Suite` (the full-suite result), `## Result` (red-to-green confirmed, or what remains unverified and why). Before working, open `{{workPath}}/repro.md` with `read_artifact`.\n\nObservable handoff: write the completed result to `{{workPath}}/validation.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.",
370
+ "suggestedRole": "software engineer",
371
+ "capabilityFloor": "small",
372
+ "toolPolicy": {
373
+ "disallowBuiltinToolsets": [
374
+ "ai-apps",
375
+ "archives",
376
+ "audio",
377
+ "browser-automation",
378
+ "craftbooks",
379
+ "data-tables",
380
+ "entity-intel",
381
+ "git",
382
+ "image-intel",
383
+ "images",
384
+ "role-delegation",
385
+ "role-delegation-escalation",
386
+ "security-intel",
387
+ "team-management",
388
+ "videos",
389
+ "web",
390
+ "workspace-fs-write"
391
+ ],
392
+ "outputMedium": "artifact"
393
+ },
394
+ "consumes": [
395
+ {
396
+ "file": "{{workPath}}/repro.md",
397
+ "artifact": true
398
+ }
399
+ ],
400
+ "advanceWhen": {
401
+ "file": "{{workPath}}/validation.md",
402
+ "minBytes": 400,
403
+ "sniff": "nonempty",
404
+ "requireChange": true,
405
+ "artifact": true,
406
+ "goto": "evaluate"
407
+ },
408
+ "gate": {
409
+ "at": "completion",
410
+ "checks": [
411
+ {
412
+ "kind": "minBytes",
413
+ "file": "{{workPath}}/validation.md",
414
+ "bytes": 400,
415
+ "artifact": true
416
+ },
417
+ {
418
+ "kind": "sniff",
419
+ "file": "{{workPath}}/validation.md",
420
+ "sniff": "nonempty",
421
+ "artifact": true
422
+ },
423
+ {
424
+ "kind": "contains",
425
+ "file": "{{workPath}}/validation.md",
426
+ "pattern": "^##\\s+Repro re-run",
427
+ "flags": "im",
428
+ "label": "Repro re-run section",
429
+ "artifact": true
430
+ },
431
+ {
432
+ "kind": "contains",
433
+ "file": "{{workPath}}/validation.md",
434
+ "pattern": "^##\\s+Suite",
435
+ "flags": "im",
436
+ "label": "Suite section",
437
+ "artifact": true
438
+ },
439
+ {
440
+ "kind": "contains",
441
+ "file": "{{workPath}}/validation.md",
442
+ "pattern": "^##\\s+Result",
443
+ "flags": "im",
444
+ "label": "Result section",
445
+ "artifact": true
446
+ },
447
+ {
448
+ "kind": "commandEvidence",
449
+ "script": "test",
450
+ "expect": "pass",
451
+ "label": "the whole suite is green after the fix (verified run receipt)"
452
+ }
453
+ ],
454
+ "onReject": "validate",
455
+ "maxAttempts": 4
456
+ },
457
+ "next": "evaluate"
458
+ },
459
+ {
460
+ "id": "evaluate",
461
+ "name": "Evaluate the deliverable",
462
+ "description": "Independently grade the observable deliverable and route it to finish, repair, or user escalation.",
463
+ "prompt": "Review `{{workPath}}/validation.md`, `{{workPath}}/repro.md`, `{{workPath}}/diagnosis.md`, `{{workPath}}/fix-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 failure was reproduced with recorded red evidence: repro.md quotes a real failing run of a test that lives in the project's actual test layout, or the run stopped honestly at needs-user.\n2. diagnosis.md names a defect site that exists in this codebase and a causal chain that actually explains the symptom.\n3. The change is at that defect site, is minimal, and covers the sibling cases the diagnosis flagged — open the touched files and check; do not grade from fix-notes.md alone.\n4. validation.md re-ran the original reproduction command and the once-failing test now passes with the whole suite green — judged from the recorded runs, not the author's summary.\n5. The reproduction test survives as a permanent regression guard: it exists in the test layout and would fail again if the fix were reverted.\n6. fix-notes.md names every touched file (paths that exist), states residual risk honestly, and gives runnable verification steps.\n\nOpen `{{workPath}}/validation.md`, `{{workPath}}/repro.md`, `{{workPath}}/diagnosis.md`, `{{workPath}}/fix-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.",
464
+ "suggestedRole": "debugging reviewer",
465
+ "toolPolicy": {
466
+ "disallowBuiltinToolsets": [
467
+ "ai-apps",
468
+ "archives",
469
+ "audio",
470
+ "browser-automation",
471
+ "craftbooks",
472
+ "data-tables",
473
+ "entity-intel",
474
+ "git",
475
+ "image-intel",
476
+ "images",
477
+ "role-delegation",
478
+ "role-delegation-escalation",
479
+ "security-intel",
480
+ "team-management",
481
+ "videos",
482
+ "web",
483
+ "workspace-fs-write"
484
+ ],
485
+ "outputMedium": "artifact"
486
+ },
487
+ "consumes": [
488
+ {
489
+ "file": "{{workPath}}/validation.md",
490
+ "artifact": true
491
+ },
492
+ {
493
+ "file": "{{workPath}}/repro.md",
494
+ "artifact": true
495
+ },
496
+ {
497
+ "file": "{{workPath}}/diagnosis.md",
498
+ "artifact": true
499
+ },
500
+ {
501
+ "file": "{{workPath}}/fix-notes.md",
502
+ "artifact": true
503
+ }
504
+ ],
505
+ "gate": {
506
+ "at": "completion",
507
+ "checks": [
508
+ {
509
+ "kind": "minBytes",
510
+ "file": "{{workPath}}/review.md",
511
+ "bytes": 400,
512
+ "artifact": true
513
+ },
514
+ {
515
+ "kind": "contains",
516
+ "file": "{{workPath}}/review.md",
517
+ "pattern": "Verdict:\\s*(?:PASS|REVISE)",
518
+ "flags": "i",
519
+ "label": "explicit PASS or REVISE verdict",
520
+ "artifact": true
521
+ }
522
+ ],
523
+ "scripts": [
524
+ {
525
+ "name": "checkFixReview",
526
+ "scope": "standard",
527
+ "inputs": {
528
+ "reviewPath": "{{workPath}}/review.md",
529
+ "fixStepId": "repair"
530
+ }
531
+ }
532
+ ],
533
+ "onReject": "evaluate",
534
+ "maxAttempts": 4
535
+ },
536
+ "next": "finish"
537
+ },
538
+ {
539
+ "id": "repair",
540
+ "name": "Repair the deliverable",
541
+ "description": "Fix only the concrete gaps from the latest independent review.",
542
+ "prompt": "Read `{{workPath}}/review.md` with `read_artifact` and repair every failed criterion in `{{workPath}}/validation.md`, `{{workPath}}/repro.md`, `{{workPath}}/diagnosis.md`, `{{workPath}}/fix-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}}/validation.md` is genuinely updated this turn so the repair is observable, then hand it back for independent evaluation.",
543
+ "suggestedRole": "software engineer",
544
+ "toolPolicy": {
545
+ "disallowBuiltinToolsets": [
546
+ "ai-apps",
547
+ "archives",
548
+ "audio",
549
+ "browser-automation",
550
+ "craftbooks",
551
+ "data-tables",
552
+ "entity-intel",
553
+ "git",
554
+ "image-intel",
555
+ "images",
556
+ "role-delegation",
557
+ "role-delegation-escalation",
558
+ "security-intel",
559
+ "team-management",
560
+ "videos",
561
+ "web"
562
+ ],
563
+ "outputMedium": "artifact",
564
+ "additionalOutputMedia": [
565
+ "task-note",
566
+ "workspace"
567
+ ]
568
+ },
569
+ "consumes": [
570
+ {
571
+ "file": "{{workPath}}/review.md",
572
+ "artifact": true
573
+ },
574
+ {
575
+ "file": "{{workPath}}/validation.md",
576
+ "artifact": true
577
+ },
578
+ {
579
+ "file": "{{workPath}}/repro.md",
580
+ "artifact": true
581
+ },
582
+ {
583
+ "file": "{{workPath}}/diagnosis.md",
584
+ "artifact": true
585
+ },
586
+ {
587
+ "file": "{{workPath}}/fix-notes.md",
588
+ "artifact": true
589
+ }
590
+ ],
591
+ "advanceWhen": {
592
+ "file": "{{workPath}}/validation.md",
593
+ "minBytes": 400,
594
+ "sniff": "nonempty",
595
+ "requireChange": true,
596
+ "artifact": true,
597
+ "goto": "evaluate"
598
+ },
599
+ "gate": {
600
+ "at": "completion",
601
+ "checks": [
602
+ {
603
+ "kind": "minBytes",
604
+ "file": "{{workPath}}/validation.md",
605
+ "bytes": 400,
606
+ "artifact": true
607
+ },
608
+ {
609
+ "kind": "sniff",
610
+ "file": "{{workPath}}/validation.md",
611
+ "sniff": "nonempty",
612
+ "artifact": true
613
+ },
614
+ {
615
+ "kind": "contains",
616
+ "file": "{{workPath}}/validation.md",
617
+ "pattern": "^##\\s+Repro re-run",
618
+ "flags": "im",
619
+ "label": "Repro re-run section",
620
+ "artifact": true
621
+ },
622
+ {
623
+ "kind": "contains",
624
+ "file": "{{workPath}}/validation.md",
625
+ "pattern": "^##\\s+Suite",
626
+ "flags": "im",
627
+ "label": "Suite section",
628
+ "artifact": true
629
+ },
630
+ {
631
+ "kind": "contains",
632
+ "file": "{{workPath}}/validation.md",
633
+ "pattern": "^##\\s+Result",
634
+ "flags": "im",
635
+ "label": "Result section",
636
+ "artifact": true
637
+ },
638
+ {
639
+ "kind": "commandEvidence",
640
+ "script": "test",
641
+ "expect": "pass",
642
+ "label": "the whole suite is green after the fix (verified run receipt)"
643
+ }
644
+ ],
645
+ "onReject": "repair",
646
+ "maxAttempts": 4
647
+ },
648
+ "next": "evaluate"
649
+ },
650
+ {
651
+ "id": "finish",
652
+ "name": "Finish",
653
+ "description": "All deterministic and reviewer criteria passed.",
654
+ "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}}/validation.md`, `{{workPath}}/repro.md`, `{{workPath}}/diagnosis.md`, `{{workPath}}/fix-notes.md`) and the evidence that each acceptance criterion passed. Report DONE without starting new work.",
655
+ "suggestedRole": "project lead",
656
+ "toolPolicy": {
657
+ "disallowBuiltinToolsets": [
658
+ "ai-apps",
659
+ "archives",
660
+ "audio",
661
+ "browser-automation",
662
+ "code-execution",
663
+ "craftbooks",
664
+ "data-tables",
665
+ "entity-intel",
666
+ "git",
667
+ "image-intel",
668
+ "images",
669
+ "role-delegation",
670
+ "role-delegation-escalation",
671
+ "security-intel",
672
+ "team-management",
673
+ "videos",
674
+ "web",
675
+ "workspace-fs-write"
676
+ ],
677
+ "outputMedium": "task-note"
678
+ },
679
+ "consumes": [
680
+ {
681
+ "file": "{{workPath}}/review.md",
682
+ "artifact": true
683
+ }
684
+ ],
685
+ "terminal": true
686
+ },
687
+ {
688
+ "id": "needs-user",
689
+ "name": "Escalate unresolved concerns",
690
+ "description": "The bounded repair loop ended without a defensible pass.",
691
+ "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.",
692
+ "suggestedRole": "project lead",
693
+ "toolPolicy": {
694
+ "disallowBuiltinToolsets": [
695
+ "ai-apps",
696
+ "archives",
697
+ "audio",
698
+ "browser-automation",
699
+ "code-execution",
700
+ "craftbooks",
701
+ "data-tables",
702
+ "entity-intel",
703
+ "git",
704
+ "image-intel",
705
+ "images",
706
+ "role-delegation",
707
+ "role-delegation-escalation",
708
+ "security-intel",
709
+ "team-management",
710
+ "videos",
711
+ "web",
712
+ "workspace-fs-write"
713
+ ],
714
+ "outputMedium": "task-note"
715
+ },
716
+ "consumes": [
717
+ {
718
+ "file": "{{workPath}}/review.md",
719
+ "artifact": true
720
+ }
721
+ ],
722
+ "terminal": true
723
+ }
724
+ ],
725
+ "diffpackCapable": true,
726
+ "capabilityFloor": "small",
727
+ "version": "2.0.2",
728
+ "releasedAt": "2026-09-05T03:30:00Z",
729
+ "minGezelVersion": "1.26236"
730
+ }