@open-agent-toolkit/cli 0.3.21 → 0.3.22

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 (114) hide show
  1. package/assets/bundle-metadata.json +1 -1
  2. package/assets/docs/reference/cli-reference.md +8 -3
  3. package/assets/docs/reference/configuration.md +3 -0
  4. package/assets/docs/reference/oat-directory-structure.md +1 -1
  5. package/assets/docs/reference/project-artifacts.md +141 -2
  6. package/assets/docs/reference/project-state-machine.md +2 -2
  7. package/assets/docs/workflows/advanced/autonomy.md +29 -12
  8. package/assets/docs/workflows/advanced/cursor-cloud.md +20 -6
  9. package/assets/docs/workflows/advanced/workflow-gates.md +9 -0
  10. package/assets/docs/workflows/projects/closeout/closeout-skills.md +24 -5
  11. package/assets/docs/workflows/projects/closeout/retro.md +6 -2
  12. package/assets/docs/workflows/projects/execution/implementation-execution.md +18 -4
  13. package/assets/docs/workflows/projects/execution/index.md +1 -1
  14. package/assets/docs/workflows/projects/execution/picking-up-projects.md +3 -2
  15. package/assets/docs/workflows/projects/execution/project-log.md +100 -11
  16. package/assets/docs/workflows/projects/lifecycle.md +3 -3
  17. package/assets/docs/workflows/projects/reviews/index.md +18 -0
  18. package/assets/public-package-versions.json +4 -4
  19. package/assets/skills/oat-cursor-cloud-projects/SKILL.md +12 -8
  20. package/assets/skills/oat-cursor-cloud-projects/references/cursor-cloud-mechanics.md +63 -2
  21. package/assets/skills/oat-project-autonomous/SKILL.md +88 -26
  22. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +1 -1
  23. package/assets/skills/oat-project-brief/SKILL.md +1 -1
  24. package/assets/skills/oat-project-brief/references/brief-contract.md +33 -27
  25. package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +1 -1
  26. package/assets/skills/oat-project-complete/SKILL.md +142 -25
  27. package/assets/skills/oat-project-complete-auto/SKILL.md +4 -4
  28. package/assets/skills/oat-project-dispatch-subagents/SKILL.md +10 -5
  29. package/assets/skills/oat-project-document/SKILL.md +1 -1
  30. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +1 -1
  31. package/assets/skills/oat-project-goal/SKILL.md +63 -15
  32. package/assets/skills/oat-project-goal/references/docs/autonomy-contract.md +1 -1
  33. package/assets/skills/oat-project-implement/SKILL.md +6 -6
  34. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +28 -7
  35. package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +10 -5
  36. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +1 -1
  37. package/assets/skills/oat-project-implement/references/phase-execution.md +23 -9
  38. package/assets/skills/oat-project-implement/references/plan-and-resume.md +4 -4
  39. package/assets/skills/oat-project-lite/SKILL.md +1 -1
  40. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +1 -1
  41. package/assets/skills/oat-project-pr-final/SKILL.md +6 -1
  42. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +1 -1
  43. package/assets/skills/oat-project-pr-progress/SKILL.md +6 -1
  44. package/assets/skills/oat-project-quick-start/SKILL.md +1 -1
  45. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +1 -1
  46. package/assets/skills/oat-project-reconcile/SKILL.md +13 -19
  47. package/assets/skills/oat-project-retro/SKILL.md +5 -2
  48. package/assets/skills/oat-project-retro/references/evidence-and-lanes.md +9 -3
  49. package/assets/skills/oat-project-review-provide/SKILL.md +28 -3
  50. package/assets/skills/oat-project-review-receive/SKILL.md +32 -18
  51. package/assets/skills/oat-project-review-receive-remote/SKILL.md +10 -6
  52. package/assets/skills/oat-project-revise/SKILL.md +9 -2
  53. package/assets/skills/oat-project-summary/SKILL.md +166 -37
  54. package/assets/skills/oat-worktree-bootstrap-auto/SKILL.md +3 -3
  55. package/assets/templates/implementation-brief.md +5 -36
  56. package/assets/templates/implementation.md +11 -81
  57. package/assets/templates/project-log.md +2 -31
  58. package/assets/templates/project-retro.md +4 -1
  59. package/assets/templates/summary.md +13 -5
  60. package/dist/commands/config/index.d.ts.map +1 -1
  61. package/dist/commands/config/index.js +44 -1
  62. package/dist/commands/project/archive/archive-utils.d.ts +205 -8
  63. package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
  64. package/dist/commands/project/archive/archive-utils.js +708 -44
  65. package/dist/commands/project/archive/index.d.ts.map +1 -1
  66. package/dist/commands/project/archive/index.js +1 -0
  67. package/dist/commands/project/archive/push-runner.d.ts +9 -1
  68. package/dist/commands/project/archive/push-runner.d.ts.map +1 -1
  69. package/dist/commands/project/archive/push-runner.js +56 -18
  70. package/dist/commands/project/archive/sync-runner.d.ts +28 -0
  71. package/dist/commands/project/archive/sync-runner.d.ts.map +1 -1
  72. package/dist/commands/project/archive/sync-runner.js +44 -22
  73. package/dist/commands/project/complete-state/index.d.ts.map +1 -1
  74. package/dist/commands/project/complete-state/index.js +45 -0
  75. package/dist/commands/project/dispatch/index.d.ts.map +1 -1
  76. package/dist/commands/project/dispatch/index.js +24 -2
  77. package/dist/commands/project/dispatch/record.d.ts +54 -1
  78. package/dist/commands/project/dispatch/record.d.ts.map +1 -1
  79. package/dist/commands/project/dispatch/record.js +229 -1
  80. package/dist/commands/project/index.d.ts.map +1 -1
  81. package/dist/commands/project/index.js +2 -0
  82. package/dist/commands/project/journal-check/evaluator.d.ts +17 -0
  83. package/dist/commands/project/journal-check/evaluator.d.ts.map +1 -0
  84. package/dist/commands/project/journal-check/evaluator.js +140 -0
  85. package/dist/commands/project/journal-check/index.d.ts +34 -0
  86. package/dist/commands/project/journal-check/index.d.ts.map +1 -0
  87. package/dist/commands/project/journal-check/index.js +163 -0
  88. package/dist/commands/project/journal-check/rules.d.ts +68 -0
  89. package/dist/commands/project/journal-check/rules.d.ts.map +1 -0
  90. package/dist/commands/project/journal-check/rules.js +994 -0
  91. package/dist/commands/project/journal-check/types.d.ts +63 -0
  92. package/dist/commands/project/journal-check/types.d.ts.map +1 -0
  93. package/dist/commands/project/journal-check/types.js +26 -0
  94. package/dist/commands/project/log/append.d.ts +6 -0
  95. package/dist/commands/project/log/append.d.ts.map +1 -1
  96. package/dist/commands/project/log/append.js +114 -6
  97. package/dist/commands/project/log/check.d.ts +23 -1
  98. package/dist/commands/project/log/check.d.ts.map +1 -1
  99. package/dist/commands/project/log/check.js +20 -3
  100. package/dist/commands/project/log/grammar.d.ts +37 -0
  101. package/dist/commands/project/log/grammar.d.ts.map +1 -1
  102. package/dist/commands/project/log/grammar.js +72 -0
  103. package/dist/commands/project/log/rollup.d.ts +87 -1
  104. package/dist/commands/project/log/rollup.d.ts.map +1 -1
  105. package/dist/commands/project/log/rollup.js +257 -5
  106. package/dist/config/oat-config.d.ts +14 -0
  107. package/dist/config/oat-config.d.ts.map +1 -1
  108. package/dist/config/oat-config.js +17 -0
  109. package/dist/config/resolve.d.ts.map +1 -1
  110. package/dist/config/resolve.js +5 -1
  111. package/dist/providers/identity/generic-dispatch-record.d.ts +33 -0
  112. package/dist/providers/identity/generic-dispatch-record.d.ts.map +1 -1
  113. package/dist/providers/identity/generic-dispatch-record.js +60 -1
  114. package/package.json +2 -2
