@open-agent-toolkit/cli 0.2.56 → 0.2.58

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 (33) hide show
  1. package/assets/agents/oat-phase-implementer.md +166 -10
  2. package/assets/bundle-metadata.json +1 -1
  3. package/assets/docs/contributing/smoke-testing.md +44 -0
  4. package/assets/docs/workflows/projects/implementation-execution.md +6 -2
  5. package/assets/docs/workflows/skills/explainer-kit.md +8 -5
  6. package/assets/public-package-versions.json +4 -4
  7. package/assets/skills/analyze/SKILL.md +18 -17
  8. package/assets/skills/oat-brainstorm/SKILL.md +2 -2
  9. package/assets/skills/oat-doctor/SKILL.md +49 -36
  10. package/assets/skills/oat-idea-summarize/SKILL.md +2 -2
  11. package/assets/skills/oat-project-autonomous/SKILL.md +17 -10
  12. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +3 -3
  13. package/assets/skills/oat-project-complete/SKILL.md +18 -8
  14. package/assets/skills/oat-project-design/SKILL.md +15 -1
  15. package/assets/skills/oat-project-discover/SKILL.md +3 -3
  16. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +3 -3
  17. package/assets/skills/oat-project-implement/SKILL.md +1 -1
  18. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +12 -3
  19. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +3 -3
  20. package/assets/skills/oat-project-implement/references/phase-execution.md +225 -7
  21. package/assets/skills/oat-project-implement/references/plan-and-resume.md +5 -2
  22. package/assets/skills/oat-project-implement/scripts/capture-dirty-tree.mjs +1069 -0
  23. package/assets/skills/oat-project-import-plan/SKILL.md +12 -6
  24. package/assets/skills/oat-project-next/SKILL.md +7 -5
  25. package/assets/skills/oat-project-plan/SKILL.md +24 -12
  26. package/assets/skills/oat-project-pr-final/SKILL.md +2 -2
  27. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +3 -3
  28. package/assets/skills/oat-project-quick-start/SKILL.md +11 -6
  29. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +3 -3
  30. package/assets/skills/oat-project-retro/SKILL.md +4 -2
  31. package/assets/skills/oat-project-review-receive/SKILL.md +9 -5
  32. package/assets/skills/oat-project-revise/SKILL.md +6 -6
  33. package/package.json +2 -2
@@ -228,10 +228,10 @@ remains immutable baseline evidence for the original p01-t01 verification.
228
228
  | `oat-project-new/SKILL.md` | `f7ca8635452f -> NG`; `dceff5cc04b5 -> NG`; `1af4957a1af2 -> NEW-01`; `45b699c1c0b5 -> NEW-01`; `ba6d120791c1 -> NEW-01`; `33ce6a6c30aa -> NEW-02`; `0f5a90f34f63 -> NG`; `d0ea3a91261d -> NG` |
