@open-agent-toolkit/cli 0.1.72 → 0.1.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +1 -0
  2. package/assets/config/dispatch-matrix-recommendation.json +13 -17
  3. package/assets/docs/cli-utilities/configuration.md +42 -60
  4. package/assets/docs/cli-utilities/index.md +1 -0
  5. package/assets/docs/cli-utilities/project-log.md +183 -0
  6. package/assets/docs/cli-utilities/workflow-gates.md +38 -2
  7. package/assets/docs/provider-sync/providers.md +15 -17
  8. package/assets/docs/reference/cli-reference.md +1 -0
  9. package/assets/docs/workflows/projects/artifacts.md +1 -1
  10. package/assets/docs/workflows/projects/dispatch-ceiling.md +29 -33
  11. package/assets/docs/workflows/projects/implementation-execution.md +7 -4
  12. package/assets/docs/workflows/projects/lifecycle.md +4 -3
  13. package/assets/public-package-versions.json +4 -4
  14. package/assets/skills/oat-dispatch-subagents/SKILL.md +1 -1
  15. package/assets/skills/oat-dispatch-subagents/references/provider-cursor.md +27 -15
  16. package/assets/skills/oat-project-autonomous/SKILL.md +1 -1
  17. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +4 -3
  18. package/assets/skills/oat-project-complete/SKILL.md +60 -1
  19. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +4 -3
  20. package/assets/skills/oat-project-implement/SKILL.md +18 -2
  21. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +17 -15
  22. package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +15 -9
  23. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +4 -3
  24. package/assets/skills/oat-project-implement/references/phase-execution.md +11 -5
  25. package/assets/skills/oat-project-import-plan/SKILL.md +30 -8
  26. package/assets/skills/oat-project-plan/SKILL.md +30 -8
  27. package/assets/skills/oat-project-plan-writing/SKILL.md +12 -9
  28. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +4 -3
  29. package/assets/skills/oat-project-quick-start/SKILL.md +30 -8
  30. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +4 -3
  31. package/assets/skills/oat-project-review-provide/SKILL.md +19 -11
  32. package/assets/skills/oat-project-review-provide-remote/SKILL.md +27 -4
  33. package/assets/skills/oat-project-summary/SKILL.md +122 -18
  34. package/assets/templates/project-log.md +47 -0
  35. package/dist/commands/config/index.d.ts.map +1 -1
  36. package/dist/commands/config/index.js +41 -0
  37. package/dist/commands/doctor/index.d.ts +2 -1
  38. package/dist/commands/doctor/index.d.ts.map +1 -1
  39. package/dist/commands/doctor/index.js +37 -1
  40. package/dist/commands/gate/index.d.ts +3 -1
  41. package/dist/commands/gate/index.d.ts.map +1 -1
  42. package/dist/commands/gate/index.js +134 -7
  43. package/dist/commands/init/index.d.ts +1 -1
  44. package/dist/commands/init/index.d.ts.map +1 -1
  45. package/dist/commands/init/index.js +40 -8
  46. package/dist/commands/init/tools/shared/skill-manifest.d.ts +1 -1
  47. package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
  48. package/dist/commands/init/tools/shared/skill-manifest.js +1 -0
  49. package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
  50. package/dist/commands/project/dispatch-ceiling/index.js +17 -9
  51. package/dist/commands/project/index.d.ts.map +1 -1
  52. package/dist/commands/project/index.js +2 -0
  53. package/dist/commands/project/log/append.d.ts +41 -0
  54. package/dist/commands/project/log/append.d.ts.map +1 -0
  55. package/dist/commands/project/log/append.js +241 -0
  56. package/dist/commands/project/log/check.d.ts +66 -0
  57. package/dist/commands/project/log/check.d.ts.map +1 -0
  58. package/dist/commands/project/log/check.js +194 -0
  59. package/dist/commands/project/log/grammar.d.ts +28 -0
  60. package/dist/commands/project/log/grammar.d.ts.map +1 -0
  61. package/dist/commands/project/log/grammar.js +31 -0
  62. package/dist/commands/project/log/index.d.ts +9 -0
  63. package/dist/commands/project/log/index.d.ts.map +1 -0
  64. package/dist/commands/project/log/index.js +13 -0
  65. package/dist/commands/project/log/rollup.d.ts +40 -0
  66. package/dist/commands/project/log/rollup.d.ts.map +1 -0
  67. package/dist/commands/project/log/rollup.js +203 -0
  68. package/dist/commands/project/log/synthesize.d.ts +23 -0
  69. package/dist/commands/project/log/synthesize.d.ts.map +1 -0
  70. package/dist/commands/project/log/synthesize.js +112 -0
  71. package/dist/commands/project/new/index.d.ts +1 -0
  72. package/dist/commands/project/new/index.d.ts.map +1 -1
  73. package/dist/commands/project/new/index.js +7 -0
  74. package/dist/commands/project/new/scaffold.d.ts +1 -0
  75. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  76. package/dist/commands/project/new/scaffold.js +24 -0
  77. package/dist/commands/shared/codex-strays.d.ts +9 -0
  78. package/dist/commands/shared/codex-strays.d.ts.map +1 -1
  79. package/dist/commands/shared/codex-strays.js +4 -0
  80. package/dist/commands/status/index.d.ts +7 -1
  81. package/dist/commands/status/index.d.ts.map +1 -1
  82. package/dist/commands/status/index.js +53 -17
  83. package/dist/commands/sync/apply.d.ts.map +1 -1
  84. package/dist/commands/sync/apply.js +50 -24
  85. package/dist/commands/sync/dry-run.d.ts.map +1 -1
  86. package/dist/commands/sync/dry-run.js +31 -18
  87. package/dist/commands/sync/index.d.ts.map +1 -1
  88. package/dist/commands/sync/index.js +34 -25
  89. package/dist/commands/sync/sync.types.d.ts +26 -11
  90. package/dist/commands/sync/sync.types.d.ts.map +1 -1
  91. package/dist/commands/sync/sync.utils.d.ts.map +1 -1
  92. package/dist/commands/sync/sync.utils.js +3 -2
  93. package/dist/config/oat-config.d.ts +3 -0
  94. package/dist/config/oat-config.d.ts.map +1 -1
  95. package/dist/config/oat-config.js +7 -0
  96. package/dist/config/resolve.d.ts.map +1 -1
  97. package/dist/config/resolve.js +2 -0
  98. package/dist/engine/index.d.ts +1 -1
  99. package/dist/engine/index.d.ts.map +1 -1
  100. package/dist/engine/index.js +1 -1
  101. package/dist/engine/scanner.d.ts +3 -1
  102. package/dist/engine/scanner.d.ts.map +1 -1
  103. package/dist/engine/scanner.js +4 -2
  104. package/dist/providers/ceiling/registry.d.ts +2 -0
  105. package/dist/providers/ceiling/registry.d.ts.map +1 -1
  106. package/dist/providers/ceiling/registry.js +20 -4
  107. package/dist/providers/codex/codec/sync-extension.d.ts +11 -10
  108. package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
  109. package/dist/providers/codex/codec/sync-extension.js +42 -14
  110. package/dist/providers/cursor/codec/catalog.d.ts +18 -0
  111. package/dist/providers/cursor/codec/catalog.d.ts.map +1 -0
  112. package/dist/providers/cursor/codec/catalog.js +39 -0
  113. package/dist/providers/cursor/codec/materialize.d.ts +24 -0
  114. package/dist/providers/cursor/codec/materialize.d.ts.map +1 -0
  115. package/dist/providers/cursor/codec/materialize.js +166 -0
  116. package/dist/providers/cursor/codec/shared.d.ts +14 -0
  117. package/dist/providers/cursor/codec/shared.d.ts.map +1 -0
  118. package/dist/providers/cursor/codec/shared.js +76 -0
  119. package/dist/providers/cursor/codec/sync-extension.d.ts +37 -0
  120. package/dist/providers/cursor/codec/sync-extension.d.ts.map +1 -0
  121. package/dist/providers/cursor/codec/sync-extension.js +393 -0
  122. package/dist/providers/cursor/index.d.ts +3 -0
  123. package/dist/providers/cursor/index.d.ts.map +1 -1
  124. package/dist/providers/cursor/index.js +3 -0
  125. package/dist/providers/identity/availability.d.ts +7 -0
  126. package/dist/providers/identity/availability.d.ts.map +1 -1
  127. package/dist/providers/identity/availability.js +23 -0
  128. package/dist/providers/shared/index.d.ts +2 -0
  129. package/dist/providers/shared/index.d.ts.map +1 -1
  130. package/dist/providers/shared/index.js +1 -0
  131. package/dist/providers/shared/materialization-extension.d.ts +44 -0
  132. package/dist/providers/shared/materialization-extension.d.ts.map +1 -0
  133. package/dist/providers/shared/materialization-extension.js +26 -0
  134. package/package.json +2 -2