@@ -324,7 +324,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
324
324
  | `oat-project-summary/SKILL.md` | `68c197c44c18 -> NG`; `a8983fec040c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> SUMMARY-01`; `f3e49b727752 -> NG`; `f979b2342d28 -> NG`; `803bf40ec423 -> NG`; `c8fced47ef8e -> NG`; `d7ea1e2a4f5f -> NG`; `5f315ab87cb1 -> NG` |
325
325
  | `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `c264a64398f0 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
326
326
  | `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
327
- | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `fffe5eea5ebd -> NG`; `e7dc6fdc4eb3 -> COMPLETE-01`; `e5460e437299 -> NG`; `882b61c9096c -> NG`; `9ffa1c752505 -> NG`; `8c5e599f6bac -> NG` |
327
+ | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `fffe5eea5ebd -> NG`; `e7dc6fdc4eb3 -> COMPLETE-01`; `e5460e437299 -> NG`; `882b61c9096c -> NG`; `9ffa1c752505 -> NG`; `8c5e599f6bac -> NG` |
328
328
  | `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `e3c08ecdab17 -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `79c8103e8656 -> NG`; `4fbd78337e33 -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
329
329
  | `oat-project-review-receive/SKILL.md` | `9b8a3743d626 -> NG`; `49ed2780983b -> NG`; `4ee8730382d3 -> NG`; `655d61df0a8f -> NG`; `765f897d67ac -> NG`; `53b58d16dd32 -> NG`; `fb8755a3bdf4 -> NG`; `1d710fb4cc66 -> NG`; `1f7dd98dff2f -> NG`; `56f78c6740e6 -> NG`; `76f5fb5a88cd -> NG`; `085abfa3599f -> REVIEWRECEIVE-01`; `92578f7df686 -> NG`; `a7d114059bb6 -> NG`; `ac88cfaa83d9 -> NG`; `594bbf70346c -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `e4c0625439f8 -> REVIEWRECEIVE-04`; `505ad8389c0a -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `e30e06f39281 -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
330
330
  | `oat-project-review-provide/SKILL.md` | `2e794bf4fc4a -> REVIEWPROVIDE-08`; `5441ab977b46 -> REVIEWPROVIDE-08` |
@@ -7,7 +7,7 @@ disable-model-invocation: true
7
7
  user-invocable: true
8
8
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, Task
9
9
  metadata:
10
- version: 1.0.0
10
+ version: 1.0.1
11
11
  ---
12
12
 
13
13
  # Goal Project
@@ -143,8 +143,8 @@ Re-alignment and declaration entries print `[realign mNN]` and
143
143
  - Before each scoped commit, resolve the project scope. Scope resolution fails
144
144
  closed. A synced project uses `oat project push` with the same message;
145
145
  another scope uses `oat internal commit-paths --identity "${COMMIT_IDENTITY:?set once and retain for retries}:oat-project-goal:1" --message "$BOOKKEEPING_MESSAGE" -- "$PROJECT_PATH/plan.md" "$PROJECT_PATH/state.md" "$PROJECT_PATH/implementation.md"`
146
- (adding `"$PROJECT_PATH/oat-execution-learnings.md"` only when this run
147
- wrote it) and stops on a nonzero exit. Set the same bookkeeping message and a
146
+ (adding `"$PROJECT_PATH/project-log.md"` when it exists) and stops on a
147
+ nonzero exit. Set the same bookkeeping message and a
148
148
  distinct operation identity for each lifecycle write; retain both for
149
149
  retries. Never include unrelated paths.
150
150
 
@@ -157,15 +157,61 @@ writing lifecycle artifacts does not imply unrelated full test suites.
157
157
 
158
158
  ## Project Log
159
159
 
160
- Defer entry flags to `oat project log append --help`; never pre-check project
161
- log configuration: the helper no-ops when logging is disabled.
160
+ Defer entry flags to `oat project log append --help`; do not read
161
+ `workflow.projectLog` yourself. The append consults it only while
162
+ `project-log.md` does not exist: a disabled, absent log is not created and the
163
+ append reports `status: skipped`, while an existing log keeps accepting
164
+ entries whatever the flag says (`DR-260718-automatic-create-on-first`).
162
165
 
163
166
  - At each milestone activation (Step 7), append exactly one structural entry:
164
167
  `oat project log append --project "$PROJECT_PATH" --structural --producer oat-project-goal --ref <activated mNN> --idempotency-key "<goal-slug>-activate-<mNN>" --body "Activated <mNN> (<ordered phase ids>); <goal-slug>-activate-<mNN>"`.
165
168
  - At each re-alignment entry (Step 8), append exactly one structural entry with
166
169
  `--ref <delivered mNN>` and the key `<goal-slug>-realign-<mNN>`.
167
- - Learnings capture at re-alignment is a judgment entry (brief contract
168
- section 12.10).
170
+ - Learnings capture at re-alignment is a category-bearing judgment entry
171
+ written through the learning write below (brief contract section 12.10).
172
+
173
+ Every learning this skill records uses one shared write. Give each observation
174
+ a stable, whitespace-free source id unique to this goal and observation (for
175
+ example `<goal-slug>-learning-<mNN>-<NN>`) and retain it for retries; it is
176
+ both `--source` and `--idempotency-key`, so a resumed step appends nothing.
177
+ Write the learning title as `--area` and the body as `Observation:`,
178
+ `Impact:`, `Recommendation:` and, when it applies, `Uncertainty:` lines.
179
+
180
+ ```bash
181
+ # Learning write (shared by oat-project-autonomous, oat-cursor-cloud-projects
182
+ # and oat-project-goal): oat_record_learning <category> <source-id> <title> <body>
183
+ oat_record_learning() {
184
+ local category="$1" source="$2" title="$3" body="$4" type result
185
+ case "$category" in
186
+ gotcha | environment-limited) type=friction ;;
187
+ efficiency | candidate-skill-content) type=worked-well ;;
188
+ documentation-gap | decision) type=feedback ;;
189
+ *)
190
+ echo "oat: unknown learning category '$category'" >&2
191
+ return 1
192
+ ;;
193
+ esac
194
+ result=$(oat project log append --json --project "$PROJECT_PATH" \
195
+ --type "$type" --scope project --area "$title" \
196
+ --category "$category" \
197
+ --source "$source" \
198
+ --origin "${LEARNING_ORIGIN:?set to the producer skill name}" \
199
+ --idempotency-key "$source" \
200
+ --body "$body") || {
201
+ printf '%s\n' "$result" >&2
202
+ return 1
203
+ }
204
+ if printf '%s' "$result" | grep -Eq '"status": *"skipped"'; then
205
+ echo "oat: warning: project log disabled (workflow.projectLog=false); learning $source not recorded" >&2
206
+ fi
207
+ }
208
+ ```
209
+
210
+ Set `LEARNING_ORIGIN=oat-project-goal`. Use the six categories verbatim; the
211
+ write maps each to its judgment type (`gotcha`, `environment-limited` →
212
+ `friction`; `efficiency`, `candidate-skill-content` → `worked-well`;
213
+ `documentation-gap`, `decision` → `feedback`). Never create or append to
214
+ `oat-execution-learnings.md`.
169
215
 
170
216
  The idempotency key makes a resumed step report `already-appended` instead of
171
217
  duplicating the entry. Commit each append with the bookkeeping commit of the
@@ -597,13 +643,14 @@ agreed endpoint (brief contract sections 12.3 and 12.10).
597
643
  milestone status or recovery; when it reports stale evidence for the
598
644
  delivered milestone, stop and report `oat-project-pr-progress` as the owner.
599
645
  2. **Log the entry.** Append the re-alignment structural entry (Project Log).
600
- 3. **Capture learnings.** Write one judgment entry (`worked-well` or
601
- `friction`) through `oat project log append` when the project log is
602
- enabled; otherwise append a dated entry to
603
- `"$PROJECT_PATH/oat-execution-learnings.md"` (create it when absent). This
604
- write is the `delivered → aligning` prerequisite "learnings captured";
605
- reflection without the write does not satisfy it. Never pre-check log
606
- configuration: when the helper no-ops, write the learnings file instead.
646
+ 3. **Capture learnings.** Call `oat_record_learning` (Project Log) at least
647
+ once for what the delivered milestone taught. This write is the
648
+ `delivered → aligning` prerequisite "learnings captured"; reflection without
649
+ the write does not satisfy it. Do not read `workflow.projectLog` yourself:
650
+ an existing `project-log.md` records the learning whatever the flag says,
651
+ and only when the log is disabled and absent does the append skip
652
+ (`status: skipped`); the write then prints one warning line, and the
653
+ attempt satisfies the prerequisite. Nothing is written to any other file.
607
654
  4. **Delta interview (`GOAL-12`).** Ask only what changed: what the delivered
608
655
  milestone taught, the next milestone's outcomes, phases and endpoint, and
609
656
  any material change, which gets a focused realignment.
@@ -691,7 +738,8 @@ Goal milestone m01 activated. Next: oat-project-implement
691
738
  each milestone's `plan` carrier was written `allowed` only after that
692
739
  milestone's review, gate and approval, bound to its ordered phase set.
693
740
  - No milestone was activated before the previous delivery was observed at its
694
- agreed endpoint; learnings were written before re-alignment advanced.
741
+ agreed endpoint; learnings were written (or, with the project log disabled and absent,
742
+ attempted with its warning) before re-alignment advanced.
695
743
  - One structural log entry per activation and per re-alignment entry.
696
744
  - `declared_met` and the audit were written only after the user's explicit
697
745
  declaration, and the audit is exhaustive.
@@ -324,7 +324,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
324
324
  | `oat-project-summary/SKILL.md` | `68c197c44c18 -> NG`; `a8983fec040c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> SUMMARY-01`; `f3e49b727752 -> NG`; `f979b2342d28 -> NG`; `803bf40ec423 -> NG`; `c8fced47ef8e -> NG`; `d7ea1e2a4f5f -> NG`; `5f315ab87cb1 -> NG` |
325
325
  | `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `c264a64398f0 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
326
326
  | `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
