codex-workflow-v2 2.0.0-beta.11 → 2.0.0-beta.12

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 (39) hide show
  1. package/README.md +5 -5
  2. package/dist/src/alpha6/remediation.d.ts +1 -1
  3. package/dist/src/alpha6/remediation.js +5 -57
  4. package/dist/src/alpha6/remediation.js.map +1 -1
  5. package/dist/src/alpha6/review.d.ts +5 -0
  6. package/dist/src/alpha6/review.js +110 -2
  7. package/dist/src/alpha6/review.js.map +1 -1
  8. package/dist/src/cli.js +1 -1
  9. package/dist/src/cli.js.map +1 -1
  10. package/dist/src/contracts.d.ts +13 -0
  11. package/dist/src/reviewer.d.ts +26 -0
  12. package/dist/src/reviewer.js +54 -1
  13. package/dist/src/reviewer.js.map +1 -1
  14. package/dist/src/version.d.ts +1 -1
  15. package/dist/src/version.js +1 -1
  16. package/dist/src/workflow.js +50 -58
  17. package/dist/src/workflow.js.map +1 -1
  18. package/docs/autonomy-guardrails.md +22 -34
  19. package/docs/decisions.md +5 -4
  20. package/docs/delegated-approval.md +5 -4
  21. package/docs/development-flow.md +7 -6
  22. package/docs/lifecycle/state-machine-stabilization.md +1 -1
  23. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  24. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  25. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  26. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +10 -9
  27. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +13 -13
  28. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +22 -21
  29. package/docs/release.md +3 -1
  30. package/docs/validation-report.md +88 -114
  31. package/package.json +1 -1
  32. package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +1 -1
  33. package/plugins/codex-workflow-gateway/references/protocol.md +13 -8
  34. package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +6 -3
  35. package/references/state-machine.md +9 -8
  36. package/references/validation-and-review.md +11 -4
  37. package/schemas/review-result.schema.json +17 -1
  38. package/schemas/step-review-event.schema.json +15 -0
  39. package/scripts/generate-pdf-docs.py +2 -1
@@ -1,124 +1,98 @@
1
- # V2 beta.11 Validation Report
1
+ # V2 beta.12 Validation Report
2
2
 
3
- Release candidate `2.0.0-beta.11` was validated on 2026-08-24 with Node.js 24.17.0.
3
+ Release candidate `2.0.0-beta.12` 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 `319/319` sequential tests with no failures, skips,
9
- cancellations, or todos. The focused Signal recovery suite passed independently (`5/5`).
10
- - `npm run pack:check` passed. The beta.11 tarball contains 269 files; package size is approximately
11
- 951 kB and unpacked size is 3.7 MB.
12
- - `npm run smoke:downstream` packed and installed the actual beta.11 tarball in an empty temporary
8
+ - The final `npm run validate` passed `321/321` sequential tests with no failures, skips,
9
+ cancellations, or todos. The focused Signal T04 recovery suite passed independently (`5/5`).
10
+ - `npm run pack:check` passed outside the filesystem-restricted sandbox. The beta.12 tarball
11
+ contains 269 files; package size is 955.6 kB and unpacked size is 3.7 MB.
12
+ - `npm run smoke:downstream` packed and installed the actual beta.12 tarball in an empty temporary
13
13
  project, then passed the packaged CLI handshake. The first sandboxed attempt was network-blocked
