@sublang/playbook 0.4.2 → 0.5.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/README.md +27 -15
- package/package.json +6 -4
- package/reference/sdlc/code.playbook/bin/playbook-code.js +248 -105
- package/reference/sdlc/code.playbook/code.fsm.d.ts +1 -0
- package/reference/sdlc/code.playbook/code.fsm.js +51 -21
- package/reference/sdlc/code.playbook/code.fsm.ts +58 -21
- package/reference/sdlc/code.playbook/code.gears.md +50 -22
- package/reference/sdlc/code.playbook/code.playbook.d.ts +19 -3
- package/reference/sdlc/code.playbook/code.playbook.js +292 -34
- package/reference/sdlc/code.playbook/code.playbook.ts +290 -35
- package/reference/sdlc/code.playbook/code.tmux-play.d.ts +4 -0
- package/reference/sdlc/code.playbook/code.tmux-play.js +75 -12
- package/reference/sdlc/code.playbook/code.tmux-play.ts +88 -12
- package/reference/sdlc/code.playbook/playbook-code.config.template.yaml +41 -25
|
@@ -112,8 +112,9 @@ const planAndImplementInput = (context) => ({
|
|
|
112
112
|
...bossReplyInputFields(context),
|
|
113
113
|
prompt: [
|
|
114
114
|
'Assess whether this can be completed in a single commit, following best practices.',
|
|
115
|
-
'If yes, implement and test, updating both code and specs; otherwise, decompose into tasks as a new IR under @specs/iterations.',
|
|
116
|
-
'
|
|
115
|
+
'If yes, implement and test, updating both code and specs; otherwise, decompose into tasks as a new IR under @specs/iterations and stop without implementing any IR task.',
|
|
116
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
117
|
+
'Ensure @specs/map.md reflects the changes.',
|
|
117
118
|
'Do not commit.',
|
|
118
119
|
].join('\n'),
|
|
119
120
|
result: withNeedsBossReply({
|
|
@@ -154,7 +155,7 @@ const summarizeSpecsInput = (context) => ({
|
|
|
154
155
|
'The set should be complete and coherent.',
|
|
155
156
|
'Avoid implementation specifics.',
|
|
156
157
|
'Avoid redundant spec items.',
|
|
157
|
-
'
|
|
158
|
+
'Ensure @specs/map.md reflects the changes.',
|
|
158
159
|
].join('\n'),
|
|
159
160
|
result: withNeedsBossReply({
|
|
160
161
|
specsReady: 'Coder produced uncommitted spec updates (Initial Changes).',
|
|
@@ -501,8 +502,10 @@ export const codingMachine = setup({
|
|
|
501
502
|
'- Minimal: essential and concise; every item earns its place; also check with other items.',
|
|
502
503
|
'',
|
|
503
504
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
504
|
-
'
|
|
505
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
506
|
+
'Verify @specs/map.md reflects the changes.',
|
|
505
507
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
508
|
+
'Do not edit files or commit; report findings only.',
|
|
506
509
|
].join('\n'),
|
|
507
510
|
result: {
|
|
508
511
|
noFindings: 'The spec-only commit has no review findings.',
|
|
@@ -538,8 +541,10 @@ export const codingMachine = setup({
|
|
|
538
541
|
'Refer to the commit message.',
|
|
539
542
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
540
543
|
"Think thoroughly — don't just approve or reject.",
|
|
541
|
-
'
|
|
544
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
545
|
+
'Verify @specs/map.md reflects the changes.',
|
|
542
546
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
547
|
+
'Do not edit files or commit; report findings only.',
|
|
543
548
|
].join('\n'),
|
|
544
549
|
result: {
|
|
545
550
|
noFindings: 'The code-only commit has no review findings.',
|
|
@@ -582,8 +587,10 @@ export const codingMachine = setup({
|
|
|
582
587
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
583
588
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
584
589
|
"Think thoroughly — don't just approve or reject.",
|
|
585
|
-
'
|
|
590
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
591
|
+
'Verify @specs/map.md reflects the changes.',
|
|
586
592
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
593
|
+
'Do not edit files or commit; report findings only.',
|
|
587
594
|
].join('\n'),
|
|
588
595
|
result: {
|
|
589
596
|
noFindings: 'The mixed commit has no review findings.',
|
|
@@ -625,8 +632,10 @@ export const codingMachine = setup({
|
|
|
625
632
|
'- Minimal: essential and concise; every item earns its place; also check with other items.',
|
|
626
633
|
'',
|
|
627
634
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
628
|
-
'
|
|
635
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
636
|
+
'Verify @specs/map.md reflects the changes.',
|
|
629
637
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
638
|
+
'Do not edit files or commit; report findings only.',
|
|
630
639
|
].join('\n'),
|
|
631
640
|
result: {
|
|
632
641
|
noFindings: 'The IR-task spec-only commit has no review findings.',
|
|
@@ -663,8 +672,10 @@ export const codingMachine = setup({
|
|
|
663
672
|
'Refer to the commit message.',
|
|
664
673
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
665
674
|
"Think thoroughly — don't just approve or reject.",
|
|
666
|
-
'
|
|
675
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
676
|
+
'Verify @specs/map.md reflects the changes.',
|
|
667
677
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
678
|
+
'Do not edit files or commit; report findings only.',
|
|
668
679
|
].join('\n'),
|
|
669
680
|
result: {
|
|
670
681
|
noFindings: 'The IR-task code-only commit has no review findings.',
|
|
@@ -708,8 +719,10 @@ export const codingMachine = setup({
|
|
|
708
719
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
709
720
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
710
721
|
"Think thoroughly — don't just approve or reject.",
|
|
711
|
-
'
|
|
722
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
723
|
+
'Verify @specs/map.md reflects the changes.',
|
|
712
724
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
725
|
+
'Do not edit files or commit; report findings only.',
|
|
713
726
|
].join('\n'),
|
|
714
727
|
result: {
|
|
715
728
|
noFindings: 'The IR-task mixed commit has no review findings.',
|
|
@@ -740,7 +753,7 @@ export const codingMachine = setup({
|
|
|
740
753
|
sourceItem: 'CODE-11',
|
|
741
754
|
...bossReplyInputFields(context),
|
|
742
755
|
prompt: [
|
|
743
|
-
'Review the unstaged
|
|
756
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
744
757
|
'Understand the intent.',
|
|
745
758
|
'Verify any affected spec items are:',
|
|
746
759
|
'',
|
|
@@ -749,8 +762,10 @@ export const codingMachine = setup({
|
|
|
749
762
|
'- Minimal: essential and concise; every item earns its place; also check with other items.',
|
|
750
763
|
'',
|
|
751
764
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
752
|
-
'
|
|
765
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
766
|
+
'Verify @specs/map.md reflects the changes.',
|
|
753
767
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
768
|
+
'Do not edit files or commit; report findings only.',
|
|
754
769
|
].join('\n'),
|
|
755
770
|
result: {
|
|
756
771
|
noFindings: 'The uncommitted spec-only changes are ready to commit.',
|
|
@@ -783,12 +798,14 @@ export const codingMachine = setup({
|
|
|
783
798
|
sourceItem: 'CODE-12',
|
|
784
799
|
...bossReplyInputFields(context),
|
|
785
800
|
prompt: [
|
|
786
|
-
'Review the unstaged
|
|
801
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
787
802
|
'Understand the intent.',
|
|
788
803
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
789
804
|
"Think thoroughly — don't just approve or reject.",
|
|
790
|
-
'
|
|
805
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
806
|
+
'Verify @specs/map.md reflects the changes.',
|
|
791
807
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
808
|
+
'Do not edit files or commit; report findings only.',
|
|
792
809
|
].join('\n'),
|
|
793
810
|
result: {
|
|
794
811
|
noFindings: 'The uncommitted code-only changes are ready to commit.',
|
|
@@ -821,7 +838,7 @@ export const codingMachine = setup({
|
|
|
821
838
|
sourceItem: 'CODE-13',
|
|
822
839
|
...bossReplyInputFields(context),
|
|
823
840
|
prompt: [
|
|
824
|
-
'Review the unstaged
|
|
841
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
825
842
|
'Understand the intent.',
|
|
826
843
|
'Verify any affected spec items are:',
|
|
827
844
|
'',
|
|
@@ -832,8 +849,10 @@ export const codingMachine = setup({
|
|
|
832
849
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
833
850
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
834
851
|
"Think thoroughly — don't just approve or reject.",
|
|
835
|
-
'
|
|
852
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
853
|
+
'Verify @specs/map.md reflects the changes.',
|
|
836
854
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
855
|
+
'Do not edit files or commit; report findings only.',
|
|
837
856
|
].join('\n'),
|
|
838
857
|
result: {
|
|
839
858
|
noFindings: 'The uncommitted mixed changes are ready to commit.',
|
|
@@ -868,7 +887,7 @@ export const codingMachine = setup({
|
|
|
868
887
|
reviews: context.reviews,
|
|
869
888
|
challenges: context.challenges,
|
|
870
889
|
prompt: [
|
|
871
|
-
'Review the unstaged
|
|
890
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
872
891
|
'Understand the intent.',
|
|
873
892
|
'Verify any affected spec items are:',
|
|
874
893
|
'',
|
|
@@ -877,8 +896,10 @@ export const codingMachine = setup({
|
|
|
877
896
|
'- Minimal: essential and concise; every item earns its place; also check with other items.',
|
|
878
897
|
'',
|
|
879
898
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
880
|
-
'
|
|
899
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
900
|
+
'Verify @specs/map.md reflects the changes.',
|
|
881
901
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
902
|
+
'Do not edit files or commit; report findings only.',
|
|
882
903
|
'For each rebuttal below, challenge or accept it, with strong reasoning, solid evidence, and comprehensive thinking.',
|
|
883
904
|
].join('\n'),
|
|
884
905
|
result: {
|
|
@@ -914,12 +935,14 @@ export const codingMachine = setup({
|
|
|
914
935
|
reviews: context.reviews,
|
|
915
936
|
challenges: context.challenges,
|
|
916
937
|
prompt: [
|
|
917
|
-
'Review the unstaged
|
|
938
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
918
939
|
'Understand the intent.',
|
|
919
940
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
920
941
|
"Think thoroughly — don't just approve or reject.",
|
|
921
|
-
'
|
|
942
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
943
|
+
'Verify @specs/map.md reflects the changes.',
|
|
922
944
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
945
|
+
'Do not edit files or commit; report findings only.',
|
|
923
946
|
'For each rebuttal below, challenge or accept it, with strong reasoning, solid evidence, and comprehensive thinking.',
|
|
924
947
|
].join('\n'),
|
|
925
948
|
result: {
|
|
@@ -955,7 +978,7 @@ export const codingMachine = setup({
|
|
|
955
978
|
reviews: context.reviews,
|
|
956
979
|
challenges: context.challenges,
|
|
957
980
|
prompt: [
|
|
958
|
-
'Review the unstaged
|
|
981
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
959
982
|
'Understand the intent.',
|
|
960
983
|
'Verify any affected spec items are:',
|
|
961
984
|
'',
|
|
@@ -966,8 +989,10 @@ export const codingMachine = setup({
|
|
|
966
989
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
967
990
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
968
991
|
"Think thoroughly — don't just approve or reject.",
|
|
969
|
-
'
|
|
992
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
993
|
+
'Verify @specs/map.md reflects the changes.',
|
|
970
994
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
995
|
+
'Do not edit files or commit; report findings only.',
|
|
971
996
|
'For each rebuttal below, challenge or accept it, with strong reasoning, solid evidence, and comprehensive thinking.',
|
|
972
997
|
].join('\n'),
|
|
973
998
|
result: {
|
|
@@ -1004,6 +1029,7 @@ export const codingMachine = setup({
|
|
|
1004
1029
|
challenges: context.challenges,
|
|
1005
1030
|
prompt: [
|
|
1006
1031
|
'For each rebuttal below, challenge or accept it, with strong reasoning, solid evidence, and comprehensive thinking.',
|
|
1032
|
+
'Do not edit files or commit; report findings only.',
|
|
1007
1033
|
].join('\n'),
|
|
1008
1034
|
result: {
|
|
1009
1035
|
challengeAccepted: 'Reviewer accepted the rebuttal — no further review edits are required.',
|
|
@@ -1063,8 +1089,10 @@ export const codingMachine = setup({
|
|
|
1063
1089
|
sourceItem: 'CODE-18',
|
|
1064
1090
|
...bossReplyInputFields(context),
|
|
1065
1091
|
coderPlayer: context.coderPlayer,
|
|
1092
|
+
committerPlayer: context.committerPlayer,
|
|
1066
1093
|
prompt: [
|
|
1067
1094
|
'Make a commit of the changes that belong in the repo, following @specs/dev/git.md (reread if necessary).',
|
|
1095
|
+
'Write concisely.',
|
|
1068
1096
|
'Coder is <coder-llm>.',
|
|
1069
1097
|
'Format the `Co-authored-by` `<model>` token as the conventional human form of the substituted id (e.g., `claude-opus-4-7` → `Claude-Opus-4.7`, `gpt-5.5` → `GPT-5.5`).',
|
|
1070
1098
|
].join('\n'),
|
|
@@ -1125,8 +1153,10 @@ export const codingMachine = setup({
|
|
|
1125
1153
|
...bossReplyInputFields(context),
|
|
1126
1154
|
coderPlayer: context.coderPlayer,
|
|
1127
1155
|
reviewerPlayer: context.reviewerPlayer,
|
|
1156
|
+
committerPlayer: context.committerPlayer,
|
|
1128
1157
|
prompt: [
|
|
1129
1158
|
'Make a commit of the changes that belong in the repo, following @specs/dev/git.md (reread if necessary).',
|
|
1159
|
+
'Write concisely.',
|
|
1130
1160
|
'Coder is <coder-llm>; Reviewer is <reviewer-llm>.',
|
|
1131
1161
|
'Format the `Co-authored-by` `<model>` token as the conventional human form of the substituted id (e.g., `claude-opus-4-7` → `Claude-Opus-4.7`, `gpt-5.5` → `GPT-5.5`).',
|
|
1132
1162
|
].join('\n'),
|
|
@@ -66,6 +66,13 @@ export type CaptainInput = {
|
|
|
66
66
|
challenges?: string;
|
|
67
67
|
coderPlayer?: string;
|
|
68
68
|
reviewerPlayer?: string;
|
|
69
|
+
// Routing-only: the configured Committer-alias player id (`coder` /
|
|
70
|
+
// `reviewer`) threaded from `captain.options.code.committer`
|
|
71
|
+
// (PBRT-8 / PBRT-30). It selects which host pane runs a `Committer`
|
|
72
|
+
// commit; it is not a prompt-placeholder source, so it never affects
|
|
73
|
+
// <coder-llm> / <reviewer-llm> substitution or any labelled block,
|
|
74
|
+
// and `input.player` stays `Committer` (PLAYBOOK-3).
|
|
75
|
+
committerPlayer?: string;
|
|
69
76
|
pendingBossQuestion?: PendingBossQuestion;
|
|
70
77
|
bossReply?: string;
|
|
71
78
|
};
|
|
@@ -254,8 +261,9 @@ const planAndImplementInput: CaptainInputFactory = (context) => ({
|
|
|
254
261
|
...bossReplyInputFields(context),
|
|
255
262
|
prompt: [
|
|
256
263
|
'Assess whether this can be completed in a single commit, following best practices.',
|
|
257
|
-
'If yes, implement and test, updating both code and specs; otherwise, decompose into tasks as a new IR under @specs/iterations.',
|
|
258
|
-
'
|
|
264
|
+
'If yes, implement and test, updating both code and specs; otherwise, decompose into tasks as a new IR under @specs/iterations and stop without implementing any IR task.',
|
|
265
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
266
|
+
'Ensure @specs/map.md reflects the changes.',
|
|
259
267
|
'Do not commit.',
|
|
260
268
|
].join('\n'),
|
|
261
269
|
result: withNeedsBossReply({
|
|
@@ -301,7 +309,7 @@ const summarizeSpecsInput: CaptainInputFactory = (context) => ({
|
|
|
301
309
|
'The set should be complete and coherent.',
|
|
302
310
|
'Avoid implementation specifics.',
|
|
303
311
|
'Avoid redundant spec items.',
|
|
304
|
-
'
|
|
312
|
+
'Ensure @specs/map.md reflects the changes.',
|
|
305
313
|
].join('\n'),
|
|
306
314
|
result: withNeedsBossReply({
|
|
307
315
|
specsReady: 'Coder produced uncommitted spec updates (Initial Changes).',
|
|
@@ -708,8 +716,10 @@ export const codingMachine = setup({
|
|
|
708
716
|
'- Minimal: essential and concise; every item earns its place; also check with other items.',
|
|
709
717
|
'',
|
|
710
718
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
711
|
-
'
|
|
719
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
720
|
+
'Verify @specs/map.md reflects the changes.',
|
|
712
721
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
722
|
+
'Do not edit files or commit; report findings only.',
|
|
713
723
|
].join('\n'),
|
|
714
724
|
result: {
|
|
715
725
|
noFindings: 'The spec-only commit has no review findings.',
|
|
@@ -748,8 +758,10 @@ export const codingMachine = setup({
|
|
|
748
758
|
'Refer to the commit message.',
|
|
749
759
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
750
760
|
"Think thoroughly — don't just approve or reject.",
|
|
751
|
-
'
|
|
761
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
762
|
+
'Verify @specs/map.md reflects the changes.',
|
|
752
763
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
764
|
+
'Do not edit files or commit; report findings only.',
|
|
753
765
|
].join('\n'),
|
|
754
766
|
result: {
|
|
755
767
|
noFindings: 'The code-only commit has no review findings.',
|
|
@@ -795,8 +807,10 @@ export const codingMachine = setup({
|
|
|
795
807
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
796
808
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
797
809
|
"Think thoroughly — don't just approve or reject.",
|
|
798
|
-
'
|
|
810
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
811
|
+
'Verify @specs/map.md reflects the changes.',
|
|
799
812
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
813
|
+
'Do not edit files or commit; report findings only.',
|
|
800
814
|
].join('\n'),
|
|
801
815
|
result: {
|
|
802
816
|
noFindings: 'The mixed commit has no review findings.',
|
|
@@ -841,8 +855,10 @@ export const codingMachine = setup({
|
|
|
841
855
|
'- Minimal: essential and concise; every item earns its place; also check with other items.',
|
|
842
856
|
'',
|
|
843
857
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
844
|
-
'
|
|
858
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
859
|
+
'Verify @specs/map.md reflects the changes.',
|
|
845
860
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
861
|
+
'Do not edit files or commit; report findings only.',
|
|
846
862
|
].join('\n'),
|
|
847
863
|
result: {
|
|
848
864
|
noFindings: 'The IR-task spec-only commit has no review findings.',
|
|
@@ -882,8 +898,10 @@ export const codingMachine = setup({
|
|
|
882
898
|
'Refer to the commit message.',
|
|
883
899
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
884
900
|
"Think thoroughly — don't just approve or reject.",
|
|
885
|
-
'
|
|
901
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
902
|
+
'Verify @specs/map.md reflects the changes.',
|
|
886
903
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
904
|
+
'Do not edit files or commit; report findings only.',
|
|
887
905
|
].join('\n'),
|
|
888
906
|
result: {
|
|
889
907
|
noFindings: 'The IR-task code-only commit has no review findings.',
|
|
@@ -930,8 +948,10 @@ export const codingMachine = setup({
|
|
|
930
948
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
931
949
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
932
950
|
"Think thoroughly — don't just approve or reject.",
|
|
933
|
-
'
|
|
951
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
952
|
+
'Verify @specs/map.md reflects the changes.',
|
|
934
953
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
954
|
+
'Do not edit files or commit; report findings only.',
|
|
935
955
|
].join('\n'),
|
|
936
956
|
result: {
|
|
937
957
|
noFindings: 'The IR-task mixed commit has no review findings.',
|
|
@@ -965,7 +985,7 @@ export const codingMachine = setup({
|
|
|
965
985
|
sourceItem: 'CODE-11',
|
|
966
986
|
...bossReplyInputFields(context),
|
|
967
987
|
prompt: [
|
|
968
|
-
'Review the unstaged
|
|
988
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
969
989
|
'Understand the intent.',
|
|
970
990
|
'Verify any affected spec items are:',
|
|
971
991
|
'',
|
|
@@ -974,8 +994,10 @@ export const codingMachine = setup({
|
|
|
974
994
|
'- Minimal: essential and concise; every item earns its place; also check with other items.',
|
|
975
995
|
'',
|
|
976
996
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
977
|
-
'
|
|
997
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
998
|
+
'Verify @specs/map.md reflects the changes.',
|
|
978
999
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
1000
|
+
'Do not edit files or commit; report findings only.',
|
|
979
1001
|
].join('\n'),
|
|
980
1002
|
result: {
|
|
981
1003
|
noFindings: 'The uncommitted spec-only changes are ready to commit.',
|
|
@@ -1011,12 +1033,14 @@ export const codingMachine = setup({
|
|
|
1011
1033
|
sourceItem: 'CODE-12',
|
|
1012
1034
|
...bossReplyInputFields(context),
|
|
1013
1035
|
prompt: [
|
|
1014
|
-
'Review the unstaged
|
|
1036
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
1015
1037
|
'Understand the intent.',
|
|
1016
1038
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
1017
1039
|
"Think thoroughly — don't just approve or reject.",
|
|
1018
|
-
'
|
|
1040
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
1041
|
+
'Verify @specs/map.md reflects the changes.',
|
|
1019
1042
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
1043
|
+
'Do not edit files or commit; report findings only.',
|
|
1020
1044
|
].join('\n'),
|
|
1021
1045
|
result: {
|
|
1022
1046
|
noFindings: 'The uncommitted code-only changes are ready to commit.',
|
|
@@ -1052,7 +1076,7 @@ export const codingMachine = setup({
|
|
|
1052
1076
|
sourceItem: 'CODE-13',
|
|
1053
1077
|
...bossReplyInputFields(context),
|
|
1054
1078
|
prompt: [
|
|
1055
|
-
'Review the unstaged
|
|
1079
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
1056
1080
|
'Understand the intent.',
|
|
1057
1081
|
'Verify any affected spec items are:',
|
|
1058
1082
|
'',
|
|
@@ -1063,8 +1087,10 @@ export const codingMachine = setup({
|
|
|
1063
1087
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
1064
1088
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
1065
1089
|
"Think thoroughly — don't just approve or reject.",
|
|
1066
|
-
'
|
|
1090
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
1091
|
+
'Verify @specs/map.md reflects the changes.',
|
|
1067
1092
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
1093
|
+
'Do not edit files or commit; report findings only.',
|
|
1068
1094
|
].join('\n'),
|
|
1069
1095
|
result: {
|
|
1070
1096
|
noFindings: 'The uncommitted mixed changes are ready to commit.',
|
|
@@ -1102,7 +1128,7 @@ export const codingMachine = setup({
|
|
|
1102
1128
|
reviews: context.reviews,
|
|
1103
1129
|
challenges: context.challenges,
|
|
1104
1130
|
prompt: [
|
|
1105
|
-
'Review the unstaged
|
|
1131
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
1106
1132
|
'Understand the intent.',
|
|
1107
1133
|
'Verify any affected spec items are:',
|
|
1108
1134
|
'',
|
|
@@ -1111,8 +1137,10 @@ export const codingMachine = setup({
|
|
|
1111
1137
|
'- Minimal: essential and concise; every item earns its place; also check with other items.',
|
|
1112
1138
|
'',
|
|
1113
1139
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
1114
|
-
'
|
|
1140
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
1141
|
+
'Verify @specs/map.md reflects the changes.',
|
|
1115
1142
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
1143
|
+
'Do not edit files or commit; report findings only.',
|
|
1116
1144
|
'For each rebuttal below, challenge or accept it, with strong reasoning, solid evidence, and comprehensive thinking.',
|
|
1117
1145
|
].join('\n'),
|
|
1118
1146
|
result: {
|
|
@@ -1152,12 +1180,14 @@ export const codingMachine = setup({
|
|
|
1152
1180
|
reviews: context.reviews,
|
|
1153
1181
|
challenges: context.challenges,
|
|
1154
1182
|
prompt: [
|
|
1155
|
-
'Review the unstaged
|
|
1183
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
1156
1184
|
'Understand the intent.',
|
|
1157
1185
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
1158
1186
|
"Think thoroughly — don't just approve or reject.",
|
|
1159
|
-
'
|
|
1187
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
1188
|
+
'Verify @specs/map.md reflects the changes.',
|
|
1160
1189
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
1190
|
+
'Do not edit files or commit; report findings only.',
|
|
1161
1191
|
'For each rebuttal below, challenge or accept it, with strong reasoning, solid evidence, and comprehensive thinking.',
|
|
1162
1192
|
].join('\n'),
|
|
1163
1193
|
result: {
|
|
@@ -1197,7 +1227,7 @@ export const codingMachine = setup({
|
|
|
1197
1227
|
reviews: context.reviews,
|
|
1198
1228
|
challenges: context.challenges,
|
|
1199
1229
|
prompt: [
|
|
1200
|
-
'Review the unstaged
|
|
1230
|
+
'Review the unstaged and untracked changes in the context of the staged changes.',
|
|
1201
1231
|
'Understand the intent.',
|
|
1202
1232
|
'Verify any affected spec items are:',
|
|
1203
1233
|
'',
|
|
@@ -1208,8 +1238,10 @@ export const codingMachine = setup({
|
|
|
1208
1238
|
'Flag anything missing, redundant, over-specified, or under-specified.',
|
|
1209
1239
|
'Flag any issues or improvements (numbered; no duplication).',
|
|
1210
1240
|
"Think thoroughly — don't just approve or reject.",
|
|
1211
|
-
'
|
|
1241
|
+
'For context discovery, @specs/map.md indexes all spec files and @specs/meta.md describes the spec format.',
|
|
1242
|
+
'Verify @specs/map.md reflects the changes.',
|
|
1212
1243
|
"If the change is ready to commit or push, don't raise nitpicks.",
|
|
1244
|
+
'Do not edit files or commit; report findings only.',
|
|
1213
1245
|
'For each rebuttal below, challenge or accept it, with strong reasoning, solid evidence, and comprehensive thinking.',
|
|
1214
1246
|
].join('\n'),
|
|
1215
1247
|
result: {
|
|
@@ -1249,6 +1281,7 @@ export const codingMachine = setup({
|
|
|
1249
1281
|
challenges: context.challenges,
|
|
1250
1282
|
prompt: [
|
|
1251
1283
|
'For each rebuttal below, challenge or accept it, with strong reasoning, solid evidence, and comprehensive thinking.',
|
|
1284
|
+
'Do not edit files or commit; report findings only.',
|
|
1252
1285
|
].join('\n'),
|
|
1253
1286
|
result: {
|
|
1254
1287
|
challengeAccepted:
|
|
@@ -1316,8 +1349,10 @@ export const codingMachine = setup({
|
|
|
1316
1349
|
sourceItem: 'CODE-18',
|
|
1317
1350
|
...bossReplyInputFields(context),
|
|
1318
1351
|
coderPlayer: context.coderPlayer,
|
|
1352
|
+
committerPlayer: context.committerPlayer,
|
|
1319
1353
|
prompt: [
|
|
1320
1354
|
'Make a commit of the changes that belong in the repo, following @specs/dev/git.md (reread if necessary).',
|
|
1355
|
+
'Write concisely.',
|
|
1321
1356
|
'Coder is <coder-llm>.',
|
|
1322
1357
|
'Format the `Co-authored-by` `<model>` token as the conventional human form of the substituted id (e.g., `claude-opus-4-7` → `Claude-Opus-4.7`, `gpt-5.5` → `GPT-5.5`).',
|
|
1323
1358
|
].join('\n'),
|
|
@@ -1380,8 +1415,10 @@ export const codingMachine = setup({
|
|
|
1380
1415
|
...bossReplyInputFields(context),
|
|
1381
1416
|
coderPlayer: context.coderPlayer,
|
|
1382
1417
|
reviewerPlayer: context.reviewerPlayer,
|
|
1418
|
+
committerPlayer: context.committerPlayer,
|
|
1383
1419
|
prompt: [
|
|
1384
1420
|
'Make a commit of the changes that belong in the repo, following @specs/dev/git.md (reread if necessary).',
|
|
1421
|
+
'Write concisely.',
|
|
1385
1422
|
'Coder is <coder-llm>; Reviewer is <reviewer-llm>.',
|
|
1386
1423
|
'Format the `Co-authored-by` `<model>` token as the conventional human form of the substituted id (e.g., `claude-opus-4-7` → `Claude-Opus-4.7`, `gpt-5.5` → `GPT-5.5`).',
|
|
1387
1424
|
].join('\n'),
|