@bendyline/gilde 0.1.39 → 0.1.41
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/muse-glimmer-30b-q4.json +3 -3
- package/authoring/chat-models/ornith-9b-q4.json +1 -1
- package/authoring/chat-models/ornith1.5-9b-q4.json +149 -0
- package/authoring/chat-models/qwen3.8-27b-iq1-s.json +190 -0
- package/authoring/chat-models/qwen3.8-27b-q2.json +189 -0
- package/authoring/gstack/overlays/investigate.json +1 -0
- package/authoring/gstack/overlays/qa-only.json +1 -0
- package/authoring/gstack/wave.json +12 -2
- package/authoring/tactical/books/accessibility-retrofit.json +188 -0
- package/authoring/tactical/books/apply-review-findings.json +189 -0
- package/authoring/tactical/books/bug-fix-tdd.json +237 -0
- package/authoring/tactical/books/ci-pipeline.json +168 -0
- package/authoring/tactical/books/codemod-sweep.json +182 -0
- package/authoring/tactical/books/dependency-upgrade.json +196 -0
- package/authoring/tactical/books/flaky-test-fix.json +238 -0
- package/authoring/tactical/books/hotfix-flow.json +187 -0
- package/authoring/tactical/books/perf-optimization.json +219 -0
- package/authoring/tactical/books/refactor-module.json +217 -0
- package/authoring/tactical/books/schema-migration.json +192 -0
- package/authoring/tactical/books/test-suite-backfill.json +172 -0
- package/authoring/tactical/books/type-safety-pass.json +185 -0
- package/authoring/tactical/books/ux-update.json +178 -0
- package/authoring/tactical/evals/accessibility-retrofit.json +230 -0
- package/authoring/tactical/evals/apply-review-findings.json +290 -0
- package/authoring/tactical/evals/bug-fix-tdd.json +221 -0
- package/authoring/tactical/evals/ci-pipeline.json +227 -0
- package/authoring/tactical/evals/codemod-sweep.json +252 -0
- package/authoring/tactical/evals/dependency-upgrade.json +235 -0
- package/authoring/tactical/evals/flaky-test-fix.json +239 -0
- package/authoring/tactical/evals/hotfix-flow.json +220 -0
- package/authoring/tactical/evals/perf-optimization.json +235 -0
- package/authoring/tactical/evals/refactor-module.json +241 -0
- package/authoring/tactical/evals/schema-migration.json +225 -0
- package/authoring/tactical/evals/test-suite-backfill.json +197 -0
- package/authoring/tactical/evals/type-safety-pass.json +221 -0
- package/authoring/tactical/evals/ux-update.json +206 -0
- package/authoring/tactical/wave.json +89 -0
- package/data/chat-models/de/deepseek-r1-8b-q4/manifest.json +56 -1
- package/data/chat-models/gl/glm-5.2-754b-q2/manifest.json +56 -0
- package/data/chat-models/gp/gpt-oss-120b-q4/manifest.json +73 -1
- package/data/chat-models/gp/gpt-oss-20b-q4/manifest.json +77 -1
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/ll/llama3.2-3b-q4/manifest.json +3 -1
- package/data/chat-models/mi/mistral-7b-q4/manifest.json +54 -3
- package/data/chat-models/mi/mistral-medium-3.5-128b-q4/manifest.json +76 -1
- package/data/chat-models/mu/muse-glimmer-30b-q4/manifest.json +4 -3
- package/data/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.2/manifest.json +20 -0
- package/data/chat-models/or/ornith-9b-q4/manifest.json +1 -1
- package/data/chat-models/or/ornith1.5-9b-q4/manifest.json +187 -0
- package/data/chat-models/or/ornith1.5-9b-q4/versions/1.0.0/manifest.json +53 -0
- package/data/chat-models/qw/qwen3.8-27b-iq1-s/manifest.json +195 -0
- package/data/chat-models/qw/qwen3.8-27b-iq1-s/versions/1.0.0/manifest.json +19 -0
- package/data/chat-models/qw/qwen3.8-27b-q2/manifest.json +194 -0
- package/data/chat-models/qw/qwen3.8-27b-q2/versions/1.0.0/manifest.json +19 -0
- package/data/craftbook-templates/a1/a11y-audit/manifest.json +1 -0
- package/data/craftbook-templates/ab/ab-test-readout/manifest.json +1 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/manifest.json +6 -4
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.0/craftbook.json +451 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.0/test.json +231 -0
- package/data/craftbook-templates/ad/ad-variations/manifest.json +1 -0
- package/data/craftbook-templates/al/album-curate/manifest.json +1 -0
- package/data/craftbook-templates/al/alert-rules/manifest.json +1 -0
- package/data/craftbook-templates/al/alt-text-pass/manifest.json +6 -1
- package/data/craftbook-templates/an/anniversary-cut/manifest.json +1 -0
- package/data/craftbook-templates/an/annotated-bibliography/manifest.json +1 -0
- package/data/craftbook-templates/an/annual-document-review/manifest.json +1 -0
- package/data/craftbook-templates/an/anomaly-scan/manifest.json +1 -0
- package/data/craftbook-templates/ap/api-contract-review/manifest.json +1 -0
- package/data/craftbook-templates/ap/apply-review-findings/art.json +12 -0
- package/data/craftbook-templates/ap/apply-review-findings/logo.webp +0 -0
- package/data/craftbook-templates/ap/apply-review-findings/manifest.json +23 -0
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.0/craftbook.json +436 -0
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.0/test.json +291 -0
- package/data/craftbook-templates/ar/artifact-integrity-review/manifest.json +1 -0
- package/data/craftbook-templates/au/audio-ad-spot/manifest.json +1 -0
- package/data/craftbook-templates/au/audio-highlight-reel/manifest.json +1 -0
- package/data/craftbook-templates/au/audiobook-master-pack/manifest.json +1 -0
- package/data/craftbook-templates/au/auth-flow/manifest.json +1 -0
- package/data/craftbook-templates/au/automation-recipe/manifest.json +1 -0
- package/data/craftbook-templates/ba/backup-routine/manifest.json +1 -0
- package/data/craftbook-templates/bl/blog-post/manifest.json +1 -0
- package/data/craftbook-templates/bo/board-deck/manifest.json +1 -0
- package/data/craftbook-templates/bo/board-game-web/manifest.json +1 -0
- package/data/craftbook-templates/bo/booking-automation/manifest.json +1 -0
- package/data/craftbook-templates/br/branding-website/manifest.json +1 -0
- package/data/craftbook-templates/br/broadcast-announcement/manifest.json +1 -0
- package/data/craftbook-templates/br/browser-qa-audit/manifest.json +6 -1
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.5/craftbook.json +438 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.5/test.json +379 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/manifest.json +4 -3
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.0/craftbook.json +545 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.0/test.json +222 -0
- package/data/craftbook-templates/bu/build-loop/manifest.json +1 -0
- package/data/craftbook-templates/ca/calendar-brief/manifest.json +1 -0
- package/data/craftbook-templates/ca/canvas-generative-art/manifest.json +1 -0
- package/data/craftbook-templates/ca/careful-mode/manifest.json +1 -0
- package/data/craftbook-templates/ca/case-study/manifest.json +1 -0
- package/data/craftbook-templates/ca/case-study-writeup/manifest.json +1 -0
- package/data/craftbook-templates/ch/changelog-cut/manifest.json +6 -1
- package/data/craftbook-templates/ch/changelog-writeup/manifest.json +6 -1
- package/data/craftbook-templates/ch/chapter-narration-run/manifest.json +1 -0
- package/data/craftbook-templates/ch/chapter-weave/manifest.json +1 -0
- package/data/craftbook-templates/ch/character-sheet/manifest.json +1 -0
- package/data/craftbook-templates/ch/character-turnaround/manifest.json +1 -0
- package/data/craftbook-templates/ch/chart-pack/manifest.json +1 -0
- package/data/craftbook-templates/ch/chrome-extension/manifest.json +1 -0
- package/data/craftbook-templates/ci/ci-pipeline/manifest.json +6 -3
- package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.0/craftbook.json +423 -0
- package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.0/test.json +228 -0
- package/data/craftbook-templates/ci/citation-audit/manifest.json +1 -0
- package/data/craftbook-templates/cl/cli-tool/manifest.json +1 -0
- package/data/craftbook-templates/co/code-review/manifest.json +1 -0
- package/data/craftbook-templates/co/codebase-refactoring-review/manifest.json +1 -0
- package/data/craftbook-templates/co/codebase-ux-review/manifest.json +1 -0
- package/data/craftbook-templates/co/codemod-sweep/art.json +12 -0
- package/data/craftbook-templates/co/codemod-sweep/logo.webp +0 -0
- package/data/craftbook-templates/co/codemod-sweep/manifest.json +23 -0
- package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/craftbook.json +441 -0
- package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/test.json +253 -0
- package/data/craftbook-templates/co/cohort-analysis/manifest.json +1 -0
- package/data/craftbook-templates/co/company-research-brief/manifest.json +1 -0
- package/data/craftbook-templates/co/comparison-matrix/manifest.json +1 -0
- package/data/craftbook-templates/co/compat-check/manifest.json +1 -0
- package/data/craftbook-templates/co/competitive-analysis/manifest.json +1 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/art.json +12 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/logo.webp +0 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/manifest.json +27 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/versions/1.0.0/craftbook.json +337 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/versions/1.0.0/test.json +160 -0
- package/data/craftbook-templates/co/config-scaffold/manifest.json +1 -0
- package/data/craftbook-templates/co/content-accuracy-review/manifest.json +1 -0
- package/data/craftbook-templates/co/content-deck/manifest.json +1 -0
- package/data/craftbook-templates/co/contract-template/manifest.json +1 -0
- package/data/craftbook-templates/co/cookbook-layout/manifest.json +1 -0
- package/data/craftbook-templates/co/copy-review/manifest.json +1 -0
- package/data/craftbook-templates/co/corpus-email-digest/manifest.json +1 -0
- package/data/craftbook-templates/co/corpus-synthesis/manifest.json +1 -0
- package/data/craftbook-templates/co/cover-letter/manifest.json +1 -0
- package/data/craftbook-templates/cr/crm-update-batch/manifest.json +1 -0
- package/data/craftbook-templates/cr/cron-job/manifest.json +1 -0
- package/data/craftbook-templates/cr/crossword-forge/manifest.json +1 -0
- package/data/craftbook-templates/cs/csv-transformer/manifest.json +1 -0
- package/data/craftbook-templates/da/dashboard-spec/manifest.json +1 -0
- package/data/craftbook-templates/da/data-dictionary/manifest.json +1 -0
- package/data/craftbook-templates/da/data-export-migrate/manifest.json +1 -0
- package/data/craftbook-templates/da/data-join-merge/manifest.json +1 -0
- package/data/craftbook-templates/da/data-pipeline-etl/manifest.json +1 -0
- package/data/craftbook-templates/da/data-quality-audit/manifest.json +1 -0
- package/data/craftbook-templates/da/data-to-report/manifest.json +1 -0
- package/data/craftbook-templates/da/data-viz-page/manifest.json +1 -0
- package/data/craftbook-templates/da/dataset-clean/manifest.json +1 -0
- package/data/craftbook-templates/db/db-index-tuning/manifest.json +1 -0
- package/data/craftbook-templates/de/deep-security-review/manifest.json +1 -0
- package/data/craftbook-templates/de/dependency-audit/manifest.json +1 -0
- package/data/craftbook-templates/de/dependency-upgrade/art.json +12 -0
- package/data/craftbook-templates/de/dependency-upgrade/logo.webp +0 -0
- package/data/craftbook-templates/de/dependency-upgrade/manifest.json +23 -0
- package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.0/craftbook.json +459 -0
- package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.0/test.json +236 -0
- package/data/craftbook-templates/de/deploy-checklist/manifest.json +1 -0
- package/data/craftbook-templates/de/design-review/manifest.json +1 -0
- package/data/craftbook-templates/de/design-system-consultation/manifest.json +1 -0
- package/data/craftbook-templates/di/diagram-from-text/manifest.json +1 -0
- package/data/craftbook-templates/di/digest-from-feeds/manifest.json +1 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/manifest.json +1 -0
- package/data/craftbook-templates/do/doc-rewrite/manifest.json +1 -0
- package/data/craftbook-templates/do/dockerize-app/manifest.json +1 -0
- package/data/craftbook-templates/do/docs-site/manifest.json +1 -0
- package/data/craftbook-templates/do/documentation-drift-review/manifest.json +1 -0
- package/data/craftbook-templates/dr/draft-social-post/manifest.json +1 -0
- package/data/craftbook-templates/dr/drive-wrap-up/manifest.json +1 -0
- package/data/craftbook-templates/du/due-diligence-brief/manifest.json +1 -0
- package/data/craftbook-templates/eb/ebook-compile/manifest.json +1 -0
- package/data/craftbook-templates/ed/edit-notes/manifest.json +1 -0
- package/data/craftbook-templates/em/email-sequence/manifest.json +1 -0
- package/data/craftbook-templates/em/email-template/manifest.json +1 -0
- package/data/craftbook-templates/en/engineering-retrospective/manifest.json +1 -0
- package/data/craftbook-templates/ep/episode-plan/manifest.json +1 -0
- package/data/craftbook-templates/es/escalation-playbook/manifest.json +1 -0
- package/data/craftbook-templates/ev/evidence-brief/manifest.json +1 -0
- package/data/craftbook-templates/ex/executive-level-review/manifest.json +1 -0
- package/data/craftbook-templates/ex/expense-categorize/manifest.json +1 -0
- package/data/craftbook-templates/fa/fact-check/manifest.json +1 -0
- package/data/craftbook-templates/fa/family-story-chapter/manifest.json +1 -0
- package/data/craftbook-templates/fa/faq-from-docs/manifest.json +1 -0
- package/data/craftbook-templates/fa/favicon-set/manifest.json +1 -0
- package/data/craftbook-templates/fe/feature-flag-release/manifest.json +6 -1
- package/data/craftbook-templates/fe/feature-flag-rollout/manifest.json +5 -1
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.0/craftbook.json +203 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.0/test.json +165 -0
- package/data/craftbook-templates/fe/feedback-widget/manifest.json +1 -0
- package/data/craftbook-templates/fl/flaky-test-fix/art.json +12 -0
- package/data/craftbook-templates/fl/flaky-test-fix/logo.webp +0 -0
- package/data/craftbook-templates/fl/flaky-test-fix/manifest.json +24 -0
- package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.0/craftbook.json +534 -0
- package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.0/test.json +240 -0
- package/data/craftbook-templates/fo/folder-to-audio/manifest.json +1 -0
- package/data/craftbook-templates/fo/forecast-model/manifest.json +1 -0
- package/data/craftbook-templates/fo/form-fill-batch/manifest.json +1 -0
- package/data/craftbook-templates/fo/form-wizard/manifest.json +1 -0
- package/data/craftbook-templates/fr/freeze-scope/manifest.json +1 -0
- package/data/craftbook-templates/ga/game-with-screens/manifest.json +1 -0
- package/data/craftbook-templates/gl/glossary-build/manifest.json +1 -0
- package/data/craftbook-templates/gr/graphql-api/manifest.json +1 -0
- package/data/craftbook-templates/gr/grpc-service/manifest.json +1 -0
- package/data/craftbook-templates/ha/handbook-section/manifest.json +1 -0
- package/data/craftbook-templates/he/hero-image/manifest.json +1 -0
- package/data/craftbook-templates/ho/holiday-card-run/manifest.json +1 -0
- package/data/craftbook-templates/ho/hotfix-flow/manifest.json +6 -3
- package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.0/craftbook.json +442 -0
- package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.0/test.json +221 -0
- package/data/craftbook-templates/ht/html-arcade-game/manifest.json +1 -0
- package/data/craftbook-templates/ht/html-puzzle-game/manifest.json +1 -0
- package/data/craftbook-templates/ic/icon-pack/manifest.json +1 -0
- package/data/craftbook-templates/id/idea-office-hours/manifest.json +1 -0
- package/data/craftbook-templates/id/idle-clicker-game/manifest.json +1 -0
- package/data/craftbook-templates/im/image-batch-edit/manifest.json +1 -0
- package/data/craftbook-templates/im/image-dedup-cluster/manifest.json +1 -0
- package/data/craftbook-templates/im/image-palette-extract/manifest.json +1 -0
- package/data/craftbook-templates/im/image-seo-rename/manifest.json +1 -0
- package/data/craftbook-templates/im/image-set-index/manifest.json +1 -0
- package/data/craftbook-templates/in/inbox-triage/manifest.json +1 -0
- package/data/craftbook-templates/in/incident-comms-templates/manifest.json +1 -0
- package/data/craftbook-templates/in/incident-postmortem/manifest.json +1 -0
- package/data/craftbook-templates/in/insurance-inventory/manifest.json +1 -0
- package/data/craftbook-templates/in/interactive-quiz/manifest.json +1 -0
- package/data/craftbook-templates/in/investigate/manifest.json +5 -1
- package/data/craftbook-templates/in/investigate-root-cause/manifest.json +6 -1
- package/data/craftbook-templates/in/invitation-design/manifest.json +1 -0
- package/data/craftbook-templates/in/invoice-generator/manifest.json +1 -0
- package/data/craftbook-templates/in/invoice-run/manifest.json +1 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/it/item-intake/manifest.json +1 -0
- package/data/craftbook-templates/ju/juice-pass/manifest.json +1 -0
- package/data/craftbook-templates/kn/knowledge-base-article/manifest.json +1 -0
- package/data/craftbook-templates/kp/kpi-scorecard/manifest.json +1 -0
- package/data/craftbook-templates/la/landing-copy/manifest.json +1 -0
- package/data/craftbook-templates/la/landing-page/manifest.json +1 -0
- package/data/craftbook-templates/le/lead-enrichment/manifest.json +1 -0
- package/data/craftbook-templates/li/library-package/manifest.json +1 -0
- package/data/craftbook-templates/li/literature-review/manifest.json +1 -0
- package/data/craftbook-templates/li/live-browser-qa/manifest.json +6 -1
- package/data/craftbook-templates/lo/localize-content/manifest.json +1 -0
- package/data/craftbook-templates/lo/logo-set/manifest.json +1 -0
- package/data/craftbook-templates/ma/market-scan/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-minutes/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-prep-brief/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-summary-audio/manifest.json +1 -0
- package/data/craftbook-templates/me/memory-prompt-session/manifest.json +1 -0
- package/data/craftbook-templates/me/message-queue-consumer/manifest.json +1 -0
- package/data/craftbook-templates/mi/micro-game-jam/manifest.json +1 -0
- package/data/craftbook-templates/mo/mock-interview/manifest.json +1 -0
- package/data/craftbook-templates/mo/mod-scaffold/manifest.json +1 -0
- package/data/craftbook-templates/mo/monitor-and-alert/manifest.json +1 -0
- package/data/craftbook-templates/mo/month-close/manifest.json +1 -0
- package/data/craftbook-templates/mo/monthly-recording-review/manifest.json +1 -0
- package/data/craftbook-templates/mo/moodboard/manifest.json +1 -0
- package/data/craftbook-templates/mo/morning-brief/manifest.json +1 -0
- package/data/craftbook-templates/mo/morning-report/manifest.json +1 -0
- package/data/craftbook-templates/mu/music-metadata-tag/manifest.json +1 -0
- package/data/craftbook-templates/na/narrated-slideshow/manifest.json +1 -0
- package/data/craftbook-templates/ne/newsletter-issue/manifest.json +1 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/art.json +12 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/logo.webp +0 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/manifest.json +23 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.0/craftbook.json +145 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.0/test.json +121 -0
- package/data/craftbook-templates/no/notification-router/manifest.json +1 -0
- package/data/craftbook-templates/oc/ocr-extract/manifest.json +1 -0
- package/data/craftbook-templates/of/offer-compare/manifest.json +1 -0
- package/data/craftbook-templates/of/office-hours/manifest.json +1 -0
- package/data/craftbook-templates/on/onboarding-checklist/manifest.json +1 -0
- package/data/craftbook-templates/on/onboarding-flow/manifest.json +1 -0
- package/data/craftbook-templates/on/oncall-handoff/manifest.json +1 -0
- package/data/craftbook-templates/on/one-pager/manifest.json +1 -0
- package/data/craftbook-templates/op/ops-runbook/manifest.json +1 -0
- package/data/craftbook-templates/pa/page-spread/manifest.json +1 -0
- package/data/craftbook-templates/pa/parser-grammar/manifest.json +1 -0
- package/data/craftbook-templates/pe/perf-audit/manifest.json +1 -0
- package/data/craftbook-templates/pe/perf-audit/versions/1.1.0/craftbook.json +195 -0
- package/data/craftbook-templates/pe/perf-audit/versions/1.1.0/test.json +165 -0
- package/data/craftbook-templates/pe/perf-optimization/manifest.json +4 -3
- package/data/craftbook-templates/pe/perf-optimization/versions/2.0.0/craftbook.json +511 -0
- package/data/craftbook-templates/pe/perf-optimization/versions/2.0.0/test.json +236 -0
- package/data/craftbook-templates/pe/pest-diagnosis/manifest.json +1 -0
- package/data/craftbook-templates/ph/photo-cull/manifest.json +1 -0
- package/data/craftbook-templates/ph/physics-toy/manifest.json +1 -0
- package/data/craftbook-templates/pi/pitch-deck/manifest.json +1 -0
- package/data/craftbook-templates/pl/plan/manifest.json +1 -0
- package/data/craftbook-templates/pl/playtest-report/manifest.json +1 -0
- package/data/craftbook-templates/po/podcast-chaptering/manifest.json +1 -0
- package/data/craftbook-templates/po/portfolio-site/manifest.json +1 -0
- package/data/craftbook-templates/po/powerpoint-deck/manifest.json +1 -0
- package/data/craftbook-templates/pr/pr-security-review/manifest.json +1 -0
- package/data/craftbook-templates/pr/practice-exam/manifest.json +1 -0
- package/data/craftbook-templates/pr/practice-session/manifest.json +1 -0
- package/data/craftbook-templates/pr/pre-departure-countdown/manifest.json +1 -0
- package/data/craftbook-templates/pr/press-release/manifest.json +1 -0
- package/data/craftbook-templates/pr/price-tracker/manifest.json +1 -0
- package/data/craftbook-templates/pr/pricing-page/manifest.json +1 -0
- package/data/craftbook-templates/pr/product-descriptions/manifest.json +1 -0
- package/data/craftbook-templates/pr/proposal-sow/manifest.json +1 -0
- package/data/craftbook-templates/pu/pull-request-review/manifest.json +1 -0
- package/data/craftbook-templates/pu/puzzle-pack-layout/manifest.json +1 -0
- package/data/craftbook-templates/pw/pwa-offline/manifest.json +1 -0
- package/data/craftbook-templates/qa/qa/manifest.json +4 -1
- package/data/craftbook-templates/qu/quarterly-summary/manifest.json +1 -0
- package/data/craftbook-templates/re/reading-list/manifest.json +1 -0
- package/data/craftbook-templates/re/receipt-intake/manifest.json +1 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/manifest.json +1 -0
- package/data/craftbook-templates/re/reception-report/manifest.json +1 -0
- package/data/craftbook-templates/re/recipe-capture/manifest.json +1 -0
- package/data/craftbook-templates/re/record-a-relative/manifest.json +1 -0
- package/data/craftbook-templates/re/recurring-invoice-run/manifest.json +1 -0
- package/data/craftbook-templates/re/refactor-module/manifest.json +3 -2
- package/data/craftbook-templates/re/refactor-module/versions/1.0.4/craftbook.json +150 -0
- package/data/craftbook-templates/re/refactor-module/versions/1.0.4/test.json +95 -0
- package/data/craftbook-templates/re/refactor-module/versions/2.0.0/craftbook.json +509 -0
- package/data/craftbook-templates/re/refactor-module/versions/2.0.0/test.json +242 -0
- package/data/craftbook-templates/re/regex-builder/manifest.json +1 -0
- package/data/craftbook-templates/re/release-announcement/manifest.json +1 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/manifest.json +1 -0
- package/data/craftbook-templates/re/release-notes/manifest.json +6 -1
- package/data/craftbook-templates/re/release-notes/versions/1.0.3/craftbook.json +220 -0
- package/data/craftbook-templates/re/release-notes/versions/1.0.3/test.json +114 -0
- package/data/craftbook-templates/re/release-pipeline-ci/manifest.json +6 -1
- package/data/craftbook-templates/re/release-readiness-review/manifest.json +1 -0
- package/data/craftbook-templates/re/release-readiness-review/versions/1.1.0/craftbook.json +192 -0
- package/data/craftbook-templates/re/release-readiness-review/versions/1.1.0/test.json +113 -0
- package/data/craftbook-templates/re/reliability-review/manifest.json +1 -0
- package/data/craftbook-templates/re/report-pdf/manifest.json +1 -0
- package/data/craftbook-templates/re/research-report/manifest.json +1 -0
- package/data/craftbook-templates/re/research-to-document/manifest.json +1 -0
- package/data/craftbook-templates/re/rest-api/manifest.json +1 -0
- package/data/craftbook-templates/re/resume-cv/manifest.json +1 -0
- package/data/craftbook-templates/re/reviewer-loop/manifest.json +1 -0
- package/data/craftbook-templates/ro/rollback-plan/manifest.json +1 -0
- package/data/craftbook-templates/ro/root-cause-investigation/manifest.json +8 -1
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.5/craftbook.json +433 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.5/test.json +157 -0
- package/data/craftbook-templates/ro/rough-cut-assembly/manifest.json +1 -0
- package/data/craftbook-templates/ru/runbook/manifest.json +1 -0
- package/data/craftbook-templates/sc/schema-migration/manifest.json +5 -4
- package/data/craftbook-templates/sc/schema-migration/versions/2.0.0/craftbook.json +459 -0
- package/data/craftbook-templates/sc/schema-migration/versions/2.0.0/test.json +226 -0
- package/data/craftbook-templates/sc/scrape-to-structured/manifest.json +1 -0
- package/data/craftbook-templates/sc/script-automation/manifest.json +1 -0
- package/data/craftbook-templates/sd/sdk-wrapper/manifest.json +1 -0
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/manifest.json +1 -0
- package/data/craftbook-templates/se/security-architecture-review/manifest.json +1 -0
- package/data/craftbook-templates/se/seo-meta-pack/manifest.json +1 -0
- package/data/craftbook-templates/sh/ship/manifest.json +1 -0
- package/data/craftbook-templates/so/social-digest/manifest.json +1 -0
- package/data/craftbook-templates/so/social-thread/manifest.json +1 -0
- package/data/craftbook-templates/so/source-quality-audit/manifest.json +1 -0
- package/data/craftbook-templates/sp/spa-dashboard/manifest.json +1 -0
- package/data/craftbook-templates/sp/spec-authoring/manifest.json +1 -0
- package/data/craftbook-templates/sp/spec-doc/manifest.json +1 -0
- package/data/craftbook-templates/sp/spreadsheet-model/manifest.json +1 -0
- package/data/craftbook-templates/sp/sprite-sheet/manifest.json +1 -0
- package/data/craftbook-templates/sq/sql-analysis/manifest.json +1 -0
- package/data/craftbook-templates/st/standup-summary/manifest.json +1 -0
- package/data/craftbook-templates/st/state-machine/manifest.json +1 -0
- package/data/craftbook-templates/st/status-report/manifest.json +1 -0
- package/data/craftbook-templates/su/subscription-audit/manifest.json +1 -0
- package/data/craftbook-templates/su/subtitle-generator/manifest.json +1 -0
- package/data/craftbook-templates/su/summarize-long/manifest.json +1 -0
- package/data/craftbook-templates/su/survey-analysis/manifest.json +1 -0
- package/data/craftbook-templates/sv/svg-animation/manifest.json +1 -0
- package/data/craftbook-templates/ta/tailor-resume/manifest.json +1 -0
- package/data/craftbook-templates/te/technical-documentation/manifest.json +1 -0
- package/data/craftbook-templates/te/test-coverage-review/manifest.json +1 -0
- package/data/craftbook-templates/te/test-coverage-review/versions/1.2.0/craftbook.json +195 -0
- package/data/craftbook-templates/te/test-coverage-review/versions/1.2.0/test.json +116 -0
- package/data/craftbook-templates/te/test-suite-backfill/manifest.json +2 -2
- package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.0/craftbook.json +428 -0
- package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.0/test.json +198 -0
- package/data/craftbook-templates/th/thank-you-batch/manifest.json +1 -0
- package/data/craftbook-templates/th/thank-you-sweep/manifest.json +1 -0
- package/data/craftbook-templates/th/threat-model/manifest.json +1 -0
- package/data/craftbook-templates/th/thumbnail-generator/manifest.json +1 -0
- package/data/craftbook-templates/ti/tileset-batch/manifest.json +1 -0
- package/data/craftbook-templates/to/tone-rewrite/manifest.json +1 -0
- package/data/craftbook-templates/to/topic-explainer/manifest.json +1 -0
- package/data/craftbook-templates/tr/transcribe-and-shownotes/manifest.json +1 -0
- package/data/craftbook-templates/tr/transcribe-audio/manifest.json +1 -0
- package/data/craftbook-templates/tr/transcribe-index/manifest.json +1 -0
- package/data/craftbook-templates/tr/translate-content/manifest.json +1 -0
- package/data/craftbook-templates/ty/type-safety-pass/manifest.json +4 -3
- package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.0/craftbook.json +428 -0
- package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.0/test.json +222 -0
- package/data/craftbook-templates/ux/ux-update/art.json +12 -0
- package/data/craftbook-templates/ux/ux-update/logo.webp +0 -0
- package/data/craftbook-templates/ux/ux-update/manifest.json +22 -0
- package/data/craftbook-templates/ux/ux-update/versions/1.0.0/craftbook.json +439 -0
- package/data/craftbook-templates/ux/ux-update/versions/1.0.0/test.json +207 -0
- package/data/craftbook-templates/ve/version-bump/manifest.json +1 -0
- package/data/craftbook-templates/ve/version-bump/versions/1.1.0/craftbook.json +206 -0
- package/data/craftbook-templates/ve/version-bump/versions/1.1.0/test.json +95 -0
- package/data/craftbook-templates/vi/video-storyboard/manifest.json +1 -0
- package/data/craftbook-templates/vi/visit-prep/manifest.json +1 -0
- package/data/craftbook-templates/vo/voiceover-script/manifest.json +1 -0
- package/data/craftbook-templates/we/weak-spot-drill/manifest.json +1 -0
- package/data/craftbook-templates/we/web-app-crud/manifest.json +1 -0
- package/data/craftbook-templates/we/web-component/manifest.json +1 -0
- package/data/craftbook-templates/we/webhook-handler/manifest.json +1 -0
- package/data/craftbook-templates/we/week-plan/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-menu-plan/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-pipeline-review/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-review/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-walkthrough/manifest.json +1 -0
- package/data/craftbook-templates/wh/whitepaper/manifest.json +1 -0
- package/data/craftbook-templates/ye/year-in-review/manifest.json +1 -0
- package/data/craftbook-templates/yo/youtube-chapters-seo/manifest.json +1 -0
- package/data/gezel-templates/bo/boekwachter/versions/1.1.0/about.md +29 -0
- package/data/gezel-templates/bo/boekwachter/versions/1.1.0/manifest.json +16 -0
- package/data/gezel-templates/bu/builder/versions/1.5.0/about.md +34 -0
- package/data/gezel-templates/bu/builder/versions/1.5.0/manifest.json +16 -0
- package/data/gezel-templates/de/developer/versions/1.5.0/about.md +34 -0
- package/data/gezel-templates/de/developer/versions/1.5.0/manifest.json +21 -0
- package/data/gezel-templates/index.json +1 -1
- package/data/gezel-templates/re/reviewer/versions/1.4.0/about.md +49 -0
- package/data/gezel-templates/re/reviewer/versions/1.4.0/manifest.json +21 -0
- package/data/project-types/index.json +1 -1
- package/data/project-types/so/software-project/manifest.json +20 -0
- package/data/project-types/so/software-project/versions/1.0.0/about.md +3 -0
- package/data/project-types/so/software-project/versions/1.0.0/manifest.json +41 -0
- package/data/project-types/so/software-project/versions/1.0.0/mission.md +4 -0
- package/package.json +1 -1
- package/schemas/craftbook-doc.schema.json +248 -0
- package/schemas/craftbook-template-identity.schema.json +21 -0
- package/schemas/craftbook-template-version.schema.json +248 -0
- package/schemas/craftbook-test.schema.json +210 -0
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "flaky-test-fix",
|
|
3
|
+
"name": "Fix a Flaky Test",
|
|
4
|
+
"description": "Deflake a test the way a senior engineer would: by removing the nondeterminism, never by hiding it. First REPRODUCE statistically — run the real suite repeatedly with `run_package_script` until the intermittent failure is recorded in run receipts the gates can verify, and note the failure signature and the conditions it appears under (full suite versus alone, ordering, concurrency, timing). Then ISOLATE the mechanism with a targeted experiment — run the test alone versus in the suite, reorder, repeat — until you can name the defect site: the shared state, missing await, unseeded randomness, time dependence, or leaked resource that lets one run differ from the next. Then FIX at that real site with isolation or cleanup that covers every test — and never delete the test, skip it, weaken its assertion, widen a timeout, or wrap it in retries: those make the dashboard green while the bug ships. Finally PROVE stability: three consecutive green suite runs, read from real run receipts rather than the author's claims, then an independent reviewer checks that the mechanism itself was removed and a REVISE verdict routes the work back automatically with concrete findings. Needs a project whose tests run via `npm run test`. Works identically whether the run edits the project directly or drafts a change proposal for the user to apply.",
|
|
5
|
+
"plan": "Reproduce the flake with recorded suite runs -> isolate the nondeterminism mechanism with a targeted experiment -> remove it at the real site (never skip, retry, or widen timeouts) -> prove stability with three consecutive green runs -> enforced independent review.",
|
|
6
|
+
"entryStepId": "reproduce",
|
|
7
|
+
"triggers": [
|
|
8
|
+
"fix this flaky test",
|
|
9
|
+
"deflake",
|
|
10
|
+
"test fails intermittently",
|
|
11
|
+
"fails in CI but passes locally",
|
|
12
|
+
"intermittent test failure"
|
|
13
|
+
],
|
|
14
|
+
"runModes": {
|
|
15
|
+
"nightShift": "supported"
|
|
16
|
+
},
|
|
17
|
+
"commands": [
|
|
18
|
+
{
|
|
19
|
+
"scope": "script",
|
|
20
|
+
"name": "test",
|
|
21
|
+
"reason": "Statistical reproduction and the consecutive-green stability proof read real run receipts — the gates verify recorded runs, not claims."
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"paramSchema": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"properties": {
|
|
27
|
+
"scope": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"title": "Flaky test to fix",
|
|
30
|
+
"description": "The flaky test, failure message, or suite area to chase. Leave empty when the task description already carries it.",
|
|
31
|
+
"default": ""
|
|
32
|
+
},
|
|
33
|
+
"workPath": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"title": "Working folder",
|
|
36
|
+
"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.",
|
|
37
|
+
"default": "{{task.dir}}"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"steps": [
|
|
42
|
+
{
|
|
43
|
+
"id": "reproduce",
|
|
44
|
+
"name": "Reproduce the flake with recorded runs",
|
|
45
|
+
"description": "Run the suite repeatedly until the intermittent failure is a recorded fact, and characterize when it appears.",
|
|
46
|
+
"prompt": "The flaky test to fix: {{scope}}\n\nEstablish the flake as a recorded fact before theorizing. Find how this project runs its tests (`list_package_scripts`, then read the test layout). Run the suite with `run_package_script` (`test`) repeatedly — several runs if needed — until the intermittent failure is recorded, and keep the passing runs on record too: the pass/fail mix IS the evidence. Note the exact failure signature (test name, assertion, message) and the conditions it appears under — full suite versus alone, ordering, concurrency, timing, environment. If the command needs first-use approval, say so and wait rather than guessing. If the failure refuses to appear after many runs, record every run honestly and what you varied between them; do not fabricate a failing run.\n\nWrite `{{workPath}}/flake-evidence.md` with exactly these sections: `## Symptom` (which test fails, and how often out of how many runs), `## Runs observed` (each run and its outcome, with the failing output quoted from a real run), `## Failure signature` (the exact assertion and message), `## Suspected class` (ordering, shared state, timing, or environment — with the observation that points there). Cite the real test and source files with backtick paths.\n\nObservable handoff: write the completed result to `{{workPath}}/flake-evidence.md` in the project's artifacts drawer with `write_artifact`. Do not merely describe what the file would contain. Re-read it with `read_artifact` before finishing this phase and repair any incomplete sections.",
|
|
47
|
+
"suggestedRole": "debugging engineer",
|
|
48
|
+
"capabilityFloor": "medium",
|
|
49
|
+
"advanceWhen": {
|
|
50
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
51
|
+
"minBytes": 500,
|
|
52
|
+
"sniff": "nonempty",
|
|
53
|
+
"requireChange": true,
|
|
54
|
+
"artifact": true,
|
|
55
|
+
"goto": "isolate"
|
|
56
|
+
},
|
|
57
|
+
"gate": {
|
|
58
|
+
"at": "completion",
|
|
59
|
+
"checks": [
|
|
60
|
+
{
|
|
61
|
+
"kind": "minBytes",
|
|
62
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
63
|
+
"bytes": 500,
|
|
64
|
+
"artifact": true
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"kind": "sniff",
|
|
68
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
69
|
+
"sniff": "nonempty",
|
|
70
|
+
"artifact": true
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"kind": "contains",
|
|
74
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
75
|
+
"pattern": "^##\\s+Symptom",
|
|
76
|
+
"flags": "im",
|
|
77
|
+
"label": "Symptom section",
|
|
78
|
+
"artifact": true
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"kind": "contains",
|
|
82
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
83
|
+
"pattern": "^##\\s+Runs observed",
|
|
84
|
+
"flags": "im",
|
|
85
|
+
"label": "Runs observed section",
|
|
86
|
+
"artifact": true
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"kind": "contains",
|
|
90
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
91
|
+
"pattern": "^##\\s+Failure signature",
|
|
92
|
+
"flags": "im",
|
|
93
|
+
"label": "Failure signature section",
|
|
94
|
+
"artifact": true
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"kind": "contains",
|
|
98
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
99
|
+
"pattern": "^##\\s+Suspected class",
|
|
100
|
+
"flags": "im",
|
|
101
|
+
"label": "Suspected class section",
|
|
102
|
+
"artifact": true
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"kind": "citationsResolve",
|
|
106
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
107
|
+
"minCitations": 2,
|
|
108
|
+
"artifact": true
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"kind": "commandEvidence",
|
|
112
|
+
"script": "test",
|
|
113
|
+
"expect": "fail",
|
|
114
|
+
"label": "at least one recorded failing run of the suite"
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"onReject": "reproduce",
|
|
118
|
+
"maxAttempts": 4
|
|
119
|
+
},
|
|
120
|
+
"next": "isolate"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "isolate",
|
|
124
|
+
"name": "Isolate the mechanism",
|
|
125
|
+
"description": "Pin the nondeterminism with a targeted experiment and name the defect site. No fixes yet.",
|
|
126
|
+
"prompt": "Read `{{workPath}}/flake-evidence.md`, then pin the MECHANISM with a targeted experiment, not a guess. Good experiments: run the failing test alone versus in the full suite; temporarily reorder or comment out neighboring tests (and restore them afterwards); repeat runs to confirm the pattern is what you think it is. Read the test and the code under test until you can name the defect site precisely — the shared module state, missing await, unseeded randomness, time or filesystem dependence, or leaked resource that makes the outcome depend on anything besides the code under test. Check siblings: which neighboring tests share the same hazard? Undo every temporary experiment edit before finishing, and make no fix in this phase. If the experiments stay inconclusive, record what each one showed and ruled out — an honest unknown beats a confident guess.\n\nWrite `{{workPath}}/diagnosis.md` with exactly these sections: `## Mechanism` (the nondeterminism, named concretely), `## Experiment` (what you ran and what each variation showed), `## Defect site` (file and symbol, with backtick paths), `## Siblings checked` (neighboring tests that share or escape the hazard). Every path you cite must be real. Before working, open `{{workPath}}/flake-evidence.md` with `read_artifact`.\n\nObservable handoff: write the completed result to `{{workPath}}/diagnosis.md` in the project's artifacts drawer with `write_artifact`. Do not merely describe what the file would contain. Re-read it with `read_artifact` before finishing this phase and repair any incomplete sections.",
|
|
127
|
+
"suggestedRole": "root-cause analyst",
|
|
128
|
+
"capabilityFloor": "medium",
|
|
129
|
+
"consumes": [
|
|
130
|
+
{
|
|
131
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
132
|
+
"artifact": true
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"advanceWhen": {
|
|
136
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
137
|
+
"minBytes": 600,
|
|
138
|
+
"sniff": "nonempty",
|
|
139
|
+
"requireChange": true,
|
|
140
|
+
"artifact": true,
|
|
141
|
+
"goto": "fix"
|
|
142
|
+
},
|
|
143
|
+
"gate": {
|
|
144
|
+
"at": "completion",
|
|
145
|
+
"checks": [
|
|
146
|
+
{
|
|
147
|
+
"kind": "minBytes",
|
|
148
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
149
|
+
"bytes": 600,
|
|
150
|
+
"artifact": true
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"kind": "sniff",
|
|
154
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
155
|
+
"sniff": "nonempty",
|
|
156
|
+
"artifact": true
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"kind": "contains",
|
|
160
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
161
|
+
"pattern": "^##\\s+Mechanism",
|
|
162
|
+
"flags": "im",
|
|
163
|
+
"label": "Mechanism section",
|
|
164
|
+
"artifact": true
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"kind": "contains",
|
|
168
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
169
|
+
"pattern": "^##\\s+Experiment",
|
|
170
|
+
"flags": "im",
|
|
171
|
+
"label": "Experiment section",
|
|
172
|
+
"artifact": true
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"kind": "contains",
|
|
176
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
177
|
+
"pattern": "^##\\s+Defect site",
|
|
178
|
+
"flags": "im",
|
|
179
|
+
"label": "Defect site section",
|
|
180
|
+
"artifact": true
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"kind": "contains",
|
|
184
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
185
|
+
"pattern": "^##\\s+Siblings checked",
|
|
186
|
+
"flags": "im",
|
|
187
|
+
"label": "Siblings checked section",
|
|
188
|
+
"artifact": true
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"kind": "citationsResolve",
|
|
192
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
193
|
+
"minCitations": 2,
|
|
194
|
+
"artifact": true
|
|
195
|
+
}
|
|
196
|
+
],
|
|
197
|
+
"onReject": "isolate",
|
|
198
|
+
"maxAttempts": 4
|
|
199
|
+
},
|
|
200
|
+
"next": "fix"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"id": "fix",
|
|
204
|
+
"name": "Remove the nondeterminism",
|
|
205
|
+
"description": "Make the outcome deterministic at the real site — isolation, cleanup, awaits, seeding — never masking.",
|
|
206
|
+
"prompt": "Read `{{workPath}}/diagnosis.md` and remove the nondeterminism at the defect site it names. There is no prescribed output path for source changes — edit the actual files from the diagnosis with `read_file` plus `write_file`/`replace_in_file`. The right shapes: cleanup or isolation that runs for EVERY test (a beforeEach/afterEach reset, a fresh instance per test), an explicit await on work that was racing, seeded or injected randomness and time, releasing leaked resources. NEVER delete or skip the flaky test, never weaken its assertion, and never mask the flake with retries or widened timeouts — the test must still assert exactly what it asserted. A one-off reset inside the failing test alone is not cleanup; future tests inherit the same hazard, so fix it at the level every test shares. Cover the sibling hazards the diagnosis flagged. Re-run the suite with `run_package_script` (`test`) while you work.\n\nWrite `{{workPath}}/fix-notes.md` with exactly these sections: `## Problem` (one paragraph naming the mechanism), `## Change` (what you altered and why the outcome can no longer depend on order, timing, or luck), `## Files touched` (backtick path per line), `## Regression coverage` (why the flake cannot silently return — what fails if the cleanup is removed), `## Risk` (anything unverified, honestly), `## How to verify` (the exact commands a person runs). Before working, open `{{workPath}}/diagnosis.md` with `read_artifact`.\n\nObservable handoff: write the completed result to `{{workPath}}/fix-notes.md` in the project's artifacts drawer with `write_artifact`. Do not merely describe what the file would contain. Re-read it with `read_artifact` before finishing this phase and repair any incomplete sections.",
|
|
207
|
+
"suggestedRole": "software engineer",
|
|
208
|
+
"capabilityFloor": "medium",
|
|
209
|
+
"consumes": [
|
|
210
|
+
{
|
|
211
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
212
|
+
"artifact": true
|
|
213
|
+
}
|
|
214
|
+
],
|
|
215
|
+
"advanceWhen": {
|
|
216
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
217
|
+
"minBytes": 700,
|
|
218
|
+
"sniff": "nonempty",
|
|
219
|
+
"requireChange": true,
|
|
220
|
+
"artifact": true,
|
|
221
|
+
"goto": "validate-stability"
|
|
222
|
+
},
|
|
223
|
+
"gate": {
|
|
224
|
+
"at": "completion",
|
|
225
|
+
"checks": [
|
|
226
|
+
{
|
|
227
|
+
"kind": "minBytes",
|
|
228
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
229
|
+
"bytes": 700,
|
|
230
|
+
"artifact": true
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"kind": "sniff",
|
|
234
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
235
|
+
"sniff": "nonempty",
|
|
236
|
+
"artifact": true
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"kind": "contains",
|
|
240
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
241
|
+
"pattern": "^##\\s+Problem",
|
|
242
|
+
"flags": "im",
|
|
243
|
+
"label": "Problem section",
|
|
244
|
+
"artifact": true
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"kind": "contains",
|
|
248
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
249
|
+
"pattern": "^##\\s+Change",
|
|
250
|
+
"flags": "im",
|
|
251
|
+
"label": "Change section",
|
|
252
|
+
"artifact": true
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"kind": "contains",
|
|
256
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
257
|
+
"pattern": "^##\\s+Files touched",
|
|
258
|
+
"flags": "im",
|
|
259
|
+
"label": "Files touched section",
|
|
260
|
+
"artifact": true
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"kind": "contains",
|
|
264
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
265
|
+
"pattern": "^##\\s+Regression coverage",
|
|
266
|
+
"flags": "im",
|
|
267
|
+
"label": "Regression coverage section",
|
|
268
|
+
"artifact": true
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"kind": "contains",
|
|
272
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
273
|
+
"pattern": "^##\\s+Risk",
|
|
274
|
+
"flags": "im",
|
|
275
|
+
"label": "Risk section",
|
|
276
|
+
"artifact": true
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"kind": "contains",
|
|
280
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
281
|
+
"pattern": "^##\\s+How to verify",
|
|
282
|
+
"flags": "im",
|
|
283
|
+
"label": "How to verify section",
|
|
284
|
+
"artifact": true
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"kind": "citationsResolve",
|
|
288
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
289
|
+
"minCitations": 2,
|
|
290
|
+
"artifact": true
|
|
291
|
+
}
|
|
292
|
+
],
|
|
293
|
+
"onReject": "fix",
|
|
294
|
+
"maxAttempts": 4
|
|
295
|
+
},
|
|
296
|
+
"next": "validate-stability"
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"id": "validate-stability",
|
|
300
|
+
"name": "Prove stability",
|
|
301
|
+
"description": "Three consecutive green suite runs, read from real receipts — one green run means nothing for a flake.",
|
|
302
|
+
"prompt": "Prove the fix holds under repetition — one green run means nothing for a flake. Run the full suite with `run_package_script` (`test`) at least THREE times in a row; every run must be green, and the runs must be real receipts, not claims. If any run fails, the mechanism is not gone: record the failure honestly and route back through the evidence rather than re-rolling until you get lucky. Compare against `{{workPath}}/flake-evidence.md`: the once-flaky test must be present and passing in every run.\n\nWrite `{{workPath}}/validation.md` with exactly these sections: `## Runs` (each run and its result, in order), `## Result` (stability confirmed with the receipts, or what remains unstable and why). Before working, open `{{workPath}}/flake-evidence.md` with `read_artifact`.\n\nObservable handoff: write the completed result to `{{workPath}}/validation.md` in the project's artifacts drawer with `write_artifact`. Do not merely describe what the file would contain. Re-read it with `read_artifact` before finishing this phase and repair any incomplete sections.",
|
|
303
|
+
"suggestedRole": "software engineer",
|
|
304
|
+
"capabilityFloor": "medium",
|
|
305
|
+
"consumes": [
|
|
306
|
+
{
|
|
307
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
308
|
+
"artifact": true
|
|
309
|
+
}
|
|
310
|
+
],
|
|
311
|
+
"advanceWhen": {
|
|
312
|
+
"file": "{{workPath}}/validation.md",
|
|
313
|
+
"minBytes": 300,
|
|
314
|
+
"sniff": "nonempty",
|
|
315
|
+
"requireChange": true,
|
|
316
|
+
"artifact": true,
|
|
317
|
+
"goto": "evaluate"
|
|
318
|
+
},
|
|
319
|
+
"gate": {
|
|
320
|
+
"at": "completion",
|
|
321
|
+
"checks": [
|
|
322
|
+
{
|
|
323
|
+
"kind": "minBytes",
|
|
324
|
+
"file": "{{workPath}}/validation.md",
|
|
325
|
+
"bytes": 300,
|
|
326
|
+
"artifact": true
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"kind": "sniff",
|
|
330
|
+
"file": "{{workPath}}/validation.md",
|
|
331
|
+
"sniff": "nonempty",
|
|
332
|
+
"artifact": true
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"kind": "contains",
|
|
336
|
+
"file": "{{workPath}}/validation.md",
|
|
337
|
+
"pattern": "^##\\s+Runs",
|
|
338
|
+
"flags": "im",
|
|
339
|
+
"label": "Runs section",
|
|
340
|
+
"artifact": true
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
"kind": "contains",
|
|
344
|
+
"file": "{{workPath}}/validation.md",
|
|
345
|
+
"pattern": "^##\\s+Result",
|
|
346
|
+
"flags": "im",
|
|
347
|
+
"label": "Result section",
|
|
348
|
+
"artifact": true
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"kind": "commandEvidence",
|
|
352
|
+
"script": "test",
|
|
353
|
+
"expect": "pass",
|
|
354
|
+
"minRuns": 3,
|
|
355
|
+
"label": "three consecutive green suite runs (verified run receipts)"
|
|
356
|
+
}
|
|
357
|
+
],
|
|
358
|
+
"onReject": "validate-stability",
|
|
359
|
+
"maxAttempts": 4
|
|
360
|
+
},
|
|
361
|
+
"next": "evaluate"
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"id": "evaluate",
|
|
365
|
+
"name": "Evaluate the deliverable",
|
|
366
|
+
"description": "Independently grade the observable deliverable and route it to finish, repair, or user escalation.",
|
|
367
|
+
"prompt": "Review `{{workPath}}/validation.md`, `{{workPath}}/flake-evidence.md`, `{{workPath}}/diagnosis.md`, `{{workPath}}/fix-notes.md` against every criterion below. Inspect the underlying evidence files named by the workflow; do not grade from the author's summary alone.\n\n1. flake-evidence.md records real runs with at least one genuine failure quoted from run output and names the conditions the failure appeared under — not a summary of a hunch.\n2. diagnosis.md names a concrete nondeterminism mechanism and a defect site that exists in this codebase, supported by a targeted experiment whose causal story actually explains the observed pass/fail pattern.\n3. The change removes the mechanism at that site — open the touched files and check it is isolation, cleanup, awaited work, or seeded inputs at the level every test shares, not a one-off patch inside the failing test.\n4. No masking: the once-flaky test still exists and still asserts what it asserted — open the test file and compare its assertion against flake-evidence.md's failure signature; it gained no skip, retry loop, or widened timeout.\n5. validation.md's three consecutive green runs are backed by real run receipts with the once-flaky test present and passing — judged from the recorded runs, not the author's claims.\n6. fix-notes.md names every touched file with paths that exist, explains why the flake cannot silently return, and states residual risk honestly.\n\nOpen `{{workPath}}/validation.md`, `{{workPath}}/flake-evidence.md`, `{{workPath}}/diagnosis.md`, `{{workPath}}/fix-notes.md` with `read_artifact`. Write the evidence-backed review to `{{workPath}}/review.md` in the artifacts drawer with `write_artifact`.\n\nList the findings as a markdown table with columns `| Severity | File | Line | Problem | Fix |` (severities: critical/major/minor/nit; empty table only on PASS). Give each criterion a PASS or FAIL with a concrete path, excerpt, measurement, or observed behavior. End with exactly `Verdict: PASS` or `Verdict: REVISE`. The gate ENFORCES the verdict: a well-formed REVISE is rejected and routed back to `repair` automatically, carrying your findings — so list every finding in the table with a concrete fix. On PASS, `advance_task_step` to `finish`. Never write PASS while a criterion is unmet.",
|
|
368
|
+
"suggestedRole": "test reliability reviewer",
|
|
369
|
+
"consumes": [
|
|
370
|
+
{
|
|
371
|
+
"file": "{{workPath}}/validation.md",
|
|
372
|
+
"artifact": true
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
376
|
+
"artifact": true
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
380
|
+
"artifact": true
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
384
|
+
"artifact": true
|
|
385
|
+
}
|
|
386
|
+
],
|
|
387
|
+
"gate": {
|
|
388
|
+
"at": "completion",
|
|
389
|
+
"checks": [
|
|
390
|
+
{
|
|
391
|
+
"kind": "minBytes",
|
|
392
|
+
"file": "{{workPath}}/review.md",
|
|
393
|
+
"bytes": 400,
|
|
394
|
+
"artifact": true
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"kind": "contains",
|
|
398
|
+
"file": "{{workPath}}/review.md",
|
|
399
|
+
"pattern": "Verdict:\\s*(?:PASS|REVISE)",
|
|
400
|
+
"flags": "i",
|
|
401
|
+
"label": "explicit PASS or REVISE verdict",
|
|
402
|
+
"artifact": true
|
|
403
|
+
}
|
|
404
|
+
],
|
|
405
|
+
"scripts": [
|
|
406
|
+
{
|
|
407
|
+
"name": "checkFixReview",
|
|
408
|
+
"scope": "standard",
|
|
409
|
+
"inputs": {
|
|
410
|
+
"reviewPath": "{{workPath}}/review.md",
|
|
411
|
+
"fixStepId": "repair"
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
],
|
|
415
|
+
"onReject": "evaluate",
|
|
416
|
+
"maxAttempts": 4
|
|
417
|
+
},
|
|
418
|
+
"next": "finish"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"id": "repair",
|
|
422
|
+
"name": "Repair the deliverable",
|
|
423
|
+
"description": "Fix only the concrete gaps from the latest independent review.",
|
|
424
|
+
"prompt": "Read `{{workPath}}/review.md` with `read_artifact` and repair every failed criterion in `{{workPath}}/validation.md`, `{{workPath}}/flake-evidence.md`, `{{workPath}}/diagnosis.md`, `{{workPath}}/fix-notes.md`. Make changes on each file's declared surface (`write_artifact` for artifact inputs, `write_file` for workspace inputs), not in task notes or a reply. Preserve evidence that already passed. Re-run or re-check anything the reviewer found unproven. Ensure `{{workPath}}/validation.md` is genuinely updated this turn so the repair is observable, then hand it back for independent evaluation.",
|
|
425
|
+
"suggestedRole": "software engineer",
|
|
426
|
+
"consumes": [
|
|
427
|
+
{
|
|
428
|
+
"file": "{{workPath}}/review.md",
|
|
429
|
+
"artifact": true
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"file": "{{workPath}}/validation.md",
|
|
433
|
+
"artifact": true
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"file": "{{workPath}}/flake-evidence.md",
|
|
437
|
+
"artifact": true
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
441
|
+
"artifact": true
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
445
|
+
"artifact": true
|
|
446
|
+
}
|
|
447
|
+
],
|
|
448
|
+
"advanceWhen": {
|
|
449
|
+
"file": "{{workPath}}/validation.md",
|
|
450
|
+
"minBytes": 300,
|
|
451
|
+
"sniff": "nonempty",
|
|
452
|
+
"requireChange": true,
|
|
453
|
+
"artifact": true,
|
|
454
|
+
"goto": "evaluate"
|
|
455
|
+
},
|
|
456
|
+
"gate": {
|
|
457
|
+
"at": "completion",
|
|
458
|
+
"checks": [
|
|
459
|
+
{
|
|
460
|
+
"kind": "minBytes",
|
|
461
|
+
"file": "{{workPath}}/validation.md",
|
|
462
|
+
"bytes": 300,
|
|
463
|
+
"artifact": true
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"kind": "sniff",
|
|
467
|
+
"file": "{{workPath}}/validation.md",
|
|
468
|
+
"sniff": "nonempty",
|
|
469
|
+
"artifact": true
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
"kind": "contains",
|
|
473
|
+
"file": "{{workPath}}/validation.md",
|
|
474
|
+
"pattern": "^##\\s+Runs",
|
|
475
|
+
"flags": "im",
|
|
476
|
+
"label": "Runs section",
|
|
477
|
+
"artifact": true
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"kind": "contains",
|
|
481
|
+
"file": "{{workPath}}/validation.md",
|
|
482
|
+
"pattern": "^##\\s+Result",
|
|
483
|
+
"flags": "im",
|
|
484
|
+
"label": "Result section",
|
|
485
|
+
"artifact": true
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"kind": "commandEvidence",
|
|
489
|
+
"script": "test",
|
|
490
|
+
"expect": "pass",
|
|
491
|
+
"minRuns": 3,
|
|
492
|
+
"label": "three consecutive green suite runs (verified run receipts)"
|
|
493
|
+
}
|
|
494
|
+
],
|
|
495
|
+
"onReject": "repair",
|
|
496
|
+
"maxAttempts": 4
|
|
497
|
+
},
|
|
498
|
+
"next": "evaluate"
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
"id": "finish",
|
|
502
|
+
"name": "Finish",
|
|
503
|
+
"description": "All deterministic and reviewer criteria passed.",
|
|
504
|
+
"prompt": "The independent review passed. Read `{{workPath}}/review.md` with `read_artifact`, then use `write_task_note` to record a concise DONE summary with the final deliverable paths (`{{workPath}}/validation.md`, `{{workPath}}/flake-evidence.md`, `{{workPath}}/diagnosis.md`, `{{workPath}}/fix-notes.md`) and the evidence that each acceptance criterion passed. Report DONE without starting new work.",
|
|
505
|
+
"suggestedRole": "project lead",
|
|
506
|
+
"consumes": [
|
|
507
|
+
{
|
|
508
|
+
"file": "{{workPath}}/review.md",
|
|
509
|
+
"artifact": true
|
|
510
|
+
}
|
|
511
|
+
],
|
|
512
|
+
"terminal": true
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
"id": "needs-user",
|
|
516
|
+
"name": "Escalate unresolved concerns",
|
|
517
|
+
"description": "The bounded repair loop ended without a defensible pass.",
|
|
518
|
+
"prompt": "The deliverable did not pass after 3 review rounds. Do not claim success. Read `{{workPath}}/review.md` with `read_artifact`, then use `write_task_note` to record DONE_WITH_CONCERNS: the unmet criteria, what was attempted, the affected paths, and the smallest user decision or missing input needed to continue.",
|
|
519
|
+
"suggestedRole": "project lead",
|
|
520
|
+
"consumes": [
|
|
521
|
+
{
|
|
522
|
+
"file": "{{workPath}}/review.md",
|
|
523
|
+
"artifact": true
|
|
524
|
+
}
|
|
525
|
+
],
|
|
526
|
+
"terminal": true
|
|
527
|
+
}
|
|
528
|
+
],
|
|
529
|
+
"diffpackCapable": true,
|
|
530
|
+
"capabilityFloor": "medium",
|
|
531
|
+
"version": "1.0.0",
|
|
532
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
533
|
+
"minGezelVersion": "1.26236"
|
|
534
|
+
}
|