@pmelab/gtd 49.0.0 → 51.0.0

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 (60) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +16 -3
  3. package/dist/chunks/{reserved-CYZ1bSBy.mjs → reserved-CUkk9XgL.mjs} +151 -5
  4. package/dist/chunks/{review-BewyJflS.mjs → review-BaCXlIT2.mjs} +84 -20
  5. package/dist/chunks/{steering-BXwjmocB.mjs → steering-DtUVUz9l.mjs} +44 -14
  6. package/dist/chunks/{tail-C1Oi2YEy.mjs → tail-CX6Pdsql.mjs} +1 -1
  7. package/dist/gtd.bundle.mjs +22 -5
  8. package/dist/steering.mjs +2 -2
  9. package/dist/testkit.mjs +1 -1
  10. package/dist/web/main.js +27 -3
  11. package/dist/workflow-kit.mjs +1 -1
  12. package/dist/workflows/cleanup.mjs +2 -2
  13. package/dist/workflows/feature.mjs +144 -11
  14. package/dist/workflows/fix.mjs +3 -3
  15. package/dist/workflows/review.mjs +3 -3
  16. package/dist/workflows/rollout.mjs +1 -1
  17. package/dist/workflows.mjs +415 -42
  18. package/package.json +1 -1
  19. package/src/steering/index.ts +1 -0
  20. package/src/steering/review.test.ts +60 -2
  21. package/src/steering/review.ts +66 -9
  22. package/src/workflows/feature/coverage.feature +1 -0
  23. package/src/workflows/feature/fast-path.feature +1 -0
  24. package/src/workflows/feature/feature.ts +4 -1
  25. package/src/workflows/feature/flag-mode.feature +1 -1
  26. package/src/workflows/feature/lens-models.feature +1 -0
  27. package/src/workflows/feature/lens-review.feature +17 -4
  28. package/src/workflows/feature/one-step-land.feature +1 -0
  29. package/src/workflows/feature/prototype-rounds.feature +152 -0
  30. package/src/workflows/feature/prototype.feature +419 -0
  31. package/src/workflows/feature/prototype.test.ts +43 -0
  32. package/src/workflows/feature/prototype.ts +181 -0
  33. package/src/workflows/feature/refactor-absorbs.feature +9 -1
  34. package/src/workflows/feature/refactor-first.feature +13 -3
  35. package/src/workflows/feature/refactor-rebuild.feature +29 -5
  36. package/src/workflows/feature/refactor-review.feature +111 -13
  37. package/src/workflows/feature/refactor.test.ts +14 -4
  38. package/src/workflows/feature/refactor.ts +2 -0
  39. package/src/workflows/feature/review-answers.feature +9 -1
  40. package/src/workflows/feature/review-gate.feature +21 -3
  41. package/src/workflows/feature/reviewer-walkthrough.feature +15 -3
  42. package/src/workflows/feature/seam-rejection.feature +1 -0
  43. package/src/workflows/feature/seam.feature +1 -0
  44. package/src/workflows/feature/seam.test.ts +3 -2
  45. package/src/workflows/feature/seam.ts +19 -5
  46. package/src/workflows/feature/severity-budget.feature +112 -0
  47. package/src/workflows/feature/severity-sorted-review.feature +198 -0
  48. package/src/workflows/feature/slice-findings.feature +15 -2
  49. package/src/workflows/feature/slicing-cap.feature +9 -0
  50. package/src/workflows/feature/slicing.feature +1 -0
  51. package/src/workflows/feature/standards.feature +5 -0
  52. package/src/workflows/shared/options.ts +1 -0
  53. package/src/workflows/shared/prose.ts +6 -0
  54. package/src/workflows/shared/review.ts +124 -18
  55. package/src/workflows/shared/skills.test.ts +4 -0
  56. package/src/workflows/shared/skills.ts +5 -0
  57. package/src/workflows/shared/steps.ts +1 -0
  58. package/src/workflows/shared/text.test.ts +90 -0
  59. package/src/workflows/shared/text.ts +181 -4
  60. package/src/workflows/shared/vars.ts +3 -0
@@ -9,6 +9,7 @@ Feature: a refactor-first judgment walks one fixed path to the review gate
9
9
 
10
10
  Background:
