rhachet-roles-bhuild 0.14.0 → 0.14.2
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/1.vision.guard.heavy +9 -4
- package/dist/domain.operations/behavior/init/templates/1.vision.guard.light +9 -4
- package/dist/domain.operations/behavior/init/templates/1.vision.stone +1 -0
- package/dist/domain.operations/behavior/init/templates/3.1.1.research.external.product.access._.v1.stone +22 -0
- package/dist/domain.operations/behavior/init/templates/3.1.1.research.external.product.claims._.v1.stone +24 -0
- package/dist/domain.operations/behavior/init/templates/3.1.1.research.external.product.domain._.v1.stone +24 -0
- package/dist/domain.operations/behavior/init/templates/3.1.1.research.external.product.domain.terms.v1.stone +22 -0
- package/dist/domain.operations/behavior/init/templates/3.1.1.research.external.product.references._.v1.stone +22 -0
- package/dist/domain.operations/behavior/init/templates/3.1.2.research.external.factory.oss.levers._.v1.stone +22 -0
- package/dist/domain.operations/behavior/init/templates/3.1.2.research.external.factory.templates._.v1.stone +22 -0
- package/dist/domain.operations/behavior/init/templates/3.1.2.research.external.factory.testloops._.v1.stone +22 -0
- package/dist/domain.operations/behavior/init/templates/3.2.distill.repros.experience._.v1.guard +55 -0
- package/dist/domain.operations/behavior/init/templates/3.2.distill.repros.experience._.v1.stone +107 -1
- package/dist/domain.operations/behavior/init/templates/3.3.1.blueprint.product.v1.guard.heavy +3 -0
- package/dist/domain.operations/behavior/init/templates/3.3.1.blueprint.product.v1.guard.light +3 -0
- package/dist/domain.operations/behavior/init/templates/5.2.evaluation.v1.guard +51 -0
- package/dist/domain.operations/behavior/init/templates/5.2.evaluation.v1.stone +88 -0
- package/dist/domain.operations/behavior/init/templates/5.3.verification.v1.guard +69 -0
- package/dist/domain.operations/behavior/init/templates/5.3.verification.v1.stone +9 -5
- package/package.json +4 -4
|
@@ -109,9 +109,14 @@ reviews:
|
|
|
109
109
|
are there any open questions? triage them:
|
|
110
110
|
|
|
111
111
|
for each question, ask:
|
|
112
|
-
- can this be answered via
|
|
113
|
-
- can this be answered via extant docs or code? if so, answer it now.
|
|
112
|
+
- can this be answered via logic now? if so, answer it now.
|
|
113
|
+
- can this be answered via extant docs or code now? if so, answer it now.
|
|
114
|
+
- should this be answered via external research later? if so, mark it for research.
|
|
114
115
|
- does only the wisher know the answer? if so, ask the wisher.
|
|
115
116
|
|
|
116
|
-
|
|
117
|
-
|
|
117
|
+
for each question, ensure it is clearly marked as either:
|
|
118
|
+
- [answered] — resolved now
|
|
119
|
+
- [research] — to be answered in the research phase
|
|
120
|
+
- [wisher] — requires wisher input
|
|
121
|
+
|
|
122
|
+
ensure they're enumerated within the vision under "open questions & assumptions"
|
|
@@ -49,9 +49,14 @@ reviews:
|
|
|
49
49
|
are there any open questions? triage them:
|
|
50
50
|
|
|
51
51
|
for each question, ask:
|
|
52
|
-
- can this be answered via
|
|
53
|
-
- can this be answered via extant docs or code? if so, answer it now.
|
|
52
|
+
- can this be answered via logic now? if so, answer it now.
|
|
53
|
+
- can this be answered via extant docs or code now? if so, answer it now.
|
|
54
|
+
- should this be answered via external research later? if so, mark it for research.
|
|
54
55
|
- does only the wisher know the answer? if so, ask the wisher.
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
for each question, ensure it is clearly marked as either:
|
|
58
|
+
- [answered] — resolved now
|
|
59
|
+
- [research] — to be answered in the research phase
|
|
60
|
+
- [wisher] — requires wisher input
|
|
61
|
+
|
|
62
|
+
ensure they're enumerated within the vision under "open questions & assumptions"
|
|
@@ -16,6 +16,28 @@ enumerate each lesson
|
|
|
16
16
|
- number each citation
|
|
17
17
|
- clone exact quotes from each citation
|
|
18
18
|
|
|
19
|
+
cite atleast 21 sources, with links and quotes
|
|
20
|
+
|
|
21
|
+
source diversity
|
|
22
|
+
- require mix of source types: official docs, academic papers, practitioner blogs, conference talks
|
|
23
|
+
- prevents echo chamber from only one type
|
|
24
|
+
|
|
25
|
+
for each citation include
|
|
26
|
+
- publication date (to assess recency)
|
|
27
|
+
- credibility tag: [official] [academic] [practitioner] [tutorial] [blog] [video] [book]
|
|
28
|
+
|
|
29
|
+
conflict detection
|
|
30
|
+
- explicitly note when sources disagree
|
|
31
|
+
- "sources [3] and [7] conflict on X — [3] says A, [7] says B"
|
|
32
|
+
|
|
33
|
+
convergence signal
|
|
34
|
+
- note when multiple independent sources agree
|
|
35
|
+
- stronger confidence when 3+ sources say the same thing
|
|
36
|
+
|
|
37
|
+
anti-patterns
|
|
38
|
+
- research what NOT to do, not just what to do
|
|
39
|
+
- "sources [4], [9], [12] warn against X because..."
|
|
40
|
+
|
|
19
41
|
---
|
|
20
42
|
|
|
21
43
|
emit into $BEHAVIOR_DIR_REL/3.1.1.research.external.product.access._.v1.i1.md
|
|
@@ -14,6 +14,30 @@ use web search to discover and research
|
|
|
14
14
|
- number each citation
|
|
15
15
|
- clone exact quotes from each citation
|
|
16
16
|
|
|
17
|
+
cite atleast 21 sources, with links and quotes
|
|
18
|
+
|
|
19
|
+
source diversity
|
|
20
|
+
- require mix of source types: official docs, academic papers, practitioner blogs, conference talks
|
|
21
|
+
- prevents echo chamber from only one type
|
|
22
|
+
|
|
23
|
+
for each citation include
|
|
24
|
+
- publication date (to assess recency)
|
|
25
|
+
- credibility tag: [official] [academic] [practitioner] [tutorial] [blog] [video] [book]
|
|
26
|
+
|
|
27
|
+
conflict detection
|
|
28
|
+
- explicitly note when sources disagree
|
|
29
|
+
- "sources [3] and [7] conflict on X — [3] says A, [7] says B"
|
|
30
|
+
|
|
31
|
+
convergence signal
|
|
32
|
+
- note when multiple independent sources agree
|
|
33
|
+
- stronger confidence when 3+ sources say the same thing
|
|
34
|
+
|
|
35
|
+
anti-patterns
|
|
36
|
+
- research what NOT to do, not just what to do
|
|
37
|
+
- "sources [4], [9], [12] warn against X because..."
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
17
41
|
explicitly label each claim found from research as either
|
|
18
42
|
- a [FACT] = an indisputable, immutable truth
|
|
19
43
|
or
|
|
@@ -27,6 +27,30 @@ use web search to discover and research
|
|
|
27
27
|
- number each citation
|
|
28
28
|
- clone exact quotes from each citation
|
|
29
29
|
|
|
30
|
+
cite atleast 21 sources, with links and quotes
|
|
31
|
+
|
|
32
|
+
source diversity
|
|
33
|
+
- require mix of source types: official docs, academic papers, practitioner blogs, conference talks
|
|
34
|
+
- prevents echo chamber from only one type
|
|
35
|
+
|
|
36
|
+
for each citation include
|
|
37
|
+
- publication date (to assess recency)
|
|
38
|
+
- credibility tag: [official] [academic] [practitioner] [tutorial] [blog] [video] [book]
|
|
39
|
+
|
|
40
|
+
conflict detection
|
|
41
|
+
- explicitly note when sources disagree
|
|
42
|
+
- "sources [3] and [7] conflict on X — [3] says A, [7] says B"
|
|
43
|
+
|
|
44
|
+
convergence signal
|
|
45
|
+
- note when multiple independent sources agree
|
|
46
|
+
- stronger confidence when 3+ sources say the same thing
|
|
47
|
+
|
|
48
|
+
anti-patterns
|
|
49
|
+
- research what NOT to do, not just what to do
|
|
50
|
+
- "sources [4], [9], [12] warn against X because..."
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
30
54
|
focus on these sdk's for reference, if provided
|
|
31
55
|
-
|
|
32
56
|
|
|
@@ -32,6 +32,28 @@ use web search to discover and research
|
|
|
32
32
|
- number each citation
|
|
33
33
|
- clone exact quotes from each citation
|
|
34
34
|
|
|
35
|
+
cite atleast 21 sources, with links and quotes
|
|
36
|
+
|
|
37
|
+
source diversity
|
|
38
|
+
- require mix of source types: official docs, academic papers, practitioner blogs, conference talks
|
|
39
|
+
- prevents echo chamber from only one type
|
|
40
|
+
|
|
41
|
+
for each citation include
|
|
42
|
+
- publication date (to assess recency)
|
|
43
|
+
- credibility tag: [official] [academic] [practitioner] [tutorial] [blog] [video] [book]
|
|
44
|
+
|
|
45
|
+
conflict detection
|
|
46
|
+
- explicitly note when sources disagree
|
|
47
|
+
- "sources [3] and [7] conflict on X — [3] says A, [7] says B"
|
|
48
|
+
|
|
49
|
+
convergence signal
|
|
50
|
+
- note when multiple independent sources agree
|
|
51
|
+
- stronger confidence when 3+ sources say the same thing
|
|
52
|
+
|
|
53
|
+
anti-patterns
|
|
54
|
+
- research what NOT to do, not just what to do
|
|
55
|
+
- "sources [4], [9], [12] warn against X because..."
|
|
56
|
+
|
|
35
57
|
---
|
|
36
58
|
|
|
37
59
|
explicitly consider parallel concepts from other domains
|
|
@@ -15,6 +15,28 @@ enumerate each lesson
|
|
|
15
15
|
- number each citation
|
|
16
16
|
- clone exact quotes from each citation
|
|
17
17
|
|
|
18
|
+
cite atleast 21 sources, with links and quotes
|
|
19
|
+
|
|
20
|
+
source diversity
|
|
21
|
+
- require mix of source types: official docs, academic papers, practitioner blogs, conference talks
|
|
22
|
+
- prevents echo chamber from only one type
|
|
23
|
+
|
|
24
|
+
for each citation include
|
|
25
|
+
- publication date (to assess recency)
|
|
26
|
+
- credibility tag: [official] [academic] [practitioner] [tutorial] [blog] [video] [book]
|
|
27
|
+
|
|
28
|
+
conflict detection
|
|
29
|
+
- explicitly note when sources disagree
|
|
30
|
+
- "sources [3] and [7] conflict on X — [3] says A, [7] says B"
|
|
31
|
+
|
|
32
|
+
convergence signal
|
|
33
|
+
- note when multiple independent sources agree
|
|
34
|
+
- stronger confidence when 3+ sources say the same thing
|
|
35
|
+
|
|
36
|
+
anti-patterns
|
|
37
|
+
- research what NOT to do, not just what to do
|
|
38
|
+
- "sources [4], [9], [12] warn against X because..."
|
|
39
|
+
|
|
18
40
|
---
|
|
19
41
|
|
|
20
42
|
emit into $BEHAVIOR_DIR_REL/3.1.1.research.external.product.references._.v1.i1.md
|
|
@@ -24,6 +24,28 @@ enumerate each pattern
|
|
|
24
24
|
- number each citation
|
|
25
25
|
- clone exact quotes from each citation
|
|
26
26
|
|
|
27
|
+
cite atleast 21 sources, with links and quotes
|
|
28
|
+
|
|
29
|
+
source diversity
|
|
30
|
+
- require mix of source types: official docs, academic papers, practitioner blogs, conference talks
|
|
31
|
+
- prevents echo chamber from only one type
|
|
32
|
+
|
|
33
|
+
for each citation include
|
|
34
|
+
- publication date (to assess recency)
|
|
35
|
+
- credibility tag: [official] [academic] [practitioner] [tutorial] [blog] [video] [book]
|
|
36
|
+
|
|
37
|
+
conflict detection
|
|
38
|
+
- explicitly note when sources disagree
|
|
39
|
+
- "sources [3] and [7] conflict on X — [3] says A, [7] says B"
|
|
40
|
+
|
|
41
|
+
convergence signal
|
|
42
|
+
- note when multiple independent sources agree
|
|
43
|
+
- stronger confidence when 3+ sources say the same thing
|
|
44
|
+
|
|
45
|
+
anti-patterns
|
|
46
|
+
- research what NOT to do, not just what to do
|
|
47
|
+
- "sources [4], [9], [12] warn against X because..."
|
|
48
|
+
|
|
27
49
|
---
|
|
28
50
|
|
|
29
51
|
emit into $BEHAVIOR_DIR_REL/3.1.2.research.external.factory.oss.levers._.v1.i1.md
|
|
@@ -15,6 +15,28 @@ use web search or the gh api to enumerate the contents of the templates
|
|
|
15
15
|
- number each citation
|
|
16
16
|
- clone exact quotes from each citation
|
|
17
17
|
|
|
18
|
+
cite atleast 21 sources, with links and quotes
|
|
19
|
+
|
|
20
|
+
source diversity
|
|
21
|
+
- require mix of source types: official docs, academic papers, practitioner blogs, conference talks
|
|
22
|
+
- prevents echo chamber from only one type
|
|
23
|
+
|
|
24
|
+
for each citation include
|
|
25
|
+
- publication date (to assess recency)
|
|
26
|
+
- credibility tag: [official] [academic] [practitioner] [tutorial] [blog] [video] [book]
|
|
27
|
+
|
|
28
|
+
conflict detection
|
|
29
|
+
- explicitly note when sources disagree
|
|
30
|
+
- "sources [3] and [7] conflict on X — [3] says A, [7] says B"
|
|
31
|
+
|
|
32
|
+
convergence signal
|
|
33
|
+
- note when multiple independent sources agree
|
|
34
|
+
- stronger confidence when 3+ sources say the same thing
|
|
35
|
+
|
|
36
|
+
anti-patterns
|
|
37
|
+
- research what NOT to do, not just what to do
|
|
38
|
+
- "sources [4], [9], [12] warn against X because..."
|
|
39
|
+
|
|
18
40
|
---
|
|
19
41
|
|
|
20
42
|
emit into $BEHAVIOR_DIR_REL/3.1.2.research.external.factory.templates._.v1.i1.md
|
|
@@ -52,6 +52,28 @@ use web search to discover and research
|
|
|
52
52
|
- number each citation
|
|
53
53
|
- clone exact quotes from each citation
|
|
54
54
|
|
|
55
|
+
cite atleast 21 sources, with links and quotes
|
|
56
|
+
|
|
57
|
+
source diversity
|
|
58
|
+
- require mix of source types: official docs, academic papers, practitioner blogs, conference talks
|
|
59
|
+
- prevents echo chamber from only one type
|
|
60
|
+
|
|
61
|
+
for each citation include
|
|
62
|
+
- publication date (to assess recency)
|
|
63
|
+
- credibility tag: [official] [academic] [practitioner] [tutorial] [blog] [video] [book]
|
|
64
|
+
|
|
65
|
+
conflict detection
|
|
66
|
+
- explicitly note when sources disagree
|
|
67
|
+
- "sources [3] and [7] conflict on X — [3] says A, [7] says B"
|
|
68
|
+
|
|
69
|
+
convergence signal
|
|
70
|
+
- note when multiple independent sources agree
|
|
71
|
+
- stronger confidence when 3+ sources say the same thing
|
|
72
|
+
|
|
73
|
+
anti-patterns
|
|
74
|
+
- research what NOT to do, not just what to do
|
|
75
|
+
- "sources [4], [9], [12] warn against X because..."
|
|
76
|
+
|
|
55
77
|
---
|
|
56
78
|
|
|
57
79
|
remember
|
package/dist/domain.operations/behavior/init/templates/3.2.distill.repros.experience._.v1.guard
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
reviews:
|
|
2
|
+
self:
|
|
3
|
+
- slug: has-critical-paths-identified
|
|
4
|
+
say: |
|
|
5
|
+
double-check: did you identify the critical paths?
|
|
6
|
+
|
|
7
|
+
- are the happy paths marked as critical?
|
|
8
|
+
- for each critical path, is it clear why it must be frictionless?
|
|
9
|
+
- did you consider what would happen if each critical path failed?
|
|
10
|
+
|
|
11
|
+
for each critical path, verify pit of success:
|
|
12
|
+
- narrower inputs: can we constrain inputs to prevent misuse?
|
|
13
|
+
- convenient: can we infer inputs rather than require them?
|
|
14
|
+
- expressive: does it pull into inferred happy path, but allow expression of differences?
|
|
15
|
+
- failsafes: what happens when things go wrong? does it recover gracefully?
|
|
16
|
+
- failfasts: does it fail early and clearly when inputs are invalid?
|
|
17
|
+
- idempotency: can the operation be retried safely?
|
|
18
|
+
|
|
19
|
+
critical paths are the "golden paths" — the flows that most users take.
|
|
20
|
+
if these aren't frictionless, users will fail. fix the friction now.
|
|
21
|
+
|
|
22
|
+
- slug: has-ergonomics-reviewed
|
|
23
|
+
say: |
|
|
24
|
+
double-check: did you review the ergonomics?
|
|
25
|
+
|
|
26
|
+
for each input/output pair:
|
|
27
|
+
- does the input feel natural? if not, how can we simplify it?
|
|
28
|
+
- does the output feel natural? if not, what would be clearer?
|
|
29
|
+
- is there any friction? if so, how can we remove it?
|
|
30
|
+
|
|
31
|
+
pit of success principles:
|
|
32
|
+
- intuitive design: can users succeed without documentation?
|
|
33
|
+
- convenient: can we infer inputs rather than require them?
|
|
34
|
+
- expressive: does it pull into inferred happy path, but allow expression of differences?
|
|
35
|
+
- composable: can this be combined with other operations easily?
|
|
36
|
+
- lower trust contracts: do we validate at boundaries?
|
|
37
|
+
- deeper behavior: do we handle edge cases gracefully?
|
|
38
|
+
|
|
39
|
+
awkward inputs and outputs are bugs. fix them now, before implementation.
|
|
40
|
+
every friction point you leave becomes a support ticket later.
|
|
41
|
+
|
|
42
|
+
- slug: has-play-test-convention
|
|
43
|
+
say: |
|
|
44
|
+
double-check: are journey tests named correctly?
|
|
45
|
+
|
|
46
|
+
journey test files should use `.play.test.ts` suffix:
|
|
47
|
+
- `feature.play.test.ts` — journey test
|
|
48
|
+
- `feature.play.integration.test.ts` — if repo requires integration runner
|
|
49
|
+
- `feature.play.acceptance.test.ts` — if repo requires acceptance runner
|
|
50
|
+
|
|
51
|
+
this distinguishes journey tests (step-by-step user experience tests)
|
|
52
|
+
from unit tests (`.test.ts`) and integration tests (`.integration.test.ts`).
|
|
53
|
+
|
|
54
|
+
if the repo doesn't support `.play.test.ts` directly, plan to use
|
|
55
|
+
`.play.integration.test.ts` or `.play.acceptance.test.ts` instead.
|
package/dist/domain.operations/behavior/init/templates/3.2.distill.repros.experience._.v1.stone
CHANGED
|
@@ -14,12 +14,118 @@ for each user experience in the vision, define how it will be reproduced in test
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
+
## journey test sketches
|
|
18
|
+
|
|
19
|
+
for each experience, sketch the journey test with full BDD structure.
|
|
20
|
+
|
|
21
|
+
### structure
|
|
22
|
+
|
|
23
|
+
journey tests use `given/when/then` blocks with `[tN]` labels:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
given('[case1] {scenario description}')
|
|
27
|
+
when('[t0] before any changes')
|
|
28
|
+
then('{precondition holds}')
|
|
29
|
+
then('input/output matches snapshot') ← snapshot!
|
|
30
|
+
when('[t1] {first action}')
|
|
31
|
+
then('{expected outcome}')
|
|
32
|
+
then('input/output matches snapshot') ← snapshot!
|
|
33
|
+
when('[t2] {second action}')
|
|
34
|
+
then('{expected outcome}')
|
|
35
|
+
then('input/output matches snapshot') ← snapshot!
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### step table
|
|
39
|
+
|
|
40
|
+
for each journey, create a step table:
|
|
41
|
+
|
|
42
|
+
| step | action | user sees |
|
|
43
|
+
|------|--------|-----------|
|
|
44
|
+
| t0 | before any changes | {describe what user sees} |
|
|
45
|
+
| t1 | {first action} | {describe what user sees} |
|
|
46
|
+
| t2 | {second action} | {describe what user sees} |
|
|
47
|
+
|
|
48
|
+
### input/output pairs
|
|
49
|
+
|
|
50
|
+
for each step, document:
|
|
51
|
+
- **input**: what the caller provides
|
|
52
|
+
- **output**: what the caller receives (terminal, screen, response)
|
|
53
|
+
|
|
54
|
+
example (CLI):
|
|
55
|
+
```
|
|
56
|
+
#### t1 success case (snapshot target)
|
|
57
|
+
$ rhx init.behavior --name my-feature
|
|
58
|
+
|
|
59
|
+
init.behavior
|
|
60
|
+
|
|
61
|
+
created .behavior/v2024_03_12.my-feature/
|
|
62
|
+
├─ 0.wish.md
|
|
63
|
+
└─ ... (more files)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
example (SDK):
|
|
67
|
+
```
|
|
68
|
+
#### t1 success case (snapshot target)
|
|
69
|
+
// input
|
|
70
|
+
const customer = await sdk.createCustomer({ email: 'test@example.com' });
|
|
71
|
+
|
|
72
|
+
// output
|
|
73
|
+
{ id: 'cus_abc123', email: 'test@example.com', status: 'active' }
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### snapshot coverage plan
|
|
77
|
+
|
|
78
|
+
mark which outputs need `.snap` files:
|
|
79
|
+
|
|
80
|
+
- [ ] t0 before state → `.snap`
|
|
81
|
+
- [ ] t1 success input/output → `.snap`
|
|
82
|
+
- [ ] t1 error input/output → `.snap`
|
|
83
|
+
- [ ] t2 after state → `.snap`
|
|
84
|
+
|
|
85
|
+
### file convention
|
|
86
|
+
|
|
87
|
+
journey test files use `.play.test.ts` suffix:
|
|
88
|
+
- `feature.play.test.ts` — journey test
|
|
89
|
+
- `feature.play.integration.test.ts` — journey test run as integration
|
|
90
|
+
- `feature.play.acceptance.test.ts` — journey test run as acceptance
|
|
91
|
+
|
|
92
|
+
this distinguishes journey tests from unit tests (`.test.ts`).
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## critical paths
|
|
97
|
+
|
|
98
|
+
identify the happy paths that must be frictionless.
|
|
99
|
+
|
|
100
|
+
| critical path | description | why critical |
|
|
101
|
+
|---------------|-------------|--------------|
|
|
102
|
+
| {path 1} | {what user does} | {why this must work} |
|
|
103
|
+
| {path 2} | {what user does} | {why this must work} |
|
|
104
|
+
|
|
105
|
+
critical paths are the "golden paths" — the main flows that most users take.
|
|
106
|
+
if these fail or have friction, the product fails.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## ergonomics review
|
|
111
|
+
|
|
112
|
+
for each input/output pair, review:
|
|
113
|
+
- does the input feel natural? is it what the user would expect to provide?
|
|
114
|
+
- does the output feel natural? is it what the user would expect to see?
|
|
115
|
+
- is there friction? what could be smoother?
|
|
116
|
+
|
|
117
|
+
| journey | input ergonomics | output ergonomics | friction notes |
|
|
118
|
+
|---------|------------------|-------------------|----------------|
|
|
119
|
+
| {journey 1} | {natural / awkward} | {natural / awkward} | {any friction} |
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
17
123
|
## reproduction feasibility
|
|
18
124
|
|
|
19
125
|
for each experience, confirm it can be reproduced:
|
|
20
126
|
- what test utilities are available?
|
|
21
127
|
- what setup is required?
|
|
22
|
-
- show a concrete test sketch
|
|
128
|
+
- show a concrete test sketch (use journey structure above)
|
|
23
129
|
|
|
24
130
|
---
|
|
25
131
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
reviews:
|
|
2
|
+
self:
|
|
3
|
+
- slug: has-complete-implementation-record
|
|
4
|
+
say: |
|
|
5
|
+
double-check: did you document everything that was implemented?
|
|
6
|
+
|
|
7
|
+
- is every file change recorded in the filediff tree?
|
|
8
|
+
- is every codepath change recorded in the codepath tree?
|
|
9
|
+
- is every test recorded in the test coverage section?
|
|
10
|
+
|
|
11
|
+
silent changes are dangerous. if it's not documented, it didn't happen.
|
|
12
|
+
go back and check git diff against origin/main.
|
|
13
|
+
|
|
14
|
+
- slug: has-divergence-analysis
|
|
15
|
+
say: |
|
|
16
|
+
double-check: did you find all the divergences?
|
|
17
|
+
|
|
18
|
+
compare blueprint vs implementation for each section:
|
|
19
|
+
- summary: does the actual match the declared?
|
|
20
|
+
- filediff: are all files accounted for?
|
|
21
|
+
- codepath: are all codepaths accounted for?
|
|
22
|
+
- test coverage: are all tests accounted for?
|
|
23
|
+
|
|
24
|
+
be skeptical. assume you missed something.
|
|
25
|
+
what would a hostile reviewer find that you overlooked?
|
|
26
|
+
|
|
27
|
+
- slug: has-divergence-addressed
|
|
28
|
+
say: |
|
|
29
|
+
double-check: did you address each divergence properly?
|
|
30
|
+
|
|
31
|
+
for each divergence:
|
|
32
|
+
- if repaired: did you actually make the fix? is it visible in git?
|
|
33
|
+
- if backed up: is the rationale convincing? would a skeptic accept it?
|
|
34
|
+
|
|
35
|
+
question each backup skeptically:
|
|
36
|
+
- is this truly an improvement, or just laziness?
|
|
37
|
+
- did we just not want to do the work the blueprint required?
|
|
38
|
+
- could this divergence cause problems later?
|
|
39
|
+
|
|
40
|
+
a backup without strong rationale is a defect. repair it instead.
|
|
41
|
+
|
|
42
|
+
- slug: has-no-silent-scope-creep
|
|
43
|
+
say: |
|
|
44
|
+
double-check: did any scope creep into the implementation?
|
|
45
|
+
|
|
46
|
+
- did you add features not in the blueprint?
|
|
47
|
+
- did you change things "while you were in there"?
|
|
48
|
+
- did you refactor code unrelated to the wish?
|
|
49
|
+
|
|
50
|
+
scope creep is a divergence. document it and address it.
|
|
51
|
+
enumerate each with [repair] or [backup] decision in the review file.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
evaluate what was implemented against the blueprint
|
|
2
|
+
|
|
3
|
+
.what = articulate exactly what was implemented, then check for divergences from blueprint.
|
|
4
|
+
|
|
5
|
+
.why = the blueprint declared what the execution would adhere to.
|
|
6
|
+
- divergences may be intentional improvements or accidental drift
|
|
7
|
+
- each divergence must be either repaired or backed up with rationale
|
|
8
|
+
- this gate prevents silent deviations from approved design
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
reference the blueprint:
|
|
13
|
+
- $BEHAVIOR_DIR_REL/3.3.1.blueprint.product.v1.i1.md
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## summary (as implemented)
|
|
18
|
+
|
|
19
|
+
state what was actually built. mirror the blueprint summary structure.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## filediff tree (as implemented)
|
|
24
|
+
|
|
25
|
+
include a treestruct of filediffs that were actually made.
|
|
26
|
+
|
|
27
|
+
**legend:**
|
|
28
|
+
- `[+] created` — file created
|
|
29
|
+
- `[~] updated` — file updated
|
|
30
|
+
- `[-] deleted` — file deleted
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## codepath tree (as implemented)
|
|
35
|
+
|
|
36
|
+
include a treestruct of codepaths that were actually implemented.
|
|
37
|
+
|
|
38
|
+
**legend:**
|
|
39
|
+
- `[+]` created — codepath created
|
|
40
|
+
- `[~]` updated — codepath updated
|
|
41
|
+
- `[○]` retained — codepath retained
|
|
42
|
+
- `[-]` deleted — codepath deleted
|
|
43
|
+
- `[←]` reused — codepath reused from elsewhere
|
|
44
|
+
- `[→]` ejected — codepath decomposed for reuse
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## test coverage (as implemented)
|
|
49
|
+
|
|
50
|
+
document what tests were actually written:
|
|
51
|
+
- unit tests
|
|
52
|
+
- integration tests
|
|
53
|
+
- acceptance tests
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## divergence analysis
|
|
58
|
+
|
|
59
|
+
for each section (summary, filediff, codepath, test coverage), compare:
|
|
60
|
+
- what the blueprint declared
|
|
61
|
+
- what was actually implemented
|
|
62
|
+
|
|
63
|
+
### divergences found
|
|
64
|
+
|
|
65
|
+
| section | blueprint declared | actual implemented | divergence type |
|
|
66
|
+
|---------|-------------------|-------------------|-----------------|
|
|
67
|
+
| ... | ... | ... | added/removed/changed |
|
|
68
|
+
|
|
69
|
+
### divergence resolution
|
|
70
|
+
|
|
71
|
+
for each divergence, you must either:
|
|
72
|
+
|
|
73
|
+
**repair** — fix the implementation to match the blueprint:
|
|
74
|
+
- what needs to change to match blueprint?
|
|
75
|
+
- make the change, then update the "as implemented" section above
|
|
76
|
+
|
|
77
|
+
**backup** — document why the divergence is acceptable:
|
|
78
|
+
- why did the implementation diverge?
|
|
79
|
+
- why is the divergence better than the blueprint?
|
|
80
|
+
- should the blueprint be updated for future reference?
|
|
81
|
+
|
|
82
|
+
| divergence | resolution | rationale |
|
|
83
|
+
|------------|------------|-----------|
|
|
84
|
+
| ... | repair/backup | ... |
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
emit into $BEHAVIOR_DIR_REL/5.2.evaluation.v1.i1.md
|
|
@@ -52,3 +52,72 @@ reviews:
|
|
|
52
52
|
|
|
53
53
|
to "fix tests" via changed intent is not a fix — it is at worst
|
|
54
54
|
malicious deception, at best reckless negligence. unacceptable.
|
|
55
|
+
|
|
56
|
+
- slug: has-journey-tests-from-repros
|
|
57
|
+
say: |
|
|
58
|
+
double-check: did you implement each journey sketched in repros?
|
|
59
|
+
|
|
60
|
+
look back at the repros artifact:
|
|
61
|
+
- $BEHAVIOR_DIR_REL/3.2.distill.repros.experience.*.md
|
|
62
|
+
|
|
63
|
+
for each journey test sketch in repros:
|
|
64
|
+
- is there a test file for it?
|
|
65
|
+
- does the test follow the BDD given/when/then structure?
|
|
66
|
+
- does each `when([tN])` step exist?
|
|
67
|
+
|
|
68
|
+
if any journey was planned but not implemented, go back and add it.
|
|
69
|
+
|
|
70
|
+
- slug: has-snapshot-coverage
|
|
71
|
+
say: |
|
|
72
|
+
double-check: do snapshots capture input/output for caller visibility?
|
|
73
|
+
|
|
74
|
+
for each journey test:
|
|
75
|
+
- does it have `.toMatchSnapshot()` or equivalent assertions?
|
|
76
|
+
- does the snapshot show what the caller would actually see?
|
|
77
|
+
- for CLI: is stdout/stderr captured?
|
|
78
|
+
- for UI: are screens captured?
|
|
79
|
+
- for SDK: are responses captured?
|
|
80
|
+
|
|
81
|
+
snapshots let reviewers see the actual output without the need to run the code.
|
|
82
|
+
if snapshots are absent, the reviewer can't verify the user experience.
|
|
83
|
+
|
|
84
|
+
- slug: has-critical-paths-frictionless
|
|
85
|
+
say: |
|
|
86
|
+
double-check: are the critical paths frictionless in practice?
|
|
87
|
+
|
|
88
|
+
look back at the repros artifact for critical paths:
|
|
89
|
+
- $BEHAVIOR_DIR_REL/3.2.distill.repros.experience.*.md
|
|
90
|
+
|
|
91
|
+
for each critical path:
|
|
92
|
+
- run through it manually — is it smooth?
|
|
93
|
+
- are there unexpected errors?
|
|
94
|
+
- does it feel effortless to the user?
|
|
95
|
+
|
|
96
|
+
critical paths must "just work." if there's friction, fix it now.
|
|
97
|
+
|
|
98
|
+
- slug: has-ergonomics-validated
|
|
99
|
+
say: |
|
|
100
|
+
double-check: does the actual input/output match what felt right at repros?
|
|
101
|
+
|
|
102
|
+
compare the implemented input/output to what was sketched in repros:
|
|
103
|
+
- does the actual input match the planned input?
|
|
104
|
+
- does the actual output match the planned output?
|
|
105
|
+
- did the design change between repros and implementation?
|
|
106
|
+
|
|
107
|
+
if the ergonomics drifted, either:
|
|
108
|
+
- update repros to reflect the better design, or
|
|
109
|
+
- fix the implementation to match the planned ergonomics
|
|
110
|
+
|
|
111
|
+
- slug: has-play-test-convention
|
|
112
|
+
say: |
|
|
113
|
+
double-check: are journey test files named correctly?
|
|
114
|
+
|
|
115
|
+
journey tests should use `.play.test.ts` suffix:
|
|
116
|
+
- `feature.play.test.ts` — journey test
|
|
117
|
+
- `feature.play.integration.test.ts` — if repo requires integration runner
|
|
118
|
+
- `feature.play.acceptance.test.ts` — if repo requires acceptance runner
|
|
119
|
+
|
|
120
|
+
verify:
|
|
121
|
+
- are journey tests in the right location?
|
|
122
|
+
- do they have the `.play.` suffix?
|
|
123
|
+
- if not supported, is the fallback convention used?
|
|
@@ -36,6 +36,7 @@ reference the below for full context
|
|
|
36
36
|
- $BEHAVIOR_DIR_REL/0.wish.md
|
|
37
37
|
- $BEHAVIOR_DIR_REL/1.vision.md
|
|
38
38
|
- $BEHAVIOR_DIR_REL/2.1.criteria.blackbox.md (if declared)
|
|
39
|
+
- $BEHAVIOR_DIR_REL/3.2.distill.repros.experience.*.md (if declared) ← **repros artifact**
|
|
39
40
|
|
|
40
41
|
---
|
|
41
42
|
|
|
@@ -51,11 +52,14 @@ this is your roadmap. emit it first, then work through it step by step.
|
|
|
51
52
|
```
|
|
52
53
|
## verification checklist
|
|
53
54
|
|
|
54
|
-
### behavior coverage
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
|
55
|
+
### behavior coverage (with reference to repros)
|
|
56
|
+
|
|
57
|
+
for each journey sketched in repros, verify it was implemented with snapshots.
|
|
58
|
+
|
|
59
|
+
| journey (from repros) | test file | snapshots? | critical path? | ergonomics ok? | status |
|
|
60
|
+
|-----------------------|-----------|------------|----------------|----------------|--------|
|
|
61
|
+
| {journey 1} | {path} | ✓ / ✗ | ✓ frictionless / needs work | ✓ natural / needs work | ⏳ |
|
|
62
|
+
| {journey 2} | {path} | ✓ / ✗ | ✓ frictionless / needs work | ✓ natural / needs work | ⏳ |
|
|
59
63
|
...
|
|
60
64
|
|
|
61
65
|
### zero skips verified
|
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.14.
|
|
5
|
+
"version": "0.14.2",
|
|
6
6
|
"repository": "ehmpathy/rhachet-roles-bhuild",
|
|
7
7
|
"homepage": "https://github.com/ehmpathy/rhachet-roles-bhuild",
|
|
8
8
|
"keywords": [
|
|
@@ -89,11 +89,11 @@
|
|
|
89
89
|
"esbuild-register": "3.6.0",
|
|
90
90
|
"husky": "8.0.3",
|
|
91
91
|
"jest": "30.2.0",
|
|
92
|
-
"rhachet": "1.37.
|
|
92
|
+
"rhachet": "1.37.15",
|
|
93
93
|
"rhachet-brains-anthropic": "0.3.3",
|
|
94
|
-
"rhachet-roles-bhrain": "0.
|
|
94
|
+
"rhachet-roles-bhrain": "0.18.1",
|
|
95
95
|
"rhachet-roles-bhuild": "link:.",
|
|
96
|
-
"rhachet-roles-ehmpathy": "1.27.
|
|
96
|
+
"rhachet-roles-ehmpathy": "1.27.13",
|
|
97
97
|
"tsc-alias": "1.8.10",
|
|
98
98
|
"tsx": "4.20.6",
|
|
99
99
|
"typescript": "5.4.5",
|