rhachet-roles-bhuild 0.16.0 → 0.17.1
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/dist/domain.operations/behavior/init/templates/3.3.1.blueprint.product.v1.guard.heavy +70 -6
- package/dist/domain.operations/behavior/init/templates/3.3.1.blueprint.product.v1.guard.light +70 -6
- package/dist/domain.operations/behavior/init/templates/3.3.1.blueprint.product.v1.stone +59 -5
- package/dist/domain.operations/behavior/init/templates/5.3.verification.v1.guard +38 -3
- package/dist/domain.operations/behavior/init/templates/5.3.verification.v1.stone +44 -8
- package/dist/domain.operations/behavior/init/templates/5.5.playtest.v1.guard +36 -2
- package/dist/domain.operations/behavior/init/templates/5.5.playtest.v1.stone +23 -3
- package/package.json +4 -4
package/dist/domain.operations/behavior/init/templates/3.3.1.blueprint.product.v1.guard.heavy
CHANGED
|
@@ -185,7 +185,71 @@ reviews:
|
|
|
185
185
|
2. eliminate it if not confirmed as required
|
|
186
186
|
3. make the open question very clearly reported
|
|
187
187
|
|
|
188
|
-
# 11.
|
|
188
|
+
# 11. test coverage thoroughness
|
|
189
|
+
- slug: has-thorough-test-coverage
|
|
190
|
+
say: |
|
|
191
|
+
review the blueprint for thorough test coverage declaration.
|
|
192
|
+
|
|
193
|
+
test coverage is MANDATORY and equal weight to implementation.
|
|
194
|
+
a blueprint without thorough test coverage is incomplete.
|
|
195
|
+
|
|
196
|
+
## layer coverage
|
|
197
|
+
|
|
198
|
+
for each codepath in the blueprint, verify test coverage by layer:
|
|
199
|
+
|
|
200
|
+
| layer | required test type |
|
|
201
|
+
|-------|-------------------|
|
|
202
|
+
| transformers (pure computation, format conversion) | unit tests |
|
|
203
|
+
| communicators (sdks, daos, service clients) | integration tests |
|
|
204
|
+
| orchestrators (composition of transformers + communicators) | integration tests |
|
|
205
|
+
| contracts (cli, api, sdk entry points) | integration + acceptance tests |
|
|
206
|
+
|
|
207
|
+
ask for each codepath:
|
|
208
|
+
- does this blueprint declare the appropriate test type for this layer?
|
|
209
|
+
- are transformers covered by unit tests?
|
|
210
|
+
- are communicators covered by integration tests?
|
|
211
|
+
- are orchestrators covered by integration tests?
|
|
212
|
+
- are contracts covered by both integration and acceptance tests?
|
|
213
|
+
|
|
214
|
+
## case coverage
|
|
215
|
+
|
|
216
|
+
for each codepath, verify coverage across case types:
|
|
217
|
+
|
|
218
|
+
| case type | what it must cover |
|
|
219
|
+
|-----------|-------------------|
|
|
220
|
+
| positive | expected inputs → expected outputs |
|
|
221
|
+
| negative | invalid inputs → expected errors |
|
|
222
|
+
| happy path | typical successful flow |
|
|
223
|
+
| edge cases | boundary conditions, empty inputs, max limits |
|
|
224
|
+
|
|
225
|
+
ask for each codepath:
|
|
226
|
+
- are positive cases declared?
|
|
227
|
+
- are negative cases declared?
|
|
228
|
+
- is the happy path covered?
|
|
229
|
+
- are edge cases identified and covered?
|
|
230
|
+
|
|
231
|
+
## snapshot coverage
|
|
232
|
+
|
|
233
|
+
acceptance tests MUST snapshot contract stdouts — exhaustive for positive and negative cases:
|
|
234
|
+
- cli stdout/stderr (success + all error paths)
|
|
235
|
+
- api responses (success + all error responses)
|
|
236
|
+
- sdk returns (success + all thrown errors)
|
|
237
|
+
|
|
238
|
+
ask:
|
|
239
|
+
- does the blueprint declare snapshots for all contract outputs?
|
|
240
|
+
- are snapshots exhaustive for both positive and negative cases?
|
|
241
|
+
- is every error path covered by a snapshot?
|
|
242
|
+
|
|
243
|
+
## test tree
|
|
244
|
+
|
|
245
|
+
verify the blueprint includes a test tree that shows:
|
|
246
|
+
- which test files will be created/updated
|
|
247
|
+
- test file locations match convention
|
|
248
|
+
- test types match layer requirements
|
|
249
|
+
|
|
250
|
+
fix all gaps before you continue.
|
|
251
|
+
|
|
252
|
+
# 12. consistent mechanisms
|
|
189
253
|
- slug: has-consistent-mechanisms
|
|
190
254
|
say: |
|
|
191
255
|
review for new mechanisms that duplicate extant functionality.
|
|
@@ -204,7 +268,7 @@ reviews:
|
|
|
204
268
|
1. replace with the extant mechanism
|
|
205
269
|
2. or flag as an open question if unsure
|
|
206
270
|
|
|
207
|
-
#
|
|
271
|
+
# 13. consistent conventions
|
|
208
272
|
- slug: has-consistent-conventions
|
|
209
273
|
say: |
|
|
210
274
|
review for divergence from extant names and patterns.
|
|
@@ -224,7 +288,7 @@ reviews:
|
|
|
224
288
|
1. align with the extant convention
|
|
225
289
|
2. or flag as an open question if the extant convention seems wrong
|
|
226
290
|
|
|
227
|
-
#
|
|
291
|
+
# 14. behavior coverage
|
|
228
292
|
- slug: has-behavior-declaration-coverage
|
|
229
293
|
say: |
|
|
230
294
|
review for coverage of the behavior declaration.
|
|
@@ -241,7 +305,7 @@ reviews:
|
|
|
241
305
|
|
|
242
306
|
fix all gaps before you continue.
|
|
243
307
|
|
|
244
|
-
#
|
|
308
|
+
# 15. behavior adherance
|
|
245
309
|
- slug: has-behavior-declaration-adherance
|
|
246
310
|
say: |
|
|
247
311
|
review for adherance to the behavior declaration.
|
|
@@ -258,7 +322,7 @@ reviews:
|
|
|
258
322
|
|
|
259
323
|
fix all gaps before you continue.
|
|
260
324
|
|
|
261
|
-
#
|
|
325
|
+
# 16. standards adherance
|
|
262
326
|
- slug: has-role-standards-adherance
|
|
263
327
|
say: |
|
|
264
328
|
review for adherance to mechanic role standards.
|
|
@@ -278,7 +342,7 @@ reviews:
|
|
|
278
342
|
|
|
279
343
|
fix all gaps before you continue.
|
|
280
344
|
|
|
281
|
-
#
|
|
345
|
+
# 17. standards coverage
|
|
282
346
|
- slug: has-role-standards-coverage
|
|
283
347
|
say: |
|
|
284
348
|
review for coverage of mechanic role standards.
|
package/dist/domain.operations/behavior/init/templates/3.3.1.blueprint.product.v1.guard.light
CHANGED
|
@@ -133,7 +133,71 @@ reviews:
|
|
|
133
133
|
2. eliminate it if not confirmed as required
|
|
134
134
|
3. make the open question very clearly reported
|
|
135
135
|
|
|
136
|
-
# 7.
|
|
136
|
+
# 7. test coverage thoroughness
|
|
137
|
+
- slug: has-thorough-test-coverage
|
|
138
|
+
say: |
|
|
139
|
+
review the blueprint for thorough test coverage declaration.
|
|
140
|
+
|
|
141
|
+
test coverage is MANDATORY and equal weight to implementation.
|
|
142
|
+
a blueprint without thorough test coverage is incomplete.
|
|
143
|
+
|
|
144
|
+
## layer coverage
|
|
145
|
+
|
|
146
|
+
for each codepath in the blueprint, verify test coverage by layer:
|
|
147
|
+
|
|
148
|
+
| layer | required test type |
|
|
149
|
+
|-------|-------------------|
|
|
150
|
+
| transformers (pure computation, format conversion) | unit tests |
|
|
151
|
+
| communicators (sdks, daos, service clients) | integration tests |
|
|
152
|
+
| orchestrators (composition of transformers + communicators) | integration tests |
|
|
153
|
+
| contracts (cli, api, sdk entry points) | integration + acceptance tests |
|
|
154
|
+
|
|
155
|
+
ask for each codepath:
|
|
156
|
+
- does this blueprint declare the appropriate test type for this layer?
|
|
157
|
+
- are transformers covered by unit tests?
|
|
158
|
+
- are communicators covered by integration tests?
|
|
159
|
+
- are orchestrators covered by integration tests?
|
|
160
|
+
- are contracts covered by both integration and acceptance tests?
|
|
161
|
+
|
|
162
|
+
## case coverage
|
|
163
|
+
|
|
164
|
+
for each codepath, verify coverage across case types:
|
|
165
|
+
|
|
166
|
+
| case type | what it must cover |
|
|
167
|
+
|-----------|-------------------|
|
|
168
|
+
| positive | expected inputs → expected outputs |
|
|
169
|
+
| negative | invalid inputs → expected errors |
|
|
170
|
+
| happy path | typical successful flow |
|
|
171
|
+
| edge cases | boundary conditions, empty inputs, max limits |
|
|
172
|
+
|
|
173
|
+
ask for each codepath:
|
|
174
|
+
- are positive cases declared?
|
|
175
|
+
- are negative cases declared?
|
|
176
|
+
- is the happy path covered?
|
|
177
|
+
- are edge cases identified and covered?
|
|
178
|
+
|
|
179
|
+
## snapshot coverage
|
|
180
|
+
|
|
181
|
+
acceptance tests MUST snapshot contract stdouts — exhaustive for positive and negative cases:
|
|
182
|
+
- cli stdout/stderr (success + all error paths)
|
|
183
|
+
- api responses (success + all error responses)
|
|
184
|
+
- sdk returns (success + all thrown errors)
|
|
185
|
+
|
|
186
|
+
ask:
|
|
187
|
+
- does the blueprint declare snapshots for all contract outputs?
|
|
188
|
+
- are snapshots exhaustive for both positive and negative cases?
|
|
189
|
+
- is every error path covered by a snapshot?
|
|
190
|
+
|
|
191
|
+
## test tree
|
|
192
|
+
|
|
193
|
+
verify the blueprint includes a test tree that shows:
|
|
194
|
+
- which test files will be created/updated
|
|
195
|
+
- test file locations match convention
|
|
196
|
+
- test types match layer requirements
|
|
197
|
+
|
|
198
|
+
fix all gaps before you continue.
|
|
199
|
+
|
|
200
|
+
# 8. consistent mechanisms
|
|
137
201
|
- slug: has-consistent-mechanisms
|
|
138
202
|
say: |
|
|
139
203
|
review for new mechanisms that duplicate extant functionality.
|
|
@@ -152,7 +216,7 @@ reviews:
|
|
|
152
216
|
1. replace with the extant mechanism
|
|
153
217
|
2. or flag as an open question if unsure
|
|
154
218
|
|
|
155
|
-
#
|
|
219
|
+
# 9. consistent conventions
|
|
156
220
|
- slug: has-consistent-conventions
|
|
157
221
|
say: |
|
|
158
222
|
review for divergence from extant names and patterns.
|
|
@@ -172,7 +236,7 @@ reviews:
|
|
|
172
236
|
1. align with the extant convention
|
|
173
237
|
2. or flag as an open question if the extant convention seems wrong
|
|
174
238
|
|
|
175
|
-
#
|
|
239
|
+
# 10. behavior coverage
|
|
176
240
|
- slug: has-behavior-declaration-coverage
|
|
177
241
|
say: |
|
|
178
242
|
review for coverage of the behavior declaration.
|
|
@@ -189,7 +253,7 @@ reviews:
|
|
|
189
253
|
|
|
190
254
|
fix all gaps before you continue.
|
|
191
255
|
|
|
192
|
-
#
|
|
256
|
+
# 11. behavior adherance
|
|
193
257
|
- slug: has-behavior-declaration-adherance
|
|
194
258
|
say: |
|
|
195
259
|
review for adherance to the behavior declaration.
|
|
@@ -206,7 +270,7 @@ reviews:
|
|
|
206
270
|
|
|
207
271
|
fix all gaps before you continue.
|
|
208
272
|
|
|
209
|
-
#
|
|
273
|
+
# 12. standards adherance
|
|
210
274
|
- slug: has-role-standards-adherance
|
|
211
275
|
say: |
|
|
212
276
|
review for adherance to mechanic role standards.
|
|
@@ -226,7 +290,7 @@ reviews:
|
|
|
226
290
|
|
|
227
291
|
fix all gaps before you continue.
|
|
228
292
|
|
|
229
|
-
#
|
|
293
|
+
# 13. standards coverage
|
|
230
294
|
- slug: has-role-standards-coverage
|
|
231
295
|
say: |
|
|
232
296
|
review for coverage of mechanic role standards.
|
|
@@ -44,11 +44,65 @@ include a treestruct of codepaths.
|
|
|
44
44
|
|
|
45
45
|
## test coverage
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
test coverage is a MANDATORY requirement, equal weight to implementation.
|
|
48
|
+
a blueprint without thorough test coverage is incomplete.
|
|
49
|
+
|
|
50
|
+
### coverage by layer
|
|
51
|
+
|
|
52
|
+
| layer | scope | test type |
|
|
53
|
+
|-------|-------|-----------|
|
|
54
|
+
| transformers | pure computation, format conversion | unit tests |
|
|
55
|
+
| communicators | sdks, daos, service clients (i/o boundary) | integration tests |
|
|
56
|
+
| orchestrators | composition of transformers + communicators | integration tests |
|
|
57
|
+
| contracts | cli, api, sdk entry points | integration + acceptance tests |
|
|
58
|
+
|
|
59
|
+
### coverage by case
|
|
60
|
+
|
|
61
|
+
for each codepath, declare coverage across:
|
|
62
|
+
|
|
63
|
+
| case type | what it covers |
|
|
64
|
+
|-----------|----------------|
|
|
65
|
+
| positive | expected inputs produce expected outputs |
|
|
66
|
+
| negative | invalid inputs produce expected errors |
|
|
67
|
+
| happy path | typical successful flow |
|
|
68
|
+
| edge cases | boundary conditions, empty inputs, max limits |
|
|
69
|
+
|
|
70
|
+
### snapshots
|
|
71
|
+
|
|
72
|
+
acceptance tests MUST snapshot contract stdouts — exhaustive for positive and negative cases:
|
|
73
|
+
- cli stdout/stderr formats (success + all error paths)
|
|
74
|
+
- api response shapes (success + all error responses)
|
|
75
|
+
- sdk return types (success + all thrown errors)
|
|
76
|
+
|
|
77
|
+
snapshots enable visual review in PRs — verify outputs look correct.
|
|
78
|
+
|
|
79
|
+
### test tree
|
|
80
|
+
|
|
81
|
+
include a treestruct of test coverage for each codepath:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
src/domain.operations/myTransformer/
|
|
85
|
+
├── myTransformer.ts
|
|
86
|
+
└── myTransformer.test.ts # unit: transformer (pure)
|
|
87
|
+
|
|
88
|
+
src/domain.operations/myCommunicator/
|
|
89
|
+
├── myCommunicator.ts
|
|
90
|
+
└── myCommunicator.integration.test.ts # integration: communicator (i/o)
|
|
91
|
+
|
|
92
|
+
src/domain.operations/myOrchestrator/
|
|
93
|
+
├── myOrchestrator.ts
|
|
94
|
+
└── myOrchestrator.integration.test.ts # integration: orchestrator
|
|
95
|
+
|
|
96
|
+
src/contract/cli/myCommand.ts
|
|
97
|
+
└── myCommand.integration.test.ts # integration: contract (also an orchestrator)
|
|
98
|
+
|
|
99
|
+
blackbox/cli/myCommand.acceptance.test.ts # acceptance: contract (blackbox)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**legend:**
|
|
103
|
+
- `[+]` create — test to create
|
|
104
|
+
- `[~]` update — test to update
|
|
105
|
+
- `[○]` retain — test to retain
|
|
52
106
|
|
|
53
107
|
---
|
|
54
108
|
|
|
@@ -14,14 +14,20 @@ reviews:
|
|
|
14
14
|
- is every behavior in 1.vision.md covered?
|
|
15
15
|
- can you point to each test file in the checklist?
|
|
16
16
|
|
|
17
|
+
**if any behavior lacks a test, write the test NOW.** do not pass this gate with gaps.
|
|
18
|
+
|
|
17
19
|
- slug: has-zero-test-skips
|
|
18
20
|
say: |
|
|
19
|
-
double-check: did you verify zero skips?
|
|
21
|
+
double-check: did you verify zero skips — and REMOVE any you found?
|
|
20
22
|
|
|
21
23
|
- no .skip() or .only() found?
|
|
22
24
|
- no silent credential bypasses?
|
|
23
25
|
- no prior failures carried forward?
|
|
24
26
|
|
|
27
|
+
**if you found skips, did you remove them and make those tests pass?**
|
|
28
|
+
|
|
29
|
+
this is buttonup. skips are gaps. gaps get fixed, not noted.
|
|
30
|
+
|
|
25
31
|
- slug: has-all-tests-passed
|
|
26
32
|
say: |
|
|
27
33
|
double-check: did all tests pass? prove it.
|
|
@@ -93,7 +99,10 @@ reviews:
|
|
|
93
99
|
- does the test follow the BDD given/when/then structure?
|
|
94
100
|
- does each `when([tN])` step exist?
|
|
95
101
|
|
|
96
|
-
if any journey was planned but not implemented, go back and add it
|
|
102
|
+
**if any journey was planned but not implemented, go back and add it NOW.**
|
|
103
|
+
|
|
104
|
+
this is buttonup. absent journey tests = incomplete implementation.
|
|
105
|
+
test coverage proves prod coverage. no test = no proof = not done.
|
|
97
106
|
|
|
98
107
|
- slug: has-contract-output-variants-snapped
|
|
99
108
|
say: |
|
|
@@ -122,11 +131,13 @@ reviews:
|
|
|
122
131
|
- absent variants mean blind spots in review
|
|
123
132
|
- exhaustive coverage proves the contract works for all callers
|
|
124
133
|
|
|
125
|
-
**zero leniency.** if a contract lacks any variant, add the test case
|
|
134
|
+
**zero leniency.** if a contract lacks any variant, add the test case NOW.
|
|
126
135
|
|
|
127
136
|
if you find yourself about to say "this variant isn't worth a snapshot" — stop.
|
|
128
137
|
that is the variant that will break in prod. snap it.
|
|
129
138
|
|
|
139
|
+
this is buttonup. absent snapshots = absent proof. add them or fail this gate.
|
|
140
|
+
|
|
130
141
|
- slug: has-snap-changes-rationalized
|
|
131
142
|
say: |
|
|
132
143
|
double-check: is every `.snap` file change intentional and justified?
|
|
@@ -191,6 +202,30 @@ reviews:
|
|
|
191
202
|
- do they have the `.play.` suffix?
|
|
192
203
|
- if not supported, is the fallback convention used?
|
|
193
204
|
|
|
205
|
+
- slug: has-fixed-all-gaps
|
|
206
|
+
say: |
|
|
207
|
+
final buttonup check: did you FIX every gap you found, or just detect it?
|
|
208
|
+
|
|
209
|
+
**this is the buttonup phase. detection is not enough — you must fix.**
|
|
210
|
+
|
|
211
|
+
look back at all the reviews above. for every gap you identified:
|
|
212
|
+
- absent test coverage → did you WRITE the test?
|
|
213
|
+
- absent prod coverage → did you IMPLEMENT the behavior?
|
|
214
|
+
- failed test → did you FIX the code or test?
|
|
215
|
+
- skipped test → did you REMOVE the skip and make it pass?
|
|
216
|
+
|
|
217
|
+
**zero omissions.** if any review above surfaced a gap, that gap must be fixed before you pass this gate.
|
|
218
|
+
|
|
219
|
+
ask yourself:
|
|
220
|
+
- did i just note the gap, or did i actually fix it?
|
|
221
|
+
- is there any item marked "todo" or "later"? (forbidden)
|
|
222
|
+
- is there any coverage marked incomplete? (forbidden)
|
|
223
|
+
|
|
224
|
+
**if you detected it, you fixed it.** prove it with citations.
|
|
225
|
+
|
|
226
|
+
this is the final self-review. you are about to hand off to peer review.
|
|
227
|
+
prove that all items above were addressed — not deferred.
|
|
228
|
+
|
|
194
229
|
peer:
|
|
195
230
|
# verify contract snapshot exhaustiveness
|
|
196
231
|
- npx rhachet run --repo bhrain --skill review --rules '.agent/repo=bhuild/role=behaver/briefs/practices/behavior.verification/rule.require.contract-snapshot-exhaustiveness.md' --diffs since-main --paths-with '{src,blackbox}/**/*.{test,snap}.ts' --join intersect --output '$route/.reviews/$stone.peer-review.contract-snapshots.md' --mode hard
|
|
@@ -1,10 +1,27 @@
|
|
|
1
|
-
prove the deliverable works via test verification
|
|
1
|
+
prove the deliverable works via test verification — fix all gaps
|
|
2
2
|
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
## .what
|
|
6
6
|
|
|
7
|
-
this is the verification gate
|
|
7
|
+
this is the verification gate — the **buttonup phase**.
|
|
8
|
+
|
|
9
|
+
you cannot pass execution without proof that all tests pass. more importantly: **test coverage enforces prod coverage**. if tests are absent, prod is incomplete. if prod is incomplete, fix it.
|
|
10
|
+
|
|
11
|
+
## .the buttonup mandate: zero omissions
|
|
12
|
+
|
|
13
|
+
**this is not a detection phase. this is a completion phase.**
|
|
14
|
+
|
|
15
|
+
when you find a gap, you do not note it and move on. you **fix it**.
|
|
16
|
+
|
|
17
|
+
| gap type | action |
|
|
18
|
+
|----------|--------|
|
|
19
|
+
| absent test coverage | write the test NOW |
|
|
20
|
+
| absent prod coverage | implement the behavior NOW |
|
|
21
|
+
| failed test | fix the code or fix the test NOW |
|
|
22
|
+
| skipped test | remove the skip and make it pass NOW |
|
|
23
|
+
|
|
24
|
+
**if you detect it, you fix it. no exceptions.**
|
|
8
25
|
|
|
9
26
|
## .strictness: zero tolerance, zero exceptions
|
|
10
27
|
|
|
@@ -18,6 +35,7 @@ this is the verification gate. you cannot pass execution without proof that all
|
|
|
18
35
|
| zero credential excuses | "i don't have creds" is not an excuse. get them, mock them, or fail. |
|
|
19
36
|
| zero skips | .skip() and .only() are forbidden. silent bypasses are forbidden. |
|
|
20
37
|
| zero exceptions | there are no special cases. the rules apply to all. |
|
|
38
|
+
| zero omissions | if you find a gap in coverage, you fix it — test or prod. |
|
|
21
39
|
|
|
22
40
|
**if a blocker prevents tests from run, that is a BLOCKER. full stop.**
|
|
23
41
|
|
|
@@ -29,17 +47,21 @@ you do not proceed. you do not defer. you fix it or you fail the gate.
|
|
|
29
47
|
|
|
30
48
|
your crew is about to review a pr you wrote. they need proof it works — not words, proof. tests are that proof.
|
|
31
49
|
|
|
50
|
+
**test coverage drives prod coverage.** if a behavior lacks a test, that behavior is unproven. unproven behaviors are incomplete deliverables. the test proves the implementation exists and works.
|
|
51
|
+
|
|
32
52
|
without this gate:
|
|
33
53
|
- tests might fail and nobody notices
|
|
34
54
|
- tests might be skipped and nobody notices
|
|
35
55
|
- behaviors might lack coverage and nobody notices
|
|
36
56
|
- broken code ships to peers
|
|
57
|
+
- incomplete implementations slip through
|
|
37
58
|
|
|
38
59
|
with this gate:
|
|
39
60
|
- every test passes or you fix it
|
|
40
61
|
- every behavior has coverage or you add it
|
|
41
62
|
- every skip is removed or justified
|
|
42
63
|
- proven code ships to peers
|
|
64
|
+
- **gaps get fixed, not deferred**
|
|
43
65
|
|
|
44
66
|
**the cardinal rules**:
|
|
45
67
|
1. never leave behavior without true, dependable test coverage
|
|
@@ -165,7 +187,7 @@ update the checklist as you complete each step below.
|
|
|
165
187
|
|
|
166
188
|
---
|
|
167
189
|
|
|
168
|
-
### step 2: verify behavior coverage
|
|
190
|
+
### step 2: verify AND FIX behavior coverage
|
|
169
191
|
|
|
170
192
|
walk through wish and vision:
|
|
171
193
|
- every behavior promised must have an acceptance test
|
|
@@ -174,11 +196,15 @@ walk through wish and vision:
|
|
|
174
196
|
|
|
175
197
|
**why?** your crew trusts the test suite. if a behavior isn't tested, it isn't proven. untested behaviors are unverified promises.
|
|
176
198
|
|
|
177
|
-
|
|
199
|
+
**test coverage enforces prod coverage.** if a test is absent, either:
|
|
200
|
+
1. the behavior was not implemented → IMPLEMENT IT NOW
|
|
201
|
+
2. the behavior was implemented without a test → WRITE THE TEST NOW
|
|
202
|
+
|
|
203
|
+
if a behavior lacks a test, **write one NOW**. do not move on with gaps. update your checklist when done.
|
|
178
204
|
|
|
179
205
|
---
|
|
180
206
|
|
|
181
|
-
### step 3: verify zero skips
|
|
207
|
+
### step 3: verify AND FIX zero skips
|
|
182
208
|
|
|
183
209
|
scan for forbidden patterns:
|
|
184
210
|
- `.skip()` or `.only()` in test files
|
|
@@ -187,11 +213,16 @@ scan for forbidden patterns:
|
|
|
187
213
|
|
|
188
214
|
**why?** failures are better than skips. skips hide problems. failures expose them. a skipped test is a lie — it pretends coverage exists when it doesn't.
|
|
189
215
|
|
|
190
|
-
if you find skips
|
|
216
|
+
**this is buttonup.** if you find skips:
|
|
217
|
+
1. REMOVE the skip
|
|
218
|
+
2. MAKE the test pass (fix the code or fix the test)
|
|
219
|
+
3. update your checklist
|
|
220
|
+
|
|
221
|
+
do not note skips and move on. fix them. all tests must run.
|
|
191
222
|
|
|
192
223
|
---
|
|
193
224
|
|
|
194
|
-
### step 4: run all tests
|
|
225
|
+
### step 4: run all tests AND FIX all failures
|
|
195
226
|
|
|
196
227
|
run each test suite and **cite the exact command and output**.
|
|
197
228
|
|
|
@@ -206,7 +237,12 @@ npm run test:acceptance # cite exit code + test count
|
|
|
206
237
|
|
|
207
238
|
all must pass — no exceptions. no deferrals. no "i'll fix it later."
|
|
208
239
|
|
|
209
|
-
if tests fail, fix them. that is the job.
|
|
240
|
+
**this is buttonup.** if tests fail, fix them. that is the job.
|
|
241
|
+
|
|
242
|
+
failures indicate one of:
|
|
243
|
+
1. prod code is broken → FIX THE PROD CODE
|
|
244
|
+
2. test has a bug → FIX THE TEST BUG (preserve intention)
|
|
245
|
+
3. coverage gap exists → FILL THE GAP
|
|
210
246
|
|
|
211
247
|
**consider all failures as defects from this pr.** there are no "prior failures."
|
|
212
248
|
|
|
@@ -14,6 +14,8 @@ reviews:
|
|
|
14
14
|
- are commands copy-pasteable?
|
|
15
15
|
- are expected outcomes explicit?
|
|
16
16
|
|
|
17
|
+
**if any instruction is unclear, fix it NOW.** this is buttonup.
|
|
18
|
+
|
|
17
19
|
- slug: has-vision-coverage
|
|
18
20
|
say: |
|
|
19
21
|
double-check: does the playtest cover all behaviors?
|
|
@@ -22,6 +24,8 @@ reviews:
|
|
|
22
24
|
- is every behavior in 1.vision.md verified?
|
|
23
25
|
- are any requirements left untested?
|
|
24
26
|
|
|
27
|
+
**if any behavior lacks playtest coverage, add it NOW.** absent coverage = incomplete.
|
|
28
|
+
|
|
25
29
|
- slug: has-edgecase-coverage
|
|
26
30
|
say: |
|
|
27
31
|
double-check: are edge cases covered?
|
|
@@ -30,6 +34,8 @@ reviews:
|
|
|
30
34
|
- what inputs are unusual but valid?
|
|
31
35
|
- are boundaries tested?
|
|
32
36
|
|
|
37
|
+
**if edge cases are absent, add them NOW.** this is buttonup — no gaps allowed.
|
|
38
|
+
|
|
33
39
|
- slug: has-acceptance-test-citations
|
|
34
40
|
say: |
|
|
35
41
|
coverage check: cite the acceptance test for each playtest step.
|
|
@@ -49,15 +55,39 @@ reviews:
|
|
|
49
55
|
```
|
|
50
56
|
|
|
51
57
|
if a step lacks acceptance test coverage:
|
|
52
|
-
- this is a BLOCKER — write the test before you proceed
|
|
58
|
+
- this is a BLOCKER — write the test NOW, before you proceed
|
|
53
59
|
- "untestable via automation" is almost never true — find a way
|
|
54
60
|
|
|
55
61
|
**zero gaps.** if you cannot cite a test, the step is unproven.
|
|
56
62
|
unproven steps do not pass this gate.
|
|
57
63
|
|
|
64
|
+
**this is buttonup.** test coverage enforces prod coverage.
|
|
65
|
+
absent test = unproven behavior = incomplete implementation = fix it NOW.
|
|
66
|
+
|
|
67
|
+
- slug: has-fixed-all-gaps
|
|
68
|
+
say: |
|
|
69
|
+
buttonup check: did you FIX every gap you found, or just detect it?
|
|
70
|
+
|
|
71
|
+
**this is the buttonup phase. detection is not enough — you must fix.**
|
|
72
|
+
|
|
73
|
+
look back at all the reviews above. for every gap you identified:
|
|
74
|
+
- playtest step lacked acceptance test → did you WRITE the test?
|
|
75
|
+
- playtest revealed broken behavior → did you FIX the behavior?
|
|
76
|
+
- playtest revealed UX friction → did you FIX the UX?
|
|
77
|
+
- playtest step was ambiguous → did you CLARIFY it?
|
|
78
|
+
|
|
79
|
+
**zero omissions.** if any review above surfaced a gap, that gap must be fixed before you pass this gate.
|
|
80
|
+
|
|
81
|
+
ask yourself:
|
|
82
|
+
- did i just note the gap, or did i actually fix it?
|
|
83
|
+
- is there any item marked "todo" or "needs work"? (forbidden)
|
|
84
|
+
- is there any step without acceptance test citation? (forbidden)
|
|
85
|
+
|
|
86
|
+
**if you detected it, you fixed it.** prove it with citations.
|
|
87
|
+
|
|
58
88
|
- slug: has-self-run-verification
|
|
59
89
|
say: |
|
|
60
|
-
|
|
90
|
+
final proof: did you run the playtest yourself?
|
|
61
91
|
|
|
62
92
|
**zero self-skip.** you must run every step before emit.
|
|
63
93
|
|
|
@@ -75,11 +105,15 @@ reviews:
|
|
|
75
105
|
- did you fix the instructions?
|
|
76
106
|
- did you update expected outcomes?
|
|
77
107
|
- is the playtest now accurate to what you observed?
|
|
108
|
+
- **did you fix any broken behaviors you discovered?**
|
|
78
109
|
|
|
79
110
|
the foreman deserves a playtest that works. prove it works by self-test first.
|
|
80
111
|
|
|
81
112
|
**if you did not run it yourself, you did not verify it.**
|
|
82
113
|
this is a BLOCKER, not a suggestion.
|
|
83
114
|
|
|
115
|
+
**this is the final proof.** you ran it, it worked, all gaps are fixed.
|
|
116
|
+
you are ready to hand off to foreman approval.
|
|
117
|
+
|
|
84
118
|
judges:
|
|
85
119
|
- npx rhachet run --repo bhrain --skill route.stone.judge --mechanism approved? --stone $stone --route $route
|
|
@@ -1,12 +1,29 @@
|
|
|
1
|
-
emit a playtest for foreman byhand verification
|
|
1
|
+
emit a playtest for foreman byhand verification — fix all gaps found
|
|
2
2
|
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
## .what
|
|
6
6
|
|
|
7
|
-
this is the playtest gate
|
|
7
|
+
this is the playtest gate — the **final buttonup phase**.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
you emit a step-by-step byhand quality assurance checklist that your crew can walk through to verify the deliverable feels right.
|
|
10
|
+
|
|
11
|
+
automated tests prove the code works. the playtest proves the experience works. **if the playtest reveals gaps, you fix them.**
|
|
12
|
+
|
|
13
|
+
## .the buttonup mandate: zero omissions
|
|
14
|
+
|
|
15
|
+
**this is not a detection phase. this is a completion phase.**
|
|
16
|
+
|
|
17
|
+
when you find a gap — while you write the playtest OR while you run it yourself — you **fix it**.
|
|
18
|
+
|
|
19
|
+
| gap type | action |
|
|
20
|
+
|----------|--------|
|
|
21
|
+
| playtest step lacks acceptance test | write the acceptance test NOW |
|
|
22
|
+
| playtest reveals broken behavior | fix the behavior NOW |
|
|
23
|
+
| playtest reveals UX friction | fix the UX NOW |
|
|
24
|
+
| playtest step is ambiguous | clarify it NOW |
|
|
25
|
+
|
|
26
|
+
**if you detect it, you fix it. no exceptions.**
|
|
10
27
|
|
|
11
28
|
## .strictness: zero tolerance, zero exceptions
|
|
12
29
|
|
|
@@ -18,6 +35,7 @@ automated tests prove the code works. the playtest proves the experience works.
|
|
|
18
35
|
| zero untested paths | every playtest step must have automated coverage |
|
|
19
36
|
| zero self-skip | you must run the playtest yourself before emit |
|
|
20
37
|
| zero ambiguity | every step must be copy-pasteable with explicit expected output |
|
|
38
|
+
| zero omissions | if playtest reveals a gap, you fix it before you emit |
|
|
21
39
|
|
|
22
40
|
**every playtest step maps to an acceptance test.** if a step lacks automated coverage, write the test first.
|
|
23
41
|
|
|
@@ -29,6 +47,8 @@ automated tests prove the code works. the playtest proves the experience works.
|
|
|
29
47
|
|
|
30
48
|
**the playtest is a contract.** it says: "if you follow these steps and all pass as described, the deliverable is complete." it's explicit proof, not implicit trust.
|
|
31
49
|
|
|
50
|
+
**test coverage enforces prod coverage.** every playtest step must trace to an acceptance test. if you cannot cite the test, the behavior is unproven. unproven = incomplete = fix it.
|
|
51
|
+
|
|
32
52
|
## .how
|
|
33
53
|
|
|
34
54
|
reference the below for full context
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "rhachet-roles-bhuild",
|
|
3
3
|
"author": "ehmpathy",
|
|
4
4
|
"description": "roles for building resilient systems, via rhachet",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.17.1",
|
|
6
6
|
"repository": "ehmpathy/rhachet-roles-bhuild",
|
|
7
7
|
"homepage": "https://github.com/ehmpathy/rhachet-roles-bhuild",
|
|
8
8
|
"keywords": [
|
|
@@ -89,12 +89,12 @@
|
|
|
89
89
|
"esbuild-register": "3.6.0",
|
|
90
90
|
"husky": "8.0.3",
|
|
91
91
|
"jest": "30.2.0",
|
|
92
|
-
"rhachet": "1.39.
|
|
92
|
+
"rhachet": "1.39.9",
|
|
93
93
|
"rhachet-brains-anthropic": "0.4.0",
|
|
94
94
|
"rhachet-brains-xai": "0.3.3",
|
|
95
|
-
"rhachet-roles-bhrain": "0.23.
|
|
95
|
+
"rhachet-roles-bhrain": "0.23.11",
|
|
96
96
|
"rhachet-roles-bhuild": "link:.",
|
|
97
|
-
"rhachet-roles-ehmpathy": "1.34.
|
|
97
|
+
"rhachet-roles-ehmpathy": "1.34.25",
|
|
98
98
|
"tsc-alias": "1.8.10",
|
|
99
99
|
"tsx": "4.20.6",
|
|
100
100
|
"typescript": "5.4.5",
|