@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,345 @@
1
+ {
2
+ "id": "corpus-email-digest",
3
+ "name": "Daily Email Digest from a Corpus",
4
+ "description": "Produce an email-ready digest that summarizes a corpus of content (docs, feeds, notes) for a recurring send. Scopes what matters and the format first, drafts the digest in a consistent voice, then builds the email-ready output and evaluates for accuracy and scannability.\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 digest (planner) — what to include, sections, format, length → gated on artifact `digest/scope.md` (markdown-notes)\n2. Draft the digest (copywriter) — write the digest from the corpus, with citations → gated on artifact `digest/draft.md` (markdown-doc)\n3. Build the email output (developer) — render to an email-ready format → gated on `digest.html` (html-page)\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
+ "daily summary",
8
+ "email digest",
9
+ "summarize this corpus",
10
+ "briefing"
11
+ ],
12
+ "paramSchema": {
13
+ "type": "object",
14
+ "properties": {
15
+ "workPath": {
16
+ "type": "string",
17
+ "title": "Working folder",
18
+ "description": "Per-task working folder in the artifacts drawer for this run's intermediate files. Defaults to this task's own folder so concurrent runs never overwrite each other; override with a stable name only when runs should deliberately share working files.",
19
+ "default": "{{task.dir}}"
20
+ }
21
+ }
22
+ },
23
+ "steps": [
24
+ {
25
+ "id": "scope",
26
+ "name": "Scope the digest",
27
+ "description": "what to include, sections, format, length",
28
+ "prompt": "List and read every supplied corpus file with workspace tools before scoping. Decide the digest window, included sources, section structure (headline, top items, one line each), target length, tone, citation format, and subject-line convention. Write an **acceptance-criteria checklist** (\"≤ N items per section\", \"every item cites its source\", \"scannable in under a minute\", \"no item outside the window\", \"no invented facts\"). Save the scope + checklist to artifact `{{workPath}}/scope.md` with `write_artifact`; note the path in task notes.",
29
+ "suggestedRole": "planner",
30
+ "toolPolicy": {
31
+ "disallowBuiltinToolsets": [
32
+ "ai-apps",
33
+ "archives",
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": 500,
69
+ "artifact": true
70
+ },
71
+ {
72
+ "kind": "sniff",
73
+ "file": "{{workPath}}/scope.md",
74
+ "sniff": "nonempty",
75
+ "artifact": true
76
+ },
77
+ {
78
+ "kind": "contains",
79
+ "file": "{{workPath}}/scope.md",
80
+ "pattern": "citation|source",
81
+ "flags": "i",
82
+ "label": "citation policy",
83
+ "artifact": true
84
+ },
85
+ {
86
+ "kind": "contains",
87
+ "file": "{{workPath}}/scope.md",
88
+ "pattern": "window|fresh|date",
89
+ "flags": "i",
90
+ "label": "freshness window",
91
+ "artifact": true
92
+ }
93
+ ],
94
+ "onReject": "scope",
95
+ "maxAttempts": 3
96
+ },
97
+ "next": "draft"
98
+ },
99
+ {
100
+ "id": "draft",
101
+ "name": "Draft the digest",
102
+ "description": "write the digest from the corpus, with citations",
103
+ "prompt": "Read artifact `{{workPath}}/scope.md` with `read_artifact`, then re-read every included corpus source with workspace `read_file`. Write the digest to the scoped structure: a subject line, one tight line per item, and an adjacent source filename/citation for every item. Lead with what matters, keep a consistent voice, and do not invent or merge unsupported facts. Save the complete draft to artifact `{{workPath}}/draft.md` with `write_artifact`; note the path in task notes.",
104
+ "suggestedRole": "copywriter",
105
+ "toolPolicy": {
106
+ "disallowBuiltinToolsets": [
107
+ "ai-apps",
108
+ "archives",
109
+ "audio",
110
+ "browser-automation",
111
+ "code-execution",
112
+ "craftbooks",
113
+ "data-tables",
114
+ "entity-intel",
115
+ "git",
116
+ "image-intel",
117
+ "images",
118
+ "role-delegation",
119
+ "role-delegation-escalation",
120
+ "security-intel",
121
+ "team-management",
122
+ "videos",
123
+ "web",
124
+ "workspace-fs-write"
125
+ ],
126
+ "outputMedium": "artifact",
127
+ "additionalOutputMedia": [
128
+ "task-note"
129
+ ]
130
+ },
131
+ "consumes": [
132
+ {
133
+ "file": "digest/scope.md",
134
+ "artifact": true
135
+ }
136
+ ],
137
+ "advanceWhen": {
138
+ "file": "{{workPath}}/draft.md",
139
+ "minBytes": 1,
140
+ "sniff": "nonempty",
141
+ "artifact": true
142
+ },
143
+ "gate": {
144
+ "at": "completion",
145
+ "checks": [
146
+ {
147
+ "kind": "minBytes",
148
+ "file": "{{workPath}}/draft.md",
149
+ "bytes": 700,
150
+ "artifact": true
151
+ },
152
+ {
153
+ "kind": "contains",
154
+ "file": "{{workPath}}/draft.md",
155
+ "pattern": "subject\\s*:",
156
+ "flags": "i",
157
+ "label": "subject line",
158
+ "artifact": true
159
+ },
160
+ {
161
+ "kind": "contains",
162
+ "file": "{{workPath}}/draft.md",
163
+ "pattern": "\\.md\\b|source\\s*:",
164
+ "flags": "i",
165
+ "label": "source citations",
166
+ "artifact": true
167
+ },
168
+ {
169
+ "kind": "contains",
170
+ "file": "{{workPath}}/draft.md",
171
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
172
+ "flags": "i",
173
+ "label": "at least one markdown heading",
174
+ "artifact": true
175
+ }
176
+ ],
177
+ "onReject": "draft",
178
+ "maxAttempts": 3
179
+ },
180
+ "next": "build"
181
+ },
182
+ {
183
+ "id": "build",
184
+ "name": "Build the email output",
185
+ "description": "render to an email-ready format",
186
+ "prompt": "Read artifacts `{{workPath}}/scope.md` and `{{workPath}}/draft.md` with `read_artifact`. Render the approved draft to workspace `digest.html` with `write_file`. Include the subject line in visible/preheader content, preserve every adjacent source citation, use semantic email-safe tables or blocks, and keep styles inline or in a small embedded style block with no external CSS, scripts, or network assets. On a loop-back, fix only the named gaps. `write_task_note` the workspace output path and item/source counts.",
187
+ "suggestedRole": "developer",
188
+ "toolPolicy": {
189
+ "disallowBuiltinToolsets": [
190
+ "ai-apps",
191
+ "archives",
192
+ "audio",
193
+ "browser-automation",
194
+ "code-execution",
195
+ "craftbooks",
196
+ "data-tables",
197
+ "entity-intel",
198
+ "git",
199
+ "image-intel",
200
+ "images",
201
+ "role-delegation",
202
+ "role-delegation-escalation",
203
+ "security-intel",
204
+ "team-management",
205
+ "videos",
206
+ "web"
207
+ ],
208
+ "outputMedium": "workspace",
209
+ "additionalOutputMedia": [
210
+ "task-note"
211
+ ]
212
+ },
213
+ "consumes": [
214
+ {
215
+ "file": "digest/scope.md",
216
+ "artifact": true
217
+ },
218
+ {
219
+ "file": "digest/draft.md",
220
+ "artifact": true
221
+ }
222
+ ],
223
+ "advanceWhen": {
224
+ "file": "digest.html",
225
+ "minBytes": 1,
226
+ "sniff": "html-complete"
227
+ },
228
+ "gate": {
229
+ "at": "completion",
230
+ "checks": [
231
+ {
232
+ "kind": "minBytes",
233
+ "file": "digest.html",
234
+ "bytes": 2200
235
+ },
236
+ {
237
+ "kind": "htmlLint",
238
+ "file": "digest.html"
239
+ },
240
+ {
241
+ "kind": "cssMinBytes",
242
+ "bytes": 350,
243
+ "file": "digest.html"
244
+ },
245
+ {
246
+ "kind": "contains",
247
+ "file": "digest.html",
248
+ "pattern": "subject\\s*:",
249
+ "flags": "i",
250
+ "label": "subject line"
251
+ },
252
+ {
253
+ "kind": "contains",
254
+ "file": "digest.html",
255
+ "pattern": "\\.md\\b|source\\s*:",
256
+ "flags": "i",
257
+ "label": "source citations"
258
+ }
259
+ ],
260
+ "scripts": [
261
+ {
262
+ "name": "checkHtmlComplete",
263
+ "scope": "standard",
264
+ "inputs": {
265
+ "file": "digest.html"
266
+ }
267
+ }
268
+ ],
269
+ "onReject": "build",
270
+ "maxAttempts": 4
271
+ },
272
+ "next": "evaluate"
273
+ },
274
+ {
275
+ "id": "evaluate",
276
+ "name": "Evaluate",
277
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
278
+ "prompt": "Read workspace `digest.html` with `read_file`, artifacts `{{workPath}}/scope.md` and `{{workPath}}/draft.md` with `read_artifact`, and the original corpus files with workspace tools. Check accuracy (every item traces to a corpus fact, nothing invented), citations (each item names its source), scannability, section/item limits, and freshness window. Confirm the HTML preserves the approved draft and has no external dependencies. Write PASS/FAIL per criterion.\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.",
279
+ "suggestedRole": "reviewer",
280
+ "toolPolicy": {
281
+ "disallowBuiltinToolsets": [
282
+ "ai-apps",
283
+ "archives",
284
+ "audio",
285
+ "browser-automation",
286
+ "code-execution",
287
+ "craftbooks",
288
+ "data-tables",
289
+ "entity-intel",
290
+ "git",
291
+ "image-intel",
292
+ "images",
293
+ "role-delegation",
294
+ "role-delegation-escalation",
295
+ "security-intel",
296
+ "team-management",
297
+ "videos",
298
+ "web",
299
+ "workspace-fs-write"
300
+ ],
301
+ "outputMedium": "task-note"
302
+ },
303
+ "consumes": [
304
+ {
305
+ "file": "digest.html"
306
+ }
307
+ ],
308
+ "next": "build"
309
+ },
310
+ {
311
+ "id": "finish",
312
+ "name": "Finish",
313
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
314
+ "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.",
315
+ "suggestedRole": "developer",
316
+ "toolPolicy": {
317
+ "disallowBuiltinToolsets": [
318
+ "ai-apps",
319
+ "archives",
320
+ "artifacts",
321
+ "audio",
322
+ "browser-automation",
323
+ "code-execution",
324
+ "craftbooks",
325
+ "data-tables",
326
+ "entity-intel",
327
+ "git",
328
+ "image-intel",
329
+ "images",
330
+ "role-delegation",
331
+ "role-delegation-escalation",
332
+ "security-intel",
333
+ "team-management",
334
+ "videos",
335
+ "web",
336
+ "workspace-fs-write"
337
+ ],
338
+ "outputMedium": "task-note"
339
+ },
340
+ "terminal": true
341
+ }
342
+ ],
343
+ "version": "1.2.4",
344
+ "releasedAt": "2026-09-05T03:30:00Z"
345
+ }
@@ -0,0 +1,187 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Corpus-grounded email-digest workflow",
4
+ "objective": "Run the Daily Email Digest from a Corpus craftbook and verify scoped citation rules and a source-grounded draft precede the final email-ready HTML.",
5
+ "tags": [
6
+ "html-page",
7
+ "corpus",
8
+ "workflow"
9
+ ],
10
+ "prompt": "Use the Daily Email Digest from a Corpus craftbook. Read every file under workspace `corpus/` and build workspace `digest.html` for a Friday leadership update. Include a visible subject line, three sections (Wins, Watchouts, Next Actions), one tight line per item, and an adjacent source filename for every item. Scope the digest and write a cited draft before rendering it. Use inline or embedded email-safe CSS only, with no scripts or external assets.",
11
+ "setup": {
12
+ "projectName": "Corpus Email Digest Eval",
13
+ "about": "Self-contained workflow eval for the Daily Email Digest from a Corpus craftbook. Source files are in the workspace, scope/draft deliverables belong in artifacts, and the final email belongs at workspace/digest.html.",
14
+ "missionObjectives": "Produce an accurate, scannable HTML email digest from all seeded corpus files with a subject line, three sections, adjacent source citations, and no invented items.",
15
+ "files": [
16
+ {
17
+ "path": "corpus/win-fulfillment.md",
18
+ "content": "# Fulfillment Note\nDate: 2026-06-24\nSource: win-fulfillment.md\n\nThe packing cell cleared a two-day backlog after introducing color-coded shelf labels. Error reships dropped from 19 last week to 7 this week.\n"
19
+ },
20
+ {
21
+ "path": "corpus/watchout-carrier.md",
22
+ "content": "# Carrier Watchout\nDate: 2026-06-25\nSource: watchout-carrier.md\n\nNorthline carrier scans are arriving up to 14 hours late for Zone 5 parcels. Customer support is seeing duplicate status tickets from premium subscribers.\n"
23
+ },
24
+ {
25
+ "path": "corpus/action-finance.md",
26
+ "content": "# Finance Action\nDate: 2026-06-26\nSource: action-finance.md\n\nFinance needs the exception export by Tuesday noon so it can approve the pilot automation budget before the July planning meeting.\n"
27
+ }
28
+ ],
29
+ "worker": {
30
+ "name": "Jules",
31
+ "role": "Developer"
32
+ }
33
+ },
34
+ "mocks": [],
35
+ "success": {
36
+ "summary": "A craftbook task produces scoped citation rules, a source-grounded artifact draft, and a complete email-ready workspace/digest.html.",
37
+ "deliverables": [
38
+ {
39
+ "path": "digest.html",
40
+ "kind": "html-page",
41
+ "minBytes": 2200,
42
+ "checks": [
43
+ {
44
+ "kind": "cssMinBytes",
45
+ "bytes": 350,
46
+ "file": "digest.html"
47
+ },
48
+ {
49
+ "kind": "contains",
50
+ "file": "digest.html",
51
+ "pattern": "Subject:",
52
+ "flags": "i"
53
+ },
54
+ {
55
+ "kind": "contains",
56
+ "file": "digest.html",
57
+ "pattern": "Wins[\\s\\S]*Watchouts[\\s\\S]*(?:Next Actions|Actions)",
58
+ "flags": "i"
59
+ },
60
+ {
61
+ "kind": "contains",
62
+ "file": "digest.html",
63
+ "pattern": "win-fulfillment\\.md"
64
+ },
65
+ {
66
+ "kind": "contains",
67
+ "file": "digest.html",
68
+ "pattern": "watchout-carrier\\.md"
69
+ },
70
+ {
71
+ "kind": "contains",
72
+ "file": "digest.html",
73
+ "pattern": "action-finance\\.md"
74
+ },
75
+ {
76
+ "kind": "contains",
77
+ "file": "digest.html",
78
+ "pattern": "19[\\s\\S]*7|7[\\s\\S]*19"
79
+ },
80
+ {
81
+ "kind": "contains",
82
+ "file": "digest.html",
83
+ "pattern": "14 hours|Tuesday noon",
84
+ "flags": "i"
85
+ },
86
+ {
87
+ "kind": "notContains",
88
+ "file": "digest.html",
89
+ "pattern": "<script\\b|https?://",
90
+ "flags": "i"
91
+ }
92
+ ]
93
+ }
94
+ ],
95
+ "checks": [
96
+ {
97
+ "kind": "minBytes",
98
+ "file": "digest/scope.md",
99
+ "bytes": 500,
100
+ "artifact": true
101
+ },
102
+ {
103
+ "kind": "contains",
104
+ "file": "digest/scope.md",
105
+ "pattern": "(?:citation|source)[\\s\\S]*(?:window|fresh|date)",
106
+ "flags": "i",
107
+ "artifact": true
108
+ },
109
+ {
110
+ "kind": "minBytes",
111
+ "file": "digest/draft.md",
112
+ "bytes": 700,
113
+ "artifact": true
114
+ },
115
+ {
116
+ "kind": "contains",
117
+ "file": "digest/draft.md",
118
+ "pattern": "subject\\s*:[\\s\\S]*win-fulfillment\\.md[\\s\\S]*watchout-carrier\\.md[\\s\\S]*action-finance\\.md",
119
+ "flags": "i",
120
+ "artifact": true
121
+ }
122
+ ],
123
+ "taskNotes": {
124
+ "minBytes": 160,
125
+ "checks": [
126
+ {
127
+ "kind": "contains",
128
+ "file": "task-notes.md",
129
+ "pattern": "scope\\.md",
130
+ "flags": "i"
131
+ },
132
+ {
133
+ "kind": "contains",
134
+ "file": "task-notes.md",
135
+ "pattern": "draft\\.md",
136
+ "flags": "i"
137
+ },
138
+ {
139
+ "kind": "contains",
140
+ "file": "task-notes.md",
141
+ "pattern": "digest\\.html",
142
+ "flags": "i"
143
+ }
144
+ ],
145
+ "requireCraftbookTask": true
146
+ },
147
+ "taskGraph": {
148
+ "requireCraftbookTask": true,
149
+ "requireTerminalStep": true
150
+ },
151
+ "unchangedFixtures": [
152
+ "corpus/win-fulfillment.md",
153
+ "corpus/watchout-carrier.md",
154
+ "corpus/action-finance.md"
155
+ ]
156
+ },
157
+ "rubric": {
158
+ "artifact": {
159
+ "path": "digest.html",
160
+ "kind": "html"
161
+ },
162
+ "axes": [
163
+ {
164
+ "name": "grounding",
165
+ "description": "Every digest item preserves a source fact and names the adjacent source without invented operational detail."
166
+ },
167
+ {
168
+ "name": "scannability",
169
+ "description": "The subject, sections, hierarchy, and one-line items can be understood in under a minute."
170
+ },
171
+ {
172
+ "name": "email readiness",
173
+ "description": "The HTML is self-contained, conservatively styled, and readable in an email-client-shaped viewport."
174
+ },
175
+ {
176
+ "name": "workflow evidence",
177
+ "description": "Scope and draft artifacts are substantive and align with the final email."
178
+ }
179
+ ]
180
+ },
181
+ "qualityFocus": [
182
+ "craftbook attribution",
183
+ "source-read enforcement",
184
+ "adjacent citations",
185
+ "artifact-to-workspace handoff"
186
+ ]
187
+ }
@@ -49,81 +49,94 @@
49
49
  "kind": "contains",
