@pmelab/gtd 51.0.1 → 52.1.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 (74) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +46 -40
  3. package/dist/chunks/{reserved-CUkk9XgL.mjs → reserved-DxB5CROj.mjs} +73 -38
  4. package/dist/chunks/{review-BaCXlIT2.mjs → review-CKMSdvgW.mjs} +11 -9
  5. package/dist/chunks/{steering-DtUVUz9l.mjs → steering-CLhu8C7q.mjs} +262 -52
  6. package/dist/chunks/{tail-CX6Pdsql.mjs → tail-QZc7Uz2U.mjs} +1 -1
  7. package/dist/gtd.bundle.mjs +198 -43
  8. package/dist/steering.mjs +2 -2
  9. package/dist/testkit.mjs +1 -1
  10. package/dist/web/main.css +1 -1
  11. package/dist/web/main.js +510 -147
  12. package/dist/workflow-kit.mjs +1 -1
  13. package/dist/workflows/cleanup.mjs +2 -2
  14. package/dist/workflows/feature.mjs +228 -222
  15. package/dist/workflows/fix.mjs +3 -3
  16. package/dist/workflows/review.mjs +3 -3
  17. package/dist/workflows/rollout.mjs +1 -1
  18. package/dist/workflows.mjs +570 -317
  19. package/package.json +5 -4
  20. package/src/steering/FORMATS.md +4 -1
  21. package/src/steering/SteeringFormat.ts +7 -1
  22. package/src/steering/contract.test.ts +2 -1
  23. package/src/steering/fixtures/review/sectioned.md +31 -0
  24. package/src/steering/fixtures/review/sectioned.read.json +119 -0
  25. package/src/steering/index.ts +4 -0
  26. package/src/steering/qa.ts +1 -1
  27. package/src/steering/review.test.ts +270 -4
  28. package/src/steering/review.ts +328 -69
  29. package/src/testkit/steps.ts +13 -0
  30. package/src/workflows/feature/acceptance-criteria.feature +159 -3
  31. package/src/workflows/feature/continuation-cap.feature +4 -0
  32. package/src/workflows/feature/continuation-rebuild.feature +4 -0
  33. package/src/workflows/feature/continuation-slices.feature +4 -0
  34. package/src/workflows/feature/continuation.feature +4 -0
  35. package/src/workflows/feature/criteria.test.ts +60 -1
  36. package/src/workflows/feature/criteria.ts +87 -8
  37. package/src/workflows/feature/fast-path.feature +5 -6
  38. package/src/workflows/feature/feature.test.ts +6 -5
  39. package/src/workflows/feature/feature.ts +1 -2
  40. package/src/workflows/feature/flag-mode.feature +5 -6
  41. package/src/workflows/feature/green.ts +22 -0
  42. package/src/workflows/feature/hands-on-skip.feature +384 -0
  43. package/src/workflows/feature/lens-models.feature +4 -4
  44. package/src/workflows/feature/lens-review.feature +10 -8
  45. package/src/workflows/feature/naive-acceptance.feature +4 -0
  46. package/src/workflows/feature/one-step-land.feature +5 -6
  47. package/src/workflows/feature/planning.ts +2 -1
  48. package/src/workflows/feature/prototype-rounds.feature +5 -1
  49. package/src/workflows/feature/prototype.feature +18 -9
  50. package/src/workflows/feature/prototype.ts +48 -17
  51. package/src/workflows/feature/refactor-absorbs.feature +7 -8
  52. package/src/workflows/feature/refactor-first.feature +7 -8
  53. package/src/workflows/feature/refactor-lens-models.feature +4 -0
  54. package/src/workflows/feature/refactor-rebuild.feature +11 -12
  55. package/src/workflows/feature/refactor-review.feature +72 -72
  56. package/src/workflows/feature/review-answers.feature +94 -5
  57. package/src/workflows/feature/review-gate.feature +23 -53
  58. package/src/workflows/feature/reviewer-walkthrough.feature +33 -12
  59. package/src/workflows/feature/risk-tier.feature +32 -0
  60. package/src/workflows/feature/seam-rejection.feature +9 -6
  61. package/src/workflows/feature/seam.feature +9 -6
  62. package/src/workflows/feature/seam.test.ts +5 -3
  63. package/src/workflows/feature/seam.ts +2 -3
  64. package/src/workflows/feature/severity-budget.feature +11 -7
  65. package/src/workflows/feature/severity-sorted-review.feature +54 -54
  66. package/src/workflows/feature/slice-findings.feature +9 -15
  67. package/src/workflows/feature/slicing.feature +36 -24
  68. package/src/workflows/feature/standards.feature +4 -4
  69. package/src/workflows/feature/tier-pin.feature +4 -0
  70. package/src/workflows/shared/review.ts +26 -6
  71. package/src/workflows/shared/text.test.ts +85 -11
  72. package/src/workflows/shared/text.ts +95 -42
  73. package/src/workflows/feature/coverage.feature +0 -165
  74. package/src/workflows/feature/coverage.ts +0 -120
