@bendyline/gilde 0.1.57 → 0.1.59

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 (48) hide show
  1. package/data/craftbook-templates/ba/backup-routine/versions/1.0.4/craftbook.json +0 -16
  2. package/data/craftbook-templates/bo/booking-automation/versions/1.0.3/craftbook.json +0 -16
  3. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.3/test.json +7 -10
  4. package/data/craftbook-templates/co/content-deck/versions/1.2.4/craftbook.json +4 -4
  5. package/data/craftbook-templates/co/content-deck/versions/1.2.4/test.json +3 -0
  6. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/craftbook.json +4 -4
  7. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/test.json +3 -0
  8. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.4/craftbook.json +0 -16
  9. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.4/craftbook.json +0 -16
  10. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.4/craftbook.json +0 -16
  11. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.3/test.json +3 -6
  12. package/data/craftbook-templates/do/dockerize-app/versions/1.0.4/craftbook.json +0 -16
  13. package/data/craftbook-templates/ed/edit-notes/versions/1.0.3/test.json +5 -8
  14. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.4/craftbook.json +0 -16
  15. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.3/test.json +5 -8
  16. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.3/test.json +6 -9
  17. package/data/craftbook-templates/index.json +1 -1
  18. package/data/craftbook-templates/it/item-intake/versions/1.0.3/test.json +7 -10
  19. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.3/test.json +9 -11
  20. package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.3/craftbook.json +0 -16
  21. package/data/craftbook-templates/mo/morning-report/versions/1.0.3/test.json +14 -17
  22. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.4/craftbook.json +314 -0
  23. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.4/test.json +89 -0
  24. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.3/test.json +12 -15
  25. package/data/craftbook-templates/pl/playtest-report/versions/1.0.3/test.json +9 -12
  26. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.10/craftbook.json +581 -0
  27. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.10/test.json +240 -0
  28. package/data/craftbook-templates/pr/practice-exam/versions/1.0.3/test.json +3 -6
  29. package/data/craftbook-templates/pr/practice-session/versions/1.0.3/test.json +6 -9
  30. package/data/craftbook-templates/pr/price-tracker/versions/1.0.3/craftbook.json +0 -8
  31. package/data/craftbook-templates/re/receipt-intake/versions/1.0.3/test.json +8 -11
  32. package/data/craftbook-templates/re/recipe-capture/versions/1.0.3/test.json +8 -11
  33. package/data/craftbook-templates/re/record-a-relative/versions/1.0.3/test.json +9 -11
  34. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.4/craftbook.json +0 -16
  35. package/data/craftbook-templates/re/report-pdf/versions/1.1.4/craftbook.json +315 -0
  36. package/data/craftbook-templates/re/report-pdf/versions/1.1.4/test.json +101 -0
  37. package/data/craftbook-templates/re/research-to-document/versions/1.2.4/craftbook.json +386 -0
  38. package/data/craftbook-templates/re/research-to-document/versions/1.2.4/test.json +242 -0
  39. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.4/test.json +9 -12
  40. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.3/test.json +15 -18
  41. package/data/craftbook-templates/sq/sql-analysis/versions/1.0.3/craftbook.json +0 -8
  42. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.3/test.json +5 -8
  43. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.3/test.json +5 -8
  44. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.3/test.json +5 -8
  45. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.3/test.json +13 -16
  46. package/data/toolsets/do/docblocks/versions/2.6.0/manifest.json +95 -0
  47. package/data/toolsets/index.json +1 -1
  48. package/package.json +1 -1
@@ -128,14 +128,6 @@
128
128
  "kind": "sniff",
129
129
  "file": "backup.sh",
130
130
  "sniff": "nonempty"
131
- },
132
- {
133
- "kind": "esmImports",
134
- "file": "backup.sh"
135
- },
136
- {
137
- "kind": "sourceParses",
138
- "file": "backup.sh"
139
131
  }
140
132
  ],
141
133
  "onReject": "build",
@@ -192,14 +184,6 @@
192
184
  "kind": "sniff",
193
185
  "file": "backup.sh",
194
186
  "sniff": "nonempty"