229
229
  | `oat-project-quick-start/SKILL.md` | `f7ca8635452f -> NG`; `c493a38b89f2 -> QS-04`; `655d61df0a8f -> NG`; `dceff5cc04b5 -> NG`; `1af4957a1af2 -> QS-01`; `141d0a20099b -> QS-01`; `45b699c1c0b5 -> QS-01`; `ba6d120791c1 -> QS-01`; `1a5ee85164ff -> QS-02`; `af8e2bea90d7 -> QS-04`; `a823cf5aeaec -> QS-04`; `7753dc323083 -> QS-04`; `1f557da5e03c -> QS-04`; `1564ca151111 -> NG`; `c24787334ade -> QS-05`; `021ba03c82c5 -> QS-05`; `5d1a9d1b661d -> QS-05`; `318f304ee3b3 -> QS-05`; `cc700d4d2cab -> QS-05`; `7ef6aa642400 -> QS-05`; `4d389b234556 -> QS-05`; `84c506dac106 -> QS-05`; `caf7622a2e02 -> QS-05`; `8917190b2e98 -> QS-06`; `5a028d846aa5 -> QS-06`; `b1d92192b8ca -> QS-06`; `bdbb18955cc4 -> QS-06`; `6d159a2e8f8e -> QS-06`; `61a9849f4dfc -> QS-06`; `31cb92052ea6 -> QS-06`; `39e3fe23dd85 -> QS-07`; `2cb069a2590b -> NG`; `fd0aff270853 -> NG`; `a114b27f8b4b -> NG`; `77dc8e1b728a -> QS-08`; `d3e3fba65b96 -> QS-09`; `71c2a0ba99bf -> QS-09`; `f47f9f9c0d03 -> QS-09`; `224a4b43fb29 -> QS-10`; `744f130d4116 -> QS-12`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> QS-12`; `857e91aa3095 -> NG`; `b4af2220eb91 -> QS-12` |
230
230
  | `oat-project-quick-start/references/docs/autonomy-contract.md` | `* -> NG` |
231
- | `oat-project-discover/SKILL.md` | `8fe35bbfbcd6 -> NG`; `6acc57686847 -> NG`; `4df56b83b98e -> NG`; `660fcdb9dd0d -> NG`; `655d61df0a8f -> NG`; `302f5a4e2f7e -> DISC-03`; `8ee1861bb37c -> DISC-03`; `5c8d5f04f6e2 -> DISC-05`; `73964bb042ab -> DISC-05`; `82cc79370b80 -> DISC-05`; `ff09e8f7774f -> DISC-06`; `323e71dca05d -> DISC-06`; `012bab5b478e -> DISC-06`; `523764981692 -> DISC-06`; `7eaa40e078b9 -> DISC-07`; `b57408be1e7b -> DISC-07`; `4683ea4a7d2f -> DISC-07`; `04454a79d998 -> DISC-08`; `54444ee79fc8 -> DISC-08`; `dd3b5d3d6424 -> DISC-08`; `f64efa435cb2 -> DISC-08`; `1f802b9bc5ad -> DISC-08`; `3fad0405b2bc -> NG`; `2eeba46b7d76 -> DISC-08` |
231
+ | `oat-project-discover/SKILL.md` | `8fe35bbfbcd6 -> NG`; `6acc57686847 -> NG`; `4df56b83b98e -> NG`; `660fcdb9dd0d -> NG`; `655d61df0a8f -> NG`; `302f5a4e2f7e -> DISC-03`; `8ee1861bb37c -> DISC-03`; `50a1cdc5156b -> DISC-05`; `73964bb042ab -> DISC-05`; `82cc79370b80 -> DISC-05`; `ff09e8f7774f -> DISC-06`; `323e71dca05d -> DISC-06`; `012bab5b478e -> DISC-06`; `59b36042ba08 -> DISC-06`; `7eaa40e078b9 -> DISC-07`; `b57408be1e7b -> DISC-07`; `4683ea4a7d2f -> DISC-07`; `04454a79d998 -> DISC-08`; `54444ee79fc8 -> DISC-08`; `dd3b5d3d6424 -> DISC-08`; `f64efa435cb2 -> DISC-08`; `1f802b9bc5ad -> DISC-08`; `3fad0405b2bc -> NG`; `2eeba46b7d76 -> DISC-08` |
232
232
  | `oat-project-design/SKILL.md` | `d942bb5a75dc -> NG`; `5eb3949f32e1 -> NG`; `8bdedbff2084 -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> DES-01`; `2fd9e4306093 -> NG`; `30aaa490f54f -> NG`; `5d39260a7350 -> DES-03`; `925238b3a9b8 -> DES-03`; `f44832c14f8f -> DES-03`; `7f6ed9174a80 -> DES-03`; `ea8a45cff484 -> DES-03`; `ae06e7f3590d -> DES-03`; `ad9715bfa9b5 -> DES-03`; `235f4eba81d9 -> DES-03`; `86d15c022ff2 -> DES-03`; `c08ee2c84186 -> DES-03`; `bd3ee332d171 -> DES-03`; `ec88b585a24d -> DES-03`; `a9595a6486f1 -> DES-04`; `accb06cd6f3c -> DES-04`; `806001c2c365 -> DES-04`; `696587b33f1e -> DES-04`; `9c3320eee2f8 -> NG`; `8b653210ce17 -> NG`; `8ad2a4dc63d2 -> DES-05`; `33cc7540d89e -> DES-05`; `51a2b698ba14 -> DES-05`; `81085592cc91 -> DES-05`; `74b952cc1121 -> DES-05`; `da7551391a41 -> DES-05`; `02c93ec05a4a -> DES-06`; `6864967fd8a4 -> DES-06`; `84e9be719156 -> DES-06`; `7ed89c44264b -> DES-06`; `dc7ba56c1cd4 -> DES-06`; `57ccefb935bf -> DES-06`; `9d27238332b2 -> NG`; `a0c758ab26aa -> NG`; `0e17c1a2de0b -> DES-07`; `e9ea8625567c -> DES-07`; `908e710e7304 -> DES-07`; `b3df7f6b838c -> DES-07`; `f2cb6d4a915e -> DES-07`; `2f4a7f0c9fe5 -> DES-07`; `feccfddbb990 -> DES-07`; `62556fd0060a -> DES-07`; `5382604ed237 -> DES-07`; `3b8724979206 -> DES-07`; `f86a1f05edb9 -> DES-07`; `65f2c8b5c7fd -> DES-07`; `96e24cf8a888 -> DES-07`; `bd3ad56d6265 -> DES-08`; `a19d9c6d7b42 -> DES-08`; `3af5412588ba -> DES-08`; `a0f1c66507d0 -> DES-08`; `a97364c2ca8b -> DES-08`; `4725e333dea4 -> DES-07`; `595d3a64c0f4 -> DES-07`; `57923a130802 -> DES-07`; `7d8fdfb4ca6f -> NG`; `033fb711de49 -> NG`; `d30bb6464138 -> DES-08` |
233
233
  | `oat-project-design/references/selective-review-pass.md` | `d4956192b82e -> DES-06`; `7d6e1f926ecb -> DES-06`; `04f918a5fcac -> DES-07` |
234
- | `oat-project-plan/SKILL.md` | `5eb3949f32e1 -> NG`; `64a08153bb9e -> NG`; `655d61df0a8f -> NG`; `56b37486f09d -> PLAN-01`; `cf317c17c586 -> PLAN-02`; `781643b0f2c3 -> NG`; `01fd7cca8253 -> PLAN-04`; `7bc7fa3f2cbb -> NG`; `da28ce0a5f2e -> NG`; `e334f94c4d35 -> NG`; `1fa55762c038 -> NG`; `c0935b5484a2 -> NG`; `6008163054f8 -> PLAN-05`; `571271f4d71b -> PLAN-06`; `746b760289e4 -> PLAN-06`; `de195590ff83 -> NG`; `49640510829a -> PLAN-07`; `4bef7afa7a71 -> PLAN-08`; `e5886632533e -> PLAN-08`; `4cfe1df14372 -> NG`; `d116c97a500c -> PLAN-10`; `aa62facff547 -> PLAN-10`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> PLAN-11`; `1734b2c85c5d -> NG`; `b4af2220eb91 -> PLAN-11` |
234
+ | `oat-project-plan/SKILL.md` | `5eb3949f32e1 -> NG`; `2f0ae331febf -> NG`; `655d61df0a8f -> NG`; `56b37486f09d -> PLAN-01`; `cf317c17c586 -> PLAN-02`; `781643b0f2c3 -> NG`; `01fd7cca8253 -> PLAN-04`; `7bc7fa3f2cbb -> NG`; `da28ce0a5f2e -> NG`; `e334f94c4d35 -> NG`; `1fa55762c038 -> NG`; `c0935b5484a2 -> NG`; `6008163054f8 -> PLAN-05`; `571271f4d71b -> PLAN-06`; `746b760289e4 -> PLAN-06`; `de195590ff83 -> NG`; `49640510829a -> PLAN-07`; `4bef7afa7a71 -> PLAN-08`; `e5886632533e -> PLAN-08`; `4cfe1df14372 -> NG`; `d116c97a500c -> PLAN-10`; `aa62facff547 -> PLAN-10`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> PLAN-11`; `1734b2c85c5d -> NG`; `b4af2220eb91 -> PLAN-11` |
235
235
  | `oat-project-import-plan/SKILL.md` | `f7ca8635452f -> NG`; `c2e5fa410069 -> NG`; `655d61df0a8f -> NG`; `dceff5cc04b5 -> NG`; `1af4957a1af2 -> IMPORT-01`; `45b699c1c0b5 -> IMPORT-01`; `ba6d120791c1 -> IMPORT-01`; `070ebc5259af -> IMPORT-03`; `c11552696e2e -> IMPORT-03`; `cfe661966baf -> IMPORT-04`; `baa91c0a0bf8 -> NG`; `e364e84b2702 -> NG`; `39031985a945 -> IMPORT-06`; `f106aa29a217 -> IMPORT-07`; `65038450aee3 -> IMPORT-07`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPORT-09` |