50
50
  "file": "tasks/eval/synthesis.md",
51
51
  "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
52
- "flags": "i"
52
+ "flags": "i",
53
+ "artifact": true
53
54
  },
54
55
  {
55
56
  "kind": "contains",
56
57
  "file": "tasks/eval/synthesis.md",
57
58
  "pattern": "\\[1\\]|\\[2\\]|\\[3\\]|\\[4\\]",
58
- "flags": "i"
59
+ "flags": "i",
60
+ "artifact": true
59
61
  },
60
62
  {
61
63
  "kind": "contains",
62
64
  "file": "tasks/eval/synthesis.md",
63
65
  "pattern": "status silence|barcode|Finance|exception export|West warehouse",
64
- "flags": "i"
66
+ "flags": "i",
67
+ "artifact": true
65
68
  },
66
69
  {
67
70
  "kind": "contains",
68
71
  "file": "tasks/eval/synthesis.md",
69
72
  "pattern": "status silence[\\s\\S]{0,400}auto-status emails|auto-status emails[\\s\\S]{0,400}status silence|reason codes",
70
73
  "flags": "i",
71
- "label": "include support status-silence and auto-status/reason-code needs"
74
+ "label": "include support status-silence and auto-status/reason-code needs",
75
+ "artifact": true
72
76
  },