@@ -48,6 +48,10 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
48
48
 
49
49
  - `subtract(a, b)` returns `a - b`.
50
50
 
51
+ ## Impact
52
+
53
+ - the greeting module
54
+
51
55
  ## Acceptance Criteria
52
56
 
53
57
  - AC-1: the change behaves as described.
@@ -146,6 +150,10 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
146
150
 
147
151
  - `subtract(a, b)` returns `a - b`.
148
152
 
153
+ ## Impact
154
+
155
+ - the greeting module
156
+
149
157
  ## Acceptance Criteria
150
158
 
151
159
  - AC-1: the change behaves as described.
@@ -245,6 +253,10 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
245
253
 
246
254
  - `subtract(a, b)` returns `a - b`.
247
255
 
256
+ ## Impact
257
+
258
+ - the greeting module
259
+
248
260
  ## Acceptance Criteria
249
261
 
250
262
  - AC-1: the change behaves as described.
@@ -303,9 +315,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
303
315
 
304
316
  <!-- base: 0000000 -->
305
317
 
306
- ## calc
318
+ ## Walkthrough
307
319
 
308
- _critical: judge unsure_
320
+ ### calc
309
321
 
310
322
  - [ ] ./src/calc.ts#1-2
311
323
  add built on the shared op[^why]
@@ -342,9 +354,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
342
354
 
343
355
  <!-- base: 0000000 -->
344
356
 
345
- ## calc
357
+ ## Walkthrough
346
358
 
347
- _critical: judge unsure_
359
+ ### calc
348
360
 
349
361
  - [ ] ./src/calc.ts#1-2
350
362
  add built on the shared op
@@ -382,9 +394,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
382
394
 
383
395
  <!-- base: 0000000 -->
384
396
 
385
- ## calc
397
+ ## Walkthrough
386
398
 
387
- _critical: judge unsure_
399
+ ### calc
388
400
 
389
401
  - [ ] ./src/calc.ts#1-1
390
402
  why a shared op?
@@ -475,9 +487,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
475
487
 
476
488
  <!-- base: 0000000 -->
477
489
 
478
- ## calc
490
+ ## Walkthrough
479
491
 
480
- _critical: judge unsure_
492
+ ### calc
481
493
 
482
494
  - [ ] ./src/calc.ts#1-2
483
495
  add built on the shared op — this should change behaviour, not just structure
@@ -521,9 +533,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
521
533
 
522
534
  <!-- base: 0000000 -->
523
535
 
524
- ## calc
536
+ ## Walkthrough
525
537
 
526
- _critical: judge unsure_
538
+ ### calc
527
539
 
528
540
  - [ ] ./src/calc.ts#1-2 rename the helper
529
541
  add built on the shared op
@@ -550,9 +562,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
550
562
 
551
563
  <!-- base: 0000000 -->
552
564
 
553
- ## calc
565
+ ## Walkthrough
554
566
 
555
- _critical: judge unsure_
567
+ ### calc
556
568
 
557
569
  - [ ] ./src/calc.ts#1-2
558
570
  add built on the shared op, lovely work
@@ -571,9 +583,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
571
583
 
572
584
  <!-- base: 0000000 -->
573
585
 
574
- ## calc
586
+ ## Walkthrough
575
587
 
576
- _critical: judge unsure_
588
+ ### calc
577
589
 
578
590
  - [ ] ./src/calc.ts#1-2
579
591
  add built on the shared op[^q]