327
- | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `fffe5eea5ebd -> NG`; `e7dc6fdc4eb3 -> COMPLETE-01`; `e5460e437299 -> NG`; `882b61c9096c -> NG`; `9ffa1c752505 -> NG`; `8c5e599f6bac -> NG` |
327
+ | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `fffe5eea5ebd -> NG`; `e7dc6fdc4eb3 -> COMPLETE-01`; `e5460e437299 -> NG`; `882b61c9096c -> NG`; `9ffa1c752505 -> NG`; `8c5e599f6bac -> NG` |
328
328
  | `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `e3c08ecdab17 -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `79c8103e8656 -> NG`; `4fbd78337e33 -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
329
329
  | `oat-project-review-receive/SKILL.md` | `9b8a3743d626 -> NG`; `49ed2780983b -> NG`; `4ee8730382d3 -> NG`; `655d61df0a8f -> NG`; `765f897d67ac -> NG`; `53b58d16dd32 -> NG`; `fb8755a3bdf4 -> NG`; `1d710fb4cc66 -> NG`; `1f7dd98dff2f -> NG`; `56f78c6740e6 -> NG`; `76f5fb5a88cd -> NG`; `085abfa3599f -> REVIEWRECEIVE-01`; `92578f7df686 -> NG`; `a7d114059bb6 -> NG`; `ac88cfaa83d9 -> NG`; `594bbf70346c -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `e4c0625439f8 -> REVIEWRECEIVE-04`; `505ad8389c0a -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `e30e06f39281 -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