73
77
  {
74
78
  "kind": "contains",
75
79
  "file": "tasks/eval/synthesis.md",
76
80
  "pattern": "barcode[\\s\\S]{0,400}training|training[\\s\\S]{0,400}barcode|Monday[\\s\\S]{0,250}SLA",
77
81
  "flags": "i",
78
- "label": "include warehouse barcode training or Monday SLA risk"
82
+ "label": "include warehouse barcode training or Monday SLA risk",
83
+ "artifact": true
79
84
  },
80
85
  {
81
86
  "kind": "contains",
82
87
  "file": "tasks/eval/synthesis.md",
83
88
  "pattern": "Finance[\\s\\S]{0,400}weekly exception export|weekly exception export[\\s\\S]{0,400}Finance",
84
89
  "flags": "i",
85
- "label": "include Finance weekly exception export approval dependency"
90
+ "label": "include Finance weekly exception export approval dependency",
91
+ "artifact": true
86
92
  },
87
93
  {
88
94
  "kind": "contains",
89
95
  "file": "tasks/eval/synthesis.md",
90
96
  "pattern": "West warehouse[\\s\\S]{0,400}30[ -]?days?|30[ -]?days?[\\s\\S]{0,400}West warehouse",
91
97
  "flags": "i",
92
- "label": "include the 30-day West warehouse expansion recommendation"
98
+ "label": "include the 30-day West warehouse expansion recommendation",
99
+ "artifact": true
93
100
  },
