@bendyline/gilde 0.1.55 → 0.1.57

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 (191) hide show
  1. package/authoring/chat-models/glm-5.3-flash-320b-q2.json +129 -0
  2. package/authoring/chat-models/qwen3.8-flash-next-iq3.json +198 -0
  3. package/authoring/chat-models/qwen3.8-flash-next-iq4.json +198 -0
  4. package/authoring/gstack/wave.json +2 -2
  5. package/data/chat-models/gl/glm-5.3-flash-320b-q2/manifest.json +137 -0
  6. package/data/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.0/manifest.json +23 -0
  7. package/data/chat-models/index.json +1 -1
  8. package/data/chat-models/qw/qwen3.8-flash-next-iq3/manifest.json +221 -0
  9. package/data/chat-models/qw/qwen3.8-flash-next-iq3/versions/1.0.0/manifest.json +36 -0
  10. package/data/chat-models/qw/qwen3.8-flash-next-iq4/manifest.json +221 -0
  11. package/data/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.0.0/manifest.json +36 -0
  12. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.3/test.json +16 -8
  13. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.2/craftbook.json +618 -0
  14. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.2/test.json +228 -0
  15. package/data/craftbook-templates/al/album-curate/versions/1.0.3/test.json +6 -3
  16. package/data/craftbook-templates/al/alert-rules/versions/1.0.3/test.json +8 -8
  17. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.5/test.json +10 -5
  18. package/data/craftbook-templates/an/annual-document-review/versions/1.0.3/test.json +16 -8
  19. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.3/test.json +12 -6
  20. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.2/craftbook.json +602 -0
  21. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.2/test.json +290 -0
  22. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.3/test.json +18 -9
  23. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.5/test.json +10 -5
  24. package/data/craftbook-templates/au/auth-flow/versions/1.0.3/test.json +12 -6
  25. package/data/craftbook-templates/au/auth-flow/versions/1.0.4/craftbook.json +282 -0
  26. package/data/craftbook-templates/au/auth-flow/versions/1.0.4/test.json +143 -0
  27. package/data/craftbook-templates/au/automation-recipe/versions/1.0.3/test.json +12 -6
  28. package/data/craftbook-templates/ba/backup-routine/versions/1.0.4/craftbook.json +282 -0
  29. package/data/craftbook-templates/ba/backup-routine/versions/1.0.4/test.json +108 -0
  30. package/data/craftbook-templates/bl/blog-post/versions/1.0.3/test.json +8 -8
  31. package/data/craftbook-templates/br/branding-website/versions/1.1.3/craftbook.json +335 -0
  32. package/data/craftbook-templates/br/branding-website/versions/1.1.3/test.json +164 -0
  33. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.3/test.json +8 -8
  34. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.8/craftbook.json +621 -0
  35. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.8/test.json +376 -0
  36. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.2/craftbook.json +730 -0
  37. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.2/test.json +221 -0
  38. package/data/craftbook-templates/bu/build-loop/versions/1.1.1/test.json +8 -8
  39. package/data/craftbook-templates/ca/case-study/versions/1.0.3/test.json +8 -8
  40. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.4/test.json +10 -5
  41. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.3/test.json +25 -11
  42. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.2/craftbook.json +587 -0
  43. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.2/test.json +225 -0
  44. package/data/craftbook-templates/ci/citation-audit/versions/1.0.3/test.json +28 -14
  45. package/data/craftbook-templates/cl/cli-tool/versions/1.1.3/test.json +8 -8
  46. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.3/test.json +16 -8
  47. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.3/test.json +18 -9
  48. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.2/craftbook.json +605 -0
  49. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.2/test.json +252 -0
  50. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.3/test.json +18 -9
  51. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.3/test.json +23 -15
  52. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.3/test.json +28 -14
  53. package/data/craftbook-templates/co/content-deck/versions/1.2.3/craftbook.json +4 -4
  54. package/data/craftbook-templates/co/content-deck/versions/1.2.3/test.json +3 -0
  55. package/data/craftbook-templates/co/content-deck/versions/1.2.4/craftbook.json +341 -0
  56. package/data/craftbook-templates/co/content-deck/versions/1.2.4/test.json +169 -0
  57. package/data/craftbook-templates/co/copy-review/versions/1.0.3/test.json +14 -7
  58. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/craftbook.json +4 -4
  59. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/test.json +3 -0
  60. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/craftbook.json +345 -0
  61. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/test.json +187 -0
  62. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.3/test.json +26 -13
  63. package/data/craftbook-templates/co/cover-letter/versions/1.0.3/test.json +8 -8
  64. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.4/test.json +7 -7
  65. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.3/test.json +7 -7
  66. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.4/craftbook.json +285 -0
  67. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.4/test.json +104 -0
  68. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.5/craftbook.json +284 -0
  69. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.5/test.json +162 -0
  70. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.3/test.json +38 -19
  71. package/data/craftbook-templates/da/data-to-report/versions/1.0.3/test.json +12 -6
  72. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.4/craftbook.json +286 -0
  73. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.4/test.json +104 -0
  74. package/data/craftbook-templates/de/dependency-audit/versions/1.1.3/test.json +14 -7
  75. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.2/craftbook.json +621 -0
  76. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.2/test.json +235 -0
  77. package/data/craftbook-templates/de/design-review/versions/1.0.3/test.json +16 -8
  78. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.8/craftbook.json +616 -0
  79. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.8/test.json +201 -0
  80. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.4/craftbook.json +285 -0
  81. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.4/test.json +104 -0
  82. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.3/test.json +119 -55
  83. package/data/craftbook-templates/do/dockerize-app/versions/1.0.4/craftbook.json +285 -0
  84. package/data/craftbook-templates/do/dockerize-app/versions/1.0.4/test.json +92 -0
  85. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.3/test.json +18 -9
  86. package/data/craftbook-templates/dr/draft-social-post/versions/1.0.2/craftbook.json +324 -0
  87. package/data/craftbook-templates/dr/draft-social-post/versions/1.0.2/test.json +161 -0
  88. package/data/craftbook-templates/ed/edit-notes/versions/1.0.3/test.json +11 -4
  89. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.8/craftbook.json +566 -0
  90. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.8/test.json +191 -0
  91. package/data/craftbook-templates/ep/episode-plan/versions/1.0.3/test.json +10 -5
  92. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.7/test.json +7 -10
  93. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.8/craftbook.json +595 -0
  94. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.8/test.json +139 -0
  95. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.4/craftbook.json +277 -0
  96. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.4/test.json +104 -0
  97. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.2/craftbook.json +327 -0
  98. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.2/test.json +162 -0
  99. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.2/craftbook.json +718 -0
  100. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.2/test.json +239 -0
  101. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.4/craftbook.json +285 -0
  102. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.4/test.json +162 -0
  103. package/data/craftbook-templates/fo/form-wizard/versions/1.0.3/test.json +8 -8
  104. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.3/test.json +11 -4
  105. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.2/craftbook.json +610 -0
  106. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.2/test.json +220 -0
  107. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.3/craftbook.json +343 -0
  108. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.3/test.json +176 -0
  109. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.8/craftbook.json +566 -0
  110. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.8/test.json +141 -0
  111. package/data/craftbook-templates/im/image-set-index/versions/1.2.3/craftbook.json +298 -0
  112. package/data/craftbook-templates/im/image-set-index/versions/1.2.3/test.json +180 -0
  113. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.3/test.json +11 -4
  114. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.3/test.json +48 -23
  115. package/data/craftbook-templates/in/invitation-design/versions/1.0.3/test.json +1 -1
  116. package/data/craftbook-templates/index.json +1 -1
  117. package/data/craftbook-templates/it/item-intake/versions/1.0.3/test.json +11 -4
  118. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.4/craftbook.json +277 -0
  119. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.4/test.json +104 -0
  120. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.3/test.json +16 -8
  121. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.3/test.json +3 -0
  122. package/data/craftbook-templates/mo/morning-report/versions/1.0.3/test.json +21 -9
  123. package/data/craftbook-templates/of/office-hours/versions/1.1.1/test.json +8 -8
  124. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.2/craftbook.json +697 -0
  125. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.2/test.json +235 -0
  126. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.3/test.json +19 -8
  127. package/data/craftbook-templates/pl/plan/versions/1.0.2/test.json +8 -8
  128. package/data/craftbook-templates/pl/playtest-report/versions/1.0.3/test.json +17 -7
  129. package/data/craftbook-templates/pr/practice-exam/versions/1.0.3/test.json +7 -2
  130. package/data/craftbook-templates/pr/practice-session/versions/1.0.3/test.json +11 -4
  131. package/data/craftbook-templates/pu/pull-request-review/versions/1.9.2/craftbook.json +435 -0
  132. package/data/craftbook-templates/pu/pull-request-review/versions/1.9.2/test.json +141 -0
  133. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.3/test.json +16 -8
  134. package/data/craftbook-templates/re/receipt-intake/versions/1.0.3/test.json +11 -4
  135. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.4/craftbook.json +277 -0
  136. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.4/test.json +104 -0
  137. package/data/craftbook-templates/re/recipe-capture/versions/1.0.3/test.json +13 -5
  138. package/data/craftbook-templates/re/record-a-relative/versions/1.0.3/test.json +3 -0
  139. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.4/craftbook.json +285 -0
  140. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.4/test.json +104 -0
  141. package/data/craftbook-templates/re/refactor-module/versions/2.0.2/craftbook.json +695 -0
  142. package/data/craftbook-templates/re/refactor-module/versions/2.0.2/test.json +241 -0
  143. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.4/craftbook.json +361 -0
  144. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.4/test.json +138 -0
  145. package/data/craftbook-templates/re/release-notes/versions/1.0.4/test.json +8 -8
  146. package/data/craftbook-templates/re/release-notes/versions/1.0.5/craftbook.json +339 -0
  147. package/data/craftbook-templates/re/release-notes/versions/1.0.5/test.json +111 -0
  148. package/data/craftbook-templates/re/reliability-review/versions/1.0.3/test.json +16 -8
  149. package/data/craftbook-templates/re/research-report/versions/1.0.3/test.json +16 -8
  150. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.8/craftbook.json +596 -0
  151. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.8/test.json +157 -0
  152. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.4/test.json +13 -5
  153. package/data/craftbook-templates/sc/schema-migration/versions/2.0.2/craftbook.json +624 -0
  154. package/data/craftbook-templates/sc/schema-migration/versions/2.0.2/test.json +225 -0
  155. package/data/craftbook-templates/sc/script-automation/versions/1.0.4/craftbook.json +284 -0
  156. package/data/craftbook-templates/sc/script-automation/versions/1.0.4/test.json +162 -0
  157. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.7/test.json +10 -13
  158. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.8/craftbook.json +597 -0
  159. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.8/test.json +157 -0
  160. package/data/craftbook-templates/so/social-digest/versions/1.0.3/craftbook.json +239 -0
  161. package/data/craftbook-templates/so/social-digest/versions/1.0.3/test.json +168 -0
  162. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.3/test.json +25 -11
  163. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.8/craftbook.json +599 -0
  164. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.8/test.json +162 -0
  165. package/data/craftbook-templates/te/technical-documentation/versions/2.0.8/craftbook.json +577 -0
  166. package/data/craftbook-templates/te/technical-documentation/versions/2.0.8/test.json +174 -0
  167. package/data/craftbook-templates/te/test-coverage-review/versions/1.2.1/test.json +16 -8
  168. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.2/craftbook.json +592 -0
  169. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.2/test.json +195 -0
  170. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.3/test.json +6 -3
  171. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.3/test.json +11 -4
  172. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.3/test.json +9 -3
  173. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.3/test.json +10 -5
  174. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.3/test.json +6 -3
  175. package/data/craftbook-templates/tr/translate-content/versions/1.1.3/craftbook.json +140 -0
  176. package/data/craftbook-templates/tr/translate-content/versions/1.1.3/test.json +141 -0
  177. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.2/craftbook.json +594 -0
  178. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.2/test.json +221 -0
  179. package/data/craftbook-templates/ux/ux-update/versions/1.0.2/craftbook.json +606 -0
  180. package/data/craftbook-templates/ux/ux-update/versions/1.0.2/test.json +206 -0
  181. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.3/test.json +11 -4
  182. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.3/test.json +21 -9
  183. package/data/craftbook-templates/wh/whitepaper/versions/1.0.3/test.json +16 -8
  184. package/data/craftbook-templates/ye/year-in-review/versions/1.0.3/test.json +8 -4
  185. package/data/project-types/index.json +1 -1
  186. package/data/project-types/ju/just-chat/manifest.json +1 -1
  187. package/data/project-types/ju/just-chat/versions/1.0.1/about.md +5 -0
  188. package/data/project-types/ju/just-chat/versions/1.0.1/manifest.json +19 -0
  189. package/package.json +1 -1
  190. package/schemas/chat-model-identity.schema.json +27 -0
  191. package/schemas/chat-model-version.schema.json +22 -0