330
330
  | `oat-project-review-provide/SKILL.md` | `2e794bf4fc4a -> REVIEWPROVIDE-08`; `5441ab977b46 -> REVIEWPROVIDE-08` |
@@ -7,7 +7,7 @@ disable-model-invocation: true
7
7
  user-invocable: true
8
8
  allowed-tools: Read, Write, Bash(git:*), Bash(oat:*), Bash(oat project log:*), Glob, Grep, AskUserQuestion, Task
9
9
  metadata:
10
- version: 2.3.20
10
+ version: 2.3.21
11
11
  ---
12
12
 
13
13
  # Implementation Phase
@@ -48,13 +48,13 @@ the helper no-ops when the feature is off.
48
48
  dirties the tree that the child's preflight and per-task commit checks require
49
49
  to be clean; each append is committed by the bookkeeping that owns it.
50
50
 
51
- - After every accepted subagent dispatch, record the acceptance in the generic
52
- dispatch record at `$PROJECT_PATH/implementation.md#<run-anchor>`;
53
- never mirror that record. Do not write the project log at acceptance; append
51
+ - After every accepted subagent dispatch, record the acceptance as its run line
52
+ in `$PROJECT_PATH/implementation.md` `## Orchestration Runs` (`--format line`);
53
+ never paste the record. Do not write the project log at acceptance; append
54
54
  it with the phase-outcome entry after the child's report returns.