11
11
  Given the shipped workflows, as gtd install scaffolds them
12
+ And an environment variable "GTD_PROTOTYPEROUNDS" set to "0"
12
13
  And an environment variable "GTD_QUALITYREVIEWS" set to ""
13
14
  And an environment variable "GTD_REFACTORQUALITYREVIEWS" set to ""
14
15
  And an environment variable "GTD_FLAG_RISK_TIER" set to "0"
@@ -72,7 +73,12 @@ Feature: a refactor-first judgment walks one fixed path to the review gate
72
73
  """
73
74
  And step "refactor.health.check" changes nothing
74
75
  And step "refactor.closing" runs its script
75
- And step "refactor.build.review.composing" writes ".gtd/REVIEW.md" with:
76
+ And judge step "refactor.build.review.ranking" answers:
77
+ """
78
+ []
79
+ """
80
+ And step "refactor.build.review.carrying" runs its script
81
+ And step "refactor.build.review.reviewing" writes ".gtd/REVIEW.md" with:
76
82
  """
77
83
  # Review: abc1234
78
84
 
@@ -96,6 +102,8 @@ Feature: a refactor-first judgment walks one fixed path to the review gate
96
102
 
97
103
  ## calc
98
104
 
105
+ _critical: judge unsure_
106
+
99
107
  - [x] ./src/calc.ts#1-2
100
108
  add built on the shared op
101
109
  """
@@ -138,8 +146,10 @@ Feature: a refactor-first judgment walks one fixed path to the review gate
138
146
  gtd(check): refactor.deriving → refactor.building
139
147
  gtd(agent): refactor.building → refactor.health.check
140
148
  gtd(check): refactor.health.check → refactor.closing
141
- gtd(check): refactor.closing → refactor.build.review.composing
142
- gtd(check): refactor.build.review.composing → refactor.build.review.await-review
149
+ gtd(check): refactor.closing → refactor.build.review.reviewing
150
+ gtd(agent): refactor.build.review.reviewing → refactor.build.review.ranking
151
+ gtd(judge): refactor.build.review.ranking → refactor.build.review.carrying
152
+ gtd(check): refactor.build.review.carrying → refactor.build.review.await-review
143
153
  gtd(human): refactor.build.review.await-review → refactor.build.review.closing
144
154
  gtd(check): refactor.build.review.closing → implement.building
145
155
  gtd(agent): implement.building → implement.health.check
@@ -10,6 +10,7 @@ Feature: refactor-first writes a refactor note, refactors on its own, then rebui
10
10
 
11
11
  Background:
12
12
  Given the shipped workflows, as gtd install scaffolds them
13
+ And an environment variable "GTD_PROTOTYPEROUNDS" set to "0"
13
14
  And an environment variable "GTD_QUALITYREVIEWS" set to ""
14
15
  And an environment variable "GTD_REFACTORQUALITYREVIEWS" set to ""
15
16
  And an environment variable "GTD_FLAG_RISK_TIER" set to "0"
@@ -83,7 +84,12 @@ Feature: refactor-first writes a refactor note, refactors on its own, then rebui
83
84
  """
84
85
  And step "refactor.health.check" changes nothing
85
86
  And step "refactor.closing" runs its script
86
- And step "refactor.build.review.composing" writes ".gtd/REVIEW.md" with:
87
+ And judge step "refactor.build.review.ranking" answers:
88
+ """
89
+ []
90
+ """
91
+ And step "refactor.build.review.carrying" runs its script
92
+ And step "refactor.build.review.reviewing" writes ".gtd/REVIEW.md" with:
87
93
  """
88
94
  # Review: abc1234
89
95
 
@@ -106,6 +112,8 @@ Feature: refactor-first writes a refactor note, refactors on its own, then rebui
106
112
 
107
113
  ## calc
108
114
 
115
+ _critical: judge unsure_
116
+
109
117
  - [x] ./src/calc.ts#1-2
110
118
  add built on the shared op
111
119
  """
