@bendyline/gilde 0.1.40 → 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/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/craftbook-templates/ac/accessibility-retrofit/manifest.json +5 -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/al/alt-text-pass/manifest.json +5 -1
- 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/br/browser-qa-audit/manifest.json +5 -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 +3 -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/ch/changelog-cut/manifest.json +5 -1
- package/data/craftbook-templates/ch/changelog-writeup/manifest.json +5 -1
- package/data/craftbook-templates/ci/ci-pipeline/manifest.json +5 -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/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/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/fe/feature-flag-release/manifest.json +5 -1
- package/data/craftbook-templates/fe/feature-flag-rollout/manifest.json +4 -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/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/ho/hotfix-flow/manifest.json +5 -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/in/investigate/manifest.json +4 -1
- package/data/craftbook-templates/in/investigate-root-cause/manifest.json +5 -1
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/li/live-browser-qa/manifest.json +5 -1
- 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/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 +3 -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/qa/qa/manifest.json +3 -1
- package/data/craftbook-templates/re/refactor-module/manifest.json +2 -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/release-notes/manifest.json +5 -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 +5 -1
- 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/ro/root-cause-investigation/manifest.json +7 -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/sc/schema-migration/manifest.json +4 -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/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 +1 -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/ty/type-safety-pass/manifest.json +3 -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/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/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-version.schema.json +248 -0
- package/schemas/craftbook-test.schema.json +200 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"frozen": true,
|
|
2
3
|
"workflow": {
|
|
3
4
|
"plan": "Reproduce first, diagnose second, change code only after the evidence identifies a root cause. Keep an explicit hypothesis ledger so plausible stories cannot silently become facts. Prefer the smallest experiment that separates competing explanations. The final report must connect symptom, causal mechanism, fix, and regression proof with inspectable paths and command results.",
|
|
4
5
|
"phases": [
|
|
@@ -26,7 +26,13 @@
|
|
|
26
26
|
"description": "Debug systematically: reproduce the failure and find the true root cause before changing any code, then fix and verify. Enforces a no-fix-without-diagnosis discipline.",
|
|
27
27
|
"tags": [
|
|
28
28
|
"debugging",
|
|
29
|
-
"engineering"
|
|
29
|
+
"engineering",
|
|
30
|
+
"investigation",
|
|
31
|
+
"root-cause",
|
|
32
|
+
"incident",
|
|
33
|
+
"diagnosis",
|
|
34
|
+
"debug",
|
|
35
|
+
"memory"
|
|
30
36
|
]
|
|
31
37
|
},
|
|
32
38
|
{
|
|
@@ -86,7 +92,11 @@
|
|
|
86
92
|
"description": "Exercise a running app in a real browser, triage what breaks, and produce a report-only QA findings list with a health score — no code changes.",
|
|
87
93
|
"tags": [
|
|
88
94
|
"qa",
|
|
89
|
-
"testing"
|
|
95
|
+
"testing",
|
|
96
|
+
"browser",
|
|
97
|
+
"manual-test",
|
|
98
|
+
"smoke-test",
|
|
99
|
+
"playwright"
|
|
90
100
|
]
|
|
91
101
|
},
|
|
92
102
|
{
|
|
@@ -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
|
+
}
|