@@ -615,10 +627,6 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
615
627
  """
616
628
  And step "implement.health.check" changes nothing
617
629
  And step "implement.closing" runs its script
618
- And judge step "implement.coverage" answers:
619
- """
620
- [{"id":"AC-1","answer":"yes","p":0.9}]
621
- """
622
630
  When the process is driven
623
631
  Then the process rests at "refactor.build.review.await-review"
624
632
  Given a file ".gtd/REVIEW.md" with:
@@ -627,9 +635,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
627
635
 
628
636
  <!-- base: 0000000 -->
629
637
 
630
- ## calc
638
+ ## Walkthrough
631
639
 
632
- _critical: judge unsure_
640
+ ### calc
633
641
 
634
642
  - [ ] ./src/calc.ts#1-2
635
643
  add built on the shared op[^q]
@@ -661,9 +669,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
661
669
 
662
670
  <!-- base: 0000000 -->
663
671
 
664
- ## calc
672
+ ## Walkthrough
665
673
 
666
- _critical: judge unsure_
674
+ ### calc
667
675
 
668
676
  - [ ] ./src/calc.ts#1-2
669
677
  add built on the shared op[^q]
@@ -702,10 +710,6 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
702
710
  """
703
711
  And step "implement.health.check" changes nothing
704
712
  And step "implement.closing" runs its script
705
- And judge step "implement.coverage" answers:
706
- """
707
- [{"id":"AC-1","answer":"yes","p":0.9}]
708
- """
709
713
  When the process is driven
710
714
  Then the process rests at "refactor.build.review.await-review"
711
715
  Given a file ".gtd/REVIEW.md" with:
@@ -714,9 +718,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
714
718
 
715
719
  <!-- base: 0000000 -->
716
720
 
717
- ## calc
721
+ ## Walkthrough
718
722
 
719
- _critical: judge unsure_
723
+ ### calc
720
724
 
721
725
  - [ ] ./src/calc.ts#1-2
722
726
  add built on the shared op[^n1]
@@ -742,9 +746,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
742
746
 
743
747
  <!-- base: 0000000 -->
744
748
 
745
- ## calc
749
+ ## Walkthrough
746
750
 
747
- _critical: judge unsure_
751
+ ### calc
748
752
 
749
753
  - [ ] ./src/calc.ts#1-2
750
754
  add built on the shared op[^n1]
@@ -771,9 +775,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
771
775
 
772
776
  <!-- base: 0000000 -->
773
777
 
774
- ## calc
778
+ ## Walkthrough
775
779
 
776
- _critical: judge unsure_
780
+ ### calc
777
781
 
778
782
  - [ ] ./src/calc.ts#1-2
779
783
  add built on the shared op[^q]
@@ -805,9 +809,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
805
809
 
806
810
  <!-- base: 0000000 -->
807
811
 
808
- ## calc
812
+ ## Walkthrough
809
813
 
810
- _critical: judge unsure_
814
+ ### calc
811
815
 
812
816
  - [ ] ./src/calc.ts#1-2
813
817
  add built on the shared op[^n1]
@@ -833,9 +837,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
833
837
 
834
838
  <!-- base: 0000000 -->
835
839
 
836
- ## calc
840
+ ## Walkthrough
837
841
 
838
- _critical: judge unsure_
842
+ ### calc
839
843
 
840
844
  - [ ] ./src/calc.ts#1-2
841
845
  add built on the shared op - this should change behaviour, not just structure[^q]
@@ -867,9 +871,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
867
871
 
868
872
  <!-- base: 0000000 -->
869
873
 
870
- ## calc
874
+ ## Walkthrough
871
875
 
872
- _critical: judge unsure_
876
+ ### calc
873
877
 
874
878
  - [ ] ./src/calc.ts#1-2
875
879
  add built on the shared op - this should change behaviour, not just structure[^q]
@@ -914,9 +918,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
914
918
 
915
919
  <!-- base: 0000000 -->
916
920
 
917
- ## calc
921
+ ## Walkthrough
918
922
 
919
- _critical: judge unsure_
923
+ ### calc
920
924
 
921
925
  - [ ] ./src/calc.ts#1-2
922
926
  add built on the shared op[^q]
@@ -948,9 +952,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
948
952
 
949
953
  <!-- base: 0000000 -->
950
954
 
951
- ## calc
955
+ ## Walkthrough
952
956
 
953
- _critical: judge unsure_
957
+ ### calc
954
958
 
955
959
  - [ ] ./src/calc.ts#1-2
956
960
  add built on the shared op[^q]
