@bendyline/gilde 0.1.53 → 0.1.55
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/chat-models/qwen3.5-27b-q4.json +147 -0
- package/authoring/gstack/evals/cso.json +21 -18
- package/authoring/gstack/evals/investigate.json +25 -22
- package/authoring/gstack/evals/plan-ceo-review.json +19 -16
- package/authoring/gstack/overlays/retro.json +2 -2
- package/authoring/gstack/wave.json +2 -2
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/qw/qwen3.5-27b-q4/manifest.json +217 -0
- package/data/chat-models/qw/qwen3.5-27b-q4/versions/1.0.0/manifest.json +90 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.7/craftbook.json +620 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.7/test.json +376 -0
- package/data/craftbook-templates/de/design-system-consultation/versions/2.0.7/craftbook.json +616 -0
- package/data/craftbook-templates/de/design-system-consultation/versions/2.0.7/test.json +201 -0
- package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.7/craftbook.json +566 -0
- package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.7/test.json +191 -0
- package/data/craftbook-templates/ex/executive-level-review/versions/2.0.7/craftbook.json +595 -0
- package/data/craftbook-templates/ex/executive-level-review/versions/2.0.7/test.json +139 -0
- package/data/craftbook-templates/id/idea-office-hours/versions/2.0.7/craftbook.json +566 -0
- package/data/craftbook-templates/id/idea-office-hours/versions/2.0.7/test.json +141 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/pl/plan/versions/1.0.2/craftbook.json +222 -0
- package/data/craftbook-templates/pl/plan/versions/1.0.2/test.json +91 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.7/craftbook.json +595 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.7/test.json +157 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/2.0.7/craftbook.json +597 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/2.0.7/test.json +157 -0
- package/data/craftbook-templates/sh/ship/versions/1.1.2/craftbook.json +346 -0
- package/data/craftbook-templates/sh/ship/versions/1.1.2/test.json +228 -0
- package/data/craftbook-templates/sp/spec-authoring/versions/2.0.7/craftbook.json +599 -0
- package/data/craftbook-templates/sp/spec-authoring/versions/2.0.7/test.json +162 -0
- package/data/craftbook-templates/te/technical-documentation/versions/2.0.7/craftbook.json +577 -0
- package/data/craftbook-templates/te/technical-documentation/versions/2.0.7/test.json +174 -0
- package/package.json +1 -1
- package/schemas/craftbook-test.schema.json +7 -1
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Technical Documentation — rate limiter Diataxis set",
|
|
4
|
+
"objective": "Exercise the Technical Documentation craftbook on a small real code surface and require a coherent, cross-linked Diataxis documentation set grounded in source behavior.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"workflow",
|
|
7
|
+
"documentation",
|
|
8
|
+
"diataxis",
|
|
9
|
+
"typescript"
|
|
10
|
+
],
|
|
11
|
+
"prompt": "Use the Technical Documentation craftbook to document the dependency-free rate limiter in this workspace. Inspect the source and test rather than guessing. Produce the craftbook inventory and plan plus a coherent set under `docs/`: `documentation-index.md`, `tutorial-rate-limit.md`, `how-to-configure-rate-limit.md`, `reference-rate-limit.md`, and `explanation-fixed-window.md`. The index must clearly organize tutorials, how-to, reference, and explanation, link to every page, cite the implementation/test where claims come from, and state how the documented examples were verified.",
|
|
12
|
+
"setup": {
|
|
13
|
+
"projectName": "Rate limiter documentation",
|
|
14
|
+
"about": "A hermetic TypeScript library documentation exercise. There are no external APIs or package dependencies.",
|
|
15
|
+
"missionObjectives": "Create accurate, navigable documentation that helps a first-time adopter use `createFixedWindowLimiter` and understand its tradeoffs without reading all source code.",
|
|
16
|
+
"files": [
|
|
17
|
+
{
|
|
18
|
+
"path": "README.md",
|
|
19
|
+
"content": "# tiny-limit\n\nA dependency-free fixed-window request limiter. Public behavior is defined by `src/rate-limit.ts` and its test. Documentation is intentionally incomplete.\n"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"path": "src/rate-limit.ts",
|
|
23
|
+
"content": "export interface RateLimitOptions {\n windowMs: number;\n max: number;\n}\n\nexport interface RateLimitDecision {\n allowed: boolean;\n remaining: number;\n resetAt: number;\n}\n\nexport function createFixedWindowLimiter(options: RateLimitOptions) {\n if (!Number.isInteger(options.max) || options.max < 1) throw new RangeError('max must be a positive integer');\n if (!Number.isFinite(options.windowMs) || options.windowMs <= 0) throw new RangeError('windowMs must be positive');\n const buckets = new Map<string, { count: number; resetAt: number }>();\n\n return function check(key: string, now = Date.now()): RateLimitDecision {\n const current = buckets.get(key);\n const bucket = !current || now >= current.resetAt\n ? { count: 0, resetAt: now + options.windowMs }\n : current;\n bucket.count += 1;\n buckets.set(key, bucket);\n return {\n allowed: bucket.count <= options.max,\n remaining: Math.max(0, options.max - bucket.count),\n resetAt: bucket.resetAt,\n };\n };\n}\n"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"path": "test/rate-limit.test.ts",
|
|
27
|
+
"content": "import { strict as assert } from 'node:assert';\nimport { createFixedWindowLimiter } from '../src/rate-limit.js';\n\nconst check = createFixedWindowLimiter({ windowMs: 1000, max: 2 });\nassert.deepEqual(check('ada', 100), { allowed: true, remaining: 1, resetAt: 1100 });\nassert.deepEqual(check('ada', 200), { allowed: true, remaining: 0, resetAt: 1100 });\nassert.deepEqual(check('ada', 300), { allowed: false, remaining: 0, resetAt: 1100 });\nassert.deepEqual(check('ada', 1100), { allowed: true, remaining: 1, resetAt: 2100 });\n"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"mocks": [],
|
|
32
|
+
"success": {
|
|
33
|
+
"summary": "The craftbook produces a complete, grounded five-page Diataxis set with a navigable index and terminal task evidence.",
|
|
34
|
+
"deliverables": [
|
|
35
|
+
{
|
|
36
|
+
"path": "docs/documentation-index.md",
|
|
37
|
+
"kind": "markdown-doc",
|
|
38
|
+
"minBytes": 850,
|
|
39
|
+
"checks": [
|
|
40
|
+
{
|
|
41
|
+
"kind": "contains",
|
|
42
|
+
"file": "docs/documentation-index.md",
|
|
43
|
+
"pattern": "^#{1,3}\\s+Tutorials?\\b[\\s\\S]*^#{1,3}\\s+How-to guides?\\b[\\s\\S]*^#{1,3}\\s+Reference\\b[\\s\\S]*^#{1,3}\\s+Explanation\\b[\\s\\S]*^#{1,3}\\s+Verification\\b",
|
|
44
|
+
"flags": "im",
|
|
45
|
+
"label": "Diataxis map and verification"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"kind": "contains",
|
|
49
|
+
"file": "docs/documentation-index.md",
|
|
50
|
+
"pattern": "tutorial-rate-limit\\.md[\\s\\S]*how-to-configure-rate-limit\\.md[\\s\\S]*reference-rate-limit\\.md[\\s\\S]*explanation-fixed-window\\.md",
|
|
51
|
+
"flags": "i",
|
|
52
|
+
"label": "all requested pages linked"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"kind": "citationsResolve",
|
|
56
|
+
"file": "docs/documentation-index.md",
|
|
57
|
+
"minCitations": 4
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"path": "docs/tutorial-rate-limit.md",
|
|
63
|
+
"kind": "markdown-doc",
|
|
64
|
+
"minBytes": 650,
|
|
65
|
+
"checks": [
|
|
66
|
+
{
|
|
67
|
+
"kind": "contains",
|
|
68
|
+
"file": "docs/tutorial-rate-limit.md",
|
|
69
|
+
"pattern": "createFixedWindowLimiter[\\s\\S]*windowMs[\\s\\S]*max[\\s\\S]*(allowed|remaining|resetAt)",
|
|
70
|
+
"label": "runnable API walkthrough"
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"path": "docs/how-to-configure-rate-limit.md",
|
|
76
|
+
"kind": "markdown-doc",
|
|
77
|
+
"minBytes": 550,
|
|
78
|
+
"checks": [
|
|
79
|
+
{
|
|
80
|
+
"kind": "contains",
|
|
81
|
+
"file": "docs/how-to-configure-rate-limit.md",
|
|
82
|
+
"pattern": "windowMs[\\s\\S]*max[\\s\\S]*(positive|greater than|at least)[\\s\\S]*(integer|finite)",
|
|
83
|
+
"flags": "i",
|
|
84
|
+
"label": "configuration constraints"
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"path": "docs/reference-rate-limit.md",
|
|
90
|
+
"kind": "markdown-doc",
|
|
91
|
+
"minBytes": 650,
|
|
92
|
+
"checks": [
|
|
93
|
+
{
|
|
94
|
+
"kind": "contains",
|
|
95
|
+
"file": "docs/reference-rate-limit.md",
|
|
96
|
+
"pattern": "RateLimitOptions[\\s\\S]*RateLimitDecision[\\s\\S]*allowed[\\s\\S]*remaining[\\s\\S]*resetAt",
|
|
97
|
+
"label": "public type reference"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"path": "docs/explanation-fixed-window.md",
|
|
103
|
+
"kind": "markdown-doc",
|
|
104
|
+
"minBytes": 600,
|
|
105
|
+
"checks": [
|
|
106
|
+
{
|
|
107
|
+
"kind": "contains",
|
|
108
|
+
"file": "docs/explanation-fixed-window.md",
|
|
109
|
+
"pattern": "fixed[- ]window[\\s\\S]*(boundary|burst|trade[- ]?off)[\\s\\S]*(memory|Map|process)",
|
|
110
|
+
"flags": "i",
|
|
111
|
+
"label": "mechanism and tradeoffs"
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
"checks": [
|
|
117
|
+
{
|
|
118
|
+
"kind": "fileCount",
|
|
119
|
+
"ext": [
|
|
120
|
+
".md"
|
|
121
|
+
],
|
|
122
|
+
"min": 5,
|
|
123
|
+
"dir": "docs"
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"taskNotes": {
|
|
127
|
+
"minBytes": 180,
|
|
128
|
+
"checks": [
|
|
129
|
+
{
|
|
130
|
+
"kind": "contains",
|
|
131
|
+
"file": "task-notes.md",
|
|
132
|
+
"pattern": "\\bDONE\\b[\\s\\S]*docs/documentation-index\\.md[\\s\\S]*(5|five)\\s+(pages|documents)",
|
|
133
|
+
"flags": "i",
|
|
134
|
+
"label": "terminal note records the documentation set"
|
|
135
|
+
}
|
|
136
|
+
],
|
|
137
|
+
"requireCraftbookTask": true
|
|
138
|
+
},
|
|
139
|
+
"taskGraph": {
|
|
140
|
+
"requireCraftbookTask": true,
|
|
141
|
+
"requireTerminalStep": true
|
|
142
|
+
},
|
|
143
|
+
"unchangedFixtures": [
|
|
144
|
+
"README.md",
|
|
145
|
+
"src/rate-limit.ts",
|
|
146
|
+
"test/rate-limit.test.ts"
|
|
147
|
+
]
|
|
148
|
+
},
|
|
149
|
+
"rubric": {
|
|
150
|
+
"artifact": {
|
|
151
|
+
"path": "docs/documentation-index.md",
|
|
152
|
+
"kind": "markdown"
|
|
153
|
+
},
|
|
154
|
+
"axes": [
|
|
155
|
+
{
|
|
156
|
+
"name": "Source fidelity",
|
|
157
|
+
"description": "Claims, examples, inputs, outputs, and edge cases agree with the supplied implementation and test."
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"name": "Diataxis separation",
|
|
161
|
+
"description": "Tutorial, how-to, reference, and explanation pages each serve their distinct reader need without becoming duplicate summaries."
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"name": "Navigation and verification",
|
|
165
|
+
"description": "The set is cross-linked, easy to scan, and transparent about how examples and factual claims were checked."
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"qualityFocus": [
|
|
170
|
+
"Every public option and result field matches the source",
|
|
171
|
+
"Each Diataxis page has a distinct job",
|
|
172
|
+
"The index links the complete set and explains verification"
|
|
173
|
+
]
|
|
174
|
+
}
|
package/package.json
CHANGED
|
@@ -5138,7 +5138,13 @@
|
|
|
5138
5138
|
"copilot.builtin.denied",
|
|
5139
5139
|
"credential.used",
|
|
5140
5140
|
"eval.trial.started",
|
|
5141
|
-
"eval.trial.completed"
|
|
5141
|
+
"eval.trial.completed",
|
|
5142
|
+
"knowledge.catalog.installed",
|
|
5143
|
+
"knowledge.catalog.updated",
|
|
5144
|
+
"knowledge.catalog.enabled",
|
|
5145
|
+
"knowledge.catalog.disabled",
|
|
5146
|
+
"knowledge.catalog.removed",
|
|
5147
|
+
"knowledge.catalog.install_failed"
|
|
5142
5148
|
]
|
|
5143
5149
|
},
|
|
5144
5150
|
"minEntries": {
|