@@ -147,7 +155,12 @@ Feature: refactor-first writes a refactor note, refactors on its own, then rebui
147
155
  """
148
156
  And step "refactor.health.check" changes nothing
149
157
  And step "refactor.closing" runs its script
150
- And step "refactor.build.review.composing" writes ".gtd/REVIEW.md" with:
158
+ And judge step "refactor.build.review.ranking" answers:
159
+ """
160
+ []
161
+ """
162
+ And step "refactor.build.review.carrying" runs its script
163
+ And step "refactor.build.review.reviewing" writes ".gtd/REVIEW.md" with:
151
164
  """
152
165
  # Review: abc1234
153
166
 
@@ -170,6 +183,8 @@ Feature: refactor-first writes a refactor note, refactors on its own, then rebui
170
183
 
171
184
  ## calc
172
185
 
186
+ _critical: judge unsure_
187
+
173
188
  - [x] ./src/calc.ts#1-2
174
189
  add built on the shared op
175
190
  """
@@ -193,7 +208,12 @@ Feature: refactor-first writes a refactor note, refactors on its own, then rebui
193
208
  """
194
209
  And step "refactor.health.check" changes nothing
195
210
  And step "refactor.closing" runs its script
196
- And step "refactor.build.review.composing" writes ".gtd/REVIEW.md" with:
211
+ And judge step "refactor.build.review.ranking" answers:
212
+ """
213
+ []
214
+ """
215
+ And step "refactor.build.review.carrying" runs its script
216
+ And step "refactor.build.review.reviewing" writes ".gtd/REVIEW.md" with:
197
217
  """
198
218
  # Review: abc1234
199
219
 
@@ -216,6 +236,8 @@ Feature: refactor-first writes a refactor note, refactors on its own, then rebui
216
236
 
217
237
  ## calc
218
238
 
239
+ _critical: judge unsure_
240
+
219
241
  - [x] ./src/calc.ts#1-2
220
242
  add built on the shared op
221
243
  """
@@ -253,8 +275,10 @@ Feature: refactor-first writes a refactor note, refactors on its own, then rebui
253
275
  gtd(check): refactor.deriving → refactor.building
254
276
  gtd(agent): refactor.building → refactor.health.check
255
277
  gtd(check): refactor.health.check → refactor.closing
256
- gtd(check): refactor.closing → refactor.build.review.composing
257
- gtd(check): refactor.build.review.composing → refactor.build.review.await-review
278
+ gtd(check): refactor.closing → refactor.build.review.reviewing
279
+ gtd(agent): refactor.build.review.reviewing → refactor.build.review.ranking
280
+ gtd(judge): refactor.build.review.ranking → refactor.build.review.carrying
281
+ gtd(check): refactor.build.review.carrying → refactor.build.review.await-review
258
282
  gtd(human): refactor.build.review.await-review → refactor.build.review.closing
259
283
  gtd(check): refactor.build.review.closing → implement.building
260
284
  gtd(agent): implement.building → implement.health.check
@@ -9,6 +9,7 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
9
9
 
10
10
  Background:
11
11
  Given the shipped workflows, as gtd install scaffolds them
12
+ And an environment variable "GTD_PROTOTYPEROUNDS" set to "0"
12
13
  And an environment variable "GTD_QUALITYREVIEWS" set to ""
13
14
  And an environment variable "GTD_FLAG_RISK_TIER" set to "0"
14
15
 
@@ -78,7 +79,12 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
78
79
  """
79
80
  And step "refactor.health.check" changes nothing
80
81
  And step "refactor.closing" runs its script
81
- And step "refactor.build.review.composing" writes ".gtd/REVIEW.md" with:
82
+ And judge step "refactor.build.review.ranking" answers:
83
+ """
84
+ []
85
+ """
86
+ And step "refactor.build.review.carrying" runs its script
87
+ And step "refactor.build.review.reviewing" writes ".gtd/REVIEW.md" with:
82
88
  """
83
89
  # Review: abc1234
84
90
 
@@ -171,7 +177,12 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
171
177
  """
172
178
  And step "refactor.health.check" changes nothing
173
179
  And step "refactor.closing" runs its script
174
- And step "refactor.build.review.composing" writes ".gtd/REVIEW.md" with:
180
+ And judge step "refactor.build.review.ranking" answers:
181
+ """
182
+ []
183
+ """
184
+ And step "refactor.build.review.carrying" runs its script
185
+ And step "refactor.build.review.reviewing" writes ".gtd/REVIEW.md" with:
175
186
  """
