@bendyline/gilde 0.1.24 → 0.1.26

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 (31) hide show
  1. package/authoring/gstack/evals/cso.json +2 -0
  2. package/authoring/gstack/overlays/cso.json +1 -0
  3. package/authoring/gstack/wave.json +2 -2
  4. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.1/craftbook.json +358 -0
  5. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.1/test.json +376 -0
  6. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.1/craftbook.json +385 -0
  7. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.1/test.json +201 -0
  8. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.1/craftbook.json +353 -0
  9. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.1/test.json +191 -0
  10. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.1/craftbook.json +347 -0
  11. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.1/test.json +135 -0
  12. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.1/craftbook.json +333 -0
  13. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.1/test.json +141 -0
  14. package/data/craftbook-templates/index.json +1 -1
  15. package/data/craftbook-templates/pu/pull-request-review/manifest.json +1 -1
  16. package/data/craftbook-templates/pu/pull-request-review/versions/1.4.0/craftbook.json +179 -0
  17. package/data/craftbook-templates/pu/pull-request-review/versions/1.4.0/test.json +123 -0
  18. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.1/craftbook.json +348 -0
  19. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.1/test.json +153 -0
  20. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.1/craftbook.json +390 -0
  21. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.1/test.json +154 -0
  22. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.2/craftbook.json +450 -0
  23. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.2/test.json +154 -0
  24. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.1/craftbook.json +391 -0
  25. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.1/test.json +162 -0
  26. package/data/craftbook-templates/te/technical-documentation/versions/2.0.1/craftbook.json +343 -0
  27. package/data/craftbook-templates/te/technical-documentation/versions/2.0.1/test.json +174 -0
  28. package/package.json +1 -1
  29. package/schemas/craftbook-doc.schema.json +170 -0
  30. package/schemas/craftbook-template-version.schema.json +170 -0
  31. package/schemas/craftbook-test.schema.json +143 -0
@@ -13,6 +13,7 @@
13
13
  "projectName": "Admin export security review",
14
14
  "about": "A hermetic source-review fixture. No network or dependency lookup is needed or authorized; conclusions must come from seeded files.",
15
15
  "missionObjectives": "Deliver an actionable risk posture that distinguishes confirmed source defects, positive controls, and unverified areas without changing implementation.",
