@bendyline/gilde 0.1.56 → 0.1.58

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 (31) hide show
  1. package/authoring/chat-models/qwen3.8-flash-next-iq3.json +198 -0
  2. package/authoring/chat-models/qwen3.8-flash-next-iq4.json +198 -0
  3. package/data/chat-models/index.json +1 -1
  4. package/data/chat-models/qw/qwen3.8-flash-next-iq3/manifest.json +221 -0
  5. package/data/chat-models/qw/qwen3.8-flash-next-iq3/versions/1.0.0/manifest.json +36 -0
  6. package/data/chat-models/qw/qwen3.8-flash-next-iq4/manifest.json +221 -0
  7. package/data/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.0.0/manifest.json +36 -0
  8. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.3/test.json +7 -10
  9. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.3/test.json +3 -6
  10. package/data/craftbook-templates/ed/edit-notes/versions/1.0.3/test.json +5 -8
  11. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.3/test.json +5 -8
  12. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.3/test.json +6 -9
  13. package/data/craftbook-templates/it/item-intake/versions/1.0.3/test.json +7 -10
  14. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.3/test.json +9 -11
  15. package/data/craftbook-templates/mo/morning-report/versions/1.0.3/test.json +14 -17
  16. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.3/test.json +12 -15
  17. package/data/craftbook-templates/pl/playtest-report/versions/1.0.3/test.json +9 -12
  18. package/data/craftbook-templates/pr/practice-exam/versions/1.0.3/test.json +3 -6
  19. package/data/craftbook-templates/pr/practice-session/versions/1.0.3/test.json +6 -9
  20. package/data/craftbook-templates/re/receipt-intake/versions/1.0.3/test.json +8 -11
  21. package/data/craftbook-templates/re/recipe-capture/versions/1.0.3/test.json +8 -11
  22. package/data/craftbook-templates/re/record-a-relative/versions/1.0.3/test.json +9 -11
  23. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.4/test.json +9 -12
  24. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.3/test.json +15 -18
  25. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.3/test.json +5 -8
  26. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.3/test.json +5 -8
  27. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.3/test.json +5 -8
  28. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.3/test.json +13 -16
  29. package/data/toolsets/do/docblocks/versions/2.6.0/manifest.json +95 -0
  30. package/data/toolsets/index.json +1 -1
  31. package/package.json +1 -1
@@ -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",
@@ -8,8 +8,8 @@
8
8
  "prompt": "three new records came in for the vinyl collection — photo notes are in inbox/. can you cataloge them?",
9
9
  "setup": {
10
10
  "projectName": "Collection Catalog — Vinyl Intake Eval",
11
- "about": "Self-contained eval project for item-intake. Arrival photos have already been pre-extracted into plain-text photo notes under inbox/. The catalog store lives at collection.json in the workspace; the intake write-up goes to tasks/eval/report.md.",
12
- "missionObjectives": "Use the Catalog an Item craftbook/template, identify each arrival only as far as the seeded photo notes support, and finish with an updated collection.json plus tasks/eval/report.md — no network calls, real credentials, or live services.",
11
+ "about": "Self-contained eval project for item-intake. Arrival photos have already been pre-extracted into plain-text photo notes under inbox/. The catalog store lives at collection.json in the workspace; the intake write-up goes to report.md in this task's own artifacts working folder.",
12
+ "missionObjectives": "Use the Catalog an Item craftbook/template, identify each arrival only as far as the seeded photo notes support, and finish with an updated collection.json 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": "inbox/item-1.txt",
@@ -31,9 +31,6 @@
31
31
  "worker": {
32
32
  "name": "Casper",
33
33
  "role": "Curator"
34
- },
35
- "craftbookParams": {
36
- "workPath": "tasks/eval"
37
34
  }
38
35
  },
39
36
  "mocks": [],
@@ -41,20 +38,20 @@
41
38
  "summary": "The catalog gains three complete records grounded in the photo notes, the unreadable pressing stays uncertain in the record, and the report lists the earned follow-ups.",