14
- while fetching `ajv`; the authorized network retry and the final post-`npm ci` run passed.
15
- - `npm run plugin:check`, the plugin-creator structural validator, the skill validator,
16
- `npm run docs:pdf:check`, `npm run release:check`, and `git diff --check` passed. The bundled
17
- gateway cachebuster is `0.1.0+codex.20260824113210`.
18
-
19
- ## Bounded Plan-integrity recovery evidence
20
-
21
- - Recovery becomes applicable only after the first ordinary `checks-failed` remediation for a
22
- guarded failed Step when at least one Plan check is an exact root `npm run[-script] <name>`
23
- command whose named script is absent from the root `package.json`, and that manifest is outside
24
- the Step's exact `allowedWrites` boundary.
25
- - Fresh evidence binds the Task revision, first remediation event ID/hash, current Plan and Step
26
- definition, root manifest path/hash, Git HEAD, exact check commands, missing script names, and
27
- current dirty-file set into one canonical conflict hash.
28
- - An eligible `next` advertises only `task plan-integrity-recover`. The mutation appends one
29
- schema-validated `replan-required` corrective decision and does not modify the worktree or invent
30
- a second failed execution attempt.
31
- - Existing C1 ownership remains authoritative. A claimed Worker must execute the advertised
32
- recovery and then yield its claim before the existing journaled, Human-gated corrective-replan
33
- transition can prepare replacement Plan authority.
34
- - The route fails closed when `package.json` is writable by the Step, no missing-script check
35
- matches the bounded npm-script grammar, unrelated dirty files exist, bindings drift, or
36
- persisted evidence is malformed or tampered.
37
-
38
- ## Regression coverage
39
-
40
- - Four dedicated beta.11 regressions cover the exact happy path, the in-scope-manifest exclusion,
41
- dirty-worktree rejection, and sidecar evidence tampering.
42
- - Existing remediation-mode recovery retains higher navigation priority than the new assessment;
43
- the legacy malformed-third-attempt regression passes unchanged.
44
- - The corrective-replan serialized definition SHA moved to
45
- `c601cc100790a19e6ece2a1d60fb46d1e1d52e6922e6104d84f4b6ffe7ba0225` because the decision event
46
- schema now admits the bounded ordinal-2 recovery record. Its runtime semantic fingerprint remains
47
- `bd4e7a0ddfcb6abc0c5eb107775e6aea7e08c4606dda4d945d77af8a4520710d`, and the runtime catalog hash
48
- remains `fa1d11860d4f07978c3b8e85d1f91cd3d15b17284b05f41e05d462d3bb092aed`.
49
- - The beta.10 dependency-provenance and exact Signal T04 revision-26 regressions remain green.
50
- - The read-only Milestone projection still preserves `T03 cancelled T08 replacement`, and the
51
- monotonic chat registry/title fallback regressions remain green.
52
-
53
- ## Trusted-harness release replay
54
-
55
- - A fresh disposable project installed the actual current beta.11 tarball, declared the exact
56
- `2.0.0-beta.11` dependency, and passed package handshake plus `doctor` with protocol 2 and state
57
- schema 2. Its Git checkout remained clean.
58
- - The automatic trusted harness invoked the real packaged CLI and append-only recorded Discovery
59
- bootstrap, sequential `status next` checkpoints, Project Knowledge scan/approval, and
60
- Discovery-to-Task materialization through the resulting `task plan-set` boundary.
61
- - The semantic lifecycle log validated `24/24` events with no failed or unadvertised mutation and
62
- no missing checkpoint. Its SHA-256 is
63
- `5c1d666aa3bc27c4b6687b836a565823a1f567227e93f76b2c3285217fb9a0b7`.
64
- - The matched raw result log contains 12 successful CLI results, no C1 credential fields, and has
65
- SHA-256 `a51bae7221fa0ff30bd571ca3800bf8ac44911d7746f68e5e86987b6c357ccf6`.
66
- The exercised tarball SHA-256 is
67
- `3b7ed19961ba8394625d3a481fafb196dd80be5b138635a0bd1ce084a47fc06e`.
68
- - This targeted real-agent replay validates release navigation discipline and package integration;
69
- it does not claim a second full product Milestone. Deeper P01/P04 lifecycle behavior is covered
70
- by the deterministic and integration suites listed below.
14
+ while fetching pinned `ajv`; the authorized network retry passed.
15
+ - `npm run plugin:check`, the official Codex plugin validator, `npm run docs:pdf:check`, exact
16
+ `RELEASE_TAG=v2.0.0-beta.12 npm run release:check`, and `git diff --check` passed. The bundled
17
+ gateway cachebuster is `0.1.0+codex.20260827003726`.
18
+
19
+ The first full post-version-bump validation exposed three failures before the Signal T04 runtime
20
+ scenario began: a historical read-only snapshot truthfully targeted beta.11, while its replay
21
+ assertion incorrectly required the current package version. The fix keeps the snapshot immutable at
22
+ `2.0.0-beta.11`, binds the synthetic replay dependency to current `PACKAGE_VERSION`, and makes the
23
+ release check verify both identities separately. The focused suite then passed `5/5`, and the final
24
+ complete suite passed `321/321`.
25
+
26
+ ## Continuable remediation and review-routing evidence
27
+
28
+ - A guarded Task remains in the same Task/Step and reaches a passing strict review after five
29
+ consecutive failed review cycles. Attempts 1–2 are ordinary; attempts 3+ are corrective
30
+ diagnostics but remain executable and review-gated.
31
+ - Attempt count no longer selects a terminal lifecycle transition. It is retained as diagnostic
32
+ history only; explicit `split-required` and `stop-escalate` remain the stop authorities.
33
+ - A failed review defaults to `route=fix` (or an omitted route) and continues the same Task/Step.
34
+ `route=replan` is valid only with exact `planClause`, `whyFixCannotFit`, and `minimalPlanChange`
35
+ evidence.
36
+ - Replan returns to ordinary `task plan-set`; objective, requirements, and acceptance remain
37
+ immutable, while only implementation Steps may change. The replacement Plan still passes the
38
+ normal Plan Risk Audit and execution-authorization gates.
39
+ - Failed-review routing evidence is hash-chained in the public Step Review event schema. Drift,
40
+ malformed evidence, unrelated Knowledge changes, forged actors, and corrupt chains remain
41
+ fail-closed.
42
+
43
+ ## Retained dependency, feasibility, and recovery evidence
44
+
45
+ - P04-A retains the canonical Milestone dependency DAG, atomic initial Plan transaction/recovery,
46
+ dependency-bound handoff/claim/start, legacy fail-closed policy, and unconditional structural
47
+ replacement shutdown.
48
+ - P01-A retains three versioned read-only analyzers, canonical in-event evidence/hash binding,
49
+ exact pre-start and corrective source selection, and phase-aware freshness before claim/start/run.
50
+ - The exact Signal T04 revision-26 fixture still proves that only a verified historical Step Review
51
+ can retain its completion commit across corrective replan. Pending review is never trusted, and a
52
+ corrupt strict-review hash chain is rejected.
53
+ - Bounded beta.11 `task plan-integrity-recover` compatibility remains green for its exact first
54
+ ordinary checks-failed case. It does not edit the Plan, package manifest, or worktree and still
55
+ fails closed for writable-manifest scope, unrelated dirty files, binding drift, or tampering.
56
+ - Read-only Milestone progress still preserves `T03 cancelled T08 replacement`; project-monotonic
57
+ chat allocation and deterministic long-title fallback/readback remain green.
58
+
59
+ ## Packaged real-agent lifecycle replay
60
+
61
+ - A fresh disposable Git project installed the locally packed beta.12 tarball, declared the exact
62
+ `2.0.0-beta.12` dependency, and passed packaged `gateway handshake` plus `doctor` with protocol 2,
63
+ state schema 2, current dependency identity, and a clean checkout.
64
+ - The trusted harness invoked the real packaged CLI sequentially for handshake, doctor, direct first
65
+ Discovery bootstrap, `status`, and fresh `next`. The resulting navigation advertised
66
+ `project-memory scan`.
67
+ - `node scripts/validate-lifecycle-transcript.mjs` accepted all `10/10` post-provenance events with
68
+ no failed invocation, unadvertised mutation, or missing checkpoint. The semantic log SHA-256 is
69
+ `ab4ef10ad00e2fd9f54810ec5d0bbfb4106e1b211b3a185869d8a46787a5062d`; the raw packaged-result
70
+ log SHA-256 is `e693a839604c7ba2055f99e43c49c5ab63ac0cf6e790adc901db5dd8eb0ffae9`.
71
+ - Credential-marker inspection found no writer, claim, delegation, bearer, or secret material, and
72
+ the disposable product checkout remained clean. Logs and external workflow state stayed outside
73
+ this repository.
74
+
75
+ This replay validates package resolution, clean bootstrap, one real mutation, and mandatory
76
+ post-mutation navigation discipline. It does not claim a second full product Milestone replay;
77
+ deeper remediation, P01-A, and P04-A behavior is covered by deterministic and integration tests.
78
+
79
+ ## beta.12 PDF release documentation evidence
80
+
81
+ - Three tracked Russian PDFs were deterministically regenerated from reviewable Markdown sources
82
+ under `docs/pdf/sources/`; `npm run docs:pdf:check` reported an empty stale set.
83
+ - All 24 pages were rendered and visually inspected: architecture is 6 pages, the delegated
84
+ chat-only guide is 8 pages, and the technical reference is 10 pages. No blank, clipped, or orphaned
85
+ page was found.
86
+ - Visible titles, headers, package commands, and release gates identify beta.12. The content covers
87
+ continuable remediation, evidence-bound fix/replan routing, Milestone dependency authority,
88
+ P01-A mechanical feasibility, C1 credentials, external-sealed review, Plan-integrity compatibility,
89
+ structural-replacement shutdown, and the limited derived-graph role of `codebase-memory-mcp`.
71
90
 
