codex-workflow-v2 2.0.0-beta.11 → 2.0.0-beta.12.1
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/README.md +7 -6
- package/dist/src/alpha6/remediation.d.ts +7 -2
- package/dist/src/alpha6/remediation.js +361 -64
- package/dist/src/alpha6/remediation.js.map +1 -1
- package/dist/src/alpha6/review.d.ts +5 -0
- package/dist/src/alpha6/review.js +110 -2
- package/dist/src/alpha6/review.js.map +1 -1
- package/dist/src/cli.js +19 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +55 -0
- package/dist/src/dependency-provenance.js +5 -3
- package/dist/src/dependency-provenance.js.map +1 -1
- package/dist/src/reviewer.d.ts +26 -0
- package/dist/src/reviewer.js +54 -1
- package/dist/src/reviewer.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/src/workflow.d.ts +4 -1
- package/dist/src/workflow.js +163 -71
- package/dist/src/workflow.js.map +1 -1
- package/docs/autonomy-guardrails.md +43 -34
- package/docs/decisions.md +5 -4
- package/docs/delegated-approval.md +5 -4
- package/docs/development-flow.md +7 -6
- package/docs/lifecycle/state-machine-stabilization.md +1 -1
- package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
- package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
- package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
- package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +21 -9
- package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +15 -13
- package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +39 -24
- package/docs/release.md +8 -1
- package/docs/updating-existing-project.md +25 -0
- package/docs/validation-report.md +90 -115
- package/package.json +1 -1
- package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +1 -1
- package/plugins/codex-workflow-gateway/references/protocol.md +27 -8
- package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +23 -3
- package/references/state-machine.md +9 -8
- package/references/validation-and-review.md +11 -4
- package/schemas/review-result.schema.json +17 -1
- package/schemas/step-review-event.schema.json +15 -0
- package/schemas/stop-escalate-override-event.schema.json +45 -0
- package/scripts/generate-pdf-docs.py +2 -1
|
@@ -1,124 +1,99 @@
|
|
|
1
|
-
# V2 beta.
|
|
1
|
+
# V2 beta.12.1 Validation Report
|
|
2
2
|
|
|
3
|
-
Release candidate `2.0.0-beta.
|
|
3
|
+
Release candidate `2.0.0-beta.12.1` was validated on 2026-08-27 with Node.js 24.17.0.
|
|
4
4
|
|
|
5
5
|
## Automated release evidence
|
|
6
6
|
|
|
7
7
|
- `npm ci` completed from the committed lockfile with 0 reported vulnerabilities.
|
|
8
|
-
- The final `npm run validate` passed `
|
|
9
|
-
cancellations, or todos.
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
`
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
|
|
8
|
+
- The final `npm run validate` passed typecheck and `325/325` sequential tests with no failures,
|
|
9
|
+
skips, cancellations, or todos.
|
|
10
|
+
- Focused compatibility replay passed independently: dependency provenance plus Signal T04 and
|
|
11
|
+
legacy stop override tests passed `9/9`; the stop-only suite passed again after the final
|
|
12
|
+
observation-boundary hardening (`3/3`).
|
|
13
|
+
- `npm run pack:check` produced the beta.12.1 dry-run tarball with 270 files, package size 967.2 kB,
|
|
14
|
+
and unpacked size 3.8 MB. The sandboxed npm-cache attempt failed with `EPERM`; the authorized
|
|
15
|
+
retry using the same source passed.
|
|
16
|
+
- `npm run smoke:downstream` packed and installed the actual
|
|
17
|
+
`codex-workflow-v2-2.0.0-beta.12.1.tgz` in an empty temporary project and passed the packaged
|
|
18
|
+
handshake.
|
|
19
|
+
- `npm run plugin:check`, the official Codex plugin validator, the gateway skill validator,
|
|
20
|
+
`npm run docs:pdf:check`, exact
|
|
21
|
+
`RELEASE_TAG=v2.0.0-beta.12.1 npm run release:check`, and `git diff --check` passed. The official
|
|
22
|
+
Python validator required a temporary, isolated `PyYAML` dependency; no project or system Python
|
|
23
|
+
files were changed. The bundled gateway cachebuster is `0.1.0+codex.20260827132414`.
|
|
24
|
+
|
|
25
|
+
## Task-local dependency provenance compatibility
|
|
26
|
+
|
|
27
|
+
- Recovery still requires a clean local Task branch, no Step in progress, no lease or transaction,
|
|
28
|
+
exact runtime/declared/locked/installed/current/base version alignment, and one unregistered HEAD
|
|
29
|
+
that changes exactly `package.json` and `package-lock.json`.
|
|
30
|
+
- The false full-file equality check against the Milestone base was removed. Candidate parent and
|
|
31
|
+
HEAD are instead compared after removing only `codex-workflow-v2` dependency entries. Previously
|
|
32
|
+
committed Task-local manifest/lock fields therefore survive unchanged.
|
|
33
|
+
- A replay with a Task-local processing script is accepted and retains its recorded product commit.
|
|
34
|
+
A script added by the dependency candidate itself is rejected as payload drift; an extra product
|
|
35
|
+
file and stale base version are also rejected.
|
|
36
|
+
- The exact Signal T04 revision-26 fixture still proves that only a verified historical Step Review
|
|
37
|
+
can retain its completion commit across corrective replan. Pending review is never trusted, and a
|
|
38
|
+
corrupt strict-review hash chain is rejected.
|
|
39
|
+
|
|
40
|
+
## Human-confirmed beta.11 stop compatibility
|
|
41
|
+
|
|
42
|
+
- The route is available only for one historical shape under the unchanged Plan: exactly two
|
|
43
|
+
ordinary remediation events, one corrective third event, one matching attempt-3 `continue-fix`,
|
|
44
|
+
and one matching attempt-4 `stop-escalate`.
|
|
45
|
+
- `task stop-override-prepare` is read-only. It binds Task revision, Step, both decisions, all three
|
|
46
|
+
remediation events, Plan hash, Git HEAD, package version, human actor, and reason to an `SOO-*`
|
|
47
|
+
code. `task stop-override-apply` accepts only the same binding in a later explicit turn.
|
|
48
|
+
- Apply appends `stop-escalate-overrides.jsonl`; it does not edit the Task or delete/rewrite the
|
|
49
|
+
original corrective decision. Exact replay is idempotent.
|
|
50
|
+
- After apply, fresh `next` returns `task run` for the same Step and the fourth attempt actually
|
|
51
|
+
reaches `in_progress`; subsequent strict review remains mandatory.
|
|
52
|
+
- `split-required`, a stale Task revision/confirmation, conflicting duplicate, active boundary,
|
|
53
|
+
or tampered hash chain fails closed. Delegated approval is not part of this gate.
|
|
54
|
+
|
|
55
|
+
## Existing lifecycle regressions retained
|
|
56
|
+
|
|
57
|
+
- A guarded Task remains in the same Task/Step and can converge after five consecutive failed
|
|
58
|
+
review cycles. Attempts 1-2 are ordinary; attempts 3+ are corrective diagnostics, not limits.
|
|
59
|
+
- Evidence-bound `route=fix` and `route=replan`, Plan-integrity recovery, corrective yield/replan,
|
|
60
|
+
observer byte-purity, C1 credential safety, Milestone dependency authority, atomic transactions,
|
|
61
|
+
and structural-replacement shutdown all remain green.
|
|
62
|
+
- `split-required` remains terminal. The new compatibility route does not implement P04-B, rewire
|
|
63
|
+
Milestone topology, adopt completed Steps, or override a semantic stop outside the exact beta.11
|
|
64
|
+
attempt-four policy shape.
|
|
65
|
+
|
|
66
|
+
## Packaged and transcript evidence
|
|
67
|
+
|
|
68
|
+
- Downstream smoke validated package resolution and the packaged beta.12.1 handshake in a clean
|
|
69
|
+
disposable installation.
|
|
70
|
+
- A trusted harness then invoked the final built CLI sequentially for handshake, doctor, `status`,
|
|
71
|
+
and fresh `next` against this unregistered source repository. The observations remained read-only.
|
|
72
|
+
- `node scripts/validate-lifecycle-transcript.mjs` accepted all `8/8` post-provenance events with no
|
|
73
|
+
failed invocation, mutation, or missing terminal result. The log SHA-256 is
|
|
74
|
+
`3a12f6e604bef2fe5335c6fc244b52690b06925fb50b8fd8a20acefb672ca46d`; the temporary log remains
|
|
75
|
+
outside the repository.
|
|
76
|
+
|
|
77
|
+
This transcript proves release-time invocation/result discipline for the final CLI. It does not
|
|
78
|
+
claim a second product Milestone replay or a lifecycle mutation. The two compatibility mechanisms
|
|
79
|
+
are covered by deterministic repository/sidecar integration tests above.
|
|
80
|
+
|
|
81
|
+
## beta.12.1 PDF release documentation evidence
|
|
82
|
+
|
|
83
|
+
- Three tracked Russian PDFs were deterministically regenerated from reviewable Markdown sources
|
|
84
|
+
under `docs/pdf/sources/`; `npm run docs:pdf:check` reported an empty stale set.
|
|
85
|
+
- All 25 pages were rendered and visually inspected: architecture is 7 pages, the delegated
|
|
86
|
+
chat-only guide is 8 pages, and the technical reference is 10 pages. No blank, clipped,
|
|
87
|
+
overlapping, or orphaned page was found.
|
|
88
|
+
- Visible titles, headers, package commands, and release gates identify beta.12.1. The content
|
|
89
|
+
distinguishes general continuable remediation from the narrow Human-confirmed beta.11 stop
|
|
90
|
+
override and documents Task-local dependency preservation without weakening candidate checks.
|
|
71
91
|
|
|
72
92
|
## Not claimed
|
|
73
93
|
|
|
74
94
|
- Validation itself performs no npm publication, Git tag, push, Signal Workflow mutation, or local
|
|
75
|
-
plugin reinstall.
|
|
76
|
-
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
## Post-beta.11 combined P04-A/P01-A candidate evidence
|
|
81
|
-
|
|
82
|
-
This later evidence was recorded on 2026-08-24 on branch `codex/p04-task-dependencies` and was
|
|
83
|
-
incorporated into the final beta.11 candidate.
|
|
84
|
-
|
|
85
|
-
- P04-A adds the canonical Milestone dependency DAG, atomic initial Plan transaction/recovery,
|
|
86
|
-
dependency-bound handoff/claim/start, legacy fail-closed policy, and unconditional pre-write
|
|
87
|
-
structural replacement shutdown.
|
|
88
|
-
- P01-A adds three versioned read-only analyzers, canonical in-event evidence/hash binding,
|
|
89
|
-
exact pre-start and corrective source selection, and phase-aware freshness before claim/start/run.
|
|
90
|
-
- After final source review added a pre-Git-mutation start race guard, `npm test` passed the exact
|
|
91
|
-
final sequential `319/319` suite with zero failures, skips, cancellations, or todos. The 13/13
|
|
92
|
-
focused P01-A suite, 84/84 affected P01/P04/Task lifecycle selection, and 4/4 beta.11
|
|
93
|
-
late-recovery compatibility tests also passed.
|
|
94
|
-
- `npm run typecheck`, `npm run plugin:check`, `npm run release:check`, schema validation inside
|
|
95
|
-
the full suite, the focused packaged-handshake capability test, and `git diff --check` passed.
|
|
96
|
-
- The changed bundled gateway uses cachebuster `0.1.0+codex.20260824113210`; it was validated but
|
|
97
|
-
not reinstalled.
|
|
98
|
-
- No merge, package install, tag, publication, plugin reinstall, Signal mutation, or brief status
|
|
99
|
-
transition to `implemented` is claimed by this candidate evidence.
|
|
100
|
-
|
|
101
|
-
## beta.11 PDF release documentation evidence
|
|
102
|
-
|
|
103
|
-
The Russian PDF set was regenerated and revalidated on 2026-08-24 against the combined beta.11
|
|
104
|
-
candidate described above.
|
|
105
|
-
|
|
106
|
-
- The three tracked PDF binaries now have reviewable Markdown authorities under
|
|
107
|
-
`docs/pdf/sources/` and one deterministic ReportLab generator. `npm run docs:pdf:check`
|
|
108
|
-
regenerated all outputs and reported an empty stale set.
|
|
109
|
-
- All 24 pages were rendered and visually inspected: architecture is 6 pages, the delegated
|
|
110
|
-
chat-only guide is 8 pages, and the technical reference is 10 pages. Text extraction found no
|
|
111
|
-
empty pages. The architecture orphan-page defect found during inspection was removed, and the
|
|
112
|
-
complete delegated Discovery prompt no longer splits its readiness checklist across pages.
|
|
113
|
-
- The content documents beta.11 delegated Discovery, the Milestone Autonomy Contract, explicit
|
|
114
|
-
`dependsOnTaskIds`, P04-A runnable routing and structural-replacement stop, P01-A mechanical
|
|
115
|
-
feasibility, C1 credential boundaries, external-sealed review, Plan-integrity recovery, and the
|
|
116
|
-
limited derived-graph role of `codebase-memory-mcp`.
|
|
117
|
-
- `npm run pack:check` passed with an isolated writable npm cache. The 269-file dry-run tarball
|
|
118
|
-
contains all three PDFs, all three Markdown sources, the PDF README and pinned requirement, and
|
|
119
|
-
both generator/check scripts.
|
|
120
|
-
- On the same beta.11 code tree, `npm run validate` passed `319/319`; `npm run typecheck`,
|
|
121
|
-
`npm run plugin:check`, `npm run release:check`, and `git diff --check` also passed.
|
|
122
|
-
|
|
123
|
-
This evidence makes the documentation package-ready for beta.11. The release action remains a
|
|
124
|
-
separate Git/tag operation after all final gates pass on the exact candidate tree.
|
|
95
|
+
plugin reinstall. Tagging and remote push are separate actions after the exact candidate gates.
|
|
96
|
+
- Structural replacement remains intentionally disabled; beta.12.1 does not claim P04-B
|
|
97
|
+
materialization or completed-Step adoption.
|
|
98
|
+
- A real project must install the published exact beta.12.1 package, update/reinstall the bundled
|
|
99
|
+
gateway, and follow fresh project-local `handshake -> doctor -> status -> next` navigation.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-workflow-gateway",
|
|
3
|
-
"version": "0.1.0+codex.
|
|
3
|
+
"version": "0.1.0+codex.20260827132414",
|
|
4
4
|
"description": "Thin personal Codex gateway for exact project-local Codex Workflow V2 packages and codebase-memory-mcp.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Codex Workflow Maintainers"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Gateway Protocol V2
|
|
2
2
|
|
|
3
|
-
## beta.
|
|
3
|
+
## beta.12.1 compatibility transitions and continuable remediation
|
|
4
4
|
|
|
5
5
|
- When fresh `next` advertises `task plan-integrity-recover`, consume its exact Task revision,
|
|
6
6
|
Step, actor, and writer-token contract. This route is valid only for the Core-derived
|
|
@@ -14,6 +14,12 @@
|
|
|
14
14
|
product commits absent from the current corrective Step are recognized only through intact passed
|
|
15
15
|
strict-review plus verified reviewer-attestation chains and remain separately auditable as
|
|
16
16
|
`retainedHistoricalCommits`.
|
|
17
|
+
Task-local manifest/lock fields from recorded history may differ from the base, but the candidate
|
|
18
|
+
commit must preserve them exactly while changing only the Workflow dependency entries.
|
|
19
|
+
- `task stop-override-prepare` is a read-only Human gate for the exact beta.11 attempt-four stop
|
|
20
|
+
shape. `task stop-override-apply` requires the same Task revision, Step, actor, reason, Plan, HEAD,
|
|
21
|
+
evidence binding, and returned `SOO-*` code in a later user turn. It appends evidence without
|
|
22
|
+
deleting `stop-escalate`; it never applies to `split-required`.
|
|
17
23
|
- `milestone progress --id <MS-ID>` is a read-only projection and the sole source for Coordinator
|
|
18
24
|
progress tables. It preserves cancelled/replacement Tasks as distinct membership rows.
|
|
19
25
|
- `scripts/chat-registry.mjs` atomically allocates project-monotonic `#NNN`, builds all six title
|
|
@@ -49,6 +55,8 @@ Current capability set:
|
|
|
49
55
|
- `corrective-plan-audit-v1`
|
|
50
56
|
- `safe-update-preflight-v1`
|
|
51
57
|
- `bounded-dependency-provenance-recovery-v1`
|
|
58
|
+
- `task-local-dependency-provenance-recovery-v1`
|
|
59
|
+
- `legacy-stop-escalate-override-v1`
|
|
52
60
|
- `retained-reviewed-history-recovery-v1`
|
|
53
61
|
- `milestone-progress-projection-v1`
|
|
54
62
|
- `strict-reviewer-v1`
|
|
@@ -63,7 +71,7 @@ Current capability set:
|
|
|
63
71
|
- `task-c1-handoff-sidecar-v1`
|
|
64
72
|
- `task-mechanical-feasibility-v1`
|
|
65
73
|
- `semantic-plan-risk-audit-v2`
|
|
66
|
-
- `guarded-remediation-
|
|
74
|
+
- `guarded-remediation-continuation-v1`
|
|
67
75
|
- `milestone-reverse-membership-integrity-v1`
|
|
68
76
|
- `task-c1-handoff-bundle-v2`
|
|
69
77
|
- `alpha6-adoption-posture-v1`
|
|
@@ -169,18 +177,29 @@ one hostile counterexample, expected safe result, and exact executable evidence
|
|
|
169
177
|
unguarded Plan. Missing, stale, `split-required`, or `stop-escalate` evidence blocks
|
|
170
178
|
authorization.
|
|
171
179
|
|
|
172
|
-
For guarded remediation,
|
|
173
|
-
|
|
174
|
-
with
|
|
180
|
+
For guarded remediation, the first two failed cycles are recorded as `ordinary` and later cycles as
|
|
181
|
+
`corrective`. This mode is diagnostic: a third or later retry remains executable and still requires
|
|
182
|
+
a fresh strict review. A finding defaults to `route=fix`; `route=replan` is accepted only with exact
|
|
183
|
+
Plan-conflict evidence and routes to ordinary `task plan-set` for implementation-Step changes.
|
|
184
|
+
|
|
185
|
+
An explicit corrective disposition can still be recorded when the actor deliberately chooses a
|
|
186
|
+
stop, split, or compatible historical recovery route:
|
|
175
187
|
|
|
176
188
|
```text
|
|
177
189
|
codex-workflow task corrective-decision --repo <git-root> \
|
|
178
190
|
--id <TASK-ID> --step <STEP-ID> --expected-revision <REVISION> --file <decision.json>
|
|
179
191
|
```
|
|
180
192
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
193
|
+
`continue-fix` permits continuation; `replan-required`, `split-required`, and `stop-escalate` are
|
|
194
|
+
explicit stop or redirection decisions. They are never inferred from attempt count. Without such an
|
|
195
|
+
explicit decision, another failed strict review continues the same Task through its evidence-bound
|
|
196
|
+
`fix`/`replan` route.
|
|
197
|
+
|
|
198
|
+
One append-only compatibility exception exists for a beta.11 policy-created attempt-four stop.
|
|
199
|
+
Fresh `next` must advertise `task stop-override-prepare`; run it with exact human inputs, present the
|
|
200
|
+
complete binding, and stop. A later explicit user turn may run `task stop-override-apply` with the
|
|
201
|
+
same inputs and confirmation code. Any split decision, Plan/revision/HEAD drift, missing attempt-3
|
|
202
|
+
continue authority, lease, transaction, or journal damage blocks the route.
|
|
184
203
|
|
|
185
204
|
## Context refresh
|
|
186
205
|
|
|
@@ -50,6 +50,12 @@ pending/corrupt transaction. After success run sequential `status` then `next` a
|
|
|
50
50
|
returned lifecycle action; Knowledge reconciliation or atomic Task context refresh may legitimately
|
|
51
51
|
be next because the dependency files changed.
|
|
52
52
|
|
|
53
|
+
Beta.12.1 permits product-owned manifest/lock fields already present in the exact recorded Task
|
|
54
|
+
history to differ from the Milestone base. Core compares candidate parent to candidate HEAD after
|
|
55
|
+
removing only the Workflow dependency entries, so the dependency commit must preserve every such
|
|
56
|
+
field exactly. Do not rebase, copy the base manifest over Task-local scripts, or interpret this as
|
|
57
|
+
permission for product payload in the candidate commit.
|
|
58
|
+
|
|
53
59
|
The beta.11 bounded Plan-integrity route prevents a known impossible check from consuming a second
|
|
54
60
|
ordinary remediation attempt. Use `task plan-integrity-recover` only when fresh `next` advertises
|
|
55
61
|
it for the exact failed Task/Step/revision. Require `state=eligible`, no blockers, one first
|
|
@@ -103,6 +109,17 @@ command shape or consuming a replacement Discovery. Never rebind, refresh, repla
|
|
|
103
109
|
resume, cancel, or manually replace the historical Task. Continue only after a later P04-B/P05
|
|
104
110
|
package explicitly advertises a topology-preserving replacement capability.
|
|
105
111
|
|
|
112
|
+
When beta.12.1 `next` advertises `task stop-override-prepare`, the route is limited to the exact
|
|
113
|
+
beta.11 attempt-four policy stop: two ordinary failures, one corrective failure, a matching
|
|
114
|
+
attempt-3 `continue-fix`, and a matching attempt-4 `stop-escalate` under the unchanged Plan. Invoke
|
|
115
|
+
prepare with the exact Task/Step/revision, explicit human actor, and user-supplied reason. It is
|
|
116
|
+
read-only. Show the returned binding and `SOO-*` code, then stop. Only a later explicit user turn may
|
|
117
|
+
invoke `task stop-override-apply` with the identical inputs and code. Never delegate the gate,
|
|
118
|
+
override `split-required`, edit either journal, or reuse a code after Task revision, Plan, HEAD, or
|
|
119
|
+
evidence changes. Successful apply preserves the original stop, appends
|
|
120
|
+
`stop-escalate-overrides.jsonl`, and requires fresh sequential `status` then `next` before attempt
|
|
121
|
+
four runs through the normal strict-review cycle.
|
|
122
|
+
|
|
106
123
|
When `next` returns `milestone initial-assembly`, execution is unavailable. Follow only the
|
|
107
124
|
advertised `linked-task-assembly.commands` (`discovery start` and `discovery materialize`) until all
|
|
108
125
|
intended linked Tasks exist. The closing `milestone plan-set` option appears only after at least one
|
|
@@ -376,9 +393,12 @@ only for membership changes; any change to outcome, success signal, acceptance,
|
|
|
376
393
|
discovery, or base branch requires the ordinary human scope-change gate. Never self-renew or
|
|
377
394
|
replace the contract.
|
|
378
395
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
replan,
|
|
396
|
+
Repeated failed Task reviews remain on the same Task and do not require a separate corrective
|
|
397
|
+
Plan audit based only on count. Follow fresh `next`: ordinary findings default to `route=fix`;
|
|
398
|
+
`route=replan` is valid only with the exact Plan clause, obstruction, and minimal Plan change
|
|
399
|
+
retained by Core. A remediation Plan may change implementation Steps but must preserve the Task
|
|
400
|
+
objective, requirements, and acceptance. Explicit split or stop decisions still stop ordinary
|
|
401
|
+
continuation.
|
|
382
402
|
|
|
383
403
|
When `next.strictStepReview.recommendedMode` is `external-sealed`, do not launch the nested local
|
|
384
404
|
reviewer from inside a Codex App sandbox. Run the advertised read-only `task step-review-packet`,
|
|
@@ -37,16 +37,17 @@ bindings, supersedes execution authorization, and returns the Task to
|
|
|
37
37
|
`awaiting_execution_authorization`. It cannot run while a Step is `in_progress` or while the
|
|
38
38
|
Task is `blocked`; unrelated blocks must be resolved through their owning transition.
|
|
39
39
|
|
|
40
|
-
For guarded remediation,
|
|
40
|
+
For guarded remediation, the first two attempts use mode `ordinary`; later attempts use mode
|
|
41
|
+
`corrective`. Corrective posture is
|
|
41
42
|
derived from the guarded Step, current Plan Risk Audit, remediation history, and
|
|
42
43
|
corrective-decision history rather than from `Task.status` alone, so the same gate survives
|
|
43
|
-
content-only Knowledge refresh, Task Knowledge rebind, and later reauthorization.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
requires
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
content-only Knowledge refresh, Task Knowledge rebind, and later reauthorization. Attempt count
|
|
45
|
+
does not block execution: every new completion still requires exact strict-review evidence, while
|
|
46
|
+
the same Task may continue until review passes. A failed finding defaults to `route=fix`.
|
|
47
|
+
`route=replan` requires exact Plan-conflict evidence and routes to `task plan-set`; it may change
|
|
48
|
+
implementation Steps but not the Task objective, requirements, or acceptance. Explicit
|
|
49
|
+
`replan-required`, `split-required`, and `stop-escalate` decisions retain their redirect/stop
|
|
50
|
+
semantics and outrank ordinary continuation.
|
|
50
51
|
|
|
51
52
|
Milestone authorization is bound to its Plan and membership revision. Plan amendments
|
|
52
53
|
supersede authorization. Milestone validation and acceptance are bound to the current base
|
|
@@ -13,10 +13,17 @@ upgrade, concurrent state includes deterministic races, restart/replay claims in
|
|
|
13
13
|
windows, and provider integrations include failure injection plus hidden-default checks.
|
|
14
14
|
Happy-path green tests do not replace this evidence.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
Failed review does not impose a Task-lifecycle attempt limit. The first two guarded remediation
|
|
17
|
+
events are recorded as `ordinary`; later events are `corrective`, remain executable, and each
|
|
18
|
+
requires another fresh strict review. A failed-review finding defaults to `route=fix`. It may use
|
|
19
|
+
`route=replan` only with exact `planClause`, `whyFixCannotFit`, and `minimalPlanChange` evidence;
|
|
20
|
+
Core then routes to ordinary `task plan-set`, where only implementation Steps may change. Task
|
|
21
|
+
objective, requirements, and acceptance remain immutable during remediation.
|
|
22
|
+
|
|
23
|
+
The explicit corrective-decision journal remains available for intentional `continue-fix`,
|
|
24
|
+
`replan-required`, `split-required`, and `stop-escalate` dispositions and for compatible historical
|
|
25
|
+
recovery. It is not an attempt-count gate. Explicit split and stop decisions still stop or redirect
|
|
26
|
+
execution; repeated review failure alone does not create either decision.
|
|
20
27
|
|
|
21
28
|
The strict path is `task review-launch`. It starts an ephemeral Codex process with user
|
|
22
29
|
configuration and rules ignored, a read-only sandbox, structured output, and an attempted
|
|
@@ -22,7 +22,23 @@
|
|
|
22
22
|
"requirement": { "type": ["string", "null"] },
|
|
23
23
|
"summary": { "type": "string", "minLength": 1 },
|
|
24
24
|
"evidence": { "type": "string", "minLength": 1 },
|
|
25
|
-
"requiredAction": { "type": "string", "minLength": 1 }
|
|
25
|
+
"requiredAction": { "type": "string", "minLength": 1 },
|
|
26
|
+
"route": { "enum": ["fix", "replan"] },
|
|
27
|
+
"planConflict": {
|
|
28
|
+
"anyOf": [
|
|
29
|
+
{ "type": "null" },
|
|
30
|
+
{
|
|
31
|
+
"type": "object",
|
|
32
|
+
"additionalProperties": false,
|
|
33
|
+
"required": ["planClause", "whyFixCannotFit", "minimalPlanChange"],
|
|
34
|
+
"properties": {
|
|
35
|
+
"planClause": { "type": "string", "minLength": 1 },
|
|
36
|
+
"whyFixCannotFit": { "type": "string", "minLength": 1 },
|
|
37
|
+
"minimalPlanChange": { "type": "string", "minLength": 1 }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|
|
26
42
|
}
|
|
27
43
|
}
|
|
28
44
|
}
|
|
@@ -34,6 +34,21 @@
|
|
|
34
34
|
"eventType": { "enum": ["pending", "review-recorded", "attestation-verified"] },
|
|
35
35
|
"decision": { "enum": ["pending", "passed", "failed", "unverified"] },
|
|
36
36
|
"reviewerAttestationHash": { "$ref": "#/$defs/nullableHash64" },
|
|
37
|
+
"remediationRoute": { "enum": ["fix", "replan", null] },
|
|
38
|
+
"planConflicts": {
|
|
39
|
+
"type": "array",
|
|
40
|
+
"items": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"additionalProperties": false,
|
|
43
|
+
"required": ["findingId", "planClause", "whyFixCannotFit", "minimalPlanChange"],
|
|
44
|
+
"properties": {
|
|
45
|
+
"findingId": { "type": "string", "minLength": 1 },
|
|
46
|
+
"planClause": { "type": "string", "minLength": 1 },
|
|
47
|
+
"whyFixCannotFit": { "type": "string", "minLength": 1 },
|
|
48
|
+
"minimalPlanChange": { "type": "string", "minLength": 1 }
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
37
52
|
"previousEventHash": { "$ref": "#/$defs/nullableHash64" },
|
|
38
53
|
"recordedAt": { "type": "string", "format": "date-time" },
|
|
39
54
|
"eventHash": { "$ref": "#/$defs/hash64" }
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://codex-workflow.local/schemas/stop-escalate-override-event.schema.json",
|
|
4
|
+
"title": "Codex Workflow V2 Stop-Escalate Override Event",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"eventId", "taskId", "taskRevision", "stepId", "stopDecisionEventId",
|
|
9
|
+
"stopDecisionEventHash", "priorContinueDecisionEventId", "priorContinueDecisionEventHash",
|
|
10
|
+
"triggeringAttemptCount", "coveredEventIds", "planHash", "headCommit", "actor", "reason",
|
|
11
|
+
"packageVersion", "confirmationCodeBindingHash", "policy", "previousEventHash", "recordedAt", "eventHash"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"eventId": { "type": "string", "pattern": "^SOO-[0-9A-HJKMNP-TV-Z]{26}$" },
|
|
15
|
+
"taskId": { "type": "string", "pattern": "^TASK-[0-9A-HJKMNP-TV-Z]{26}$" },
|
|
16
|
+
"taskRevision": { "type": "integer", "minimum": 1 },
|
|
17
|
+
"stepId": { "type": "string", "pattern": "^STEP-[0-9]{3}(?:-[A-Z0-9-]+)?$" },
|
|
18
|
+
"stopDecisionEventId": { "type": "string", "pattern": "^CRD-[0-9A-HJKMNP-TV-Z]{26}$" },
|
|
19
|
+
"stopDecisionEventHash": { "$ref": "#/$defs/hash64" },
|
|
20
|
+
"priorContinueDecisionEventId": { "type": "string", "pattern": "^CRD-[0-9A-HJKMNP-TV-Z]{26}$" },
|
|
21
|
+
"priorContinueDecisionEventHash": { "$ref": "#/$defs/hash64" },
|
|
22
|
+
"triggeringAttemptCount": { "const": 4 },
|
|
23
|
+
"coveredEventIds": {
|
|
24
|
+
"type": "array",
|
|
25
|
+
"minItems": 3,
|
|
26
|
+
"maxItems": 3,
|
|
27
|
+
"uniqueItems": true,
|
|
28
|
+
"items": { "type": "string", "pattern": "^RME-[0-9A-HJKMNP-TV-Z]{26}$" }
|
|
29
|
+
},
|
|
30
|
+
"planHash": { "$ref": "#/$defs/hash64" },
|
|
31
|
+
"headCommit": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
|
|
32
|
+
"actor": { "type": "string", "minLength": 1 },
|
|
33
|
+
"reason": { "type": "string", "minLength": 1 },
|
|
34
|
+
"packageVersion": { "type": "string", "minLength": 1 },
|
|
35
|
+
"confirmationCodeBindingHash": { "$ref": "#/$defs/hash64" },
|
|
36
|
+
"policy": { "const": "beta11-attempt4-stop-compatibility-v1" },
|
|
37
|
+
"previousEventHash": { "$ref": "#/$defs/nullableHash64" },
|
|
38
|
+
"recordedAt": { "type": "string", "format": "date-time" },
|
|
39
|
+
"eventHash": { "$ref": "#/$defs/hash64" }
|
|
40
|
+
},
|
|
41
|
+
"$defs": {
|
|
42
|
+
"hash64": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
43
|
+
"nullableHash64": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" }
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -44,6 +44,7 @@ SOURCE_DIR = ROOT / "docs" / "pdf" / "sources"
|
|
|
44
44
|
OUTPUT_DIR = ROOT / "docs" / "pdf"
|
|
45
45
|
PACKAGE = json.loads((ROOT / "package.json").read_text(encoding="utf-8"))
|
|
46
46
|
PACKAGE_VERSION = PACKAGE["version"]
|
|
47
|
+
RELEASE_LABEL = PACKAGE_VERSION.rsplit("-", 1)[-1]
|
|
47
48
|
|
|
48
49
|
DOCUMENTS = (
|
|
49
50
|
("codex-workflow-v2-architecture-ru.md", "codex-workflow-v2-architecture-ru.pdf"),
|
|
@@ -396,7 +397,7 @@ def draw_page(canvas_obj: canvas.Canvas, doc: SimpleDocTemplate, title: str) ->
|
|
|
396
397
|
canvas_obj.setFont("WorkflowBody", 7)
|
|
397
398
|
canvas_obj.setFillColor(MUTED)
|
|
398
399
|
canvas_obj.drawString(LEFT, PAGE_HEIGHT - 10 * mm, title[:74])
|
|
399
|
-
canvas_obj.drawRightString(PAGE_WIDTH - RIGHT, PAGE_HEIGHT - 10 * mm, f"
|
|
400
|
+
canvas_obj.drawRightString(PAGE_WIDTH - RIGHT, PAGE_HEIGHT - 10 * mm, f"{RELEASE_LABEL} | {PACKAGE_VERSION}")
|
|
400
401
|
canvas_obj.line(LEFT, 11 * mm, PAGE_WIDTH - RIGHT, 11 * mm)
|
|
401
402
|
canvas_obj.drawString(LEFT, 7 * mm, "Codex Workflow V2")
|
|
402
403
|
canvas_obj.drawRightString(PAGE_WIDTH - RIGHT, 7 * mm, f"Страница {doc.page}")
|