42
39
  "deliverables": [
43
40
  {
44
- "path": "tasks/eval/report.md",
41
+ "path": "{{task.dir}}/report.md",
45
42
  "kind": "markdown-report",
46
43
  "minBytes": 600,
47
44
  "checks": [
48
45
  {
49
46
  "kind": "contains",
50
- "file": "tasks/eval/report.md",
47
+ "file": "{{task.dir}}/report.md",
51
48
  "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
52
49
  "flags": "i",
53
50
  "artifact": true
54
51
  },
55
52
  {
56
53
  "kind": "contains",
57
- "file": "tasks/eval/report.md",
54
+ "file": "{{task.dir}}/report.md",
58
55
  "pattern": "confiden|uncertain|not sure|unclear|unverified|unread",
59
56
  "flags": "i",
60
57
  "label": "identification confidence stated honestly",
@@ -62,7 +59,7 @@
62
59
  },
63
60
  {
64
61
  "kind": "contains",
65
- "file": "tasks/eval/report.md",
62
+ "file": "{{task.dir}}/report.md",
66
63
  "pattern": "photo|expert",
67
64
  "flags": "i",
68
65
  "label": "follow-up buckets present",
@@ -122,7 +119,7 @@
122
119
  },
123
120
  "rubric": {
124
121
  "artifact": {
125
- "path": "tasks/eval/report.md",
122
+ "path": "{{task.dir}}/report.md",
126
123
  "kind": "markdown"
127
124
  },
128
125
  "axes": [
@@ -27,49 +27,47 @@
27
27
  "worker": {
28
28
  "name": "Milan",
29
29
  "role": "Archivist"
30
- },
31
- "craftbookParams": {
32
- "workPath": "tasks/eval"
33
30
  }
34
31
  },
35
32
  "mocks": [],
36
33
  "success": {
37
- "summary": "The session is banked under sessions/ in the teller's own words, and tasks/eval/report.md names the chapter-worthy moments with verbatim quotes plus at least three follow-up questions.",
34
+ "summary": "The session is banked under sessions/ in the teller's own words, and report.md in this task's own artifacts working folder names the chapter-worthy moments with verbatim quotes plus at least three follow-up questions.",
38
35
  "deliverables": [
39
36
  {
40
- "path": "tasks/eval/report.md",
37
+ "path": "{{task.dir}}/report.md",
41
38
  "kind": "markdown-report",
42
39
  "minBytes": 1000,
43
40
  "checks": [
44
41
  {
45
42
  "kind": "contains",
46
- "file": "tasks/eval/report.md",
43
+ "file": "{{task.dir}}/report.md",
47
44
  "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
48
45
  "flags": "i"
49
46
  },
50
47
  {
51
48
  "kind": "contains",
52
- "file": "tasks/eval/report.md",
49
+ "file": "{{task.dir}}/report.md",
53
50
  "pattern": "follow",
54
51
  "flags": "i",
55
52
  "label": "follow-up threads present"
56
53
  },
57
54
  {
58
55
  "kind": "contains",
59
- "file": "tasks/eval/report.md",
56
+ "file": "{{task.dir}}/report.md",
60
57
  "pattern": "\\?",
61
58
  "label": "real questions for next time"
62
59
  },
63
60
  {
64
61
  "kind": "valuesSubsetOf",
65
- "file": "tasks/eval/report.md",
62
+ "file": "{{task.dir}}/report.md",
66
63
  "sourceFiles": [
67
64
  "recordings/session3.txt"
68
65
  ],
69
66
  "pattern": "[\"“]([^\"”\\n]{15,120})[\"”]",
70
67
  "label": "quoted teller phrases are verbatim from the transcript"
71
68
  }
72
- ]
69
+ ],
70
+ "artifact": true
73
71
  }
74
72
  ],
75
73
  "checks": [
@@ -85,7 +83,7 @@
85
83
  },
86
84
  "rubric": {
87
85
  "artifact": {
88
- "path": "tasks/eval/report.md",
86
+ "path": "{{task.dir}}/report.md",
89
87
  "kind": "markdown"
90
88
  },
91
89
  "axes": [
@@ -8,15 +8,12 @@
8
8
  "prompt": "morning - whats the house looking like today? give me the unusal stuff first",
9
9
  "setup": {
10
10
  "projectName": "Smart Home — Morning Report Eval",
11
- "about": "Self-contained eval project for morning-report. The fake house's device tools are wired into the project's tool roster — the device inventory and the live state snapshot come from them, and they are the only source of truth for what the house is doing this morning. The polling evidence goes to tasks/eval/states.md and the morning report to tasks/eval/report.md.",
12
- "missionObjectives": "Use the Morning House Report craftbook/template, read every zone's state through the wired device tools, surface anything unusual first with one suggested action each, compress the nominal rest, and write tasks/eval/report.md. No real smart-home services, hubs, or credentials — only the wired fake house.",
11
+ "about": "Self-contained eval project for morning-report. The fake house's device tools are wired into the project's tool roster — the device inventory and the live state snapshot come from them, and they are the only source of truth for what the house is doing this morning. The polling evidence goes to states.md in this task's own artifacts working folder and the morning report to report.md in this task's own artifacts working folder.",
12
+ "missionObjectives": "Use the Morning House Report craftbook/template, read every zone's state through the wired device tools, surface anything unusual first with one suggested action each, compress the nominal rest, and write report.md in this task's own artifacts working folder. No real smart-home services, hubs, or credentials — only the wired fake house.",
13
13
  "files": [],
14
14
  "worker": {
15
15
  "name": "Roos",
16
16
  "role": "Huisautomaat"
17
- },
18
- "craftbookParams": {
19
- "workPath": "tasks/eval"
20
17
  }
21
18
  },
22
19
  "mocks": [
@@ -144,16 +141,16 @@
144
141
  }
145
142
  ],
146
143
  "success": {
147
- "summary": "tasks/eval/report.md leads with the garage door open since 23:41 and the backyard sensor at 9 percent battery — each with a suggested action — before any all-clear, the evidence in tasks/eval/states.md carries the real device ids from the tools (inventory and state snapshot actually read — request-log assertions), and the nominal rest is compressed rather than dumped.",
144
+ "summary": "report.md in this task's own artifacts working folder leads with the garage door open since 23:41 and the backyard sensor at 9 percent battery — each with a suggested action — before any all-clear, the evidence in states.md in this task's own artifacts working folder carries the real device ids from the tools (inventory and state snapshot actually read — request-log assertions), and the nominal rest is compressed rather than dumped.",
148
145
  "deliverables": [
149
146
  {
150
- "path": "tasks/eval/states.md",
147
+ "path": "{{task.dir}}/states.md",
151
148
  "kind": "markdown-notes",
152
149
  "minBytes": 200,
153
150
  "checks": [
154
151
  {
155
152
  "kind": "contains",
156
- "file": "tasks/eval/states.md",
153
+ "file": "{{task.dir}}/states.md",
157
154
  "pattern": "dev-\\d{2}",
158
155
  "label": "the state evidence carries real device ids from the tools",
159
156
  "artifact": true
@@ -162,20 +159,20 @@
162
159
  "artifact": true
163
160
  },
164
161
  {
165
- "path": "tasks/eval/report.md",
162
+ "path": "{{task.dir}}/report.md",
166
163
  "kind": "markdown-report",
167
164
  "minBytes": 400,
168
165
  "checks": [
169
166
  {
170
167
  "kind": "contains",
171
- "file": "tasks/eval/report.md",
168
+ "file": "{{task.dir}}/report.md",
172
169
  "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
173
170
  "flags": "i",
174
171
  "artifact": true
175
172
  },
176
173
  {
177
174
  "kind": "contains",
178
- "file": "tasks/eval/report.md",
175
+ "file": "{{task.dir}}/report.md",
179
176
  "pattern": "attention|unusual|anomal",
180
177
  "flags": "i",
181
178
  "label": "an anomalies-first section exists",
@@ -183,7 +180,7 @@
183
180
  },
184
181
  {
185
182
  "kind": "contains",
186
- "file": "tasks/eval/report.md",
183
+ "file": "{{task.dir}}/report.md",
187
184
  "pattern": "garage",
188
185
  "flags": "i",
189
186
  "label": "the garage door left open overnight is surfaced",
@@ -191,7 +188,7 @@
191
188
  },
192
189
  {
193
190
  "kind": "contains",
194
- "file": "tasks/eval/report.md",
191
+ "file": "{{task.dir}}/report.md",
195
192
  "pattern": "batter",
196
193
  "flags": "i",
197
194
  "label": "the low sensor battery is surfaced",
@@ -199,7 +196,7 @@
199
196
  },
200
197
  {
201
198
  "kind": "contains",
202
- "file": "tasks/eval/report.md",
199
+ "file": "{{task.dir}}/report.md",
203
200
  "pattern": "close|shut|charge|replace|check",
204
201
  "flags": "i",
205
202
  "label": "a suggested action is offered",
@@ -207,10 +204,10 @@
207
204
  },
208
205
  {
209
206
  "kind": "judge",
210
- "file": "tasks/eval/report.md",
207
+ "file": "{{task.dir}}/report.md",
211
208
  "rubric": "The two anomalies (the garage door open overnight and the backyard sensor's low battery) appear before anything normal and each carries one concrete suggested action, every device mentioned matches the recorded state evidence, the nominal rest of the house is compressed to a line or two rather than a device-by-device dump, and the whole report reads comfortably in under a minute.",
212
209
  "sourceFiles": [
213
- "tasks/eval/states.md"
210
+ "{{task.dir}}/states.md"
214
211
  ],
215
212
  "label": "anomalies-first and glanceable",
216
213
  "artifact": true
@@ -232,7 +229,7 @@
232
229
  },
233
230
  "rubric": {
234
231
  "artifact": {
235
- "path": "tasks/eval/report.md",
232
+ "path": "{{task.dir}}/report.md",
236
233
  "kind": "markdown"
237
234
  },
238
235
  "axes": [
@@ -8,8 +8,8 @@
8
8
  "prompt": "somethings eating the kale and the tomato leaves have yellow spots — photo notes are in photos/. what do you thinck it is and what do we do?",
9
9
  "setup": {
10
10
  "projectName": "Garden Almanac — Pest Diagnosis Eval",
11
- "about": "Self-contained eval project for pest-diagnosis. The symptom photos have already been pre-extracted into plain-text photo notes under photos/. The garden's plantings live at garden.json in the workspace; the treatment and monitoring plan goes to tasks/eval/report.md.",
12
- "missionObjectives": "Use the Pest & Problem Diagnosis craftbook/template, reason only from the seeded photo notes and plantings, and write tasks/eval/report.md — no network calls, real credentials, or live services.",
11
+ "about": "Self-contained eval project for pest-diagnosis. The symptom photos have already been pre-extracted into plain-text photo notes under photos/. The garden's plantings live at garden.json in the workspace; the treatment and monitoring plan goes to report.md in this task's own artifacts working folder.",
12
+ "missionObjectives": "Use the Pest & Problem Diagnosis craftbook/template, reason only from the seeded photo notes and plantings, and write 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": "photos/kale-damage.jpg.txt",
@@ -27,30 +27,27 @@
27
27
  "worker": {
28
28
  "name": "Wim",
29
29
  "role": "Gardener"
30
- },
31
- "craftbookParams": {
32
- "workPath": "tasks/eval"
33
30
  }
34
31
  },
35
32
  "mocks": [],
36
33
  "success": {
37
- "summary": "tasks/eval/report.md ranks candidates for both problems with the photo-note evidence, offers the gentlest treatment first, sets a monitoring plan, names the escalation line, and never claims certainty.",
34
+ "summary": "report.md in this task's own artifacts working folder ranks candidates for both problems with the photo-note evidence, offers the gentlest treatment first, sets a monitoring plan, names the escalation line, and never claims certainty.",
38
35
  "deliverables": [
39
36
  {
40
- "path": "tasks/eval/report.md",
37
+ "path": "{{task.dir}}/report.md",
41
38
  "kind": "markdown-report",
42
39
  "minBytes": 800,
43
40
  "checks": [
44
41
  {
45
42
  "kind": "contains",
46
- "file": "tasks/eval/report.md",
43
+ "file": "{{task.dir}}/report.md",
47
44
  "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
48
45
  "flags": "i",
49
46
  "artifact": true
50
47
  },
51
48
  {
52
49
  "kind": "contains",
53
- "file": "tasks/eval/report.md",
50
+ "file": "{{task.dir}}/report.md",
54
51
  "pattern": "likely|probable|possible|suspect",
55
52
  "flags": "i",
56
53
  "label": "candidates stated as likelihoods, not verdicts",
@@ -58,7 +55,7 @@
58
55
  },
59
56
  {
60
57
  "kind": "contains",
61
- "file": "tasks/eval/report.md",
58
+ "file": "{{task.dir}}/report.md",
62
59
  "pattern": "caterpillar",
63
60
  "flags": "i",
64
61
  "label": "engages the caterpillar evidence from the kale photo note",
@@ -66,7 +63,7 @@
66
63
  },
67
64
  {
68
65
  "kind": "contains",
69
- "file": "tasks/eval/report.md",
66
+ "file": "{{task.dir}}/report.md",
70
67
  "pattern": "treat",
71
68
  "flags": "i",
72
69
  "label": "treatment ladder present",
@@ -74,7 +71,7 @@
74
71
  },
75
72
  {
76
73
  "kind": "contains",
77
- "file": "tasks/eval/report.md",
74
+ "file": "{{task.dir}}/report.md",
78
75
  "pattern": "monitor|watch|check",
79
76
  "flags": "i",
80
77
  "label": "monitoring plan present",
@@ -82,7 +79,7 @@
82
79
  },
83
80
  {
84
81
  "kind": "notContains",
85
- "file": "tasks/eval/report.md",
82
+ "file": "{{task.dir}}/report.md",
86
83
  "pattern": "(definitely|guaranteed|certainly) (is|will cure)",
87
84
  "flags": "i",
88
85
  "label": "diagnosis stays hedged, never absolute",
@@ -90,7 +87,7 @@
90
87
  },
91
88
  {
92
89
  "kind": "contains",
93
- "file": "tasks/eval/report.md",
90
+ "file": "{{task.dir}}/report.md",
94
91
  "pattern": "extension|professional|nursery|expert",
95
92
  "flags": "i",
96
93
  "label": "escalation path named",
@@ -103,7 +100,7 @@
103
100
  },
104
101
  "rubric": {
105
102
  "artifact": {
106
- "path": "tasks/eval/report.md",
103
+ "path": "{{task.dir}}/report.md",
107
104
  "kind": "markdown"
108
105
  },
109
106
  "axes": [
@@ -19,30 +19,27 @@
19
19
  "worker": {
20
20
  "name": "Roos",
21
21
  "role": "Reviewer"
22
- },
23
- "craftbookParams": {
24
- "workPath": "tasks/eval"
25
22
  }
26
23
  },
27
24
  "mocks": [],
28
25
  "success": {
29
- "summary": "tasks/eval/report.md is a ranked, repro-backed playtest report that catches the restart flaws — the score carrying over between rounds and the stacking input handler.",
26
+ "summary": "report.md in this task's own artifacts working folder is a ranked, repro-backed playtest report that catches the restart flaws — the score carrying over between rounds and the stacking input handler.",
30
27
  "deliverables": [
31
28
  {
32
- "path": "tasks/eval/report.md",
29
+ "path": "{{task.dir}}/report.md",
33
30
  "kind": "markdown-report",
34
31
  "minBytes": 1200,
35
32
  "checks": [
36
33
  {
37
34
  "kind": "contains",
38
- "file": "tasks/eval/report.md",
35
+ "file": "{{task.dir}}/report.md",
39
36
  "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
40
37
  "flags": "i",
41
38
  "artifact": true
42
39
  },
43
40
  {
44
41
  "kind": "tableShape",
45
- "file": "tasks/eval/report.md",
42
+ "file": "{{task.dir}}/report.md",
46
43
  "requiredColumns": [
47
44
  "Issue",
48
45
  "Severity"
@@ -52,7 +49,7 @@
52
49
  },
53
50
  {
54
51
  "kind": "contains",
55
- "file": "tasks/eval/report.md",
52
+ "file": "{{task.dir}}/report.md",
56
53
  "pattern": "repro|steps",
57
54
  "flags": "i",
58
55
  "label": "repros attached",
@@ -60,7 +57,7 @@
60
57
  },
61
58
  {
62
59
  "kind": "contains",
63
- "file": "tasks/eval/report.md",
60
+ "file": "{{task.dir}}/report.md",
64
61
  "pattern": "score",
65
62
  "flags": "i",
66
63
  "label": "score loop covered",
@@ -68,7 +65,7 @@
68
65
  },
69
66
  {
70
67
  "kind": "contains",
71
- "file": "tasks/eval/report.md",
68
+ "file": "{{task.dir}}/report.md",
72
69
  "pattern": "restart|play again|enter",
73
70
  "flags": "i",
74
71
  "label": "the restart path was exercised",
@@ -76,7 +73,7 @@
76
73
  },
77
74
  {
78
75
  "kind": "judge",
79
- "file": "tasks/eval/report.md",
76
+ "file": "{{task.dir}}/report.md",
80
77
  "rubric": "Findings are specific and reproducible — concrete steps a stranger could follow — and ranked by player impact; the report catches that restarting does not reset the score and that input handling degrades across restarts.",
81
78
  "sourceFiles": [
82
79
  "index.html"
@@ -91,7 +88,7 @@
91
88
  },
92
89
  "rubric": {
93
90
  "artifact": {
94
- "path": "tasks/eval/report.md",
91
+ "path": "{{task.dir}}/report.md",
95
92
  "kind": "markdown"
96
93
  },
97
94
  "axes": [
@@ -19,14 +19,11 @@
19
19
  "worker": {
20
20
  "name": "Milan",
21
21
  "role": "Developer"
22
- },
23
- "craftbookParams": {
24
- "workPath": "tasks/eval"
25
22
  }
26
23
  },
27
24
  "mocks": [],
28
25
  "success": {
29
- "summary": "exam.html is a timed, self-scoring exam built from the deck with the record's weak topics weighted up; tasks/eval/answer-key.md explains every answer.",
26
+ "summary": "exam.html is a timed, self-scoring exam built from the deck with the record's weak topics weighted up; answer-key.md in this task's own artifacts working folder explains every answer.",
30
27
  "deliverables": [
31
28
  {
32
29
  "path": "exam.html",
@@ -73,13 +70,13 @@
73
70
  ]
74
71
  },
75
72
  {
76
- "path": "tasks/eval/answer-key.md",
73
+ "path": "{{task.dir}}/answer-key.md",
77
74
  "kind": "markdown-notes",
78
75
  "minBytes": 800,
79
76
  "checks": [
80
77
  {
81
78
  "kind": "contains",
82
- "file": "tasks/eval/answer-key.md",
79
+ "file": "{{task.dir}}/answer-key.md",
83
80
  "pattern": "card|deck",
84
81
  "flags": "i",
85
82
  "label": "key points back to the deck",
@@ -23,30 +23,27 @@
23
23
  "worker": {
24
24
  "name": "Ruben",
25
25
  "role": "Coach"
26
- },
27
- "craftbookParams": {
28
- "workPath": "tasks/eval"
29
26
  }
30
27
  },
31
28
  "mocks": [],
32
29
  "success": {
33
- "summary": "Today's session is appended to practice.json as a well-formed entry, and tasks/eval/report.md closes the day with the streak state and a concrete, targeted plan for tomorrow.",
30
+ "summary": "Today's session is appended to practice.json as a well-formed entry, and report.md in this task's own artifacts working folder closes the day with the streak state and a concrete, targeted plan for tomorrow.",
34
31
  "deliverables": [
35
32
  {
36
- "path": "tasks/eval/report.md",
33
+ "path": "{{task.dir}}/report.md",
37
34
  "kind": "markdown-report",
38
35
  "minBytes": 800,
39
36
  "checks": [
40
37
  {
41
38
  "kind": "contains",
42
- "file": "tasks/eval/report.md",
39
+ "file": "{{task.dir}}/report.md",
43
40
  "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
44
41
  "flags": "i",
45
42
  "artifact": true
46
43
  },
47
44
  {
48
45
  "kind": "contains",
49
- "file": "tasks/eval/report.md",
46
+ "file": "{{task.dir}}/report.md",
50
47
  "pattern": "tomorrow|next session",
51
48
  "flags": "i",
52
49
  "label": "tomorrow's plan present",
@@ -54,7 +51,7 @@
54
51
  },
55
52
  {
56
53
  "kind": "contains",
57
- "file": "tasks/eval/report.md",
54
+ "file": "{{task.dir}}/report.md",
58
55
  "pattern": "bpm|bar\\s*\\d+",
59
56
  "flags": "i",
60
57
  "label": "concrete tempo or bar targets",
@@ -91,7 +88,7 @@
91
88
  },
92
89
  "rubric": {
93
90
  "artifact": {
94
- "path": "tasks/eval/report.md",
91
+ "path": "{{task.dir}}/report.md",
95
92
  "kind": "markdown"
96
93
  },
97
94
  "axes": [