72
91
  ## Not claimed
73
92
 
74
93
  - Validation itself performs no npm publication, Git tag, push, Signal Workflow mutation, or local
75
- plugin reinstall.
76
- - The implementation and package gates prove the bounded route. A real blocked project must still
77
- install the published beta.11 package and follow its fresh project-local `handshake → doctor →
78
- status next advertised recovery` navigation.
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.
94
+ plugin reinstall. Tagging and remote push are separate actions after the exact candidate gates.
95
+ - Structural replacement remains intentionally disabled; beta.12 does not claim P04-B replacement
96
+ materialization or completed-Step adoption.
97
+ - A real project must install the published exact beta.12 package, update/reinstall the bundled
98
+ 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-v2",
3
- "version": "2.0.0-beta.11",
3
+ "version": "2.0.0-beta.12",
4
4
  "description": "Requirements-first Codex development workflow with local state and explicit Git ownership.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-workflow-gateway",
3
- "version": "0.1.0+codex.20260824113210",
3
+ "version": "0.1.0+codex.20260827003726",
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.11 coordinator projections, retained review provenance, chat registry, and Plan-integrity recovery
3
+ ## beta.12 continuable remediation, coordinator projections, and retained recovery compatibility
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
@@ -63,7 +63,7 @@ Current capability set:
63
63
  - `task-c1-handoff-sidecar-v1`