55
55
  - Implementing a phase in the root during a Tier 1 run is a deviation, never a
56
- silent default: record the phase ID, reason, and root model under a sibling
57
- `Root-inline phase` heading at that run anchor. Sanctioned Tier 2 needs none.
56
+ silent default: record the phase ID, reason, and root model on a
57
+ `Root-inline phase:` line under `## Orchestration Runs`. Sanctioned Tier 2 needs none.
58
58
  - Before validating the review artifact or updating project bookkeeping, consume
59
59
  exactly one brief artifact-mode confirmation of reconnaissance:
60
60
  - `**Reconnaissance:** attempted`
@@ -297,7 +297,8 @@ remembered review or receive outcome does not satisfy this step.
297
297
  the review state and report the exact resume action instead of falling
298
298
  through to the prompt.
299
299
  - Record gate `IMPLEMENT-11`, the selected route, achieved independence, and
300
- dispatch-record reference in `implementation.md`.
300
+ the reviewer's request ID (its run line) as one line under
301
+ `## Reviews and Gates` in `implementation.md`.
301
302
 
302
303
  After this autonomous branch succeeds, skip the workflow preference,
303
304
  fresh-session guidance, and standard prompt below. When `OAT_AUTONOMOUS` is not
@@ -392,7 +393,7 @@ dispatch the complexity review that
392
393
  `references/docs/complexity-review-fallback.md` defines for the final loop,
393
394
  then show its decision message; under `OAT_AUTONOMOUS=1`, put the same content
394
395
  in the boundary report instead. Record the operator's choice with the report
395
- path in `implementation.md`. Agents never select the disposition. One exhausted
396
+ path as one line under `## Reviews and Gates` in `implementation.md`. Agents never select the disposition. One exhausted
396
397
  loop gets one review: follow that doc's reuse rule, so a report the receive
397
398
  step's cycle cap already produced for this final loop serves here too.
398
399
 
@@ -578,8 +579,12 @@ artifact before deciding the next transition:
578
579
 
579
580
  Persist and commit every state transition before crossing its launch, receive,
580
581
  stop, approval-aware sequence, completion, or output boundary. Append a concise