94
101
  {
95
102
  "kind": "contains",
96
103
  "file": "tasks/eval/synthesis.md",
97
104
  "pattern": "Sales[\\s\\S]{0,500}July[\\s\\S]{0,500}(Product|defer|contradiction|trade-off)|Product[\\s\\S]{0,500}(Sales|July)",
98
105
  "flags": "i",
99
- "label": "surface Product vs Sales rollout tension"
106
+ "label": "surface Product vs Sales rollout tension",
107
+ "artifact": true
100
108
  },
101
109
  {
102
110
  "kind": "contains",
103
111
  "file": "tasks/eval/synthesis.md",
104
112
  "pattern": "theme|recommendation|open questions|contradictions|trade-off",
105
- "flags": "i"
113
+ "flags": "i",
114
+ "artifact": true
106
115
  },
107
116
  {
108
117
  "kind": "contains",
109
118
  "file": "tasks/eval/synthesis.md",
110
119
  "pattern": "14\\.2%|8\\.9%|30 days|July",
111
- "flags": "i"
120
+ "flags": "i",
121
+ "artifact": true
112
122
  },
113
123
  {
114
124
  "kind": "notContains",
115
125
  "file": "tasks/eval/synthesis.md",
116
126
  "pattern": "Document 1 summary|File 1 summary|source-by-source",
117
- "flags": "i"
127
+ "flags": "i",
128
+ "artifact": true
118
129
  },