@@ -194,8 +194,10 @@ candidate in each tier:
194
194
  `max`.
195
195
  - **Claude:** `haiku`, `sonnet`, `opus`, and `fable` across the ordered named
196
196
  tiers.
197
- - **Cursor:** opaque strings corresponding to the same 13 configured positions.
198
- OAT does not parse those strings to infer family, effort, cost, or capability.
197
+ - **Cursor:** 12 verified multi-family flat IDs across Composer, Claude, GPT,
198
+ and Grok. The explicit materialization catalogue maps each flat ladder ID to
199
+ a separate bracket-form frontmatter model; OAT does not derive or normalize
200
+ either value.
199
201
 
200
202
  The final candidate in a named tier defines that tier's reviewer ceiling. Lower
201
203
  reviewer selection requires a separate reviewed contract; a normal reviewer
@@ -240,7 +242,7 @@ oat project dispatch-ceiling resolve \
240
242
  --provider cursor \
241
243
  --role implementer \
242
244
  --ceiling-tier high \
243
- --candidate-model 'opaque:model/balanced [v2]' \
245
+ --candidate-model gpt-5.6-sol-high \
244
246
  --json
245
247
  ```
246
248
 
@@ -280,45 +282,39 @@ branch replaces, rather than supplements, preferred selection.
280
282
  | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
281
283
  | Codex | Use `providers.codex.dispatchArgs.variant` as `agent_type`; otherwise launch a fresh child pinned to the returned model and effort | Block if neither exact route is usable |
282
284
  | Claude | Pass `providers.claude.dispatchArgs.model` as the actual Task `model` | Block if the model cannot be applied |
283
- | Cursor | Pass `providers.cursor.dispatchArgs.model` byte-for-byte as the actual invocation model; treat it as opaque | Block rather than normalize or substitute |
285
+ | Cursor | Launch `providers.cursor.dispatchArgs.variant` as the exact native agent type first | Block rather than normalize or substitute |
284
286
  | Other | Use a registered provider adapter when it can compile exact controls | Unsupported providers remain advisory |
285
287
 
286
- Materialized Codex roles exist before phase dispatch after project/user sync.
287
- The supported catalogue is committed project output; custom Codex candidates
288
- materialize according to config ownership. Workflow correctness still keeps a
289
- fresh pinned-child fallback and does not require provider restart or hot reload.
288
+ Materialized Codex and Cursor roles exist before phase dispatch after
289
+ project/user sync. Cursor definitions carry `supported-catalogue`,
290
+ `project-config`, or `user-config` ownership. Project and supported variants
291
+ are tracked under `.cursor/agents`; user variants live under
292
+ `~/.cursor/agents`. Cleanup stays within the current owner boundary.
290
293
 
291
294
  Reviewers use the final candidate at the configured review ceiling. Managed
292
295
  `Uncapped` and explicit inherit/default behavior retain their documented base
293
296
  reviewer behavior. A timeout retry preserves the same exact role or complete
294
- Claude/Cursor model payload.
297
+ Claude model payload or Cursor native variant.
295
298
 
296
299
  ### Cursor evidence authority
297
300
 
298
- Cursor resolution and runtime evidence answer different questions. Resolution
299
- proves which opaque candidate OAT requested. A stream-JSON Task start and
300
- correlated completion prove launcher behavior only when the model argument is
301
- preserved byte-for-byte. An accepted Task plus the child sentinel establishes
302
- argument eligibility for that account and client; a structured rejection can
303
- establish `unknown-value`. Runtime producer identity remains `not-reported`
304
- unless trusted Cursor telemetry or Cursor support independently confirms it.
305
-
306
- The [2026-07-11 GPT-5.6 evidence record](https://github.com/voxmedia/open-agent-toolkit/blob/main/.oat/repo/reference/project-summaries/20260711-cursor-gpt-5-6-subagent-verification.md)
307
- ran positive and negative controls before candidate probes. Neither control
308
- emitted a Task event, so the harness stopped without probing the 13 recommended
309
- arguments or exploratory `gpt-5.6-sol-high-fast`. This is a harness/account
310
- boundary, not model rejection, and it supports no recommendation change.
311
-
312
- The tracked artifact's structured second-pass block exposes only an allowlisted
313
- event projection and non-reversible identifier hashes. Exact
314
- request/session/tool-call IDs and credential-redacted unprojected streams from
315
- that pass stay in gitignored local project storage for support diagnosis.
316
-
317
- The same public artifact intentionally preserves the sanitized historical v1
318
- text-mode record for provenance. That older section includes command arguments
319
- and prompts, stdout and stderr, exit and duration data, and capture-environment
320
- details such as user-specific binary paths; it is not limited to the structured
321
- second-pass projection.
301
+ Cursor selection, pin mapping, catalogue availability, and runtime identity are
302
+ separate evidence layers:
303
+
304
+ - The candidate ladder and resolver use an opaque flat ID.
305
+ - The materialized definition uses the mapping's explicit bracket-form
306
+ frontmatter model.
307
+ - Mapping-specific native-launch evidence authorizes the shipped mapping data.
308
+ - `oat doctor` checks current flat-ID catalogue availability, which can detect
309
+ drift but cannot prove a definition pin.
310
+ - The launcher records the selected variant and mapped model with `configured`
311
+ provenance. Runtime identity remains `not-reported` without an independent
312
+ observation.
313
+
314
+ Cursor can silently fallback when account, plan, or administration constraints
315
+ prevent a requested definition pin. Native variant acceptance is therefore not
316
+ runtime-model verification, and skills must not promote self-report or
317
+ catalogue presence into observed identity.
322
318
 
323
319
  ## Phase and Optional-Worker Layers
324
320
 
@@ -126,10 +126,13 @@ needed, OAT does not probe or require third-tier capacity.
126
126
 
127
127
  Provider controls remain exact: Codex uses
128
128
  `providers.codex.dispatchArgs.variant`, Claude uses
129
- `providers.claude.dispatchArgs.model`, and Cursor treats
130
- `providers.cursor.dispatchArgs.model` as an opaque, byte-for-byte enforced model
131
- argument.
132
- For Cursor, opaque selection is enforced as a byte-for-byte model arg.
129
+ `providers.claude.dispatchArgs.model`, and Cursor uses
130
+ `providers.cursor.dispatchArgs.variant`. Cursor launches that exact
131
+ resolver-selected native agent type first; the flat ID and bracket-form pin
132
+ remain inside the explicit mapping and are never normalized by workflow prose.
133
+ The launcher records this selection as `configured`, while runtime identity
134
+ remains `not-reported` without independent observation. Only a pre-start native
135
+ role-selection rejection permits another target-preserving route.
133
136
 
134
137
  See [Dispatch Policy](dispatch-ceiling.md) for configuration and
135
138
  [Orchestration Model](orchestration-model.md) for the complete role map.
@@ -115,9 +115,10 @@ through the import-plan lane.
115
115
 
116
116
  A concrete managed reviewer remains bound across both tiers. Codex uses the
117
117
  exact registered role or a child pinned to the resolved model and effort;
118
- Claude and Cursor pass the exact resolver-returned `dispatchArgs.model` in the
119
- actual provider invocation, including retries. Tier 2 does not authorize a
120
- target downgrade. Inline review is allowed only with verified equivalent host
118
+ Claude passes the exact resolver-returned `dispatchArgs.model`; Cursor launches
119
+ the exact `providers.cursor.dispatchArgs.variant` native reviewer variant.
120
+ Retries preserve that complete target. Tier 2 does not authorize a target
121
+ downgrade. Inline review is allowed only with verified equivalent host
121
122
  controls, or for explicit inherit/default behavior or the documented
122
123
  managed-uncapped reviewer base-role exception; otherwise the review blocks.
123
124
 
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.1.72",
3
- "docs-config": "0.1.72",
4
- "docs-theme": "0.1.72",
5
- "docs-transforms": "0.1.72"
2
+ "cli": "0.1.74",
3
+ "docs-config": "0.1.74",
4
+ "docs-theme": "0.1.74",
5
+ "docs-transforms": "0.1.74"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-dispatch-subagents
3
- version: 1.1.3
3
+ version: 1.1.4
4
4
  description: Use when an OAT skill or workflow needs provider-neutral selection, launch, recovery, or evidence for bounded subagent work without project lifecycle policy.
5
5
  disable-model-invocation: true
6
6
  user-invocable: false
@@ -6,24 +6,35 @@ volatile snapshot, never a durable inventory.
6
6
 
7
7
  ## Control Surfaces
8
8
 
9
- | Source | Establishes | Does not establish |
10
- | ---------------------------- | --------------------------------------------------------- | -------------------------------------------------------------- |
11
- | Native Task/Subagent schema | Roles and opaque selectors for that dispatcher invocation | CLI account eligibility or another dispatcher's native catalog |
12
- | `cursor-agent --list-models` | Opaque selectors accepted by the account CLI | Native Task eligibility |
13
- | Cursor UI role configuration | User-selected defaults and role settings | Live root or nested schema without a new observation |
9
+ | Source | Establishes | Does not establish |
10
+ | ---------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- |
11
+ | Native Task/Subagent schema | Agent types available for that dispatcher invocation | CLI account eligibility or another dispatcher's native catalog |
12
+ | `cursor-agent --list-models` | Opaque flat model IDs accepted by the account CLI and resolver | Native Task eligibility or definition-pin acceptance |
13
+ | Cursor UI role configuration | User-selected defaults and role settings | Live root or nested schema without a new observation |
14
14
 
15
15
  Root and nested catalogs are independent, volatile observations. Equality in
16
16
  one run does not establish equality in another run or nesting boundary.
17
17
 
18
18
  ## Native Selection
19
19
 
20
- 1. Read the native model enum from the dispatcher that will launch the child.
21
- 2. Intersect configured candidates with that exact snapshot.
22
- 3. Pass the selected opaque string byte-for-byte.
23
- 4. Treat an omitted model as deliberate parent inheritance, not generic
24
- defaulting or evidence that a target was unavailable.
25
- 5. Record requested selector, acceptance, outcome, and runtime identity
26
- separately.
20
+ Managed Cursor dispatch resolves an opaque flat model ID through OAT's explicit
21
+ mapping and returns `providers.cursor.dispatchArgs.variant`. The mapping owns
22
+ the bracket-form model pin inside the materialized definition; skills must
23
+ never parse, normalize, or reconstruct either model string.
24
+
25
+ 1. Require a non-empty `providers.cursor.dispatchArgs.variant`.
26
+ 2. Launch that exact resolver-selected native agent type first.
27
+ 3. Treat native launch acceptance plus the complete launcher payload as
28
+ configured-invocation evidence, not observed runtime model identity.
29
+ 4. Permit a replacement route only after a recorded pre-start native
30
+ role-selection rejection of that exact variant, before any child starts.
31
+ 5. After acceptance, continue only through the existing handle. Timeout,
32
+ interruption, `BLOCKED`, missing telemetry, or self-report never authorizes
33
+ fallback or replacement.
34
+ 6. Treat an omitted variant as deliberate parent inheritance only when the
35
+ resolver selected no managed target.
36
+ 7. Record selected variant, mapped target, acceptance, outcome, and runtime
37
+ identity separately.
27
38
 
28
39
  Do not infer Cursor IDE behavior from a headless CLI surface. Keep bounded
29
40
  recon on economical explicit targets and reserve stronger targets for
@@ -52,12 +63,13 @@ verdict.
52
63
 
53
64
  ## Pre-Start CLI Routes
54
65
 
55
- When the current native intersection is absent or unsatisfactory, a caller may
56
- use a deliberate pre-start CLI route only when:
66
+ When exact native role selection rejects the resolver-selected variant before
67
+ launch, a caller may use a deliberate pre-start CLI route only when:
57
68
 
58
69
  - the caller's fallback policy allows it;
59
70
  - the exact CLI selector exists in the account catalog;
60
- - native mismatch, route, reason, and candidates are recorded before launch;
71
+ - the native mismatch, rejected variant, route, reason, and candidates are
72
+ recorded before launch;
61
73
  - the prompt is self-contained and authority-bounded.
62
74
 
63
75
  Verify current CLI help before use. A typical shape is:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-autonomous
3
- version: 1.0.3
3
+ version: 1.0.4
4
4
  description: Use when a user explicitly asks to run an OAT project autonomously end-to-end. Activates session-only autonomy, resumes the correct lifecycle phase, and drives the existing OAT skills through final PR or a reported boundary.
5
5
  argument-hint: '<goal | project-slug | ticket-ref>'
6
6
  disable-model-invocation: true
@@ -225,15 +225,15 @@ remains immutable baseline evidence for the original p01-t01 verification.
225
225
  | `oat-project-design/references/selective-review-pass.md` | `d4956192b82e -> DES-06`; `7d6e1f926ecb -> DES-06`; `04f918a5fcac -> DES-07` |
226
226
  | `oat-project-plan/SKILL.md` | `5eb3949f32e1 -> NG`; `64a08153bb9e -> NG`; `655d61df0a8f -> NG`; `56b37486f09d -> PLAN-01`; `cf317c17c586 -> PLAN-02`; `781643b0f2c3 -> NG`; `01fd7cca8253 -> PLAN-04`; `7bc7fa3f2cbb -> NG`; `da28ce0a5f2e -> NG`; `e334f94c4d35 -> NG`; `1fa55762c038 -> NG`; `c0935b5484a2 -> NG`; `6008163054f8 -> PLAN-05`; `571271f4d71b -> PLAN-06`; `746b760289e4 -> PLAN-06`; `de195590ff83 -> NG`; `49640510829a -> PLAN-07`; `4bef7afa7a71 -> PLAN-08`; `e5886632533e -> PLAN-08`; `4cfe1df14372 -> NG`; `d116c97a500c -> PLAN-10`; `aa62facff547 -> PLAN-10`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> PLAN-11`; `1734b2c85c5d -> NG`; `b4af2220eb91 -> PLAN-11` |