581
- audit event to `implementation.md`; that prose and review ledger rows are
582
- evidence, not routing state.
582
+ terminal line for the gate run under `## Reviews and Gates` in
583
+ `implementation.md` (`**Gate:** <gate> · **Scope:** <scope> · **Outcome:**
584
+ <outcome> · <attempt, waiver or operator choice>`), updated in place for the
585
+ same run: `state.md` owns the gate transitions, so the journal keeps one line
586
+ per gate run, never one per transition. That line and the review ledger rows
587
+ are evidence, not routing state.
583
588
 
584
589
  **Structured outcomes, receive, and policy:**
585
590
 
@@ -885,8 +890,8 @@ completion, or success output, run the configured gate:
885
890
  - `block`: read gate feedback, remediate, and re-run the gate up to
886
891
  `maxAttempts` attempts (default `2`). Persist each consumed remediation
887
892
  attempt. If the gate ends in `block` after attempts are exhausted,
888
- escalate to the human with accumulated feedback and append that feedback
889
- to `implementation.md`.
893
+ escalate to the human with accumulated feedback and record that feedback
894
+ on the gate's line under `## Reviews and Gates` in `implementation.md`.
890
895
  - `prompt`: persist the blocked boundary, surface the gate failure, and ask
891
896
  the human how to proceed. Continue only after an explicit persisted
892
897
  approval.
@@ -906,7 +911,7 @@ completion, or success output, run the configured gate:
906
911
  gate loop before escalating, then show its decision message with the
907
912
  accumulated feedback; under `OAT_AUTONOMOUS=1`, put the same content in the
908
913
  boundary report instead. Record the operator's choice with the report path
909
- in `implementation.md`. Agents never select the disposition. A single
914
+ as one line under `## Reviews and Gates` in `implementation.md`. Agents never select the disposition. A single
910
915
  unresolved policy boundary that consumed no remediation attempt is not a
911
916
  budget exhaustion and does not trigger the review.
912
917
 
@@ -1284,6 +1289,22 @@ result leaves implementation in progress: report its `invariant` and
1284
1289
  means no snapshot was owed: the closeout is not configured, not autonomous,
1285
1290
  and not lite. A command error fails closed the same way.
1286
1291
 
1292
+ Then run the journal check at the pre-Step-16 boundary, which validates the
1293
+ accepted task and phase evidence, slot placement, run lines and residue while
1294
+ the terminal headers and pointers below are still unwritten:
1295
+
1296
+ ```bash
1297
+ JOURNAL_CHECK_EXIT=0
1298
+ JOURNAL_CHECK_JSON=$(oat project journal check --project "$PROJECT_PATH" --at implement-preflight --json) || JOURNAL_CHECK_EXIT=$?
1299
+ ```
1300
+
1301
+ Continue only when `status` is `ok`. A `refused` result leaves implementation
1302
+ in progress: report each reason's `code`, `path:line` and `owner`, write
1303
+ nothing here, correct the journal through that owner (a missing task block or
1304
+ commit, a misplaced receipt, a pasted payload, an unresolved run line), commit
1305
+ the correction as bookkeeping, and run both checks again. A command error fails
1306
+ closed the same way.
1307
+
1287
1308
  Update `"$PROJECT_PATH/implementation.md"` frontmatter:
1288
1309
 
1289
1310
  ```yaml
@@ -138,8 +138,8 @@ a phase in the root during a Tier 1 run is different: subagents were available
138
138
  and approved, and the root took the work anyway. That is a deviation and must be
139
139
  recorded, but no child was accepted, so the generic dispatch record cannot carry
140
140
  it — that record is keyed on launch state the deviation does not have. Record it
141
- instead under a `Root-inline phase` heading placed beside the generic record at
142
- the same `$PROJECT_PATH/implementation.md#<run-anchor>`, giving the phase ID,
141
+ instead as one `Root-inline phase:` line under `## Orchestration Runs` in
142
+ `$PROJECT_PATH/implementation.md`, beside the run lines, giving the phase ID,
143
143
  the reason the root did not dispatch, and the model the root was running.
144
144
 
145
145
  **Tier lock:** tier is locked for the remainder of the run only after the
@@ -401,9 +401,14 @@ facts; producer stamps or self-report never overwrite configured invocation.
401
401
  All project-aware launch paths record the launch in the project's run record.
402
402
  Construct and redact the complete generic record plus OAT role event before the
403
403
  native host call; when the call returns `accepted` or `blocked-before-start`,
