@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
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "UX change with before/after proof",
|
|
4
|
+
"objective": "The craftbook drives a described UX change on a small orders page: move the bottom-of-page search into the header next to the title with an exact requested placeholder, while the / keyboard shortcut and the list-filter handler keep working. Placement, placeholder, and surviving wiring are verified mechanically against the fixed markup.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"code",
|
|
7
|
+
"ux",
|
|
8
|
+
"frontend",
|
|
9
|
+
"tactical-fleet"
|
|
10
|
+
],
|
|
11
|
+
"prompt": "Use the Implement a UX Change craftbook: nobody finds the search on the Orderboard page because it sits at the very bottom. Move the search into the header next to the title, set its placeholder to 'Search orders…', and keep the / keyboard shortcut working. The full request is in source/change-request.md.",
|
|
12
|
+
"setup": {
|
|
13
|
+
"projectName": "Orderboard",
|
|
14
|
+
"about": "A single-page order list for a small furniture shop: index.html with an inline script, plus styles.css. No build step and no test suite.",
|
|
15
|
+
"files": [
|
|
16
|
+
{
|
|
17
|
+
"path": "package.json",
|
|
18
|
+
"content": "{\n \"name\": \"orderboard\",\n \"private\": true,\n \"version\": \"1.0.0\",\n \"type\": \"module\"\n}\n"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "index.html",
|
|
22
|
+
"content": "<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>Orderboard</title>\n<link rel=\"stylesheet\" href=\"styles.css\">\n</head>\n<body>\n<header class=\"topbar\">\n <h1>Orderboard</h1>\n</header>\n<main>\n <ul id=\"orders\">\n <li>#1042 Walnut writing desk</li>\n <li>#1043 Oak bookshelf</li>\n <li>#1044 Cherry side table</li>\n <li>#1045 Maple bench</li>\n <li>#1046 Walnut picture frame</li>\n </ul>\n</main>\n<section class=\"search-row\">\n <input id=\"search\" type=\"search\" placeholder=\"Filter orders\">\n</section>\n<script>\nconst search = document.getElementById('search');\nsearch.addEventListener('input', () => {\n const q = search.value.toLowerCase();\n for (const item of document.querySelectorAll('#orders li')) {\n item.hidden = q !== '' && !item.textContent.toLowerCase().includes(q);\n }\n});\ndocument.addEventListener('keydown', (event) => {\n if (event.key === '/' && document.activeElement !== search) {\n event.preventDefault();\n search.focus();\n }\n});\n</script>\n</body>\n</html>\n"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"path": "styles.css",
|
|
26
|
+
"content": "body { margin: 0; font-family: system-ui, sans-serif; color: #1c2430; background: #f5f6f8; }\n.topbar { display: flex; align-items: center; gap: 1rem; padding: 0.75rem 1.25rem; background: #223047; color: #fff; }\n.topbar h1 { margin: 0; font-size: 1.2rem; }\nmain { max-width: 40rem; padding: 1rem 1.25rem; }\n#orders { list-style: none; padding: 0; }\n#orders li { padding: 0.5rem 0.25rem; border-bottom: 1px solid #dde1e8; }\n.search-row { padding: 1rem 1.25rem; }\n#search { padding: 0.4rem 0.6rem; width: 16rem; }\n"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"path": "source/change-request.md",
|
|
30
|
+
"content": "# Change request\n\nFrom the product owner: \"Nobody finds the search — it sits at the very bottom of the page. Move the search into the header, next to the Orderboard title. Set its placeholder to 'Search orders…'. The / keyboard shortcut people already use must keep working, and typing in the box must still filter the list.\"\n"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"path": "tests/verify-ux-update.mjs",
|
|
34
|
+
"surface": "harness",
|
|
35
|
+
"content": "import assert from 'node:assert/strict';\nimport { readFileSync } from 'node:fs';\n\nconst html = readFileSync('index.html', 'utf8');\nlet code = html;\nfor (const m of html.matchAll(/<script\\b[^>]*\\bsrc\\s*=\\s*[\"']([^\"']+)[\"']/gi)) {\n try { code += readFileSync(m[1], 'utf8'); } catch {}\n}\n\n// 1) Exactly one search input, and it lives inside the header, next to the title.\nconst inputs = [...html.matchAll(/<input\\b[^>]*>/gi)].map((m) => m[0]).filter((t) => /\\bid\\s*=\\s*[\"']search[\"']/i.test(t));\nassert.equal(inputs.length, 1, 'exactly one #search input exists');\nconst header = html.match(/<header\\b[^>]*>([\\s\\S]*?)<\\/header>/i);\nassert.ok(header, 'the header still exists');\nassert.ok(/\\bid\\s*=\\s*[\"']search[\"']/i.test(header[1]), 'the search input lives inside the header');\nassert.ok(/<h1\\b[^>]*>[^<]*Orderboard/i.test(header[1]), 'the Orderboard title is still in the header');\nconsole.log('UXUPDATE_ORACLE placement ok');\n\n// 2) The placeholder is exactly as requested.\nconst ph = inputs[0].match(/\\bplaceholder\\s*=\\s*[\"']([^\"']*)[\"']/i);\nassert.ok(ph, 'the search input has a placeholder');\nassert.equal(ph[1], 'Search orders…', 'placeholder is exactly \"Search orders…\"');\nconsole.log('UXUPDATE_ORACLE placeholder ok');\n\n// 3) The / shortcut still targets and focuses the search input.\nassert.ok(/['\"]\\/['\"]/.test(code), 'the / key hook survives');\nassert.ok(/getElementById\\(\\s*['\"]search['\"]\\s*\\)|querySelector\\(\\s*['\"]#search['\"]\\s*\\)/.test(code), 'the script still targets #search');\nassert.ok(/\\.focus\\s*\\(\\s*\\)/.test(code), 'the shortcut still focuses the search input');\nconsole.log('UXUPDATE_ORACLE shortcut ok');\n\n// 4) The list-filter behavior is still wired.\nassert.ok(/addEventListener\\s*\\(\\s*['\"]input['\"]/.test(code) || /\\boninput\\s*=/i.test(html), 'the input filter handler is still wired');\nassert.ok(/#orders/.test(code), 'the filter still targets the order list');\nconsole.log('UXUPDATE_ORACLE filter ok');\nconsole.log('UXUPDATE_ORACLE done');\n"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"craftbookParams": {
|
|
39
|
+
"workPath": "tasks/eval",
|
|
40
|
+
"scope": "Move the search into the header next to the Orderboard title, set its placeholder to 'Search orders…', and keep the / keyboard shortcut and the list filtering working; see source/change-request.md."
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"success": {
|
|
44
|
+
"summary": "The search input sits inside the header next to the title with the exact requested placeholder, the old bottom-of-page placement is gone, and the / shortcut plus the filter handler still work — with every fleet artifact present and honestly cited.",
|
|
45
|
+
"deliverables": [
|
|
46
|
+
{
|
|
47
|
+
"path": "tasks/eval/before.md",
|
|
48
|
+
"kind": "markdown-notes",
|
|
49
|
+
"artifact": true,
|
|
50
|
+
"minBytes": 500,
|
|
51
|
+
"checks": [
|
|
52
|
+
{
|
|
53
|
+
"kind": "contains",
|
|
54
|
+
"file": "tasks/eval/before.md",
|
|
55
|
+
"pattern": "^##\\s+Request[\\s\\S]*^##\\s+Current behavior[\\s\\S]*^##\\s+Surfaces involved",
|
|
56
|
+
"flags": "im",
|
|
57
|
+
"label": "before sections in order"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"kind": "citationsResolve",
|
|
61
|
+
"file": "tasks/eval/before.md",
|
|
62
|
+
"minCitations": 2,
|
|
63
|
+
"artifact": true
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"kind": "contains",
|
|
67
|
+
"file": "tasks/eval/before.md",
|
|
68
|
+
"pattern": "index\\.html",
|
|
69
|
+
"label": "names the real page"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"path": "tasks/eval/fix-notes.md",
|
|
75
|
+
"kind": "markdown-notes",
|
|
76
|
+
"artifact": true,
|
|
77
|
+
"minBytes": 700,
|
|
78
|
+
"checks": [
|
|
79
|
+
{
|
|
80
|
+
"kind": "contains",
|
|
81
|
+
"file": "tasks/eval/fix-notes.md",
|
|
82
|
+
"pattern": "^##\\s+Problem[\\s\\S]*^##\\s+Change[\\s\\S]*^##\\s+Files touched[\\s\\S]*^##\\s+Consistency notes[\\s\\S]*^##\\s+Risk[\\s\\S]*^##\\s+How to verify",
|
|
83
|
+
"flags": "im",
|
|
84
|
+
"label": "fix-notes sections in order"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"kind": "citationsResolve",
|
|
88
|
+
"file": "tasks/eval/fix-notes.md",
|
|
89
|
+
"minCitations": 2,
|
|
90
|
+
"artifact": true
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"path": "tasks/eval/validation.md",
|
|
96
|
+
"kind": "markdown-notes",
|
|
97
|
+
"artifact": true,
|
|
98
|
+
"minBytes": 500,
|
|
99
|
+
"checks": [
|
|
100
|
+
{
|
|
101
|
+
"kind": "contains",
|
|
102
|
+
"file": "tasks/eval/validation.md",
|
|
103
|
+
"pattern": "^##\\s+Before\\s*/\\s*after[\\s\\S]*^##\\s+What was exercised[\\s\\S]*^##\\s+Result",
|
|
104
|
+
"flags": "im",
|
|
105
|
+
"label": "validation sections in order"
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"path": "tasks/eval/review.md",
|
|
111
|
+
"kind": "markdown-report",
|
|
112
|
+
"artifact": true,
|
|
113
|
+
"minBytes": 400,
|
|
114
|
+
"checks": [
|
|
115
|
+
{
|
|
116
|
+
"kind": "contains",
|
|
117
|
+
"file": "tasks/eval/review.md",
|
|
118
|
+
"pattern": "Verdict:\\s*(?:PASS|REVISE)",
|
|
119
|
+
"flags": "i",
|
|
120
|
+
"label": "explicit reviewer verdict"
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
"checks": [
|
|
126
|
+
{
|
|
127
|
+
"kind": "notContains",
|
|
128
|
+
"file": "index.html",
|
|
129
|
+
"pattern": "placeholder=[\"']Filter orders[\"']",
|
|
130
|
+
"label": "the old bottom-of-page search placeholder is gone"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"kind": "htmlLint",
|
|
134
|
+
"file": "index.html"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"kind": "nodeScriptPasses",
|
|
138
|
+
"script": "tests/verify-ux-update.mjs",
|
|
139
|
+
"timeoutMs": 60000,
|
|
140
|
+
"requiredOutput": [
|
|
141
|
+
{
|
|
142
|
+
"pattern": "UXUPDATE_ORACLE placement ok",
|
|
143
|
+
"label": "search moved into the header next to the title"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"pattern": "UXUPDATE_ORACLE placeholder ok",
|
|
147
|
+
"label": "placeholder is exactly as requested"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"pattern": "UXUPDATE_ORACLE shortcut ok",
|
|
151
|
+
"label": "the / shortcut still focuses the search"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"pattern": "UXUPDATE_ORACLE filter ok",
|
|
155
|
+
"label": "the list filter is still wired"
|
|
156
|
+
}
|
|
157
|
+
]
|
|
158
|
+
}
|
|
159
|
+
],
|
|
160
|
+
"taskNotes": {
|
|
161
|
+
"minBytes": 120,
|
|
162
|
+
"checks": [
|
|
163
|
+
{
|
|
164
|
+
"kind": "contains",
|
|
165
|
+
"file": "task-notes.md",
|
|
166
|
+
"pattern": "\\bDONE\\b[\\s\\S]*(validation\\.md|fix-notes\\.md|before\\.md)",
|
|
167
|
+
"flags": "i",
|
|
168
|
+
"label": "DONE note names the deliverables"
|
|
169
|
+
}
|
|
170
|
+
]
|
|
171
|
+
},
|
|
172
|
+
"taskGraph": {
|
|
173
|
+
"requireCraftbookTask": true,
|
|
174
|
+
"requireTerminalStep": true
|
|
175
|
+
},
|
|
176
|
+
"unchangedFixtures": [
|
|
177
|
+
"package.json",
|
|
178
|
+
"source/change-request.md"
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
"rubric": {
|
|
182
|
+
"artifact": {
|
|
183
|
+
"path": "tasks/eval/fix-notes.md",
|
|
184
|
+
"kind": "markdown"
|
|
185
|
+
},
|
|
186
|
+
"axes": [
|
|
187
|
+
{
|
|
188
|
+
"name": "Request fidelity",
|
|
189
|
+
"description": "The delivered change is what was asked, judged as a user would: search in the header next to the title, the exact placeholder, nothing extra smuggled in."
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"name": "Convention respect",
|
|
193
|
+
"description": "The edit reuses the page's existing structure, naming, and style patterns — the topbar's own layout — rather than inventing a new one-off style."
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"name": "Behavior preservation with honest verification",
|
|
197
|
+
"description": "The / shortcut and the input filter still work after the move, and validation separates what was inspected in the code from what was actually exercised."
|
|
198
|
+
}
|
|
199
|
+
]
|
|
200
|
+
},
|
|
201
|
+
"qualityFocus": [
|
|
202
|
+
"before/after grounded in real markup",
|
|
203
|
+
"existing behaviors preserved",
|
|
204
|
+
"enforced review loop"
|
|
205
|
+
]
|
|
206
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"books": [
|
|
4
|
+
{
|
|
5
|
+
"id": "bug-fix-tdd",
|
|
6
|
+
"version": "2.0.0",
|
|
7
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
8
|
+
"minGezelVersion": "1.26236"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "hotfix-flow",
|
|
12
|
+
"version": "2.0.0",
|
|
13
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
14
|
+
"minGezelVersion": "1.26236"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "flaky-test-fix",
|
|
18
|
+
"version": "1.0.0",
|
|
19
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
20
|
+
"minGezelVersion": "1.26236"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "apply-review-findings",
|
|
24
|
+
"version": "1.0.0",
|
|
25
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
26
|
+
"minGezelVersion": "1.26236"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "accessibility-retrofit",
|
|
30
|
+
"version": "2.0.0",
|
|
31
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
32
|
+
"minGezelVersion": "1.26236"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "ux-update",
|
|
36
|
+
"version": "1.0.0",
|
|
37
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
38
|
+
"minGezelVersion": "1.26236"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "refactor-module",
|
|
42
|
+
"version": "2.0.0",
|
|
43
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
44
|
+
"minGezelVersion": "1.26236"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "perf-optimization",
|
|
48
|
+
"version": "2.0.0",
|
|
49
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
50
|
+
"minGezelVersion": "1.26236"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "type-safety-pass",
|
|
54
|
+
"version": "2.0.0",
|
|
55
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
56
|
+
"minGezelVersion": "1.26236"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "dependency-upgrade",
|
|
60
|
+
"version": "1.0.0",
|
|
61
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
62
|
+
"minGezelVersion": "1.26236"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "schema-migration",
|
|
66
|
+
"version": "2.0.0",
|
|
67
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
68
|
+
"minGezelVersion": "1.26236"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"id": "codemod-sweep",
|
|
72
|
+
"version": "1.0.0",
|
|
73
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
74
|
+
"minGezelVersion": "1.26236"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "test-suite-backfill",
|
|
78
|
+
"version": "2.0.0",
|
|
79
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
80
|
+
"minGezelVersion": "1.26236"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "ci-pipeline",
|
|
84
|
+
"version": "2.0.0",
|
|
85
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
86
|
+
"minGezelVersion": "1.26236"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
@@ -42,7 +42,9 @@
|
|
|
42
42
|
"postActionThreshold": 1200
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
|
-
"mcp.compact-tool-schemas"
|
|
45
|
+
"mcp.compact-tool-schemas",
|
|
46
|
+
"mcp.relax-required-fields",
|
|
47
|
+
"mcp.default-missing-fields"
|
|
46
48
|
],
|
|
47
49
|
"ollama": {
|
|
48
50
|
"tag": "deepseek-r1:8b"
|
|
@@ -106,6 +108,59 @@
|
|
|
106
108
|
"reasoning": {
|
|
107
109
|
"enableThinking": true,
|
|
108
110
|
"thinkingBudget": 512
|
|
111
|
+
},
|
|
112
|
+
"profiles": {
|
|
113
|
+
"thinking-general": {
|
|
114
|
+
"sampling": {
|
|
115
|
+
"temperature": 0.6,
|
|
116
|
+
"topP": 0.95
|
|
117
|
+
},
|
|
118
|
+
"reasoning": {
|
|
119
|
+
"enableThinking": true,
|
|
120
|
+
"thinkingBudget": 512
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"thinking-coding": {
|
|
124
|
+
"sampling": {
|
|
125
|
+
"temperature": 0.4,
|
|
126
|
+
"topP": 0.9,
|
|
127
|
+
"repetitionPenalty": 1.05
|
|
128
|
+
},
|
|
129
|
+
"reasoning": {
|
|
130
|
+
"enableThinking": true,
|
|
131
|
+
"thinkingBudget": 512
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"thinking-precise": {
|
|
135
|
+
"sampling": {
|
|
136
|
+
"temperature": 0.2,
|
|
137
|
+
"topP": 0.9,
|
|
138
|
+
"seed": 0,
|
|
139
|
+
"repetitionPenalty": 1.05
|
|
140
|
+
},
|
|
141
|
+
"reasoning": {
|
|
142
|
+
"enableThinking": true,
|
|
143
|
+
"thinkingBudget": 512
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"instruct": {
|
|
147
|
+
"sampling": {
|
|
148
|
+
"temperature": 0.6,
|
|
149
|
+
"topP": 0.95
|
|
150
|
+
},
|
|
151
|
+
"reasoning": {
|
|
152
|
+
"enableThinking": false
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"creative": {
|
|
156
|
+
"sampling": {
|
|
157
|
+
"temperature": 0.9,
|
|
158
|
+
"topP": 0.95
|
|
159
|
+
},
|
|
160
|
+
"reasoning": {
|
|
161
|
+
"enableThinking": false
|
|
162
|
+
}
|
|
163
|
+
}
|
|
109
164
|
}
|
|
110
165
|
}
|
|
111
166
|
}
|
|
@@ -52,6 +52,62 @@
|
|
|
52
52
|
"reasoning": {
|
|
53
53
|
"enableThinking": true,
|
|
54
54
|
"thinkingBudget": 4096
|
|
55
|
+
},
|
|
56
|
+
"profiles": {
|
|
57
|
+
"thinking-general": {
|
|
58
|
+
"sampling": {
|
|
59
|
+
"temperature": 1,
|
|
60
|
+
"topP": 0.95,
|
|
61
|
+
"maxTokens": 16384
|
|
62
|
+
},
|
|
63
|
+
"reasoning": {
|
|
64
|
+
"enableThinking": true,
|
|
65
|
+
"thinkingBudget": 4096
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"thinking-coding": {
|
|
69
|
+
"sampling": {
|
|
70
|
+
"temperature": 1,
|
|
71
|
+
"topP": 0.95,
|
|
72
|
+
"maxTokens": 16384
|
|
73
|
+
},
|
|
74
|
+
"reasoning": {
|
|
75
|
+
"enableThinking": true,
|
|
76
|
+
"thinkingBudget": 4096
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"thinking-precise": {
|
|
80
|
+
"sampling": {
|
|
81
|
+
"temperature": 1,
|
|
82
|
+
"topP": 0.95,
|
|
83
|
+
"seed": 0,
|
|
84
|
+
"maxTokens": 8192
|
|
85
|
+
},
|
|
86
|
+
"reasoning": {
|
|
87
|
+
"enableThinking": true,
|
|
88
|
+
"thinkingBudget": 4096
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"instruct": {
|
|
92
|
+
"sampling": {
|
|
93
|
+
"temperature": 0.7,
|
|
94
|
+
"topP": 1,
|
|
95
|
+
"maxTokens": 4096
|
|
96
|
+
},
|
|
97
|
+
"reasoning": {
|
|
98
|
+
"enableThinking": false
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"creative": {
|
|
102
|
+
"sampling": {
|
|
103
|
+
"temperature": 1,
|
|
104
|
+
"topP": 0.95,
|
|
105
|
+
"maxTokens": 8192
|
|
106
|
+
},
|
|
107
|
+
"reasoning": {
|
|
108
|
+
"enableThinking": false
|
|
109
|
+
}
|
|
110
|
+
}
|
|
55
111
|
}
|
|
56
112
|
},
|
|
57
113
|
"ds4": {
|
|
@@ -39,8 +39,80 @@
|
|
|
39
39
|
"turn.preamble-folding"
|
|
40
40
|
],
|
|
41
41
|
"tuning": {
|
|
42
|
+
"sampling": {
|
|
43
|
+
"maxTokens": 8192
|
|
44
|
+
},
|
|
42
45
|
"reasoning": {
|
|
43
|
-
"effort": "medium"
|
|
46
|
+
"effort": "medium",
|
|
47
|
+
"templateKwargs": {
|
|
48
|
+
"reasoning_effort": "medium"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"profiles": {
|
|
52
|
+
"thinking-general": {
|
|
53
|
+
"sampling": {
|
|
54
|
+
"maxTokens": 8192
|
|
55
|
+
},
|
|
56
|
+
"reasoning": {
|
|
57
|
+
"effort": "medium",
|
|
58
|
+
"templateKwargs": {
|
|
59
|
+
"reasoning_effort": "medium"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"thinking-deep": {
|
|
64
|
+
"reasoning": {
|
|
65
|
+
"effort": "high",
|
|
66
|
+
"templateKwargs": {
|
|
67
|
+
"reasoning_effort": "high"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"thinking-coding": {
|
|
72
|
+
"sampling": {
|
|
73
|
+
"maxTokens": 16384
|
|
74
|
+
},
|
|
75
|
+
"reasoning": {
|
|
76
|
+
"effort": "high",
|
|
77
|
+
"templateKwargs": {
|
|
78
|
+
"reasoning_effort": "high"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"thinking-precise": {
|
|
83
|
+
"sampling": {
|
|
84
|
+
"seed": 0,
|
|
85
|
+
"maxTokens": 8192
|
|
86
|
+
},
|
|
87
|
+
"reasoning": {
|
|
88
|
+
"effort": "medium",
|
|
89
|
+
"templateKwargs": {
|
|
90
|
+
"reasoning_effort": "medium"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"instruct": {
|
|
95
|
+
"sampling": {
|
|
96
|
+
"maxTokens": 4096
|
|
97
|
+
},
|
|
98
|
+
"reasoning": {
|
|
99
|
+
"effort": "low",
|
|
100
|
+
"templateKwargs": {
|
|
101
|
+
"reasoning_effort": "low"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"creative": {
|
|
106
|
+
"sampling": {
|
|
107
|
+
"maxTokens": 8192
|
|
108
|
+
},
|
|
109
|
+
"reasoning": {
|
|
110
|
+
"effort": "low",
|
|
111
|
+
"templateKwargs": {
|
|
112
|
+
"reasoning_effort": "low"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
44
116
|
}
|
|
45
117
|
},
|
|
46
118
|
"ollama": {
|
|
@@ -105,9 +105,85 @@
|
|
|
105
105
|
]
|
|
106
106
|
},
|
|
107
107
|
"tuning": {
|
|
108
|
+
"sampling": {
|
|
109
|
+
"maxTokens": 8192
|
|
110
|
+
},
|
|
108
111
|
"reasoning": {
|
|
109
112
|
"effort": "medium",
|
|
110
|
-
"thinkingBudget": 6144
|
|
113
|
+
"thinkingBudget": 6144,
|
|
114
|
+
"templateKwargs": {
|
|
115
|
+
"reasoning_effort": "medium"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"profiles": {
|
|
119
|
+
"thinking-general": {
|
|
120
|
+
"sampling": {
|
|
121
|
+
"maxTokens": 8192
|
|
122
|
+
},
|
|
123
|
+
"reasoning": {
|
|
124
|
+
"effort": "medium",
|
|
125
|
+
"thinkingBudget": 6144,
|
|
126
|
+
"templateKwargs": {
|
|
127
|
+
"reasoning_effort": "medium"
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"thinking-deep": {
|
|
132
|
+
"reasoning": {
|
|
133
|
+
"effort": "high",
|
|
134
|
+
"thinkingBudget": 6144,
|
|
135
|
+
"templateKwargs": {
|
|
136
|
+
"reasoning_effort": "high"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"thinking-coding": {
|
|
141
|
+
"sampling": {
|
|
142
|
+
"maxTokens": 16384
|
|
143
|
+
},
|
|
144
|
+
"reasoning": {
|
|
145
|
+
"effort": "high",
|
|
146
|
+
"thinkingBudget": 6144,
|
|
147
|
+
"templateKwargs": {
|
|
148
|
+
"reasoning_effort": "high"
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
"thinking-precise": {
|
|
153
|
+
"sampling": {
|
|
154
|
+
"seed": 0,
|
|
155
|
+
"maxTokens": 8192
|
|
156
|
+
},
|
|
157
|
+
"reasoning": {
|
|
158
|
+
"effort": "medium",
|
|
159
|
+
"thinkingBudget": 6144,
|
|
160
|
+
"templateKwargs": {
|
|
161
|
+
"reasoning_effort": "medium"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"instruct": {
|
|
166
|
+
"sampling": {
|
|
167
|
+
"maxTokens": 4096
|
|
168
|
+
},
|
|
169
|
+
"reasoning": {
|
|
170
|
+
"effort": "low",
|
|
171
|
+
"templateKwargs": {
|
|
172
|
+
"reasoning_effort": "low"
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
"creative": {
|
|
177
|
+
"sampling": {
|
|
178
|
+
"maxTokens": 8192
|
|
179
|
+
},
|
|
180
|
+
"reasoning": {
|
|
181
|
+
"effort": "low",
|
|
182
|
+
"templateKwargs": {
|
|
183
|
+
"reasoning_effort": "low"
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
111
187
|
}
|
|
112
188
|
},
|
|
113
189
|
"evalHints": {
|