195
- },
196
- {
197
- "kind": "esmImports",
198
- "file": "backup.sh"
199
- },
200
- {
201
- "kind": "sourceParses",
202
- "file": "backup.sh"
203
187
  }
204
188
  ],
205
189
  "onReject": "verify",
@@ -104,14 +104,6 @@
104
104
  "kind": "sniff",
105
105
  "file": "booking.py",
106
106
  "sniff": "nonempty"
107
- },
108
- {
109
- "kind": "esmImports",
110
- "file": "booking.py"
111
- },
112
- {
113
- "kind": "sourceParses",
114
- "file": "booking.py"
115
107
  }
116
108
  ],
117
109
  "onReject": "build",
@@ -167,14 +159,6 @@
167
159
  "kind": "sniff",
168
160
  "file": "booking_test.py",
169
161
  "sniff": "nonempty"
170
- },
171
- {
172
- "kind": "esmImports",
173
- "file": "booking_test.py"
174
- },
175
- {
176
- "kind": "sourceParses",
177
- "file": "booking_test.py"
178
162
  }
179
163
  ],
180
164
  "scripts": [
@@ -31,14 +31,11 @@
31
31
  "worker": {
32
32
  "name": "Ellen",
33
33
  "role": "Assetsmid"
34
- },
35
- "craftbookParams": {
36
- "workPath": "tasks/eval"
37
34
  }
38
35
  },
39
36
  "mocks": [],
