@open-agent-toolkit/cli 0.2.41 → 0.2.46
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/agents/oat-phase-implementer.md +11 -1
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/configuration.md +11 -1
- package/assets/docs/cli-utilities/tool-packs.md +55 -9
- package/assets/docs/quickstart.md +9 -0
- package/assets/docs/reference/cli-reference.md +56 -1
- package/assets/docs/reference/file-locations.md +18 -1
- package/assets/docs/reference/oat-directory-structure.md +20 -4
- package/assets/docs/reference/troubleshooting.md +18 -11
- package/assets/docs/workflows/projects/artifacts.md +27 -1
- package/assets/docs/workflows/projects/implementation-execution.md +22 -0
- package/assets/docs/workflows/projects/index.md +6 -0
- package/assets/docs/workflows/projects/lifecycle.md +19 -5
- package/assets/docs/workflows/projects/picking-up-projects.md +75 -0
- package/assets/docs/workflows/projects/pr-flow.md +22 -1
- package/assets/docs/workflows/projects/reviewing-oat-prs.md +60 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-brainstorm/SKILL.md +135 -32
- package/assets/skills/oat-brainstorm/references/destinations.md +9 -6
- package/assets/skills/oat-cursor-cloud-projects/SKILL.md +11 -1
- package/assets/skills/oat-doctor/SKILL.md +8 -1
- package/assets/skills/oat-project-autonomous/SKILL.md +45 -1
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +8 -8
- package/assets/skills/oat-project-capture/SKILL.md +29 -9
- package/assets/skills/oat-project-complete/SKILL.md +610 -38
- package/assets/skills/oat-project-complete/scripts/parse-completion-retry-fields.mjs +265 -0
- package/assets/skills/oat-project-complete/scripts/recover-completion-receipts.mjs +764 -0
- package/assets/skills/oat-project-complete/scripts/resolve-completion-retry.mjs +134 -0
- package/assets/skills/oat-project-complete/scripts/validate-nonarchive-lifecycle-receipt.mjs +160 -0
- package/assets/skills/oat-project-design/SKILL.md +33 -9
- package/assets/skills/oat-project-discover/SKILL.md +16 -3
- package/assets/skills/oat-project-document/SKILL.md +10 -4
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +8 -8
- package/assets/skills/oat-project-implement/SKILL.md +14 -3
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +18 -6
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +8 -8
- package/assets/skills/oat-project-implement/references/phase-execution.md +9 -3
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +3 -0
- package/assets/skills/oat-project-import-plan/SKILL.md +15 -9
- package/assets/skills/oat-project-new/SKILL.md +7 -5
- package/assets/skills/oat-project-next/SKILL.md +32 -10
- package/assets/skills/oat-project-plan/SKILL.md +18 -3
- package/assets/skills/oat-project-pr-final/SKILL.md +23 -2
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +8 -8
- package/assets/skills/oat-project-pr-progress/SKILL.md +23 -2
- package/assets/skills/oat-project-progress/SKILL.md +23 -9
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +20 -2
- package/assets/skills/oat-project-quick-start/SKILL.md +48 -18
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +8 -8
- package/assets/skills/oat-project-reconcile/SKILL.md +14 -10
- package/assets/skills/oat-project-retro/SKILL.md +3 -3
- package/assets/skills/oat-project-retro/references/apply-procedure.md +102 -6
- package/assets/skills/oat-project-retro-file/SKILL.md +57 -6
- package/assets/skills/oat-project-review-provide/SKILL.md +45 -4
- package/assets/skills/oat-project-review-receive/SKILL.md +16 -7
- package/assets/skills/oat-project-review-receive-remote/SKILL.md +9 -3
- package/assets/skills/oat-project-revise/SKILL.md +12 -3
- package/assets/skills/oat-project-spec/SKILL.md +16 -3
- package/assets/skills/oat-project-summary/SKILL.md +113 -13
- package/assets/skills/oat-wave-execute/SKILL.md +34 -2
- package/assets/skills/oat-worktree-bootstrap/SKILL.md +13 -1
- package/assets/skills/oat-worktree-bootstrap-auto/SKILL.md +13 -1
- package/dist/commands/config/index.d.ts +1 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +34 -3
- package/dist/commands/doctor/index.d.ts +2 -0
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +27 -3
- package/dist/commands/doctor/synced-projects.d.ts +12 -0
- package/dist/commands/doctor/synced-projects.d.ts.map +1 -0
- package/dist/commands/doctor/synced-projects.js +208 -0
- package/dist/commands/init/gitattributes.d.ts +4 -0
- package/dist/commands/init/gitattributes.d.ts.map +1 -0
- package/dist/commands/init/gitattributes.js +12 -0
- package/dist/commands/init/gitignore.d.ts +8 -1
- package/dist/commands/init/gitignore.d.ts.map +1 -1
- package/dist/commands/init/gitignore.js +146 -41
- package/dist/commands/init/index.d.ts +2 -0
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +3 -0
- package/dist/commands/init/managed-block.d.ts +10 -0
- package/dist/commands/init/managed-block.d.ts.map +1 -0
- package/dist/commands/init/managed-block.js +40 -0
- package/dist/commands/init/tools/index.d.ts +1 -0
- package/dist/commands/init/tools/index.d.ts.map +1 -1
- package/dist/commands/init/tools/index.js +37 -9
- package/dist/commands/init/tools/workflows/install-workflows.js +1 -1
- package/dist/commands/local/index.d.ts.map +1 -1
- package/dist/commands/local/index.js +5 -1
- package/dist/commands/local/sync.d.ts +4 -0
- package/dist/commands/local/sync.d.ts.map +1 -1
- package/dist/commands/local/sync.js +123 -2
- package/dist/commands/pjm/adoption.d.ts +2 -0
- package/dist/commands/pjm/adoption.d.ts.map +1 -1
- package/dist/commands/pjm/adoption.js +1 -1
- package/dist/commands/project/archive/archive-utils.d.ts +24 -0
- package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
- package/dist/commands/project/archive/archive-utils.js +349 -22
- package/dist/commands/project/archive/index.d.ts.map +1 -1
- package/dist/commands/project/archive/index.js +1 -0
- package/dist/commands/project/archive/push-runner.d.ts +5 -1
- package/dist/commands/project/archive/push-runner.d.ts.map +1 -1
- package/dist/commands/project/archive/push-runner.js +33 -4
- package/dist/commands/project/complete-state/index.d.ts.map +1 -1
- package/dist/commands/project/complete-state/index.js +3 -1
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +12 -0
- package/dist/commands/project/links/compute.d.ts +9 -0
- package/dist/commands/project/links/compute.d.ts.map +1 -0
- package/dist/commands/project/links/compute.js +27 -0
- package/dist/commands/project/links/index.d.ts +17 -0
- package/dist/commands/project/links/index.d.ts.map +1 -0
- package/dist/commands/project/links/index.js +72 -0
- package/dist/commands/project/links/refresh.d.ts +26 -0
- package/dist/commands/project/links/refresh.d.ts.map +1 -0
- package/dist/commands/project/links/refresh.js +92 -0
- package/dist/commands/project/links/render.d.ts +24 -0
- package/dist/commands/project/links/render.d.ts.map +1 -0
- package/dist/commands/project/links/render.js +68 -0
- package/dist/commands/project/list.d.ts +5 -0
- package/dist/commands/project/list.d.ts.map +1 -1
- package/dist/commands/project/list.js +182 -9
- package/dist/commands/project/migrate/index.d.ts +22 -0
- package/dist/commands/project/migrate/index.d.ts.map +1 -0
- package/dist/commands/project/migrate/index.js +79 -0
- package/dist/commands/project/new/index.d.ts +2 -0
- package/dist/commands/project/new/index.d.ts.map +1 -1
- package/dist/commands/project/new/index.js +14 -2
- package/dist/commands/project/new/scaffold.d.ts +22 -1
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +287 -69
- package/dist/commands/project/open/index.d.ts +16 -0
- package/dist/commands/project/open/index.d.ts.map +1 -1
- package/dist/commands/project/open/index.js +151 -19
- package/dist/commands/project/pause/index.d.ts +8 -0
- package/dist/commands/project/pause/index.d.ts.map +1 -1
- package/dist/commands/project/pause/index.js +129 -19
- package/dist/commands/project/prune/index.d.ts +21 -0
- package/dist/commands/project/prune/index.d.ts.map +1 -0
- package/dist/commands/project/prune/index.js +95 -0
- package/dist/commands/project/pull/index.d.ts +28 -0
- package/dist/commands/project/pull/index.d.ts.map +1 -0
- package/dist/commands/project/pull/index.js +157 -0
- package/dist/commands/project/push/index.d.ts +22 -0
- package/dist/commands/project/push/index.d.ts.map +1 -0
- package/dist/commands/project/push/index.js +100 -0
- package/dist/commands/project/scope/index.d.ts +17 -0
- package/dist/commands/project/scope/index.d.ts.map +1 -0
- package/dist/commands/project/scope/index.js +107 -0
- package/dist/commands/project/split/run.d.ts +4 -0
- package/dist/commands/project/split/run.d.ts.map +1 -1
- package/dist/commands/project/split/run.js +48 -10
- package/dist/commands/project/sync/git.d.ts +18 -0
- package/dist/commands/project/sync/git.d.ts.map +1 -0
- package/dist/commands/project/sync/git.js +60 -0
- package/dist/commands/project/sync/record.d.ts +22 -0
- package/dist/commands/project/sync/record.d.ts.map +1 -0
- package/dist/commands/project/sync/record.js +133 -0
- package/dist/commands/project/sync/ref-sync.d.ts +120 -0
- package/dist/commands/project/sync/ref-sync.d.ts.map +1 -0
- package/dist/commands/project/sync/ref-sync.js +962 -0
- package/dist/commands/project/sync/resolve-target.d.ts +27 -0
- package/dist/commands/project/sync/resolve-target.d.ts.map +1 -0
- package/dist/commands/project/sync/resolve-target.js +159 -0
- package/dist/commands/shared/oat-paths.d.ts +4 -1
- package/dist/commands/shared/oat-paths.d.ts.map +1 -1
- package/dist/commands/shared/oat-paths.js +2 -2
- package/dist/commands/shared/project-scope.d.ts +23 -0
- package/dist/commands/shared/project-scope.d.ts.map +1 -0
- package/dist/commands/shared/project-scope.js +106 -0
- package/dist/commands/tools/migrate/index.js +1 -1
- package/dist/commands/tools/shared/pack-inventory.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-inventory.js +79 -8
- package/dist/commands/tools/shared/pack-lifecycle.js +1 -1
- package/dist/commands/tools/shared/pack-reconcile.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-reconcile.js +4 -1
- package/dist/commands/tools/shared/project-tools-config.d.ts +6 -2
- package/dist/commands/tools/shared/project-tools-config.d.ts.map +1 -1
- package/dist/commands/tools/shared/project-tools-config.js +7 -5
- package/dist/commands/tools/update/index.d.ts.map +1 -1
- package/dist/commands/tools/update/index.js +38 -14
- package/dist/commands/tools/update/update-tools.d.ts +2 -0
- package/dist/commands/tools/update/update-tools.d.ts.map +1 -1
- package/dist/config/oat-config.d.ts +6 -3
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +41 -7
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +2 -1
- package/dist/fs/io.d.ts +2 -1
- package/dist/fs/io.d.ts.map +1 -1
- package/dist/fs/io.js +5 -2
- package/dist/projects/split/finalize.d.ts.map +1 -1
- package/dist/projects/split/finalize.js +55 -2
- package/dist/projects/split/resume.d.ts +3 -0
- package/dist/projects/split/resume.d.ts.map +1 -1
- package/dist/projects/split/resume.js +34 -7
- package/dist/projects/split/seed-children.d.ts.map +1 -1
- package/dist/projects/split/seed-children.js +6 -0
- package/dist/projects/split/write-parent.d.ts +7 -0
- package/dist/projects/split/write-parent.d.ts.map +1 -1
- package/dist/projects/split/write-parent.js +7 -4
- package/dist/release/public-package-contract.d.ts.map +1 -1
- package/dist/release/public-package-contract.js +1 -0
- package/dist/validation/skills.d.ts.map +1 -1
- package/dist/validation/skills.js +434 -0
- package/package.json +4 -4
- package/dist/__tests__/skills/split-flow-fixtures.d.ts +0 -50
- package/dist/__tests__/skills/split-flow-fixtures.d.ts.map +0 -1
- package/dist/__tests__/skills/split-flow-fixtures.js +0 -161
- package/dist/commands/__tests__/helpers.d.ts +0 -12
- package/dist/commands/__tests__/helpers.d.ts.map +0 -1
- package/dist/commands/__tests__/helpers.js +0 -36
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-review-provide
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.5.1
|
|
4
4
|
description: Use when the user explicitly asks to review an OAT project — e.g. "review project", "review the project", "run project review", or confirms a previously offered review. Do NOT auto-invoke on completed work alone. Resolves a project review scope and offers before running.
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
@@ -108,10 +108,21 @@ OAT stores active project context in `.oat/config.local.json` (`activeProject`,
|
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
110
|
PROJECT_PATH=$(oat config get activeProject 2>/dev/null || true)
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
if [ -n "$PROJECT_PATH" ]; then
|
|
112
|
+
PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || { echo "oat: cannot resolve project scope for $PROJECT_PATH; refusing project arrival" >&2; exit 1; }
|
|
113
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
114
|
+
PROJECT_SLUG=$(basename "$PROJECT_PATH")
|
|
115
|
+
if [ -f "$PROJECT_PATH.json" ] || git ls-remote --exit-code origin "refs/oat/projects/$PROJECT_SLUG" >/dev/null 2>&1; then
|
|
116
|
+
oat project pull "$PROJECT_PATH" || { echo "oat: project pull failed for $PROJECT_PATH; resolve the reported state before continuing" >&2; exit 1; }
|
|
117
|
+
fi
|
|
118
|
+
fi
|
|
119
|
+
fi
|
|
113
120
|
```
|
|
114
121
|
|
|
122
|
+
The pull runs before directory and `state.md` validation. This materializes an
|
|
123
|
+
absent synced checkout when its discovery record or remote ref exists, adopting
|
|
124
|
+
the remote ref when the current branch does not yet have a record.
|
|
125
|
+
|
|
115
126
|
Validation rules:
|
|
116
127
|
|
|
117
128
|
- Prefer `PROJECT_PATH` from `activeProject` when it is set and points to an existing directory.
|
|
@@ -259,6 +270,18 @@ Before gathering review context, inspect the core project artifacts:
|
|
|
259
270
|
- `"$PROJECT_PATH/state.md"`
|
|
260
271
|
- `.oat/state.md` is generated dashboard state; ignore it for committed artifact baseline checks.
|
|
261
272
|
|
|
273
|
+
Resolve the project scope before the baseline check. For `synced`, inspect the
|
|
274
|
+
nested checkout directly so ignored files cannot hide pending bookkeeping:
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || exit 1
|
|
278
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
279
|
+
git -C "$PROJECT_PATH" status --porcelain -- discovery.md spec.md design.md plan.md implementation.md state.md
|
|
280
|
+
else
|
|
281
|
+
git status --porcelain -- "$PROJECT_PATH/discovery.md" "$PROJECT_PATH/spec.md" "$PROJECT_PATH/design.md" "$PROJECT_PATH/plan.md" "$PROJECT_PATH/implementation.md" "$PROJECT_PATH/state.md"
|
|
282
|
+
fi
|
|
283
|
+
```
|
|
284
|
+
|
|
262
285
|
If any of those files are untracked or modified only because the previous workflow step did not finish its bookkeeping commit:
|
|
263
286
|
|
|
264
287
|
- Stop and tell the user to commit the pending artifact bookkeeping first, or resume the originating workflow skill so it can do that commit.
|
|
@@ -998,7 +1021,7 @@ Findings: {N} critical, {N} important, {N} medium, {N} minor
|
|
|
998
1021
|
|
|
999
1022
|
Run the `oat-project-review-receive` skill to convert findings into plan tasks.
|
|
1000
1023
|
|
|
1001
|
-
|
|
1024
|
+
````
|
|
1002
1025
|
|
|
1003
1026
|
### Step 8.5: Validate Review Orchestration and Append Root Log
|
|
1004
1027
|
|
|
@@ -1095,6 +1118,21 @@ After writing the review artifact and applying the Step 9 Reviews-table update,
|
|
|
1095
1118
|
- Warn that uncommitted review bookkeeping can desync workflow routing/restart behavior
|
|
1096
1119
|
- In the summary, clearly state: "bookkeeping not committed (user-approved defer)"
|
|
1097
1120
|
|
|
1121
|
+
Otherwise commit with the fail-closed scope guard:
|
|
1122
|
+
|
|
1123
|
+
```bash
|
|
1124
|
+
ACTIVE_REVIEW_PATH="$PROJECT_PATH/reviews/$REVIEW_FILENAME"
|
|
1125
|
+
PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || { echo "oat: cannot resolve project scope for $PROJECT_PATH; refusing to commit artifacts" >&2; exit 1; }
|
|
1126
|
+
# fail closed: never fall back to branch bookkeeping when scope resolution fails
|
|
1127
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
1128
|
+
oat project push "$PROJECT_PATH" --message "chore(oat): record {scope} review artifact" || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
1129
|
+
else
|
|
1130
|
+
git add "$ACTIVE_REVIEW_PATH"
|
|
1131
|
+
[ -f "$PROJECT_PATH/plan.md" ] && git add "$PROJECT_PATH/plan.md"
|
|
1132
|
+
git diff --cached --quiet || git commit -m "chore(oat): record {scope} review artifact"
|
|
1133
|
+
fi
|
|
1134
|
+
````
|
|
1135
|
+
|
|
1098
1136
|
### Step 10: Output Summary
|
|
1099
1137
|
|
|
1100
1138
|
**If subagent used (Tier 1):**
|
|
@@ -1152,4 +1190,7 @@ Next: Run the oat-project-review-receive skill to convert findings into plan tas
|
|
|
1152
1190
|
- Review artifact + plan bookkeeping committed atomically on the correct branch (or explicitly deferred with user approval)
|
|
1153
1191
|
- For final scope, deferred findings ledger included in reviewer context
|
|
1154
1192
|
- User guided to next step (`oat-project-review-receive`)
|
|
1193
|
+
|
|
1194
|
+
```
|
|
1195
|
+
|
|
1155
1196
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-review-receive
|
|
3
|
-
version: 1.6.
|
|
3
|
+
version: 1.6.1
|
|
4
4
|
description: Use when the user explicitly asks to receive review findings for an OAT project — e.g. "receive review", "process review", "process the project review", or confirms a previously offered review-receive step. Do NOT auto-invoke merely because a review file exists. Resolves the latest review and offers before acting.
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
@@ -399,6 +399,9 @@ Expected: {expected outcome}
|
|
|
399
399
|
git add {files}
|
|
400
400
|
git commit -m "fix({task_id}): {description}"
|
|
401
401
|
```
|
|
402
|
+
|
|
403
|
+
Fix tasks that edit synced artifacts use `oat project push` under the scope
|
|
404
|
+
guard instead of the branch commit template above.
|
|
402
405
|
````
|
|
403
406
|
|
|
404
407
|
````
|
|
@@ -526,12 +529,18 @@ Rules:
|
|
|
526
529
|
Commit all modified OAT tracking files atomically:
|
|
527
530
|
|
|
528
531
|
```bash
|
|
529
|
-
|
|
530
|
-
#
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
git
|
|
532
|
+
PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || { echo "oat: cannot resolve project scope for $PROJECT_PATH; refusing to commit artifacts" >&2; exit 1; }
|
|
533
|
+
# fail closed: never fall back to branch bookkeeping when scope resolution fails
|
|
534
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
535
|
+
oat project push "$PROJECT_PATH" --message "chore(oat): record review findings and add fix tasks ({scope})" || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
536
|
+
else
|
|
537
|
+
git add "$PROJECT_PATH/plan.md" "$PROJECT_PATH/implementation.md" "$PROJECT_PATH/state.md"
|
|
538
|
+
# Capture the Step 7.5 archive move: stages both the deletion of the original
|
|
539
|
+
# review path and the new archived location. Scope to the project's reviews/
|
|
540
|
+
# directory — never use repo-wide `git add -A`.
|
|
541
|
+
git add "$PROJECT_PATH/reviews/"
|
|
542
|
+
git diff --cached --quiet || git commit -m "chore(oat): record review findings and add fix tasks ({scope})"
|
|
543
|
+
fi
|
|
535
544
|
```
|
|
536
545
|
|
|
537
546
|
Do not use `git add -A` or glob patterns that reach outside `"$PROJECT_PATH/reviews/"`. Do not include unrelated implementation or code files in this commit. Do not defer this commit without explicit user approval — if deferred, clearly state in the summary that bookkeeping is uncommitted so the original agent knows to commit on return.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-review-receive-remote
|
|
3
|
-
version: 1.5.
|
|
3
|
+
version: 1.5.1
|
|
4
4
|
description: Use when processing GitHub PR review comments within project context. Fetches PR comments, creates plan tasks, and updates project artifacts.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -267,8 +267,14 @@ Update `state.md`:
|
|
|
267
267
|
Commit all modified OAT tracking files atomically:
|
|
268
268
|
|
|
269
269
|
```bash
|
|
270
|
-
|
|
271
|
-
|
|
270
|
+
PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || { echo "oat: cannot resolve project scope for $PROJECT_PATH; refusing to commit artifacts" >&2; exit 1; }
|
|
271
|
+
# fail closed: never fall back to branch bookkeeping when scope resolution fails
|
|
272
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
273
|
+
oat project push "$PROJECT_PATH" --message "chore(oat): record remote review findings and add fix tasks (pr-#$PR_NUMBER)" || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
274
|
+
else
|
|
275
|
+
git add "$PROJECT_PATH/plan.md" "$PROJECT_PATH/implementation.md" "$PROJECT_PATH/state.md" "$REMOTE_REVIEW_PATH"
|
|
276
|
+
git diff --cached --quiet || git commit -m "chore(oat): record remote review findings and add fix tasks (pr-#$PR_NUMBER)"
|
|
277
|
+
fi
|
|
272
278
|
```
|
|
273
279
|
|
|
274
280
|
Do not use `git add -A` or glob patterns. Do not include unrelated implementation or code files. Do not defer this commit without explicit user approval.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-revise
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.1
|
|
4
4
|
description: Use when a project has an open PR and human feedback needs to be incorporated. Creates revision tasks and re-enters implementation.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -185,6 +185,9 @@ Expected: {expected outcome}
|
|
|
185
185
|
git add {files}
|
|
186
186
|
git commit -m "fix(prev{N}-t01): {description}"
|
|
187
187
|
```
|
|
188
|
+
|
|
189
|
+
Fix tasks that edit synced artifacts use `oat project push` under the scope
|
|
190
|
+
guard instead of the branch commit template above.
|
|
188
191
|
````
|
|
189
192
|
|
|
190
193
|
````
|
|
@@ -268,8 +271,14 @@ After the delegated skill completes:
|
|
|
268
271
|
### Step 6: Commit Bookkeeping
|
|
269
272
|
|
|
270
273
|
```bash
|
|
271
|
-
|
|
272
|
-
|
|
274
|
+
PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || { echo "oat: cannot resolve project scope for $PROJECT_PATH; refusing to commit artifacts" >&2; exit 1; }
|
|
275
|
+
# fail closed: never fall back to branch bookkeeping when scope resolution fails
|
|
276
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
277
|
+
oat project push "$PROJECT_PATH" --message "chore(oat): create revision tasks for {project-name}" || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
278
|
+
else
|
|
279
|
+
git add "$PROJECT_PATH/plan.md" "$PROJECT_PATH/implementation.md" "$PROJECT_PATH/state.md"
|
|
280
|
+
git diff --cached --quiet || git commit -m "chore(oat): create revision tasks for {project-name}"
|
|
281
|
+
fi
|
|
273
282
|
```
|
|
274
283
|
|
|
275
284
|
### Step 7: Output Summary
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-spec
|
|
3
|
-
version: 2.0.
|
|
3
|
+
version: 2.0.2
|
|
4
4
|
description: Use when discovery is complete but you're not ready to design yet, and you want to formalize requirements into a structured spec.md as an optional standalone step. Independent of the design workflow — oat-project-design confirms requirements automatically and does not require this skill to be run first.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -437,14 +437,27 @@ Specification - Ready for design phase
|
|
|
437
437
|
During implementation of OAT itself, use standard commit format.
|
|
438
438
|
|
|
439
439
|
```bash
|
|
440
|
-
|
|
441
|
-
|
|
440
|
+
PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || { echo "oat: cannot resolve project scope for $PROJECT_PATH; refusing to commit artifacts" >&2; exit 1; }
|
|
441
|
+
# fail closed: never fall back to branch bookkeeping when scope resolution fails
|
|
442
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
443
|
+
oat project push "$PROJECT_PATH" --message "docs: complete specification for {project-name}
|
|
444
|
+
|
|
445
|
+
Requirements:
|
|
446
|
+
- {N} functional requirements (P0: {n}, P1: {n}, P2: {n})
|
|
447
|
+
- {N} non-functional requirements (P0: {n}, P1: {n}, P2: {n})
|
|
448
|
+
|
|
449
|
+
Ready for design phase" || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
450
|
+
else
|
|
451
|
+
PROJECT_OUTPUT_PATHS=("$PROJECT_PATH/spec.md" "$PROJECT_PATH/state.md")
|
|
452
|
+
git add -- "${PROJECT_OUTPUT_PATHS[@]}"
|
|
453
|
+
git commit -m "docs: complete specification for {project-name}
|
|
442
454
|
|
|
443
455
|
Requirements:
|
|
444
456
|
- {N} functional requirements (P0: {n}, P1: {n}, P2: {n})
|
|
445
457
|
- {N} non-functional requirements (P0: {n}, P1: {n}, P2: {n})
|
|
446
458
|
|
|
447
459
|
Ready for design phase"
|
|
460
|
+
fi
|
|
448
461
|
```
|
|
449
462
|
|
|
450
463
|
### Step 21: Output Summary
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-summary
|
|
3
|
-
version: 1.5.
|
|
3
|
+
version: 1.5.1
|
|
4
4
|
description: Use when the user requests or confirms summarizing an active OAT project — e.g. "summarize the project", "generate the summary", "run oat-project-summary", or confirms a previously offered summary run. Do NOT auto-invoke when implementation completes. Generates summary.md from project artifacts as institutional memory.
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
7
|
-
allowed-tools: Read, Write, Bash(git:*), Bash(oat config:*), Bash(oat decision:*), Bash(oat project log:*), Bash(oat tools:*), Glob, Grep, AskUserQuestion
|
|
7
|
+
allowed-tools: Read, Write, Bash(git:*), Bash(jq:*), Bash(oat config:*), Bash(oat decision:*), Bash(oat pjm:*), Bash(oat project log:*), Bash(oat project push:*), Bash(oat project scope:*), Bash(oat tools:*), Glob, Grep, AskUserQuestion
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Project Summary
|
|
@@ -323,11 +323,34 @@ Run this step after `summary.md` has been authored or refreshed, including the
|
|
|
323
323
|
distinct `## Autonomous Execution Learnings` section when its source artifact
|
|
324
324
|
exists.
|
|
325
325
|
|
|
326
|
-
|
|
326
|
+
Before the roll-up or decision promotion mutates repository-wide outputs,
|
|
327
|
+
preflight the owned paths and snapshot unrelated staged state:
|
|
327
328
|
|
|
328
329
|
```bash
|
|
329
|
-
|
|
330
|
+
DECISIONS_ROOT=".oat/repo/reference/decisions"
|
|
331
|
+
DECISION_INDEX_PATH="$DECISIONS_ROOT/index.md"
|
|
332
|
+
PROMOTED_DECISION_PATHS=()
|
|
333
|
+
DECISION_INDEX_CHANGED="false"
|
|
330
334
|
PROJECT_LOG_LEDGER_APPENDED="false"
|
|
335
|
+
PROJECT_LOG_LEDGER_PATH=$(oat config get workflow.projectLogLedgerPath 2>/dev/null || true)
|
|
336
|
+
OWNED_STAGE_PATHS=("$PROJECT_PATH/summary.md" "$PROJECT_PATH/project-log.md" "$DECISIONS_ROOT")
|
|
337
|
+
if [ -n "$PROJECT_LOG_LEDGER_PATH" ]; then
|
|
338
|
+
OWNED_STAGE_PATHS+=("$PROJECT_LOG_LEDGER_PATH")
|
|
339
|
+
fi
|
|
340
|
+
git diff --cached --quiet -- "${OWNED_STAGE_PATHS[@]}" || {
|
|
341
|
+
echo "oat: summary-owned output is already staged; refusing to mix staged state" >&2
|
|
342
|
+
exit 1
|
|
343
|
+
}
|
|
344
|
+
UNRELATED_STAGED_PATCH_BEFORE=$(git diff --cached --binary)
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
This preflight intentionally leaves unrelated staged paths in place. Step 8
|
|
348
|
+
must reproduce their staged patch byte-for-byte after its exact-path commits.
|
|
349
|
+
|
|
350
|
+
When Step 2.5 found entries, run:
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
test -n "$PROJECT_LOG_LEDGER_PATH" || exit 1
|
|
331
354
|
PROJECT_LOG_ROLLUP=$(oat project log rollup --project "$PROJECT_PATH" --json)
|
|
332
355
|
```
|
|
333
356
|
|
|
@@ -414,7 +437,12 @@ is missing, stop decision promotion and recommend `oat pjm init`. Never use
|
|
|
414
437
|
- Otherwise → create it:
|
|
415
438
|
|
|
416
439
|
```bash
|
|
417
|
-
oat decision new "<title>" --status accepted --context "<context>" --decision "<decision>" --consequences "<consequences>"
|
|
440
|
+
DECISION_CREATE=$(oat decision new "<title>" --status accepted --context "<context>" --decision "<decision>" --consequences "<consequences>" --json)
|
|
441
|
+
DECISION_ID=$(printf '%s\n' "$DECISION_CREATE" | jq -er '.id') || exit 1
|
|
442
|
+
DECISION_RECORD_PATH="$DECISIONS_ROOT/${DECISION_ID}.md"
|
|
443
|
+
test -f "$DECISION_RECORD_PATH" || exit 1
|
|
444
|
+
PROMOTED_DECISION_PATHS+=("$DECISION_RECORD_PATH")
|
|
445
|
+
DECISION_INDEX_CHANGED="true"
|
|
418
446
|
```
|
|
419
447
|
|
|
420
448
|
The command generates the deterministic `DR-YYMMDD-slug` ID, fills every decision body section, and regenerates the managed index automatically — do not hand-edit `index.md`. Optionally pass `--created-at "<project completion date>"` when a project completion date is available, so the record's date reflects when the decision was made.
|
|
@@ -436,14 +464,75 @@ This is informational only. There is no interactive prompt anywhere in this step
|
|
|
436
464
|
### Step 8: Commit
|
|
437
465
|
|
|
438
466
|
```bash
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
467
|
+
PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || { echo "oat: cannot resolve project scope for $PROJECT_PATH; refusing to commit artifacts" >&2; exit 1; }
|
|
468
|
+
# fail closed: never fall back to branch bookkeeping when scope resolution fails
|
|
469
|
+
|
|
470
|
+
PARENT_OUTPUT_PATHS=()
|
|
443
471
|
if [ "$PROJECT_LOG_LEDGER_APPENDED" = "true" ]; then
|
|
444
|
-
|
|
472
|
+
PARENT_OUTPUT_PATHS+=("$PROJECT_LOG_LEDGER_PATH")
|
|
473
|
+
fi
|
|
474
|
+
if [ "${#PROMOTED_DECISION_PATHS[@]}" -gt 0 ]; then
|
|
475
|
+
PARENT_OUTPUT_PATHS+=("${PROMOTED_DECISION_PATHS[@]}")
|
|
476
|
+
fi
|
|
477
|
+
if [ "$DECISION_INDEX_CHANGED" = "true" ]; then
|
|
478
|
+
PARENT_OUTPUT_PATHS+=("$DECISION_INDEX_PATH")
|
|
445
479
|
fi
|
|
446
|
-
|
|
480
|
+
|
|
481
|
+
PARENT_DURABILITY_COMMIT=""
|
|
482
|
+
if [ "$PROJECT_SCOPE" = "synced" ] && [ "${#PARENT_OUTPUT_PATHS[@]}" -gt 0 ]; then
|
|
483
|
+
git add -- "${PARENT_OUTPUT_PATHS[@]}"
|
|
484
|
+
if [ "$PROJECT_LOG_LEDGER_APPENDED" = "true" ] && [ "$DECISION_INDEX_CHANGED" = "true" ]; then
|
|
485
|
+
PARENT_COMMIT_MESSAGE="docs: update project log ledger and decisions for {project-name}"
|
|
486
|
+
elif [ "$PROJECT_LOG_LEDGER_APPENDED" = "true" ]; then
|
|
487
|
+
PARENT_COMMIT_MESSAGE="docs: update project log ledger for {project-name}"
|
|
488
|
+
else
|
|
489
|
+
PARENT_COMMIT_MESSAGE="docs: promote summary decisions for {project-name}"
|
|
490
|
+
fi
|
|
491
|
+
git commit --only -m "$PARENT_COMMIT_MESSAGE" -- "${PARENT_OUTPUT_PATHS[@]}"
|
|
492
|
+
PARENT_DURABILITY_COMMIT=$(git rev-parse HEAD)
|
|
493
|
+
PARENT_COMMIT_PATHS=$(git diff-tree --no-commit-id --name-only -r "$PARENT_DURABILITY_COMMIT")
|
|
494
|
+
# Inspect the complete output and require exact set equality with the
|
|
495
|
+
# de-duplicated PARENT_OUTPUT_PATHS array before continuing.
|
|
496
|
+
fi
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
Define this fail-closed parser before either synced summary push. On rejection,
|
|
500
|
+
print the full CLI JSON, run `oat project pull "$PROJECT_PATH"`, resolve its
|
|
501
|
+
reported conflict, and retry the original push.
|
|
502
|
+
|
|
503
|
+
```bash
|
|
504
|
+
parse_synced_push_receipt() {
|
|
505
|
+
node -e '
|
|
506
|
+
let value;
|
|
507
|
+
try { value = JSON.parse(process.argv[1]); } catch { process.exit(1); }
|
|
508
|
+
if (!["pushed", "up-to-date"].includes(value.status) || !/^[0-9a-f]{40}$/.test(value.sha)) process.exit(1);
|
|
509
|
+
process.stdout.write(value.sha);
|
|
510
|
+
' "$1"
|
|
511
|
+
}
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
```bash
|
|
515
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
516
|
+
SUMMARY_PUSH=$(oat project push "$PROJECT_PATH" --message "docs: generate summary for {project-name}" --json) || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
517
|
+
SUMMARY_COMMIT_SHA=$(parse_synced_push_receipt "$SUMMARY_PUSH") || { printf '%s\n' "$SUMMARY_PUSH" >&2; echo "Recovery: run oat project pull \"$PROJECT_PATH\", resolve conflicts, then retry this push." >&2; exit 1; }
|
|
518
|
+
else
|
|
519
|
+
PROJECT_OUTPUT_PATHS=("$PROJECT_PATH/summary.md")
|
|
520
|
+
if [ "$PROJECT_LOG_PROMOTION_APPENDED" = "true" ]; then
|
|
521
|
+
PROJECT_OUTPUT_PATHS+=("$PROJECT_PATH/project-log.md")
|
|
522
|
+
fi
|
|
523
|
+
if [ "${#PARENT_OUTPUT_PATHS[@]}" -gt 0 ]; then
|
|
524
|
+
PROJECT_OUTPUT_PATHS+=("${PARENT_OUTPUT_PATHS[@]}")
|
|
525
|
+
fi
|
|
526
|
+
git add -- "${PROJECT_OUTPUT_PATHS[@]}"
|
|
527
|
+
git commit --only -m "docs: generate summary for {project-name}" -- "${PROJECT_OUTPUT_PATHS[@]}"
|
|
528
|
+
SUMMARY_COMMIT_SHA=$(git rev-parse HEAD)
|
|
529
|
+
fi
|
|
530
|
+
|
|
531
|
+
UNRELATED_STAGED_PATCH_AFTER=$(git diff --cached --binary)
|
|
532
|
+
[ "$UNRELATED_STAGED_PATCH_AFTER" = "$UNRELATED_STAGED_PATCH_BEFORE" ] || {
|
|
533
|
+
echo "oat: unrelated staged state changed during summary persistence" >&2
|
|
534
|
+
exit 1
|
|
535
|
+
}
|
|
447
536
|
```
|
|
448
537
|
|
|
449
538
|
These conditional paths are required: append-based promotion mutates
|
|
@@ -451,12 +540,23 @@ These conditional paths are required: append-based promotion mutates
|
|
|
451
540
|
repository ledger. A permitted skip or deduplicated ledger does not add a
|
|
452
541
|
ledger staging path.
|
|
453
542
|
|
|
454
|
-
|
|
543
|
+
For a synced project, repository-wide decision and ledger outputs are committed
|
|
544
|
+
on the parent branch before the summary is pushed to its project ref. A new
|
|
545
|
+
decision with no ledger append therefore receives the dedicated guarded parent
|
|
546
|
+
commit above. Record `PARENT_DURABILITY_COMMIT` and the verified exact paths in
|
|
547
|
+
the output summary. Never stage the whole decisions directory.
|
|
455
548
|
|
|
456
549
|
If this is a re-run (incremental update):
|
|
457
550
|
|
|
458
551
|
```bash
|
|
459
|
-
|
|
552
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
553
|
+
SUMMARY_PUSH=$(oat project push "$PROJECT_PATH" --message "docs: update summary for {project-name}" --json) || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
554
|
+
SUMMARY_COMMIT_SHA=$(parse_synced_push_receipt "$SUMMARY_PUSH") || { printf '%s\n' "$SUMMARY_PUSH" >&2; echo "Recovery: run oat project pull \"$PROJECT_PATH\", resolve conflicts, then retry this push." >&2; exit 1; }
|
|
555
|
+
else
|
|
556
|
+
git add -- "${PROJECT_OUTPUT_PATHS[@]}"
|
|
557
|
+
git commit --only -m "docs: update summary for {project-name}" -- "${PROJECT_OUTPUT_PATHS[@]}"
|
|
558
|
+
SUMMARY_COMMIT_SHA=$(git rev-parse HEAD)
|
|
559
|
+
fi
|
|
460
560
|
```
|
|
461
561
|
|
|
462
562
|
### Step 9: Output Summary
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-wave-execute
|
|
3
|
-
version: 1.8.
|
|
3
|
+
version: 1.8.2
|
|
4
4
|
description: Use when executing a wave of external implementation plans as a wrapper OAT project — scaffolding, drift refresh, parallel worktree groups, briefs, gates, merge choreography, and closeout.
|
|
5
5
|
argument-hint: '<wave-id> [plan-names...] (e.g. wave-2 http-listener-before-indexing ...)'
|
|
6
6
|
disable-model-invocation: false
|
|
@@ -66,6 +66,10 @@ cross-lane synthesis, the end-of-run synthesis, and all user checkpoints.
|
|
|
66
66
|
that commit can fail silently; the ORCHESTRATOR commits the gate artifact on
|
|
67
67
|
the reviewer's behalf. Keep the tree clean around either path (both consumers:
|
|
68
68
|
stoa waves 2–3; Orc W1–W4).
|
|
69
|
+
Before persisting a gate artifact, resolve the wrapper project's scope with
|
|
70
|
+
`oat project scope "$PROJECT_PATH" --format value` and fail closed. A synced
|
|
71
|
+
wrapper uses `oat project push`; other scopes retain the existing gate-artifact
|
|
72
|
+
branch commit.
|
|
69
73
|
4. **Pre-declare CUMULATIVE churn in every brief:** declarations cover everything
|
|
70
74
|
landed since each source plan's AUTHORED COMMIT (drift checks compare against
|
|
71
75
|
that commit, not the group base), naming files + rough regions. Zero false
|
|
@@ -234,6 +238,31 @@ carry the stored verification records required by the fix-disposition contract b
|
|
|
234
238
|
`passed` is the only
|
|
235
239
|
terminal state for gate rows (Orc operator-audit S8).
|
|
236
240
|
|
|
241
|
+
Persist the gate artifact and its dispositions through the wrapper project's
|
|
242
|
+
scope-aware bookkeeping route:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
PROJECT_PATH=$(oat config get activeProject 2>/dev/null || true)
|
|
246
|
+
if [ -z "$PROJECT_PATH" ]; then
|
|
247
|
+
echo "oat: no active wrapper project; refusing wave gate bookkeeping" >&2
|
|
248
|
+
exit 1
|
|
249
|
+
fi
|
|
250
|
+
PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || { echo "oat: cannot resolve project scope for $PROJECT_PATH; refusing wave gate bookkeeping" >&2; exit 1; }
|
|
251
|
+
# fail closed: never fall back to branch bookkeeping when scope resolution fails
|
|
252
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
253
|
+
oat project push "$PROJECT_PATH" --message "chore(oat): record wave plan gate" || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
254
|
+
else
|
|
255
|
+
PROJECT_OUTPUT_PATHS=()
|
|
256
|
+
while IFS= read -r output_path; do
|
|
257
|
+
PROJECT_OUTPUT_PATHS+=("$output_path")
|
|
258
|
+
done < <(git diff --name-only -- "$PROJECT_PATH")
|
|
259
|
+
[ "${#PROJECT_OUTPUT_PATHS[@]}" -gt 0 ] || exit 1
|
|
260
|
+
git add -- "${PROJECT_OUTPUT_PATHS[@]}"
|
|
261
|
+
git diff --cached --quiet -- "${PROJECT_OUTPUT_PATHS[@]}" ||
|
|
262
|
+
git commit --only -m "chore(oat): record wave plan gate" -- "${PROJECT_OUTPUT_PATHS[@]}"
|
|
263
|
+
fi
|
|
264
|
+
```
|
|
265
|
+
|
|
237
266
|
### Step 5: Execute via `oat-project-implement`
|
|
238
267
|
|
|
239
268
|
The lifecycle skill owns execution. This skill contributes the templates it uses:
|
|
@@ -326,7 +355,10 @@ The lifecycle skill owns execution. This skill contributes the templates it uses
|
|
|
326
355
|
`.oat/config.json` keys remain present; this check originated with
|
|
327
356
|
`BL-260715-investigate-oat-config-json` in the source program's repo. Update
|
|
328
357
|
canonical sections in place, the run-entry table, review rows, and state;
|
|
329
|
-
remove worktrees + branches after merge.
|
|
358
|
+
remove worktrees + branches after merge. Wrapper-project artifact bookkeeping
|
|
359
|
+
at this boundary uses the same fail-closed scope guard and `oat project push`
|
|
360
|
+
when the wrapper is synced; code merge commits remain on the integration
|
|
361
|
+
branch unchanged.
|
|
330
362
|
|
|
331
363
|
### Step 6: Closeout
|
|
332
364
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-worktree-bootstrap
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.3.1
|
|
4
4
|
description: Use when creating or resuming a git worktree for OAT implementation. Creates or validates a worktree and runs OAT bootstrap checks.
|
|
5
5
|
argument-hint: '<branch-name> [--base <ref>] [--path <root>] [--existing]'
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -161,11 +161,23 @@ After config propagation, sync configured `localPaths` into the worktree:
|
|
|
161
161
|
|
|
162
162
|
```bash
|
|
163
163
|
oat local sync "{target-path}" 2>/dev/null || true
|
|
164
|
+
TARGET_ACTIVE_PROJECT=$(cd "{target-path}" && oat config get activeProject 2>/dev/null || true)
|
|
165
|
+
if [ -n "$TARGET_ACTIVE_PROJECT" ]; then
|
|
166
|
+
(
|
|
167
|
+
cd "{target-path}"
|
|
168
|
+
PROJECT_SCOPE=$(oat project scope "$TARGET_ACTIVE_PROJECT" --format value) || exit 1
|
|
169
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
170
|
+
oat project pull "$TARGET_ACTIVE_PROJECT"
|
|
171
|
+
fi
|
|
172
|
+
)
|
|
173
|
+
fi
|
|
164
174
|
```
|
|
165
175
|
|
|
166
176
|
- Uses the `localPaths` array from `.oat/config.json` to copy local-only directories (e.g., `.oat/ideas/`, `.oat/projects/local/`) into the worktree.
|
|
167
177
|
- Non-blocking: if sync fails or no `localPaths` are configured, bootstrap continues.
|
|
168
178
|
- Does not overwrite existing paths in the target (use `--force` to override).
|
|
179
|
+
- `oat local sync` skips nested synced-project checkouts; the explicit pull
|
|
180
|
+
above materializes or reconciles the active synced project instead.
|
|
169
181
|
|
|
170
182
|
### Step 3: Resolve and Run the Repository Bootstrap
|
|
171
183
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-worktree-bootstrap-auto
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.6.1
|
|
4
4
|
description: Use when an orchestrator/subagent needs autonomous worktree bootstrap. Non-interactive companion to oat-worktree-bootstrap.
|
|
5
5
|
argument-hint: '<branch-name> [--base <ref>] [--path <root>] [--baseline-policy <strict|allow-failing>]'
|
|
6
6
|
disable-model-invocation: false
|
|
@@ -210,10 +210,22 @@ fi
|
|
|
210
210
|
|
|
211
211
|
```bash
|
|
212
212
|
oat local sync "$TARGET_PATH" 2>/dev/null || true
|
|
213
|
+
TARGET_ACTIVE_PROJECT=$(cd "$TARGET_PATH" && oat config get activeProject 2>/dev/null || true)
|
|
214
|
+
if [ -n "$TARGET_ACTIVE_PROJECT" ]; then
|
|
215
|
+
(
|
|
216
|
+
cd "$TARGET_PATH"
|
|
217
|
+
PROJECT_SCOPE=$(oat project scope "$TARGET_ACTIVE_PROJECT" --format value) || exit 1
|
|
218
|
+
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
219
|
+
oat project pull "$TARGET_ACTIVE_PROJECT"
|
|
220
|
+
fi
|
|
221
|
+
)
|
|
222
|
+
fi
|
|
213
223
|
```
|
|
214
224
|
|
|
215
225
|
- Copies configured `localPaths` (e.g., `.oat/ideas/`, `.oat/projects/local/`) into the worktree.
|
|
216
226
|
- Non-blocking: if sync fails or no `localPaths` are configured, bootstrap continues.
|
|
227
|
+
- `oat local sync` skips nested synced-project checkouts; the explicit pull
|
|
228
|
+
above materializes or reconciles the active synced project non-interactively.
|
|
217
229
|
|
|
218
230
|
### Step 2.7: Verify Resolved Base in Worktree HEAD
|
|
219
231
|
|
|
@@ -9,6 +9,7 @@ interface ConfigCommandDependencies {
|
|
|
9
9
|
buildCommandContext: (options: Parameters<typeof buildCommandContext>[0]) => CommandContext;
|
|
10
10
|
resolveProjectRoot: (cwd: string) => Promise<string>;
|
|
11
11
|
readOatConfig: (repoRoot: string) => Promise<OatConfig>;
|
|
12
|
+
readOatConfigForDefaultScopeRepair: (repoRoot: string) => Promise<OatConfig>;
|
|
12
13
|
writeOatConfig: (repoRoot: string, config: OatConfig) => Promise<void>;
|
|
13
14
|
readOatLocalConfig: (repoRoot: string) => Promise<OatLocalConfig>;
|
|
14
15
|
writeOatLocalConfig: (repoRoot: string, config: OatLocalConfig) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAmBzC,OAAO,EAML,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,UAAU,EAgBhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC/B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,mCAAmC,EACnC,0BAA0B,EAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0GpC,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CACnB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAC/C,cAAc,CAAC;IACpB,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,kCAAkC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,EAAE,CACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,kBAAkB,EAAE,CAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC7C,mCAAmC,EAAE,OAAO,mCAAmC,CAAC;IAChF,0BAA0B,EAAE,OAAO,0BAA0B,CAAC;IAC9D,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;CAC/B;AAqkFD,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CAsKT"}
|