236
236
  | `oat-project-implement/SKILL.md` | `18980f6bc1a6 -> NG`; `e0355c7a05e9 -> IMPLEMENT-11+IMPLEMENT-13+IMPLEMENT-16`; `6296f41ae11c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> IMPLEMENT-01`; `8ce8a09feca4 -> NG`; `bd0cb4988188 -> NG`; `28af4ee0055d -> NG` |
237
237
  | `oat-project-implement/references/completion-and-closeout.md` | `f7dab9c1f96c -> IMPLEMENT-12`; `c69c17a069a8 -> IMPLEMENT-14`; `a97fa5634a68 -> IMPLEMENT-14`; `3af58881811c -> IMPLEMENT-14`; `4203e1f49d0f -> IMPLEMENT-14`; `c3bd2458a3d3 -> IMPLEMENT-13`; `95b5eafc070d -> IMPLEMENT-13`; `25ecbe9c998b -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `0a384debbbe7 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f18283bc1cf9 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `2c1ffc4a82dd -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `3454a07aa843 -> IMPLEMENT-16`; `8d7cd69e5b09 -> NG`; `d5fe597d266f -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `55a152e944c1 -> IMPLEMENT-16`; `effac7cbd573 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d2a34d8b148 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d27462aaed26 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d52ecb17268 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `5b91aabe3757 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `fd0ad919f702 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `63bf28df1474 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a4ed471dbc78 -> IMPLEMENT-16`; `6b7a64cec6e5 -> IMPLEMENT-16`; `0a4fdba0ebc0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a5033c2aada5 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `e77609eddba0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `351156e8dde4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `51d45bd2bbd1 -> IMPLEMENT-16`; `f7796ffcc804 -> IMPLEMENT-16`; `990d730cb494 -> IMPLEMENT-16`; `6ed28bb7d384 -> IMPLEMENT-16`; `8b7d4b5bcf1b -> IMPLEMENT-16`; `88aad500e6e9 -> IMPLEMENT-16`; `877e3e3f9eda -> IMPLEMENT-16`; `fc03c97f834e -> IMPLEMENT-16`; `12939a3da5e0 -> IMPLEMENT-16`; `bdb418335a88 -> IMPLEMENT-16`; `fba97e596ebd -> IMPLEMENT-16`; `3d0b5e2f14f0 -> IMPLEMENT-17`; `87f1424a8692 -> NG`; `6b1ec05182f0 -> IMPLEMENT-11`; `e6d696a27c91 -> NG`; `c77f8ccb52ad -> NG`; `48de2614c0ba -> IMPLEMENT-11`; `32d53f5212e5 -> IMPLEMENT-11`; `7cdb4a9c57b7 -> IMPLEMENT-11`; `16ffc0aa099b -> IMPLEMENT-11`; `d6868ea10b3f -> IMPLEMENT-11`; `4f05ff5567be -> IMPLEMENT-11`; `c70b47ae7a6d -> IMPLEMENT-11`; `5fafd093b58e -> NG`; `567d43ab0c2e -> NG`; `21ceaf7e658a -> NG`; `249427a9f475 -> NG`; `8a7ec13a9b7c -> NG`; `9aeb7fce2012 -> IMPLEMENT-18`; `f11a7cdda220 -> IMPLEMENT-18`; `4523ac029152 -> NG`; `6e87b08c4046 -> NG`; `baa6052c7f0a -> IMPLEMENT-18`; `27d3fad116b1 -> IMPLEMENT-18`; `2cfbeb4388a5 -> IMPLEMENT-18`; `c56ea56a56db -> NG`; `43e2e3c1380d -> IMPLEMENT-17`; `b49690277fb5 -> NG`; `df12304d6a36 -> NG`; `52eacac11fef -> IMPLEMENT-17`; `60092df6b17b -> IMPLEMENT-17`; `361872c6b00e -> IMPLEMENT-17`; `d2bc711a75fb -> IMPLEMENT-17`; `e0c2ea5032de -> NG`; `e3055dc5dcd1 -> NG`; `d26330f2299f -> NG` |