16
+ "managedWorkspaceWritePolicy": "deny",
16
17
  "files": [
17
18
  {
18
19
  "path": "docs/architecture.md",
@@ -51,6 +52,7 @@
51
52
  {
52
53
  "path": "security/security-architecture-review.md",
53
54
  "kind": "security-report",
55
+ "artifact": true,
54
56
  "minBytes": 1700,
55
57
  "checks": [
56
58
  {
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "workflow": {
3
3
  "plan": "Run an evidence-first architecture review without changing product code. Trace trust boundaries, data flows, identity, authorization, secrets, dependencies, and operational controls from actual workspace material. Never copy secret values into notes or reports. Separate confirmed findings from hypotheses and research gaps. Rank actionable findings by severity, exploitability, confidence, and blast radius, then give the owner a practical remediation and verification path.",
4
+ "storage": "artifacts",
4
5
  "phases": [
5
6
  {
6
7
  "id": "model-system",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "2.0.0",
4
- "releasedAt": "2026-08-09T00:00:00Z",
3
+ "version": "2.0.1",
4
+ "releasedAt": "2026-08-13T00:00:00Z",
5
5
  "sourceRevision": "a3259400a366593e0c909dd9ac3e59752efd2488",
6
6
  "basedOn": {
7
7
  "name": "gstack",
@@ -0,0 +1,358 @@
1
+ {
2
+ "id": "browser-qa-audit",
3
+ "name": "Browser QA Audit",
4
+ "description": "Exercise a running app in a real browser, triage what breaks, and produce a report-only QA findings list with a health score — no code changes.",
5
+ "basedOn": {
6
+ "name": "gstack",
7
+ "url": "https://github.com/garrytan/gstack"
8
+ },
9
+ "plan": "Perform black-box, report-only browser QA. Do not read implementation code and do not fix defects. Test the supplied running target as a real user across core journeys, navigation, forms, validation, state changes, console health, responsive layouts, and accessibility basics. Capture evidence at the time of observation, retry suspected defects once, redact credentials, and distinguish tested, blocked, and out-of-scope surfaces. A health score is only valid when its evidence and arithmetic are inspectable.",
10
+ "entryStepId": "plan-coverage",
11
+ "triggers": [
12
+ "qa report only",
13
+ "just report bugs",
14
+ "test but dont fix"
15
+ ],
16
+ "command": "browser-qa-audit",
17
+ "toolsets": [
18
+ {
19
+ "toolsetId": "@playwright/mcp",
20
+ "optional": false,
21
+ "reason": "exercise the target through a real browser and capture reproducible evidence"
22
+ }
23
+ ],
24
+ "steps": [
25
+ {
26
+ "id": "plan-coverage",
27
+ "name": "Plan observable coverage",
28
+ "description": "Confirm the target and turn user intent into bounded journeys, states, and evidence requirements.",
29
+ "prompt": "Confirm the target URL, requested scope, authentication constraints, viewport requirements, destructive-action limits, and expected behavior from the task context. Ask only for missing information that blocks browser use, and never store credentials in output. Open the target with the configured browser toolset to verify reachability. Map the visible navigation and prioritize core journeys. Define happy, empty, invalid, error, loading, permission, and responsive states to exercise, plus a clear tested versus excluded boundary.\n\nObservable handoff: write the completed result to `qa/test-plan.md` in the workspace. Do not merely describe what the file would contain. Re-read it before finishing this phase and repair any incomplete sections.",
30
+ "suggestedRole": "QA analyst",
31
+ "advanceWhen": {
32
+ "file": "qa/test-plan.md",
33
+ "minBytes": 700,
34
+ "sniff": "nonempty",
35
+ "requireChange": true,
36
+ "goto": "exercise"
37
+ },
38
+ "gate": {
39
+ "at": "completion",
40
+ "checks": [
41
+ {
42
+ "kind": "minBytes",
43
+ "file": "qa/test-plan.md",
44
+ "bytes": 700
45
+ },
46
+ {
47
+ "kind": "sniff",
48
+ "file": "qa/test-plan.md",
49
+ "sniff": "nonempty"
50
+ },
51
+ {
52
+ "kind": "contains",
53
+ "file": "qa/test-plan.md",
54
+ "pattern": "^##\\s+Target",
55
+ "flags": "im",
56
+ "label": "Target section"
57
+ },
58
+ {
59
+ "kind": "contains",
60
+ "file": "qa/test-plan.md",
61
+ "pattern": "^##\\s+Core journeys",
62
+ "flags": "im",
63
+ "label": "Core journeys section"
64
+ },
65
+ {
66
+ "kind": "contains",
67
+ "file": "qa/test-plan.md",
68
+ "pattern": "^##\\s+State matrix",
69
+ "flags": "im",
70
+ "label": "State matrix section"
71
+ },
72
+ {
73
+ "kind": "contains",
74
+ "file": "qa/test-plan.md",
75
+ "pattern": "^##\\s+Viewports",
76
+ "flags": "im",
77
+ "label": "Viewports section"
78
+ },
79
+ {
80
+ "kind": "contains",
81
+ "file": "qa/test-plan.md",
82
+ "pattern": "^##\\s+Scope boundaries",
83
+ "flags": "im",
84
+ "label": "Scope boundaries section"
85
+ }
86
+ ],
87
+ "onReject": "plan-coverage",
88
+ "maxAttempts": 3
89
+ },
90
+ "next": "exercise"
91
+ },
92
+ {
93
+ "id": "exercise",
94
+ "name": "Exercise the application",
95
+ "description": "Run the planned journeys in a real browser and capture reproducible, redacted evidence.",
96
+ "prompt": "Execute `qa/test-plan.md` with the configured browser tools, using `run_playwright_script` for repeatable multi-step journeys when useful. At every journey, record URL, viewport, input state, actions, visible result, console errors, and screenshot path. Test keyboard focus and basic accessible naming, realistic invalid input, browser back and forward behavior, and at least one narrow viewport. Retry each suspected issue once. Save screenshots beneath `qa/screenshots/` and a machine-readable issue summary to `qa/baseline.json`. Redact secrets and never submit destructive or externally visible actions without explicit permission.\n\nObservable handoff: write the completed result to `qa/browser-evidence.md` in the workspace. Do not merely describe what the file would contain. Re-read it before finishing this phase and repair any incomplete sections.",
97
+ "suggestedRole": "browser QA engineer",
98
+ "advanceWhen": {
99
+ "file": "qa/browser-evidence.md",
100
+ "minBytes": 1200,
101
+ "sniff": "nonempty",
102
+ "requireChange": true,
103
+ "goto": "report-findings"
104
+ },
105
+ "gate": {
106
+ "at": "completion",
107
+ "checks": [
108
+ {
109
+ "kind": "minBytes",
110
+ "file": "qa/browser-evidence.md",
111
+ "bytes": 1200
112
+ },
113
+ {
114
+ "kind": "sniff",
115
+ "file": "qa/browser-evidence.md",
116
+ "sniff": "nonempty"
117
+ },
118
+ {
119
+ "kind": "contains",
120
+ "file": "qa/browser-evidence.md",
121
+ "pattern": "^##\\s+Run metadata",
122
+ "flags": "im",
123
+ "label": "Run metadata section"
124
+ },
125
+ {
126
+ "kind": "contains",
127
+ "file": "qa/browser-evidence.md",
128
+ "pattern": "^##\\s+Journey results",
129
+ "flags": "im",
130
+ "label": "Journey results section"
131
+ },
132
+ {
133
+ "kind": "contains",
134
+ "file": "qa/browser-evidence.md",
135
+ "pattern": "^##\\s+Console",
136
+ "flags": "im",
137
+ "label": "Console section"
138
+ },
139
+ {
140
+ "kind": "contains",
141
+ "file": "qa/browser-evidence.md",
142
+ "pattern": "^##\\s+Responsive and accessibility",
143
+ "flags": "im",
144
+ "label": "responsive and accessibility section"
145
+ },
146
+ {
147
+ "kind": "contains",
148
+ "file": "qa/browser-evidence.md",
149
+ "pattern": "^##\\s+Evidence index",
150
+ "flags": "im",
151
+ "label": "Evidence index section"
152
+ },
153
+ {
154
+ "kind": "sniff",
155
+ "file": "qa/baseline.json",
156
+ "sniff": "json-valid"
157
+ }
158
+ ],
159
+ "onReject": "exercise",
160
+ "maxAttempts": 3
161
+ },
162
+ "next": "report-findings"
163
+ },
164
+ {
165
+ "id": "report-findings",
166
+ "name": "Write the QA report",
167
+ "description": "Triage observed defects, compute the health score, and provide owners with exact reproduction evidence.",
168
+ "prompt": "Write the report only from `qa/test-plan.md`, `qa/browser-evidence.md`, screenshots, and baseline data. For every issue include severity, confidence, category, affected journey, exact reproduction steps, expected versus actual behavior, screenshot or console evidence, frequency, and user impact. Keep blocked checks separate from passes. Compute category scores and the weighted health score with visible arithmetic. End with the top three fixes by user impact, but do not edit code or prescribe speculative implementation details.\n\nObservable handoff: write the completed result to `qa/browser-qa-report.md` in the workspace. Do not merely describe what the file would contain. Re-read it before finishing this phase and repair any incomplete sections.",
169
+ "suggestedRole": "QA reporter",
170
+ "advanceWhen": {
171
+ "file": "qa/browser-qa-report.md",
172
+ "minBytes": 1500,
173
+ "sniff": "nonempty",
174
+ "requireChange": true,
175
+ "goto": "evaluate"
176
+ },
177
+ "gate": {
178
+ "at": "completion",
179
+ "checks": [
180
+ {
181
+ "kind": "minBytes",
182
+ "file": "qa/browser-qa-report.md",
183
+ "bytes": 1500
184
+ },
185
+ {
186
+ "kind": "sniff",
187
+ "file": "qa/browser-qa-report.md",
188
+ "sniff": "nonempty"
189
+ },
190
+ {
191
+ "kind": "contains",
192
+ "file": "qa/browser-qa-report.md",
193
+ "pattern": "^##\\s+Executive summary",
194
+ "flags": "im",
195
+ "label": "Executive summary section"
196
+ },
197
+ {
198
+ "kind": "contains",
199
+ "file": "qa/browser-qa-report.md",
200
+ "pattern": "^##\\s+Coverage",
201
+ "flags": "im",
202
+ "label": "Coverage section"
203
+ },
204
+ {
205
+ "kind": "contains",
206
+ "file": "qa/browser-qa-report.md",
207
+ "pattern": "^##\\s+Findings",
208
+ "flags": "im",
209
+ "label": "Findings section"
210
+ },
211
+ {
212
+ "kind": "contains",
213
+ "file": "qa/browser-qa-report.md",
214
+ "pattern": "^##\\s+Console health",
215
+ "flags": "im",
216
+ "label": "Console health section"
217
+ },
218
+ {
219
+ "kind": "contains",
220
+ "file": "qa/browser-qa-report.md",
221
+ "pattern": "^##\\s+Health score",
222
+ "flags": "im",
223
+ "label": "Health score section"
224
+ },
225
+ {
226
+ "kind": "contains",
227
+ "file": "qa/browser-qa-report.md",
228
+ "pattern": "^##\\s+Top three fixes",
229
+ "flags": "im",
230
+ "label": "Top three fixes section"
231
+ }
232
+ ],
233
+ "onReject": "report-findings",
234
+ "maxAttempts": 3
235
+ },
236
+ "next": "evaluate"
237
+ },
238
+ {
239
+ "id": "evaluate",
240
+ "name": "Evaluate the deliverable",
241
+ "description": "Independently grade the observable deliverable and route it to finish, repair, or user escalation.",
242
+ "prompt": "Review `qa/browser-qa-report.md`, `qa/test-plan.md`, `qa/browser-evidence.md`, `qa/baseline.json` against every criterion below. Inspect the underlying evidence files named by the workflow; do not grade from the author's summary alone.\n\n1. Every claimed pass, fail, and blocked check traces to an actual browser journey in the evidence log.\n2. Each defect was reproduced twice or its confidence was reduced, and includes expected versus actual behavior plus screenshot or console evidence.\n3. Core journeys cover meaningful state changes, invalid input, navigation, console health, responsive layout, and accessibility basics in proportion to scope.\n4. Credentials and sensitive data are redacted, and no destructive or externally visible action was taken without permission.\n5. Severity reflects user impact and reach, while untested surfaces are never counted as passing.\n6. The category and overall health-score arithmetic is reproducible from the report.\n\nWrite an evidence-backed review to `reviews/browser-qa-audit-review.md`. Give each criterion a PASS or FAIL with a concrete path, excerpt, measurement, or observed behavior. End with exactly `Verdict: PASS` or `Verdict: REVISE`. Then use `advance_task_step` for the active task: PASS routes to `finish`; REVISE routes to `repair` for review rounds 1 through 2, and the 3th REVISE routes to `needs-user`. Never route to finish while a criterion is unmet.",
243
+ "suggestedRole": "QA reviewer",
244
+ "gate": {
245
+ "at": "completion",
246
+ "checks": [
247
+ {
248
+ "kind": "minBytes",
249
+ "file": "reviews/browser-qa-audit-review.md",
250
+ "bytes": 400
251
+ },
252
+ {
253
+ "kind": "contains",
254
+ "file": "reviews/browser-qa-audit-review.md",
255
+ "pattern": "Verdict:\\s*(?:PASS|REVISE)",
256
+ "flags": "i",
257
+ "label": "explicit PASS or REVISE verdict"
258
+ }
259
+ ],
260
+ "onReject": "evaluate",
261
+ "maxAttempts": 3
262
+ },
263
+ "next": "repair"
264
+ },
265
+ {
266
+ "id": "repair",
267
+ "name": "Repair the deliverable",
268
+ "description": "Fix only the concrete gaps from the latest independent review.",
269
+ "prompt": "Read `reviews/browser-qa-audit-review.md` and repair every failed criterion in `qa/browser-qa-report.md`, `qa/test-plan.md`, `qa/browser-evidence.md`, `qa/baseline.json`. Make the changes in the actual workspace files, not just in task notes or a reply. Preserve evidence that already passed. Re-run or re-check anything the reviewer found unproven. Ensure `qa/browser-qa-report.md` is genuinely updated this turn so the repair is observable, then hand it back for independent evaluation.",
270
+ "suggestedRole": "QA reporter",
271
+ "advanceWhen": {
272
+ "file": "qa/browser-qa-report.md",
273
+ "minBytes": 1500,
274
+ "sniff": "nonempty",
275
+ "requireChange": true,
276
+ "goto": "evaluate"
277
+ },
278
+ "gate": {
279
+ "at": "completion",
280
+ "checks": [
281
+ {
282
+ "kind": "minBytes",
283
+ "file": "qa/browser-qa-report.md",
284
+ "bytes": 1500
285
+ },
286
+ {
287
+ "kind": "sniff",
288
+ "file": "qa/browser-qa-report.md",
289
+ "sniff": "nonempty"
290
+ },
291
+ {
292
+ "kind": "contains",
293
+ "file": "qa/browser-qa-report.md",
294
+ "pattern": "^##\\s+Executive summary",
295
+ "flags": "im",
296
+ "label": "Executive summary section"
297
+ },
298
+ {
299
+ "kind": "contains",
300
+ "file": "qa/browser-qa-report.md",
301
+ "pattern": "^##\\s+Coverage",
302
+ "flags": "im",
303
+ "label": "Coverage section"
304
+ },
305
+ {
306
+ "kind": "contains",
307
+ "file": "qa/browser-qa-report.md",
308
+ "pattern": "^##\\s+Findings",
309
+ "flags": "im",
310
+ "label": "Findings section"
311
+ },
312
+ {
313
+ "kind": "contains",
314
+ "file": "qa/browser-qa-report.md",
315
+ "pattern": "^##\\s+Console health",
316
+ "flags": "im",
317
+ "label": "Console health section"
318
+ },
319
+ {
320
+ "kind": "contains",
321
+ "file": "qa/browser-qa-report.md",
322
+ "pattern": "^##\\s+Health score",
323
+ "flags": "im",
324
+ "label": "Health score section"
325
+ },
326
+ {
327
+ "kind": "contains",
328
+ "file": "qa/browser-qa-report.md",
329
+ "pattern": "^##\\s+Top three fixes",
330
+ "flags": "im",
331
+ "label": "Top three fixes section"
332
+ }
333
+ ],
334
+ "onReject": "repair",
335
+ "maxAttempts": 3
336
+ },
337
+ "next": "evaluate"
338
+ },
339
+ {
340
+ "id": "finish",
341
+ "name": "Finish",
342
+ "description": "All deterministic and reviewer criteria passed.",
343
+ "prompt": "The independent review passed. Read `reviews/browser-qa-audit-review.md`, then use `write_task_note` to record a concise DONE summary with the final deliverable paths (`qa/browser-qa-report.md`, `qa/test-plan.md`, `qa/browser-evidence.md`, `qa/baseline.json`) and the evidence that each acceptance criterion passed. Report DONE without starting new work.",
344
+ "suggestedRole": "project lead",
345
+ "terminal": true
346
+ },
347
+ {
348
+ "id": "needs-user",
349
+ "name": "Escalate unresolved concerns",
350
+ "description": "The bounded repair loop ended without a defensible pass.",
351
+ "prompt": "The deliverable did not pass after 3 review rounds. Do not claim success. Read `reviews/browser-qa-audit-review.md`, then use `write_task_note` to record DONE_WITH_CONCERNS: the unmet criteria, what was attempted, the affected paths, and the smallest user decision or missing input needed to continue.",
352
+ "suggestedRole": "project lead",
353
+ "terminal": true
354
+ }
355
+ ],
356
+ "version": "2.0.1",
357
+ "releasedAt": "2026-08-13T00:00:00Z"
358
+ }