@bendyline/gilde 0.1.55 → 0.1.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/authoring/chat-models/glm-5.3-flash-320b-q2.json +129 -0
- package/authoring/chat-models/qwen3.8-flash-next-iq3.json +198 -0
- package/authoring/chat-models/qwen3.8-flash-next-iq4.json +198 -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/chat-models/qw/qwen3.8-flash-next-iq3/manifest.json +221 -0
- package/data/chat-models/qw/qwen3.8-flash-next-iq3/versions/1.0.0/manifest.json +36 -0
- package/data/chat-models/qw/qwen3.8-flash-next-iq4/manifest.json +221 -0
- package/data/chat-models/qw/qwen3.8-flash-next-iq4/versions/1.0.0/manifest.json +36 -0
- 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
|
@@ -77,20 +77,20 @@
|
|
|
77
77
|
},
|
|
78
78
|
"axes": [
|
|
79
79
|
{
|
|
80
|
-
"name": "
|
|
81
|
-
"description": "
|
|
80
|
+
"name": "accuracy",
|
|
81
|
+
"description": "Computed figures are correct against the seeded records."
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
"name": "grounding",
|
|
85
|
-
"description": "
|
|
85
|
+
"description": "Every claim traces to the seeded data — nothing invented."
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
|
-
"name": "
|
|
89
|
-
"description": "
|
|
88
|
+
"name": "structure",
|
|
89
|
+
"description": "Tables and sections make the analysis checkable at a glance."
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
|
-
"name": "
|
|
93
|
-
"description": "
|
|
92
|
+
"name": "actionability",
|
|
93
|
+
"description": "Recommendations follow from the findings and are concretely doable."
|
|
94
94
|
}
|
|
95
95
|
]
|
|
96
96
|
},
|
|
@@ -89,20 +89,20 @@
|
|
|
89
89
|
},
|
|
90
90
|
"axes": [
|
|
91
91
|
{
|
|
92
|
-
"name": "
|
|
93
|
-
"description": "
|
|
92
|
+
"name": "accuracy",
|
|
93
|
+
"description": "Computed figures are correct against the seeded records."
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
"name": "grounding",
|
|
97
|
-
"description": "
|
|
97
|
+
"description": "Every claim traces to the seeded data — nothing invented."
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
|
-
"name": "
|
|
101
|
-
"description": "
|
|
100
|
+
"name": "structure",
|
|
101
|
+
"description": "Tables and sections make the analysis checkable at a glance."
|
|
102
102
|
},
|
|
103
103
|
{
|
|
104
|
-
"name": "
|
|
105
|
-
"description": "
|
|
104
|
+
"name": "actionability",
|
|
105
|
+
"description": "Recommendations follow from the findings and are concretely doable."
|
|
106
106
|
}
|
|
107
107
|
]
|
|
108
108
|
},
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "data-export-migrate",
|
|
3
|
+
"name": "Migrate Data Between Tools",
|
|
4
|
+
"description": "Migrate records from a source tool/format to a destination tool/format — CRM to CRM, spreadsheet to app, JSON export to a new API — with a field mapping, value transforms, and a reconciliation that proves nothing was lost or corrupted. Locks the source→destination field map, the transform/normalization rules, and the reconciliation criteria FIRST, then builds the extract-transform-load with a dry-run preview, then verifies record counts match, key fields round-trip, and a diff report flags any mismatch. Mapping-and-reconciliation-before-load is the discipline that makes a migration trustworthy rather than a one-shot leap of faith.\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 migration (planner) — field map, transforms, reconciliation criteria → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Build the migration (developer) — extract, transform, dry-run, load, reconcile → gated on `migrate.py` (code-module)\n3. Verify the migration (reviewer) — counts reconcile, fields round-trip, diff clean → 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
|
+
"migrate data between tools",
|
|
8
|
+
"move my CRM data",
|
|
9
|
+
"import an export into another app",
|
|
10
|
+
"convert and load records",
|
|
11
|
+
"migrate a spreadsheet to an app"
|
|
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 migration",
|
|
28
|
+
"description": "field map, transforms, reconciliation criteria",
|
|
29
|
+
"prompt": "Define the migration contract before moving data. Step 1: profile the source (format, record count, fields, key) and the destination (target schema, required fields, the key/upsert semantics). Step 2: build the source→destination field map, including fields that split/merge/rename, and list destination required-fields with no source — each needs a default or makes the record invalid. Step 3: define per-field transforms (date/format normalization, enum remapping, unit conversion) and the validation rules a destination record must satisfy. Step 4: define the reconciliation criteria — counts match (in vs out vs rejected), a chosen key set round-trips, and key totals/sums match. Step 5: write an acceptance-criteria checklist ('every source record is loaded or explicitly rejected with a reason', 'field map applied, no unmapped data dropped silently', 'transforms produce valid destination values', 'counts reconcile', 'a dry-run preview exists before any write', 'a diff report lists every mismatch'). Call write_task_note with the map + transforms + reconciliation + checklist and write {{workPath}}/scope.md. No load 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 migration",
|
|
87
|
+
"description": "extract, transform, dry-run, load, reconcile",
|
|
88
|
+
"prompt": "Implement the migration to the locked map. Step 1: extract all source records. Step 2: transform each record through the field map and transforms into a destination-shaped object; validate it, and on failure route it to a rejected list with the reason rather than dropping it. Step 3: produce a DRY-RUN preview first — the transformed records and a summary (to-load / rejected counts) — and write it before any destination write. Step 4: load into the destination using the upsert key so a re-run is idempotent (no duplicates). Step 5: run reconciliation — produce a diff report comparing source vs destination on counts and the chosen key fields, listing every mismatch — and write the migration module plus the diff report. Call write_task_note with the module path, the diff-report path, and the loaded/rejected 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": "migrate.py",
|
|
117
|
+
"minBytes": 1,
|
|
118
|
+
"sniff": "nonempty"
|
|
119
|
+
},
|
|
120
|
+
"gate": {
|
|
121
|
+
"at": "completion",
|
|
122
|
+
"checks": [
|
|
123
|
+
{
|
|
124
|
+
"kind": "minBytes",
|
|
125
|
+
"file": "migrate.py",
|
|
126
|
+
"bytes": 200
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"kind": "sniff",
|
|
130
|
+
"file": "migrate.py",
|
|
131
|
+
"sniff": "nonempty"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"kind": "esmImports",
|
|
135
|
+
"file": "migrate.py"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"kind": "sourceParses",
|
|
139
|
+
"file": "migrate.py"
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
"onReject": "build",
|
|
143
|
+
"maxAttempts": 3
|
|
144
|
+
},
|
|
145
|
+
"next": "verify"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "verify",
|
|
149
|
+
"name": "Verify the migration",
|
|
150
|
+
"description": "counts reconcile, fields round-trip, diff clean",
|
|
151
|
+
"prompt": "Verify the migration against scope. Step 1: confirm the module runs and produces both a dry-run preview and a diff report. Step 2: confirm coverage — every source record is either loaded or in the rejected list with a reason; loaded + rejected equals the source count. Step 3: confirm the field map applied with no silent data loss, and that destination records pass the validation rules. Step 4: confirm reconciliation — counts match and the chosen key fields round-trip (spot-check 5 records source↔destination), and the diff report has no unexplained mismatches. Step 5: confirm idempotency — a re-run via the upsert key creates no duplicates. Write PASS/FAIL per criterion to {{workPath}}/verify.md and task notes; on failure, name the records 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": "migrate.py",
|
|
191
|
+
"bytes": 200
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"kind": "sniff",
|
|
195
|
+
"file": "migrate.py",
|
|
196
|
+
"sniff": "nonempty"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"kind": "esmImports",
|
|
200
|
+
"file": "migrate.py"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"kind": "sourceParses",
|
|
204
|
+
"file": "migrate.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 migrate.py in dry-run and load modes (or trace it) and verify every criterion from {{workPath}}/scope.md: a dry-run preview precedes any write, every source record is loaded or rejected-with-reason (loaded+rejected = source count), the field map applied with no silent loss, destination records validate, counts reconcile and key fields round-trip (spot-check 5), the diff report has no unexplained mismatches, and a re-run via the upsert key creates no duplicates. Write PASS/FAIL per criterion; on any failure, name the records 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": "migrate.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": "Migrate Data Between Tools smoke eval",
|
|
4
|
+
"objective": "Self-contained smoke eval for the Migrate Data Between Tools 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": "Migrate Data Between Tools Eval",
|
|
11
|
+
"about": "Self-contained eval project for data-export-migrate. Seeded inputs are under workspace/source or workspace/fixtures; final deliverable is workspace/analysis.md.",
|
|
12
|
+
"missionObjectives": "Use the Migrate Data Between Tools 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": "# Migrate Data Between Tools 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: data-export-migrate - Migrate Data Between Tools.\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
|
+
}
|