@@ -988,10 +992,6 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
988
992
  """
989
993
  And step "implement.health.check" changes nothing
990
994
  And step "implement.closing" runs its script
991
- And judge step "implement.coverage" answers:
992
- """
993
- [{"id":"AC-1","answer":"yes","p":0.9}]
994
- """
995
995
  When the process is driven
996
996
  Then the process rests at "refactor.build.review.await-review"
997
997
  Given a file ".gtd/REVIEW.md" with:
@@ -1000,9 +1000,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1000
1000
 
1001
1001
  <!-- base: 0000000 -->
1002
1002
 
1003
- ## calc
1003
+ ## Walkthrough
1004
1004
 
1005
- _critical: judge unsure_
1005
+ ### calc
1006
1006
 
1007
1007
  - [ ] ./src/calc.ts#1-2
1008
1008
  add built on the shared op, lovely work[^q]
@@ -1034,9 +1034,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1034
1034
 
1035
1035
  <!-- base: 0000000 -->
1036
1036
 
1037
- ## calc
1037
+ ## Walkthrough
1038
1038
 
1039
- _critical: judge unsure_
1039
+ ### calc
1040
1040
 
1041
1041
  - [ ] ./src/calc.ts#1-2
1042
1042
  add built on the shared op, lovely work[^q]
@@ -1079,10 +1079,6 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1079
1079
  """
1080
1080
  And step "implement.health.check" changes nothing
1081
1081
  And step "implement.closing" runs its script
1082
- And judge step "implement.coverage" answers:
1083
- """
1084
- [{"id":"AC-1","answer":"yes","p":0.9}]
1085
- """
1086
1082
  When the process is driven
1087
1083
  Then the process rests at "refactor.build.review.await-review"
1088
1084
  Given a file ".gtd/REVIEW.md" with:
@@ -1091,9 +1087,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1091
1087
 
1092
1088
  <!-- base: 0000000 -->
1093
1089
 
1094
- ## calc
1090
+ ## Walkthrough
1095
1091
 
1096
- _critical: judge unsure_
1092
+ ### calc
1097
1093
 
1098
1094
  - [x] ./src/calc.ts#1-2
1099
1095
  add built on the shared op
@@ -1116,9 +1112,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1116
1112
 
1117
1113
  <!-- base: 0000000 -->
1118
1114
 
1119
- ## calc
1115
+ ## Walkthrough
1120
1116
 
1121
- _critical: judge unsure_
1117
+ ### calc
1122
1118
 
1123
1119
  - [ ] ./src/calc.ts#1-2
1124
1120
  add built on the shared op — rename `sign` to `direction`
@@ -1147,9 +1143,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1147
1143
 
1148
1144
  <!-- base: 0000000 -->
1149
1145
 
1150
- ## calc
1146
+ ## Walkthrough
1151
1147
 
1152
- _critical: judge unsure_
1148
+ ### calc
1153
1149
 
1154
1150
  - [ ] ./src/calc.ts#1-2
1155
1151
  add built on the shared op — rename `sign` to `direction`
@@ -1180,9 +1176,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1180
1176
  Then the process rests at "refactor.build.review.await-review"
1181
1177
  And ".gtd/REVIEW.md" contains:
1182
1178
  """
1183
- ## calc
1179
+ ## Walkthrough
1184
1180
 
1185
- _critical: judge unsure_
1181
+ ### calc
1186
1182
 
1187
1183
  - [ ] ./src/calc.ts#1-2
1188
1184
  add built on the shared op
@@ -1226,6 +1222,10 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1226
1222
 
1227
1223
  - `subtract(a, b)` returns `a - b`.
1228
1224
 
1225
+ ## Impact
1226
+
1227
+ - the greeting module
1228
+
1229
1229
  ## Acceptance Criteria
1230
1230
 
1231
1231
  - AC-1: the change behaves as described.
@@ -1292,10 +1292,6 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1292
1292
  """
1293
1293
  And step "implement.health.check" changes nothing
1294
1294
  And step "implement.closing" runs its script
1295
- And judge step "implement.coverage" answers:
1296
- """
1297
- [{"id":"AC-1","answer":"yes","p":0.9}]
1298
- """
1299
1295
  When the process is driven
1300
1296
  Then the process rests at "refactor.build.review.await-review"
1301
1297
  Given a file ".gtd/REVIEW.md" with:
@@ -1304,9 +1300,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1304
1300
 
1305
1301
  <!-- base: 0000000 -->
1306
1302
 
1307
- ## calc
1303
+ ## Walkthrough
1308
1304
 
1309
- _critical: judge unsure_
1305
+ ### calc
1310
1306
 
