@open-agent-toolkit/cli 0.2.50 → 0.2.52
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/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/bootstrap.md +6 -2
- package/assets/docs/cli-utilities/tool-packs.md +87 -33
- package/assets/docs/provider-sync/commands.md +30 -2
- package/assets/docs/provider-sync/config.md +19 -0
- package/assets/docs/provider-sync/manifest-and-drift.md +37 -0
- package/assets/docs/provider-sync/providers.md +69 -2
- package/assets/docs/provider-sync/scope-and-surface.md +44 -0
- package/assets/docs/reference/cli-reference.md +21 -5
- package/assets/docs/reference/file-locations.md +8 -2
- package/assets/docs/reference/oat-directory-structure.md +25 -9
- package/assets/docs/workflows/projects/artifacts.md +9 -4
- package/assets/docs/workflows/projects/evidence-layers.md +110 -1
- package/assets/docs/workflows/projects/implementation-execution.md +13 -0
- package/assets/docs/workflows/projects/lifecycle.md +17 -5
- package/assets/docs/workflows/projects/orchestration-model.md +18 -0
- package/assets/docs/workflows/projects/picking-up-projects.md +26 -9
- package/assets/docs/workflows/projects/pr-flow.md +5 -3
- package/assets/docs/workflows/projects/reviewing-oat-prs.md +12 -8
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-dispatch-subagents/SKILL.md +57 -1
- package/assets/skills/oat-dispatch-subagents/references/record-schema.md +77 -1
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +3 -3
- package/assets/skills/oat-project-complete/SKILL.md +193 -26
- package/assets/skills/oat-project-complete/scripts/execute-synced-archive-entry.mjs +306 -0
- package/assets/skills/oat-project-complete/scripts/finalize-synced-archive.mjs +125 -0
- package/assets/skills/oat-project-complete/scripts/parse-synced-archive-resume-fields.mjs +106 -0
- package/assets/skills/oat-project-complete/scripts/recover-completion-receipts.mjs +110 -0
- package/assets/skills/oat-project-complete/scripts/resolve-synced-archive-entry.mjs +164 -0
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +24 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +3 -3
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +11 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +3 -3
- package/assets/skills/oat-project-plan-writing/SKILL.md +12 -1
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +3 -3
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +3 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +12 -1
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +12 -1
- package/dist/agents/canonical/index.d.ts +2 -0
- package/dist/agents/canonical/index.d.ts.map +1 -1
- package/dist/agents/canonical/index.js +1 -0
- package/dist/agents/canonical/resolve.d.ts +45 -0
- package/dist/agents/canonical/resolve.d.ts.map +1 -0
- package/dist/agents/canonical/resolve.js +175 -0
- package/dist/commands/decision/agents-guidance.d.ts +2 -2
- package/dist/commands/decision/agents-guidance.d.ts.map +1 -1
- package/dist/commands/decision/agents-guidance.js +1 -4
- package/dist/commands/decision/index.d.ts.map +1 -1
- package/dist/commands/decision/index.js +25 -6
- package/dist/commands/docs/init/index.d.ts +7 -1
- package/dist/commands/docs/init/index.d.ts.map +1 -1
- package/dist/commands/docs/init/index.js +53 -20
- package/dist/commands/doctor/index.d.ts +8 -2
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +157 -46
- package/dist/commands/init/index.d.ts +8 -3
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +64 -26
- package/dist/commands/init/tools/index.d.ts +12 -12
- package/dist/commands/init/tools/index.d.ts.map +1 -1
- package/dist/commands/init/tools/index.js +430 -99
- package/dist/commands/init/tools/install-state.d.ts +2 -0
- package/dist/commands/init/tools/install-state.d.ts.map +1 -1
- package/dist/commands/init/tools/install-state.js +11 -0
- package/dist/commands/init/tools/project-guidance.d.ts +49 -0
- package/dist/commands/init/tools/project-guidance.d.ts.map +1 -0
- package/dist/commands/init/tools/project-guidance.js +144 -0
- package/dist/commands/init/tools/workflows/index.d.ts +7 -0
- package/dist/commands/init/tools/workflows/index.d.ts.map +1 -1
- package/dist/commands/init/tools/workflows/index.js +160 -7
- package/dist/commands/pjm/index.d.ts.map +1 -1
- package/dist/commands/pjm/index.js +28 -3
- package/dist/commands/pjm/init.d.ts +5 -0
- package/dist/commands/pjm/init.d.ts.map +1 -1
- package/dist/commands/pjm/init.js +19 -3
- package/dist/commands/project/archive/archive-utils.d.ts +8 -1
- package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
- package/dist/commands/project/archive/archive-utils.js +147 -50
- package/dist/commands/project/archive/push-runner.d.ts.map +1 -1
- package/dist/commands/project/archive/push-runner.js +15 -2
- package/dist/commands/project/dispatch/index.d.ts +10 -0
- package/dist/commands/project/dispatch/index.d.ts.map +1 -0
- package/dist/commands/project/dispatch/index.js +137 -0
- package/dist/commands/project/dispatch/record.d.ts +91 -0
- package/dist/commands/project/dispatch/record.d.ts.map +1 -0
- package/dist/commands/project/dispatch/record.js +402 -0
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/links/compute.d.ts +1 -0
- package/dist/commands/project/links/compute.d.ts.map +1 -1
- package/dist/commands/project/links/compute.js +5 -4
- package/dist/commands/project/links/index.d.ts +9 -0
- package/dist/commands/project/links/index.d.ts.map +1 -1
- package/dist/commands/project/links/index.js +71 -2
- package/dist/commands/project/list.d.ts +10 -2
- package/dist/commands/project/list.d.ts.map +1 -1
- package/dist/commands/project/list.js +205 -29
- package/dist/commands/project/open/index.d.ts +2 -0
- package/dist/commands/project/open/index.d.ts.map +1 -1
- package/dist/commands/project/open/index.js +16 -1
- package/dist/commands/project/prune/index.d.ts +10 -4
- package/dist/commands/project/prune/index.d.ts.map +1 -1
- package/dist/commands/project/prune/index.js +85 -15
- package/dist/commands/project/pull/index.d.ts +4 -0
- package/dist/commands/project/pull/index.d.ts.map +1 -1
- package/dist/commands/project/pull/index.js +82 -3
- package/dist/commands/project/sync/git.d.ts +9 -0
- package/dist/commands/project/sync/git.d.ts.map +1 -1
- package/dist/commands/project/sync/git.js +18 -0
- package/dist/commands/project/sync/ref-sync.d.ts +16 -1
- package/dist/commands/project/sync/ref-sync.d.ts.map +1 -1
- package/dist/commands/project/sync/ref-sync.js +288 -17
- package/dist/commands/project/sync/resolve-target.d.ts +10 -0
- package/dist/commands/project/sync/resolve-target.d.ts.map +1 -1
- package/dist/commands/project/sync/resolve-target.js +56 -1
- package/dist/commands/providers/inspect/inspect.d.ts +8 -1
- package/dist/commands/providers/inspect/inspect.d.ts.map +1 -1
- package/dist/commands/providers/inspect/inspect.js +146 -26
- package/dist/commands/providers/list/list.d.ts +8 -1
- package/dist/commands/providers/list/list.d.ts.map +1 -1
- package/dist/commands/providers/list/list.js +139 -23
- package/dist/commands/providers/providers.types.d.ts +25 -1
- package/dist/commands/providers/providers.types.d.ts.map +1 -1
- package/dist/commands/providers/set/index.d.ts +9 -1
- package/dist/commands/providers/set/index.d.ts.map +1 -1
- package/dist/commands/providers/set/index.js +43 -33
- package/dist/commands/remove/skill/remove-skill.d.ts.map +1 -1
- package/dist/commands/remove/skill/remove-skill.js +11 -0
- package/dist/commands/shared/agents-md.d.ts +42 -14
- package/dist/commands/shared/agents-md.d.ts.map +1 -1
- package/dist/commands/shared/agents-md.js +364 -70
- package/dist/commands/shared/project-scope.d.ts +2 -0
- package/dist/commands/shared/project-scope.d.ts.map +1 -1
- package/dist/commands/shared/project-scope.js +5 -0
- package/dist/commands/state/generate.d.ts +2 -0
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +93 -28
- package/dist/commands/status/index.d.ts +8 -3
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +147 -32
- package/dist/commands/sync/apply.d.ts.map +1 -1
- package/dist/commands/sync/apply.js +220 -29
- package/dist/commands/sync/dry-run.d.ts.map +1 -1
- package/dist/commands/sync/dry-run.js +30 -6
- package/dist/commands/sync/index.d.ts +17 -2
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +106 -41
- package/dist/commands/sync/sync.types.d.ts +39 -2
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/commands/sync/sync.utils.d.ts +5 -1
- package/dist/commands/sync/sync.utils.d.ts.map +1 -1
- package/dist/commands/sync/sync.utils.js +73 -0
- package/dist/commands/tools/info/info-tool.d.ts +2 -0
- package/dist/commands/tools/info/info-tool.d.ts.map +1 -1
- package/dist/commands/tools/info/info-tool.js +34 -12
- package/dist/commands/tools/install/index.d.ts.map +1 -1
- package/dist/commands/tools/install/index.js +19 -3
- package/dist/commands/tools/list/list-tools.d.ts +2 -0
- package/dist/commands/tools/list/list-tools.d.ts.map +1 -1
- package/dist/commands/tools/list/list-tools.js +36 -7
- package/dist/commands/tools/remove/index.d.ts.map +1 -1
- package/dist/commands/tools/remove/index.js +150 -21
- package/dist/commands/tools/remove/remove-tools.d.ts +20 -0
- package/dist/commands/tools/remove/remove-tools.d.ts.map +1 -1
- package/dist/commands/tools/remove/remove-tools.js +122 -1
- package/dist/commands/tools/shared/format-pack-inventory.d.ts +19 -0
- package/dist/commands/tools/shared/format-pack-inventory.d.ts.map +1 -1
- package/dist/commands/tools/shared/format-pack-inventory.js +109 -0
- package/dist/commands/tools/shared/pack-evidence.d.ts +66 -0
- package/dist/commands/tools/shared/pack-evidence.d.ts.map +1 -0
- package/dist/commands/tools/shared/pack-evidence.js +132 -0
- package/dist/commands/tools/shared/pack-inventory.d.ts +1 -0
- package/dist/commands/tools/shared/pack-inventory.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-lifecycle-outcome.d.ts +44 -0
- package/dist/commands/tools/shared/pack-lifecycle-outcome.d.ts.map +1 -0
- package/dist/commands/tools/shared/pack-lifecycle-outcome.js +91 -0
- package/dist/commands/tools/update/index.d.ts.map +1 -1
- package/dist/commands/tools/update/index.js +74 -4
- package/dist/commands/tools/update/update-tools.d.ts +5 -0
- package/dist/commands/tools/update/update-tools.d.ts.map +1 -1
- package/dist/commands/tools/update/update-tools.js +64 -2
- package/dist/config/oat-config.d.ts +5 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +17 -5
- package/dist/config/user-sync-config.d.ts +1 -0
- package/dist/config/user-sync-config.d.ts.map +1 -1
- package/dist/config/user-sync-config.js +8 -0
- package/dist/drift/detector.d.ts +2 -2
- package/dist/drift/detector.d.ts.map +1 -1
- package/dist/drift/detector.js +18 -0
- package/dist/drift/strays.d.ts.map +1 -1
- package/dist/drift/strays.js +5 -0
- package/dist/engine/collection-sync.d.ts +14 -0
- package/dist/engine/collection-sync.d.ts.map +1 -0
- package/dist/engine/collection-sync.js +282 -0
- package/dist/engine/compute-plan.d.ts +8 -1
- package/dist/engine/compute-plan.d.ts.map +1 -1
- package/dist/engine/compute-plan.js +303 -12
- package/dist/engine/engine.types.d.ts +61 -0
- package/dist/engine/engine.types.d.ts.map +1 -1
- package/dist/engine/execute-plan.d.ts +22 -2
- package/dist/engine/execute-plan.d.ts.map +1 -1
- package/dist/engine/execute-plan.js +459 -27
- package/dist/engine/provider-path-safety.d.ts +1 -0
- package/dist/engine/provider-path-safety.d.ts.map +1 -1
- package/dist/engine/provider-path-safety.js +15 -0
- package/dist/engine/scanner.d.ts +2 -2
- package/dist/engine/scanner.d.ts.map +1 -1
- package/dist/engine/scanner.js +21 -4
- package/dist/fs/io.d.ts +67 -0
- package/dist/fs/io.d.ts.map +1 -1
- package/dist/fs/io.js +536 -3
- package/dist/manifest/index.d.ts +2 -2
- package/dist/manifest/index.d.ts.map +1 -1
- package/dist/manifest/index.js +1 -1
- package/dist/manifest/manager.d.ts +2 -2
- package/dist/manifest/manager.d.ts.map +1 -1
- package/dist/manifest/manager.js +20 -3
- package/dist/manifest/manifest.types.d.ts +704 -13
- package/dist/manifest/manifest.types.d.ts.map +1 -1
- package/dist/manifest/manifest.types.js +131 -15
- package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/codex/codec/sync-extension.js +41 -10
- package/dist/providers/cursor/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/cursor/codec/sync-extension.js +41 -10
- package/dist/providers/identity/absolute-paths.d.ts +68 -0
- package/dist/providers/identity/absolute-paths.d.ts.map +1 -0
- package/dist/providers/identity/absolute-paths.js +144 -0
- package/dist/providers/identity/claude-runtime-observation.d.ts +105 -0
- package/dist/providers/identity/claude-runtime-observation.d.ts.map +1 -0
- package/dist/providers/identity/claude-runtime-observation.fixtures.d.ts +40 -0
- package/dist/providers/identity/claude-runtime-observation.fixtures.d.ts.map +1 -0
- package/dist/providers/identity/claude-runtime-observation.fixtures.js +146 -0
- package/dist/providers/identity/claude-runtime-observation.js +229 -0
- package/dist/providers/identity/codex-runtime-observation.d.ts +75 -0
- package/dist/providers/identity/codex-runtime-observation.d.ts.map +1 -0
- package/dist/providers/identity/codex-runtime-observation.fixtures.d.ts +37 -0
- package/dist/providers/identity/codex-runtime-observation.fixtures.d.ts.map +1 -0
- package/dist/providers/identity/codex-runtime-observation.fixtures.js +539 -0
- package/dist/providers/identity/codex-runtime-observation.js +255 -0
- package/dist/providers/identity/generic-dispatch-record.d.ts +313 -0
- package/dist/providers/identity/generic-dispatch-record.d.ts.map +1 -0
- package/dist/providers/identity/generic-dispatch-record.js +539 -0
- package/dist/providers/identity/oat-dispatch-record.d.ts +1964 -0
- package/dist/providers/identity/oat-dispatch-record.d.ts.map +1 -0
- package/dist/providers/identity/oat-dispatch-record.js +691 -0
- package/dist/providers/identity/runtime-observation.d.ts +100 -0
- package/dist/providers/identity/runtime-observation.d.ts.map +1 -0
- package/dist/providers/identity/runtime-observation.js +169 -0
- package/dist/providers/shared/index.d.ts +2 -0
- package/dist/providers/shared/index.d.ts.map +1 -1
- package/dist/providers/shared/index.js +1 -0
- package/dist/providers/shared/materialization-extension.d.ts +12 -0
- package/dist/providers/shared/materialization-extension.d.ts.map +1 -1
- package/dist/providers/shared/registry.d.ts +69 -0
- package/dist/providers/shared/registry.d.ts.map +1 -0
- package/dist/providers/shared/registry.js +252 -0
- package/dist/providers/shared/restart-adviser.d.ts +26 -0
- package/dist/providers/shared/restart-adviser.d.ts.map +1 -0
- package/dist/providers/shared/restart-adviser.js +96 -0
- package/dist/shared/types.d.ts +4 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -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`; `
|
|
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` |
|
|
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` |
|
|
@@ -256,11 +256,11 @@ remains immutable baseline evidence for the original p01-t01 verification.
|
|
|
256
256
|
| `oat-dispatch-subagents/references/provider-claude.md` | `fbe3a21e9533 -> NG` |
|
|
257
257
|
| `oat-dispatch-subagents/references/provider-codex.md` | `95b0f82018c7 -> NG` |
|
|
258
258
|
| `oat-dispatch-subagents/references/provider-cursor.md` | `f781555295a9 -> NG`; `55ccfef14fd6 -> NG` |
|
|
259
|
-
| `oat-dispatch-subagents/references/record-schema.md` | `78f8069274a8 -> NG`; `1c9a84c4d1e0 -> NG`
|
|
259
|
+
| `oat-dispatch-subagents/references/record-schema.md` | `78f8069274a8 -> NG`; `1c9a84c4d1e0 -> NG`; `2a63da6e3a96 -> NG`; `30762d53b043 -> NG` |
|
|
260
260
|
| `oat-project-dispatch-subagents/SKILL.md` | `eca03ad1ca12 -> PDISPATCH-01`; `59fbcdc79cea -> PDISPATCH-01` |
|
|
261
261
|
| `oat-project-plan/SKILL.md` | `f99e44b39932 -> PLAN-12`; `7e6a9854504b -> NG` |
|
|
262
262
|
| `oat-project-implement/references/completion-and-closeout.md` | `6909a5a5a1fa -> IMPLEMENT-19`; `a7c02ef670fd -> IMPLEMENT-19`; `9dde56d89a71 -> IMPLEMENT-16`; `13c41b2b2590 -> IMPLEMENT-16` |
|
|
263
|
-
| `oat-project-complete/SKILL.md` | `0177956707aa -> NG`; `8305b5bb65ef -> NG`; `eb3e75663ac0 -> NG`; `8cc1fa5aab1e -> COMPLETE-01`; `4c209fbb4716 -> COMPLETE-01`; `02e4175e1171 -> COMPLETE-01`; `d698d4f98e76 -> COMPLETE-01`; `9f86a7218d93 -> COMPLETE-01`; `024713698d9a -> COMPLETE-01`; `c327995053fa -> COMPLETE-01`; `61f81d4ec7c1 -> COMPLETE-01`; `14fb2e56809f -> COMPLETE-01`; `7d4ff668744d -> COMPLETE-01`; `502a6c141784 -> COMPLETE-01`; `fb7e2db356af -> COMPLETE-01`
|
|
263
|
+
| `oat-project-complete/SKILL.md` | `0177956707aa -> NG`; `8305b5bb65ef -> NG`; `eb3e75663ac0 -> NG`; `8cc1fa5aab1e -> COMPLETE-01`; `4c209fbb4716 -> COMPLETE-01`; `02e4175e1171 -> COMPLETE-01`; `d698d4f98e76 -> COMPLETE-01`; `9f86a7218d93 -> COMPLETE-01`; `024713698d9a -> COMPLETE-01`; `c327995053fa -> COMPLETE-01`; `61f81d4ec7c1 -> COMPLETE-01`; `14fb2e56809f -> COMPLETE-01`; `7d4ff668744d -> COMPLETE-01`; `502a6c141784 -> COMPLETE-01`; `fb7e2db356af -> COMPLETE-01`; `f73f8476360a -> NG`; `1e15f420039f -> NG`; `cc234032ddd7 -> NG`; `c3d25f1398bb -> NG`; `ca13a6645df2 -> NG` |
|
|
264
264
|
|
|
265
265
|
## Prompt-scan comparison
|
|
266
266
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-complete
|
|
3
|
-
version: 1.7.
|
|
3
|
+
version: 1.7.6
|
|
4
4
|
description: Use when all implementation work is finished and the project is ready to close. Marks the OAT project lifecycle as complete.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -49,6 +49,10 @@ COMPLETION_RECEIPT_SCRIPT="$SKILL_DIR/scripts/recover-completion-receipts.mjs"
|
|
|
49
49
|
COMPLETION_RETRY_SCRIPT="$SKILL_DIR/scripts/resolve-completion-retry.mjs"
|
|
50
50
|
COMPLETION_RETRY_FIELDS_SCRIPT="$SKILL_DIR/scripts/parse-completion-retry-fields.mjs"
|
|
51
51
|
NONARCHIVE_LIFECYCLE_RECEIPT_SCRIPT="$SKILL_DIR/scripts/validate-nonarchive-lifecycle-receipt.mjs"
|
|
52
|
+
SYNCED_ARCHIVE_ENTRY_SCRIPT="$SKILL_DIR/scripts/resolve-synced-archive-entry.mjs"
|
|
53
|
+
SYNCED_ARCHIVE_EXECUTE_SCRIPT="$SKILL_DIR/scripts/execute-synced-archive-entry.mjs"
|
|
54
|
+
SYNCED_ARCHIVE_RESUME_FIELDS_SCRIPT="$SKILL_DIR/scripts/parse-synced-archive-resume-fields.mjs"
|
|
55
|
+
SYNCED_ARCHIVE_FINALIZE_SCRIPT="$SKILL_DIR/scripts/finalize-synced-archive.mjs"
|
|
52
56
|
test -f "$COMPLETION_RECEIPT_SCRIPT" || {
|
|
53
57
|
echo "oat: completion receipt recovery script is missing" >&2
|
|
54
58
|
exit 1
|
|
@@ -65,10 +69,56 @@ test -f "$NONARCHIVE_LIFECYCLE_RECEIPT_SCRIPT" || {
|
|
|
65
69
|
echo "Missing non-archive lifecycle receipt validator: $NONARCHIVE_LIFECYCLE_RECEIPT_SCRIPT" >&2
|
|
66
70
|
exit 1
|
|
67
71
|
}
|
|
72
|
+
test -f "$SYNCED_ARCHIVE_ENTRY_SCRIPT" || {
|
|
73
|
+
echo "Missing synced archive entry router: $SYNCED_ARCHIVE_ENTRY_SCRIPT" >&2
|
|
74
|
+
exit 1
|
|
75
|
+
}
|
|
76
|
+
test -f "$SYNCED_ARCHIVE_EXECUTE_SCRIPT" || {
|
|
77
|
+
echo "Missing synced archive entry executor: $SYNCED_ARCHIVE_EXECUTE_SCRIPT" >&2
|
|
78
|
+
exit 1
|
|
79
|
+
}
|
|
80
|
+
test -f "$SYNCED_ARCHIVE_RESUME_FIELDS_SCRIPT" || {
|
|
81
|
+
echo "Missing synced archive resume field parser: $SYNCED_ARCHIVE_RESUME_FIELDS_SCRIPT" >&2
|
|
82
|
+
exit 1
|
|
83
|
+
}
|
|
84
|
+
test -f "$SYNCED_ARCHIVE_FINALIZE_SCRIPT" || {
|
|
85
|
+
echo "Missing synced archive finalizer: $SYNCED_ARCHIVE_FINALIZE_SCRIPT" >&2
|
|
86
|
+
exit 1
|
|
87
|
+
}
|
|
68
88
|
|
|
69
89
|
PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || { echo "oat: cannot resolve project scope for $PROJECT_PATH; refusing completion" >&2; exit 1; }
|
|
90
|
+
SYNCED_ARCHIVE_RESUME="false"
|
|
70
91
|
if [[ "$PROJECT_SCOPE" == "synced" ]]; then
|
|
71
|
-
|
|
92
|
+
SYNCED_RECORD_PATH="${PROJECT_PATH}.json"
|
|
93
|
+
REPO_ROOT=$(git rev-parse --show-toplevel) || exit 1
|
|
94
|
+
SYNCED_ARCHIVE_ENTRY=$(node "$SYNCED_ARCHIVE_EXECUTE_SCRIPT" \
|
|
95
|
+
--repo-root "$REPO_ROOT" \
|
|
96
|
+
--record-path "$SYNCED_RECORD_PATH" \
|
|
97
|
+
--project-name "$PROJECT_NAME" \
|
|
98
|
+
--project-path "$PROJECT_PATH") || exit 1
|
|
99
|
+
SYNCED_ARCHIVE_ENTRY_ROUTE=$(node -e '
|
|
100
|
+
const value = JSON.parse(process.argv[1]);
|
|
101
|
+
if (value.status !== "ok" || !["continue-active", "archive-resumed"].includes(value.route)) process.exit(1);
|
|
102
|
+
process.stdout.write(value.route);
|
|
103
|
+
' "$SYNCED_ARCHIVE_ENTRY") || exit 1
|
|
104
|
+
if [[ "$SYNCED_ARCHIVE_ENTRY_ROUTE" == "archive-resumed" ]]; then
|
|
105
|
+
printf '%s\n' "$SYNCED_ARCHIVE_ENTRY"
|
|
106
|
+
SYNCED_ARCHIVE_RESUME_ASSIGNMENTS=$(node \
|
|
107
|
+
"$SYNCED_ARCHIVE_RESUME_FIELDS_SCRIPT" \
|
|
108
|
+
"$SYNCED_ARCHIVE_ENTRY") || exit 1
|
|
109
|
+
eval "$SYNCED_ARCHIVE_RESUME_ASSIGNMENTS" || exit 1
|
|
110
|
+
ARCHIVED_PROJECT_STATUS_ASSIGNMENTS=$(oat project status \
|
|
111
|
+
--project-path "$ARCHIVE_PATH" --shell \
|
|
112
|
+
oat_pr_status=project.prStatus \
|
|
113
|
+
oat_pr_url=project.prUrl) || exit 1
|
|
114
|
+
eval "$ARCHIVED_PROJECT_STATUS_ASSIGNMENTS" || exit 1
|
|
115
|
+
WAS_PR_OPEN_AT_START="false"
|
|
116
|
+
if [[ "${oat_pr_status:-}" == "open" ]]; then
|
|
117
|
+
WAS_PR_OPEN_AT_START="true"
|
|
118
|
+
fi
|
|
119
|
+
echo "Verified synced archive terminal receipt; active pointer retained until closeout succeeds."
|
|
120
|
+
echo "Steps 2-8 will not replay; continuing at Step 8.5."
|
|
121
|
+
fi
|
|
72
122
|
fi
|
|
73
123
|
PROJECT_RETAINED_REF=""
|
|
74
124
|
if [[ "$PROJECT_SCOPE" == "synced" ]]; then
|
|
@@ -80,6 +130,14 @@ if [[ "$PROJECT_SCOPE" == "shared" || "$PROJECT_SCOPE" == "synced" ]]; then
|
|
|
80
130
|
fi
|
|
81
131
|
```
|
|
82
132
|
|
|
133
|
+
When `SYNCED_ARCHIVE_RESUME="true"`, continue directly at **Step 8.5**. Do not
|
|
134
|
+
execute Steps 2 through 8, ask the upfront questions again, read or mutate the
|
|
135
|
+
retired active checkout, regenerate active artifacts, or invoke archive a
|
|
136
|
+
second time. The executor result and the archived project status have already
|
|
137
|
+
initialized every resume-safe downstream receipt and choice. A resume never
|
|
138
|
+
opens a new PR from an unpersisted prior answer; `SHOULD_OPEN_PR="false"`, while
|
|
139
|
+
an already-tracked open PR is updated by Step 11.5.
|
|
140
|
+
|
|
83
141
|
### Step 2: Upfront User Questions (Batched)
|
|
84
142
|
|
|
85
143
|
Ask all user questions at once so the user can answer them in a single interaction, then the rest of the skill runs without further prompts.
|
|
@@ -641,13 +699,20 @@ project push.
|
|
|
641
699
|
The CLI command owns both the frontmatter completion fields and the canonical markdown body updates for `state.md`.
|
|
642
700
|
It must set `oat_lifecycle: complete`, completion timestamps, `**Status:** Complete`, `**Last Updated:**`, the canonical `## Current Phase` body, normalized `## Progress`, and `## Next Milestone`.
|
|
643
701
|
|
|
644
|
-
### Step 6: Clear Active Project Pointer
|
|
702
|
+
### Step 6: Clear or Defer the Active Project Pointer
|
|
645
703
|
|
|
646
|
-
|
|
704
|
+
Clearing the active project pointer is implicit and requires no confirmation.
|
|
705
|
+
For a synced archive, defer the clear until Step 8 has validated the full
|
|
706
|
+
terminal report. Every archive or configured-S3 failure therefore exits with
|
|
707
|
+
the original pointer intact and the completion remains directly resumable.
|
|
647
708
|
|
|
648
709
|
```bash
|
|
649
|
-
|
|
650
|
-
echo "Active project pointer
|
|
710
|
+
if [[ "$PROJECT_SCOPE" == "synced" && "$SHOULD_ARCHIVE" == "true" ]]; then
|
|
711
|
+
echo "Active project pointer retained until synced archive terminal receipt validation."
|
|
712
|
+
else
|
|
713
|
+
oat config set activeProject ""
|
|
714
|
+
echo "Active project pointer cleared."
|
|
715
|
+
fi
|
|
651
716
|
```
|
|
652
717
|
|
|
653
718
|
### Step 7: Generate PR Description
|
|
@@ -869,7 +934,10 @@ source.
|
|
|
869
934
|
This conditional skips archive movement only; it does not skip the Step 3.7
|
|
870
935
|
seal append for an existing project log.
|
|
871
936
|
|
|
872
|
-
Archive happens after PR description generation
|
|
937
|
+
Archive happens after PR description generation. For a synced project, the
|
|
938
|
+
archive command owns the exact lifecycle commit that deletes the discovery
|
|
939
|
+
record together with tracked archive exports; later bookkeeping must reuse its
|
|
940
|
+
receipt rather than creating a second lifecycle commit.
|
|
873
941
|
|
|
874
942
|
The archive-side effects in this step are CLI-owned. Do not reimplement local archive movement, summary export, S3 sync, AWS credential handling, or worktree durability checks in the skill.
|
|
875
943
|
|
|
@@ -894,14 +962,22 @@ printf '%s\n' "$ARCHIVE_OUTPUT"
|
|
|
894
962
|
|
|
895
963
|
Parse `ARCHIVE_OUTPUT` as the `oat project archive --json` report. Require
|
|
896
964
|
`status: "ok"`, `mode: "apply"`, and a non-empty `archivePath`; use its
|
|
897
|
-
`s3Path`, `summaryExportFile`, `lifecycleCommit`,
|
|
965
|
+
`s3Path`, `summaryExportFile`, `lifecycleCommit`, `completedRef`,
|
|
966
|
+
`verifiedSourceSha`, `activeAliasDisposition`, `recordRetired`, and `warnings`
|
|
967
|
+
fields for later reporting. Set
|
|
898
968
|
`ARCHIVE_PATH` from `archivePath`, set `SUMMARY_EXPORT_FILE` from
|
|
899
969
|
`summaryExportFile` (empty when null), then set `PROJECT_PATH="$ARCHIVE_PATH"`.
|
|
900
970
|
|
|
901
971
|
For a synced project, require a full `lifecycleCommit` SHA in the archive
|
|
902
|
-
report
|
|
903
|
-
|
|
904
|
-
|
|
972
|
+
report, require `completedRef` to equal
|
|
973
|
+
`refs/oat/completed/${PROJECT_NAME}`, require a full `verifiedSourceSha`,
|
|
974
|
+
require `activeAliasDisposition` to be `removed` or `retained`, and require
|
|
975
|
+
`recordRetired` to be exactly `true`. Set `LIFECYCLE_COMMIT` to the reported
|
|
976
|
+
commit. This is the parent-branch record-deletion and archive-export commit
|
|
977
|
+
owned by archive; do not replace it with `git rev-parse HEAD` and do not create
|
|
978
|
+
another lifecycle commit. `removed` is the completed-only terminal shape;
|
|
979
|
+
`retained` is the equally terminal same-SHA active alias shape. A differing-SHA
|
|
980
|
+
state is never a successful report.
|
|
905
981
|
|
|
906
982
|
When `SELECTED_PROJECT_RECAP_RUN` is non-empty, also require the report's
|
|
907
983
|
`projectRecapExport.sourceRunRoot`, `projectRecapExport.exportRoot`, and
|
|
@@ -925,9 +1001,28 @@ The no-recap invocation remains `oat project archive "$PROJECT_PATH"` with
|
|
|
925
1001
|
`--json` added only to select the machine-readable report.
|
|
926
1002
|
Use `ARCHIVE_S3_CONTEXT` in Step 12 if the command reports profile/region details.
|
|
927
1003
|
|
|
1004
|
+
Only after every applicable synced terminal and recap-export field above has
|
|
1005
|
+
passed validation may the workflow continue. Keep the pointer through the
|
|
1006
|
+
required link, dashboard, bookkeeping, push, and PR-closeout work below so a
|
|
1007
|
+
failure after record retirement can retry through the recordless archive path.
|
|
1008
|
+
|
|
928
1009
|
#### Step 8.5: Finalize Archive-Aware Recap Links
|
|
929
1010
|
|
|
930
|
-
|
|
1011
|
+
The recap-link rewrite in this subsection runs only when archive returned a
|
|
1012
|
+
`projectRecapExport`. A synced archive resume with no recap export performs no
|
|
1013
|
+
recap-link rewrite, then still continues at Step 8.6.
|
|
1014
|
+
|
|
1015
|
+
This is the explicit rejoin point when `SYNCED_ARCHIVE_RESUME="true"`. Use
|
|
1016
|
+
`ARCHIVE_OUTPUT` and `PROJECT_RECAP_EXPORT_JSON` from the validated executor
|
|
1017
|
+
result; use its `ARCHIVE_PATH`, `SUMMARY_EXPORT_FILE`, `LIFECYCLE_COMMIT`,
|
|
1018
|
+
`ARCHIVE_S3_PATH`, and `SELECTED_PROJECT_RECAP_RUN` assignments for all later
|
|
1019
|
+
steps. Do not infer any receipt from the deleted checkout and do not rerun the
|
|
1020
|
+
Step 8 archive command—the executor already validated the terminal report.
|
|
1021
|
+
Keep the active pointer until post-archive closeout succeeds, then run the
|
|
1022
|
+
finalizer once before confirmation. Continue through Steps 8.5–12, including
|
|
1023
|
+
final synced links,
|
|
1024
|
+
dashboard refresh, the required bookkeeping push, tracked-PR closeout when
|
|
1025
|
+
applicable, and final confirmation.
|
|
931
1026
|
|
|
932
1027
|
Rewrite recap links in the tracked summary export and the PR description body from `projectRecapExport.exportRoot`; do not derive them from the local archive.
|
|
933
1028
|
Use a repository-relative path under
|
|
@@ -1068,7 +1163,8 @@ Expected changes may include:
|
|
|
1068
1163
|
- `{PROJECT_PATH}/pr/project-pr-*.md` (PR description artifact)
|
|
1069
1164
|
- `.oat/state.md` is regenerated locally in Step 9 but should not be staged; it is generated dashboard state and normally gitignored.
|
|
1070
1165
|
- `.oat/config.local.json` (if `activeProject` cleared)
|
|
1071
|
-
- Shared-project deletions
|
|
1166
|
+
- Shared-project deletions; synced archive record deletion is already sealed by
|
|
1167
|
+
the archive-owned lifecycle commit
|
|
1072
1168
|
- The complete tracked recap export and tracked summary export reported by
|
|
1073
1169
|
archive (if present)
|
|
1074
1170
|
|
|
@@ -1122,9 +1218,11 @@ Rules:
|
|
|
1122
1218
|
|
|
1123
1219
|
Skip when no final recap was selected, for local-scope projects, when the
|
|
1124
1220
|
selected recap is already durable solely through independently verified publish
|
|
1125
|
-
evidence, or when Step 7.5
|
|
1126
|
-
|
|
1127
|
-
|
|
1221
|
+
evidence, or when Step 7.5 or the synced archive-resume executor restored an
|
|
1222
|
+
exact `EVIDENCE_COMMIT`. In the recovered evidence case, the recovery primitive
|
|
1223
|
+
has already verified the selected run's manifest and build record as the two
|
|
1224
|
+
exact paths in that commit, with `LIFECYCLE_COMMIT` as its immediate parent.
|
|
1225
|
+
Continue without re-attesting or rewriting either record.
|
|
1128
1226
|
|
|
1129
1227
|
For an archived recap, consume the exact `projectRecapExport` values recorded
|
|
1130
1228
|
in Step 8. Plan finalization through
|
|
@@ -1171,7 +1269,8 @@ details, and continue to the evidence commit.
|
|
|
1171
1269
|
|
|
1172
1270
|
### Step 10.6: Commit Evidence + Push
|
|
1173
1271
|
|
|
1174
|
-
When Step 10.5 ran and Step 7.5
|
|
1272
|
+
When Step 10.5 ran and neither Step 7.5 nor the synced archive-resume executor
|
|
1273
|
+
restored `EVIDENCE_COMMIT`, create the evidence update. Commit only the exported `manifest.json` and `build-record.json` as the evidence update, including warning-bearing records from a failed attestation. On failure, commit the warning-bearing `manifest.json` and `build-record.json`. Run
|
|
1175
1274
|
`verifyTrackedRunFinalization(...)` with the artifact commit, immediate evidence
|
|
1176
1275
|
commit parent/order, exact evidence paths, attestation outcome, and unchanged
|
|
1177
1276
|
unrelated-change snapshots.
|
|
@@ -1198,6 +1297,7 @@ git commit --only -m "chore(oat): attest final project recap" -- \
|
|
|
1198
1297
|
EVIDENCE_COMMIT=$(git rev-parse HEAD)
|
|
1199
1298
|
test "$(git rev-parse "$EVIDENCE_COMMIT^")" = "$LIFECYCLE_COMMIT"
|
|
1200
1299
|
test "$(git diff --cached --binary)" = "$UNRELATED_STAGED_PATCH_BEFORE"
|
|
1300
|
+
EVIDENCE_PUSH_REQUIRED="true"
|
|
1201
1301
|
```
|
|
1202
1302
|
|
|
1203
1303
|
Verify the evidence commit contains exactly those two paths, the lifecycle
|
|
@@ -1233,12 +1333,51 @@ test "$(git -C "$ACTIVE_PROJECT_PATH" diff --cached --binary)" = \
|
|
|
1233
1333
|
"$UNRELATED_PROJECT_STAGE_BEFORE"
|
|
1234
1334
|
```
|
|
1235
1335
|
|
|
1236
|
-
When Step 7.5 restored `EVIDENCE_COMMIT
|
|
1237
|
-
again. Require the retained remote ref to equal
|
|
1238
|
-
its immediate parent equal to
|
|
1239
|
-
`
|
|
1240
|
-
|
|
1241
|
-
|
|
1336
|
+
When Step 7.5 restored `EVIDENCE_COMMIT` for a non-archive completion, do not
|
|
1337
|
+
stage or commit recap records again. Require the retained remote ref to equal
|
|
1338
|
+
that exact evidence SHA, keep its immediate parent equal to
|
|
1339
|
+
`PROJECT_REF_COMMIT`, and preserve the recovered `PROJECT_LINKS_PIN_COMMIT`.
|
|
1340
|
+
When the synced archive-resume executor restored `EVIDENCE_COMMIT`, likewise do
|
|
1341
|
+
not re-attest, stage, or commit: it already required the evidence commit to
|
|
1342
|
+
change exactly `EXPORTED_MANIFEST_PATH` and `EXPORTED_BUILD_RECORD_PATH`, with
|
|
1343
|
+
`LIFECYCLE_COMMIT` as its immediate parent. Its `EVIDENCE_PUSH_REQUIRED`
|
|
1344
|
+
receipt determines whether the one parent-branch push remains pending. All
|
|
1345
|
+
unrelated staged-state snapshots must remain byte-for-byte unchanged.
|
|
1346
|
+
|
|
1347
|
+
For every synced archive completion, including `SYNCED_ARCHIVE_RESUME="true"`,
|
|
1348
|
+
push the parent branch exactly once after the lifecycle receipt and any recap
|
|
1349
|
+
evidence commit are final. Verify the pushed upstream contains the exact final
|
|
1350
|
+
bookkeeping commit before continuing to PR closeout or claiming completion:
|
|
1351
|
+
|
|
1352
|
+
```bash
|
|
1353
|
+
if [[ "$PROJECT_SCOPE" == "synced" && "$SHOULD_ARCHIVE" == "true" ]]; then
|
|
1354
|
+
BOOKKEEPING_PUSH_COMMIT="${EVIDENCE_COMMIT:-$LIFECYCLE_COMMIT}"
|
|
1355
|
+
test -n "$BOOKKEEPING_PUSH_COMMIT" || exit 1
|
|
1356
|
+
git merge-base --is-ancestor "$LIFECYCLE_COMMIT" \
|
|
1357
|
+
"$BOOKKEEPING_PUSH_COMMIT" || exit 1
|
|
1358
|
+
if [[ -n "$EVIDENCE_COMMIT" ]]; then
|
|
1359
|
+
test "$(git rev-parse "$EVIDENCE_COMMIT^")" = \
|
|
1360
|
+
"$LIFECYCLE_COMMIT" || exit 1
|
|
1361
|
+
if [[ "$EVIDENCE_PUSH_REQUIRED" != "true" && \
|
|
1362
|
+
"$EVIDENCE_PUSH_REQUIRED" != "false" ]]; then
|
|
1363
|
+
exit 1
|
|
1364
|
+
fi
|
|
1365
|
+
case "$EVIDENCE_PUSH_REQUIRED" in
|
|
1366
|
+
true) git push || exit 1 ;;
|
|
1367
|
+
false) echo "Reusing published recap evidence receipt: $EVIDENCE_COMMIT" ;;
|
|
1368
|
+
esac
|
|
1369
|
+
else
|
|
1370
|
+
git push || exit 1
|
|
1371
|
+
fi
|
|
1372
|
+
BOOKKEEPING_UPSTREAM=$(git rev-parse --abbrev-ref \
|
|
1373
|
+
--symbolic-full-name '@{u}') || exit 1
|
|
1374
|
+
BOOKKEEPING_UPSTREAM_COMMIT=$(git rev-parse \
|
|
1375
|
+
"$BOOKKEEPING_UPSTREAM^{commit}") || exit 1
|
|
1376
|
+
test "$BOOKKEEPING_UPSTREAM_COMMIT" = \
|
|
1377
|
+
"$BOOKKEEPING_PUSH_COMMIT" || exit 1
|
|
1378
|
+
echo "Completion bookkeeping pushed: $BOOKKEEPING_PUSH_COMMIT"
|
|
1379
|
+
fi
|
|
1380
|
+
```
|
|
1242
1381
|
|
|
1243
1382
|
### Step 11: Open PR in GitHub (Conditional)
|
|
1244
1383
|
|
|
@@ -1304,20 +1443,48 @@ Steps:
|
|
|
1304
1443
|
4. Push the updated body:
|
|
1305
1444
|
|
|
1306
1445
|
```bash
|
|
1307
|
-
|
|
1446
|
+
if ! command -v gh >/dev/null 2>&1; then
|
|
1447
|
+
echo "GitHub CLI is unavailable; update the tracked PR manually from $TMP_BODY." >&2
|
|
1448
|
+
if [[ "$PROJECT_SCOPE" == "synced" && "$SHOULD_ARCHIVE" == "true" ]]; then
|
|
1449
|
+
exit 1
|
|
1450
|
+
fi
|
|
1451
|
+
elif ! gh pr edit "$PR_REF" --body-file "$TMP_BODY"; then
|
|
1452
|
+
echo "PR description update failed; update it manually from $TMP_BODY." >&2
|
|
1453
|
+
if [[ "$PROJECT_SCOPE" == "synced" && "$SHOULD_ARCHIVE" == "true" ]]; then
|
|
1454
|
+
exit 1
|
|
1455
|
+
fi
|
|
1456
|
+
fi
|
|
1308
1457
|
```
|
|
1309
1458
|
|
|
1310
1459
|
5. Clean up the temp file.
|
|
1311
1460
|
|
|
1312
1461
|
Failure handling:
|
|
1313
1462
|
|
|
1314
|
-
- If `gh` is missing
|
|
1315
|
-
|
|
1463
|
+
- If `gh` is missing or `gh pr edit` fails, always print the manual-update path.
|
|
1464
|
+
For a synced archive completion this tracked-PR update is required: stop
|
|
1465
|
+
before Step 12, retain the active pointer, and let the next invocation resume
|
|
1466
|
+
recordlessly. Other completion shapes retain their existing warning-only
|
|
1467
|
+
behavior and Step 12 summary guidance.
|
|
1316
1468
|
- Never re-archive or re-commit on failure here — the lifecycle bookkeeping
|
|
1317
1469
|
and any recap evidence update in Step 10.6 already shipped.
|
|
1318
1470
|
|
|
1319
1471
|
### Step 12: Confirm to User
|
|
1320
1472
|
|
|
1473
|
+
Immediately before confirmation, clear the deferred synced archive pointer.
|
|
1474
|
+
The finalizer validates the terminal receipt again before changing
|
|
1475
|
+
configuration. This ordering keeps every failure before final confirmation
|
|
1476
|
+
directly retryable, including a retry after record retirement:
|
|
1477
|
+
|
|
1478
|
+
```bash
|
|
1479
|
+
if [[ "$PROJECT_SCOPE" == "synced" && "$SHOULD_ARCHIVE" == "true" ]]; then
|
|
1480
|
+
SYNCED_ARCHIVE_FINALIZATION=$(printf '%s\n' "$ARCHIVE_OUTPUT" | \
|
|
1481
|
+
node "$SYNCED_ARCHIVE_FINALIZE_SCRIPT" \
|
|
1482
|
+
--project-name "$PROJECT_NAME") || exit 1
|
|
1483
|
+
printf '%s\n' "$SYNCED_ARCHIVE_FINALIZATION"
|
|
1484
|
+
echo "Synced archive terminal receipt verified; active project pointer cleared."
|
|
1485
|
+
fi
|
|
1486
|
+
```
|
|
1487
|
+
|
|
1321
1488
|
Show user:
|
|
1322
1489
|
|
|
1323
1490
|
- "Project **{PROJECT_NAME}** marked as complete."
|