404
- write the request ID, the `Dispatch:` stamp, the launch status, and later the
405
- terminal outcome into the run record in `implementation.md`; that run record
406
- is the only launch record. The managed Claude validation-only
404
+ render the run line with
405
+ `oat project dispatch record --event-file <input> --format line --dispatch-stamp "<resolver dispatchStamp>"`
406
+ and write it as one list item under `## Orchestration Runs` in
407
+ `implementation.md`. After the terminal child outcome, re-render the line from
408
+ the record that carries that outcome and replace the line with the same request
409
+ ID in place. That one line per request ID (request ID, `Dispatch:` stamp,
410
+ launch status, terminal outcome) is the run record and the only launch
411
+ record; never paste the record or event JSON into the journal. The managed Claude validation-only
407
412
  `oat project dispatch record` call below is mandatory and writes nothing. A rejected
408
413
  launch must attest `provesNoChildStarted: true`; only it permits one
409
414
  exact-target approximation with a fresh request ID. Preserve exact model,
@@ -324,7 +324,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
324
324
  | `oat-project-summary/SKILL.md` | `68c197c44c18 -> NG`; `a8983fec040c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> SUMMARY-01`; `f3e49b727752 -> NG`; `f979b2342d28 -> NG`; `803bf40ec423 -> NG`; `c8fced47ef8e -> NG`; `d7ea1e2a4f5f -> NG`; `5f315ab87cb1 -> NG` |
325
325
  | `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `c264a64398f0 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
326
326
  | `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
327
- | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `fffe5eea5ebd -> NG`; `e7dc6fdc4eb3 -> COMPLETE-01`; `e5460e437299 -> NG`; `882b61c9096c -> NG`; `9ffa1c752505 -> NG`; `8c5e599f6bac -> NG` |
327
+ | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `fffe5eea5ebd -> NG`; `e7dc6fdc4eb3 -> COMPLETE-01`; `e5460e437299 -> NG`; `882b61c9096c -> NG`; `9ffa1c752505 -> NG`; `8c5e599f6bac -> NG` |
328
328
  | `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `e3c08ecdab17 -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `79c8103e8656 -> NG`; `4fbd78337e33 -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
329
329
  | `oat-project-review-receive/SKILL.md` | `9b8a3743d626 -> NG`; `49ed2780983b -> NG`; `4ee8730382d3 -> NG`; `655d61df0a8f -> NG`; `765f897d67ac -> NG`; `53b58d16dd32 -> NG`; `fb8755a3bdf4 -> NG`; `1d710fb4cc66 -> NG`; `1f7dd98dff2f -> NG`; `56f78c6740e6 -> NG`; `76f5fb5a88cd -> NG`; `085abfa3599f -> REVIEWRECEIVE-01`; `92578f7df686 -> NG`; `a7d114059bb6 -> NG`; `ac88cfaa83d9 -> NG`; `594bbf70346c -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `e4c0625439f8 -> REVIEWRECEIVE-04`; `505ad8389c0a -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `e30e06f39281 -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
330
330
  | `oat-project-review-provide/SKILL.md` | `2e794bf4fc4a -> REVIEWPROVIDE-08`; `5441ab977b46 -> REVIEWPROVIDE-08` |
@@ -864,7 +864,7 @@ the artifact record fields come from the phase anchors as Brief-Mode Phase
864
864
  Execution describes; validate the anchors before launch.
865
865
 
866
866
  The Review Scope names review-outcome bookkeeping as out of scope: this
867
- review's `## Reviews` row and its disposition, the Orchestration Run entry for
867
+ review's `## Reviews` row and its disposition, the run-line update for
868
868
  this review's outcome, the deferred phase-outcome and review-orchestration
869
869
  project-log entries, and the ledger's record of any review-fix commit. Step 7b
870
870
  writes all of them after the review returns, so their absence at the reviewed
@@ -964,14 +964,14 @@ On hosts that do not support resuming a completed child handle, this fresh
964
964
  same-target fix launch is expected rather than an anomalous recovery.
965
965
 
966
966
  Retry exhaustion stops a sequential run. In a parallel group, mark the phase
967
- `excluded`, do not merge its worktree, and report the review artifact and
968
- worktree in Outstanding Items.
967
+ `excluded`, do not merge its worktree, and record the review artifact and
968
+ worktree as one line under `## Deferred Findings`.
969
969
 
970
970
  **Complexity review at retry exhaustion.** Before escalating, dispatch the
971
971
  complexity review that `references/docs/complexity-review-fallback.md` defines
972
972
  for this exhausted loop, then show its decision message; under
973
973
  `OAT_AUTONOMOUS=1`, put the same content in the boundary report instead.
974
- Record the operator's choice with the report path in `implementation.md`.
974
+ Record the operator's choice with the report path as one line under `## Reviews and Gates` in `implementation.md`.
975
975
  Agents never select the disposition. For an excluded parallel phase, the
976
976
  review reads that phase's committed worktree range and its decision joins the
977
977
  fan-in report.