1311
1307
  - [x] ./src/calc.ts#1-2
1312
1308
  add built on the shared op
@@ -1357,6 +1353,10 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1357
1353
 
1358
1354
  - `subtract(a, b)` returns `a - b`.
1359
1355
 
1356
+ ## Impact
1357
+
1358
+ - the greeting module
1359
+
1360
1360
  ## Acceptance Criteria
1361
1361
 
1362
1362
  - AC-1: the change behaves as described.
@@ -1495,9 +1495,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1495
1495
 
1496
1496
  <!-- base: 0000000 -->
1497
1497
 
1498
- ## calc
1498
+ ## Walkthrough
1499
1499
 
1500
- _critical: judge unsure_
1500
+ ### calc
1501
1501
 
1502
1502
  - [ ] ./src/calc.ts#1-2
1503
1503
  add built on the shared op[^why]
@@ -1537,9 +1537,9 @@ Feature: the refactor slice is reviewed on its own before the feature is impleme
1537
1537
 
1538
1538
  <!-- base: 0000000 -->
1539
1539
 
1540
- ## calc
1540
+ ## Walkthrough
1541
1541
 
1542
- _critical: judge unsure_
1542
+ ### calc
1543
1543
 
1544
1544
  - [ ] ./src/calc.ts#1-2
1545
1545
  add built on the shared op
@@ -36,6 +36,10 @@ Feature: every note in the review is answered with one tick
36
36
 
37
37
  - `subtract(a, b)` returns `a - b`.
38
38
 
39
+ ## Impact
40
+
41
+ - the greeting module
42
+
39
43
  ## Acceptance Criteria
40
44
 
41
45
  - AC-1: subtract(a, b) returns a - b.
@@ -54,10 +58,6 @@ Feature: every note in the review is answered with one tick
54
58
  And step "implement.applying" runs its script
55
59
  And step "implement.health.check" changes nothing
56
60
  And step "implement.closing" runs its script
57
- And judge step "implement.coverage" answers:
58
- """
59
- [{"id":"AC-1","answer":"yes","p":0.9}]
60
- """
61
61
  And step "build.quality.correctness.reviewing" writes ".gtd/QUALITY.md" with:
62
62
  """
63
63
  # Quality
@@ -125,7 +125,9 @@ Feature: every note in the review is answered with one tick
125
125
  Then the process rests at "build.review.await-review"
126
126
  And ".gtd/REVIEW.md" contains:
127
127
  """
128
- ## AC-1 ignores floating point
128
+ ## Findings
129
+
130
+ ### AC-1 ignores floating point
129
131
 
130
132
  _critical: judge unsure_
131
133
 
@@ -233,3 +235,90 @@ Feature: every note in the review is answered with one tick
233
235
  And the text "- [ ] fix as suggested" in ".gtd/REVIEW.md" is replaced with ""
234
236
  And the text "Tick exactly one:" in ".gtd/REVIEW.md" is replaced with ""
235
237
  Then landing is refused with "its answer boxes were deleted"