@@ -0,0 +1,282 @@
1
+ {
2
+ "id": "backup-routine",
3
+ "name": "Scheduled Backup or Export",
4
+ "description": "Build a scheduled, idempotent backup/export routine that snapshots data (files, a database, or an app export) to a timestamped, optionally compressed destination, prunes old backups by a retention policy, and verifies each backup is restorable. Locks what to back up, the destination layout, the retention policy, and the integrity check FIRST, then builds the snapshot-write-verify-prune routine, then verifies a fresh backup is created, integrity-checked, and that retention deletes only what it should. Defining retention and an integrity check up front is the wisdom that turns backups from a false sense of safety into a tested recovery path.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nDeliverables marked \"artifact\" land in the project's artifacts drawer (`write_artifact` / `read_artifact`), not the shipped workspace — review output is not product source.\n\nPhases:\n\n1. Scope the backup (planner) — sources, destination layout, retention, integrity check → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Build the routine (developer) — snapshot, write, integrity-check, prune, log → gated on `backup.sh` (code-module)\n3. Verify the routine (reviewer) — fresh backup, integrity, safe retention, idempotency → gated on artifact `{{workPath}}/verify.md` (markdown-notes)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
5
+ "entryStepId": "scope",
6
+ "triggers": [
7
+ "set up a backup",
8
+ "scheduled export",
9
+ "automate backups",
10
+ "backup my database",
11
+ "nightly backup routine"
12
+ ],
13
+ "paramSchema": {
14
+ "type": "object",
15
+ "properties": {
16
+ "workPath": {
17
+ "type": "string",
18
+ "title": "Working folder",
19
+ "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.",
20
+ "default": "{{task.dir}}"
21
+ }
22
+ }
23
+ },
24
+ "steps": [
25
+ {
26
+ "id": "scope",
27
+ "name": "Scope the backup",
28
+ "description": "sources, destination layout, retention, integrity check",
29
+ "prompt": "Define the backup contract before building. Step 1: list exactly what to back up (which directories / which database / which export endpoint) and what to exclude. Step 2: define the destination and naming layout (e.g. backups/{name}-{YYYYMMDD-HHMMSS}.tar.gz) and whether to compress and/or checksum. Step 3: define the retention policy precisely (e.g. keep last N, or keep dailies 7d + weeklies 4w) and confirm it can never delete the only/most-recent backup. Step 4: define the integrity check that proves a backup is restorable (verify the archive lists/extracts, the checksum matches, or a row-count/sentinel survives a test restore). Step 5: write an acceptance-criteria checklist ('a fresh timestamped backup is produced each run', 'backup passes the integrity check', 'retention prunes only out-of-policy backups and never the newest', 'run is idempotent and logs each backup', 'a failed source aborts with a non-zero status, no silent empty backup'). Call write_task_note with sources + layout + retention + integrity + checklist and write {{workPath}}/scope.md. No code yet.\n\nThe deliverable `{{workPath}}/scope.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
30
+ "suggestedRole": "planner",
31
+ "toolPolicy": {
32
+ "disallowBuiltinToolsets": [
33
+ "ai-apps",
34
+ "audio",
35
+ "browser-automation",
36
+ "code-execution",
37
+ "craftbooks",
38
+ "data-tables",
39
+ "entity-intel",
40
+ "git",
41
+ "image-intel",
42
+ "images",
43
+ "role-delegation",
44
+ "role-delegation-escalation",
45
+ "security-intel",
46
+ "team-management",
47
+ "videos",
48
+ "web",
49
+ "workspace-fs-write"
50
+ ],
51
+ "outputMedium": "artifact",
52
+ "additionalOutputMedia": [
53
+ "task-note"
54
+ ]
55
+ },
56
+ "advanceWhen": {
57
+ "file": "{{workPath}}/scope.md",
58
+ "minBytes": 1,
59
+ "sniff": "nonempty",
60
+ "artifact": true
61
+ },
62
+ "gate": {
63
+ "at": "completion",
64
+ "checks": [
65
+ {
66
+ "kind": "minBytes",
67
+ "file": "{{workPath}}/scope.md",
68
+ "bytes": 120,
69
+ "artifact": true
70
+ },
71
+ {
72
+ "kind": "sniff",
73
+ "file": "{{workPath}}/scope.md",
74
+ "sniff": "nonempty",
75
+ "artifact": true
76
+ }
77
+ ],
78
+ "onReject": "scope",
79
+ "maxAttempts": 3
80
+ },
81
+ "next": "build"
82
+ },
83
+ {
84
+ "id": "build",
85
+ "name": "Build the routine",
86
+ "description": "snapshot, write, integrity-check, prune, log",
87
+ "prompt": "Implement the backup routine to the locked contract. Step 1: snapshot the sources into a timestamped artifact at the destination (compress/checksum as scoped); fail loudly with a non-zero exit if a source is missing or empty rather than writing a hollow archive. Step 2: run the integrity check immediately after writing (list/extract the archive, verify the checksum) and mark the backup verified only if it passes. Step 3: apply the retention policy — compute which backups are out-of-policy and delete only those, with a hard guard that never removes the most-recent verified backup. Step 4: append a backup-log entry (timestamp, size, checksum, verified, pruned list). Step 5: write the routine as a cron-friendly runnable module. Call write_task_note with the module path, the destination layout, and how integrity + retention are enforced.",
88
+ "suggestedRole": "developer",
89
+ "toolPolicy": {
90
+ "disallowBuiltinToolsets": [
91
+ "ai-apps",
92
+ "artifacts",
93
+ "audio",
94
+ "browser-automation",
95
+ "code-execution",
96
+ "craftbooks",
97
+ "data-tables",
98
+ "entity-intel",
99
+ "git",
100
+ "image-intel",
101
+ "images",
102
+ "role-delegation",
103
+ "role-delegation-escalation",
104
+ "security-intel",
105
+ "team-management",
106
+ "videos",
107
+ "web"
108
+ ],
109
+ "outputMedium": "workspace",
110
+ "additionalOutputMedia": [
111
+ "task-note"
112
+ ]
113
+ },
114
+ "advanceWhen": {
115
+ "file": "backup.sh",
116
+ "minBytes": 1,
117
+ "sniff": "nonempty"
118
+ },
119
+ "gate": {
120
+ "at": "completion",
121
+ "checks": [
122
+ {
123
+ "kind": "minBytes",
124
+ "file": "backup.sh",
125
+ "bytes": 200
126
+ },
127
+ {
128
+ "kind": "sniff",
129
+ "file": "backup.sh",
130
+ "sniff": "nonempty"
131
+ },
132
+ {
133
+ "kind": "esmImports",
134
+ "file": "backup.sh"
135
+ },
136
+ {
137
+ "kind": "sourceParses",
138
+ "file": "backup.sh"
139
+ }
140
+ ],
141
+ "onReject": "build",
142
+ "maxAttempts": 3
143
+ },
144
+ "next": "verify"
145
+ },
146
+ {
147
+ "id": "verify",
148
+ "name": "Verify the routine",
149
+ "description": "fresh backup, integrity, safe retention, idempotency",
150
+ "prompt": "Verify the routine against scope. Step 1: confirm a run produces a fresh timestamped backup at the destination. Step 2: confirm the integrity check actually runs and that a corrupted/empty backup would be caught (the verified flag is meaningful). Step 3: confirm retention deletes only out-of-policy backups and that the newest verified backup is protected even at the retention boundary. Step 4: confirm idempotency and failure handling — a re-run does not clobber prior backups, and a missing source causes a non-zero exit with no hollow archive written. Step 5: confirm each backup is logged. Write PASS/FAIL per criterion to {{workPath}}/verify.md and task notes; on failure, name it and loop back to build.\n\nThe deliverable `{{workPath}}/verify.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
151
+ "suggestedRole": "reviewer",
152
+ "toolPolicy": {
153
+ "disallowBuiltinToolsets": [
154
+ "ai-apps",
155
+ "audio",
156
+ "browser-automation",
157
+ "code-execution",
158
+ "craftbooks",
159
+ "data-tables",
160
+ "entity-intel",
161
+ "git",
162
+ "image-intel",
163
+ "images",
164
+ "role-delegation",
165
+ "role-delegation-escalation",
166
+ "security-intel",
167
+ "team-management",
168
+ "videos",
169
+ "web",
170
+ "workspace-fs-write"
171
+ ],
172
+ "outputMedium": "artifact",
173
+ "additionalOutputMedia": [
174
+ "task-note"
175
+ ]
176
+ },
177
+ "advanceWhen": {
178
+ "file": "{{workPath}}/verify.md",
179
+ "minBytes": 1,
180
+ "sniff": "nonempty",
181
+ "artifact": true
182
+ },
183
+ "gate": {
184
+ "at": "completion",
185
+ "checks": [
186
+ {
187
+ "kind": "minBytes",
188
+ "file": "backup.sh",
189
+ "bytes": 200
190
+ },
191
+ {
192
+ "kind": "sniff",
193
+ "file": "backup.sh",
194
+ "sniff": "nonempty"
195
+ },
196
+ {
197
+ "kind": "esmImports",
198
+ "file": "backup.sh"
199
+ },
200
+ {
201
+ "kind": "sourceParses",
202
+ "file": "backup.sh"
203
+ }
204
+ ],
205
+ "onReject": "verify",
206
+ "maxAttempts": 4
207
+ },
208
+ "next": "evaluate"
209
+ },
210
+ {
211
+ "id": "evaluate",
212
+ "name": "Evaluate",
213
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
214
+ "prompt": "Run backup.sh in a scratch location (or trace it) and verify every criterion from {{workPath}}/scope.md: a fresh timestamped backup is created, the integrity check runs and is meaningful, retention prunes only out-of-policy backups and never the newest verified one, a missing source aborts non-zero with no hollow archive, runs are idempotent, and each backup is logged. Write PASS/FAIL per criterion; on any failure, name it and loop back to build.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"build\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
215
+ "suggestedRole": "reviewer",
216
+ "toolPolicy": {
217
+ "disallowBuiltinToolsets": [
218
+ "ai-apps",
219
+ "artifacts",
220
+ "audio",
221
+ "browser-automation",
222
+ "code-execution",
223
+ "craftbooks",
224
+ "data-tables",
225
+ "entity-intel",
226
+ "git",
227
+ "image-intel",
228
+ "images",
229
+ "role-delegation",
230
+ "role-delegation-escalation",
231
+ "security-intel",
232
+ "team-management",
233
+ "videos",
234
+ "web",
235
+ "workspace-fs-write"
236
+ ],
237
+ "outputMedium": "task-note"
238
+ },
239
+ "consumes": [
240
+ {
241
+ "file": "backup.sh"
242
+ }
243
+ ],
244
+ "next": "build"
245
+ },
246
+ {
247
+ "id": "finish",
248
+ "name": "Finish",
249
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
250
+ "prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.",
251
+ "suggestedRole": "developer",
252
+ "toolPolicy": {
253
+ "disallowBuiltinToolsets": [
254
+ "ai-apps",
255
+ "archives",
256
+ "artifacts",
257
+ "audio",
258
+ "browser-automation",
259
+ "code-execution",
260
+ "craftbooks",
261
+ "data-tables",
262
+ "entity-intel",
263
+ "git",
264
+ "image-intel",
265
+ "images",
266
+ "role-delegation",
267
+ "role-delegation-escalation",
268
+ "security-intel",
269
+ "team-management",
270
+ "videos",
271
+ "web",
272
+ "workspace-fs-write"
273
+ ],
274
+ "outputMedium": "task-note"
275
+ },
276
+ "terminal": true
277
+ }
278
+ ],
279
+ "version": "1.0.4",
280
+ "releasedAt": "2026-09-05T03:30:00Z",
281
+ "minGezelVersion": "1.26233"
282
+ }
@@ -0,0 +1,108 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Cron-friendly backup script from retention brief",
4
+ "objective": "Measure whether the backup-routine craftbook scopes retention and integrity before producing a cautious backup script.",
5
+ "tags": [
6
+ "data"
7
+ ],
8
+ "prompt": "In the `Backup Routine Eval` project, read `source/backup-brief.md` and write `backup.sh`: a cron-friendly shell script that snapshots the source directory, writes a timestamped compressed archive, computes a checksum, verifies integrity, prunes old backups safely, logs each run, and exits non-zero on missing or empty sources.",
9
+ "setup": {
10
+ "projectName": "Backup Routine Eval",
11
+ "about": "Self-contained eval project for backup-routine. The operational brief is in workspace/source/backup-brief.md and the deliverable is workspace/backup.sh.",
12
+ "missionObjectives": "Write a cautious backup script with retention, integrity checking, newest-backup protection, logging, and explicit failure handling.",
13
+ "files": [
14
+ {
15
+ "path": "source/backup-brief.md",
16
+ "content": "# Backup routine brief\n\nSource directory: ./var/app-data. Exclude cache/ and tmp/. Destination: ./backups. Archive name: app-data-YYYYMMDD-HHMMSS.tar.gz. Retention: keep the last 7 verified backups and never delete the newest verified backup. Integrity: write a SHA-256 checksum file and verify the archive can be listed before marking it verified. Log file: backup.log with timestamp, archive path, size, checksum, verified flag, and pruned files. Failure handling: missing or empty source must abort non-zero and must not write a hollow archive.\n"
17
+ }
18
+ ],
19
+ "worker": {
20
+ "name": "Daan",
21
+ "role": "Developer"
22
+ }
23
+ },
24
+ "mocks": [],
25
+ "success": {
26
+ "summary": "workspace/backup.sh is a runnable-looking shell routine with timestamped archive, checksum verification, retention pruning, logging, and guarded failure behavior.",
27
+ "deliverables": [
28
+ {
29
+ "path": "backup.sh",
30
+ "kind": "generic-file",
31
+ "minBytes": 1600,
32
+ "checks": [
33
+ {
34
+ "kind": "contains",
35
+ "file": "backup.sh",
36
+ "pattern": "set -euo pipefail|set -eu",
37
+ "flags": "i"
38
+ },
39
+ {
40
+ "kind": "contains",
41
+ "file": "backup.sh",
42
+ "pattern": "tar|gzip|\\.tar\\.gz",
43
+ "flags": "i"
44
+ },
45
+ {
46
+ "kind": "contains",
47
+ "file": "backup.sh",
48
+ "pattern": "sha256sum|shasum",
49
+ "flags": "i"
50
+ },
51
+ {
52
+ "kind": "contains",
53
+ "file": "backup.sh",
54
+ "pattern": "retention|keep|prune|delete",
55
+ "flags": "i"
56
+ },
57
+ {
58
+ "kind": "contains",
59
+ "file": "backup.sh",
60
+ "pattern": "newest|latest|verified",
61
+ "flags": "i"
62
+ },
63
+ {
64
+ "kind": "contains",
65
+ "file": "backup.sh",
66
+ "pattern": "backup.log|log",
67
+ "flags": "i"
68
+ },
69
+ {
70
+ "kind": "contains",
71
+ "file": "backup.sh",
72
+ "pattern": "exit 1|return 1|non-zero|missing|empty",
73
+ "flags": "i"
74
+ }
75
+ ]
76
+ }
77
+ ]
78
+ },
79
+ "rubric": {
80
+ "artifact": {
81
+ "path": "backup.sh",
82
+ "kind": "text"
83
+ },
84
+ "axes": [
85
+ {
86
+ "name": "accuracy",
87
+ "description": "Computed figures are correct against the seeded records."
88
+ },
89
+ {
90
+ "name": "grounding",
91
+ "description": "Every claim traces to the seeded data — nothing invented."
92
+ },
93
+ {
94
+ "name": "structure",
95
+ "description": "Tables and sections make the analysis checkable at a glance."
96
+ },
97
+ {
98
+ "name": "actionability",
99
+ "description": "Recommendations follow from the findings and are concretely doable."
100
+ }
101
+ ]
102
+ },
103
+ "qualityFocus": [
104
+ "integrity check",
105
+ "safe retention",
106
+ "non-zero failure handling"
107
+ ]
108
+ }
@@ -83,20 +83,20 @@
83
83
  },
84
84
  "axes": [
85
85
  {
86
- "name": "safety",
87
- "description": "Dry-run posture is explicit: no real credentials, clear stop-before-side-effect boundary."
86
+ "name": "grounding",
87
+ "description": "Seeded facts appear faithfully and the source is cited."
88
88
  },
89
89
  {
90
- "name": "mapping",
91
- "description": "Fake endpoints/commands are mapped completely to the workflow steps."
90
+ "name": "structure",
91
+ "description": "Sections progress logically for the artifact class."
92
92
  },
93
93
  {
94
- "name": "signals",
95
- "description": "Success, failure, retry, and abort conditions are all defined."
94
+ "name": "completeness",
95
+ "description": "Required elements (risks, next actions, scope) are all present."
96
96
  },
97
97
  {
98
- "name": "containment",
99
- "description": "The plan cannot accidentally reach a real service from a mock context."
98
+ "name": "tone",
99
+ "description": "The register fits the audience and artifact class."
100
100
  }
101
101
  ]
102
102
  },