176
187
  # Review: abc1234
177
188
 
@@ -191,8 +202,10 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
191
202
  And the commit subjects end with:
192
203
  """
193
204
  gtd(check): refactor.closing → refactor.build.quality.correctness.reviewing
194
- gtd(agent): refactor.build.quality.correctness.reviewing → refactor.build.review.composing
195
- gtd(check): refactor.build.review.composing → refactor.build.review.await-review
205
+ gtd(agent): refactor.build.quality.correctness.reviewing → refactor.build.review.reviewing
206
+ gtd(agent): refactor.build.review.reviewing → refactor.build.review.ranking
207
+ gtd(judge): refactor.build.review.ranking → refactor.build.review.carrying
208
+ gtd(check): refactor.build.review.carrying → refactor.build.review.await-review
196
209
  """
197
210
 
198
211
 
@@ -263,7 +276,12 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
263
276
  """
264
277
  And step "refactor.health.check" changes nothing
265
278
  And step "refactor.closing" runs its script
266
- And step "refactor.build.review.composing" writes ".gtd/REVIEW.md" with:
279
+ And judge step "refactor.build.review.ranking" answers:
280
+ """
281
+ []
282
+ """
283
+ And step "refactor.build.review.carrying" runs its script
284
+ And step "refactor.build.review.reviewing" writes ".gtd/REVIEW.md" with:
267
285
  """
268
286
  # Review: abc1234
269
287
 
@@ -287,6 +305,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
287
305
 
288
306
  ## calc
289
307
 
308
+ _critical: judge unsure_
309
+
290
310
  - [ ] ./src/calc.ts#1-2
291
311
  add built on the shared op[^why]
292
312
 
@@ -324,6 +344,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
324
344
 
325
345
  ## calc
326
346
 
347
+ _critical: judge unsure_
348
+
327
349
  - [ ] ./src/calc.ts#1-2
328
350
  add built on the shared op
329
351
  """
@@ -345,8 +367,10 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
345
367
  gtd(check): refactor.deriving → refactor.building
346
368
  gtd(agent): refactor.building → refactor.health.check
347
369
  gtd(check): refactor.health.check → refactor.closing
348
- gtd(check): refactor.closing → refactor.build.review.composing
349
- gtd(check): refactor.build.review.composing → refactor.build.review.await-review
370
+ gtd(check): refactor.closing → refactor.build.review.reviewing
371
+ gtd(agent): refactor.build.review.reviewing → refactor.build.review.ranking
372
+ gtd(judge): refactor.build.review.ranking → refactor.build.review.carrying
373
+ gtd(check): refactor.build.review.carrying → refactor.build.review.await-review
350
374
  """
351
375
 
352
376
  Scenario: a question answered at the refactor review reaches the re-derived package as ### Answered Questions
@@ -360,6 +384,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
360
384
 
361
385
  ## calc
362
386
 
387
+ _critical: judge unsure_
388
+
363
389
  - [ ] ./src/calc.ts#1-1
364
390
  why a shared op?
365
391
  - [ ] ./src/calc.ts#2-2
@@ -434,8 +460,10 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
434
460
  gtd(check): refactor.deriving → refactor.building
435
461
  gtd(agent): refactor.building → refactor.health.check
436
462
  gtd(check): refactor.health.check → refactor.closing
437
- gtd(check): refactor.closing → refactor.build.review.composing
438
- gtd(check): refactor.build.review.composing → refactor.build.review.await-review
463
+ gtd(check): refactor.closing → refactor.build.review.reviewing
464
+ gtd(agent): refactor.build.review.reviewing → refactor.build.review.ranking
465
+ gtd(judge): refactor.build.review.ranking → refactor.build.review.carrying
466
+ gtd(check): refactor.build.review.carrying → refactor.build.review.await-review
439
467
  """
440
468
 
441
469
  Scenario: an edit note the collecting turn leaves out refuses the landing and never signs off
@@ -449,6 +477,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
449
477
 
450
478
  ## calc
451
479
 
480
+ _critical: judge unsure_
481
+
452
482
  - [ ] ./src/calc.ts#1-2
453
483
  add built on the shared op — this should change behaviour, not just structure
454
484
  """