238
+
239
+ Scenario: a review still in the flat layout, every chunk a `## `, is answered by its ticks
240
+ Given judge step "build.review.standards.judge" answers:
241
+ """
242
+ [{"id":"standard-1","answer":"no","p":0.9}]
243
+ """
244
+ When the process is driven
245
+ Then the process rests at "build.review.await-review"
246
+ Given a file ".gtd/REVIEW.md" with:
247
+ """
248
+ # Review: abc1234
249
+
250
+ <!-- base: 0000000 -->
251
+
252
+ ## AC-1 ignores floating point
253
+
254
+ _critical: judge unsure_
255
+
256
+ Should subtract round? The criterion does not say.
257
+
258
+ In the code:
259
+
260
+ - [ ] ./src/calc.ts#2-2 — returns the raw difference
261
+
262
+ Tick exactly one:
263
+
264
+ - [ ] fix as suggested
265
+ - [x] won't fix
266
+ - [ ] _your answer_
267
+
268
+ ## Subtract
269
+
270
+ - [ ] ./src/calc.ts#2-2 — subtract(a, b)
271
+ """
272
+ When gtd lands
273
+ And the process is driven
274
+ Then the process rests at "idle"
275
+ And the commit "gtd(human): build.review.await-review → build.review.standards.judge" has a body containing "Gtd-Mark: wontfix=AC-1 ignores floating point"
276
+ And no commit body contains "build.review.triage"
277
+
278
+ Scenario: boxes ticked in the walkthrough answer nothing
279
+ Given judge step "build.review.standards.judge" answers:
280
+ """
281
+ [{"id":"standard-1","answer":"no","p":0.9}]
282
+ """
283
+ When the process is driven
284
+ Then the process rests at "build.review.await-review"
285
+ Given a file ".gtd/REVIEW.md" with:
286
+ """
287
+ # Review: abc1234
288
+
289
+ <!-- base: 0000000 -->
290
+
291
+ ## Findings
292
+
293
+ ### AC-1 ignores floating point
294
+
295
+ _critical: judge unsure_
296
+
297
+ Should subtract round? The criterion does not say.
298
+
299
+ In the code:
300
+
301
+ - [ ] ./src/calc.ts#2-2 — returns the raw difference
302
+
303
+ Tick exactly one:
304
+
305
+ - [ ] fix as suggested
306
+ - [x] won't fix
307
+ - [ ] _your answer_
308
+
309
+ ## Walkthrough
310
+
311
+ ### Subtract
312
+
313
+ - [ ] ./src/calc.ts#2-2 — subtract(a, b)
314
+
315
+ Tick exactly one:
316
+
317
+ - [x] fix as suggested
318
+ - [ ] won't fix
319
+ - [ ] _your answer_
320
+ """
321
+ When gtd lands
322
+ And the process is driven
323
+ Then the process rests at "idle"
324
+ And no commit body contains "build.review.fix.nits.fixing"
@@ -4,8 +4,8 @@ Feature: a feature process ends at the human review
4
4
  After the last slice's quality lap the process rests at the review gate,
5
5
  `.gtd/REVIEW.md`. A sign-off ends the process. A note asking for a change in
6
6
  behaviour starts a feedback lap — design, then implement with no new naive
7
- pass or seam judge, the coverage judge over every criterion, the quality lap
8
- — and the review again. Its design keeps a built criterion's ID and numbers
7
+ pass or seam judge, the hands-on test, the quality lap — and the review
8
+ again. Its design keeps a built criterion's ID and numbers
9
9
  new behaviour above every ID handed out.
10
10
 
11
11
  Background:
@@ -36,6 +36,10 @@ Feature: a feature process ends at the human review
36
36
 
37
37
  - `subtract(a, b)` returns `a - b`.
38
38
 
39
+ ## Impact
40
+
41
+ - the greeting module
42
+
39
43
  ## Acceptance Criteria
40
44
 
41
45
  - AC-1: subtract(a, b) returns a - b.
@@ -54,10 +58,6 @@ Feature: a feature process ends at the human review
54
58
  And step "implement.applying" runs its script
55
59
  And step "implement.health.check" changes nothing
56
60
  And step "implement.closing" runs its script
57
- And judge step "implement.coverage" answers:
58
- """
59
- [{"id":"AC-1","answer":"yes","p":0.9}]
60
- """
61
61
  And step "build.review.reviewing" writes ".gtd/REVIEW.md" with:
62
62
  """
63
63
  # Review: abc1234
@@ -83,7 +83,7 @@ Feature: a feature process ends at the human review
83
83
  And the resting step's content contains the hash of the commit "feat: add calculator"
84
84
  And the commit subjects end with:
85
85
  """
86
- gtd(judge): implement.coverage → implement.closing
86
+ gtd(check): implement.health.check → implement.closing
87
87
  gtd(check): implement.closing → build.review.reviewing
88
88
  gtd(agent): build.review.reviewing → build.review.ranking
89
89
  gtd(judge): build.review.ranking → build.review.carrying
@@ -99,9 +99,9 @@ Feature: a feature process ends at the human review
99
99
 
100
100
  <!-- base: 0000000 -->
101
101
 
102
- ## calc
102
+ ## Walkthrough
103
103
 
104
- _critical: judge unsure_
104
+ ### calc
105
105
 
106
106
  - [x] ./src/calc.ts#2-2
107
107
  new subtract function
@@ -156,9 +156,9 @@ Feature: a feature process ends at the human review
156
156
 
157
157
  <!-- base: 0000000 -->
158
158
 
159
- ## calc
159
+ ## Walkthrough
160
160
 
161
- _critical: judge unsure_
161
+ ### calc
162
162
 
163
163
  - [ ] ./src/calc.ts#2-2
164
164
  new subtract function[^why]