119
130
  {
120
131
  "kind": "notContains",
121
132
  "file": "tasks/eval/synthesis.md",
122
133
  "pattern": "PLM|resalable|restocking fees|warranty budget|target return rate|defect rate|returned goods inventory|dynamic fee|slotting|inventory management|SLA[^\\n]{0,120}30 days|30 days[^\\n]{0,120}SLA",
123
134
  "flags": "i",
124
- "label": "do not invent systems, accounting treatments, defect metrics, or SLA durations beyond the seeded corpus"
135
+ "label": "do not invent systems, accounting treatments, defect metrics, or SLA durations beyond the seeded corpus",
136
+ "artifact": true
125
137
  }
126
- ]
138
+ ],
139
+ "artifact": true
127
140
  }
128
141
  ]
129
142
  },
@@ -75,20 +75,20 @@
75
75
  },
76
76
  "axes": [
77
77
  {
78
- "name": "structure",
79
- "description": "Layout and hierarchy fit the content; sections are scannable and coherent."
78
+ "name": "grounding",
79
+ "description": "Seeded facts appear faithfully and the source is cited."
80
80
  },
81
81
  {
82
- "name": "grounding",
83
- "description": "Seeded source content is used faithfully — no invented facts or dropped requirements."
82
+ "name": "structure",
83
+ "description": "Sections progress logically for the artifact class."
84
84
  },
85
85
  {
86
- "name": "interactivity",
87
- "description": "Controls and states the page claims to offer actually work."
86
+ "name": "completeness",
87
+ "description": "Required elements (risks, next actions, scope) are all present."
88
88
  },
89
89
  {
90
- "name": "polish",
91
- "description": "Styling is intentional and responsive rather than unstyled or broken."
90
+ "name": "tone",
91
+ "description": "The register fits the audience and artifact class."
92
92
  }
93
93
  ]
94
94
  },