@bendyline/gilde 0.1.16 → 0.1.18
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/README.md +5 -1
- package/authoring/gstack/LICENSE.gstack +21 -0
- package/authoring/gstack/README.md +50 -0
- package/authoring/gstack/evals/cso.json +152 -0
- package/authoring/gstack/evals/design-consultation.json +201 -0
- package/authoring/gstack/evals/document-generate.json +174 -0
- package/authoring/gstack/evals/investigate.json +153 -0
- package/authoring/gstack/evals/office-hours.json +141 -0
- package/authoring/gstack/evals/plan-ceo-review.json +135 -0
- package/authoring/gstack/evals/qa-only.json +376 -0
- package/authoring/gstack/evals/retro.json +191 -0
- package/authoring/gstack/evals/spec.json +162 -0
- package/authoring/gstack/overlays/cso.json +132 -0
- package/authoring/gstack/overlays/design-consultation.json +153 -0
- package/authoring/gstack/overlays/document-generate.json +124 -0
- package/authoring/gstack/overlays/investigate.json +128 -0
- package/authoring/gstack/overlays/office-hours.json +119 -0
- package/authoring/gstack/overlays/plan-ceo-review.json +128 -0
- package/authoring/gstack/overlays/qa-only.json +145 -0
- package/authoring/gstack/overlays/retro.json +132 -0
- package/authoring/gstack/overlays/spec.json +140 -0
- package/authoring/gstack/persona-drafts/cso.about.md +9 -0
- package/authoring/gstack/persona-drafts/design-consultation.about.md +9 -0
- package/authoring/gstack/persona-drafts/office-hours.about.md +9 -0
- package/authoring/gstack/persona-drafts/qa-only.about.md +5 -0
- package/authoring/gstack/persona-drafts/spec.about.md +26 -0
- package/authoring/gstack/snapshots/cso/SKILL.md +1285 -0
- package/authoring/gstack/snapshots/design-consultation/SKILL.md +1230 -0
- package/authoring/gstack/snapshots/document-generate/SKILL.md +1252 -0
- package/authoring/gstack/snapshots/investigate/SKILL.md +1074 -0
- package/authoring/gstack/snapshots/office-hours/SKILL.md +1697 -0
- package/authoring/gstack/snapshots/plan-ceo-review/SKILL.md +1476 -0
- package/authoring/gstack/snapshots/qa-only/SKILL.md +1256 -0
- package/authoring/gstack/snapshots/retro/SKILL.md +1812 -0
- package/authoring/gstack/snapshots/spec/SKILL.md +2359 -0
- package/authoring/gstack/wave.json +103 -0
- package/data/connector-types/gi/github-releases/manifest.json +17 -0
- package/data/connector-types/gi/github-releases/versions/1.0.0/manifest.json +71 -0
- package/data/connector-types/index.json +1 -1
- package/data/craftbook-templates/br/branding-website/versions/1.1.0/craftbook.json +190 -0
- package/data/craftbook-templates/br/branding-website/versions/1.1.0/test.json +164 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.0/craftbook.json +358 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.0/test.json +376 -0
- package/data/craftbook-templates/ca/careful-mode/versions/1.1.0/craftbook.json +43 -0
- package/data/craftbook-templates/ca/careful-mode/versions/1.1.0/test.json +110 -0
- package/data/craftbook-templates/ca/careful-mode/versions/1.2.0/craftbook.json +43 -0
- package/data/craftbook-templates/ca/careful-mode/versions/1.2.0/test.json +110 -0
- package/data/craftbook-templates/co/content-deck/versions/1.1.0/craftbook.json +185 -0
- package/data/craftbook-templates/co/content-deck/versions/1.1.0/test.json +166 -0
- package/data/craftbook-templates/co/content-deck/versions/1.2.0/craftbook.json +185 -0
- package/data/craftbook-templates/co/content-deck/versions/1.2.0/test.json +169 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.1.0/craftbook.json +189 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.1.0/test.json +182 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.0/craftbook.json +189 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.0/test.json +187 -0
- package/data/craftbook-templates/de/design-system-consultation/versions/2.0.0/craftbook.json +385 -0
- package/data/craftbook-templates/de/design-system-consultation/versions/2.0.0/test.json +201 -0
- package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.0/craftbook.json +353 -0
- package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.0/test.json +191 -0
- package/data/craftbook-templates/ex/executive-level-review/versions/2.0.0/craftbook.json +347 -0
- package/data/craftbook-templates/ex/executive-level-review/versions/2.0.0/test.json +135 -0
- package/data/craftbook-templates/fr/freeze-scope/versions/1.2.0/craftbook.json +50 -0
- package/data/craftbook-templates/fr/freeze-scope/versions/1.2.0/test.json +131 -0
- package/data/craftbook-templates/fr/freeze-scope/versions/1.3.0/craftbook.json +50 -0
- package/data/craftbook-templates/fr/freeze-scope/versions/1.3.0/test.json +131 -0
- package/data/craftbook-templates/ht/html-arcade-game/versions/1.1.0/craftbook.json +197 -0
- package/data/craftbook-templates/ht/html-arcade-game/versions/1.1.0/test.json +173 -0
- package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.0/craftbook.json +197 -0
- package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.0/test.json +176 -0
- package/data/craftbook-templates/id/idea-office-hours/versions/2.0.0/craftbook.json +333 -0
- package/data/craftbook-templates/id/idea-office-hours/versions/2.0.0/test.json +141 -0
- package/data/craftbook-templates/im/image-set-index/versions/1.1.0/craftbook.json +163 -0
- package/data/craftbook-templates/im/image-set-index/versions/1.1.0/test.json +177 -0
- package/data/craftbook-templates/im/image-set-index/versions/1.2.0/craftbook.json +163 -0
- package/data/craftbook-templates/im/image-set-index/versions/1.2.0/test.json +180 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.6.0/craftbook.json +257 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.6.0/test.json +225 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/art.json +13 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/logo.webp +0 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/manifest.json +24 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.0/craftbook.json +202 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.0/test.json +138 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.0/craftbook.json +348 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.0/test.json +153 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/2.0.0/craftbook.json +353 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/2.0.0/test.json +152 -0
- package/data/craftbook-templates/sp/spec-authoring/versions/2.0.0/craftbook.json +391 -0
- package/data/craftbook-templates/sp/spec-authoring/versions/2.0.0/test.json +162 -0
- package/data/craftbook-templates/te/technical-documentation/versions/2.0.0/craftbook.json +343 -0
- package/data/craftbook-templates/te/technical-documentation/versions/2.0.0/test.json +174 -0
- package/data/craftbook-templates/tr/translate-content/versions/1.1.0/craftbook.json +84 -0
- package/data/craftbook-templates/tr/translate-content/versions/1.1.0/test.json +141 -0
- package/package.json +8 -4
- package/schemas/craftbook-test.schema.json +232 -3
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Browser QA Audit — Harbor signup fixture",
|
|
4
|
+
"objective": "Exercise the Browser QA Audit craftbook against a self-contained workspace page with deterministic functional, console, accessibility, link, and responsive defects.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"workflow",
|
|
7
|
+
"browser",
|
|
8
|
+
"qa",
|
|
9
|
+
"html-page"
|
|
10
|
+
],
|
|
11
|
+
"prompt": "Use the Browser QA Audit craftbook in report-only mode. The running target is the Gezel workspace preview URL `file:///workspace/fixtures/signup.html`; navigate to that exact URL with the configured browser tools. Test it as a user at 1280x720 and 375x812 using `source/expected-behavior.md` as the product contract. Exercise the menu, empty and valid form submissions, keyboard focus, and the Help link; inspect console errors and take evidence screenshots. Retry every suspected defect once. Do not read or edit the HTML source during the audit and do not fix anything. Produce the workflow plan, browser evidence, `qa/baseline.json`, and `qa/browser-qa-report.md`.",
|
|
12
|
+
"setup": {
|
|
13
|
+
"projectName": "Harbor signup browser QA",
|
|
14
|
+
"about": "A self-contained report-only QA evaluation. The HTML fixture is served through Gezel's workspace preview mapping; no external URL, credential, or live service is needed.",
|
|
15
|
+
"missionObjectives": "Run the Browser QA Audit craftbook as a real task, use actual browser tools on file:///workspace/fixtures/signup.html, capture reproducible evidence, and leave the fixture unchanged.",
|
|
16
|
+
"files": [
|
|
17
|
+
{
|
|
18
|
+
"path": "source/expected-behavior.md",
|
|
19
|
+
"content": "# Signup acceptance brief\n\n- The Menu button reveals and hides the navigation links.\n- Email is required. Empty or malformed email submission must show an inline validation error and must not show success.\n- A valid address such as `crew@example.com` shows `Welcome aboard` after submission.\n- Help opens a real help destination rather than a missing page.\n- The form is usable with keyboard alone and every focused control has a visible focus indicator.\n- At 375x812 there is no horizontal page overflow.\n- A clean user journey emits no console errors.\n\nDo not inspect implementation source during black-box QA.\n"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"path": "fixtures/signup.html",
|
|
23
|
+
"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>Harbor Crew Signup</title>\n<style>\nbody{margin:0;background:#f6f7f8;color:#334;font:16px Arial,sans-serif}header{background:#10233f;color:#fff;padding:18px}.shell{width:980px;margin:32px auto;background:#fff;padding:24px}.muted{color:#c2c5ca}button,a,input{font:inherit}button:focus,a:focus,input:focus{outline:none}.nav{display:none}.card{border:1px solid #dde1e6;padding:20px}input{display:block;width:360px;padding:10px;margin:8px 0}.success{display:none;color:#16783b}a{color:#d97706}\n</style>\n</head>\n<body>\n<header><strong>Harbor Crew</strong> <span class=\"muted\">Shift updates without noise</span></header>\n<main class=\"shell\">\n<button id=\"menu\">Menu</button>\n<nav class=\"nav\"><a href=\"#signup\">Signup</a> <a href=\"missing-help.html\">Help</a></nav>\n<section class=\"card\" id=\"signup\">\n<h1>Join shift updates</h1>\n<p>One concise email before every assignment window.</p>\n<form id=\"signup-form\">\n<input id=\"email\" type=\"text\" placeholder=\"you@example.com\">\n<button type=\"submit\">Join</button>\n</form>\n<p class=\"success\" id=\"success\">Welcome aboard</p>\n</section>\n</main>\n<script>\nconsole.error('fixture-console-error: signup analytics failed');\ndocument.querySelector('#signup-form').addEventListener('submit',event=>{event.preventDefault();document.querySelector('#success').style.display='block'});\n</script>\n</body>\n</html>\n",
|
|
24
|
+
"modelInput": false
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"mocks": [
|
|
29
|
+
{
|
|
30
|
+
"kind": "mcp",
|
|
31
|
+
"id": "playwright",
|
|
32
|
+
"description": "Hermetic black-box browser simulator for the seeded Harbor signup page. It records real MCP tool calls while returning deterministic observations from the fixed fixture.",
|
|
33
|
+
"toolsetId": "@playwright/mcp",
|
|
34
|
+
"tools": [
|
|
35
|
+
{
|
|
36
|
+
"name": "browser_navigate",
|
|
37
|
+
"description": "Navigate to a URL. Use file:///workspace/fixtures/signup.html for this audit.",
|
|
38
|
+
"resultTemplate": {
|
|
39
|
+
"url": "file:///workspace/fixtures/signup.html",
|
|
40
|
+
"title": "Harbor Crew Signup",
|
|
41
|
+
"status": "loaded",
|
|
42
|
+
"viewport": "1280x720"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "browser_resize",
|
|
47
|
+
"description": "Set the browser viewport width and height before repeating a journey.",
|
|
48
|
+
"resultSequence": [
|
|
49
|
+
{
|
|
50
|
+
"status": "viewport updated",
|
|
51
|
+
"viewport": "1280x720"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"status": "viewport updated",
|
|
55
|
+
"viewport": "375x812",
|
|
56
|
+
"horizontalOverflow": "980px shell exceeds the 375px viewport"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "browser_snapshot",
|
|
62
|
+
"description": "Return the current page accessibility snapshot and visible state. Call after each interaction and on each viewport.",
|
|
63
|
+
"resultSequence": [
|
|
64
|
+
{
|
|
65
|
+
"state": "desktop initial",
|
|
66
|
+
"heading": "Join shift updates",
|
|
67
|
+
"controls": [
|
|
68
|
+
"Menu button",
|
|
69
|
+
"email textbox",
|
|
70
|
+
"Join button"
|
|
71
|
+
],
|
|
72
|
+
"focusIndicator": "none on button, link, and input"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"state": "after menu attempt 1",
|
|
76
|
+
"navigation": "still hidden"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"state": "after menu retry",
|
|
80
|
+
"navigation": "still hidden"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"state": "after empty submit",
|
|
84
|
+
"email": "",
|
|
85
|
+
"inlineError": null,
|
|
86
|
+
"success": "Welcome aboard is visible"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"state": "after malformed submit retry",
|
|
90
|
+
"email": "not-an-email",
|
|
91
|
+
"inlineError": null,
|
|
92
|
+
"success": "Welcome aboard is visible"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"state": "mobile and help",
|
|
96
|
+
"viewport": "375x812",
|
|
97
|
+
"horizontalOverflow": "980px shell exceeds viewport",
|
|
98
|
+
"helpTarget": "missing-help.html"
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"name": "browser_click",
|
|
104
|
+
"description": "Activate a referenced control. Repeat suspected defects once and record expected versus actual behavior.",
|
|
105
|
+
"resultSequence": [
|
|
106
|
+
{
|
|
107
|
+
"action": "menu attempt 1 recorded"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"action": "menu retry recorded"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"action": "empty submission attempt 1 recorded"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"action": "empty or malformed submission retry recorded"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"action": "valid crew@example.com submission recorded"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"action": "Help link activation recorded",
|
|
123
|
+
"destination": "missing-help.html"
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "browser_type",
|
|
129
|
+
"description": "Enter text into the email field for invalid and valid submission journeys.",
|
|
130
|
+
"resultSequence": [
|
|
131
|
+
{
|
|
132
|
+
"status": "text entered",
|
|
133
|
+
"valueClass": "malformed-email"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"status": "text entered",
|
|
137
|
+
"valueClass": "valid-email"
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "browser_console_messages",
|
|
143
|
+
"description": "Read console messages emitted by the current page.",
|
|
144
|
+
"resultTemplate": {
|
|
145
|
+
"messages": [
|
|
146
|
+
"error: fixture-console-error: signup analytics failed"
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"name": "browser_take_screenshot",
|
|
152
|
+
"description": "Capture a screenshot to a distinct workspace-relative PNG path beneath qa/screenshots/.",
|
|
153
|
+
"resultTemplate": {
|
|
154
|
+
"saved": true
|
|
155
|
+
},
|
|
156
|
+
"writeFixture": {
|
|
157
|
+
"surface": "workspace",
|
|
158
|
+
"pathArgument": "path",
|
|
159
|
+
"fixture": "minimal-png"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"success": {
|
|
166
|
+
"taskGraph": {
|
|
167
|
+
"requireCraftbookTask": true,
|
|
168
|
+
"requireTerminalStep": true
|
|
169
|
+
},
|
|
170
|
+
"summary": "The real craftbook uses browser tools, preserves the fixture, and reports reproducible functional, console, link, accessibility, and mobile defects with transparent scoring.",
|
|
171
|
+
"deliverables": [
|
|
172
|
+
{
|
|
173
|
+
"path": "qa/browser-evidence.md",
|
|
174
|
+
"kind": "markdown-report",
|
|
175
|
+
"minBytes": 1000,
|
|
176
|
+
"checks": [
|
|
177
|
+
{
|
|
178
|
+
"kind": "contains",
|
|
179
|
+
"file": "qa/browser-evidence.md",
|
|
180
|
+
"pattern": "^#{1,3}\\s+Run metadata\\b[\\s\\S]*^#{1,3}\\s+Journey results\\b[\\s\\S]*^#{1,3}\\s+Console\\b[\\s\\S]*^#{1,3}\\s+Responsive and accessibility\\b[\\s\\S]*^#{1,3}\\s+Evidence index\\b",
|
|
181
|
+
"flags": "im",
|
|
182
|
+
"label": "complete browser evidence structure"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"kind": "contains",
|
|
186
|
+
"file": "qa/browser-evidence.md",
|
|
187
|
+
"pattern": "1280\\s*[x×]\\s*720[\\s\\S]*375\\s*[x×]\\s*812|375\\s*[x×]\\s*812[\\s\\S]*1280\\s*[x×]\\s*720",
|
|
188
|
+
"flags": "i",
|
|
189
|
+
"label": "both required viewports exercised"
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"path": "qa/baseline.json",
|
|
195
|
+
"kind": "json",
|
|
196
|
+
"minBytes": 250,
|
|
197
|
+
"checks": [
|
|
198
|
+
{
|
|
199
|
+
"kind": "sniff",
|
|
200
|
+
"file": "qa/baseline.json",
|
|
201
|
+
"sniff": "json-valid"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"kind": "contains",
|
|
205
|
+
"file": "qa/baseline.json",
|
|
206
|
+
"pattern": "healthScore[\\s\\S]*issues[\\s\\S]*(console|functional|accessibility|responsive)",
|
|
207
|
+
"flags": "i",
|
|
208
|
+
"label": "machine-readable score and categorized issues"
|
|
209
|
+
}
|
|
210
|
+
]
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"path": "qa/browser-qa-report.md",
|
|
214
|
+
"kind": "markdown-report",
|
|
215
|
+
"minBytes": 1500,
|
|
216
|
+
"checks": [
|
|
217
|
+
{
|
|
218
|
+
"kind": "contains",
|
|
219
|
+
"file": "qa/browser-qa-report.md",
|
|
220
|
+
"pattern": "^#{1,3}\\s+Executive summary\\b[\\s\\S]*^#{1,3}\\s+Coverage\\b[\\s\\S]*^#{1,3}\\s+Findings\\b[\\s\\S]*^#{1,3}\\s+Console health\\b[\\s\\S]*^#{1,3}\\s+Health score\\b[\\s\\S]*^#{1,3}\\s+Top three fixes\\b",
|
|
221
|
+
"flags": "im",
|
|
222
|
+
"label": "complete QA report structure"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"kind": "contains",
|
|
226
|
+
"file": "qa/browser-qa-report.md",
|
|
227
|
+
"pattern": "fixture-console-error",
|
|
228
|
+
"flags": "i",
|
|
229
|
+
"label": "observed console failure"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"kind": "contains",
|
|
233
|
+
"file": "qa/browser-qa-report.md",
|
|
234
|
+
"pattern": "empty[\\s\\S]*(email|form)[\\s\\S]*(success|Welcome aboard)|(success|Welcome aboard)[\\s\\S]*empty[\\s\\S]*(email|form)",
|
|
235
|
+
"flags": "i",
|
|
236
|
+
"label": "empty submission false-success defect"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"kind": "contains",
|
|
240
|
+
"file": "qa/browser-qa-report.md",
|
|
241
|
+
"pattern": "Menu[\\s\\S]*(does not|doesn't|fails|no change|hidden)|navigation[\\s\\S]*(remains|stays)\\s+hidden",
|
|
242
|
+
"flags": "i",
|
|
243
|
+
"label": "dead menu interaction"
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"kind": "contains",
|
|
247
|
+
"file": "qa/browser-qa-report.md",
|
|
248
|
+
"pattern": "375[\\s\\S]*(overflow|horizontal|980)|(?:overflow|horizontal|980)[\\s\\S]*375",
|
|
249
|
+
"flags": "i",
|
|
250
|
+
"label": "mobile overflow finding"
|
|
251
|
+
}
|
|
252
|
+
]
|
|
253
|
+
}
|
|
254
|
+
],
|
|
255
|
+
"checks": [
|
|
256
|
+
{
|
|
257
|
+
"kind": "contains",
|
|
258
|
+
"file": "fixtures/signup.html",
|
|
259
|
+
"pattern": "fixture-console-error: signup analytics failed",
|
|
260
|
+
"label": "report-only run preserves the seeded console defect"
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"kind": "contains",
|
|
264
|
+
"file": "fixtures/signup.html",
|
|
265
|
+
"pattern": "button:focus,a:focus,input:focus\\{outline:none\\}",
|
|
266
|
+
"label": "report-only run preserves the seeded focus defect"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"kind": "fileCount",
|
|
270
|
+
"dir": "qa/screenshots",
|
|
271
|
+
"ext": [
|
|
272
|
+
".png"
|
|
273
|
+
],
|
|
274
|
+
"min": 2,
|
|
275
|
+
"verifyImageBytes": true
|
|
276
|
+
}
|
|
277
|
+
],
|
|
278
|
+
"taskNotes": {
|
|
279
|
+
"minBytes": 180,
|
|
280
|
+
"requireCraftbookTask": true,
|
|
281
|
+
"checks": [
|
|
282
|
+
{
|
|
283
|
+
"kind": "contains",
|
|
284
|
+
"file": "task-notes.md",
|
|
285
|
+
"pattern": "\\bDONE\\b[\\s\\S]*qa/browser-qa-report\\.md[\\s\\S]*(browser|journey|evidence)",
|
|
286
|
+
"flags": "i",
|
|
287
|
+
"label": "terminal task note records the browser audit"
|
|
288
|
+
}
|
|
289
|
+
]
|
|
290
|
+
},
|
|
291
|
+
"mocks": [
|
|
292
|
+
{
|
|
293
|
+
"service": "playwright",
|
|
294
|
+
"requiredTools": [
|
|
295
|
+
"browser_navigate",
|
|
296
|
+
"browser_resize",
|
|
297
|
+
"browser_snapshot",
|
|
298
|
+
"browser_click",
|
|
299
|
+
"browser_type",
|
|
300
|
+
"browser_console_messages",
|
|
301
|
+
"browser_take_screenshot"
|
|
302
|
+
],
|
|
303
|
+
"toolCalls": {
|
|
304
|
+
"browser_navigate": {
|
|
305
|
+
"minCalls": 1
|
|
306
|
+
},
|
|
307
|
+
"browser_resize": {
|
|
308
|
+
"minCalls": 2
|
|
309
|
+
},
|
|
310
|
+
"browser_snapshot": {
|
|
311
|
+
"minCalls": 6
|
|
312
|
+
},
|
|
313
|
+
"browser_click": {
|
|
314
|
+
"minCalls": 6
|
|
315
|
+
},
|
|
316
|
+
"browser_type": {
|
|
317
|
+
"minCalls": 2
|
|
318
|
+
},
|
|
319
|
+
"browser_console_messages": {
|
|
320
|
+
"minCalls": 1
|
|
321
|
+
},
|
|
322
|
+
"browser_take_screenshot": {
|
|
323
|
+
"minCalls": 2
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
],
|
|
328
|
+
"history": [
|
|
329
|
+
{
|
|
330
|
+
"kind": "tool.called",
|
|
331
|
+
"minEntries": 20,
|
|
332
|
+
"summaryPattern": "Tool .*?(?:browser_|playwright)",
|
|
333
|
+
"flags": "i"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"kind": "tool.called",
|
|
337
|
+
"minEntries": 0,
|
|
338
|
+
"maxEntries": 0,
|
|
339
|
+
"details": {
|
|
340
|
+
"name": "read_file",
|
|
341
|
+
"path": "fixtures/signup.html"
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
],
|
|
345
|
+
"unchangedFixtures": [
|
|
346
|
+
"source/expected-behavior.md",
|
|
347
|
+
"fixtures/signup.html"
|
|
348
|
+
]
|
|
349
|
+
},
|
|
350
|
+
"rubric": {
|
|
351
|
+
"artifact": {
|
|
352
|
+
"path": "qa/browser-qa-report.md",
|
|
353
|
+
"kind": "markdown"
|
|
354
|
+
},
|
|
355
|
+
"axes": [
|
|
356
|
+
{
|
|
357
|
+
"name": "Browser evidence",
|
|
358
|
+
"description": "Findings cite actual repeated journeys, viewport, console, focus, and screenshot evidence rather than source inspection or speculation."
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"name": "Triage quality",
|
|
362
|
+
"description": "Severity, confidence, expected versus actual behavior, reproduction, and user impact are clear and proportionate."
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"name": "Scoring honesty",
|
|
366
|
+
"description": "Coverage boundaries and blocked checks are visible, and the health score can be recomputed from the category arithmetic."
|
|
367
|
+
}
|
|
368
|
+
],
|
|
369
|
+
"contextNote": "This is report-only black-box QA. Editing the fixture or deriving findings by reading its source is a failure."
|
|
370
|
+
},
|
|
371
|
+
"qualityFocus": [
|
|
372
|
+
"Actual browser use is required and audited in History",
|
|
373
|
+
"Deterministic fixture defects must be reproduced rather than guessed",
|
|
374
|
+
"The HTML fixture remains unchanged"
|
|
375
|
+
]
|
|
376
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Engineering Retrospective — queue reliability window",
|
|
4
|
+
"objective": "Exercise the Engineering Retrospective craftbook on a fixed exported history and require reconciled metrics, contextual interpretation, balanced growth notes, and owned experiments.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"workflow",
|
|
7
|
+
"retrospective",
|
|
8
|
+
"engineering",
|
|
9
|
+
"corpus"
|
|
10
|
+
],
|
|
11
|
+
"prompt": "Use the Engineering Retrospective craftbook for the fixed 2026-07-01 through 2026-07-14 window. This evaluation has no live git repository: `source/git-log.txt` and `source/numstat.tsv` are the authoritative read-only exports, and `source/team-events.md` supplies context. Do not treat unavailable live history as zero or ask for another window. Reconcile human activity, exclude the release bot, identify evidence-backed hotspots and quality/collaboration signals, and write the workflow artifacts ending at `retro/engineering-retrospective.md`. Include constructive notes for Alex Kim and Priya Shah without rankings or volume-as-productivity claims, then propose three to five owner-backed experiments with measurable outcomes and a review date.",
|
|
12
|
+
"setup": {
|
|
13
|
+
"projectName": "Queue reliability engineering retrospective",
|
|
14
|
+
"about": "A self-contained retrospective over exported repository evidence. The export and context files are complete; no network, live git repository, or personnel system is available.",
|
|
15
|
+
"missionObjectives": "Run the Engineering Retrospective craftbook as a real task, reconcile the fixed history, preserve evidence limits, and produce an actionable, fair retrospective.",
|
|
16
|
+
"files": [
|
|
17
|
+
{
|
|
18
|
+
"path": "source/git-log.txt",
|
|
19
|
+
"content": "# sha|date|author|email|subject\na1c001|2026-07-02|Alex Kim|alex@example.test|fix queue timeout classification\na1c002|2026-07-03|Priya Shah|priya@example.test|add queue retry metrics\na1c003|2026-07-06|Priya Shah|priya@example.test|document on-call queue recovery\na1c004|2026-07-09|Alex Kim|alex@example.test|cover refresh-token expiry\na1c005|2026-07-10|Alex Kim|alex@example.test|add queue timeout regression fixture\na1c006|2026-07-12|Priya Shah|priya@example.test|pin parser dependency after advisory review\na1c007|2026-07-14|release-bot|bot@example.test|release 2.8.0\n"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"path": "source/numstat.tsv",
|
|
23
|
+
"content": "sha\tadded\tdeleted\tpath\na1c001\t34\t12\tsrc/queue.ts\na1c001\t22\t0\ttests/queue.test.ts\na1c002\t28\t4\tsrc/queue.ts\na1c002\t40\t2\tsrc/metrics.ts\na1c003\t55\t3\tdocs/oncall.md\na1c004\t18\t7\tsrc/auth.ts\na1c004\t26\t0\ttests/auth.test.ts\na1c005\t12\t6\tsrc/queue.ts\na1c005\t31\t2\ttests/queue.test.ts\na1c006\t3\t3\tpackage.json\na1c006\t14\t14\tpnpm-lock.yaml\na1c007\t2\t2\tCHANGELOG.md\n"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"path": "source/team-events.md",
|
|
27
|
+
"content": "# Team context\n\n- Window: 2026-07-01 through 2026-07-14, UTC. Compare only within this window; no prior baseline export is available.\n- Queue retry incident on 2026-07-02 caused delayed job status for 41 minutes. Priya Shah was primary responder; Alex Kim traced the timeout classification the next morning.\n- Alex was on planned leave July 4-5.\n- Priya paired with Alex on the queue regression fixture; pairing is mentioned in commit a1c005 but the export cannot attribute line-level co-authorship.\n- Release-bot is automation and must not be included in human activity or growth notes.\n- Review comments, meetings, and off-repository operational work are not present in this export.\n- Experiments should be reviewed on 2026-07-28.\n"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"mocks": [],
|
|
32
|
+
"success": {
|
|
33
|
+
"taskGraph": {
|
|
34
|
+
"requireCraftbookTask": true,
|
|
35
|
+
"requireTerminalStep": true
|
|
36
|
+
},
|
|
37
|
+
"summary": "The real craftbook reconciles the exported history into a contextual, non-ranking retrospective with balanced growth notes and measurable experiments.",
|
|
38
|
+
"deliverables": [
|
|
39
|
+
{
|
|
40
|
+
"path": "retro/scope.md",
|
|
41
|
+
"kind": "markdown-notes",
|
|
42
|
+
"minBytes": 600,
|
|
43
|
+
"checks": [
|
|
44
|
+
{
|
|
45
|
+
"kind": "contains",
|
|
46
|
+
"file": "retro/scope.md",
|
|
47
|
+
"pattern": "2026-07-01[\\s\\S]*2026-07-14[\\s\\S]*(Alex Kim|alex@example\\.test)[\\s\\S]*(Priya Shah|priya@example\\.test)[\\s\\S]*(release-bot|automation)",
|
|
48
|
+
"flags": "i",
|
|
49
|
+
"label": "window, identity map, and bot exclusion"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"path": "retro/evidence.md",
|
|
55
|
+
"kind": "markdown-report",
|
|
56
|
+
"minBytes": 1100,
|
|
57
|
+
"checks": [
|
|
58
|
+
{
|
|
59
|
+
"kind": "valueGrounding",
|
|
60
|
+
"file": "retro/evidence.md",
|
|
61
|
+
"facts": [
|
|
62
|
+
{
|
|
63
|
+
"id": "human-commits",
|
|
64
|
+
"label": "six human commits",
|
|
65
|
+
"required": [
|
|
66
|
+
"6\\s+human\\s+commits?|six\\s+human\\s+commits?"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "bot-exclusion",
|
|
71
|
+
"label": "one excluded bot commit",
|
|
72
|
+
"required": [
|
|
73
|
+
"1\\s+(?:bot|automated)|one\\s+(?:bot|automated)"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "alex-count",
|
|
78
|
+
"label": "three Alex commits",
|
|
79
|
+
"required": [
|
|
80
|
+
"Alex(?: Kim)?[^\\n]{0,80}3"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "priya-count",
|
|
85
|
+
"label": "three Priya commits",
|
|
86
|
+
"required": [
|
|
87
|
+
"Priya(?: Shah)?[^\\n]{0,80}3"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": "hotspot",
|
|
92
|
+
"label": "queue file changed in three commits",
|
|
93
|
+
"required": [
|
|
94
|
+
"src/queue\\.ts[^\\n]{0,100}3|3[^\\n]{0,100}src/queue\\.ts"
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"kind": "citationsResolve",
|
|
101
|
+
"file": "retro/evidence.md",
|
|
102
|
+
"minCitations": 3
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"path": "retro/engineering-retrospective.md",
|
|
108
|
+
"kind": "markdown-report",
|
|
109
|
+
"minBytes": 1600,
|
|
110
|
+
"checks": [
|
|
111
|
+
{
|
|
112
|
+
"kind": "contains",
|
|
113
|
+
"file": "retro/engineering-retrospective.md",
|
|
114
|
+
"pattern": "^#{1,3}\\s+Period context\\b[\\s\\S]*^#{1,3}\\s+What went well\\b[\\s\\S]*^#{1,3}\\s+Friction and hotspots\\b[\\s\\S]*^#{1,3}\\s+Collaboration and growth\\b[\\s\\S]*^#{1,3}\\s+Experiments\\b[\\s\\S]*^#{1,3}\\s+Evidence limits\\b",
|
|
115
|
+
"flags": "im",
|
|
116
|
+
"label": "complete retrospective structure"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"kind": "contains",
|
|
120
|
+
"file": "retro/engineering-retrospective.md",
|
|
121
|
+
"pattern": "Alex Kim[\\s\\S]*Priya Shah|Priya Shah[\\s\\S]*Alex Kim",
|
|
122
|
+
"label": "balanced named growth notes"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"kind": "contains",
|
|
126
|
+
"file": "retro/engineering-retrospective.md",
|
|
127
|
+
"pattern": "2026-07-28[\\s\\S]*(owner|Alex|Priya)|(owner|Alex|Priya)[\\s\\S]*2026-07-28",
|
|
128
|
+
"flags": "i",
|
|
129
|
+
"label": "owned experiments with review date"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"kind": "notContains",
|
|
133
|
+
"file": "retro/engineering-retrospective.md",
|
|
134
|
+
"pattern": "top performer|bottom performer|most productive|least productive|performance score|rank(?:ed|ing)?\\s+(?:the\\s+)?(?:engineers|people|team)",
|
|
135
|
+
"flags": "i",
|
|
136
|
+
"label": "no personnel ranking or volume-as-productivity framing"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"kind": "citationsResolve",
|
|
140
|
+
"file": "retro/engineering-retrospective.md",
|
|
141
|
+
"minCitations": 3
|
|
142
|
+
}
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
],
|
|
146
|
+
"taskNotes": {
|
|
147
|
+
"minBytes": 180,
|
|
148
|
+
"requireCraftbookTask": true,
|
|
149
|
+
"checks": [
|
|
150
|
+
{
|
|
151
|
+
"kind": "contains",
|
|
152
|
+
"file": "task-notes.md",
|
|
153
|
+
"pattern": "\\bDONE\\b[\\s\\S]*retro/engineering-retrospective\\.md[\\s\\S]*(experiment|evidence)",
|
|
154
|
+
"flags": "i",
|
|
155
|
+
"label": "terminal note records the evidence-backed retrospective"
|
|
156
|
+
}
|
|
157
|
+
]
|
|
158
|
+
},
|
|
159
|
+
"unchangedFixtures": [
|
|
160
|
+
"source/git-log.txt",
|
|
161
|
+
"source/numstat.tsv",
|
|
162
|
+
"source/team-events.md"
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
"rubric": {
|
|
166
|
+
"artifact": {
|
|
167
|
+
"path": "retro/engineering-retrospective.md",
|
|
168
|
+
"kind": "markdown"
|
|
169
|
+
},
|
|
170
|
+
"axes": [
|
|
171
|
+
{
|
|
172
|
+
"name": "Evidence integrity",
|
|
173
|
+
"description": "Counts reconcile to the exports, bot activity is excluded, hotspots are traceable, and missing review or operational data is not treated as zero."
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"name": "Context and fairness",
|
|
177
|
+
"description": "The incident, leave, pairing, and evidence limits shape interpretation; individual notes are constructive and do not rank people by volume."
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"name": "Actionability",
|
|
181
|
+
"description": "The retrospective turns patterns into a small set of owner-backed, measurable experiments with a fixed review date."
|
|
182
|
+
}
|
|
183
|
+
],
|
|
184
|
+
"contextNote": "The three source exports are the complete evidence set. Do not reward invented review metrics, cycle time, or off-repository work."
|
|
185
|
+
},
|
|
186
|
+
"qualityFocus": [
|
|
187
|
+
"Reconcile six human commits and exclude release automation",
|
|
188
|
+
"Explain the queue hotspot in incident context without equating volume with value",
|
|
189
|
+
"Give Alex and Priya balanced growth notes and measurable experiments"
|
|
190
|
+
]
|
|
191
|
+
}
|