40
37
  "success": {
41
- "summary": "assets/characters/knight holds the four turnaround views; the manifest records each with seed and prompt; tasks/eval/report.md hands the set to the sprite work.",
38
+ "summary": "assets/characters/knight holds the four turnaround views; the manifest records each with seed and prompt; report.md in this task's own artifacts working folder hands the set to the sprite work.",
42
39
  "checks": [
43
40
  {
44
41
  "kind": "fileCount",
@@ -120,20 +117,20 @@
120
117
  "artifact": true
121
118
  },
122
119
  {
123
- "path": "tasks/eval/report.md",
120
+ "path": "{{task.dir}}/report.md",
124
121
  "kind": "markdown-report",
125
122
  "minBytes": 600,
126
123
  "checks": [
127
124
  {
128
125
  "kind": "contains",
129
- "file": "tasks/eval/report.md",
126
+ "file": "{{task.dir}}/report.md",
130
127
  "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
131
128
  "flags": "i",
132
129
  "artifact": true
133
130
  },
134
131
  {
135
132
  "kind": "contains",
136
- "file": "tasks/eval/report.md",
133
+ "file": "{{task.dir}}/report.md",
137
134
  "pattern": "front",
138
135
  "flags": "i",
139
136
  "label": "front view named",
@@ -141,7 +138,7 @@
141
138
  },
142
139
  {
143
140
  "kind": "contains",
144
- "file": "tasks/eval/report.md",
141
+ "file": "{{task.dir}}/report.md",
145
142
  "pattern": "side|profile",
146
143
  "flags": "i",
147
144
  "label": "side view named",
@@ -149,7 +146,7 @@
149
146
  },
150
147
  {
151
148
  "kind": "contains",
152
- "file": "tasks/eval/report.md",
149
+ "file": "{{task.dir}}/report.md",
153
150
  "pattern": "back",
154
151
  "flags": "i",
155
152
  "label": "back view named",
@@ -162,7 +159,7 @@
162
159
  },
163
160
  "rubric": {
164
161
  "artifact": {
165
- "path": "tasks/eval/report.md",
162
+ "path": "{{task.dir}}/report.md",
166
163
  "kind": "markdown"
167
164
  },
168
165
  "axes": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "content-deck",
3
3
  "name": "Slide Deck from Content",
4
- "description": "Turn a body of source content into a presentation deck. Outlines the narrative first, designs a consistent slide look, then builds the deck (HTML slides), evaluating for narrative flow and visual consistency.\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. Outline the deck (planner) — narrative arc + per-slide bullets from the source → gated on artifact `deck/outline.md` (markdown-notes)\n2. Slide design (designer) — a consistent slide template + palette → gated on artifact `deck/design-system.md` (markdown-notes)\n3. Build the deck (developer) — generate the slides to the template → gated on `index.html` (slide-deck)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
4
+ "description": "Turn a body of source content into a presentation deck. Outlines the narrative first, designs a consistent slide look, then builds the deck (HTML slides), evaluating for narrative flow and visual consistency.\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. Outline the deck (planner) — narrative arc + per-slide bullets from the source → gated on artifact `{{workPath}}/outline.md` (markdown-notes)\n2. Slide design (designer) — a consistent slide template + palette → gated on artifact `{{workPath}}/design-system.md` (markdown-notes)\n3. Build the deck (developer) — generate the slides to the template → gated on `index.html` (slide-deck)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
5
5
  "entryStepId": "outline",
6
6
  "triggers": [
7
7
  "slide deck",
@@ -130,7 +130,7 @@
130
130
  },
131
131
  "consumes": [
132
132
  {
133
- "file": "deck/outline.md",
133
+ "file": "{{workPath}}/outline.md",
134
134
  "artifact": true
135
135
  }
136
136
  ],
@@ -210,11 +210,11 @@
210
210
  },
211
211
  "consumes": [
212
212
  {
213
- "file": "deck/outline.md",
213
+ "file": "{{workPath}}/outline.md",
214
214
  "artifact": true
215
215
  },
216
216
  {
217
- "file": "deck/design-system.md",
217
+ "file": "{{workPath}}/design-system.md",
218
218
  "artifact": true
219
219
  }
220
220
  ],
@@ -20,6 +20,9 @@
20
20
  "worker": {
21
21
  "name": "Sanne",
22
22
  "role": "Developer"
23
+ },
24
+ "craftbookParams": {
25
+ "workPath": "deck"
23
26
  }
24
27
  },
25
28
  "mocks": [],
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "corpus-email-digest",
3
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",
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 `{{workPath}}/scope.md` (markdown-notes)\n2. Draft the digest (copywriter) — write the digest from the corpus, with citations → gated on artifact `{{workPath}}/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
5
  "entryStepId": "scope",
6
6
  "triggers": [
7
7
  "daily summary",
@@ -130,7 +130,7 @@
130
130
  },
131
131
  "consumes": [
132
132
  {
133
- "file": "digest/scope.md",
133
+ "file": "{{workPath}}/scope.md",
134
134
  "artifact": true
135
135
  }
136
136
  ],
@@ -212,11 +212,11 @@
212
212
  },
213
213
  "consumes": [
214
214
  {
215
- "file": "digest/scope.md",
215
+ "file": "{{workPath}}/scope.md",
216
216
  "artifact": true
217
217
  },
218
218
  {
219
- "file": "digest/draft.md",
219
+ "file": "{{workPath}}/draft.md",
220
220
  "artifact": true
221
221
  }
222
222
  ],
@@ -29,6 +29,9 @@
29
29
  "worker": {
30
30
  "name": "Jules",
31
31
  "role": "Developer"
32
+ },
33
+ "craftbookParams": {
34
+ "workPath": "digest"
32
35
  }
33
36
  },
34
37
  "mocks": [],
@@ -129,14 +129,6 @@
129
129
  "kind": "sniff",
130
130
  "file": "migrate.py",
131
131
  "sniff": "nonempty"
132
- },
133
- {
134
- "kind": "esmImports",
135
- "file": "migrate.py"
136
- },
137
- {
138
- "kind": "sourceParses",
139
- "file": "migrate.py"
140
132
  }
141
133
  ],
142
134
  "onReject": "build",
@@ -194,14 +186,6 @@
194
186
  "kind": "sniff",
195
187
  "file": "migrate.py",
196
188
  "sniff": "nonempty"
197
- },
198
- {
199
- "kind": "esmImports",
200
- "file": "migrate.py"
201
- },
202
- {
203
- "kind": "sourceParses",
204
- "file": "migrate.py"
205
189
  }
206
190
  ],
207
191
  "onReject": "verify",
@@ -130,14 +130,6 @@
130
130
  "kind": "sniff",
131
131
  "file": "migrations/add_indexes.sql",
132
132
  "sniff": "nonempty"
133
- },
134
- {
135
- "kind": "esmImports",
136
- "file": "migrations/add_indexes.sql"
137
- },
138
- {
139
- "kind": "sourceParses",
140
- "file": "migrations/add_indexes.sql"
141
133
  }
142
134
  ],
143
135
  "onReject": "change",
@@ -195,14 +187,6 @@
195
187
  "kind": "sniff",
196
188
  "file": "migrations/add_indexes.sql",
197
189
  "sniff": "nonempty"
198
- },
199
- {
200
- "kind": "esmImports",
201
- "file": "migrations/add_indexes.sql"
202
- },
203
- {
204
- "kind": "sourceParses",
205
- "file": "migrations/add_indexes.sql"
206
190
  }
207
191
  ],
208
192
  "onReject": "verify",
@@ -129,14 +129,6 @@
129
129
  "kind": "sniff",
130
130
  "file": "intake.py",
131
131
  "sniff": "nonempty"
132
- },
133
- {
134
- "kind": "esmImports",
135
- "file": "intake.py"
136
- },
137
- {
138
- "kind": "sourceParses",
139
- "file": "intake.py"
140
132
  }
141
133
  ],
142
134
  "onReject": "build",
@@ -194,14 +186,6 @@
194
186
  "kind": "sniff",
195
187
  "file": "intake.py",
196
188
  "sniff": "nonempty"
197
- },
198
- {
199
- "kind": "esmImports",
200
- "file": "intake.py"
201
- },
202
- {
203
- "kind": "sourceParses",
204
- "file": "intake.py"
205
189
  }
206
190
  ],
207
191
  "onReject": "verify",
@@ -20,9 +20,6 @@
20
20
  "worker": {
21
21
  "name": "Wieke",
22
22
  "role": "Copywriter"
23
- },
24
- "craftbookParams": {
25
- "workPath": "tasks/eval"
26
23
  }
27
24
  },
28
25
  "mocks": [],
@@ -30,14 +27,14 @@
30
27
  "summary": "rewritten-doc.md is a usable procedure that preserves every fact from the original, and the audit that drove it is on record.",
31
28
  "deliverables": [
32
29
  {
33
- "path": "tasks/eval/audit.md",
30
+ "path": "{{task.dir}}/audit.md",
34
31
  "kind": "markdown-notes",
35
32
  "artifact": true,
36
33
  "minBytes": 250,
37
34
  "checks": [
38
35
  {
39
36
  "kind": "contains",
40
- "file": "tasks/eval/audit.md",
37
+ "file": "{{task.dir}}/audit.md",
41
38
  "pattern": "RPO|jargon|acronym",
42
39
  "flags": "i",
43
40
  "label": "names the undefined jargon",
@@ -45,7 +42,7 @@
45
42
  },
46
43
  {
47
44
  "kind": "contains",
48
- "file": "tasks/eval/audit.md",
45
+ "file": "{{task.dir}}/audit.md",
49
46
  "pattern": "prerequisit|ops-admin|up front",
50
47
  "flags": "i",
51
48
  "label": "names the buried prerequisite",
@@ -129,14 +129,6 @@
129
129
  "kind": "sniff",
130
130
  "file": "Dockerfile",
131
131
  "sniff": "nonempty"
132
- },
133
- {
134
- "kind": "esmImports",
135
- "file": "Dockerfile"
136
- },
137
- {
138
- "kind": "sourceParses",
139
- "file": "Dockerfile"
140
132
  }
141
133
  ],
142
134
  "onReject": "build",
@@ -194,14 +186,6 @@
194
186
  "kind": "sniff",
195
187
  "file": "Dockerfile",
196
188
  "sniff": "nonempty"
197
- },
198
- {
199
- "kind": "esmImports",
200
- "file": "Dockerfile"
201
- },
202
- {
203
- "kind": "sourceParses",
204
- "file": "Dockerfile"
205
189
  }
206
190
  ],
207
191
  "onReject": "verify",
@@ -8,7 +8,7 @@
8
8
  "prompt": "footage for the workshop video is indexed and the trancript is in — can you do an edit pass and give me a cutlist? somethings draggy in the middle",
9
9
  "setup": {
10
10
  "projectName": "Video Workshop — Edit Notes Eval",
11
- "about": "Self-contained eval project for edit-notes. The clip index is media/index.json (five clips with durations in seconds), the raw transcript is transcripts/raw.txt (per-clip mm:ss timecodes), and the storyboard is storyboard.md. The edit notes go to tasks/eval/edit-notes.md and the cut list to cutlist.json.",
11
+ "about": "Self-contained eval project for edit-notes. The clip index is media/index.json (five clips with durations in seconds), the raw transcript is transcripts/raw.txt (per-clip mm:ss timecodes), and the storyboard is storyboard.md. The edit notes go to edit-notes.md in this task's own artifacts working folder and the cut list to cutlist.json.",
12
12
  "missionObjectives": "Use the Edit Notes Pass craftbook/template, review the seeded transcript against the media index, and produce timestamped edit notes plus cutlist.json. Every cut decision carries a timecode and a reason; no invented footage. No live services or real media tools — this is the review-and-cutlist half.",
13
13
  "files": [
14
14
  {
@@ -27,9 +27,6 @@
27
27
  "worker": {
28
28
  "name": "Teun",
29
29
  "role": "Editor"
30
- },
31
- "craftbookParams": {
32
- "workPath": "tasks/eval"
33
30
  }
34
31
  },
35
32
  "mocks": [],
@@ -77,20 +74,20 @@
77
74
  ]
78
75
  },
79
76
  {
80
- "path": "tasks/eval/edit-notes.md",
77
+ "path": "{{task.dir}}/edit-notes.md",
81
78
  "kind": "markdown-notes",
82
79
  "minBytes": 400,
83
80
  "checks": [
84
81
  {
85
82
  "kind": "contains",
86
- "file": "tasks/eval/edit-notes.md",
83
+ "file": "{{task.dir}}/edit-notes.md",
87
84
  "pattern": "\\d{1,2}:\\d{2}",
88
85
  "label": "the edit notes carry mm:ss timecodes",
89
86
  "artifact": true
90
87
  },
91
88
  {
92
89
  "kind": "contains",
93
- "file": "tasks/eval/edit-notes.md",
90
+ "file": "{{task.dir}}/edit-notes.md",
94
91
  "pattern": "tangent|timber|drags|drift",
95
92
  "flags": "i",
96
93
  "label": "the interview tangent in the middle is called out",
@@ -98,7 +95,7 @@
98
95
  },
99
96
  {
100
97
  "kind": "contains",
101
- "file": "tasks/eval/edit-notes.md",
98
+ "file": "{{task.dir}}/edit-notes.md",
102
99
  "pattern": "repeat|again|redundant|duplicate",
103
100
  "flags": "i",
104
101
  "label": "the repeated demo step is called out",
@@ -129,14 +129,6 @@
129
129
  "kind": "sniff",
130
130
  "file": "form_fill.py",
131
131
  "sniff": "nonempty"
132
- },
133
- {
134
- "kind": "esmImports",
135
- "file": "form_fill.py"
136
- },
137
- {
138
- "kind": "sourceParses",
139
- "file": "form_fill.py"
140
132
  }
141
133
  ],
142
134
  "onReject": "build",
@@ -194,14 +186,6 @@
194
186
  "kind": "sniff",
195
187
  "file": "form_fill.py",
196
188
  "sniff": "nonempty"
197
- },
198
- {
199
- "kind": "esmImports",
200
- "file": "form_fill.py"
201
- },
202
- {
203
- "kind": "sourceParses",
204
- "file": "form_fill.py"
205
189
  }
206
190
  ],
207
191
  "onReject": "verify",
@@ -19,14 +19,11 @@
19
19
  "worker": {
20
20
  "name": "Sanne",
21
21
  "role": "Designer"
22
- },
23
- "craftbookParams": {
24
- "workPath": "tasks/eval"
25
22
  }
26
23
  },
27
24
  "mocks": [],
28
25
  "success": {
29
- "summary": "cards/card.html is a print-styled card with the settled message; cards/addresses.html covers the roster with the gaps marked; tasks/eval/report.md names the stale and missing addresses.",
26
+ "summary": "cards/card.html is a print-styled card with the settled message; cards/addresses.html covers the roster with the gaps marked; report.md in this task's own artifacts working folder names the stale and missing addresses.",
30
27
  "deliverables": [
31
28
  {
32
29
  "path": "cards/card.html",
@@ -72,19 +69,19 @@
72
69
  ]
73
70
  },
74
71
  {
75
- "path": "tasks/eval/report.md",
72
+ "path": "{{task.dir}}/report.md",
76
73
  "kind": "markdown-report",
77
74
  "minBytes": 600,
78
75
  "checks": [
79
76
  {
80
77
  "kind": "contains",
81
- "file": "tasks/eval/report.md",
78
+ "file": "{{task.dir}}/report.md",
82
79
  "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
83
80
  "artifact": true
84
81
  },
85
82
  {
86
83
  "kind": "contains",
87
- "file": "tasks/eval/report.md",
84
+ "file": "{{task.dir}}/report.md",
88
85
  "pattern": "missing|stale|unconfirmed",
89
86
  "flags": "i",
90
87
  "label": "address gaps surfaced",
@@ -92,7 +89,7 @@
92
89
  },
93
90
  {
94
91
  "kind": "contains",
95
- "file": "tasks/eval/report.md",
92
+ "file": "{{task.dir}}/report.md",
96
93
  "pattern": "Nguyen|Whitfield|Lindqvist",
97
94
  "flags": "i",
98
95
  "label": "flagged households named",
@@ -8,8 +8,8 @@
8
8
  "prompt": "our agent asked for a full inventry of the collection with values — can you put one together?",
9
9
  "setup": {
10
10
  "projectName": "Collection Catalog — Insurance Inventory Eval",
11
- "about": "Self-contained eval project for insurance-inventory. The catalog store lives at collection.json in the workspace: ten items, two of them without a recorded value. The inventory document goes to insurance-inventory.md and its cover note to tasks/eval/report.md.",
12
- "missionObjectives": "Use the Insurance Inventory craftbook/template, compile everything from the seeded collection.json, and finish with insurance-inventory.md plus tasks/eval/report.md — no network calls, real credentials, or live services.",
11
+ "about": "Self-contained eval project for insurance-inventory. The catalog store lives at collection.json in the workspace: ten items, two of them without a recorded value. The inventory document goes to insurance-inventory.md and its cover note to report.md in this task's own artifacts working folder.",
12
+ "missionObjectives": "Use the Insurance Inventory craftbook/template, compile everything from the seeded collection.json, and finish with insurance-inventory.md plus report.md in this task's own artifacts working folder — no network calls, real credentials, or live services.",
13
13
  "files": [
14
14
  {
15
15
  "path": "collection.json",
@@ -19,9 +19,6 @@
19
19
  "worker": {
20
20
  "name": "Casper",
21
21
  "role": "Curator"
22
- },
23
- "craftbookParams": {
24
- "workPath": "tasks/eval"
25
22
  }
26
23
  },
27
24
  "mocks": [],
@@ -65,27 +62,27 @@
65
62
  ]
66
63
  },
67
64
  {
68
- "path": "tasks/eval/report.md",
65
+ "path": "{{task.dir}}/report.md",
69
66
  "kind": "markdown-report",
70
67
  "minBytes": 500,
71
68
  "checks": [
72
69
  {
73
70
  "kind": "contains",
74
- "file": "tasks/eval/report.md",
71
+ "file": "{{task.dir}}/report.md",
75
72
  "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
76
73
  "flags": "i",
77
74
  "artifact": true
78
75
  },
79
76
  {
80
77
  "kind": "contains",
81
- "file": "tasks/eval/report.md",
78
+ "file": "{{task.dir}}/report.md",
82
79
  "pattern": "\\b870\\b",
83
80
  "label": "total of the recorded values stated correctly",
84
81
  "artifact": true
85
82
  },
86
83
  {
87
84
  "kind": "contains",
88
- "file": "tasks/eval/report.md",
85
+ "file": "{{task.dir}}/report.md",
89
86
  "pattern": "missing|gap|no value|not (yet )?valued|unvalued",
90
87
  "flags": "i",
91
88
  "label": "cover note owns the gaps",