@@ -244,7 +244,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
244
244
  | `oat-project-summary/SKILL.md` | `68c197c44c18 -> NG`; `35cb2ea1d677 -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> SUMMARY-01`; `f3e49b727752 -> NG`; `f979b2342d28 -> NG`; `803bf40ec423 -> NG`; `c8fced47ef8e -> NG`; `d7ea1e2a4f5f -> NG`; `5f315ab87cb1 -> NG` |
245
245
  | `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `c264a64398f0 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
246
246
  | `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
247
- | `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` |
247
+ | `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` |
248
248
  | `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`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `fcb9de611ff3 -> NG`; `d2a838dfb18d -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
249
249
  | `oat-project-review-receive/SKILL.md` | `9b8a3743d626 -> NG`; `df49c8c6f192 -> NG`; `4ee8730382d3 -> NG`; `655d61df0a8f -> NG`; `765f897d67ac -> NG`; `53b58d16dd32 -> NG`; `fb8755a3bdf4 -> NG`; `c8ab5dd90075 -> NG`; `1f7dd98dff2f -> NG`; `56f78c6740e6 -> NG`; `76f5fb5a88cd -> NG`; `085abfa3599f -> REVIEWRECEIVE-01`; `3ad3aadb8c60 -> NG`; `a7d114059bb6 -> NG`; `ac88cfaa83d9 -> NG`; `594bbf70346c -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `aba178a21441 -> REVIEWRECEIVE-04`; `a37e601cd731 -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `90001dadf75f -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
250
250
  | `oat-project-review-provide/SKILL.md` | `2e794bf4fc4a -> REVIEWPROVIDE-08`; `5441ab977b46 -> REVIEWPROVIDE-08` |
@@ -60,6 +60,7 @@ Before each phase:
60
60
  worktree: {assigned checkout}
61
61
  parallel_group: {group or null}
62
62
  expected_base_sha: {group base or PHASE_BASE_HEAD}
63
+ recovered_patch: {artifact reference for a same-target continuation, or null}
63
64
  commit_convention: {from plan.md}
64
65
  request_id: {generic dispatch request ID}
65
66
  phase_recovery_limit: {resolved 0-20 limit}
@@ -212,6 +213,200 @@ Handle and exact-target continuity use these mutually compatible branches:
212
213
  Handle unavailability alone does not make automatic recovery ineligible or
213
214
  stop it. It selects the second branch only when all its conditions hold.
214
215
 
216
+ **Recovering a lost child's uncommitted work.** A fresh child never starts on a
217
+ dirty tree. When the lost or unresumable child left uncommitted work behind,
218
+ neither continuity branch above may run until that work is captured into an
219
+ immutable, verified artifact and the worktree is returned to its clean base.
220
+ Run this ordered sequence, and treat every nonzero exit as a park-the-phase
221
+ STOP rather than a best-effort restore:
222
+
223
+ 1. Resolve the capture script through this skill's installed root rather than a
224
+ repository-relative path, so a user-scope install resolves too:
225
+
226
+ ```bash
227
+ set -eu
228
+ CAPTURE_SCRIPT=""
229
+ REPO_ROOT=$(git -C "$PHASE_WORKTREE" rev-parse --show-toplevel 2>/dev/null || true)
230
+ for CAPTURE_ROOT in "${SKILL_DIR:-}" \
231
+ "${HOME:-}/.agents/skills/oat-project-implement" \
232
+ "${REPO_ROOT:+$REPO_ROOT/.agents/skills/oat-project-implement}"; do
233
+ [ -n "$CAPTURE_ROOT" ] || continue
234
+ [ -f "$CAPTURE_ROOT/scripts/capture-dirty-tree.mjs" ] || continue
235
+ CAPTURE_SCRIPT="$CAPTURE_ROOT/scripts/capture-dirty-tree.mjs"
236
+ break
237
+ done
238
+ [ -n "$CAPTURE_SCRIPT" ] || {
239
+ echo "capture-script-unavailable" >&2
240
+ exit 1
241
+ }
242
+ ```
243
+
244
+ The guard terminates; it never falls through to an empty command, because
245
+ `node ""` reads its program from stdin and exits zero at EOF, which is what a
246
+ non-interactive harness always presents — an unverified artifact would sail
247
+ through as a pass. Shell variables do not survive across separate tool
248
+ invocations, so every block below that runs the script repeats this
249
+ resolution and this guard in the same block rather than relying on
250
+ `CAPTURE_SCRIPT` carrying over. An empty `CAPTURE_SCRIPT` is a
251
+ `capture-script-unavailable` STOP: report it verbatim
252
+ with the probed roots and the recovery command
253
+ `oat tools install workflows --scope <user|project>` or
254
+ `oat tools update --pack workflows --scope <user|project>`, leave the
255
+ worktree as it is, and park the phase. Never fall back to a
256
+ repository-relative path.
257
+
258
+ 2. Establish that the former child cannot still be writing: its handle is
259
+ terminated, or its worktree is quiescent.
260
+ 3. Capture the work. The script establishes quiescence from two byte-identical
261
+ worktree snapshots, classifies the dirt, captures the index, worktree, and
262
+ untracked components binary-safely, writes a `manifest.json` carrying the
263
+ `HEAD` SHA, the affected paths, the `git diff --cached --stat` summary, and a
264
+ SHA-256 digest and byte size for every artifact file, derives the
265
+ `restorePlan` step 4 follows, and proves the artifact replays into a pristine
266
+ replica of that same `HEAD` before it seals the result. Only a sealed
267
+ artifact can be verified later:
268
+
269
+ ```bash
270
+ set -eu
271
+ CAPTURE_SCRIPT=""
272
+ REPO_ROOT=$(git -C "$PHASE_WORKTREE" rev-parse --show-toplevel 2>/dev/null || true)
273
+ for CAPTURE_ROOT in "${SKILL_DIR:-}" \
274
+ "${HOME:-}/.agents/skills/oat-project-implement" \
275
+ "${REPO_ROOT:+$REPO_ROOT/.agents/skills/oat-project-implement}"; do
276
+ [ -n "$CAPTURE_ROOT" ] || continue
277
+ [ -f "$CAPTURE_ROOT/scripts/capture-dirty-tree.mjs" ] || continue
278
+ CAPTURE_SCRIPT="$CAPTURE_ROOT/scripts/capture-dirty-tree.mjs"
279
+ break
280
+ done
281
+ [ -n "$CAPTURE_SCRIPT" ] || {
282
+ echo "capture-script-unavailable" >&2
283
+ exit 1
284
+ }
285
+
286
+ node "$CAPTURE_SCRIPT" \
287
+ --worktree "$PHASE_WORKTREE" \
288
+ --artifact-dir "$ARTIFACT_DIR" \
289
+ --writer-identity "$FORMER_CHILD_IDENTITY" \
290
+ --bounded-file "<in-phase path>" \
291
+ --bounded-file "<another in-phase path>"
292
+ ```
293
+
294
+ The phase file boundary is mandatory, not a template flourish: repeat
295
+ `--bounded-file` once per in-phase path from the plan, because capture
296
+ refuses to run without one and dirt outside the boundary is
297
+ `unsupported-dirt` rather than something a continuation may re-commit.
298
+ Repeat the flag rather than packing paths into one delimited value; a
299
+ filename may legitimately contain a comma.
300
+
301
+ A nonzero exit is a STOP. Report its reason — `active-writer`,
302
+ `unsupported-dirt`, or `round-trip-failed` — verbatim, leave the worktree as
303
+ it is, and park the phase.
304
+
305
+ 4. Restore only the affected paths, following the `restorePlan` the script
306
+ emitted, and always with `git --literal-pathspecs` so a filename cannot act
307
+ as pathspec magic: `restore-from-head` runs
308
+ `git --literal-pathspecs restore --staged --worktree --source=HEAD -- <path>`,
309
+ `unstage-and-remove` runs
310
+ `git --literal-pathspecs restore --staged -- <path>` and then deletes the
311
+ file, and `remove-untracked` deletes the captured untracked path. The script
312
+ never restores; this lifecycle does, and only the actions the plan names.
313
+ 5. Brief the fresh same-target continuation with `recovered_patch`.
314
+ 6. The continuation resolves the script the same way and re-verifies the
315
+ artifact before it applies anything:
316
+
317
+ ```bash
318
+ set -eu
319
+ # `recovered_patch` is optional and all-or-nothing. Without one there is
320
+ # nothing to verify and nothing to apply, so the verifier is skipped
321
+ # entirely; a partial brief is a named stop rather than an unbound-variable
322
+ # death. Never dereference an artifact variable outside the branch: under
323
+ # `set -u` an unset one exits here, and an empty one fails verification —
324
+ # either way an artifact-free retry parks before the ledger reconciliation
325
+ # it needs to reach.
326
+ if [ -z "${ARTIFACT_DIR:-}${MANIFEST_DIGEST:-}${ARTIFACT_SIZE:-}" ]; then
327
+ : # No recovered_patch: continue to the ledger reconciliation.
328
+ elif [ -z "${ARTIFACT_DIR:-}" ] || [ -z "${MANIFEST_DIGEST:-}" ] ||
329
+ [ -z "${ARTIFACT_SIZE:-}" ]; then
330
+ echo "artifact-verification-failed: a partial recovered_patch is unusable; artifact, manifest_digest and size travel together" >&2
331
+ exit 1
332
+ else
333
+ CAPTURE_SCRIPT=""
334
+ REPO_ROOT=$(git -C "$PHASE_WORKTREE" rev-parse --show-toplevel 2>/dev/null || true)
335
+ for CAPTURE_ROOT in "${SKILL_DIR:-}" \
336
+ "${HOME:-}/.agents/skills/oat-project-implement" \
337
+ "${REPO_ROOT:+$REPO_ROOT/.agents/skills/oat-project-implement}"; do
338
+ [ -n "$CAPTURE_ROOT" ] || continue
339
+ [ -f "$CAPTURE_ROOT/scripts/capture-dirty-tree.mjs" ] || continue
340
+ CAPTURE_SCRIPT="$CAPTURE_ROOT/scripts/capture-dirty-tree.mjs"
341
+ break
342
+ done
343
+ [ -n "$CAPTURE_SCRIPT" ] || {
344
+ echo "capture-script-unavailable" >&2
345
+ exit 1
346
+ }
347
+
348
+ EXPECTED_HEAD=$(git -C "$PHASE_WORKTREE" rev-parse --verify HEAD)
349
+ node "$CAPTURE_SCRIPT" --verify \
350
+ --artifact-dir "$ARTIFACT_DIR" \
351
+ --manifest-digest "$MANIFEST_DIGEST" \
352
+ --size "$ARTIFACT_SIZE" \
353
+ --expected-head "$EXPECTED_HEAD"
354
+ fi
355
+ ```
356
+
357
+ `--expected-head` is mandatory and reconciles the artifact's captured base
358
+ with the `HEAD` about to be patched. Integrity is not base agreement: a hunk
359
+ whose context happens to match applies cleanly at the wrong commit and
360
+ silently produces wrong content, so a base mismatch is a STOP.
361
+
362
+ An `artifact-verification-failed` exit is a STOP. Verification is read-only
363
+ and conditional: it runs only when the brief carries a `recovered_patch`.
364
+ A continuation briefed without one has no artifact to resolve a script for,
365
+ so it skips verification and continues to the ledger reconciliation, and its
366
+ apply step is a no-op. The continuation completes every fail-closed
367
+ precondition — input validation, the base and immutable-history checks,
368
+ artifact verification when an artifact was briefed, and pending-attempt
369
+ reconciliation — before it applies or commits anything,
370
+ so a precondition stop leaves the branch exactly at `recovery_base_head`
371
+ with the artifact untouched and re-verifiable; re-brief from current
372
+ authoritative state rather than assuming the earlier brief still holds. Only
373
+ then, and only when an artifact was briefed and verified, does it apply
374
+ `git apply --index` for the `index` component, `git apply` for the
375
+ `worktree` component, and byte copies plus the manifest's recorded
376
+ executable bit for the `untracked` component, review the result, and commit
377
+ it as its first action. The artifact is immutable between the verification
378
+ and the application: nothing may write to it in between, and a
379
+ re-verification is required if anything might have. A continuation briefed
380
+ without a `recovered_patch` applies nothing, commits nothing here, records
381
+ no artifact reference, and proceeds to its own work with the tree as it
382
+ found it.
383
+
384
+ 7. Record the artifact reference and manifest digest in the continuation event
385
+ (`cont-<project>-<phase>-fix-N`). That first commit is a recovery commit,
386
+ not a planned task commit: expect exactly one, require the continuation to
387
+ report it with the artifact reference and manifest digest, and do not count
388
+ it against any task's one-commit rule. It is also immutable and becomes part
389
+ of the phase's base. If a later stop parks the phase after it landed, brief
390
+ the retry with `recovery_base_head` set to the reconciled current HEAD —
391
+ which includes that recovery commit and any candidate or ledger-only commit
392
+ already durably made — and without the already-committed artifact;
393
+ re-supplying it would apply the same work twice, and holding the original
394
+ base would make the exact-HEAD check unsatisfiable. That retry runs no
395
+ verifier: with `recovered_patch` null there is nothing to verify, and a
396
+ contract that referenced the artifact variables anyway would park the retry
397
+ under `set -u` before it reached the reconciliation. Carry the recovery
398
+ commit as provenance in the continuation event, and capture dirt that
399
+ accumulated afterwards as its own new `recovered_patch`.
400
+
401
+ An unresolvable capture script (`capture-script-unavailable`), an active writer
402
+ (`active-writer`), unsupported dirt (`unsupported-dirt`), a failed round trip
403
+ (`round-trip-failed`), and an unreadable, unproven, base-mismatched, or tampered
404
+ artifact (`artifact-verification-failed`) are terminal stops. None of
405
+ them authorizes a partial or best-effort restore, a widened scope, or a
406
+ fallback target. Supported dirt is exactly staged and unstaged hunks in tracked
407
+ paths, binary changes, and untracked regular files; everything else, including
408
+ staged renames, submodules, and in-progress merge or rebase state, stops.
409
+
215
410
  Attempt accounting uses exactly one of these alternatives:
216
411
 
217
412
  1. **Pending completion:** a matching `pending_attempt` may continue only after
@@ -264,7 +459,10 @@ If the exact target is lost or cannot continue, stop before editing.
264
459
  Architecture, security, product, or requirements changes stop for direction.
265
460
  Non-mechanical widening or destructive work stops before editing. Retry
266
461
  exhaustion and every governance cap stop automatic recovery. A dirty worktree
267
- or dirty history blocks continuation. Inability to establish correctness,
462
+ or dirty history blocks continuation, except for the single verified, named
463
+ `recovered_patch` artifact the sequence above produced and the continuation
464
+ verified; unverified, unsupported, or unnamed dirt still blocks. Inability to
465
+ establish correctness,
268
466
  missing original-request provenance, missing exact-target provenance, an
269
467
  unverifiable commit range, or a malformed recovery event stops for direction.
270
468
  If focused and phase verification cannot establish correctness, stop for
@@ -301,8 +499,20 @@ phase_verification: { relevant phase command }
301
499
  dispatch_target: { exact original launcher-owned target }
302
500
  dispatch_axes: { unchanged original axes }
303
501
  dispatch_stamp: { original formal Dispatch line }
502
+ recovered_patch: { artifact, manifest_digest, size, stat, components }
304
503
  ```
