@open-agent-toolkit/cli 0.3.14 → 0.3.16
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/NOTICES.md +48 -0
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/contributing/markdown-features.md +38 -0
- package/assets/docs/contributing/smoke-testing.md +20 -13
- package/assets/docs/docs-tooling/workflows.md +26 -19
- package/assets/docs/getting-started/concepts.md +35 -21
- package/assets/docs/provider-sync/commands.md +21 -0
- package/assets/docs/provider-sync/manifest-and-drift.md +24 -17
- package/assets/docs/reference/cli-reference.md +2 -1
- package/assets/docs/reference/configuration.md +10 -2
- package/assets/docs/reference/project-state-machine.md +27 -20
- package/assets/docs/skills/index.md +1 -0
- package/assets/docs/skills/recon.md +8 -5
- package/assets/docs/workflows/advanced/autonomy.md +10 -0
- package/assets/docs/workflows/advanced/evidence-layers.md +19 -12
- package/assets/docs/workflows/advanced/orchestration-model.md +48 -34
- package/assets/docs/workflows/advanced/workflow-gates.md +109 -10
- package/assets/docs/workflows/approvals-and-automation.md +3 -1
- package/assets/docs/workflows/ideas/lifecycle.md +32 -25
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +62 -1
- package/assets/docs/workflows/projects/execution/implementation-execution.md +67 -33
- package/assets/docs/workflows/projects/execution/project-log.md +6 -0
- package/assets/docs/workflows/projects/lifecycle.md +119 -63
- package/assets/docs/workflows/projects/reviews/index.md +63 -1
- package/assets/docs/workflows/projects/reviews/review-flavors.md +30 -23
- package/assets/docs/workflows/waves/wave-workflows.md +11 -3
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-autonomous/SKILL.md +1 -1
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +172 -165
- package/assets/skills/oat-project-complete-auto/SKILL.md +388 -0
- package/assets/skills/oat-project-document/SKILL.md +1 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +172 -165
- package/assets/skills/oat-project-implement/SKILL.md +6 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +28 -1
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +172 -165
- package/assets/skills/oat-project-implement/references/docs/complexity-review-fallback.md +262 -0
- package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +80 -0
- package/assets/skills/oat-project-implement/references/phase-execution.md +18 -0
- package/assets/skills/oat-project-lite/SKILL.md +1 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +172 -165
- package/assets/skills/oat-project-next/SKILL.md +19 -2
- package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +80 -0
- package/assets/skills/oat-project-pr-final/SKILL.md +4 -3
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +172 -165
- package/assets/skills/oat-project-progress/SKILL.md +15 -1
- package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +80 -0
- package/assets/skills/oat-project-quick-start/SKILL.md +31 -3
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +172 -165
- package/assets/skills/oat-project-quick-start/references/docs/complexity-review-fallback.md +262 -0
- package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +80 -0
- package/assets/skills/oat-project-review-receive/SKILL.md +21 -3
- package/assets/skills/oat-project-review-receive/references/docs/complexity-review-fallback.md +262 -0
- package/assets/skills/oat-wave-execute/SKILL.md +49 -28
- package/assets/skills/oat-wave-program/SKILL.md +15 -6
- package/assets/skills/oat-wrap-up/SKILL.md +9 -3
- package/assets/skills/oat-wrap-up/references/report-template.md +1 -1
- package/assets/skills/recon/SKILL.md +1 -1
- package/assets/skills/recon/references/packet-contract.md +18 -3
- package/assets/skills/recon/scripts/lib/contracts.mjs +16 -2
- package/assets/skills/recon/scripts/reconcile-ledger.mjs +20 -10
- package/assets/skills/recon/scripts/render-packet.mjs +31 -3
- package/assets/skills/recon/scripts/validate-packet.mjs +5 -5
- package/assets/templates/docs-app-fuma/app/[[...slug]]/page.tsx +14 -2
- package/assets/templates/docs-app-fuma/app/globals.css +1 -0
- package/assets/templates/state.md +7 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +13 -0
- package/dist/commands/gate/index.d.ts +5 -0
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +270 -9
- package/dist/commands/shared/frontmatter.d.ts +1 -1
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +1 -0
- package/dist/commands/state/generate.d.ts +1 -1
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +87 -8
- package/dist/commands/sync/apply.d.ts.map +1 -1
- package/dist/commands/sync/apply.js +31 -5
- package/dist/commands/sync/dry-run.d.ts.map +1 -1
- package/dist/commands/sync/dry-run.js +28 -11
- package/dist/commands/sync/sync.utils.d.ts +13 -0
- package/dist/commands/sync/sync.utils.d.ts.map +1 -1
- package/dist/commands/sync/sync.utils.js +21 -1
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +1 -0
- package/dist/config/oat-config.d.ts +1 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +3 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +1 -0
- package/dist/drift/detector.js +6 -6
- package/dist/engine/compute-plan.d.ts.map +1 -1
- package/dist/engine/compute-plan.js +87 -2
- package/dist/engine/engine.types.d.ts +10 -1
- package/dist/engine/engine.types.d.ts.map +1 -1
- package/dist/engine/engine.types.js +4 -0
- package/dist/engine/execute-plan.d.ts.map +1 -1
- package/dist/engine/execute-plan.js +42 -5
- package/dist/engine/managed-copy-hash.d.ts +4 -3
- package/dist/engine/managed-copy-hash.d.ts.map +1 -1
- package/dist/engine/managed-copy-hash.js +4 -3
- package/dist/fs/assets.d.ts.map +1 -1
- package/dist/fs/assets.js +7 -1
- package/dist/manifest/hash.d.ts +8 -10
- package/dist/manifest/hash.d.ts.map +1 -1
- package/dist/release/public-package-contract.js +1 -1
- package/dist/ui/output.js +1 -1
- package/dist/validation/skills.d.ts.map +1 -1
- package/dist/validation/skills.js +13 -0
- package/package.json +2 -2
|
@@ -6,7 +6,7 @@ disable-model-invocation: false
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Edit, Bash, Grep, Glob, Task
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.9.
|
|
9
|
+
version: 1.9.6
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Execute a Wave of External Plans
|
|
@@ -417,35 +417,56 @@ archive anything first.
|
|
|
417
417
|
HiLL. File follow-up-ledger backlog items at closeout (on main post-merge, or
|
|
418
418
|
pre-gate if the operator prefers them in the PR).
|
|
419
419
|
8. **The full `oat-project-complete` PROCESS, with an explicit autonomous
|
|
420
|
-
deferral branch.** Interactive runs retain the standing
|
|
421
|
-
review → complete → merge (an open PR is expected, not a
|
|
422
|
-
archive-aware PR body sync handles it). The requirement
|
|
423
|
-
completion process, named explicitly:
|
|
424
|
-
`oat project archive` (the CLI owns the local
|
|
425
|
-
export, and the S3 sync when `s3SyncOnComplete` is
|
|
426
|
-
active-project pointer clear → the completion bookkeeping
|
|
427
|
-
`oat project complete-state` ALONE does NOT satisfy this
|
|
428
|
-
first run all four wrapper projects were left
|
|
429
|
-
unarchived until an operator audit asked (S10).
|
|
430
|
-
|
|
431
|
-
Under autonomous execution, each wave MUST still run
|
|
432
|
-
`oat project complete-state` and its then-current project bookkeeping. The
|
|
433
|
-
archive tail — `oat project archive` (including configured S3 sync) →
|
|
434
|
-
active-project pointer clear → completion bookkeeping commit — MAY be
|
|
435
|
-
deferred to the program boundary so the wave can merge and execution can
|
|
436
|
-
continue. Record every such choice in the wave ledger exactly as
|
|
437
|
-
`completion tail: deferred to program close`; deferral is an outstanding
|
|
438
|
-
disposition, never satisfaction of the full-tail requirement. Interactive
|
|
439
|
-
per-wave full-tail completion remains valid.
|
|
420
|
+
companion and deferral branch.** Interactive runs retain the standing
|
|
421
|
+
per-wave order review → complete → merge (an open PR is expected, not a
|
|
422
|
+
blocker — the archive-aware PR body sync handles it). The requirement
|
|
423
|
+
remains the whole completion process, named explicitly:
|
|
424
|
+
`oat project complete-state` → `oat project archive` (the CLI owns the local
|
|
425
|
+
archive move, the summary export, and the S3 sync when `s3SyncOnComplete` is
|
|
426
|
+
configured) → active-project pointer clear → the completion bookkeeping
|
|
427
|
+
commit. Running `oat project complete-state` ALONE does NOT satisfy this
|
|
428
|
+
step: in the Orc first run all four wrapper projects were left
|
|
429
|
+
lifecycle-complete but unarchived until an operator audit asked (S10).
|
|
440
430
|
|
|
441
431
|
The interactive completion skill is model-invisible
|
|
442
|
-
(`disable-model-invocation: true`)
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
`
|
|
432
|
+
(`disable-model-invocation: true`). Under autonomous execution, invoke
|
|
433
|
+
`oat-project-complete-auto` for the wave wrapper project with this step's
|
|
434
|
+
completion-before-merge provenance:
|
|
435
|
+
`--requested-by oat-wave-execute:closeout-step-8 --completion-before-merge --reason "wave <wave-id> completes before its merge handoff" <wrapper-project-path>`.
|
|
436
|
+
The companion runs only with `workflow.autonomousComplete: true`, preflights
|
|
437
|
+
the wrapper, records the completion-before-merge exception for the open,
|
|
438
|
+
tracked wave PR in the wrapper's `implementation.md`, and then runs the full
|
|
439
|
+
completion process. Record its run-report outcome in the wave ledger.
|
|
440
|
+
|
|
441
|
+
Fall back to the deferral below only when the run report's `refused_check`
|
|
442
|
+
is `opt-in` (`interactive completion required`), `preflight:4` (the PR
|
|
443
|
+
precondition), or `preflight:7` (a completion question with no recorded
|
|
444
|
+
answer). Any other refusal — an objective preflight failure, namely
|
|
445
|
+
`preflight:1` (post-implement sequence incomplete), `preflight:2`
|
|
446
|
+
(incomplete tasks), `preflight:3` (final review not passed), `preflight:5`
|
|
447
|
+
(unresolved blockers), or `preflight:6` (project-log gate unsatisfied), or
|
|
448
|
+
an `activation` refusal — stops wave closeout at a boundary: report the
|
|
449
|
+
failing check and run neither `oat project complete-state` nor the merge
|
|
450
|
+
handoff. `oat project complete-state` checks only the closeout snapshot, so
|
|
451
|
+
running it after an objective refusal would mark an unhealthy wrapper
|
|
452
|
+
complete. A `preflight:1` refusal whose reason is
|
|
453
|
+
`project directory absent (archived?); resume with oat-project-complete`
|
|
454
|
+
means an earlier run archived the wrapper and a later completion step
|
|
455
|
+
failed: the boundary report names `oat-project-complete` as the next owner,
|
|
456
|
+
whose archive-resume branches finish the tail, and never another companion
|
|
457
|
+
run.
|
|
458
|
+
|
|
459
|
+
On a deferrable stop, the wave MUST still run `oat project complete-state`
|
|
460
|
+
and its then-current project bookkeeping, and the archive tail —
|
|
461
|
+
`oat project archive` (including configured S3 sync) → active-project
|
|
462
|
+
pointer clear → completion bookkeeping commit — MAY be deferred to the
|
|
463
|
+
program boundary so the wave can merge and execution can continue. Record
|
|
464
|
+
every such choice in the wave ledger exactly as
|
|
465
|
+
`completion tail: deferred to program close`, with the companion's stated
|
|
466
|
+
reason; deferral is an outstanding disposition, never satisfaction of the
|
|
467
|
+
full-tail requirement. Interactive per-wave full-tail completion remains
|
|
468
|
+
valid. A deferred tail runs after the one human-gated program-end
|
|
469
|
+
checkpoint in `oat-wave-program`, across every deferred wave wrapper.
|
|
449
470
|
|
|
450
471
|
9. **After the operator merges:** reconcile (squash-merge means content-diff the
|
|
451
472
|
branch vs main; cherry-pick stragglers), reset the working branch, clean stale
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: false
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Edit, Bash, Grep, Glob, Task
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.5.
|
|
9
|
+
version: 1.5.4
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Program a Corpus of External Plans into Waves
|
|
@@ -124,11 +124,20 @@ target (same disclaimer as the plan indexes).
|
|
|
124
124
|
including in autonomous runs:
|
|
125
125
|
"All waves are merged and the program is complete. Run the completion tail
|
|
126
126
|
(oat-project-complete: archive + S3 + pointer clear) across all N wave wrapper
|
|
127
|
-
projects now?" On yes,
|
|
128
|
-
`oat-project-complete-auto`
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
127
|
+
projects now?" On yes, record the answer in the program ledger and invoke
|
|
128
|
+
`oat-project-complete-auto` once in batch mode with
|
|
129
|
+
`--requested-by oat-wave-program:program-completion-checkpoint --batch --program-checkpoint <ledger-ref>`
|
|
130
|
+
and every deferred wrapper project path. Flip each wrapper the run report
|
|
131
|
+
lists as `completed` from `completion tail: deferred to program close` to
|
|
132
|
+
`done`; a refused or failed wrapper keeps its deferral with the reported
|
|
133
|
+
reason. When the companion stops with `interactive completion required`, the
|
|
134
|
+
operator completes the wrappers with `oat-project-complete`. List every
|
|
135
|
+
wrapper refused for a deferrable reason (`preflight:4` or `preflight:7`)
|
|
136
|
+
with its next step: the operator completes it with `oat-project-complete`,
|
|
137
|
+
or sets the missing config and answers the checkpoint again. A wrapper
|
|
138
|
+
refused for an objective reason keeps its deferral and reports the failing
|
|
139
|
+
check. On no or defer,
|
|
140
|
+
record the standing deferral and its owner in the program ledger.
|
|
132
141
|
This is the program completion gate; never answer it autonomously or repeat
|
|
133
142
|
it once per wave.
|
|
134
143
|
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: false
|
|
|
6
6
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
7
7
|
user-invocable: true
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.0.
|
|
9
|
+
version: 1.0.4
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Wrap-Up
|
|
@@ -365,7 +365,13 @@ so I can review before committing it.
|
|
|
365
365
|
- Automation patterns (Claude Code `CronCreate`, Codex host scheduling, plain cron): `references/automation-recipes.md`
|
|
366
366
|
- Prerequisite command: `oat repo archive sync` at `packages/cli/src/commands/repo/archive/index.ts`
|
|
367
367
|
- Merged-PR query pattern: `packages/cli/src/commands/repo/pr-comments/collect/collect-comments.ts:198-205`
|
|
368
|
-
- Summary frontmatter schema: `.oat/templates
|
|
368
|
+
- Summary frontmatter schema: the `summary` template, resolved through the repository, user, then bundled tier. Run `oat template resolve summary --json` and read the reported `path`. A user-scope-only install has no repository `.oat/templates/`, and the bundle tier reports `"path": null`; in that case copy it to a scratch file and read the copy:
|
|
369
|
+
|
|
370
|
+
```bash
|
|
371
|
+
SUMMARY_TEMPLATE_DIR="$(mktemp -d)"
|
|
372
|
+
oat template resolve summary --output "$SUMMARY_TEMPLATE_DIR/summary.md"
|
|
373
|
+
```
|
|
374
|
+
|
|
369
375
|
- Config key: `archive.wrapUpExportPath` (managed via `oat config set archive.wrapUpExportPath <path>`)
|
|
370
376
|
|
|
371
377
|
## Troubleshooting
|
|
@@ -394,7 +400,7 @@ so I can review before committing it.
|
|
|
394
400
|
|
|
395
401
|
**"Shipped via OAT projects" is empty or "Other merged PRs" contains PRs that clearly correspond to included summaries (false negative):**
|
|
396
402
|
|
|
397
|
-
- Step 7's cross-reference logic is strict: it only claims a PR for a summary when the summary body literally contains the PR number (`#<n>`, `github.com/.../pull/<n>`, or a bare PR number adjacent to keywords like "PR", "merged", "ships in"), or when a sibling `pr/` directory inside the project references the PR. OAT summaries as authored today (see
|
|
403
|
+
- Step 7's cross-reference logic is strict: it only claims a PR for a summary when the summary body literally contains the PR number (`#<n>`, `github.com/.../pull/<n>`, or a bare PR number adjacent to keywords like "PR", "merged", "ships in"), or when a sibling `pr/` directory inside the project references the PR. OAT summaries as authored today (see the `summary` template, resolved as in Reference) do not inline PR numbers, so in repos that have not adopted the convention of citing PRs in summaries, the cross-reference will often find zero matches and all merged PRs will land in "Other merged PRs".
|
|
398
404
|
- **Workaround options (author-time)**: add a short "Associated PRs" section to project summaries and list PR numbers inline, OR populate `pr/` under each project directory with PR metadata so the sibling scan has data to match against.
|
|
399
405
|
- **Workaround options (report-time)**: manually re-read the generated report; move PRs from "Other merged PRs" into "Shipped via OAT projects" by hand if the correspondence is obvious (matching keywords in the PR title and the summary's What Was Implemented section). The skill is designed to produce an editable draft, not a final release note.
|
|
400
406
|
- This is a v1 limitation. Future versions may add a looser heuristic (e.g., title-keyword matching, commit-to-project mapping via `git log`) to close the gap.
|
|
@@ -63,7 +63,7 @@ generated_at: YYYY-MM-DDTHH:MM:SSZ
|
|
|
63
63
|
|
|
64
64
|
## Section omission rule
|
|
65
65
|
|
|
66
|
-
Apply the same rule as
|
|
66
|
+
Apply the same rule as the `summary` template (resolve it with `oat template resolve summary`, as in the skill's Reference section): **omit any section with no content**. Do not leave empty sections or "None" placeholders. The minimum viable wrap-up is `# Wrap-up` + `## TL;DR` + one of (`Features introduced` | `Bug fixes` | `Shipped via OAT projects` | `Other merged PRs`) + `Included summaries (provenance)`.
|
|
67
67
|
|
|
68
68
|
If the window is completely empty (no summaries, no merged PRs), still write the file (or stdout) with:
|
|
69
69
|
|
|
@@ -393,9 +393,24 @@ canonical JSON. Any edited, injected, duplicated, or unprojected field differs
|
|
|
393
393
|
(`REVIEW_BRIEF_MISMATCH`), so a brief cannot carry an injected claim, note, or
|
|
394
394
|
source. Each review's dispositions must be unique and name claims its brief
|
|
395
395
|
lists. The brief `id` is a lowercase slug of at most 64 characters and
|
|
396
|
-
`createdAt` a UTC ISO-8601 instant. A
|
|
397
|
-
|
|
398
|
-
|
|
396
|
+
`createdAt` a UTC ISO-8601 instant. A `verified` claim needs the affirming
|
|
397
|
+
disposition of every review kind the achieved profile requires, and
|
|
398
|
+
reconciliation and publication read the one rule
|
|
399
|
+
(`requiredReviewKindsForProfile` in `scripts/lib/contracts.mjs`):
|
|
400
|
+
|
|
401
|
+
- `semantic` (`affirmed`), `adversarial` (`unchallenged`), and `coverage`
|
|
402
|
+
(`covered`) are required at `standard` and `thorough`.
|
|
403
|
+
- `redundant-verification` (`affirmed`) is also required at `thorough`. The
|
|
404
|
+
reconciler requires it whenever a complete same-run result is incorporated,
|
|
405
|
+
because only a complete redundant-verification pass achieves `thorough`.
|
|
406
|
+
- `contradiction-resolution` is conditional and never required; a `rejected`
|
|
407
|
+
disposition still makes a claim `unsupported`.
|
|
408
|
+
|
|
409
|
+
A claim any required review leaves without a disposition stays `unresolved`,
|
|
410
|
+
like an `uncertain` one, so the packet publishes as an honest `complete` or
|
|
411
|
+
`partial` instead of failing with `MISSING_INDEPENDENT_REVIEW`. `packet.md`
|
|
412
|
+
lists it under Review Downgrades: as not reviewed when the review's brief
|
|
413
|
+
listed the claim, and as outside its brief when it did not.
|
|
399
414
|
All reject dossier paths, compiler reasoning, synthesis prose, provenance
|
|
400
415
|
references, and prior review IDs.
|
|
401
416
|
|
|
@@ -2281,8 +2281,9 @@ function validateReviewBriefArtifact(value, errors) {
|
|
|
2281
2281
|
}
|
|
2282
2282
|
|
|
2283
2283
|
// The affirming disposition each review kind gives a claim it supports. The
|
|
2284
|
-
// first three are
|
|
2285
|
-
//
|
|
2284
|
+
// first three are required for `verified` at every reviewed profile
|
|
2285
|
+
// (`requiredReviewKindsForProfile` adds the thorough kind). The reconciler,
|
|
2286
|
+
// the validator, and the renderer all read this one table.
|
|
2286
2287
|
export const affirmingDispositionByReviewKind = Object.freeze({
|
|
2287
2288
|
semantic: 'affirmed',
|
|
2288
2289
|
adversarial: 'unchallenged',
|
|
@@ -2297,6 +2298,19 @@ export const requiredReviewKinds = Object.freeze([
|
|
|
2297
2298
|
'coverage',
|
|
2298
2299
|
]);
|
|
2299
2300
|
|
|
2301
|
+
// The review kinds whose affirming disposition a `verified` claim needs at the
|
|
2302
|
+
// given achieved profile: the core reviews, plus redundant verification at
|
|
2303
|
+
// `thorough`. Contradiction resolution is conditional and never required.
|
|
2304
|
+
// Reconciliation, publication, and the renderer all read this one rule, so a
|
|
2305
|
+
// claim any required kind leaves without a disposition stays below `verified`
|
|
2306
|
+
// everywhere.
|
|
2307
|
+
export function requiredReviewKindsForProfile(profile) {
|
|
2308
|
+
return Object.freeze([
|
|
2309
|
+
...requiredReviewKinds,
|
|
2310
|
+
...(profile === 'thorough' ? ['redundant-verification'] : []),
|
|
2311
|
+
]);
|
|
2312
|
+
}
|
|
2313
|
+
|
|
2300
2314
|
// `unresolvedIssues` entries are a closed union:
|
|
2301
2315
|
// - a string (legacy), read as a global issue;
|
|
2302
2316
|
// - `{ text, claimIds }`, scoped to a non-empty list of unique claims the
|
|
@@ -15,6 +15,7 @@ import { isDirectExecution } from './lib/cli-entry.mjs';
|
|
|
15
15
|
import {
|
|
16
16
|
affirmingDispositionByReviewKind,
|
|
17
17
|
requiredReviewKinds,
|
|
18
|
+
requiredReviewKindsForProfile,
|
|
18
19
|
unresolvedIssuesBlockClaim,
|
|
19
20
|
validateArtifactShape,
|
|
20
21
|
} from './lib/contracts.mjs';
|
|
@@ -25,13 +26,6 @@ import {
|
|
|
25
26
|
assertUnchangedRoot,
|
|
26
27
|
} from './lib/safe-path.mjs';
|
|
27
28
|
|
|
28
|
-
const requiredDispositions = new Map(
|
|
29
|
-
requiredReviewKinds.map((kind) => [
|
|
30
|
-
kind,
|
|
31
|
-
affirmingDispositionByReviewKind[kind],
|
|
32
|
-
]),
|
|
33
|
-
);
|
|
34
|
-
|
|
35
29
|
const permittedDispositions = new Map([
|
|
36
30
|
['semantic', new Set(['affirmed', 'rejected', 'uncertain'])],
|
|
37
31
|
['adversarial', new Set(['unchallenged', 'challenged'])],
|
|
@@ -99,7 +93,7 @@ export function reconcileLedger({
|
|
|
99
93
|
const reviews = new Map(
|
|
100
94
|
reviewResults.map((review) => [review.reviewKind, review]),
|
|
101
95
|
);
|
|
102
|
-
for (const
|
|
96
|
+
for (const kind of requiredReviewKinds) {
|
|
103
97
|
const review = reviews.get(kind);
|
|
104
98
|
if (!review || review.runId !== runId || review.status !== 'complete') {
|
|
105
99
|
throw new Error(`Reconciliation requires a complete ${kind} result`);
|
|
@@ -109,6 +103,22 @@ export function reconcileLedger({
|
|
|
109
103
|
throw new Error(`Reconciliation received an invalid ${kind} disposition`);
|
|
110
104
|
}
|
|
111
105
|
}
|
|
106
|
+
// A claim needs a disposition from every review kind publication requires
|
|
107
|
+
// for the achieved profile. The thorough profile is achieved only with a
|
|
108
|
+
// complete redundant-verification pass, so an incorporated complete result
|
|
109
|
+
// of that kind makes it required here too. Missing it keeps the claim
|
|
110
|
+
// `unresolved`, exactly like an `uncertain` disposition.
|
|
111
|
+
const achievesThorough = reviewResults.some(
|
|
112
|
+
(review) =>
|
|
113
|
+
review.reviewKind === 'redundant-verification' &&
|
|
114
|
+
review.runId === runId &&
|
|
115
|
+
review.status === 'complete',
|
|
116
|
+
);
|
|
117
|
+
const verifyingDispositions = new Map(
|
|
118
|
+
requiredReviewKindsForProfile(
|
|
119
|
+
achievesThorough ? 'thorough' : 'standard',
|
|
120
|
+
).map((kind) => [kind, affirmingDispositionByReviewKind[kind]]),
|
|
121
|
+
);
|
|
112
122
|
const ledger = exactClone(priorLedger);
|
|
113
123
|
ledger.revision = priorLedger.revision + 1;
|
|
114
124
|
ledger.inputArtifacts = [
|
|
@@ -244,7 +254,7 @@ export function reconcileLedger({
|
|
|
244
254
|
const issueBlocked = supporting.some((review) =>
|
|
245
255
|
unresolvedIssuesBlockClaim(review, claim.id),
|
|
246
256
|
);
|
|
247
|
-
const incomplete = [...
|
|
257
|
+
const incomplete = [...verifyingDispositions.keys()].some(
|
|
248
258
|
(kind) =>
|
|
249
259
|
!reviewResults.some(
|
|
250
260
|
(review) =>
|
|
@@ -267,7 +277,7 @@ export function reconcileLedger({
|
|
|
267
277
|
finding.material === true && finding.claimIds.includes(claim.id),
|
|
268
278
|
),
|
|
269
279
|
);
|
|
270
|
-
const coreComplete = [...
|
|
280
|
+
const coreComplete = [...verifyingDispositions].every(
|
|
271
281
|
([kind, disposition]) =>
|
|
272
282
|
supporting.some(
|
|
273
283
|
(review) =>
|
|
@@ -9,6 +9,7 @@ import { isDirectExecution } from './lib/cli-entry.mjs';
|
|
|
9
9
|
import {
|
|
10
10
|
affirmingDispositionByReviewKind,
|
|
11
11
|
classifyUnresolvedIssue,
|
|
12
|
+
requiredReviewKindsForProfile,
|
|
12
13
|
unresolvedIssuesBlockClaim,
|
|
13
14
|
} from './lib/contracts.mjs';
|
|
14
15
|
import { reviewBriefEntries } from './lib/review-binding.mjs';
|
|
@@ -151,17 +152,35 @@ function omittedReviews(claimId, reviews) {
|
|
|
151
152
|
.map(({ value }) => value);
|
|
152
153
|
}
|
|
153
154
|
|
|
155
|
+
// Every incorporated review of a kind the achieved profile requires whose
|
|
156
|
+
// brief did not list `claimId`, so it gave the claim no disposition. Such a
|
|
157
|
+
// claim cannot be verified, and the reason is the missing review, not an
|
|
158
|
+
// omission by the reviewer.
|
|
159
|
+
function unbriefedRequiredReviews(claimId, reviews, requiredKinds) {
|
|
160
|
+
return reviews
|
|
161
|
+
.filter(
|
|
162
|
+
({ value, briefed }) =>
|
|
163
|
+
requiredKinds.includes(value.reviewKind) &&
|
|
164
|
+
!briefed.has(claimId) &&
|
|
165
|
+
!(value.dispositions ?? []).some((item) => item.claimId === claimId),
|
|
166
|
+
)
|
|
167
|
+
.map(({ value }) => value);
|
|
168
|
+
}
|
|
169
|
+
|
|
154
170
|
function issueText(entry) {
|
|
155
171
|
return typeof entry === 'string' ? entry : (entry?.text ?? '');
|
|
156
172
|
}
|
|
157
173
|
|
|
158
174
|
// Every claim an incorporated review kept below `verified` (an unresolved
|
|
159
175
|
// issue that applies to it, a coverage finding that names it, a
|
|
160
|
-
// non-affirming disposition,
|
|
161
|
-
// without a disposition
|
|
176
|
+
// non-affirming disposition, an assurance review that left a briefed claim
|
|
177
|
+
// without a disposition, or a review the achieved profile requires whose
|
|
178
|
+
// brief left the claim out), with the review's own words. Key-claim status
|
|
162
179
|
// alone would let a `complete` packet hide a downgraded non-key claim.
|
|
163
180
|
function reviewDowngradeLines(validatedRun) {
|
|
164
|
-
const { ledger, artifacts, assuranceReviewIds } =
|
|
181
|
+
const { ledger, artifacts, assuranceReviewIds, achievedProfile } =
|
|
182
|
+
validatedRun;
|
|
183
|
+
const requiredKinds = requiredReviewKindsForProfile(achievedProfile);
|
|
165
184
|
const assurance = new Set(assuranceReviewIds);
|
|
166
185
|
const reviews = artifacts
|
|
167
186
|
.map(({ value }) => value)
|
|
@@ -214,6 +233,15 @@ function reviewDowngradeLines(validatedRun) {
|
|
|
214
233
|
`${review.reviewKind} review: not reviewed (no disposition)`,
|
|
215
234
|
);
|
|
216
235
|
}
|
|
236
|
+
for (const review of unbriefedRequiredReviews(
|
|
237
|
+
claim.id,
|
|
238
|
+
briefedReviews,
|
|
239
|
+
requiredKinds,
|
|
240
|
+
)) {
|
|
241
|
+
reasons.push(
|
|
242
|
+
`${review.reviewKind} review: outside its brief (no disposition)`,
|
|
243
|
+
);
|
|
244
|
+
}
|
|
217
245
|
for (const review of reviews) {
|
|
218
246
|
for (const finding of review.coverageFindings ?? []) {
|
|
219
247
|
if (!finding.claimIds.includes(claim.id)) continue;
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
isObject,
|
|
13
13
|
issue,
|
|
14
14
|
profiles,
|
|
15
|
-
|
|
15
|
+
requiredReviewKindsForProfile,
|
|
16
16
|
unresolvedIssuesBlockClaim,
|
|
17
17
|
validateArtifactShape,
|
|
18
18
|
} from './lib/contracts.mjs';
|
|
@@ -2082,10 +2082,10 @@ function validateAssurance(validatedRun, errors, checkBrief) {
|
|
|
2082
2082
|
);
|
|
2083
2083
|
}
|
|
2084
2084
|
const required = new Map(
|
|
2085
|
-
[
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
]
|
|
2085
|
+
requiredReviewKindsForProfile(achievedProfile).map((kind) => [
|
|
2086
|
+
kind,
|
|
2087
|
+
affirmingDispositionByReviewKind[kind],
|
|
2088
|
+
]),
|
|
2089
2089
|
);
|
|
2090
2090
|
const satisfied = new Set();
|
|
2091
2091
|
const reviewerLanes = new Set();
|
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
DocsPage,
|
|
3
|
+
Mermaid,
|
|
4
|
+
Tab,
|
|
5
|
+
Tabs,
|
|
6
|
+
ZoomImage,
|
|
7
|
+
} from '@open-agent-toolkit/docs-theme';
|
|
2
8
|
import defaultComponents from 'fumadocs-ui/mdx';
|
|
3
9
|
import type { Metadata } from 'next';
|
|
4
10
|
import { notFound } from 'next/navigation';
|
|
5
11
|
|
|
6
12
|
import { source } from '@/lib/source';
|
|
7
13
|
|
|
8
|
-
const mdxComponents = {
|
|
14
|
+
const mdxComponents = {
|
|
15
|
+
...defaultComponents,
|
|
16
|
+
Mermaid,
|
|
17
|
+
Tab,
|
|
18
|
+
Tabs,
|
|
19
|
+
img: ZoomImage,
|
|
20
|
+
};
|
|
9
21
|
|
|
10
22
|
type PageProps = {
|
|
11
23
|
params: Promise<{ slug?: string[] }>;
|
|
@@ -75,6 +75,13 @@ oat_workflow_origin: native # native | imported
|
|
|
75
75
|
# receive_completed: false
|
|
76
76
|
# failure: null
|
|
77
77
|
# updated_at: '2026-07-18T00:00:00Z'
|
|
78
|
+
# decided_at: null # ISO 8601 UTC; set with every allowed or blocked outcome (core record: gate-approval-record.md)
|
|
79
|
+
# oat_quick_start_gate: # optional; persisted quick-start plan gate outcome, absent when no gate is configured (core record: gate-approval-record.md)
|
|
80
|
+
# status: allowed # allowed | blocked
|
|
81
|
+
# disposition: passed # passed | warned | prompt_approved | project_disabled; null when blocked
|
|
82
|
+
# config_fingerprint: '<stable hash of resolved gate declaration>'
|
|
83
|
+
# reviewed_head: null # full SHA of the commit the gate reviewed; provenance only
|
|
84
|
+
# decided_at: null # ISO 8601 UTC
|
|
78
85
|
oat_docs_updated: null # null | skipped | complete — documentation sync status
|
|
79
86
|
oat_pr_status: null # null | ready | open | closed | merged — actual PR state for the current project
|
|
80
87
|
oat_pr_url: null # null | string — tracked PR URL when a PR exists
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIhF,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAoBzC,OAAO,EASL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,EAQnB,KAAK,UAAU,EAqBhB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAIzB,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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -94,6 +94,7 @@ const KEY_ORDER = [
|
|
|
94
94
|
'workflow.hillCheckpointDefault',
|
|
95
95
|
'workflow.archiveOnComplete',
|
|
96
96
|
'workflow.createPrOnComplete',
|
|
97
|
+
'workflow.autonomousComplete',
|
|
97
98
|
'workflow.postImplementSequence',
|
|
98
99
|
'workflow.retro.filing.repo',
|
|
99
100
|
'workflow.retro.filing.upstream',
|
|
@@ -600,6 +601,17 @@ const CONFIG_CATALOG = [
|
|
|
600
601
|
owningCommand: 'oat config set workflow.createPrOnComplete <true|false>',
|
|
601
602
|
description: 'Skip the "Open a PR?" prompt in oat-project-complete. When true, completion auto-triggers PR creation. Resolution: local > shared > user > default.',
|
|
602
603
|
},
|
|
604
|
+
{
|
|
605
|
+
key: 'workflow.autonomousComplete',
|
|
606
|
+
group: 'Workflow Preferences (3-layer: local > shared > user)',
|
|
607
|
+
file: '.oat/config.local.json | .oat/config.json | ~/.oat/config.json',
|
|
608
|
+
scope: 'workflow',
|
|
609
|
+
type: 'boolean',
|
|
610
|
+
defaultValue: 'false',
|
|
611
|
+
mutability: 'read/write',
|
|
612
|
+
owningCommand: 'oat config set workflow.autonomousComplete <true|false>',
|
|
613
|
+
description: 'Standing opt-in for oat-project-complete-auto, the non-interactive completion companion that runs only when a workflow names it as a step (today oat-wave-execute closeout step 8 and the oat-wave-program completion checkpoint); its OAT_AUTONOMOUS lifecycle route refuses until a lifecycle skill names the companion, and none does today. When false (the default), that skill stops with "interactive completion required". The interactive oat-project-complete is unaffected. Resolution: local > shared > user > default.',
|
|
614
|
+
},
|
|
603
615
|
{
|
|
604
616
|
key: 'workflow.postImplementSequence',
|
|
605
617
|
group: 'Workflow Preferences (3-layer: local > shared > user)',
|
|
@@ -1089,6 +1101,7 @@ function closedDispatchProviderValues(provider) {
|
|
|
1089
1101
|
const WORKFLOW_BOOLEAN_KEYS = new Set([
|
|
1090
1102
|
'workflow.archiveOnComplete',
|
|
1091
1103
|
'workflow.createPrOnComplete',
|
|
1104
|
+
'workflow.autonomousComplete',
|
|
1092
1105
|
'workflow.autoReviewAtHillCheckpoints',
|
|
1093
1106
|
'workflow.autoNarrowReReviewScope',
|
|
1094
1107
|
'workflow.autoArtifactReview.plan',
|
|
@@ -30,6 +30,7 @@ interface GateCommandDependencies {
|
|
|
30
30
|
processEnv: NodeJS.ProcessEnv;
|
|
31
31
|
writeGateRunMarker: (path: string, marker: GateRunMarker, warn: (message: string) => void) => Promise<boolean>;
|
|
32
32
|
removeGateRunMarker: (path: string, warn: (message: string) => void) => Promise<void>;
|
|
33
|
+
isProcessAlive: (pid: number) => boolean;
|
|
33
34
|
writeGateProjectLogReceipt: (path: string, receipt: GateProjectLogReceipt, warn: (message: string) => void) => Promise<boolean>;
|
|
34
35
|
sleep: (ms: number) => Promise<void>;
|
|
35
36
|
writeDiagnostic: (message: string) => void;
|
|
@@ -42,6 +43,10 @@ interface GateRunMarker {
|
|
|
42
43
|
reviewType: string | null;
|
|
43
44
|
reviewScope: string | null;
|
|
44
45
|
project: string;
|
|
46
|
+
/** Absolute, symlink-resolved project directory. */
|
|
47
|
+
projectRoot: string;
|
|
48
|
+
/** The gate process that owns the marker. */
|
|
49
|
+
pid: number;
|
|
45
50
|
startedAt: string;
|
|
46
51
|
budgetMs: number;
|
|
47
52
|
budgetSource: GateTimeoutSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/gate/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/gate/index.ts"],"names":[],"mappings":"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"}
|