@bendyline/gilde 0.1.92 → 0.1.94
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.
- package/README.md +6 -4
- package/authoring/chat-models/underdog-saluki-27b-iq2-mix.json +159 -0
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/raw-index.json +1 -1
- package/data/chat-models/un/underdog-saluki-27b-iq2-mix/manifest.json +164 -0
- package/data/chat-models/un/underdog-saluki-27b-iq2-mix/versions/1.0.0/manifest.json +14 -0
- package/data/craftbook-templates/br/branding-website/manifest.json +2 -1
- package/data/craftbook-templates/br/branding-website/versions/1.1.4/craftbook.json +346 -0
- package/data/craftbook-templates/br/branding-website/versions/1.1.4/test.json +164 -0
- package/data/craftbook-templates/fr/freeze-scope/versions/1.4.0/craftbook.json +94 -0
- package/data/craftbook-templates/fr/freeze-scope/versions/1.4.0/test.json +131 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/na/narrated-slideshow/manifest.json +2 -1
- package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.7/craftbook.json +315 -0
- package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.7/test.json +89 -0
- package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.8/craftbook.json +323 -0
- package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.8/test.json +217 -0
- package/data/craftbook-templates/ph/photo-library-nightly/manifest.json +22 -0
- package/data/craftbook-templates/ph/photo-library-nightly/versions/1.0.0/craftbook.json +186 -0
- package/data/craftbook-templates/ph/photo-library-nightly/versions/1.0.0/test.json +69 -0
- package/data/craftbook-templates/po/powerpoint-deck/manifest.json +2 -1
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.17/craftbook.json +486 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.17/test.json +265 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.18/craftbook.json +501 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.18/test.json +266 -0
- package/data/craftbook-templates/raw-index.json +1 -1
- package/data/craftbook-templates/re/report-pdf/manifest.json +2 -1
- package/data/craftbook-templates/re/report-pdf/versions/1.1.7/craftbook.json +316 -0
- package/data/craftbook-templates/re/report-pdf/versions/1.1.7/test.json +101 -0
- package/data/craftbook-templates/re/report-pdf/versions/1.1.8/craftbook.json +324 -0
- package/data/craftbook-templates/re/report-pdf/versions/1.1.8/test.json +258 -0
- package/data/craftbook-templates/re/research-report/manifest.json +2 -1
- package/data/craftbook-templates/re/research-report/versions/1.0.4/craftbook.json +286 -0
- package/data/craftbook-templates/re/research-report/versions/1.0.4/test.json +183 -0
- package/data/craftbook-templates/re/research-to-document/manifest.json +2 -1
- package/data/craftbook-templates/re/research-to-document/versions/1.2.7/craftbook.json +387 -0
- package/data/craftbook-templates/re/research-to-document/versions/1.2.7/test.json +242 -0
- package/data/craftbook-templates/re/research-to-document/versions/1.2.8/craftbook.json +395 -0
- package/data/craftbook-templates/re/research-to-document/versions/1.2.8/test.json +254 -0
- package/data/gezel-templates/cu/curator/manifest.json +20 -0
- package/data/gezel-templates/cu/curator/versions/1.0.0/about.md +22 -0
- package/data/gezel-templates/cu/curator/versions/1.0.0/manifest.json +23 -0
- package/data/gezel-templates/index.json +1 -1
- package/data/gezel-templates/pu/puzzelaar/manifest.json +19 -0
- package/data/gezel-templates/pu/puzzelaar/versions/1.0.0/about.md +18 -0
- package/data/gezel-templates/pu/puzzelaar/versions/1.0.0/manifest.json +16 -0
- package/data/gezel-templates/raw-index.json +1 -1
- package/data/gezel-templates/wo/woordsmid/manifest.json +19 -0
- package/data/gezel-templates/wo/woordsmid/versions/1.0.0/about.md +18 -0
- package/data/gezel-templates/wo/woordsmid/versions/1.0.0/manifest.json +16 -0
- package/data/image-models/index.json +1 -1
- package/data/image-models/mi/ming-image-0.1-design-bf16/manifest.json +39 -0
- package/data/image-models/mi/ming-image-0.1-design-bf16/versions/1.0.0/manifest.json +31 -0
- package/data/image-models/raw-index.json +1 -1
- package/data/knowledge-catalogs/be/bendyline-how-to-books/manifest.json +26 -0
- package/data/knowledge-catalogs/be/bendyline-how-to-books/versions/2026.10.8/manifest.json +8950 -0
- package/data/knowledge-catalogs/index.json +1 -1
- package/data/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/manifest.json +22 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/versions/2026.10.16/manifest.json +18270 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/manifest.json +23 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/versions/2026.10.16/manifest.json +1098 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/manifest.json +23 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/versions/2026.10.16/manifest.json +722 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/manifest.json +23 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/versions/2026.10.16/manifest.json +530 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/manifest.json +23 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/versions/2026.10.16/manifest.json +602 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/manifest.json +23 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/versions/2026.10.16/manifest.json +250 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-dotnet-en/manifest.json +22 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-dotnet-en/versions/2026.10.16/manifest.json +16794 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/manifest.json +22 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/versions/2026.10.16/manifest.json +1106 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/manifest.json +22 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/versions/2026.10.16/manifest.json +234 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-powershell-en/manifest.json +22 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-powershell-en/versions/2026.10.16/manifest.json +522 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-sql-server-en/manifest.json +22 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-sql-server-en/versions/2026.10.16/manifest.json +1850 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/manifest.json +22 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/versions/2026.10.16/manifest.json +1734 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-windows-server-en/manifest.json +22 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-windows-server-en/versions/2026.10.16/manifest.json +774 -0
- package/data/knowledge-catalogs/raw-index.json +1 -1
- package/data/project-types/ch/checkers/versions/1.2.3/about.md +9 -0
- package/data/project-types/ch/checkers/versions/1.2.3/game.json +77 -0
- package/data/project-types/ch/checkers/versions/1.2.3/manifest.json +182 -0
- package/data/project-types/ch/checkers/versions/1.2.3/mission.md +9 -0
- package/data/project-types/ch/checkers/versions/1.2.3/pages/board/index.html +1158 -0
- package/data/project-types/ch/chess/versions/1.0.6/about.md +9 -0
- package/data/project-types/ch/chess/versions/1.0.6/game.json +127 -0
- package/data/project-types/ch/chess/versions/1.0.6/manifest.json +196 -0
- package/data/project-types/ch/chess/versions/1.0.6/mission.md +8 -0
- package/data/project-types/ch/chess/versions/1.0.6/pages/board/index.html +851 -0
- package/data/project-types/fi/fitness-coach/versions/1.1.0/about.md +8 -0
- package/data/project-types/fi/fitness-coach/versions/1.1.0/craftbooks/training-recap.json +34 -0
- package/data/project-types/fi/fitness-coach/versions/1.1.0/manifest.json +229 -0
- package/data/project-types/fi/fitness-coach/versions/1.1.0/mission.md +7 -0
- package/data/project-types/fi/fitness-coach/versions/1.1.0/pages/dashboard/index.html +383 -0
- package/data/project-types/fi/fitness-coach/versions/1.1.0/training.json +6 -0
- package/data/project-types/fl/flashcards/versions/1.1.2/about.md +8 -0
- package/data/project-types/fl/flashcards/versions/1.1.2/deck.json +7 -0
- package/data/project-types/fl/flashcards/versions/1.1.2/manifest.json +169 -0
- package/data/project-types/fl/flashcards/versions/1.1.2/mission.md +6 -0
- package/data/project-types/fl/flashcards/versions/1.1.2/pages/review/index.html +477 -0
- package/data/project-types/fl/flashcards/versions/1.2.0/about.md +8 -0
- package/data/project-types/fl/flashcards/versions/1.2.0/deck.json +7 -0
- package/data/project-types/fl/flashcards/versions/1.2.0/manifest.json +207 -0
- package/data/project-types/fl/flashcards/versions/1.2.0/mission.md +6 -0
- package/data/project-types/fl/flashcards/versions/1.2.0/pages/review/index.html +549 -0
- package/data/project-types/go/go/versions/1.0.4/about.md +9 -0
- package/data/project-types/go/go/versions/1.0.4/game.json +103 -0
- package/data/project-types/go/go/versions/1.0.4/manifest.json +182 -0
- package/data/project-types/go/go/versions/1.0.4/mission.md +8 -0
- package/data/project-types/go/go/versions/1.0.4/pages/board/index.html +855 -0
- package/data/project-types/index.json +1 -1
- package/data/project-types/la/language-trainer/versions/1.1.0/about.md +8 -0
- package/data/project-types/la/language-trainer/versions/1.1.0/manifest.json +245 -0
- package/data/project-types/la/language-trainer/versions/1.1.0/mission.md +4 -0
- package/data/project-types/la/language-trainer/versions/1.1.0/pages/dashboard/index.html +468 -0
- package/data/project-types/la/language-trainer/versions/1.1.0/progress.json +10 -0
- package/data/project-types/la/language-trainer/versions/1.1.0/reviews.json +3 -0
- package/data/project-types/la/language-trainer/versions/1.1.0/scenarios.json +84 -0
- package/data/project-types/raw-index.json +1 -1
- package/data/project-types/wo/word-clues/manifest.json +20 -0
- package/data/project-types/wo/word-clues/versions/1.0.0/about.md +7 -0
- package/data/project-types/wo/word-clues/versions/1.0.0/game.json +14 -0
- package/data/project-types/wo/word-clues/versions/1.0.0/manifest.json +205 -0
- package/data/project-types/wo/word-clues/versions/1.0.0/mission.md +3 -0
- package/data/project-types/wo/word-clues/versions/1.0.0/pages/board/index.html +399 -0
- package/data/project-types/wo/word-clues/versions/1.0.0/words.json +216 -0
- package/package.json +5 -3
- package/schemas/craftbook-doc.schema.json +14 -0
- package/schemas/craftbook-template-version.schema.json +14 -0
- package/schemas/craftbook-test.schema.json +4 -1
- package/schemas/image-model-version.schema.json +2 -1
- package/schemas/project-type-version.schema.json +131 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "photo-library-nightly",
|
|
3
|
+
"name": "Nightly Photo Albums",
|
|
4
|
+
"description": "Overnight, find the recent outings in a photo folder that have no album yet and leave one album per outing in the artifacts drawer: a Squisq slideshow of the frames that tell the day, in order, captioned, with gentle motion between them. The person plays it, edits it, and exports it to video. Grounded entirely in the photo index (`photo_groups`, `list_photos`): every photo in an album is a real photo, the runtime stores resized copies with the album, and the originals are never touched.",
|
|
5
|
+
"entryStepId": "survey",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"make albums from my recent photos",
|
|
8
|
+
"albums from last weekend",
|
|
9
|
+
"nightly photo albums"
|
|
10
|
+
],
|
|
11
|
+
"command": "photo-albums",
|
|
12
|
+
"runModes": {
|
|
13
|
+
"scheduled": "supported",
|
|
14
|
+
"nightShift": "recommended"
|
|
15
|
+
},
|
|
16
|
+
"capabilityFloor": "small",
|
|
17
|
+
"paramSchema": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"properties": {
|
|
20
|
+
"workPath": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"title": "Working folder",
|
|
23
|
+
"description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
|
|
24
|
+
"default": "{{task.dir}}"
|
|
25
|
+
},
|
|
26
|
+
"recentDays": {
|
|
27
|
+
"type": "integer",
|
|
28
|
+
"title": "Look back (days)",
|
|
29
|
+
"description": "Outings that began within this many days are considered. Default 45.",
|
|
30
|
+
"default": 45
|
|
31
|
+
},
|
|
32
|
+
"maxAlbums": {
|
|
33
|
+
"type": "integer",
|
|
34
|
+
"title": "Albums per night",
|
|
35
|
+
"description": "The most album proposals one night makes. Default 3.",
|
|
36
|
+
"default": 3
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"steps": [
|
|
41
|
+
{
|
|
42
|
+
"id": "survey",
|
|
43
|
+
"name": "Find the outings",
|
|
44
|
+
"description": "Recent outings without an album, read from the photo index.",
|
|
45
|
+
"prompt": "Find the outings that deserve an album tonight. Look back {{recentDays}} days and propose at most {{maxAlbums}} albums (if either value reads as a raw {{...}} placeholder, use 45 days and 3 albums).\n\n1. Call `photo_groups` with `by: \"event\"`. Each group is one outing: photos taken without a three-hour gap, with its `from` and `to` capture times, its photo count, and a few sample paths. Screenshots are already left out.\n2. Call `list_artifacts` on `albums/`. An album is named `albums/<YYYY-MM-DD>-<slug>.md` after the day its outing began, so an outing whose `from` date already starts an album's name has one. Skip it.\n3. Choose the outings that began within the last {{recentDays}} days and have no album, newest first, at most {{maxAlbums}}. An outing of fewer than 6 photos is a moment, not an album: skip it too.\n4. Write `{{workPath}}/outings.md` with `write_artifact`: one `## <from> to <to>` section per chosen outing, with its photo count and its `from` and `to` copied exactly from `photo_groups`, character for character. When none qualifies, write the single line `No new outings`, followed by why: no dated photos, nothing in the window, or every outing already has an album.\n\nRead the photo index only. Never open, move, copy, rename or delete a photo.",
|
|
46
|
+
"suggestedRole": "curator",
|
|
47
|
+
"toolPolicy": {
|
|
48
|
+
"disallowBuiltinToolsets": [
|
|
49
|
+
"ai-apps",
|
|
50
|
+
"archives",
|
|
51
|
+
"audio",
|
|
52
|
+
"browser-automation",
|
|
53
|
+
"code-execution",
|
|
54
|
+
"craftbooks",
|
|
55
|
+
"data-tables",
|
|
56
|
+
"entity-intel",
|
|
57
|
+
"git",
|
|
58
|
+
"images",
|
|
59
|
+
"role-delegation",
|
|
60
|
+
"role-delegation-escalation",
|
|
61
|
+
"security-intel",
|
|
62
|
+
"team-management",
|
|
63
|
+
"videos",
|
|
64
|
+
"web",
|
|
65
|
+
"workspace-fs-write"
|
|
66
|
+
],
|
|
67
|
+
"outputMedium": "artifact",
|
|
68
|
+
"additionalOutputMedia": [
|
|
69
|
+
"task-note"
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"advanceWhen": {
|
|
73
|
+
"file": "{{workPath}}/outings.md",
|
|
74
|
+
"minBytes": 1,
|
|
75
|
+
"artifact": true
|
|
76
|
+
},
|
|
77
|
+
"gate": {
|
|
78
|
+
"at": "completion",
|
|
79
|
+
"checks": [
|
|
80
|
+
{
|
|
81
|
+
"kind": "minBytes",
|
|
82
|
+
"file": "{{workPath}}/outings.md",
|
|
83
|
+
"bytes": 14,
|
|
84
|
+
"artifact": true
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"onReject": "survey",
|
|
88
|
+
"maxAttempts": 3
|
|
89
|
+
},
|
|
90
|
+
"next": "albums"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "albums",
|
|
94
|
+
"name": "Propose the albums",
|
|
95
|
+
"description": "One Squisq slideshow per outing: the frames that tell it, captioned, in order.",
|
|
96
|
+
"prompt": "Make one album for each outing in `{{workPath}}/outings.md` (read it with `read_artifact` first). If it says `No new outings`, write `{{workPath}}/albums.md` with that line and the reason, and stop.\n\nFor each outing:\n\n1. Call `list_photos` with `from` and `to` set to the outing's timestamps exactly as `outings.md` gives them, `screenshots: false`, and `limit: 300`. These records are the only photos you may use: their `path`, `takenAt`, `camera` and, where the index has described the photo, `caption`.\n2. Group the moments. Photos taken within a minute of each other that show the same thing are one moment; keep the frame whose caption shows the most, or two to four of them when together they tell the moment.\n3. Pick the moments that tell the outing from start to end: between 6 and 24 photos, never more than the outing holds, in the order they were taken.\n4. Write the album with `write_artifact` to `albums/<YYYY-MM-DD>-<slug>.md`, where the date is the day the outing began and the slug is two or three lowercase words for what it shows (`albums/2026-09-20-beach-afternoon.md`). It is a Squisq slideshow, written as the notes on Squisq slideshows below describe:\n - frontmatter with `title`, `squisq-theme: gezellig`, `album-from` and `album-to` set to the outing's timestamps;\n - the `#` title and two or three warm sentences: what the day was;\n - one slide per moment, its caption one short line about what the photo shows, a gentle `ambientMotion` on single photos and `transition=dissolve`;\n - each photo linked by its `path` exactly as `list_photos` spells it. The runtime stores a resized copy with the album; never copy, move or rename a photo yourself.\n Where a photo has no caption, write the caption from what its neighbours show and keep it modest; never describe what you cannot see. Leave out place names and coordinates unless a caption already names the place.\n\nWhen every album is written, write `{{workPath}}/albums.md` with one line per album: its artifact path, its title, and how many photos it holds out of the outing's total. The albums are proposals the person keeps, edits or discards.",
|
|
97
|
+
"suggestedRole": "curator",
|
|
98
|
+
"authoring": "squisq-slideshow",
|
|
99
|
+
"consumes": [
|
|
100
|
+
{
|
|
101
|
+
"file": "{{workPath}}/outings.md",
|
|
102
|
+
"artifact": true
|
|
103
|
+
}
|
|
104
|
+
],
|
|
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
|
+
"images",
|
|
117
|
+
"role-delegation",
|
|
118
|
+
"role-delegation-escalation",
|
|
119
|
+
"security-intel",
|
|
120
|
+
"team-management",
|
|
121
|
+
"videos",
|
|
122
|
+
"web",
|
|
123
|
+
"workspace-fs-write"
|
|
124
|
+
],
|
|
125
|
+
"outputMedium": "artifact",
|
|
126
|
+
"additionalOutputMedia": [
|
|
127
|
+
"task-note"
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
"advanceWhen": {
|
|
131
|
+
"file": "{{workPath}}/albums.md",
|
|
132
|
+
"minBytes": 1,
|
|
133
|
+
"artifact": true
|
|
134
|
+
},
|
|
135
|
+
"gate": {
|
|
136
|
+
"at": "completion",
|
|
137
|
+
"checks": [
|
|
138
|
+
{
|
|
139
|
+
"kind": "minBytes",
|
|
140
|
+
"file": "{{workPath}}/albums.md",
|
|
141
|
+
"bytes": 14,
|
|
142
|
+
"artifact": true
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"onReject": "albums",
|
|
146
|
+
"maxAttempts": 3
|
|
147
|
+
},
|
|
148
|
+
"next": "finish"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": "finish",
|
|
152
|
+
"name": "Finish",
|
|
153
|
+
"description": "Stamp the summary note and stop.",
|
|
154
|
+
"prompt": "Write a one-paragraph DONE summary with `write_task_note`: how many albums you proposed tonight, each album's path and title, and any outing you skipped and why. Report DONE.",
|
|
155
|
+
"suggestedRole": "curator",
|
|
156
|
+
"toolPolicy": {
|
|
157
|
+
"disallowBuiltinToolsets": [
|
|
158
|
+
"ai-apps",
|
|
159
|
+
"archives",
|
|
160
|
+
"artifacts",
|
|
161
|
+
"audio",
|
|
162
|
+
"browser-automation",
|
|
163
|
+
"code-execution",
|
|
164
|
+
"craftbooks",
|
|
165
|
+
"data-tables",
|
|
166
|
+
"entity-intel",
|
|
167
|
+
"git",
|
|
168
|
+
"image-intel",
|
|
169
|
+
"images",
|
|
170
|
+
"role-delegation",
|
|
171
|
+
"role-delegation-escalation",
|
|
172
|
+
"security-intel",
|
|
173
|
+
"team-management",
|
|
174
|
+
"videos",
|
|
175
|
+
"web",
|
|
176
|
+
"workspace-fs-write"
|
|
177
|
+
],
|
|
178
|
+
"outputMedium": "task-note"
|
|
179
|
+
},
|
|
180
|
+
"terminal": true
|
|
181
|
+
}
|
|
182
|
+
],
|
|
183
|
+
"version": "1.0.0",
|
|
184
|
+
"releasedAt": "2026-10-08T00:00:00Z",
|
|
185
|
+
"minGezelVersion": "1.26281"
|
|
186
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "A folder with no dated photos yet",
|
|
4
|
+
"objective": "Prove that photo-library-nightly reads the photo index, finds no outing to make an album from in a folder whose photos carry no capture date, says so plainly in both working notes, and invents no album.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"photos",
|
|
7
|
+
"night-shift"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "Run the Nightly Photo Albums craftbook for this project. Read the photo index for outings, propose albums only for outings it actually lists, and say plainly when there is nothing to make an album from.",
|
|
10
|
+
"setup": {
|
|
11
|
+
"projectName": "Photo Albums Eval",
|
|
12
|
+
"about": "A family's photo folder that has just been added. Nothing in it carries a capture date yet: the index has only a few notes about an import that has not happened.",
|
|
13
|
+
"missionObjectives": "Run the nightly album pass as a real craftbook task: survey the outings from the photo index, write the outings note, then the albums note, and finish. With no dated photos there is no outing, so both notes must say `No new outings` and give the reason, and no album may be written.",
|
|
14
|
+
"files": [
|
|
15
|
+
{
|
|
16
|
+
"path": "README.md",
|
|
17
|
+
"content": "# Family photos\n\nThe phone backup lands here every Sunday. The first import has not run yet.\n"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"path": "notes/import-plan.md",
|
|
21
|
+
"content": "# Import plan\n\n- Copy the camera roll from the old phone.\n- Keep the originals; albums are proposals only.\n"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"success": {
|
|
26
|
+
"summary": "Both working notes exist, both say there were no new outings and why, and the task ran through its terminal step.",
|
|
27
|
+
"checks": [
|
|
28
|
+
{
|
|
29
|
+
"kind": "contains",
|
|
30
|
+
"file": "{{task.dir}}/outings.md",
|
|
31
|
+
"pattern": "No new outings",
|
|
32
|
+
"label": "the survey names the empty result",
|
|
33
|
+
"artifact": true
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"kind": "contains",
|
|
37
|
+
"file": "{{task.dir}}/albums.md",
|
|
38
|
+
"pattern": "No new outings",
|
|
39
|
+
"label": "the album step carries it through",
|
|
40
|
+
"artifact": true
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"taskGraph": {
|
|
44
|
+
"requireCraftbookTask": true,
|
|
45
|
+
"requireTerminalStep": true
|
|
46
|
+
},
|
|
47
|
+
"unchangedFixtures": [
|
|
48
|
+
"README.md",
|
|
49
|
+
"notes/import-plan.md"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"rubric": {
|
|
53
|
+
"artifact": {
|
|
54
|
+
"path": "tasks/eval/albums.md",
|
|
55
|
+
"kind": "markdown"
|
|
56
|
+
},
|
|
57
|
+
"axes": [
|
|
58
|
+
{
|
|
59
|
+
"name": "grounding",
|
|
60
|
+
"description": "Nothing is claimed that the photo index does not show: no invented outing, photo path, or album."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"name": "honesty",
|
|
64
|
+
"description": "The notes say why there is nothing to do (no dated photos), in a sentence a person understands."
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"contextNote": "The folder holds no photos with a capture date, so the correct result is an honest empty pass."
|
|
68
|
+
}
|
|
69
|
+
}
|