305
504
 
505
+ `recovered_patch` is optional and present only when the sequence above captured
506
+ a lost child's uncommitted work that is not yet committed. The same field
507
+ appears in the `mode: implement` Phase Scope above; it is null on an ordinary
508
+ first dispatch, and null again on any retry briefed after the recovery commit
509
+ landed, whose `recovery_base_head` is the reconciled current HEAD. Its `artifact` is a readable path outside the
510
+ worktree, never a mutable worktree path; `manifest_digest` and `size` are the
511
+ values the capture printed and both are required by `--verify`; `stat` is the
512
+ captured `git diff --cached --stat` summary; and `components` lists the `index`, `worktree`, and `untracked`
513
+ entries the artifact actually holds. The same field carries a recovered patch
514
+ into a same-target `implement` continuation.
515
+
306
516
  Recover mode never replays planned tasks and never consumes review findings.
307
517
  Require its Phase Recovery Continuation Report, matching canonical event,
308
518
  ledger reconciliation, immutable-history proof, focused/phase verification,
@@ -395,9 +605,13 @@ Both accepted success and accepted terminal-stop branches must:
395
605
  - for a Phase Implementation Report, verify task count; for a Phase Recovery
396
606
  Continuation Report, verify the original task and commit instead;
397
607
  - only for a Phase Implementation Report, verify each planned task commit is