64
64
  - `task-mechanical-feasibility-v1`
65
65
  - `semantic-plan-risk-audit-v2`
66
- - `guarded-remediation-hard-stop-v1`
66
+ - `guarded-remediation-continuation-v1`
67
67
  - `milestone-reverse-membership-integrity-v1`
68
68
  - `task-c1-handoff-bundle-v2`
69
69
  - `alpha6-adoption-posture-v1`
@@ -169,18 +169,23 @@ one hostile counterexample, expected safe result, and exact executable evidence
169
169
  unguarded Plan. Missing, stale, `split-required`, or `stop-escalate` evidence blocks
170
170
  authorization.
171
171
 
172
- For guarded remediation, `next.correctivePlanGate` or the runtime gate blocks a third
173
- ordinary retry on the same guarded Step until a current corrective decision exists. Record it
174
- with:
172
+ For guarded remediation, the first two failed cycles are recorded as `ordinary` and later cycles as
173
+ `corrective`. This mode is diagnostic: a third or later retry remains executable and still requires
174
+ a fresh strict review. A finding defaults to `route=fix`; `route=replan` is accepted only with exact
175
+ Plan-conflict evidence and routes to ordinary `task plan-set` for implementation-Step changes.
176
+
177
+ An explicit corrective disposition can still be recorded when the actor deliberately chooses a
178
+ stop, split, or compatible historical recovery route:
175
179
 
176
180
  ```text
177
181
  codex-workflow task corrective-decision --repo <git-root> \
178
182
  --id <TASK-ID> --step <STEP-ID> --expected-revision <REVISION> --file <decision.json>
179
183
  ```
180
184
 
181
- Only `continue-fix` permits bounded continuation. `replan-required`, `split-required`, and
182
- `stop-escalate` are stop or redirection decisions. If the third corrective review fails, a
183
- fourth run is prohibited; only split or stop may be recorded.
185
+ `continue-fix` permits continuation; `replan-required`, `split-required`, and `stop-escalate` are
186
+ explicit stop or redirection decisions. They are never inferred from attempt count. Without such an
187
+ explicit decision, another failed strict review continues the same Task through its evidence-bound
188
+ `fix`/`replan` route.
184
189
 
185
190
  ## Context refresh
186
191
 
@@ -376,9 +376,12 @@ only for membership changes; any change to outcome, success signal, acceptance,
376
376
  discovery, or base branch requires the ordinary human scope-change gate. Never self-renew or
377
377
  replace the contract.
378
378
 
379
- After two failed Task reviews, follow `next.correctivePlanGate`: obtain a distinct read-only
380
- corrective Auditor result and pass it through `--corrective-audit-file`. Do not continue for
381
- replan, split, or stop decisions.
379
+ Repeated failed Task reviews remain on the same Task and do not require a separate corrective
380
+ Plan audit based only on count. Follow fresh `next`: ordinary findings default to `route=fix`;
381
+ `route=replan` is valid only with the exact Plan clause, obstruction, and minimal Plan change
382
+ retained by Core. A remediation Plan may change implementation Steps but must preserve the Task
383
+ objective, requirements, and acceptance. Explicit split or stop decisions still stop ordinary
384
+ continuation.
382
385
 
383
386
  When `next.strictStepReview.recommendedMode` is `external-sealed`, do not launch the nested local
384
387
  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, two ordinary remediation attempts are allowed. Corrective posture is
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. A third
44
- ordinary retry is blocked until a current corrective decision exists for the same Step and
45
- Plan binding. `continue-fix` allows exactly the third corrective attempt; `replan-required`
46
- requires an actual new Plan posture before execution; `split-required` and `stop-escalate`
47
- stop ordinary execution. A failed third corrective attempt is a hard stop: `next` must
48
- report the stop without throwing, no fourth run is allowed, and no new `continue-fix` or
49
- `replan-required` decision is accepted.
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
- After two failed independent reviews, another corrective Plan requires a distinct Auditor.
17
- The Auditor covers every latest finding and records `continue-fix`, `replan-required`,
18
- `split-required`, or `stop-escalate`. Only `continue-fix` may be passed to `task plan-set`
19
- through `--corrective-audit-file`; the other decisions stop implementation.
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" }
@@ -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"beta.11 | {PACKAGE_VERSION}")
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}")