@@ -176,15 +176,15 @@ Feature: a feature process ends at the human review
176
176
 
177
177
  <!-- base: 0000000 -->
178
178
 
179
- ## calc
179
+ ## Walkthrough
180
180
 
181
- _critical: judge unsure_
181
+ ### calc
182
182
 
183
183
  - [ ] ./src/calc.ts#2-2
184
184
  new subtract function
185
185
  """
186
186
 
187
- Scenario: the lap keeps AC-1, adds AC-2, and covers both before the next review
187
+ Scenario: the lap keeps AC-1, adds AC-2, and builds both before the next review
188
188
  Given step "design.triage" from now on changes nothing
189
189
  And step "design.triage" writes ".gtd/REQUIREMENTS.md" with:
190
190
  """
@@ -196,6 +196,10 @@ Feature: a feature process ends at the human review
196
196
 
197
197
  - `multiply(a, b)` returns `a * b`.
198
198
 
199
+ ## Impact
200
+
201
+ - the greeting module
202
+
199
203
  ## Acceptance Criteria
200
204
 
201
205
  - AC-1: subtract(a, b) returns a - b.
@@ -211,15 +215,10 @@ Feature: a feature process ends at the human review
211
215
  """
212
216
  it("[AC-2] multiplies", () => {})
213
217
  """
214
- And judge step "implement.coverage" answers:
215
- """
216
- [{"id":"AC-1","answer":"yes","p":0.9},{"id":"AC-2","answer":"yes","p":0.9}]
217
- """
218
218
  When gtd lands
219
219
  And the process is driven
220
220
  Then the process rests at "build.review.await-review"
221
221
  And ".gtd/REQUIREMENTS.md" does not exist
222
- And the commit "gtd(judge): implement.coverage → implement.closing" has a body containing "Gtd-Mark: covers=AC-1"
223
222
  And the commit subjects end with:
224
223
  """
225
224
  gtd(human): build.review.await-review → build.review.closing
@@ -228,8 +227,7 @@ Feature: a feature process ends at the human review
228
227
  gtd(agent): design.triage → design.gate.answer
229
228
  gtd(human): design.gate.answer → implement.building
230
229
  gtd(agent): implement.building → implement.health.check
231
- gtd(check): implement.health.check → implement.coverage
232
- gtd(judge): implement.coverage → implement.closing
230
+ gtd(check): implement.health.check → implement.closing
233
231
  gtd(check): implement.closing → build.review.reviewing
234
232
  gtd(agent): build.review.reviewing → build.review.ranking
235
233
  gtd(judge): build.review.ranking → build.review.carrying
@@ -248,42 +246,14 @@ Feature: a feature process ends at the human review
248
246
 
249
247
  - `multiply(a, b)` returns `a * b`.
250
248
 
251
- ## Acceptance Criteria
252
-
253
- - AC-0: multiply(a, b) returns a * b.
254
- - AC-1: subtract(a, b) returns a - b.
255
- """
256
- When gtd lands
257
- Then driving the process is refused with "criteria-ids"
258
-
259
- Scenario: the lap holds a new criterion to coverage
260
- Given step "design.triage" from now on changes nothing
261
- And step "design.triage" writes ".gtd/REQUIREMENTS.md" with:
262
- """
263
- # Requirements
264
-
265
- ## Concerns
266
-
267
- ### Multiply
249
+ ## Impact
268
250
 
269
- - `multiply(a, b)` returns `a * b`.
251
+ - the greeting module
270
252
 
271
253
  ## Acceptance Criteria
272
254
 
255
+ - AC-0: multiply(a, b) returns a * b.
273
256
  - AC-1: subtract(a, b) returns a - b.
274
- - AC-2: multiply(a, b) returns a * b.
275
- """
276
- And step "implement.building" writes "src/calc.ts" with:
277
- """
278
- export const add = (a: number, b: number) => a + b
279
- export const subtract = (a: number, b: number) => a - b
280
- export const multiply = (a: number, b: number) => a * b
281
- """
282
- And judge step "implement.coverage" answers:
283
- """
284
- [{"id":"AC-1","answer":"yes","p":0.9},{"id":"AC-2","answer":"no","p":0.9}]
285
257
  """
286
258
  When gtd lands
287
- And the process is driven
288
- Then the process rests at "implement.covering"
289
- And the resting step's content contains "AC-2"
259
+ Then driving the process is refused with "criteria-ids"