227
227
  | `oat-project-import-plan/SKILL.md` | `f7ca8635452f -> NG`; `c2e5fa410069 -> NG`; `655d61df0a8f -> NG`; `b137f73db20c -> IMPORT-01`; `45b699c1c0b5 -> IMPORT-01`; `ba6d120791c1 -> IMPORT-01`; `070ebc5259af -> IMPORT-03`; `c11552696e2e -> IMPORT-03`; `cfe661966baf -> IMPORT-04`; `baa91c0a0bf8 -> NG`; `e364e84b2702 -> NG`; `39031985a945 -> IMPORT-06`; `f106aa29a217 -> IMPORT-07`; `65038450aee3 -> IMPORT-07`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPORT-09` |
228
- | `oat-project-implement/SKILL.md` | `c6732295bc8c -> NG`; `ffb3af0ba8ef -> NG`; `e0355c7a05e9 -> IMPLEMENT-11+IMPLEMENT-13+IMPLEMENT-16`; `6296f41ae11c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> IMPLEMENT-01`; `8ce8a09feca4 -> NG` |
229
- | `oat-project-implement/references/completion-and-closeout.md` | `105600fbd045 -> IMPLEMENT-11`; `3e6055aede6c -> IMPLEMENT-11`; `0705f7533039 -> IMPLEMENT-11`; `0c39746f3cb5 -> IMPLEMENT-11`; `14d89fe39c8c -> IMPLEMENT-11`; `378a75543a72 -> IMPLEMENT-11`; `c7b25627e674 -> IMPLEMENT-11`; `51ef9a453323 -> IMPLEMENT-11`; `c67145e3fb00 -> IMPLEMENT-11`; `64fbeac64811 -> IMPLEMENT-11`; `19b13c17bddb -> NG`; `f7dab9c1f96c -> IMPLEMENT-12`; `c69c17a069a8 -> IMPLEMENT-14`; `a97fa5634a68 -> IMPLEMENT-14`; `3af58881811c -> IMPLEMENT-14`; `4203e1f49d0f -> IMPLEMENT-14`; `c3bd2458a3d3 -> IMPLEMENT-13`; `95b5eafc070d -> IMPLEMENT-13`; `25ecbe9c998b -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f6f24fd71da4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f18283bc1cf9 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `2c1ffc4a82dd -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `3454a07aa843 -> IMPLEMENT-16`; `0d86e2098cfb -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d5fe597d266f -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `55a152e944c1 -> IMPLEMENT-16`; `effac7cbd573 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d2a34d8b148 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d27462aaed26 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d52ecb17268 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `5b91aabe3757 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `fd0ad919f702 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `63bf28df1474 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a4ed471dbc78 -> IMPLEMENT-16`; `6b7a64cec6e5 -> IMPLEMENT-16`; `0a4fdba0ebc0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a5033c2aada5 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `e77609eddba0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `351156e8dde4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `51d45bd2bbd1 -> IMPLEMENT-16`; `f7796ffcc804 -> IMPLEMENT-16`; `990d730cb494 -> IMPLEMENT-16`; `6ed28bb7d384 -> IMPLEMENT-16`; `8b7d4b5bcf1b -> IMPLEMENT-16`; `88aad500e6e9 -> IMPLEMENT-16`; `877e3e3f9eda -> IMPLEMENT-16`; `fc03c97f834e -> IMPLEMENT-16`; `12939a3da5e0 -> IMPLEMENT-16`; `bdb418335a88 -> IMPLEMENT-16`; `fba97e596ebd -> IMPLEMENT-16`; `3d0b5e2f14f0 -> IMPLEMENT-17`; `f56a9ce88461 -> IMPLEMENT-17`; `9ba67b50d0ba -> IMPLEMENT-17`; `39ff911760af -> IMPLEMENT-17`; `5b560b5bd6e3 -> IMPLEMENT-17`; `fa21df5e5e01 -> IMPLEMENT-17`; `0fed77bec55e -> IMPLEMENT-17`; `6d81cfb0483f -> IMPLEMENT-17`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPLEMENT-18` |
228
+ | `oat-project-implement/SKILL.md` | `853d44621b72 -> NG`; `ffb3af0ba8ef -> NG`; `e0355c7a05e9 -> IMPLEMENT-11+IMPLEMENT-13+IMPLEMENT-16`; `6296f41ae11c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> IMPLEMENT-01`; `8ce8a09feca4 -> NG` |
229
+ | `oat-project-implement/references/completion-and-closeout.md` | `105600fbd045 -> IMPLEMENT-11`; `3e6055aede6c -> IMPLEMENT-11`; `0705f7533039 -> IMPLEMENT-11`; `0c39746f3cb5 -> IMPLEMENT-11`; `6d33ea58da2c -> IMPLEMENT-11`; `378a75543a72 -> IMPLEMENT-11`; `c7b25627e674 -> IMPLEMENT-11`; `51ef9a453323 -> IMPLEMENT-11`; `c67145e3fb00 -> IMPLEMENT-11`; `64fbeac64811 -> IMPLEMENT-11`; `19b13c17bddb -> NG`; `f7dab9c1f96c -> IMPLEMENT-12`; `c69c17a069a8 -> IMPLEMENT-14`; `a97fa5634a68 -> IMPLEMENT-14`; `3af58881811c -> IMPLEMENT-14`; `4203e1f49d0f -> IMPLEMENT-14`; `c3bd2458a3d3 -> IMPLEMENT-13`; `95b5eafc070d -> IMPLEMENT-13`; `25ecbe9c998b -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f6f24fd71da4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f18283bc1cf9 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `2c1ffc4a82dd -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `3454a07aa843 -> IMPLEMENT-16`; `0d86e2098cfb -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d5fe597d266f -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `55a152e944c1 -> IMPLEMENT-16`; `effac7cbd573 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d2a34d8b148 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d27462aaed26 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d52ecb17268 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `5b91aabe3757 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `fd0ad919f702 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `63bf28df1474 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a4ed471dbc78 -> IMPLEMENT-16`; `6b7a64cec6e5 -> IMPLEMENT-16`; `0a4fdba0ebc0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a5033c2aada5 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `e77609eddba0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `351156e8dde4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `51d45bd2bbd1 -> IMPLEMENT-16`; `f7796ffcc804 -> IMPLEMENT-16`; `990d730cb494 -> IMPLEMENT-16`; `6ed28bb7d384 -> IMPLEMENT-16`; `8b7d4b5bcf1b -> IMPLEMENT-16`; `88aad500e6e9 -> IMPLEMENT-16`; `877e3e3f9eda -> IMPLEMENT-16`; `fc03c97f834e -> IMPLEMENT-16`; `12939a3da5e0 -> IMPLEMENT-16`; `bdb418335a88 -> IMPLEMENT-16`; `fba97e596ebd -> IMPLEMENT-16`; `3d0b5e2f14f0 -> IMPLEMENT-17`; `f56a9ce88461 -> IMPLEMENT-17`; `9ba67b50d0ba -> IMPLEMENT-17`; `39ff911760af -> IMPLEMENT-17`; `5b560b5bd6e3 -> IMPLEMENT-17`; `fa21df5e5e01 -> IMPLEMENT-17`; `0fed77bec55e -> IMPLEMENT-17`; `6d81cfb0483f -> IMPLEMENT-17`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPLEMENT-18` |
230
230
  | `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`; `2df3adae4120 -> NG`; `e75df892b55c -> NG` |
231
231
  | `oat-project-implement/references/docs/autonomy-contract.md` | `* -> NG` |
232
232
  | `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10` |
233
233
  | `oat-project-implement/references/plan-and-resume.md` | `413829d31e32 -> IMPLEMENT-02`; `c7706cd8ad09 -> IMPLEMENT-03`; `a80a948df658 -> IMPLEMENT-03`; `b7ea139780ec -> IMPLEMENT-03+IMPLEMENT-04`; `8d438f2180ba -> IMPLEMENT-03`; `9e72e0518cda -> IMPLEMENT-03`; `3e177a1021e6 -> IMPLEMENT-03+IMPLEMENT-04`; `b59fc9eb9ce3 -> IMPLEMENT-03`; `a2b1d6855283 -> IMPLEMENT-03`; `44351a32e52a -> IMPLEMENT-03`; `b98b022f5523 -> IMPLEMENT-03`; `e9f5b949e214 -> IMPLEMENT-03`; `316fb6d9e980 -> IMPLEMENT-03`; `8b25a2c5c548 -> IMPLEMENT-03`; `1a59b1c0e705 -> IMPLEMENT-03`; `466cd562fc52 -> IMPLEMENT-03`; `083d896978d5 -> IMPLEMENT-03`; `f4ab11c13ae9 -> IMPLEMENT-03`; `7dc17ffcc1c4 -> IMPLEMENT-03`; `f731a90adabd -> IMPLEMENT-04`; `886ac01e7aa9 -> IMPLEMENT-04`; `b715db67df0c -> IMPLEMENT-04`; `2d9f26a539f3 -> IMPLEMENT-10`; `28384dee114f -> IMPLEMENT-05`; `f2591a4978b4 -> NG`; `8290823080b5 -> IMPLEMENT-06`; `f75789bf6c8e -> IMPLEMENT-07` |
234
234
  | `oat-project-document/SKILL.md` | `4fc2d8618208 -> NG`; `173a1c48e53c -> NG`; `40f8be47affa -> NG`; `3a3c390528f3 -> DOCUMENT-03`; `2a7ba093b315 -> DOCUMENT-02`; `252aabe44db2 -> DOCUMENT-02`; `3751172de299 -> DOCUMENT-02`; `b987a0697ba9 -> DOCUMENT-01`; `a06ff3ca7926 -> NG`; `0d04714ca9fc -> NG`; `f79af01d94c6 -> DOCUMENT-02`; `71634113c348 -> DOCUMENT-02`; `cdb707f5081e -> NG` |
235
235
  | `oat-project-document/references/docs/autonomy-contract.md` | `* -> NG` |
236
- | `oat-project-summary/SKILL.md` | `68c197c44c18 -> NG`; `c9b36a381b8e -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> SUMMARY-01`; `24f1f127f580 -> NG`; `626e6d6f4455 -> NG`; `f58150418ef5 -> NG`; `349f0a976a3a -> NG`; `c26231b8bb48 -> NG`; `ab1d4a57bebb -> NG`; `696bb6045b6a -> NG` |
236
+ | `oat-project-summary/SKILL.md` | `68c197c44c18 -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> SUMMARY-01`; `696bb6045b6a -> NG`; `bcb503aaefb5 -> NG`; `f3e49b727752 -> NG`; `f583e86359ae -> NG`; `e73bd88837ea -> NG`; `83257ff6cb68 -> NG`; `c8fced47ef8e -> NG`; `d7ea1e2a4f5f -> NG` |
237
237
  | `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `5eb3949f32e1 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
238
238
  | `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
