@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.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +46 -40
- package/dist/chunks/{reserved-CUkk9XgL.mjs → reserved-DxB5CROj.mjs} +73 -38
- package/dist/chunks/{review-BaCXlIT2.mjs → review-CKMSdvgW.mjs} +11 -9
- package/dist/chunks/{steering-DtUVUz9l.mjs → steering-CLhu8C7q.mjs} +262 -52
- package/dist/chunks/{tail-CX6Pdsql.mjs → tail-QZc7Uz2U.mjs} +1 -1
- package/dist/gtd.bundle.mjs +198 -43
- package/dist/steering.mjs +2 -2
- package/dist/testkit.mjs +1 -1
- package/dist/web/main.css +1 -1
- package/dist/web/main.js +510 -147
- package/dist/workflow-kit.mjs +1 -1
- package/dist/workflows/cleanup.mjs +2 -2
- package/dist/workflows/feature.mjs +228 -222
- package/dist/workflows/fix.mjs +3 -3
- package/dist/workflows/review.mjs +3 -3
- package/dist/workflows/rollout.mjs +1 -1
- package/dist/workflows.mjs +570 -317
- package/package.json +5 -4
- package/src/steering/FORMATS.md +4 -1
- package/src/steering/SteeringFormat.ts +7 -1
- package/src/steering/contract.test.ts +2 -1
- package/src/steering/fixtures/review/sectioned.md +31 -0
- package/src/steering/fixtures/review/sectioned.read.json +119 -0
- package/src/steering/index.ts +4 -0
- package/src/steering/qa.ts +1 -1
- package/src/steering/review.test.ts +270 -4
- package/src/steering/review.ts +328 -69
- package/src/testkit/steps.ts +13 -0
- package/src/workflows/feature/acceptance-criteria.feature +159 -3
- package/src/workflows/feature/continuation-cap.feature +4 -0
- package/src/workflows/feature/continuation-rebuild.feature +4 -0
- package/src/workflows/feature/continuation-slices.feature +4 -0
- package/src/workflows/feature/continuation.feature +4 -0
- package/src/workflows/feature/criteria.test.ts +60 -1
- package/src/workflows/feature/criteria.ts +87 -8
- package/src/workflows/feature/fast-path.feature +5 -6
- package/src/workflows/feature/feature.test.ts +6 -5
- package/src/workflows/feature/feature.ts +1 -2
- package/src/workflows/feature/flag-mode.feature +5 -6
- package/src/workflows/feature/green.ts +22 -0
- package/src/workflows/feature/hands-on-skip.feature +384 -0
- package/src/workflows/feature/lens-models.feature +4 -4
- package/src/workflows/feature/lens-review.feature +10 -8
- package/src/workflows/feature/naive-acceptance.feature +4 -0
- package/src/workflows/feature/one-step-land.feature +5 -6
- package/src/workflows/feature/planning.ts +2 -1
- package/src/workflows/feature/prototype-rounds.feature +5 -1
- package/src/workflows/feature/prototype.feature +18 -9
- package/src/workflows/feature/prototype.ts +48 -17
- package/src/workflows/feature/refactor-absorbs.feature +7 -8
- package/src/workflows/feature/refactor-first.feature +7 -8
- package/src/workflows/feature/refactor-lens-models.feature +4 -0
- package/src/workflows/feature/refactor-rebuild.feature +11 -12
- package/src/workflows/feature/refactor-review.feature +72 -72
- package/src/workflows/feature/review-answers.feature +94 -5
- package/src/workflows/feature/review-gate.feature +23 -53
- package/src/workflows/feature/reviewer-walkthrough.feature +33 -12
- package/src/workflows/feature/risk-tier.feature +32 -0
- package/src/workflows/feature/seam-rejection.feature +9 -6
- package/src/workflows/feature/seam.feature +9 -6
- package/src/workflows/feature/seam.test.ts +5 -3
- package/src/workflows/feature/seam.ts +2 -3
- package/src/workflows/feature/severity-budget.feature +11 -7
- package/src/workflows/feature/severity-sorted-review.feature +54 -54
- package/src/workflows/feature/slice-findings.feature +9 -15
- package/src/workflows/feature/slicing.feature +36 -24
- package/src/workflows/feature/standards.feature +4 -4
- package/src/workflows/feature/tier-pin.feature +4 -0
- package/src/workflows/shared/review.ts +26 -6
- package/src/workflows/shared/text.test.ts +85 -11
- package/src/workflows/shared/text.ts +95 -42
- package/src/workflows/feature/coverage.feature +0 -165
- 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
|
-
##
|
|
318
|
+
## Walkthrough
|
|
307
319
|
|
|
308
|
-
|
|
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
|
-
##
|
|
357
|
+
## Walkthrough
|
|
346
358
|
|
|
347
|
-
|
|
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
|
-
##
|
|
397
|
+
## Walkthrough
|
|
386
398
|
|
|
387
|
-
|
|
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
|
-
##
|
|
490
|
+
## Walkthrough
|
|
479
491
|
|
|
480
|
-
|
|
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
|
-
##
|
|
536
|
+
## Walkthrough
|
|
525
537
|
|
|
526
|
-
|
|
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
|
-
##
|
|
565
|
+
## Walkthrough
|
|
554
566
|
|
|
555
|
-
|
|
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
|
-
##
|
|
586
|
+
## Walkthrough
|
|
575
587
|
|
|
576
|
-
|
|
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
|
-
##
|
|
638
|
+
## Walkthrough
|
|
631
639
|
|
|
632
|
-
|
|
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
|
-
##
|
|
672
|
+
## Walkthrough
|
|
665
673
|
|
|
666
|
-
|
|
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
|
-
##
|
|
721
|
+
## Walkthrough
|
|
718
722
|
|
|
719
|
-
|
|
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
|
-
##
|
|
749
|
+
## Walkthrough
|
|
746
750
|
|
|
747
|
-
|
|
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
|
-
##
|
|
778
|
+
## Walkthrough
|
|
775
779
|
|
|
776
|
-
|
|
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
|
-
##
|
|
812
|
+
## Walkthrough
|
|
809
813
|
|
|
810
|
-
|
|
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
|
-
##
|
|
840
|
+
## Walkthrough
|
|
837
841
|
|
|
838
|
-
|
|
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
|
-
##
|
|
874
|
+
## Walkthrough
|
|
871
875
|
|
|
872
|
-
|
|
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
|
-
##
|
|
921
|
+
## Walkthrough
|
|
918
922
|
|
|
919
|
-
|
|
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
|
-
##
|
|
955
|
+
## Walkthrough
|
|
952
956
|
|
|
953
|
-
|
|
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
|
-
##
|
|
1003
|
+
## Walkthrough
|
|
1004
1004
|
|
|
1005
|
-
|
|
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
|
-
##
|
|
1037
|
+
## Walkthrough
|
|
1038
1038
|
|
|
1039
|
-
|
|
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
|
-
##
|
|
1090
|
+
## Walkthrough
|
|
1095
1091
|
|
|
1096
|
-
|
|
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
|
-
##
|
|
1115
|
+
## Walkthrough
|
|
1120
1116
|
|
|
1121
|
-
|
|
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
|
-
##
|
|
1146
|
+
## Walkthrough
|
|
1151
1147
|
|
|
1152
|
-
|
|
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
|
-
##
|
|
1179
|
+
## Walkthrough
|
|
1184
1180
|
|
|
1185
|
-
|
|
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
|
-
##
|
|
1303
|
+
## Walkthrough
|
|
1308
1304
|
|
|
1309
|
-
|
|
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
|
-
##
|
|
1498
|
+
## Walkthrough
|
|
1499
1499
|
|
|
1500
|
-
|
|
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
|
-
##
|
|
1540
|
+
## Walkthrough
|
|
1541
1541
|
|
|
1542
|
-
|
|
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
|
-
##
|
|
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
|
|
8
|
-
|
|
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(
|
|
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
|
-
##
|
|
102
|
+
## Walkthrough
|
|
103
103
|
|
|
104
|
-
|
|
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
|
-
##
|
|
159
|
+
## Walkthrough
|
|
160
160
|
|
|
161
|
-
|
|
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
|
-
##
|
|
179
|
+
## Walkthrough
|
|
180
180
|
|
|
181
|
-
|
|
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
|
|
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.
|
|
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
|
-
##
|
|
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
|
-
-
|
|
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
|
-
|
|
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"
|