@@ -493,6 +523,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
493
523
 
494
524
  ## calc
495
525
 
526
+ _critical: judge unsure_
527
+
496
528
  - [ ] ./src/calc.ts#1-2 rename the helper
497
529
  add built on the shared op
498
530
  """
@@ -520,6 +552,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
520
552
 
521
553
  ## calc
522
554
 
555
+ _critical: judge unsure_
556
+
523
557
  - [ ] ./src/calc.ts#1-2
524
558
  add built on the shared op, lovely work
525
559
  """
@@ -539,6 +573,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
539
573
 
540
574
  ## calc
541
575
 
576
+ _critical: judge unsure_
577
+
542
578
  - [ ] ./src/calc.ts#1-2
543
579
  add built on the shared op[^q]
544
580
 
@@ -593,6 +629,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
593
629
 
594
630
  ## calc
595
631
 
632
+ _critical: judge unsure_
633
+
596
634
  - [ ] ./src/calc.ts#1-2
597
635
  add built on the shared op[^q]
598
636
 
@@ -625,6 +663,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
625
663
 
626
664
  ## calc
627
665
 
666
+ _critical: judge unsure_
667
+
628
668
  - [ ] ./src/calc.ts#1-2
629
669
  add built on the shared op[^q]
630
670
 
@@ -676,6 +716,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
676
716
 
677
717
  ## calc
678
718
 
719
+ _critical: judge unsure_
720
+
679
721
  - [ ] ./src/calc.ts#1-2
680
722
  add built on the shared op[^n1]
681
723
 
@@ -702,6 +744,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
702
744
 
703
745
  ## calc
704
746
 
747
+ _critical: judge unsure_
748
+
705
749
  - [ ] ./src/calc.ts#1-2
706
750
  add built on the shared op[^n1]
707
751
 
@@ -729,6 +773,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
729
773
 
730
774
  ## calc
731
775
 
776
+ _critical: judge unsure_
777
+
732
778
  - [ ] ./src/calc.ts#1-2
733
779
  add built on the shared op[^q]
734
780
 
@@ -761,6 +807,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
761
807
 
762
808
  ## calc
763
809
 
810
+ _critical: judge unsure_
811
+
764
812
  - [ ] ./src/calc.ts#1-2
765
813
  add built on the shared op[^n1]
766
814
 
@@ -787,6 +835,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
787
835
 
788
836
  ## calc
789
837
 
838
+ _critical: judge unsure_
839
+
790
840
  - [ ] ./src/calc.ts#1-2
791
841
  add built on the shared op - this should change behaviour, not just structure[^q]
792
842
 
@@ -819,6 +869,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
819
869
 
820
870
  ## calc
821
871
 
872
+ _critical: judge unsure_
873
+
822
874
  - [ ] ./src/calc.ts#1-2
823
875
  add built on the shared op - this should change behaviour, not just structure[^q]
824
876
 
@@ -864,6 +916,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
864
916
 
865
917
  ## calc
866
918
 
919
+ _critical: judge unsure_
920
+
867
921
  - [ ] ./src/calc.ts#1-2
868
922
  add built on the shared op[^q]
869
923
 
@@ -896,6 +950,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
896
950
 
897
951
  ## calc
898
952
 
953
+ _critical: judge unsure_
954
+
899
955
  - [ ] ./src/calc.ts#1-2
900
956
  add built on the shared op[^q]
901
957
 
@@ -946,6 +1002,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
946
1002
 
947
1003
  ## calc
948
1004
 
1005
+ _critical: judge unsure_
1006
+
949
1007
  - [ ] ./src/calc.ts#1-2
950
1008
  add built on the shared op, lovely work[^q]
951
1009
 
@@ -978,6 +1036,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
978
1036
 
979
1037
  ## calc
980
1038
 
1039
+ _critical: judge unsure_
1040
+
981
1041
  - [ ] ./src/calc.ts#1-2
982
1042
  add built on the shared op, lovely work[^q]
983
1043
 
@@ -1033,6 +1093,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1033
1093
 
1034
1094
  ## calc
1035
1095
 
1096
+ _critical: judge unsure_
1097
+
1036
1098
  - [x] ./src/calc.ts#1-2