398
- exactly one append-only commit in plan order, changes only declared files, and
399
- has passing task verification; never require a Phase Recovery Continuation
400
- Report to replay or restate all planned task outcomes;
608
+ exactly one append-only commit in plan order, changes only declared or
609
+ mechanically derived in-phase files, meaning the task's declared files plus
610
+ the mechanical additions permitted by, and reported under, the phase
611
+ implementer's cross-cutting option sweep, and has passing task verification;
612
+ a plan-list-only file set is not the acceptance boundary; never require a
613
+ Phase Recovery Continuation Report to replay or restate all planned task
614
+ outcomes;
401
615
  - for each reported attempted recovery (`recovered` or `failed-attempt`), verify
402
616
  attempt accounting, the immutable original commit and original request,
403
617
  exact-target provenance, one in-scope append-only recovery commit when
@@ -691,14 +905,18 @@ Count only whole-phase scopes: `pNN` or `pNN-pMM`.
691
905
  - Example: no prior passed whole-phase review, current checkpoint `p03` → review `p01-p03`.
692
906
 
693
907
  For the final implementation phase use `oat-project-review-provide code final`
694
- and do not duplicate the already completed root-owned per-phase review.
908
+ — loading the current `oat-project-review-provide/SKILL.md` and following it, or
909
+ dispatching a child that carries it — and do not duplicate the already completed
910
+ root-owned per-phase review.
695
911
 