239
239
  | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `ffcdc9d576c0 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `9497d9f94eed -> COMPLETE-01`; `7b59c728d3fb -> COMPLETE-01`; `48e10a9636fe -> COMPLETE-01`; `c0dad37fc166 -> COMPLETE-01`; `aa9a36243ec1 -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `12f7c30a54c8 -> NG`; `fffe5eea5ebd -> NG` |
@@ -248,6 +248,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
248
248
  | `oat-dispatch-subagents/references/provider-cursor.md` | `ca11e28923eb -> NG`; `be0a84c48fc0 -> NG` |
249
249
  | `oat-dispatch-subagents/references/record-schema.md` | `78f8069274a8 -> NG` |
250
250
  | `oat-project-dispatch-subagents/SKILL.md` | `eca03ad1ca12 -> PDISPATCH-01`; `59fbcdc79cea -> PDISPATCH-01` |
251
+ | `oat-project-complete/SKILL.md` | `b4934a85feee -> NG` |
251
252
 
252
253
  ## Prompt-scan comparison
253
254
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-complete
3
- version: 1.5.2
3
+ version: 1.5.3
4
4
  description: Use when all implementation work is finished and the project is ready to close. Marks the OAT project lifecycle as complete.
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
@@ -257,6 +257,62 @@ Check if `{PROJECT_PATH}/summary.md` exists and whether it is current against th
257
257
  - Used as source for the PR description (in Step 7)
