@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,188 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "accessibility-retrofit",
|
|
3
|
+
"name": "Accessibility Retrofit",
|
|
4
|
+
"description": "Audit real pages for concrete accessibility violations — alt text, labels, heading order, keyboard and focus, landmarks, contrast — then fix each one at its real site in the markup and verify it, with an enforced independent review that rejects accessibility theater.",
|
|
5
|
+
"category": "code-review",
|
|
6
|
+
"role": "maintenance-review",
|
|
7
|
+
"tags": [
|
|
8
|
+
"accessibility",
|
|
9
|
+
"a11y",
|
|
10
|
+
"wcag",
|
|
11
|
+
"retrofit",
|
|
12
|
+
"html",
|
|
13
|
+
"alt-text",
|
|
14
|
+
"images"
|
|
15
|
+
],
|
|
16
|
+
"triggers": [
|
|
17
|
+
"accessibility fix",
|
|
18
|
+
"make it accessible",
|
|
19
|
+
"wcag compliance",
|
|
20
|
+
"a11y retrofit",
|
|
21
|
+
"fix accessibility",
|
|
22
|
+
"screen reader friendly",
|
|
23
|
+
"add alt text",
|
|
24
|
+
"generate alt text for images",
|
|
25
|
+
"make images accessible",
|
|
26
|
+
"alt text for my site",
|
|
27
|
+
"wcag image descriptions"
|
|
28
|
+
],
|
|
29
|
+
"about": "Retrofit real pages to be genuinely accessible, with the discipline that separates repair from theater. First AUDIT: exercise the pages and markup the project actually serves and inventory concrete violations by class — missing or empty alt text on meaningful images, placeholder text doing a label's job, heading levels that jump, div-as-button controls a keyboard cannot reach, missing landmark structure, and contrast problems where the colors are derivable from the code — each violation recorded with its file, the concrete issue, and a priority. Then FIX every violation at its real site in the markup, styles, or components, preferring semantic elements over ARIA bolt-ons, real labels paired by for/id over placeholders, and specific purposeful alt text — with alt=\"\" reserved for genuinely decorative images and stated as such. Then VALIDATE by re-inspecting every fixed item and walking the keyboard path where runnable, saying plainly what was inspected versus actually exercised. Finally an independent reviewer grades the whole chain against fixed criteria — every label's for resolving to a real input id, monotonic heading order, no aria-label sprayed where a semantic element was the fix — and a REVISE verdict routes the work back automatically with concrete findings. This book also carries the full alt-text pass: classifying content versus decorative images and writing purposeful descriptions is part of the audit and fix, not a separate chore. Works identically whether the run edits the project directly or drafts a change proposal for the user to apply.",
|
|
30
|
+
"doc": {
|
|
31
|
+
"capabilityFloor": "small",
|
|
32
|
+
"diffpackCapable": true
|
|
33
|
+
},
|
|
34
|
+
"workflow": {
|
|
35
|
+
"plan": "Audit the real pages and inventory violations by class -> fix each violation at its real site with semantic markup -> validate every item with an honest keyboard walk -> enforced independent review.",
|
|
36
|
+
"maxGateAttempts": 4,
|
|
37
|
+
"maxReviewRounds": 3,
|
|
38
|
+
"phases": [
|
|
39
|
+
{
|
|
40
|
+
"id": "audit",
|
|
41
|
+
"name": "Audit the real pages",
|
|
42
|
+
"description": "Exercise the pages the project actually serves and inventory concrete violations, each with its file, issue, and priority.",
|
|
43
|
+
"suggestedRole": "accessibility reviewer",
|
|
44
|
+
"capabilityFloor": "small",
|
|
45
|
+
"prompt": "Audit the REAL pages before anything is repaired. Find the markup this project actually serves — HTML files, templates, components — and read every involved file with `read_file`. Inventory concrete violations by class: meaningful images with missing or empty alt text; form fields labeled only by placeholder text (no `label` element paired to the input's `id` via `for`); heading order that jumps levels; keyboard and focus failures (a `div` or `span` styled and clicked like a button with no `role`, `tabindex`, or key handling); missing or wrong landmark structure (`header`/`nav`/`main`/`footer`); and contrast problems where the colors are derivable from the code. Also classify genuinely decorative images — those must carry `alt=\"\"`, not a description. Record every violation with the exact file, the concrete issue, and a priority (high/medium/low by user harm). Do not fix anything in this phase, and never pad the list — where an area is clean, say so honestly.\n\nWrite `{{workPath}}/audit.md` with exactly these sections: `## Scope` (which pages and files you exercised, with backtick paths), `## Violations` (a markdown table with columns `| File | Issue | Priority |`, one row per violation), `## Priorities` (the fix order and why). Every path you cite must be real.",
|
|
46
|
+
"output": {
|
|
47
|
+
"path": "{{workPath}}/audit.md",
|
|
48
|
+
"minBytes": 600,
|
|
49
|
+
"requiredPatterns": [
|
|
50
|
+
{
|
|
51
|
+
"pattern": "^##\\s+Scope",
|
|
52
|
+
"label": "Scope section"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"pattern": "^##\\s+Violations",
|
|
56
|
+
"label": "Violations section"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"pattern": "^##\\s+Priorities",
|
|
60
|
+
"label": "Priorities section"
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"additionalChecks": [
|
|
64
|
+
{
|
|
65
|
+
"kind": "tableShape",
|
|
66
|
+
"file": "{{workPath}}/audit.md",
|
|
67
|
+
"requiredColumns": [
|
|
68
|
+
"File",
|
|
69
|
+
"Issue",
|
|
70
|
+
"Priority"
|
|
71
|
+
],
|
|
72
|
+
"minRows": 1,
|
|
73
|
+
"artifact": true
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"kind": "citationsResolve",
|
|
77
|
+
"file": "{{workPath}}/audit.md",
|
|
78
|
+
"minCitations": 2,
|
|
79
|
+
"artifact": true
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "fix",
|
|
86
|
+
"name": "Fix each violation at its real site",
|
|
87
|
+
"description": "Repair every audited violation in the actual markup, styles, or components — semantic elements over ARIA bolt-ons.",
|
|
88
|
+
"suggestedRole": "frontend engineer",
|
|
89
|
+
"capabilityFloor": "small",
|
|
90
|
+
"prompt": "Read `{{workPath}}/audit.md` and repair every violation at its REAL site in the markup, styles, or components. There is no prescribed output path for the repairs — edit the actual files from the audit with `read_file` plus `write_file`/`replace_in_file`. Choose the semantic fix over the ARIA bolt-on: a real `button` element rather than `role` and `tabindex` sprayed on a `div` (where the surrounding code allows it), a real `label` paired to the input's `id` via `for` rather than placeholder text doing a label's job, corrected heading levels that restore monotonic order rather than CSS that fakes it. Write meaningful, specific alt text for images that carry content; give genuinely decorative images `alt=\"\"` and state why each is decorative. Keep existing behavior working — handlers, ids, and styling hooks on elements you touch must still be wired afterwards. A violation you deliberately leave unfixed gets an honest deferral with a reason, never silence.\n\nThen write `{{workPath}}/fix-notes.md` with exactly these sections: `## Problem` (one paragraph), `## Change` (what you altered, per class of violation), `## Files touched` (backtick path per line), `## Per-violation disposition` (every audit row: fixed or deferred, with the reason), `## Risk` (what could still be wrong; be honest about anything unverified), `## How to verify` (concrete steps a person follows to confirm, keyboard included).",
|
|
91
|
+
"output": {
|
|
92
|
+
"path": "{{workPath}}/fix-notes.md",
|
|
93
|
+
"minBytes": 700,
|
|
94
|
+
"requiredPatterns": [
|
|
95
|
+
{
|
|
96
|
+
"pattern": "^##\\s+Problem",
|
|
97
|
+
"label": "Problem section"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"pattern": "^##\\s+Change",
|
|
101
|
+
"label": "Change section"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"pattern": "^##\\s+Files touched",
|
|
105
|
+
"label": "Files touched section"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"pattern": "^##\\s+Per-violation disposition",
|
|
109
|
+
"label": "Per-violation disposition section"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"pattern": "^##\\s+Risk",
|
|
113
|
+
"label": "Risk section"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"pattern": "^##\\s+How to verify",
|
|
117
|
+
"label": "How to verify section"
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"additionalChecks": [
|
|
121
|
+
{
|
|
122
|
+
"kind": "citationsResolve",
|
|
123
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
124
|
+
"minCitations": 2,
|
|
125
|
+
"artifact": true
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"id": "validate",
|
|
132
|
+
"name": "Validate every fix",
|
|
133
|
+
"description": "Re-inspect each fixed item against the current markup and walk the keyboard path, honest about inspected versus exercised.",
|
|
134
|
+
"suggestedRole": "accessibility reviewer",
|
|
135
|
+
"capabilityFloor": "small",
|
|
136
|
+
"prompt": "Verify with fresh eyes. Read `{{workPath}}/audit.md` and `{{workPath}}/fix-notes.md`, then re-open every touched file with `read_file` and check each audit row against the current markup: is the alt text present and specific, does each `label`'s `for` resolve to a real input `id`, is the heading sequence monotonic now, does the once-div control carry real button semantics and keyboard operability, are the landmarks in place. Walk the keyboard path as far as the code lets you: trace tab order, focusability, and key handlers through the markup and scripts. Say plainly which items you INSPECTED (read the code) versus EXERCISED (actually ran or interacted with) — anything that is neither is unverified, and you must say so rather than claim it.\n\nWrite `{{workPath}}/validation.md` with exactly these sections: `## Per-item verification` (each audit row and what you found in the current file), `## Keyboard walk` (the path a keyboard user takes and where focus goes), `## Result` (all clear, or what remains open and why).",
|
|
137
|
+
"output": {
|
|
138
|
+
"path": "{{workPath}}/validation.md",
|
|
139
|
+
"minBytes": 500,
|
|
140
|
+
"requiredPatterns": [
|
|
141
|
+
{
|
|
142
|
+
"pattern": "^##\\s+Per-item verification",
|
|
143
|
+
"label": "Per-item verification section"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"pattern": "^##\\s+Keyboard walk",
|
|
147
|
+
"label": "Keyboard walk section"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"pattern": "^##\\s+Result",
|
|
151
|
+
"label": "Result section"
|
|
152
|
+
}
|
|
153
|
+
],
|
|
154
|
+
"additionalChecks": [
|
|
155
|
+
{
|
|
156
|
+
"kind": "citationsResolve",
|
|
157
|
+
"file": "{{workPath}}/validation.md",
|
|
158
|
+
"minCitations": 2,
|
|
159
|
+
"artifact": true
|
|
160
|
+
}
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"review": {
|
|
166
|
+
"artifactPath": "{{workPath}}/validation.md",
|
|
167
|
+
"relatedPaths": [
|
|
168
|
+
"{{workPath}}/audit.md",
|
|
169
|
+
"{{workPath}}/fix-notes.md"
|
|
170
|
+
],
|
|
171
|
+
"reviewPath": "{{workPath}}/review.md",
|
|
172
|
+
"reviewerRole": "accessibility reviewer",
|
|
173
|
+
"repairRole": "frontend engineer",
|
|
174
|
+
"minReviewBytes": 400,
|
|
175
|
+
"enforce": {
|
|
176
|
+
"fixStepId": "repair"
|
|
177
|
+
},
|
|
178
|
+
"criteria": [
|
|
179
|
+
"Every violation in audit.md is either fixed at its real site or honestly deferred with a stated reason — open the touched files and check the current markup; do not grade from fix-notes.md alone.",
|
|
180
|
+
"No accessibility theater: where a semantic element was the right fix (a real button, a real label), the markup uses it — aria-label sprayed over a non-semantic element does not pass.",
|
|
181
|
+
"Every label's for attribute resolves to a real input id in the current markup, and placeholder text no longer stands in for a label.",
|
|
182
|
+
"The heading sequence in the fixed markup is monotonic — no level is skipped on the way down.",
|
|
183
|
+
"Meaningful images carry specific, non-empty alt text; genuinely decorative images carry alt=\"\" with the decorative call stated in the notes.",
|
|
184
|
+
"The dispositions reconcile across audit.md, fix-notes.md, and validation.md — the same items, none silently dropped — and validation.md separates inspected from exercised honestly."
|
|
185
|
+
]
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "apply-review-findings",
|
|
3
|
+
"name": "Apply Review Findings",
|
|
4
|
+
"description": "Take an existing review's findings and close them for real: triage each one against the current code, fix the real ones at their actual sites with the smallest correct change, verify per finding, and account for every finding end to end under an enforced review.",
|
|
5
|
+
"category": "code-quality",
|
|
6
|
+
"role": "general",
|
|
7
|
+
"tags": [
|
|
8
|
+
"review-findings",
|
|
9
|
+
"follow-up",
|
|
10
|
+
"bug-fix",
|
|
11
|
+
"triage",
|
|
12
|
+
"quality",
|
|
13
|
+
"maintenance"
|
|
14
|
+
],
|
|
15
|
+
"triggers": [
|
|
16
|
+
"apply the review findings",
|
|
17
|
+
"fix the findings",
|
|
18
|
+
"address the review",
|
|
19
|
+
"fix these issues"
|
|
20
|
+
],
|
|
21
|
+
"about": "Close out a review the way the reviewer hoped someone would: every finding read, judged against the code as it stands TODAY, fixed at its real site or deferred with a reason a person can respect — and nothing silently dropped. First TRIAGE: read the findings (a findings JSON, a report with a findings table, or issue refs), open the cited code, and sort each finding — real, already fixed, stale, or out of scope — because reviews age and fixing a ghost is churn. Cluster the will-fix findings that belong together so one change closes them cleanly. Then FIX cluster by cluster: the smallest correct change per finding at the actual site, never a suppression or a cosmetic edit, with a per-finding disposition kept as the work happens. Then VALIDATE each addressed finding the way its report suggested — run what is runnable, probe what is probeable, and say plainly what could only be verified by reading. The enforced review then reconciles the ledger: the same finding ids must flow through triage, fix notes, and verification with consistent outcomes, because a finding lost between documents is a finding lost. Built for unattended work: findings arrive as a file or refs, dispositions come back as documents, and no runnable test suite is required. Works identically whether the run edits the project directly or drafts a change proposal for the user to apply.",
|
|
22
|
+
"doc": {
|
|
23
|
+
"paramSchema": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"properties": {
|
|
26
|
+
"findingsPath": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"title": "Findings file",
|
|
29
|
+
"description": "Artifacts-drawer path of the review findings to apply (a findings JSON array or a markdown report with a findings table). Leave empty when issueRefs or the task description carries them.",
|
|
30
|
+
"default": ""
|
|
31
|
+
},
|
|
32
|
+
"issueRefs": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"title": "Issue refs",
|
|
35
|
+
"description": "Comma-separated issue refs to address (e.g. BW-3,BW-8). Leave empty when findingsPath carries the work.",
|
|
36
|
+
"default": ""
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"capabilityFloor": "small",
|
|
41
|
+
"diffpackCapable": true,
|
|
42
|
+
"runModes": {
|
|
43
|
+
"nightShift": "supported"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"workflow": {
|
|
47
|
+
"plan": "Triage every finding against the current code (real, already fixed, stale, out of scope) -> fix cluster by cluster at the real sites with a per-finding disposition -> verify each addressed finding the way its report suggested -> enforced review reconciles the full ledger.",
|
|
48
|
+
"maxGateAttempts": 4,
|
|
49
|
+
"maxReviewRounds": 3,
|
|
50
|
+
"phases": [
|
|
51
|
+
{
|
|
52
|
+
"id": "triage",
|
|
53
|
+
"name": "Triage the findings against current code",
|
|
54
|
+
"description": "Read every finding, judge it against the code as it stands now, and sort real work from ghosts.",
|
|
55
|
+
"suggestedRole": "code reviewer",
|
|
56
|
+
"capabilityFloor": "small",
|
|
57
|
+
"prompt": "Findings file (artifacts drawer): \"{{findingsPath}}\". Issue refs: \"{{issueRefs}}\". When both are empty, the task description carries the findings.\n\nRead every finding before fixing anything. Use `read_artifact` for the findings file when one is named; otherwise take the findings from the refs or the task description. Then judge each finding against the code as it stands NOW — open the cited files with `read_file` — and sort it: REAL (the problem is present today), ALREADY FIXED (the code moved on), STALE (the cited site no longer exists or the finding no longer applies), or OUT OF SCOPE (real but not this task's to change — say whose it is). Reviews age; never fix a ghost. Give every finding a stable id — keep the ids the findings already carry, or number them F-1, F-2, ... in reading order — and carry those ids through every later document. Cluster the will-fix findings that belong together so one change closes them cleanly. If the findings source cannot be found or holds no findings, record that honestly and stop rather than inventing work.\n\nWrite `{{workPath}}/triage.md` with exactly these sections: `## Findings read` (every finding: id, one-line summary, the cited site as a backtick path), `## Will fix` (the ids, each with the problem confirmed in the current code), `## Deferred` (the ids with an honest reason: already fixed, stale, or out of scope — write None when everything is real), `## Clusters` (which will-fix ids travel together and why).",
|
|
58
|
+
"output": {
|
|
59
|
+
"path": "{{workPath}}/triage.md",
|
|
60
|
+
"minBytes": 600,
|
|
61
|
+
"requiredPatterns": [
|
|
62
|
+
{
|
|
63
|
+
"pattern": "^##\\s+Findings read",
|
|
64
|
+
"label": "Findings read section"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"pattern": "^##\\s+Will fix",
|
|
68
|
+
"label": "Will fix section"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"pattern": "^##\\s+Deferred",
|
|
72
|
+
"label": "Deferred section"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"pattern": "^##\\s+Clusters",
|
|
76
|
+
"label": "Clusters section"
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"additionalChecks": [
|
|
80
|
+
{
|
|
81
|
+
"kind": "citationsResolve",
|
|
82
|
+
"file": "{{workPath}}/triage.md",
|
|
83
|
+
"minCitations": 2,
|
|
84
|
+
"artifact": true
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "fix",
|
|
91
|
+
"name": "Fix cluster by cluster at the real sites",
|
|
92
|
+
"description": "The smallest correct change per finding, at the actual cited site, with a per-finding disposition ledger.",
|
|
93
|
+
"suggestedRole": "software engineer",
|
|
94
|
+
"capabilityFloor": "small",
|
|
95
|
+
"prompt": "Read `{{workPath}}/triage.md` and work the will-fix clusters one at a time, at the real sites. There is no prescribed output path for source changes — edit the actual files the findings point at with `read_file` plus `write_file`/`replace_in_file`. For each finding, make the smallest correct change that genuinely fixes what the finding describes — not a suppression, not a comment, not a workaround that leaves the problem alive. Keep surrounding behavior intact: a findings pass that breaks the neighborhood trades one review for another. Keep the per-finding ledger as you go. If a finding turns out unfixable as described, move it to a deferral with the honest reason instead of pretending — never claim a fix you did not make.\n\nWrite `{{workPath}}/fix-notes.md` with exactly these sections: `## Problem` (one paragraph: what this findings pass covered), `## Change` (per cluster: what you altered and why it closes those findings), `## Files touched` (backtick path per line), `## Per-finding disposition` (every id from triage: fixed at which path, or deferred with the reason), `## Risk` (what could break, honestly), `## How to verify` (per finding: the check its report suggested, or the closest runnable equivalent).",
|
|
96
|
+
"output": {
|
|
97
|
+
"path": "{{workPath}}/fix-notes.md",
|
|
98
|
+
"minBytes": 700,
|
|
99
|
+
"requiredPatterns": [
|
|
100
|
+
{
|
|
101
|
+
"pattern": "^##\\s+Problem",
|
|
102
|
+
"label": "Problem section"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"pattern": "^##\\s+Change",
|
|
106
|
+
"label": "Change section"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"pattern": "^##\\s+Files touched",
|
|
110
|
+
"label": "Files touched section"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"pattern": "^##\\s+Per-finding disposition",
|
|
114
|
+
"label": "Per-finding disposition section"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"pattern": "^##\\s+Risk",
|
|
118
|
+
"label": "Risk section"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"pattern": "^##\\s+How to verify",
|
|
122
|
+
"label": "How to verify section"
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
"additionalChecks": [
|
|
126
|
+
{
|
|
127
|
+
"kind": "citationsResolve",
|
|
128
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
129
|
+
"minCitations": 2,
|
|
130
|
+
"artifact": true
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"id": "validate",
|
|
137
|
+
"name": "Verify each finding the way its report suggested",
|
|
138
|
+
"description": "Re-check every addressed finding at its site, run what is runnable, and restate the deferrals.",
|
|
139
|
+
"suggestedRole": "software engineer",
|
|
140
|
+
"capabilityFloor": "small",
|
|
141
|
+
"prompt": "Re-check every addressed finding the way its report suggested. Read `{{workPath}}/fix-notes.md`, then verify each fixed finding at its site: re-read the changed code, and run what is runnable — the project's own scripts, or a small probe when a script-execution tool such as `run_nodejs_script` is wired this turn. When nothing is runnable, verify by reading and say so plainly — an unrun check is recorded as unverified, never claimed. Confirm the deferred findings still carry their reasons. Every finding id from triage must appear here with its outcome; a finding that vanished between documents is a finding dropped.\n\nWrite `{{workPath}}/validation.md` with exactly these sections: `## Per-finding verification` (every id: how it was re-checked and what was observed, with deferrals restated), `## Result` (closed versus deferred counts, what was verified by running versus by reading, and anything still owed).",
|
|
142
|
+
"output": {
|
|
143
|
+
"path": "{{workPath}}/validation.md",
|
|
144
|
+
"minBytes": 450,
|
|
145
|
+
"requiredPatterns": [
|
|
146
|
+
{
|
|
147
|
+
"pattern": "^##\\s+Per-finding verification",
|
|
148
|
+
"label": "Per-finding verification section"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"pattern": "^##\\s+Result",
|
|
152
|
+
"label": "Result section"
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"additionalChecks": [
|
|
156
|
+
{
|
|
157
|
+
"kind": "citationsResolve",
|
|
158
|
+
"file": "{{workPath}}/validation.md",
|
|
159
|
+
"minCitations": 2,
|
|
160
|
+
"artifact": true
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
],
|
|
166
|
+
"review": {
|
|
167
|
+
"artifactPath": "{{workPath}}/validation.md",
|
|
168
|
+
"relatedPaths": [
|
|
169
|
+
"{{workPath}}/triage.md",
|
|
170
|
+
"{{workPath}}/fix-notes.md"
|
|
171
|
+
],
|
|
172
|
+
"reviewPath": "{{workPath}}/review.md",
|
|
173
|
+
"reviewerRole": "findings auditor",
|
|
174
|
+
"repairRole": "software engineer",
|
|
175
|
+
"minReviewBytes": 400,
|
|
176
|
+
"enforce": {
|
|
177
|
+
"fixStepId": "repair"
|
|
178
|
+
},
|
|
179
|
+
"criteria": [
|
|
180
|
+
"Every finding from the source appears in triage.md's Findings read with an id and a cited site — count them against the findings source; a finding missing from the ledger is an automatic REVISE.",
|
|
181
|
+
"Each Will fix finding is genuinely addressed at a real site: open the touched files and confirm the change fixes what the finding describes, not a suppression, comment, or cosmetic edit.",
|
|
182
|
+
"Each Deferred finding carries an honest, specific reason (already fixed, stale, or out of scope) that holds up when you open the cited code.",
|
|
183
|
+
"The ledger reconciles: the same ids flow through triage.md, fix-notes.md's Per-finding disposition, and validation.md's Per-finding verification with consistent outcomes — no finding silently dropped or relabeled between documents.",
|
|
184
|
+
"validation.md re-checked each addressed finding the way its report suggested where runnable, and plainly labels anything verified only by reading — nothing claimed run that was not.",
|
|
185
|
+
"Every path cited across the three documents exists in this project, and fix-notes.md's Files touched matches the changes actually made."
|
|
186
|
+
]
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bug-fix-tdd",
|
|
3
|
+
"name": "Reproduce-Then-Fix a Bug",
|
|
4
|
+
"description": "Fix a bug the disciplined way, with proof at every step: a failing test that reproduces it (verified red by a real test run), the smallest change at the real defect site, a green suite afterwards, and an enforced independent review of the fix.",
|
|
5
|
+
"category": "code-quality",
|
|
6
|
+
"role": "maintenance-review",
|
|
7
|
+
"tags": [
|
|
8
|
+
"bug-fix",
|
|
9
|
+
"tdd",
|
|
10
|
+
"regression-test",
|
|
11
|
+
"debugging",
|
|
12
|
+
"tests",
|
|
13
|
+
"quality"
|
|
14
|
+
],
|
|
15
|
+
"triggers": [
|
|
16
|
+
"fix this bug",
|
|
17
|
+
"reproduce and fix",
|
|
18
|
+
"tdd bug fix",
|
|
19
|
+
"write a regression test",
|
|
20
|
+
"debug and fix"
|
|
21
|
+
],
|
|
22
|
+
"about": "Fix a bug with the discipline a senior engineer would demand, and with each claim mechanically verified. First REPRODUCE: write a focused failing test in the project's real test layout and run the suite so the failure is recorded — a bug you cannot reproduce you cannot prove fixed, and this book's gates read the actual run receipts, not the author's summary. Then LOCATE the defect site and its causal chain before touching anything. Then make the SMALLEST change at that real site — never a prescribed scratch file — keeping the new test as a permanent regression guard. Then VALIDATE by re-running the original reproduction and the whole suite, which must now be green. Finally an independent reviewer grades the whole chain against fixed criteria and their 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.",
|
|
23
|
+
"doc": {
|
|
24
|
+
"paramSchema": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"properties": {
|
|
27
|
+
"scope": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"title": "Bug to fix",
|
|
30
|
+
"description": "The bug report, failing behavior, or area to focus on. Leave empty when the task description already carries it.",
|
|
31
|
+
"default": ""
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"capabilityFloor": "small",
|
|
36
|
+
"diffpackCapable": true,
|
|
37
|
+
"commands": [
|
|
38
|
+
{
|
|
39
|
+
"scope": "script",
|
|
40
|
+
"name": "test",
|
|
41
|
+
"reason": "Red-then-green proof: the reproduction must actually fail against the current code, and the whole suite must pass after the fix. The gates verify real run receipts."
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"workflow": {
|
|
46
|
+
"plan": "Reproduce with a failing test (verified red by a real run) -> locate the defect site and causal chain -> smallest fix at the real site -> validate red-to-green with the original reproduction -> enforced independent review.",
|
|
47
|
+
"maxGateAttempts": 4,
|
|
48
|
+
"maxReviewRounds": 3,
|
|
49
|
+
"phases": [
|
|
50
|
+
{
|
|
51
|
+
"id": "reproduce",
|
|
52
|
+
"name": "Reproduce with a failing test",
|
|
53
|
+
"description": "Establish the failure on the real code, as a running test that fails for the right reason.",
|
|
54
|
+
"suggestedRole": "debugging engineer",
|
|
55
|
+
"capabilityFloor": "small",
|
|
56
|
+
"prompt": "The bug to fix: {{scope}}\n\nEstablish the failure on the REAL code before changing anything. Read the bug description and the involved source. Find how this project runs its tests (`list_package_scripts`, then read the existing test layout). Write ONE focused test that captures the exact wrong behavior, in the project's real test layout and style — never a scratch file like `src/bug.test.js`. Then run the suite with `run_package_script` (`test`) and confirm it FAILS because of your new test, for the right reason — quote the failing assertion. If the command needs first-use approval, say so and wait rather than guessing. If you cannot reproduce the bug at all, record every attempt honestly; do not invent a cause.\n\nWrite `{{workPath}}/repro.md` with exactly these sections: `## Symptom` (what the user sees, in their words), `## Repro command` (the exact command you ran), `## Expected`, `## Actual`, `## Red evidence` (the failing test's path and the quoted failing output from the real run). Cite the real files involved with backtick paths.",
|
|
57
|
+
"output": {
|
|
58
|
+
"path": "{{workPath}}/repro.md",
|
|
59
|
+
"minBytes": 500,
|
|
60
|
+
"requiredPatterns": [
|
|
61
|
+
{
|
|
62
|
+
"pattern": "^##\\s+Symptom",
|
|
63
|
+
"label": "Symptom section"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"pattern": "^##\\s+Repro command",
|
|
67
|
+
"label": "Repro command section"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"pattern": "^##\\s+Expected",
|
|
71
|
+
"label": "Expected section"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"pattern": "^##\\s+Actual",
|
|
75
|
+
"label": "Actual section"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"pattern": "^##\\s+Red evidence",
|
|
79
|
+
"label": "Red evidence section"
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"additionalChecks": [
|
|
83
|
+
{
|
|
84
|
+
"kind": "citationsResolve",
|
|
85
|
+
"file": "{{workPath}}/repro.md",
|
|
86
|
+
"minCitations": 2,
|
|
87
|
+
"artifact": true
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"kind": "commandEvidence",
|
|
91
|
+
"script": "test",
|
|
92
|
+
"expect": "fail",
|
|
93
|
+
"label": "the suite genuinely fails (red) with the new reproduction test"
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "locate",
|
|
100
|
+
"name": "Locate the defect",
|
|
101
|
+
"description": "Name the defect site and the causal chain from it to the symptom. No source edits.",
|
|
102
|
+
"suggestedRole": "root-cause analyst",
|
|
103
|
+
"capabilityFloor": "small",
|
|
104
|
+
"prompt": "Read `{{workPath}}/repro.md`, then trace the failure to its source. Name the defect site precisely: file, symbol, and the first place state or logic goes wrong. Explain the causal chain from that site to the observed symptom, step by step. Check sibling cases: does the same defect pattern appear in neighboring code paths that just have no test yet? Do not edit any source in this phase.\n\nWrite `{{workPath}}/diagnosis.md` with exactly these sections: `## Defect site` (the file and symbol, with backtick paths), `## Causal chain`, `## Siblings checked` (which neighboring paths you inspected and what you found). Every path you cite must be real.",
|
|
105
|
+
"output": {
|
|
106
|
+
"path": "{{workPath}}/diagnosis.md",
|
|
107
|
+
"minBytes": 600,
|
|
108
|
+
"requiredPatterns": [
|
|
109
|
+
{
|
|
110
|
+
"pattern": "^##\\s+Defect site",
|
|
111
|
+
"label": "Defect site section"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"pattern": "^##\\s+Causal chain",
|
|
115
|
+
"label": "Causal chain section"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"pattern": "^##\\s+Siblings checked",
|
|
119
|
+
"label": "Siblings checked section"
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"additionalChecks": [
|
|
123
|
+
{
|
|
124
|
+
"kind": "citationsResolve",
|
|
125
|
+
"file": "{{workPath}}/diagnosis.md",
|
|
126
|
+
"minCitations": 2,
|
|
127
|
+
"artifact": true
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"id": "fix",
|
|
134
|
+
"name": "Make the smallest fix",
|
|
135
|
+
"description": "Change the real defect site, minimally, keeping the new test as a regression guard.",
|
|
136
|
+
"suggestedRole": "software engineer",
|
|
137
|
+
"capabilityFloor": "small",
|
|
138
|
+
"prompt": "Read `{{workPath}}/diagnosis.md` and make the SMALLEST correct change 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`. Never special-case the reproduction's exact input just to silence the test; fix the cause. Cover the sibling cases the diagnosis flagged, and keep (or strengthen) the reproduction test so it becomes the permanent regression guard. Re-run the focused test while you work.\n\nThen write `{{workPath}}/fix-notes.md` with exactly these sections: `## Problem` (one paragraph), `## Change` (what you altered and why it breaks the causal chain), `## Files touched` (backtick path per line), `## Regression coverage` (which test now guards this), `## Risk` (what could still go wrong; be honest about anything unverified), `## How to verify` (the exact commands a person runs to confirm).",
|
|
139
|
+
"output": {
|
|
140
|
+
"path": "{{workPath}}/fix-notes.md",
|
|
141
|
+
"minBytes": 700,
|
|
142
|
+
"requiredPatterns": [
|
|
143
|
+
{
|
|
144
|
+
"pattern": "^##\\s+Problem",
|
|
145
|
+
"label": "Problem section"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"pattern": "^##\\s+Change",
|
|
149
|
+
"label": "Change section"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"pattern": "^##\\s+Files touched",
|
|
153
|
+
"label": "Files touched section"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"pattern": "^##\\s+Regression coverage",
|
|
157
|
+
"label": "Regression coverage section"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"pattern": "^##\\s+Risk",
|
|
161
|
+
"label": "Risk section"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"pattern": "^##\\s+How to verify",
|
|
165
|
+
"label": "How to verify section"
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
"additionalChecks": [
|
|
169
|
+
{
|
|
170
|
+
"kind": "citationsResolve",
|
|
171
|
+
"file": "{{workPath}}/fix-notes.md",
|
|
172
|
+
"minCitations": 2,
|
|
173
|
+
"artifact": true
|
|
174
|
+
}
|
|
175
|
+
]
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"id": "validate",
|
|
180
|
+
"name": "Validate red-to-green",
|
|
181
|
+
"description": "Re-run the original reproduction and the whole suite; record the real results.",
|
|
182
|
+
"suggestedRole": "software engineer",
|
|
183
|
+
"capabilityFloor": "small",
|
|
184
|
+
"prompt": "Prove the fix with fresh eyes. Read `{{workPath}}/repro.md` and re-run the EXACT reproduction command it records with `run_package_script` (the suite runs ONLY through `run_package_script` with script name \"test\"; `run_installed_script` is for named ops scripts and is NOT the test runner) — the previously failing test must now pass, and the whole suite must be green. Anything you could not actually run gets labeled unverified, never claimed. If something regressed, your fix was too broad — go back and narrow it before validating again.\n\nWrite `{{workPath}}/validation.md` with exactly these sections: `## Repro re-run` (the command and what happened to the once-failing test), `## Suite` (the full-suite result), `## Result` (red-to-green confirmed, or what remains unverified and why).",
|
|
185
|
+
"output": {
|
|
186
|
+
"path": "{{workPath}}/validation.md",
|
|
187
|
+
"minBytes": 400,
|
|
188
|
+
"requiredPatterns": [
|
|
189
|
+
{
|
|
190
|
+
"pattern": "^##\\s+Repro re-run",
|
|
191
|
+
"label": "Repro re-run section"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"pattern": "^##\\s+Suite",
|
|
195
|
+
"label": "Suite section"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"pattern": "^##\\s+Result",
|
|
199
|
+
"label": "Result section"
|
|
200
|
+
}
|
|
201
|
+
],
|
|
202
|
+
"additionalChecks": [
|
|
203
|
+
{
|
|
204
|
+
"kind": "commandEvidence",
|
|
205
|
+
"script": "test",
|
|
206
|
+
"expect": "pass",
|
|
207
|
+
"label": "the whole suite is green after the fix (verified run receipt)"
|
|
208
|
+
}
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
"review": {
|
|
214
|
+
"artifactPath": "{{workPath}}/validation.md",
|
|
215
|
+
"relatedPaths": [
|
|
216
|
+
"{{workPath}}/repro.md",
|
|
217
|
+
"{{workPath}}/diagnosis.md",
|
|
218
|
+
"{{workPath}}/fix-notes.md"
|
|
219
|
+
],
|
|
220
|
+
"reviewPath": "{{workPath}}/review.md",
|
|
221
|
+
"reviewerRole": "debugging reviewer",
|
|
222
|
+
"repairRole": "software engineer",
|
|
223
|
+
"minReviewBytes": 400,
|
|
224
|
+
"enforce": {
|
|
225
|
+
"fixStepId": "repair"
|
|
226
|
+
},
|
|
227
|
+
"criteria": [
|
|
228
|
+
"The failure was reproduced with recorded red evidence: repro.md quotes a real failing run of a test that lives in the project's actual test layout, or the run stopped honestly at needs-user.",
|
|
229
|
+
"diagnosis.md names a defect site that exists in this codebase and a causal chain that actually explains the symptom.",
|
|
230
|
+
"The change is at that defect site, is minimal, and covers the sibling cases the diagnosis flagged — open the touched files and check; do not grade from fix-notes.md alone.",
|
|
231
|
+
"validation.md re-ran the original reproduction command and the once-failing test now passes with the whole suite green — judged from the recorded runs, not the author's summary.",
|
|
232
|
+
"The reproduction test survives as a permanent regression guard: it exists in the test layout and would fail again if the fix were reverted.",
|
|
233
|
+
"fix-notes.md names every touched file (paths that exist), states residual risk honestly, and gives runnable verification steps."
|
|
234
|
+
]
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|