1037
1099
  add built on the shared op
1038
1100
  """
@@ -1056,6 +1118,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1056
1118
 
1057
1119
  ## calc
1058
1120
 
1121
+ _critical: judge unsure_
1122
+
1059
1123
  - [ ] ./src/calc.ts#1-2
1060
1124
  add built on the shared op — rename `sign` to `direction`
1061
1125
  """
@@ -1085,6 +1149,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1085
1149
 
1086
1150
  ## calc
1087
1151
 
1152
+ _critical: judge unsure_
1153
+
1088
1154
  - [ ] ./src/calc.ts#1-2
1089
1155
  add built on the shared op — rename `sign` to `direction`
1090
1156
  """
@@ -1103,9 +1169,25 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1103
1169
  Then the process rests at "refactor.build.review.await-review"
1104
1170
  And the commit subjects end with:
1105
1171
  """
1106
- gtd(check): refactor.closing → refactor.build.review.composing
1107
- gtd(check): refactor.build.review.composing → refactor.build.review.await-review
1172
+ gtd(check): refactor.closing → refactor.build.review.reviewing
1173
+ gtd(agent): refactor.build.review.reviewing → refactor.build.review.ranking
1174
+ gtd(judge): refactor.build.review.ranking → refactor.build.review.carrying
1175
+ gtd(check): refactor.build.review.carrying → refactor.build.review.await-review
1176
+ """
1177
+
1178
+ Scenario: a reviewer walks the human through the whole refactor, every chunk pointing at its code
1179
+ When the process is driven
1180
+ Then the process rests at "refactor.build.review.await-review"
1181
+ And ".gtd/REVIEW.md" contains:
1182
+ """
1183
+ ## calc
1184
+
1185
+ _critical: judge unsure_
1186
+
1187
+ - [ ] ./src/calc.ts#1-2
1188
+ add built on the shared op
1108
1189
  """
1190
+ And no commit body contains "refactor.build.review.composing"
1109
1191
 
1110
1192
  Rule: with a quality lens on both slices
1111
1193
 
@@ -1175,7 +1257,12 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1175
1257
  """
1176
1258
  And step "refactor.health.check" changes nothing
1177
1259
  And step "refactor.closing" runs its script
1178
- And step "refactor.build.review.composing" writes ".gtd/REVIEW.md" with:
1260
+ And judge step "refactor.build.review.ranking" answers:
1261
+ """
1262
+ []
1263
+ """
1264
+ And step "refactor.build.review.carrying" runs its script
1265
+ And step "refactor.build.review.reviewing" writes ".gtd/REVIEW.md" with:
1179
1266
  """
1180
1267
  # Review: abc1234
1181
1268
 
@@ -1219,6 +1306,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1219
1306
 
1220
1307
  ## calc
1221
1308
 
1309
+ _critical: judge unsure_
1310
+
1222
1311
  - [x] ./src/calc.ts#1-2
1223
1312
  add built on the shared op
1224
1313
  """
@@ -1382,7 +1471,12 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1382
1471
  """
1383
1472
  And step "refactor.health.check" changes nothing
1384
1473
  And step "refactor.closing" runs its script
1385
- And step "refactor.build.review.composing" writes ".gtd/REVIEW.md" with:
1474
+ And judge step "refactor.build.review.ranking" answers:
1475
+ """
1476
+ []
1477
+ """
1478
+ And step "refactor.build.review.carrying" runs its script
1479
+ And step "refactor.build.review.reviewing" writes ".gtd/REVIEW.md" with:
1386
1480
  """
1387
1481
  # Review: abc1234
1388
1482
 
@@ -1403,6 +1497,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1403
1497
 
1404
1498
  ## calc
1405
1499
 
1500
+ _critical: judge unsure_
1501
+
1406
1502
  - [ ] ./src/calc.ts#1-2
1407
1503
  add built on the shared op[^why]
1408
1504
 
@@ -1443,6 +1539,8 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1443
1539
 
1444
1540
  ## calc
1445
1541
 
1542
+ _critical: judge unsure_
1543
+
1446
1544
  - [ ] ./src/calc.ts#1-2
1447
1545
  add built on the shared op