258
258
  - Preserved in the archived project directory (in Step 8)
259
259
 
260
+ ### Step 3.6: Project Log Completion Gate
261
+
262
+ Run the project-log status probe before any lifecycle mutation or archive work:
263
+
264
+ ```bash
265
+ PROJECT_LOG_CHECK=$(oat project log check --project "$PROJECT_PATH" --json)
266
+ ```
267
+
268
+ Route on the structured result:
269
+
270
+ - `status: "absent"`: the feature is inert; proceed without a roll-up or seal
271
+ append.
272
+ - `status: "synthesis_pending"` or `synthesisPending: true`: emit
273
+ `Warning: Project-log end-of-run synthesis is pending. Complete it with oat project log synthesize.`
274
+ Offer to invoke `oat project log synthesize`, but do not block completion if
275
+ the synthesis remains pending. Synthesis is warn-only.
276
+ - When entry counts are nonzero, require a current `summary.md`. This hard gate
277
+ overrides Step 3.5's tolerance for declined, skipped, missing, or failed
278
+ summary generation: invoke `oat-project-summary` when available or author a
279
+ complete summary inline before continuing.
280
+
281
+ For a log with entries, reuse the summary flow's structured roll-up result only
282
+ when this completion run has that exact result in memory and it reports
283
+ `status: "ok"`. Otherwise run the idempotent enforcement surface:
284
+
285
+ ```bash
286
+ PROJECT_LOG_ROLLUP=$(oat project log rollup --project "$PROJECT_PATH" --json)
287
+ ```
288
+
289
+ Do not set lifecycle complete, seal, or archive unless the structured
290
+ `ProjectLogRollupResult` reports `status: "ok"`.
291
+
292
+ - `ledgerOutcome: "appended"` or `"deduplicated"` with `status: "ok"`:
293
+ proceed.
294
+ - `ledgerOutcome: "skipped_permitted"` with `status: "ok"`: proceed and report
295
+ the permitted skip; the absent default reference layer is not a block.
296
+ - `status: "failed"`, `ledgerOutcome: "failed"`, malformed JSON, or a command
297
+ error: stop and surface the roll-up failure. Never continue to seal or
298
+ archive.
299
+
300
+ When the status probe found an existing project log, append the completion seal
301
+ as the final project-log entry before any lifecycle-complete mutation:
302
+
303
+ ```bash
304
+ oat project log append \
305
+ --project "$PROJECT_PATH" \
306
+ --structural \
307
+ --producer oat-project-complete \
308
+ --ref seal \
309
+ --body "Completion sealed at $(date -u +%Y-%m-%dT%H:%M:%SZ); project-log roll-up status: ok."
310
+ ```
311
+
312
+ Only append this seal after Step 3.6 has either confirmed there are no entries
313
+ to roll up or obtained `status: "ok"`. If the append fails for an existing log,
314
+ stop before setting lifecycle complete or archiving. No project-log append may follow the seal.
315
+
260
316
  ### Step 4: Archive Residual Active Review Artifacts
261
317
 
262
318
  Detect any leftover active review artifacts in the top level of `"$PROJECT_PATH/reviews/"`:
@@ -356,6 +412,9 @@ Anti-pattern: do not "rescue" a dropped artifact by linking to its archived path
356
412
 
357
413
  **Skip if `SHOULD_ARCHIVE` is false or `IS_SHARED_PROJECT` is false.**
358
414
 
415
+ This conditional skips archive movement only; it does not skip the Step 3.6
416
+ seal append for an existing project log.
417
+
359
418
  Archive happens after PR description generation (so artifacts are readable at tracked paths) but before commit+push (so the archive deletion is included in the commit).
360
419
 
361
420
  The archive-side effects in this step are CLI-owned. Do not reimplement local archive movement, summary export, S3 sync, AWS credential handling, or worktree durability checks in the skill.