@open-agent-toolkit/cli 0.2.58 → 0.2.62
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 +27 -4
- package/assets/agents/oat-reviewer.md +25 -14
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/configuration.md +16 -0
- package/assets/docs/cli-utilities/workflow-gates.md +91 -6
- package/assets/docs/contributing/skills.md +27 -5
- package/assets/docs/provider-sync/commands.md +23 -0
- package/assets/docs/reference/cli-reference.md +10 -3
- package/assets/docs/reference/oat-directory-structure.md +1 -0
- package/assets/docs/workflows/ideas/index.md +1 -1
- package/assets/docs/workflows/index.md +1 -0
- package/assets/docs/workflows/projects/artifacts.md +24 -3
- package/assets/docs/workflows/projects/autonomy.md +5 -2
- package/assets/docs/workflows/projects/dispatch-ceiling.md +43 -7
- package/assets/docs/workflows/projects/hill-checkpoints.md +21 -0
- package/assets/docs/workflows/projects/implementation-execution.md +10 -2
- package/assets/docs/workflows/projects/lifecycle.md +128 -10
- package/assets/docs/workflows/projects/pr-flow.md +2 -0
- package/assets/docs/workflows/projects/reviews.md +1 -1
- package/assets/docs/workflows/projects/state-machine.md +20 -0
- package/assets/docs/workflows/skills/index.md +2 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-brainstorm/SKILL.md +61 -12
- package/assets/skills/oat-docs/SKILL.md +13 -8
- package/assets/skills/oat-doctor/SKILL.md +3 -3
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
- package/assets/skills/oat-project-autonomous/SKILL.md +14 -9
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +59 -38
- package/assets/skills/oat-project-capture/SKILL.md +2 -2
- package/assets/skills/oat-project-design/SKILL.md +10 -5
- package/assets/skills/oat-project-discover/SKILL.md +15 -9
- package/assets/skills/oat-project-document/SKILL.md +11 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +59 -38
- package/assets/skills/oat-project-implement/SKILL.md +3 -3
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +149 -24
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +14 -8
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +59 -38
- package/assets/skills/oat-project-implement/references/phase-execution.md +16 -1
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +19 -1
- package/assets/skills/oat-project-import-plan/SKILL.md +75 -6
- package/assets/skills/oat-project-lite/SKILL.md +467 -0
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +331 -0
- package/assets/skills/oat-project-next/SKILL.md +54 -11
- package/assets/skills/oat-project-plan/SKILL.md +42 -5
- package/assets/skills/oat-project-plan-writing/SKILL.md +100 -3
- package/assets/skills/oat-project-pr-final/SKILL.md +33 -7
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +59 -38
- package/assets/skills/oat-project-pr-progress/SKILL.md +3 -3
- package/assets/skills/oat-project-progress/SKILL.md +27 -3
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +3 -1
- package/assets/skills/oat-project-quick-start/SKILL.md +29 -4
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +59 -38
- package/assets/skills/oat-project-review-provide/SKILL.md +37 -11
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +12 -5
- package/assets/skills/oat-project-summary/SKILL.md +27 -3
- package/assets/templates/plan-lite.md +165 -0
- package/assets/templates/plan.md +1 -1
- package/assets/templates/state.md +5 -2
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +102 -8
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +16 -1
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +10 -1
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/new/index.d.ts +3 -2
- package/dist/commands/project/new/index.d.ts.map +1 -1
- package/dist/commands/project/new/index.js +2 -1
- package/dist/commands/project/new/scaffold.d.ts +5 -3
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +38 -10
- package/dist/commands/project/promote/index.d.ts +2 -0
- package/dist/commands/project/promote/index.d.ts.map +1 -0
- package/dist/commands/project/promote/index.js +1 -0
- package/dist/commands/project/promote/promote.d.ts +47 -0
- package/dist/commands/project/promote/promote.d.ts.map +1 -0
- package/dist/commands/project/promote/promote.js +322 -0
- package/dist/commands/project/split/run.d.ts.map +1 -1
- package/dist/commands/project/split/run.js +8 -1
- package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/index.js +25 -1
- package/dist/commands/project/validate-plan/validate-plan.d.ts +8 -0
- package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/validate-plan.js +49 -0
- package/dist/commands/remove/skill/remove-skill.d.ts.map +1 -1
- package/dist/commands/remove/skill/remove-skill.js +10 -1
- package/dist/commands/shared/frontmatter.d.ts +32 -1
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +93 -0
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +23 -0
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +8 -1
- package/dist/commands/sync/apply.d.ts.map +1 -1
- package/dist/commands/sync/apply.js +40 -6
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +11 -17
- package/dist/commands/sync/sync.types.d.ts +6 -6
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +2 -0
- package/dist/config/resolve.d.ts +16 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +16 -8
- package/dist/engine/execute-plan.d.ts.map +1 -1
- package/dist/engine/execute-plan.js +6 -0
- package/dist/manifest/index.d.ts +2 -1
- package/dist/manifest/index.d.ts.map +1 -1
- package/dist/manifest/index.js +1 -1
- package/dist/manifest/manager.d.ts +40 -0
- package/dist/manifest/manager.d.ts.map +1 -1
- package/dist/manifest/manager.js +35 -0
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-implement
|
|
3
|
-
version: 2.3.
|
|
3
|
+
version: 2.3.5
|
|
4
4
|
description: Use when plan.md is ready for execution. Dispatches one phase implementer per phase, owns independent phase review and bounded fix routing, and supports plan-declared worktree-isolated parallel phases.
|
|
5
5
|
oat_gateable: true
|
|
6
6
|
argument-hint: '[--retry-limit <N>] [--dry-run]'
|
|
@@ -81,8 +81,8 @@ When `OAT_AUTONOMOUS=1`, read
|
|
|
81
81
|
this run. Autonomy-specific behavior is routed with the rest of the workflow:
|
|
82
82
|
|
|
83
83
|
- delegation authorization: `references/dispatch-and-dry-run.md`;
|
|
84
|
-
- HiLL
|
|
85
|
-
|
|
84
|
+
- HiLL/checkpoint review: `references/plan-and-resume.md`;
|
|
85
|
+
- manual/visual proof: `IMPLEMENT-20` in `references/phase-execution.md`;
|
|
86
86
|
- final review, final HiLL approval, and lifecycle-tail sequencing:
|
|
87
87
|
`references/completion-and-closeout.md`.
|
|
88
88
|
|
|
@@ -315,10 +315,11 @@ generation as a sibling of `oat_post_implement_sequence`:
|
|
|
315
315
|
oat_implement_exit_gate:
|
|
316
316
|
status: pending # pending | allowed | blocked | stale
|
|
317
317
|
resolution: configured # configured | no_gate
|
|
318
|
-
disposition: null # null | passed | warned | prompt_approved | no_gate
|
|
318
|
+
disposition: null # null | passed | warned | prompt_approved | project_disabled | no_gate
|
|
319
319
|
config_fingerprint: '<stable hash of the resolved declaration>'
|
|
320
320
|
resolved_command: null
|
|
321
321
|
resolved_description: null
|
|
322
|
+
project_override: null # null or {value: disabled, source: state.md:oat_skill_gate_overrides}
|
|
322
323
|
on_failure: block # block | prompt | warn | null
|
|
323
324
|
max_attempts: 2
|
|
324
325
|
attempts_completed: 0
|
|
@@ -352,12 +353,33 @@ oat_implement_exit_gate:
|
|
|
352
353
|
At the start of a new closeout generation, require a current passed final
|
|
353
354
|
lifecycle review, capture `reviewed_head`, and compute a deterministic
|
|
354
355
|
`implementation_fingerprint` from the gate-reviewed basis. Resolve
|
|
355
|
-
`workflow.gates.skills.oat-project-implement` once
|
|
356
|
-
|
|
356
|
+
`workflow.gates.skills.oat-project-implement` once with project context, so a
|
|
357
|
+
configured gate this project disabled is never mistaken for absent
|
|
358
|
+
configuration. Canonically serialize the resolved command, description,
|
|
359
|
+
`onFailure`, `maxAttempts`, and the resolved project override state to derive
|
|
357
360
|
`config_fingerprint`; persist the complete resolved inputs with `status:
|
|
358
361
|
pending` before any gate launch. Missing state means unresolved, never no gate.
|
|
359
|
-
A `
|
|
360
|
-
null run/artifact/receive provenance, and the current
|
|
362
|
+
A `not_configured` resolution persists `allowed/no_gate` with
|
|
363
|
+
`disposition: no_gate`, null run/artifact/receive provenance, and the current
|
|
364
|
+
implementation basis. Only that resolution may produce a no-gate success: a
|
|
365
|
+
null, missing, malformed, or unrecognized resolver result is an operational
|
|
366
|
+
failure that fails closed as unresolved and never as no gate.
|
|
367
|
+
|
|
368
|
+
A `configured_disabled_by_project` resolution persists `allowed/configured`
|
|
369
|
+
with `disposition: project_disabled`. It sets `resolved_command` to the
|
|
370
|
+
configured command as evidence that is never executed, keeps null gate-run,
|
|
371
|
+
artifact, and receive provenance because nothing launched, keeps
|
|
372
|
+
`launch_state: not_started`, and records a `project_override` sub-record with
|
|
373
|
+
`value: disabled` and `source: state.md:oat_skill_gate_overrides`. Completion
|
|
374
|
+
stays allowed because the operator chose the project override; every other
|
|
375
|
+
closeout freshness and snapshot rule is unchanged. A project-disabled gate must
|
|
376
|
+
never enter the passed, missing, or failed branches.
|
|
377
|
+
|
|
378
|
+
Because `config_fingerprint` covers the resolved override state as well as the
|
|
379
|
+
configured declaration, removing the override from `state.md` changes the
|
|
380
|
+
fingerprint. A stored `project_disabled` transition is therefore invalidated
|
|
381
|
+
and can never be reused as a fresh `allowed` result once the gate is
|
|
382
|
+
re-enabled; the re-enabled gate requires a new configured generation.
|
|
361
383
|
|
|
362
384
|
New generations persist `implementation_fingerprint` as
|
|
363
385
|
`sha256:effective-delta-v1:<digest>`. Resolve the logical integration base from
|
|
@@ -520,6 +542,16 @@ disposition.
|
|
|
520
542
|
configured-gate provenance when configured, an unchanged immutable
|
|
521
543
|
implementation fingerprint, a valid rolling freshness checkpoint, and any
|
|
522
544
|
eligible receive marked complete.
|
|
545
|
+
- An `allowed/configured` result carrying `disposition: project_disabled` is
|
|
546
|
+
revalidated before it is reused, because the override lives in the state
|
|
547
|
+
carrier that the implementation fingerprint deliberately excludes. Re-resolve
|
|
548
|
+
the gate with project context, recompute `config_fingerprint` from that
|
|
549
|
+
current resolution, and require both that the current resolution is still
|
|
550
|
+
`configured_disabled_by_project` and that the recomputed fingerprint equals
|
|
551
|
+
the persisted one. Any other current resolution, including a re-enabled
|
|
552
|
+
`configured` gate, or any fingerprint mismatch marks the generation `stale`
|
|
553
|
+
and requires a new configured generation. Reproducing the fingerprint from
|
|
554
|
+
the persisted inputs alone never satisfies this check.
|
|
523
555
|
- Closeout-only descendants include configured gate artifacts and receipts,
|
|
524
556
|
project tracking, `project-log.md` appends, summary/documentation/PR sequence
|
|
525
557
|
outputs, final HiLL bookkeeping, and completion bookkeeping. Classify
|
|
@@ -565,12 +597,14 @@ completion, or success output, run the configured gate:
|
|
|
565
597
|
the gate for this skill:
|
|
566
598
|
|
|
567
599
|
```bash
|
|
568
|
-
oat gate resolve oat-project-implement --json
|
|
600
|
+
oat gate resolve oat-project-implement --project "$PROJECT_PATH" --json
|
|
569
601
|
```
|
|
570
602
|
|
|
571
|
-
Persist the resolution and configuration fingerprint before launch
|
|
572
|
-
|
|
573
|
-
is configured; proceed directly to the completion steps in Step 15 below.
|
|
603
|
+
Persist the resolution and configuration fingerprint before launch, then
|
|
604
|
+
handle all three `resolution` values explicitly:
|
|
605
|
+
- `not_configured`: persist the allowed no-gate transition; no gate is configured; proceed directly to the completion steps in Step 15 below.
|
|
606
|
+
- `configured_disabled_by_project`: persist the allowed project-disabled transition described above without launching any process, and proceed directly to the completion steps in Step 15 below.
|
|
607
|
+
- `configured`: continue with the launch steps below.
|
|
574
608
|
|
|
575
609
|
2. Export the resolved project path into the command shell:
|
|
576
610
|
|
|
@@ -675,10 +709,65 @@ require `oat_implement_exit_gate` to remain allowed and fresh. If it becomes
|
|
|
675
709
|
stale, malformed, pending, or blocked, persist/retain that state, stop the
|
|
676
710
|
sequence, and resume through `oat-project-implement`.
|
|
677
711
|
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
712
|
+
For `oat_workflow_mode: lite`, there is no final HiLL approval step. A passed
|
|
713
|
+
final review and allowed implementation exit gate proceed directly to closeout
|
|
714
|
+
with `approval: not_required`; do not read
|
|
715
|
+
`oat_plan_hill_phases`, ask for approval, or invoke the autonomous approval
|
|
716
|
+
branch. Set `final_checkpoint_exists = false`,
|
|
717
|
+
`awaiting_approval_reachable = false`, and
|
|
718
|
+
`autonomous_approval_reachable = false`. Per-phase review and final review
|
|
719
|
+
remain unchanged.
|
|
720
|
+
|
|
721
|
+
Use this executable contract before any generic checkpoint or preference
|
|
722
|
+
resolution:
|
|
723
|
+
|
|
724
|
+
```bash
|
|
725
|
+
# BEGIN LITE CLOSEOUT RESOLUTION CONTRACT
|
|
726
|
+
if [ "$WORKFLOW_MODE" = "lite" ]; then
|
|
727
|
+
if [ "${PHASE_REVIEW_STATUS:-}" != "passed" ] || [ "${FINAL_REVIEW_STATUS:-}" != "passed" ]; then
|
|
728
|
+
echo "oat: lite closeout requires passed phase and final reviews" >&2
|
|
729
|
+
exit 65
|
|
730
|
+
fi
|
|
731
|
+
FINAL_CHECKPOINT_EXISTS="false"
|
|
732
|
+
APPROVAL="not_required"
|
|
733
|
+
AWAITING_APPROVAL_REACHABLE="false"
|
|
734
|
+
AUTONOMOUS_APPROVAL_REACHABLE="false"
|
|
735
|
+
PROJECT_RECAP_REACHABLE="false"
|
|
736
|
+
ORDERED_CLOSEOUT=("phase-review" "final-review")
|
|
737
|
+
PRE_APPROVAL=()
|
|
738
|
+
for STEP in ${LITE_PRE_APPROVAL:-}; do
|
|
739
|
+
case "$STEP" in
|
|
740
|
+
summary|document|pr)
|
|
741
|
+
ALREADY_PRESENT="false"
|
|
742
|
+
for PRESENT in "${PRE_APPROVAL[@]}"; do
|
|
743
|
+
[ "$PRESENT" = "$STEP" ] && ALREADY_PRESENT="true"
|
|
744
|
+
done
|
|
745
|
+
[ "$ALREADY_PRESENT" = "true" ] || PRE_APPROVAL+=("$STEP")
|
|
746
|
+
;;
|
|
747
|
+
esac
|
|
748
|
+
done
|
|
749
|
+
PR_PRESENT="false"
|
|
750
|
+
for PRESENT in "${PRE_APPROVAL[@]}"; do
|
|
751
|
+
[ "$PRESENT" = "pr" ] && PR_PRESENT="true"
|
|
752
|
+
done
|
|
753
|
+
[ "$PR_PRESENT" = "true" ] || PRE_APPROVAL+=("pr")
|
|
754
|
+
POST_APPROVAL=()
|
|
755
|
+
ORDERED_CLOSEOUT+=("${PRE_APPROVAL[@]}" "complete")
|
|
756
|
+
fi
|
|
757
|
+
# END LITE CLOSEOUT RESOLUTION CONTRACT
|
|
758
|
+
```
|
|
759
|
+
|
|
760
|
+
The contract intentionally does not read `OAT_PLAN_HILL_PHASES`,
|
|
761
|
+
`GENERIC_PRE_APPROVAL`, `GENERIC_POST_APPROVAL`, or `OAT_AUTONOMOUS` in its
|
|
762
|
+
lite branch. After it resolves lite, skip every generic checkpoint,
|
|
763
|
+
preference-resolution, awaiting-approval, and autonomous-approval algorithm
|
|
764
|
+
below.
|
|
765
|
+
|
|
766
|
+
For non-lite workflows only, identify the final implementation phase from the
|
|
767
|
+
plan. A final HiLL checkpoint exists when `oat_plan_hill_phases` is `[]` (every
|
|
768
|
+
phase) or when it explicitly contains that final phase ID. Defer only a
|
|
769
|
+
checkpoint on the final implementation phase; non-final checkpoint behavior
|
|
770
|
+
remains unchanged.
|
|
682
771
|
|
|
683
772
|
Run final verification (Step 12). Final review must be `passed` and the
|
|
684
773
|
configured implementation exit gate in Step 14 must be allowed before any
|
|
@@ -686,8 +775,9 @@ pre-approval dispatch. If final checkpoint auto-review is enabled, Step 8 has
|
|
|
686
775
|
already run `oat-project-review-provide code final`; do not run a duplicate
|
|
687
776
|
final review here.
|
|
688
777
|
|
|
689
|
-
|
|
690
|
-
legacy or structured preference, normalize legacy
|
|
778
|
+
For non-lite workflows, read the effective `workflow.postImplementSequence`
|
|
779
|
+
once. For a configured legacy or structured preference, normalize legacy
|
|
780
|
+
values before snapshotting:
|
|
691
781
|
`wait` → `{ preApproval: [], postApproval: [] }`, `summary` →
|
|
692
782
|
`{ preApproval: ["summary"], postApproval: [] }`, `pr` → `{ preApproval:
|
|
693
783
|
["summary", "pr"], postApproval: [] }`, and `docs-pr` → `{ preApproval:
|
|
@@ -695,8 +785,28 @@ legacy or structured preference, normalize legacy values before snapshotting:
|
|
|
695
785
|
These legacy mappings remain unchanged. Structured preferences additionally
|
|
696
786
|
accept `retro` in `postApproval`; `retro` is invalid in `preApproval`.
|
|
697
787
|
|
|
698
|
-
|
|
699
|
-
|
|
788
|
+
For `oat_workflow_mode: lite`, the earlier resolution contract preempts that
|
|
789
|
+
normalization. The generic `workflow.postImplementSequence` value is not a lite
|
|
790
|
+
opt-in to summary or documentation. Supply only the explicit
|
|
791
|
+
`workflow.postImplementSequence.lite.preApproval` override as
|
|
792
|
+
`LITE_PRE_APPROVAL` for those opt-ins:
|
|
793
|
+
|
|
794
|
+
- The default with no lite-specific override is `[pr]`.
|
|
795
|
+
- Filter a lite-specific override to `summary`, `document`, and `pr`, remove
|
|
796
|
+
duplicates while retaining its order, and append `pr` when it is absent. For
|
|
797
|
+
example, `[summary, pr]` remains unchanged.
|
|
798
|
+
- Resolve `postApproval` to `[]`. A lite closeout never includes `retro`, even
|
|
799
|
+
when the generic preference or autonomous default includes it.
|
|
800
|
+
|
|
801
|
+
This transformation applies in interactive and autonomous execution alike.
|
|
802
|
+
Persist the resulting arrays as the immutable sequence snapshot and set
|
|
803
|
+
`approval: not_required`; the lite-specific override changes optional work,
|
|
804
|
+
not the absence of a HiLL approval checkpoint. The generic configured and
|
|
805
|
+
autonomous-default preference resolution immediately below applies only to
|
|
806
|
+
non-lite workflows; it must not overwrite the lite transformation.
|
|
807
|
+
|
|
808
|
+
For non-lite workflows, if `OAT_AUTONOMOUS=1` and the preference is unset, use
|
|
809
|
+
the inventory's autonomous lifecycle-tail default:
|
|
700
810
|
|
|
701
811
|
```yaml
|
|
702
812
|
preApproval: [summary, document, pr]
|
|
@@ -769,10 +879,17 @@ checkpoint protocol to gate bookkeeping, final HiLL bookkeeping, and completion
|
|
|
769
879
|
bookkeeping. A mixed commit, missing child transition, or non-state path in the
|
|
770
880
|
checkpoint-persistence commit fails closed as stale.
|
|
771
881
|
|
|
772
|
-
**Implementation-Tail Project Recap:**
|
|
882
|
+
**Implementation-Tail Project Recap (non-lite only):**
|
|
773
883
|
|
|
774
884
|
The final-closeout orchestrator owns one project-recap gate. Run this recap gate after the final code review has passed and configured pre-approval summary/document steps have completed, but before final HiLL approval. Preserve the stored order of all other pre-approval steps and the existing final review sequence; the recap gate does not replace or repeat either.
|
|
775
885
|
|
|
886
|
+
This entire project-recap subsection applies only to non-lite workflows. For
|
|
887
|
+
lite, do not resolve recap intent, inspect recap runs, invoke
|
|
888
|
+
`oat-explainer-kit`, run the terminal-outcome guard, or let recap block
|
|
889
|
+
closeout. The lite contract sets `PROJECT_RECAP_REACHABLE=false` and proceeds
|
|
890
|
+
from the required reviews through its stored optional steps to `pr` and
|
|
891
|
+
sequence completion.
|
|
892
|
+
|
|
776
893
|
Before generating, inspect the active project's explainer runs. A fresh `project-recap` manifest for the current completed implementation deduplicates the lifecycle-tail run: reuse it and do not invoke the adapter again. Fresh means the manifest identifies recipe `project-recap`, belongs to this project, has a terminal outcome, and its recorded source hashes match the current approved implementation inputs. A merely present, incomplete, wrong-recipe, or stale manifest does not satisfy this check.
|
|
777
894
|
|
|
778
895
|
Resolve recap intent through `oat-explainer-kit`. When `OAT_AUTONOMOUS=1` and no fresh recap exists, attempt `project-recap` exactly once; missing or stale persisted intent cannot suppress this autonomous attempt. Interactive mode honors the adapter's resolved persisted or workflow intent.
|
|
@@ -800,6 +917,13 @@ terminal generated outcomes are `built-durable`, `built-not-durable`,
|
|
|
800
917
|
approval; do not substitute a warning or infer an outcome from filesystem
|
|
801
918
|
presence. A `skip` intent requires no manifest.
|
|
802
919
|
|
|
920
|
+
**Lite completion algorithm:** Dispatch incomplete `pre_approval` steps in
|
|
921
|
+
stored order, retain `approval: not_required`, keep both approval reachability
|
|
922
|
+
flags false, and commit `status: complete` when they finish. Do not enter the
|
|
923
|
+
generic checkpoint or autonomous algorithms below.
|
|
924
|
+
|
|
925
|
+
**Non-lite approval algorithm:**
|
|
926
|
+
|
|
803
927
|
1. Dispatch incomplete `pre_approval` steps in stored order.
|
|
804
928
|
2. When they succeed and a final checkpoint exists, commit `status:
|
|
805
929
|
awaiting_approval` with `approval: pending` before asking for final HiLL
|
|
@@ -819,8 +943,8 @@ awaiting_approval` with `approval: pending` before asking for final HiLL
|
|
|
819
943
|
|
|
820
944
|
**Autonomous final HiLL approval:**
|
|
821
945
|
|
|
822
|
-
|
|
823
|
-
in steps 2-4:
|
|
946
|
+
For non-lite workflows only, when `OAT_AUTONOMOUS=1`, gate `IMPLEMENT-16`
|
|
947
|
+
replaces only the approval question in steps 2-4:
|
|
824
948
|
|
|
825
949
|
1. Require the final review row to be `passed` and verify its review artifact
|
|
826
950
|
and dispatch record. A failed blocking review or unresolved Critical finding
|
|
@@ -839,10 +963,11 @@ approval, destructive-change risk, or missing-credential boundary. When
|
|
|
839
963
|
autonomy is inactive, the explicit user approval/decline/defer behavior above
|
|
840
964
|
is unchanged.
|
|
841
965
|
|
|
842
|
-
|
|
843
|
-
snapshot. Retain the existing next-step prompt only
|
|
844
|
-
final checkpoint is configured. Under autonomy,
|
|
845
|
-
always resolves the unset case.
|
|
966
|
+
For non-lite workflows, if the preference is unset and autonomy is inactive,
|
|
967
|
+
do not create a sequence snapshot. Retain the existing next-step prompt only
|
|
968
|
+
after final approval when a final checkpoint is configured. Under autonomy,
|
|
969
|
+
the default snapshot above always resolves the unset case. The lite branch
|
|
970
|
+
always snapshots its deterministic `[pr]` default.
|
|
846
971
|
|
|
847
972
|
### Step 16: Mark Implementation Complete
|
|
848
973
|
|
|
@@ -367,11 +367,18 @@ Require `dispatchReport.schemaVersion: 1` in the completed resolver JSON before
|
|
|
367
367
|
dispatch. Surface every structured entry in `dispatchReport.notices`, then
|
|
368
368
|
render the versioned block with `formatDispatchReport(dispatchReport)`
|
|
369
369
|
semantics, before the implementation, fix, or reviewer launch. Consume the
|
|
370
|
-
report as the human/audit source, and
|
|
371
|
-
|
|
372
|
-
`
|
|
370
|
+
report as the human/audit source, and take the formal compatibility line
|
|
371
|
+
directly from the same response's additive `dispatchStamp` field: it must be a
|
|
372
|
+
non-empty string beginning with the canonical `Dispatch:` prefix, copied
|
|
373
|
+
byte-for-byte into dispatch and audit metadata. Reformatting the report through
|
|
374
|
+
`formatDispatchStamp(dispatchReport)` / `toDispatchStampRecord(dispatchReport)`
|
|
375
|
+
is an optional corroboration where that library is already loaded; it is never
|
|
376
|
+
the normal path and never a substitute for the returned field, and no
|
|
377
|
+
out-of-tree shim is required.
|
|
373
378
|
Never hand-assemble a second `Dispatch:` schema from policy labels, role names,
|
|
374
|
-
candidate strings, or target names.
|
|
379
|
+
candidate strings, or target names. If `dispatchStamp` is absent or lacks the
|
|
380
|
+
canonical prefix on a report-bearing response, stop and report instead of
|
|
381
|
+
reconstructing it.
|
|
375
382
|
|
|
376
383
|
The exact provider invocation remains authoritative in
|
|
377
384
|
`providers.<provider>.dispatchArgs` and `providers.<provider>.selection.target`;
|
|
@@ -537,10 +544,9 @@ Payload-first invariant:
|
|
|
537
544
|
- Those fields are launcher-owned. Agent self-report cannot populate or
|
|
538
545
|
overwrite them; it may only be retained separately as optional diagnostics.
|
|
539
546
|
- Derive `Dispatch target` and `Effort axis` / `Model axis` from the payload.
|
|
540
|
-
- After the payload is built, append the
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
grammar exactly:
|
|
547
|
+
- After the payload is built, append the resolver-returned `dispatchStamp`
|
|
548
|
+
value to Dispatch Notes for every implementation, fix, and review dispatch.
|
|
549
|
+
The returned line retains the p01 grammar exactly:
|
|
544
550
|
`Dispatch: scope=<phase-or-task> action=<implementation|fix|review> role=<implementer|fix|reviewer> producer=<slug|unknown> provenance=<declared|observed|inferred|unknown> model_axis=<axis> effort_axis=<axis> dispatch_policy=<policy|unknown> dispatch_ceiling=<value|none> target=<target|unknown>`.
|
|
545
551
|
Populate the report from the completed resolver and actual host arguments.
|
|
546
552
|
Only independently observed or otherwise supported runtime evidence may
|