@bendyline/gilde 0.1.55 → 0.1.56
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/authoring/chat-models/glm-5.3-flash-320b-q2.json +129 -0
- package/authoring/gstack/wave.json +2 -2
- package/data/chat-models/gl/glm-5.3-flash-320b-q2/manifest.json +137 -0
- package/data/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.0/manifest.json +23 -0
- package/data/chat-models/index.json +1 -1
- package/data/craftbook-templates/a1/a11y-audit/versions/1.1.3/test.json +16 -8
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.2/craftbook.json +618 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.2/test.json +228 -0
- package/data/craftbook-templates/al/album-curate/versions/1.0.3/test.json +6 -3
- package/data/craftbook-templates/al/alert-rules/versions/1.0.3/test.json +8 -8
- package/data/craftbook-templates/an/anniversary-cut/versions/1.0.5/test.json +10 -5
- package/data/craftbook-templates/an/annual-document-review/versions/1.0.3/test.json +16 -8
- package/data/craftbook-templates/an/anomaly-scan/versions/1.0.3/test.json +12 -6
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.2/craftbook.json +602 -0
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.2/test.json +290 -0
- package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.3/test.json +18 -9
- package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.5/test.json +10 -5
- package/data/craftbook-templates/au/auth-flow/versions/1.0.3/test.json +12 -6
- package/data/craftbook-templates/au/auth-flow/versions/1.0.4/craftbook.json +282 -0
- package/data/craftbook-templates/au/auth-flow/versions/1.0.4/test.json +143 -0
- package/data/craftbook-templates/au/automation-recipe/versions/1.0.3/test.json +12 -6
- package/data/craftbook-templates/ba/backup-routine/versions/1.0.4/craftbook.json +282 -0
- package/data/craftbook-templates/ba/backup-routine/versions/1.0.4/test.json +108 -0
- package/data/craftbook-templates/bl/blog-post/versions/1.0.3/test.json +8 -8
- package/data/craftbook-templates/br/branding-website/versions/1.1.3/craftbook.json +335 -0
- package/data/craftbook-templates/br/branding-website/versions/1.1.3/test.json +164 -0
- package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.3/test.json +8 -8
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.8/craftbook.json +621 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.8/test.json +376 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.2/craftbook.json +730 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.2/test.json +221 -0
- package/data/craftbook-templates/bu/build-loop/versions/1.1.1/test.json +8 -8
- package/data/craftbook-templates/ca/case-study/versions/1.0.3/test.json +8 -8
- package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.4/test.json +10 -5
- package/data/craftbook-templates/ch/character-turnaround/versions/1.0.3/test.json +25 -11
- package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.2/craftbook.json +587 -0
- package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.2/test.json +225 -0
- package/data/craftbook-templates/ci/citation-audit/versions/1.0.3/test.json +28 -14
- package/data/craftbook-templates/cl/cli-tool/versions/1.1.3/test.json +8 -8
- package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.3/test.json +16 -8
- package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.3/test.json +18 -9
- package/data/craftbook-templates/co/codemod-sweep/versions/1.0.2/craftbook.json +605 -0
- package/data/craftbook-templates/co/codemod-sweep/versions/1.0.2/test.json +252 -0
- package/data/craftbook-templates/co/cohort-analysis/versions/1.0.3/test.json +18 -9
- package/data/craftbook-templates/co/competitive-analysis/versions/1.0.3/test.json +23 -15
- package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.3/test.json +28 -14
- package/data/craftbook-templates/co/content-deck/versions/1.2.3/craftbook.json +4 -4
- package/data/craftbook-templates/co/content-deck/versions/1.2.3/test.json +3 -0
- package/data/craftbook-templates/co/content-deck/versions/1.2.4/craftbook.json +341 -0
- package/data/craftbook-templates/co/content-deck/versions/1.2.4/test.json +169 -0
- package/data/craftbook-templates/co/copy-review/versions/1.0.3/test.json +14 -7
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/craftbook.json +4 -4
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/test.json +3 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/craftbook.json +345 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/test.json +187 -0
- package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.3/test.json +26 -13
- package/data/craftbook-templates/co/cover-letter/versions/1.0.3/test.json +8 -8
- package/data/craftbook-templates/cs/csv-transformer/versions/1.2.4/test.json +7 -7
- package/data/craftbook-templates/da/dashboard-spec/versions/1.0.3/test.json +7 -7
- package/data/craftbook-templates/da/data-export-migrate/versions/1.0.4/craftbook.json +285 -0
- package/data/craftbook-templates/da/data-export-migrate/versions/1.0.4/test.json +104 -0
- package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.5/craftbook.json +284 -0
- package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.5/test.json +162 -0
- package/data/craftbook-templates/da/data-quality-audit/versions/1.0.3/test.json +38 -19
- package/data/craftbook-templates/da/data-to-report/versions/1.0.3/test.json +12 -6
- package/data/craftbook-templates/db/db-index-tuning/versions/1.0.4/craftbook.json +286 -0
- package/data/craftbook-templates/db/db-index-tuning/versions/1.0.4/test.json +104 -0
- package/data/craftbook-templates/de/dependency-audit/versions/1.1.3/test.json +14 -7
- package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.2/craftbook.json +621 -0
- package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.2/test.json +235 -0
- package/data/craftbook-templates/de/design-review/versions/1.0.3/test.json +16 -8
- package/data/craftbook-templates/de/design-system-consultation/versions/2.0.8/craftbook.json +616 -0
- package/data/craftbook-templates/de/design-system-consultation/versions/2.0.8/test.json +201 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.4/craftbook.json +285 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.4/test.json +104 -0
- package/data/craftbook-templates/do/doc-rewrite/versions/1.0.3/test.json +119 -55
- package/data/craftbook-templates/do/dockerize-app/versions/1.0.4/craftbook.json +285 -0
- package/data/craftbook-templates/do/dockerize-app/versions/1.0.4/test.json +92 -0
- package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.3/test.json +18 -9
- package/data/craftbook-templates/dr/draft-social-post/versions/1.0.2/craftbook.json +324 -0
- package/data/craftbook-templates/dr/draft-social-post/versions/1.0.2/test.json +161 -0
- package/data/craftbook-templates/ed/edit-notes/versions/1.0.3/test.json +11 -4
- package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.8/craftbook.json +566 -0
- package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.8/test.json +191 -0
- package/data/craftbook-templates/ep/episode-plan/versions/1.0.3/test.json +10 -5
- package/data/craftbook-templates/ex/executive-level-review/versions/2.0.7/test.json +7 -10
- package/data/craftbook-templates/ex/executive-level-review/versions/2.0.8/craftbook.json +595 -0
- package/data/craftbook-templates/ex/executive-level-review/versions/2.0.8/test.json +139 -0
- package/data/craftbook-templates/ex/expense-categorize/versions/1.0.4/craftbook.json +277 -0
- package/data/craftbook-templates/ex/expense-categorize/versions/1.0.4/test.json +104 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.2/craftbook.json +327 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.2/test.json +162 -0
- package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.2/craftbook.json +718 -0
- package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.2/test.json +239 -0
- package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.4/craftbook.json +285 -0
- package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.4/test.json +162 -0
- package/data/craftbook-templates/fo/form-wizard/versions/1.0.3/test.json +8 -8
- package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.3/test.json +11 -4
- package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.2/craftbook.json +610 -0
- package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.2/test.json +220 -0
- package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.3/craftbook.json +343 -0
- package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.3/test.json +176 -0
- package/data/craftbook-templates/id/idea-office-hours/versions/2.0.8/craftbook.json +566 -0
- package/data/craftbook-templates/id/idea-office-hours/versions/2.0.8/test.json +141 -0
- package/data/craftbook-templates/im/image-set-index/versions/1.2.3/craftbook.json +298 -0
- package/data/craftbook-templates/im/image-set-index/versions/1.2.3/test.json +180 -0
- package/data/craftbook-templates/in/insurance-inventory/versions/1.0.3/test.json +11 -4
- package/data/craftbook-templates/in/interactive-quiz/versions/1.0.3/test.json +48 -23
- package/data/craftbook-templates/in/invitation-design/versions/1.0.3/test.json +1 -1
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/it/item-intake/versions/1.0.3/test.json +11 -4
- package/data/craftbook-templates/le/lead-enrichment/versions/1.0.4/craftbook.json +277 -0
- package/data/craftbook-templates/le/lead-enrichment/versions/1.0.4/test.json +104 -0
- package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.3/test.json +16 -8
- package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.3/test.json +3 -0
- package/data/craftbook-templates/mo/morning-report/versions/1.0.3/test.json +21 -9
- package/data/craftbook-templates/of/office-hours/versions/1.1.1/test.json +8 -8
- package/data/craftbook-templates/pe/perf-optimization/versions/2.0.2/craftbook.json +697 -0
- package/data/craftbook-templates/pe/perf-optimization/versions/2.0.2/test.json +235 -0
- package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.3/test.json +19 -8
- package/data/craftbook-templates/pl/plan/versions/1.0.2/test.json +8 -8
- package/data/craftbook-templates/pl/playtest-report/versions/1.0.3/test.json +17 -7
- package/data/craftbook-templates/pr/practice-exam/versions/1.0.3/test.json +7 -2
- package/data/craftbook-templates/pr/practice-session/versions/1.0.3/test.json +11 -4
- package/data/craftbook-templates/pu/pull-request-review/versions/1.9.2/craftbook.json +435 -0
- package/data/craftbook-templates/pu/pull-request-review/versions/1.9.2/test.json +141 -0
- package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.3/test.json +16 -8
- package/data/craftbook-templates/re/receipt-intake/versions/1.0.3/test.json +11 -4
- package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.4/craftbook.json +277 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.4/test.json +104 -0
- package/data/craftbook-templates/re/recipe-capture/versions/1.0.3/test.json +13 -5
- package/data/craftbook-templates/re/record-a-relative/versions/1.0.3/test.json +3 -0
- package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.4/craftbook.json +285 -0
- package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.4/test.json +104 -0
- package/data/craftbook-templates/re/refactor-module/versions/2.0.2/craftbook.json +695 -0
- package/data/craftbook-templates/re/refactor-module/versions/2.0.2/test.json +241 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.4/craftbook.json +361 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.4/test.json +138 -0
- package/data/craftbook-templates/re/release-notes/versions/1.0.4/test.json +8 -8
- package/data/craftbook-templates/re/release-notes/versions/1.0.5/craftbook.json +339 -0
- package/data/craftbook-templates/re/release-notes/versions/1.0.5/test.json +111 -0
- package/data/craftbook-templates/re/reliability-review/versions/1.0.3/test.json +16 -8
- package/data/craftbook-templates/re/research-report/versions/1.0.3/test.json +16 -8
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.8/craftbook.json +596 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.8/test.json +157 -0
- package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.4/test.json +13 -5
- package/data/craftbook-templates/sc/schema-migration/versions/2.0.2/craftbook.json +624 -0
- package/data/craftbook-templates/sc/schema-migration/versions/2.0.2/test.json +225 -0
- package/data/craftbook-templates/sc/script-automation/versions/1.0.4/craftbook.json +284 -0
- package/data/craftbook-templates/sc/script-automation/versions/1.0.4/test.json +162 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/2.0.7/test.json +10 -13
- package/data/craftbook-templates/se/security-architecture-review/versions/2.0.8/craftbook.json +597 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/2.0.8/test.json +157 -0
- package/data/craftbook-templates/so/social-digest/versions/1.0.3/craftbook.json +239 -0
- package/data/craftbook-templates/so/social-digest/versions/1.0.3/test.json +168 -0
- package/data/craftbook-templates/so/source-quality-audit/versions/1.0.3/test.json +25 -11
- package/data/craftbook-templates/sp/spec-authoring/versions/2.0.8/craftbook.json +599 -0
- package/data/craftbook-templates/sp/spec-authoring/versions/2.0.8/test.json +162 -0
- package/data/craftbook-templates/te/technical-documentation/versions/2.0.8/craftbook.json +577 -0
- package/data/craftbook-templates/te/technical-documentation/versions/2.0.8/test.json +174 -0
- package/data/craftbook-templates/te/test-coverage-review/versions/1.2.1/test.json +16 -8
- package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.2/craftbook.json +592 -0
- package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.2/test.json +195 -0
- package/data/craftbook-templates/th/thank-you-batch/versions/1.0.3/test.json +6 -3
- package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.3/test.json +11 -4
- package/data/craftbook-templates/ti/tileset-batch/versions/1.0.3/test.json +9 -3
- package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.3/test.json +10 -5
- package/data/craftbook-templates/tr/transcribe-index/versions/1.0.3/test.json +6 -3
- package/data/craftbook-templates/tr/translate-content/versions/1.1.3/craftbook.json +140 -0
- package/data/craftbook-templates/tr/translate-content/versions/1.1.3/test.json +141 -0
- package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.2/craftbook.json +594 -0
- package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.2/test.json +221 -0
- package/data/craftbook-templates/ux/ux-update/versions/1.0.2/craftbook.json +606 -0
- package/data/craftbook-templates/ux/ux-update/versions/1.0.2/test.json +206 -0
- package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.3/test.json +11 -4
- package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.3/test.json +21 -9
- package/data/craftbook-templates/wh/whitepaper/versions/1.0.3/test.json +16 -8
- package/data/craftbook-templates/ye/year-in-review/versions/1.0.3/test.json +8 -4
- package/data/project-types/index.json +1 -1
- package/data/project-types/ju/just-chat/manifest.json +1 -1
- package/data/project-types/ju/just-chat/versions/1.0.1/about.md +5 -0
- package/data/project-types/ju/just-chat/versions/1.0.1/manifest.json +19 -0
- package/package.json +1 -1
- package/schemas/chat-model-identity.schema.json +27 -0
- package/schemas/chat-model-version.schema.json +22 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Design System Consultation — Harbor Ops dashboard",
|
|
4
|
+
"objective": "Exercise the Design System Consultation craftbook on a seeded operations dashboard and require a grounded, accessible DESIGN.md plus a complete HTML state preview.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"workflow",
|
|
7
|
+
"design-system",
|
|
8
|
+
"html-page",
|
|
9
|
+
"accessibility"
|
|
10
|
+
],
|
|
11
|
+
"prompt": "Use the Design System Consultation craftbook for the Harbor Ops dashboard. This is an unattended evaluation: the product and taste decisions in `source/design-brief.md` are authoritative, so proceed without asking questions and label any remaining assumptions. Audit the supplied interface, preserve its useful density, then produce the workflow artifacts, `DESIGN.md`, and `previews/design-system.html`. The preview must be self-contained and show navigation, typography, controls, data cards, table content, empty/loading/error/success states, keyboard focus, disabled controls, and responsive behavior. Use no external assets or live research.",
|
|
12
|
+
"setup": {
|
|
13
|
+
"projectName": "Harbor Ops design system",
|
|
14
|
+
"about": "Harbor Ops is a desktop-first operations dashboard for coordinators monitoring time-sensitive berth assignments. The fixture is complete and must be handled without live research.",
|
|
15
|
+
"missionObjectives": "Run the Design System Consultation craftbook as a real task. Ground every design decision in the seeded brief and current interface, then deliver DESIGN.md and the self-contained preview.",
|
|
16
|
+
"files": [
|
|
17
|
+
{
|
|
18
|
+
"path": "README.md",
|
|
19
|
+
"content": "# Harbor Ops\n\nHarbor Ops helps port coordinators scan berth conflicts, assign an owner, and clear exceptions during a shift. It is dense desktop software used in bright control rooms; the core job is spotting the one item that needs action now.\n"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"path": "source/design-brief.md",
|
|
23
|
+
"content": "# Locked design brief\n\nAudience: experienced port coordinators working 8-hour shifts on desktop, with occasional tablet use.\n\nMemorable intent: **calm command under pressure**. The interface should feel serious and precise, never playful or luxurious.\n\nPreserve: dense scan-friendly tables, the navy header, status labels, and explicit timestamps.\n\nChange: inconsistent spacing, low-contrast muted text, color-only severity, invisible keyboard focus, and one-off button styles.\n\nBrand constraints: deep navy `#10233f`; signal amber `#d97706`; off-white canvas. Do not use pure black.\n\nAccessibility: WCAG AA text contrast, visible `:focus-visible`, shape/text in addition to status color, 44px primary touch targets on tablet, reduced-motion support.\n\nProduct states that must be designed: normal, loading, empty, permission error, delayed-data warning, success acknowledgement, selected row, disabled action.\n\nTaste: compact Swiss/industrial typography, restrained motion, square-to-soft corners (4-8px), clear dividers. Avoid gradients, glass effects, giant hero type, and decorative illustrations.\n"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"path": "src/dashboard.html",
|
|
27
|
+
"content": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><title>Harbor Ops</title><link rel=\"stylesheet\" href=\"styles.css\"></head><body><header>Harbor Ops <small>Shift A · 07:42 UTC</small></header><main><aside><button>Overview</button><button>Berths</button><button>Exceptions</button></aside><section><h1>Berth exceptions</h1><button class=\"primary\">Assign owner</button><table><tr><th>Vessel</th><th>Berth</th><th>Status</th><th>Updated</th></tr><tr><td>MV Juniper</td><td>B-14</td><td><span class=\"status\">Delayed</span></td><td>07:38 UTC</td></tr></table></section></main></body></html>\n"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"path": "src/styles.css",
|
|
31
|
+
"content": ":root{--navy:#10233f;--amber:#d97706}body{margin:0;font:14px Arial;background:#f7f5ef;color:#27364a}header{background:var(--navy);color:white;padding:13px 18px}header small{color:#7e8aa0}main{display:flex}aside{width:190px;padding:12px}section{flex:1;padding:19px}button{border:0;padding:7px;margin:3px}.primary{background:var(--amber);color:white}.status{color:#d97706}table{width:100%;border-collapse:collapse}td,th{text-align:left;border-bottom:1px solid #ddd;padding:9px}button:focus{outline:none}\n"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"mocks": [],
|
|
36
|
+
"success": {
|
|
37
|
+
"summary": "The real craftbook produces a grounded design audit and brief, an accessible token specification, a valid multi-state preview, and terminal review evidence.",
|
|
38
|
+
"deliverables": [
|
|
39
|
+
{
|
|
40
|
+
"path": "design/current-state-audit.md",
|
|
41
|
+
"kind": "markdown-report",
|
|
42
|
+
"minBytes": 750,
|
|
43
|
+
"checks": [
|
|
44
|
+
{
|
|
45
|
+
"kind": "contains",
|
|
46
|
+
"file": "design/current-state-audit.md",
|
|
47
|
+
"pattern": "^#{1,3}\\s+Product and users\\b[\\s\\S]*^#{1,3}\\s+Existing language\\b[\\s\\S]*^#{1,3}\\s+Accessibility\\b",
|
|
48
|
+
"flags": "im",
|
|
49
|
+
"label": "grounded current-state audit"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"kind": "citationsResolve",
|
|
53
|
+
"file": "design/current-state-audit.md",
|
|
54
|
+
"minCitations": 2
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"path": "DESIGN.md",
|
|
60
|
+
"kind": "markdown-doc",
|
|
61
|
+
"minBytes": 1800,
|
|
62
|
+
"checks": [
|
|
63
|
+
{
|
|
64
|
+
"kind": "contains",
|
|
65
|
+
"file": "DESIGN.md",
|
|
66
|
+
"pattern": "^#{1,3}\\s+Design intent\\b[\\s\\S]*^#{1,3}\\s+Tokens\\b[\\s\\S]*^#{1,3}\\s+Typography\\b[\\s\\S]*^#{1,3}\\s+Color\\b[\\s\\S]*^#{1,3}\\s+Components and states\\b[\\s\\S]*^#{1,3}\\s+Accessibility\\b[\\s\\S]*^#{1,3}\\s+Adoption\\b",
|
|
67
|
+
"flags": "im",
|
|
68
|
+
"label": "complete design-system specification"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"kind": "valueGrounding",
|
|
72
|
+
"file": "DESIGN.md",
|
|
73
|
+
"facts": [
|
|
74
|
+
{
|
|
75
|
+
"id": "intent",
|
|
76
|
+
"label": "memorable intent",
|
|
77
|
+
"required": [
|
|
78
|
+
"calm command under pressure"
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "brand-navy",
|
|
83
|
+
"label": "locked navy",
|
|
84
|
+
"required": [
|
|
85
|
+
"#10233f"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "brand-amber",
|
|
90
|
+
"label": "locked signal amber",
|
|
91
|
+
"required": [
|
|
92
|
+
"#d97706"
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "keyboard-focus",
|
|
97
|
+
"label": "visible keyboard focus",
|
|
98
|
+
"required": [
|
|
99
|
+
"focus-visible"
|
|
100
|
+
]
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"id": "reduced-motion",
|
|
104
|
+
"label": "reduced-motion behavior",
|
|
105
|
+
"required": [
|
|
106
|
+
"reduced-motion|prefers-reduced-motion"
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "touch-target",
|
|
111
|
+
"label": "tablet touch target",
|
|
112
|
+
"required": [
|
|
113
|
+
"44\\s*(?:px|pixel)"
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
]
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"path": "previews/design-system.html",
|
|
122
|
+
"kind": "html-page",
|
|
123
|
+
"minBytes": 3000,
|
|
124
|
+
"checks": [
|
|
125
|
+
{
|
|
126
|
+
"kind": "htmlLint",
|
|
127
|
+
"file": "previews/design-system.html"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"kind": "cssMinBytes",
|
|
131
|
+
"bytes": 900,
|
|
132
|
+
"file": "previews/design-system.html"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"kind": "contains",
|
|
136
|
+
"file": "previews/design-system.html",
|
|
137
|
+
"pattern": "loading[\\s\\S]*empty[\\s\\S]*(error|permission)[\\s\\S]*(success|acknowledge)[\\s\\S]*disabled",
|
|
138
|
+
"flags": "i",
|
|
139
|
+
"label": "representative application states"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"kind": "contains",
|
|
143
|
+
"file": "previews/design-system.html",
|
|
144
|
+
"pattern": "focus-visible|prefers-reduced-motion",
|
|
145
|
+
"flags": "i",
|
|
146
|
+
"label": "keyboard focus and reduced motion"
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
"taskNotes": {
|
|
152
|
+
"minBytes": 180,
|
|
153
|
+
"checks": [
|
|
154
|
+
{
|
|
155
|
+
"kind": "contains",
|
|
156
|
+
"file": "task-notes.md",
|
|
157
|
+
"pattern": "\\bDONE\\b[\\s\\S]*DESIGN\\.md[\\s\\S]*previews/design-system\\.html",
|
|
158
|
+
"flags": "i",
|
|
159
|
+
"label": "terminal note records both design deliverables"
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
"requireCraftbookTask": true
|
|
163
|
+
},
|
|
164
|
+
"taskGraph": {
|
|
165
|
+
"requireCraftbookTask": true,
|
|
166
|
+
"requireTerminalStep": true
|
|
167
|
+
},
|
|
168
|
+
"unchangedFixtures": [
|
|
169
|
+
"README.md",
|
|
170
|
+
"source/design-brief.md",
|
|
171
|
+
"src/dashboard.html",
|
|
172
|
+
"src/styles.css"
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
"rubric": {
|
|
176
|
+
"artifact": {
|
|
177
|
+
"path": "DESIGN.md",
|
|
178
|
+
"kind": "markdown"
|
|
179
|
+
},
|
|
180
|
+
"axes": [
|
|
181
|
+
{
|
|
182
|
+
"name": "Product fit",
|
|
183
|
+
"description": "The system reinforces calm command under pressure and the actual coordinator workflows rather than generic visual taste."
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"name": "System coherence",
|
|
187
|
+
"description": "Tokens, typography, color, density, components, states, and motion form a reusable system with explicit rationale."
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "Accessibility and preview",
|
|
191
|
+
"description": "The specification and preview cover contrast, focus, non-color status, touch size, reduced motion, responsiveness, and real application states."
|
|
192
|
+
}
|
|
193
|
+
],
|
|
194
|
+
"contextNote": "Judge against the seeded brief and current dashboard; decorative novelty that violates the locked taste is a defect."
|
|
195
|
+
},
|
|
196
|
+
"qualityFocus": [
|
|
197
|
+
"Preserve useful density while correcting current accessibility failures",
|
|
198
|
+
"Use exact reusable tokens with reasons",
|
|
199
|
+
"Preview representative responsive and interaction states without external assets"
|
|
200
|
+
]
|
|
201
|
+
}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "doc-intake-pipeline",
|
|
3
|
+
"name": "Classify and Route Incoming Documents",
|
|
4
|
+
"description": "Build a document-intake pipeline that classifies each incoming file (invoice, contract, resume, receipt, ID, support ticket, other) into a fixed type set, extracts a few key fields per type, and routes it to the right destination folder with a normalized filename. Locks the document-type taxonomy, per-type extraction fields, and the routing/naming rules FIRST, then builds the classify-extract-route loop, then verifies every input file was handled, classifications are in-set with an 'other' fallback, and routing is deterministic. Taxonomy-and-routing-before-build prevents files from silently vanishing or piling into a misc bucket.\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 pipeline (planner) — doc-type taxonomy, per-type fields, routing rules → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Build the pipeline (developer) — classify, extract key fields, route + rename, log → gated on `intake.py` (code-module)\n3. Verify the pipeline (reviewer) — coverage, in-set types, deterministic routing → gated on artifact `{{workPath}}/verify.md` (markdown-notes)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
|
|
5
|
+
"entryStepId": "scope",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"sort incoming documents",
|
|
8
|
+
"classify and file documents",
|
|
9
|
+
"auto-route a folder of files",
|
|
10
|
+
"document intake pipeline",
|
|
11
|
+
"organize a dump of files"
|
|
12
|
+
],
|
|
13
|
+
"paramSchema": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"properties": {
|
|
16
|
+
"workPath": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"title": "Working folder",
|
|
19
|
+
"description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
|
|
20
|
+
"default": "{{task.dir}}"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"steps": [
|
|
25
|
+
{
|
|
26
|
+
"id": "scope",
|
|
27
|
+
"name": "Scope the pipeline",
|
|
28
|
+
"description": "doc-type taxonomy, per-type fields, routing rules",
|
|
29
|
+
"prompt": "Define the intake contract before building. Step 1: identify the inbox/source folder and the file types present (PDF, image, docx, email). Step 2: define the closed document-type taxonomy (e.g. invoice, contract, receipt, resume, id-document, support-ticket, other) — every file lands in exactly one, with 'other' as the explicit fallback. Step 3: for each type, list the few key fields to extract (e.g. invoice → vendor, date, total, invoice_no) and the classification signals (keywords, layout cues). Step 4: define routing and naming: destination folder per type and a normalized filename template (e.g. {type}/{date}_{vendor}_{id}.pdf), plus the dedup rule for name collisions. Step 5: write an acceptance-criteria checklist ('every input file classified into exactly one in-set type', 'an other bucket exists and is used not abused', 'per-type key fields extracted', 'each file routed and renamed deterministically', 'no file lost or overwritten', 'an intake manifest logs every file with source→destination'). Call write_task_note with taxonomy + fields + routing + checklist and write {{workPath}}/scope.md. No build yet.\n\nThe deliverable `{{workPath}}/scope.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
|
|
30
|
+
"suggestedRole": "planner",
|
|
31
|
+
"toolPolicy": {
|
|
32
|
+
"disallowBuiltinToolsets": [
|
|
33
|
+
"ai-apps",
|
|
34
|
+
"archives",
|
|
35
|
+
"audio",
|
|
36
|
+
"browser-automation",
|
|
37
|
+
"code-execution",
|
|
38
|
+
"craftbooks",
|
|
39
|
+
"data-tables",
|
|
40
|
+
"entity-intel",
|
|
41
|
+
"git",
|
|
42
|
+
"image-intel",
|
|
43
|
+
"images",
|
|
44
|
+
"role-delegation",
|
|
45
|
+
"role-delegation-escalation",
|
|
46
|
+
"security-intel",
|
|
47
|
+
"team-management",
|
|
48
|
+
"videos",
|
|
49
|
+
"web",
|
|
50
|
+
"workspace-fs-write"
|
|
51
|
+
],
|
|
52
|
+
"outputMedium": "artifact",
|
|
53
|
+
"additionalOutputMedia": [
|
|
54
|
+
"task-note"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"advanceWhen": {
|
|
58
|
+
"file": "{{workPath}}/scope.md",
|
|
59
|
+
"minBytes": 1,
|
|
60
|
+
"sniff": "nonempty",
|
|
61
|
+
"artifact": true
|
|
62
|
+
},
|
|
63
|
+
"gate": {
|
|
64
|
+
"at": "completion",
|
|
65
|
+
"checks": [
|
|
66
|
+
{
|
|
67
|
+
"kind": "minBytes",
|
|
68
|
+
"file": "{{workPath}}/scope.md",
|
|
69
|
+
"bytes": 120,
|
|
70
|
+
"artifact": true
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"kind": "sniff",
|
|
74
|
+
"file": "{{workPath}}/scope.md",
|
|
75
|
+
"sniff": "nonempty",
|
|
76
|
+
"artifact": true
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"onReject": "scope",
|
|
80
|
+
"maxAttempts": 3
|
|
81
|
+
},
|
|
82
|
+
"next": "build"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "build",
|
|
86
|
+
"name": "Build the pipeline",
|
|
87
|
+
"description": "classify, extract key fields, route + rename, log",
|
|
88
|
+
"prompt": "Implement the intake pipeline to the locked contract. Step 1: enumerate every file in the source folder. Step 2: classify each into exactly one taxonomy type using the agreed signals; when confidence is low, route to 'other' rather than guessing a specific type. Step 3: extract the per-type key fields and capture them in the manifest. Step 4: route the file to its destination folder and rename it per the template, applying the collision/dedup rule so nothing is overwritten. Step 5: append an intake-manifest row per file (source path, type, extracted fields, destination path, status) and write the manifest. Make it a runnable module and write it; confirm the manifest parses. Call write_task_note with the module path, the manifest path, and per-type counts.",
|
|
89
|
+
"suggestedRole": "developer",
|
|
90
|
+
"toolPolicy": {
|
|
91
|
+
"disallowBuiltinToolsets": [
|
|
92
|
+
"ai-apps",
|
|
93
|
+
"archives",
|
|
94
|
+
"artifacts",
|
|
95
|
+
"audio",
|
|
96
|
+
"browser-automation",
|
|
97
|
+
"craftbooks",
|
|
98
|
+
"data-tables",
|
|
99
|
+
"entity-intel",
|
|
100
|
+
"git",
|
|
101
|
+
"image-intel",
|
|
102
|
+
"images",
|
|
103
|
+
"role-delegation",
|
|
104
|
+
"role-delegation-escalation",
|
|
105
|
+
"security-intel",
|
|
106
|
+
"team-management",
|
|
107
|
+
"videos",
|
|
108
|
+
"web"
|
|
109
|
+
],
|
|
110
|
+
"outputMedium": "workspace",
|
|
111
|
+
"additionalOutputMedia": [
|
|
112
|
+
"task-note"
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
"advanceWhen": {
|
|
116
|
+
"file": "intake.py",
|
|
117
|
+
"minBytes": 1,
|
|
118
|
+
"sniff": "nonempty"
|
|
119
|
+
},
|
|
120
|
+
"gate": {
|
|
121
|
+
"at": "completion",
|
|
122
|
+
"checks": [
|
|
123
|
+
{
|
|
124
|
+
"kind": "minBytes",
|
|
125
|
+
"file": "intake.py",
|
|
126
|
+
"bytes": 200
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"kind": "sniff",
|
|
130
|
+
"file": "intake.py",
|
|
131
|
+
"sniff": "nonempty"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"kind": "esmImports",
|
|
135
|
+
"file": "intake.py"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"kind": "sourceParses",
|
|
139
|
+
"file": "intake.py"
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
"onReject": "build",
|
|
143
|
+
"maxAttempts": 3
|
|
144
|
+
},
|
|
145
|
+
"next": "verify"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "verify",
|
|
149
|
+
"name": "Verify the pipeline",
|
|
150
|
+
"description": "coverage, in-set types, deterministic routing",
|
|
151
|
+
"prompt": "Verify the pipeline against scope. Step 1: confirm it runs and produces an intake manifest. Step 2: check coverage — the manifest has one row per source file and the count of routed files equals the count of input files (nothing lost). Step 3: confirm every classification is an in-set type and that 'other' is used for genuinely ambiguous files but not as a dumping ground for everything. Step 4: confirm routing is deterministic and collision-safe — re-running classifies the same file identically and no destination file was overwritten. Step 5: spot-check 5 files: correct type, extracted fields match the document, filename matches the template. Write PASS/FAIL per criterion to {{workPath}}/verify.md and task notes; on failure, name the files and loop back to build.\n\nThe deliverable `{{workPath}}/verify.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
|
|
152
|
+
"suggestedRole": "reviewer",
|
|
153
|
+
"toolPolicy": {
|
|
154
|
+
"disallowBuiltinToolsets": [
|
|
155
|
+
"ai-apps",
|
|
156
|
+
"archives",
|
|
157
|
+
"audio",
|
|
158
|
+
"browser-automation",
|
|
159
|
+
"code-execution",
|
|
160
|
+
"craftbooks",
|
|
161
|
+
"data-tables",
|
|
162
|
+
"entity-intel",
|
|
163
|
+
"git",
|
|
164
|
+
"image-intel",
|
|
165
|
+
"images",
|
|
166
|
+
"role-delegation",
|
|
167
|
+
"role-delegation-escalation",
|
|
168
|
+
"security-intel",
|
|
169
|
+
"team-management",
|
|
170
|
+
"videos",
|
|
171
|
+
"web",
|
|
172
|
+
"workspace-fs-write"
|
|
173
|
+
],
|
|
174
|
+
"outputMedium": "artifact",
|
|
175
|
+
"additionalOutputMedia": [
|
|
176
|
+
"task-note"
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
"advanceWhen": {
|
|
180
|
+
"file": "{{workPath}}/verify.md",
|
|
181
|
+
"minBytes": 1,
|
|
182
|
+
"sniff": "nonempty",
|
|
183
|
+
"artifact": true
|
|
184
|
+
},
|
|
185
|
+
"gate": {
|
|
186
|
+
"at": "completion",
|
|
187
|
+
"checks": [
|
|
188
|
+
{
|
|
189
|
+
"kind": "minBytes",
|
|
190
|
+
"file": "intake.py",
|
|
191
|
+
"bytes": 200
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"kind": "sniff",
|
|
195
|
+
"file": "intake.py",
|
|
196
|
+
"sniff": "nonempty"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"kind": "esmImports",
|
|
200
|
+
"file": "intake.py"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"kind": "sourceParses",
|
|
204
|
+
"file": "intake.py"
|
|
205
|
+
}
|
|
206
|
+
],
|
|
207
|
+
"onReject": "verify",
|
|
208
|
+
"maxAttempts": 4
|
|
209
|
+
},
|
|
210
|
+
"next": "evaluate"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"id": "evaluate",
|
|
214
|
+
"name": "Evaluate",
|
|
215
|
+
"description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
|
|
216
|
+
"prompt": "Run intake.py (or trace it) and verify every criterion from {{workPath}}/scope.md against the intake manifest. Confirm: one manifest row per source file with routed count equal to input count (no files lost or overwritten), every classification is in-set with 'other' used appropriately, per-type key fields are extracted, filenames follow the template, and routing is deterministic on re-run. Spot-check 5 files. Write PASS/FAIL per criterion; on any failure, name the files and loop back to build.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"build\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
|
|
217
|
+
"suggestedRole": "reviewer",
|
|
218
|
+
"toolPolicy": {
|
|
219
|
+
"disallowBuiltinToolsets": [
|
|
220
|
+
"ai-apps",
|
|
221
|
+
"archives",
|
|
222
|
+
"artifacts",
|
|
223
|
+
"audio",
|
|
224
|
+
"browser-automation",
|
|
225
|
+
"code-execution",
|
|
226
|
+
"craftbooks",
|
|
227
|
+
"data-tables",
|
|
228
|
+
"entity-intel",
|
|
229
|
+
"git",
|
|
230
|
+
"image-intel",
|
|
231
|
+
"images",
|
|
232
|
+
"role-delegation",
|
|
233
|
+
"role-delegation-escalation",
|
|
234
|
+
"security-intel",
|
|
235
|
+
"team-management",
|
|
236
|
+
"videos",
|
|
237
|
+
"web",
|
|
238
|
+
"workspace-fs-write"
|
|
239
|
+
],
|
|
240
|
+
"outputMedium": "task-note"
|
|
241
|
+
},
|
|
242
|
+
"consumes": [
|
|
243
|
+
{
|
|
244
|
+
"file": "intake.py"
|
|
245
|
+
}
|
|
246
|
+
],
|
|
247
|
+
"next": "build"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"id": "finish",
|
|
251
|
+
"name": "Finish",
|
|
252
|
+
"description": "All acceptance criteria met. Stamp a short summary and report DONE.",
|
|
253
|
+
"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.",
|
|
254
|
+
"suggestedRole": "developer",
|
|
255
|
+
"toolPolicy": {
|
|
256
|
+
"disallowBuiltinToolsets": [
|
|
257
|
+
"ai-apps",
|
|
258
|
+
"archives",
|
|
259
|
+
"artifacts",
|
|
260
|
+
"audio",
|
|
261
|
+
"browser-automation",
|
|
262
|
+
"code-execution",
|
|
263
|
+
"craftbooks",
|
|
264
|
+
"data-tables",
|
|
265
|
+
"entity-intel",
|
|
266
|
+
"git",
|
|
267
|
+
"image-intel",
|
|
268
|
+
"images",
|
|
269
|
+
"role-delegation",
|
|
270
|
+
"role-delegation-escalation",
|
|
271
|
+
"security-intel",
|
|
272
|
+
"team-management",
|
|
273
|
+
"videos",
|
|
274
|
+
"web",
|
|
275
|
+
"workspace-fs-write"
|
|
276
|
+
],
|
|
277
|
+
"outputMedium": "task-note"
|
|
278
|
+
},
|
|
279
|
+
"terminal": true
|
|
280
|
+
}
|
|
281
|
+
],
|
|
282
|
+
"version": "1.0.4",
|
|
283
|
+
"releasedAt": "2026-09-05T03:30:00Z",
|
|
284
|
+
"minGezelVersion": "1.26233"
|
|
285
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Classify and Route Incoming Documents smoke eval",
|
|
4
|
+
"objective": "Self-contained smoke eval for the Classify and Route Incoming Documents craftbook using the data generic harness.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"data"
|
|
7
|
+
],
|
|
8
|
+
"prompt": "I dropped our numbers in source/records.csv. Can you look at the data, analyze it, and put togehter some results in analysis.md?",
|
|
9
|
+
"setup": {
|
|
10
|
+
"projectName": "Classify and Route Incoming Documents Eval",
|
|
11
|
+
"about": "Self-contained eval project for doc-intake-pipeline. Seeded inputs are under workspace/source or workspace/fixtures; final deliverable is workspace/analysis.md.",
|
|
12
|
+
"missionObjectives": "Use the Classify and Route Incoming Documents craftbook/template, read the seeded local fixtures, and write analysis.md without network calls, real credentials, or live services.",
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "source/brief.md",
|
|
16
|
+
"content": "# Classify and Route Incoming Documents Eval Brief\n\nClient: Boreal Desk, a home-office accessories company.\nAudience: operations leads who need an artifact they can use this week.\n\nFixed source facts for grounding:\n- The returns desk pilot covered 18 SKUs.\n- Median first response improved from 18 hours to 6 hours.\n- Preventable refund leakage fell from 14.2% to 8.9%.\n- The top unresolved complaint is status silence after photo submission.\n- Required next actions are automated status emails, barcode-exception training, and a weekly Finance exception export.\n\nUse these facts when the task asks for prose, analysis, copy, UI content, or test data. Do not use live web services, real credentials, or current outside data.\n\nCraftbook under test: doc-intake-pipeline - Classify and Route Incoming Documents.\n"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": "source/records.csv",
|
|
20
|
+
"content": "customer,region,orders,revenue_usd,churn_risk\nAster,North,12,1440,low\nBoreal,South,8,720,medium\nCedar,West,15,2100,high\nDune,North,5,500,low\n"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"worker": {
|
|
24
|
+
"name": "Jules",
|
|
25
|
+
"role": "Data Analyst"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"mocks": [],
|
|
29
|
+
"success": {
|
|
30
|
+
"summary": "analysis.md is a seeded-data analysis with deterministic computed facts.",
|
|
31
|
+
"deliverables": [
|
|
32
|
+
{
|
|
33
|
+
"path": "analysis.md",
|
|
34
|
+
"kind": "markdown-report",
|
|
35
|
+
"minBytes": 900,
|
|
36
|
+
"checks": [
|
|
37
|
+
{
|
|
38
|
+
"kind": "contains",
|
|
39
|
+
"file": "analysis.md",
|
|
40
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
41
|
+
"flags": "i"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"kind": "contains",
|
|
45
|
+
"file": "analysis.md",
|
|
46
|
+
"pattern": "40\\b",
|
|
47
|
+
"flags": "i",
|
|
48
|
+
"label": "include total orders of 40"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"kind": "contains",
|
|
52
|
+
"file": "analysis.md",
|
|
53
|
+
"pattern": "\\$?4,?760\\b",
|
|
54
|
+
"flags": "i",
|
|
55
|
+
"label": "include total revenue of 4760"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"kind": "contains",
|
|
59
|
+
"file": "analysis.md",
|
|
60
|
+
"pattern": "Cedar",
|
|
61
|
+
"flags": "i",
|
|
62
|
+
"label": "identify Cedar as top revenue and high risk"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"kind": "contains",
|
|
66
|
+
"file": "analysis.md",
|
|
67
|
+
"pattern": "high",
|
|
68
|
+
"flags": "i",
|
|
69
|
+
"label": "include churn-risk finding"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
"rubric": {
|
|
76
|
+
"artifact": {
|
|
77
|
+
"path": "analysis.md",
|
|
78
|
+
"kind": "markdown"
|
|
79
|
+
},
|
|
80
|
+
"axes": [
|
|
81
|
+
{
|
|
82
|
+
"name": "accuracy",
|
|
83
|
+
"description": "Computed figures are correct against the seeded records."
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"name": "grounding",
|
|
87
|
+
"description": "Every claim traces to the seeded data — nothing invented."
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"name": "structure",
|
|
91
|
+
"description": "Tables and sections make the analysis checkable at a glance."
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "actionability",
|
|
95
|
+
"description": "Recommendations follow from the findings and are concretely doable."
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
"qualityFocus": [
|
|
100
|
+
"seeded data reading",
|
|
101
|
+
"computed facts",
|
|
102
|
+
"recommendation grounding"
|
|
103
|
+
]
|
|
104
|
+
}
|