696
912
  Example: `["p01", "p04"]` → pause after p01 completes and after p04 completes;
697
913
  skip p02, p03.
698
914
 
699
915
  If this is the final implementation phase checkpoint, run
700
- `oat-project-review-provide code final` and do not run a duplicate final
701
- phase-only lifecycle review.
916
+ `oat-project-review-provide code final` — loading the current
917
+ `oat-project-review-provide/SKILL.md` and following it, or dispatching a child
918
+ that carries it — and do not run a duplicate final phase-only lifecycle
919
+ review.
702
920
 
703
921
  Defer only a checkpoint on the final implementation phase; non-final checkpoint
704
922
  behavior remains unchanged. The final checkpoint continues through final
@@ -222,9 +222,12 @@ When `OAT_AUTONOMOUS=1`, a configured checkpoint never waits for a user:
222
222
 
223
223
  1. Use the scope calculation in `phase-execution.md` and dispatch
224
224
  `oat-project-review-provide` with `oat_review_invocation: auto` through the
225
- project dispatch substrate.
225
+ project dispatch substrate, loading the current
226
+ `oat-project-review-provide/SKILL.md` and following it or dispatching a child
227
+ that carries it.
226
228
  2. Validate the returned artifact and invoke `oat-project-review-receive`
227
- immediately. Its auto-review disposition path must run without user
229
+ immediately, loading the current `oat-project-review-receive/SKILL.md` and
230
+ following it rather than a remembered receive procedure. Its auto-review disposition path must run without user
228
231
  prompts.
229
232
  3. If receive creates fix tasks, execute them through the normal implement
230
233
  route and repeat the same bounded review/receive cycle. Do not mark the