1448
1546
  """
@@ -820,7 +820,7 @@ const driveReviewed = async (
820
820
  ...Object.fromEntries(lensEffects),
821
821
  deriving: () => void files.set(REFACTOR_PACKAGE, "package"),
822
822
  closing: () => void files.delete(REFACTOR_PACKAGE),
823
- "review.composing": () => void files.set(REVIEW, reviewDoc("add")),
823
+ "review.reviewing": () => void files.set(REVIEW, reviewDoc("add")),
824
824
  "review.closing": () => void files.delete(REVIEW),
825
825
  "review.collecting": () => {
826
826
  if (!script.silentCollect)
@@ -929,7 +929,9 @@ describe("reviewedRefactor", () => {
929
929
  "refactor.build.quality.correctness.reviewing",
930
930
  "refactor.build.quality.ponytail-review.reviewing",
931
931
  "refactor.build.quality.conventions.reviewing",
932
- "refactor.build.review.composing",
932
+ "refactor.build.review.reviewing",
933
+ "refactor.build.review.ranking",
934
+ "refactor.build.review.carrying",
933
935
  "refactor.build.review.await-review",
934
936
  "refactor.build.review.closing",
935
937
  ])
@@ -937,8 +939,16 @@ describe("reviewedRefactor", () => {
937
939
 
938
940
  it("reviews from HEAD at scope entry", async () => {
939
941
  const h = await driveReviewed(shape())
940
- const composing = h.steps.find((s) => s.kind === "run" && s.name === "review.composing")
941
- expect(composing?.kind === "run" ? composing.body : "").toContain("<!-- base: c0 -->")
942
+ const reviewing = h.steps.find((s) => s.kind === "agent" && s.name === "review.reviewing")
943
+ expect(reviewing?.kind === "agent" ? reviewing.prompt : "").toContain("<!-- base: c0 -->")
944
+ })
945
+
946
+ it("has the reviewer walk the whole refactor on every round", async () => {
947
+ const h = await driveReviewed(shape())
948
+ const reviewing = h.steps.find((s) => s.kind === "agent" && s.name === "review.reviewing")
949
+ expect(reviewing?.kind === "agent" ? reviewing.prompt : "").toContain(
950
+ "it covers the whole refactor since it started, on every round",
951
+ )
942
952
  })
943
953
 
944
954
  it("names the entry commit in every lens prompt, on the first lap and after a feedback lap", async () => {
@@ -389,6 +389,8 @@ export const reviewedRefactor = async (
389
389
  fixAccess: strayAccess(p.strays),
390
390
  lensBase: entry,
391
391
  rules: t.refactorRules(p.strays, p.pattern),
392
+ walkthrough: true,
393
+ lap: "refactor",
392
394
  })
393
395
  if (outcome.verdict === "signoff") return true
394
396
  await reUnwind(outcome)
@@ -10,6 +10,7 @@ Feature: every note in the review is answered with one tick
10
10
 
11
11
  Background:
12
12
  Given the shipped workflows, as gtd install scaffolds them
13
+ And an environment variable "GTD_PROTOTYPEROUNDS" set to "0"
13
14
  And an environment variable "GTD_QUALITYREVIEWS" set to "correctness"
14
15
  And an environment variable "GTD_FLAGMODE" set to "false"
15
16
  And a file "src/calc.ts" with:
@@ -109,6 +110,10 @@ Feature: every note in the review is answered with one tick
109
110
  - [ ] ./src/calc.ts#2-2 — now rounds the difference
110
111
  """
111
112
  And step "build.review.carrying" runs its script
113
+ And judge step "build.review.ranking" answers:
114
+ """
115
+ []
116
+ """
112
117
  And judge step "build.quality.triage" answers:
113
118
  """
114
119
  [{"id":"Q1","answer":"noise","p":0.9},{"id":"Q2","answer":"noise","p":0.9},{"id":"Q3","answer":"design","p":0.9}]
@@ -122,6 +127,8 @@ Feature: every note in the review is answered with one tick
122
127
  """
123
128
  ## AC-1 ignores floating point
124
129
 
130
+ _critical: judge unsure_
131
+
125
132
  Should subtract round? The criterion does not say.
126
133
 
127
134
  In the code:
