@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.
Files changed (147) hide show
  1. package/authoring/gstack/overlays/investigate.json +1 -0
  2. package/authoring/gstack/overlays/qa-only.json +1 -0
  3. package/authoring/gstack/wave.json +12 -2
  4. package/authoring/tactical/books/accessibility-retrofit.json +188 -0
  5. package/authoring/tactical/books/apply-review-findings.json +189 -0
  6. package/authoring/tactical/books/bug-fix-tdd.json +237 -0
  7. package/authoring/tactical/books/ci-pipeline.json +168 -0
  8. package/authoring/tactical/books/codemod-sweep.json +182 -0
  9. package/authoring/tactical/books/dependency-upgrade.json +196 -0
  10. package/authoring/tactical/books/flaky-test-fix.json +238 -0
  11. package/authoring/tactical/books/hotfix-flow.json +187 -0
  12. package/authoring/tactical/books/perf-optimization.json +219 -0
  13. package/authoring/tactical/books/refactor-module.json +217 -0
  14. package/authoring/tactical/books/schema-migration.json +192 -0
  15. package/authoring/tactical/books/test-suite-backfill.json +172 -0
  16. package/authoring/tactical/books/type-safety-pass.json +185 -0
  17. package/authoring/tactical/books/ux-update.json +178 -0
  18. package/authoring/tactical/evals/accessibility-retrofit.json +230 -0
  19. package/authoring/tactical/evals/apply-review-findings.json +290 -0
  20. package/authoring/tactical/evals/bug-fix-tdd.json +221 -0
  21. package/authoring/tactical/evals/ci-pipeline.json +227 -0
  22. package/authoring/tactical/evals/codemod-sweep.json +252 -0
  23. package/authoring/tactical/evals/dependency-upgrade.json +235 -0
  24. package/authoring/tactical/evals/flaky-test-fix.json +239 -0
  25. package/authoring/tactical/evals/hotfix-flow.json +220 -0
  26. package/authoring/tactical/evals/perf-optimization.json +235 -0
  27. package/authoring/tactical/evals/refactor-module.json +241 -0
  28. package/authoring/tactical/evals/schema-migration.json +225 -0
  29. package/authoring/tactical/evals/test-suite-backfill.json +197 -0
  30. package/authoring/tactical/evals/type-safety-pass.json +221 -0
  31. package/authoring/tactical/evals/ux-update.json +206 -0
  32. package/authoring/tactical/wave.json +89 -0
  33. package/data/chat-models/de/deepseek-r1-8b-q4/manifest.json +56 -1
  34. package/data/chat-models/gl/glm-5.2-754b-q2/manifest.json +56 -0
  35. package/data/chat-models/gp/gpt-oss-120b-q4/manifest.json +73 -1
  36. package/data/chat-models/gp/gpt-oss-20b-q4/manifest.json +77 -1
  37. package/data/chat-models/index.json +1 -1
  38. package/data/chat-models/ll/llama3.2-3b-q4/manifest.json +3 -1
  39. package/data/chat-models/mi/mistral-7b-q4/manifest.json +54 -3
  40. package/data/chat-models/mi/mistral-medium-3.5-128b-q4/manifest.json +76 -1
  41. package/data/craftbook-templates/ac/accessibility-retrofit/manifest.json +5 -4
  42. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.0/craftbook.json +451 -0
  43. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.0/test.json +231 -0
  44. package/data/craftbook-templates/al/alt-text-pass/manifest.json +5 -1
  45. package/data/craftbook-templates/ap/apply-review-findings/art.json +12 -0
  46. package/data/craftbook-templates/ap/apply-review-findings/logo.webp +0 -0
  47. package/data/craftbook-templates/ap/apply-review-findings/manifest.json +23 -0
  48. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.0/craftbook.json +436 -0
  49. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.0/test.json +291 -0
  50. package/data/craftbook-templates/br/browser-qa-audit/manifest.json +5 -1
  51. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.5/craftbook.json +438 -0
  52. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.5/test.json +379 -0
  53. package/data/craftbook-templates/bu/bug-fix-tdd/manifest.json +3 -3
  54. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.0/craftbook.json +545 -0
  55. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.0/test.json +222 -0
  56. package/data/craftbook-templates/ch/changelog-cut/manifest.json +5 -1
  57. package/data/craftbook-templates/ch/changelog-writeup/manifest.json +5 -1
  58. package/data/craftbook-templates/ci/ci-pipeline/manifest.json +5 -3
  59. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.0/craftbook.json +423 -0
  60. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.0/test.json +228 -0
  61. package/data/craftbook-templates/co/codemod-sweep/art.json +12 -0
  62. package/data/craftbook-templates/co/codemod-sweep/logo.webp +0 -0
  63. package/data/craftbook-templates/co/codemod-sweep/manifest.json +23 -0
  64. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/craftbook.json +441 -0
  65. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/test.json +253 -0
  66. package/data/craftbook-templates/de/dependency-upgrade/art.json +12 -0
  67. package/data/craftbook-templates/de/dependency-upgrade/logo.webp +0 -0
  68. package/data/craftbook-templates/de/dependency-upgrade/manifest.json +23 -0
  69. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.0/craftbook.json +459 -0
  70. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.0/test.json +236 -0
  71. package/data/craftbook-templates/fe/feature-flag-release/manifest.json +5 -1
  72. package/data/craftbook-templates/fe/feature-flag-rollout/manifest.json +4 -1
  73. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.0/craftbook.json +203 -0
  74. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.0/test.json +165 -0
  75. package/data/craftbook-templates/fl/flaky-test-fix/art.json +12 -0
  76. package/data/craftbook-templates/fl/flaky-test-fix/logo.webp +0 -0
  77. package/data/craftbook-templates/fl/flaky-test-fix/manifest.json +24 -0
  78. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.0/craftbook.json +534 -0
  79. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.0/test.json +240 -0
  80. package/data/craftbook-templates/ho/hotfix-flow/manifest.json +5 -3
  81. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.0/craftbook.json +442 -0
  82. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.0/test.json +221 -0
  83. package/data/craftbook-templates/in/investigate/manifest.json +4 -1
  84. package/data/craftbook-templates/in/investigate-root-cause/manifest.json +5 -1
  85. package/data/craftbook-templates/index.json +1 -1
  86. package/data/craftbook-templates/li/live-browser-qa/manifest.json +5 -1
  87. package/data/craftbook-templates/ni/nightly-fix-sweep/art.json +12 -0
  88. package/data/craftbook-templates/ni/nightly-fix-sweep/logo.webp +0 -0
  89. package/data/craftbook-templates/ni/nightly-fix-sweep/manifest.json +23 -0
  90. package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.0/craftbook.json +145 -0
  91. package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.0/test.json +121 -0
  92. package/data/craftbook-templates/pe/perf-audit/versions/1.1.0/craftbook.json +195 -0
  93. package/data/craftbook-templates/pe/perf-audit/versions/1.1.0/test.json +165 -0
  94. package/data/craftbook-templates/pe/perf-optimization/manifest.json +3 -3
  95. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.0/craftbook.json +511 -0
  96. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.0/test.json +236 -0
  97. package/data/craftbook-templates/qa/qa/manifest.json +3 -1
  98. package/data/craftbook-templates/re/refactor-module/manifest.json +2 -2
  99. package/data/craftbook-templates/re/refactor-module/versions/1.0.4/craftbook.json +150 -0
  100. package/data/craftbook-templates/re/refactor-module/versions/1.0.4/test.json +95 -0
  101. package/data/craftbook-templates/re/refactor-module/versions/2.0.0/craftbook.json +509 -0
  102. package/data/craftbook-templates/re/refactor-module/versions/2.0.0/test.json +242 -0
  103. package/data/craftbook-templates/re/release-notes/manifest.json +5 -1
  104. package/data/craftbook-templates/re/release-notes/versions/1.0.3/craftbook.json +220 -0
  105. package/data/craftbook-templates/re/release-notes/versions/1.0.3/test.json +114 -0
  106. package/data/craftbook-templates/re/release-pipeline-ci/manifest.json +5 -1
  107. package/data/craftbook-templates/re/release-readiness-review/versions/1.1.0/craftbook.json +192 -0
  108. package/data/craftbook-templates/re/release-readiness-review/versions/1.1.0/test.json +113 -0
  109. package/data/craftbook-templates/ro/root-cause-investigation/manifest.json +7 -1
  110. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.5/craftbook.json +433 -0
  111. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.5/test.json +157 -0
  112. package/data/craftbook-templates/sc/schema-migration/manifest.json +4 -4
  113. package/data/craftbook-templates/sc/schema-migration/versions/2.0.0/craftbook.json +459 -0
  114. package/data/craftbook-templates/sc/schema-migration/versions/2.0.0/test.json +226 -0
  115. package/data/craftbook-templates/te/test-coverage-review/versions/1.2.0/craftbook.json +195 -0
  116. package/data/craftbook-templates/te/test-coverage-review/versions/1.2.0/test.json +116 -0
  117. package/data/craftbook-templates/te/test-suite-backfill/manifest.json +1 -2
  118. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.0/craftbook.json +428 -0
  119. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.0/test.json +198 -0
  120. package/data/craftbook-templates/ty/type-safety-pass/manifest.json +3 -3
  121. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.0/craftbook.json +428 -0
  122. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.0/test.json +222 -0
  123. package/data/craftbook-templates/ux/ux-update/art.json +12 -0
  124. package/data/craftbook-templates/ux/ux-update/logo.webp +0 -0
  125. package/data/craftbook-templates/ux/ux-update/manifest.json +22 -0
  126. package/data/craftbook-templates/ux/ux-update/versions/1.0.0/craftbook.json +439 -0
  127. package/data/craftbook-templates/ux/ux-update/versions/1.0.0/test.json +207 -0
  128. package/data/craftbook-templates/ve/version-bump/versions/1.1.0/craftbook.json +206 -0
  129. package/data/craftbook-templates/ve/version-bump/versions/1.1.0/test.json +95 -0
  130. package/data/gezel-templates/bo/boekwachter/versions/1.1.0/about.md +29 -0
  131. package/data/gezel-templates/bo/boekwachter/versions/1.1.0/manifest.json +16 -0
  132. package/data/gezel-templates/bu/builder/versions/1.5.0/about.md +34 -0
  133. package/data/gezel-templates/bu/builder/versions/1.5.0/manifest.json +16 -0
  134. package/data/gezel-templates/de/developer/versions/1.5.0/about.md +34 -0
  135. package/data/gezel-templates/de/developer/versions/1.5.0/manifest.json +21 -0
  136. package/data/gezel-templates/index.json +1 -1
  137. package/data/gezel-templates/re/reviewer/versions/1.4.0/about.md +49 -0
  138. package/data/gezel-templates/re/reviewer/versions/1.4.0/manifest.json +21 -0
  139. package/data/project-types/index.json +1 -1
  140. package/data/project-types/so/software-project/manifest.json +20 -0
  141. package/data/project-types/so/software-project/versions/1.0.0/about.md +3 -0
  142. package/data/project-types/so/software-project/versions/1.0.0/manifest.json +41 -0
  143. package/data/project-types/so/software-project/versions/1.0.0/mission.md +4 -0
  144. package/package.json +1 -1
  145. package/schemas/craftbook-doc.schema.json +248 -0
  146. package/schemas/craftbook-template-version.schema.json +248 -0
  147. 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": {