@@ -1015,7 +1015,7 @@ that limit, the phase row goes `blocked`. Before escalating, dispatch the
1015
1015
  complexity review that `references/docs/complexity-review-fallback.md` defines
1016
1016
  for this exhausted gate loop, then show its decision message; under
1017
1017
  `OAT_AUTONOMOUS=1`, put the same content in the boundary report instead.
1018
- Record the operator's choice with the report path in `implementation.md`.
1018
+ Record the operator's choice with the report path as one line under `## Reviews and Gates` in `implementation.md`.
1019
1019
  Agents never select the disposition. Launch, transport, and validation
1020
1020
  failures consume no retry round and do not trigger the review.
1021
1021
 
@@ -1105,7 +1105,7 @@ reviewer. Write the phase's task ledger:
1105
1105
  - when the phase report carried a recovery attempt, after the matching
1106
1106
  handoff-matrix row validates, clear the terminal `pending_attempt` marker,
1107
1107
  preserve `used_attempts`, and append the validated canonical recovery event
1108
- to `implementation.md`;
1108
+ to the phase's section of `implementation.md`;
1109
1109
  - remove legacy `oat_execution_mode: subagent-driven`; and
1110
1110
  - preserve any configured retry override.
1111
1111
 
@@ -1152,9 +1152,23 @@ the root ledger.
1152
1152
  Run after the phase's terminal review outcome (pass, or retry exhaustion).
1153
1153
  Write the review-outcome bookkeeping that Step 7a leaves out:
1154
1154
 
1155
- - append an Orchestration Run with phase outcomes, task commits, phase/root
1156
- review result, fix iterations, dispatch stamps, selection reasons,
1157
- candidates, optional nested dispatches, worktrees, and outstanding items;
1155
+ - under `## Orchestration Runs`, update in place the one run line per request
1156
+ ID this phase launched (implementer, reviewer, fix, continuation and
1157
+ optional nested requests): re-render it with
1158
+ `oat project dispatch record --event-file <input> --format line --dispatch-stamp "<resolver dispatchStamp>"`
1159
+ from the record that carries the terminal outcome and replace the line that
1160
+ has the same request ID; never append a second line for one request ID and
1161
+ never paste the record or event JSON;
1162
+ - record the review result in the phase section: when review-receive ran,
1163
+ its `### Review Received: pNN` receipt is that record (finding identity and
1164
+ substance, disposition and rationale, the fix task or approved deferral it
1165
+ links to, final outcome; the review path is a local-only citation);
1166
+ otherwise write one line with the reviewer's request ID, verdict and
1167
+ severity counts. Write one terminal line per gate run under
1168
+ `## Reviews and Gates`; `state.md` owns gate transitions, so the journal line
1169
+ records only the outcome, waivers and operator choices;
1170
+ - write excluded parallel phases and unmerged worktrees as lines under
1171
+ `## Deferred Findings`;
1158
1172
  - update only the plan review event whose Scope + Type + artifact filename
1159
1173
  identifies the review being dispositioned, through `fixes_added` /
1160
1174
  `fixes_completed` / `passed` as appropriate;
@@ -65,11 +65,11 @@ cat "$PROJECT_PATH/plan.md" | head -10 | grep "oat_status:"
65
65
 
66
66
  ### Step 1.5: Resumption Detection
67
67
 
68
- If `{PROJECT_PATH}/implementation.md` already contains orchestration run entries, we may be resuming an interrupted run.
68
+ If `{PROJECT_PATH}/implementation.md` already contains run lines under `## Orchestration Runs`, we may be resuming an interrupted run.
69
69
 
70
- 1. Read `implementation.md` and find the most recent `### Run N` entry.
71
- 2. Compare its phases-passed / phases-failed / phases-stopped counts against the plan's phase list.
72
- 3. If there are phases in the plan that are not yet covered by any run entry, those are the resume targets.
70
+ 1. Read `implementation.md`: the run lines under `## Orchestration Runs` (one `run/v1` line per request ID) and each phase section's `**Status:**`. A journal written before run lines existed carries `### Run N` entries instead; read the most recent one.
71
+ 2. A run line with `terminal=no` is a live or interrupted launch: reconcile its handle (below) before any new launch.
72
+ 3. Phases in the plan whose phase section is not complete are the resume targets.
73
73
  4. Read `state.md` for `oat_current_task` to cross-check the expected resume point.
74
74
  5. Read `git log` to verify the most recent bookkeeping commit matches the last reported state.
75
75
 
@@ -7,7 +7,7 @@ disable-model-invocation: true
7
7
  user-invocable: true
8
8
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
9
9
  metadata:
10
- version: 1.1.10
10
+ version: 1.1.11
11
11
  ---
12
12
 
13
13
  # Lite Project