@@ -215,7 +222,8 @@ Feature: every note in the review is answered with one tick
215
222
  gtd(agent): build.review.fix.nits.fixing → build.health.check
216
223
  gtd(check): build.health.check → build.review.closing
217
224
  gtd(check): build.review.closing → build.review.reviewing
218
- gtd(agent): build.review.reviewing → build.review.carrying
225
+ gtd(agent): build.review.reviewing → build.review.ranking
226
+ gtd(judge): build.review.ranking → build.review.carrying
219
227
  gtd(check): build.review.carrying → build.review.await-review
220
228
  """
221
229
  And ".gtd/REVIEW.md" does not contain "AC-1 ignores floating point"
@@ -10,6 +10,7 @@ Feature: a feature process ends at the human review
10
10
 
11
11
  Background:
12
12
  Given the shipped workflows, as gtd install scaffolds them
13
+ And an environment variable "GTD_PROTOTYPEROUNDS" set to "0"
13
14
  And an environment variable "GTD_QUALITYREVIEWS" set to ""
14
15
  And an environment variable "GTD_FLAGMODE" set to "false"
15
16
  And a file "src/calc.ts" with:
@@ -69,6 +70,11 @@ Feature: a feature process ends at the human review
69
70
  new subtract function
70
71
  """
71
72
  And step "build.review.closing" runs its script
73
+ And step "build.review.carrying" runs its script
74
+ And judge step "build.review.ranking" answers:
75
+ """
76
+ []
77
+ """
72
78
 
73
79
  Scenario: a feature process ends at the review gate
74
80
  When the process is driven
@@ -79,7 +85,9 @@ Feature: a feature process ends at the human review
79
85
  """
80
86
  gtd(judge): implement.coverage → implement.closing
81
87
  gtd(check): implement.closing → build.review.reviewing
82
- gtd(agent): build.review.reviewing → build.review.await-review
88
+ gtd(agent): build.review.reviewing → build.review.ranking
89
+ gtd(judge): build.review.ranking → build.review.carrying
90
+ gtd(check): build.review.carrying → build.review.await-review
83
91
  """
84
92
 
85
93
  Scenario: a sign-off ends the process at idle
@@ -93,6 +101,8 @@ Feature: a feature process ends at the human review
93
101
 
94
102
  ## calc
95
103
 
104
+ _critical: judge unsure_
105
+
96
106
  - [x] ./src/calc.ts#2-2
97
107
  new subtract function
98
108
  """
@@ -102,7 +112,9 @@ Feature: a feature process ends at the human review
102
112
  And ".gtd/REVIEW.md" does not exist
103
113
  And the commit subjects end with:
104
114
  """
105
- gtd(agent): build.review.reviewing → build.review.await-review
115
+ gtd(agent): build.review.reviewing → build.review.ranking
116
+ gtd(judge): build.review.ranking → build.review.carrying
117
+ gtd(check): build.review.carrying → build.review.await-review
106
118
  gtd(human): build.review.await-review → build.review.closing
107
119
  gtd(check): build.review.closing → idle
108
120
  """
@@ -146,6 +158,8 @@ Feature: a feature process ends at the human review
146
158
 
147
159
  ## calc
148
160
 
161
+ _critical: judge unsure_
162
+
149
163
  - [ ] ./src/calc.ts#2-2
150
164
  new subtract function[^why]
151
165
 
@@ -164,6 +178,8 @@ Feature: a feature process ends at the human review
164
178
 
165
179
  ## calc
166
180
 
181
+ _critical: judge unsure_
182
+
167
183
  - [ ] ./src/calc.ts#2-2
168
184
  new subtract function
169
185
  """
@@ -215,7 +231,9 @@ Feature: a feature process ends at the human review
215
231
  gtd(check): implement.health.check → implement.coverage
216
232
  gtd(judge): implement.coverage → implement.closing
217
233
  gtd(check): implement.closing → build.review.reviewing
218
- gtd(agent): build.review.reviewing → build.review.await-review
234
+ gtd(agent): build.review.reviewing → build.review.ranking
235
+ gtd(judge): build.review.ranking → build.review.carrying
236
+ gtd(check): build.review.carrying → build.review.await-review
219
237
  """
220
238
 
221
239
  Scenario: a design numbering new behaviour at or below an earlier ID is refused