codex-workflow-v2 2.0.0-beta.12.1 → 2.0.0-beta.12.11
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 +65 -5
- package/dist/src/alpha6/downstream-proof.d.ts +68 -0
- package/dist/src/alpha6/downstream-proof.js +604 -0
- package/dist/src/alpha6/downstream-proof.js.map +1 -0
- package/dist/src/alpha6/milestone.d.ts +6 -2
- package/dist/src/alpha6/milestone.js +164 -10
- package/dist/src/alpha6/milestone.js.map +1 -1
- package/dist/src/alpha6/plan-risk.js +2 -2
- package/dist/src/alpha6/plan-risk.js.map +1 -1
- package/dist/src/alpha6/remediation.d.ts +2 -2
- package/dist/src/alpha6/remediation.js +18 -2
- package/dist/src/alpha6/remediation.js.map +1 -1
- package/dist/src/alpha6/review.d.ts +6 -0
- package/dist/src/alpha6/review.js +12 -0
- package/dist/src/alpha6/review.js.map +1 -1
- package/dist/src/alpha7/corrective-recovery.d.ts +8 -1
- package/dist/src/alpha7/corrective-recovery.js +406 -26
- package/dist/src/alpha7/corrective-recovery.js.map +1 -1
- package/dist/src/cli.js +118 -5
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +112 -3
- package/dist/src/dependency-provenance.d.ts +25 -2
- package/dist/src/dependency-provenance.js +199 -13
- package/dist/src/dependency-provenance.js.map +1 -1
- package/dist/src/git.d.ts +1 -1
- package/dist/src/git.js +6 -2
- package/dist/src/git.js.map +1 -1
- package/dist/src/historical-step-provenance.d.ts +20 -0
- package/dist/src/historical-step-provenance.js +111 -0
- package/dist/src/historical-step-provenance.js.map +1 -0
- package/dist/src/state/corrective-replan-executor.js +5 -0
- package/dist/src/state/corrective-replan-executor.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 +37 -2
- package/dist/src/workflow.js +1409 -44
- package/dist/src/workflow.js.map +1 -1
- package/docs/autonomy-guardrails.md +73 -4
- package/docs/decisions.md +14 -0
- package/docs/delegated-approval.md +6 -1
- package/docs/development-flow.md +60 -5
- 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 +94 -8
- package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +72 -8
- package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +145 -32
- package/docs/release.md +46 -8
- package/docs/updating-existing-project.md +142 -6
- package/docs/validation-report.md +109 -95
- package/package.json +7 -2
- package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +1 -1
- package/plugins/codex-workflow-gateway/references/protocol.md +55 -1
- package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +150 -2
- package/schemas/authorization-event.schema.json +8 -1
- package/schemas/downstream-proof-invalidation-event.schema.json +71 -0
- package/schemas/downstream-proof-replan-recovery-event.schema.json +61 -0
- package/schemas/milestone-scope-change-event.schema.json +25 -1
- package/schemas/task.schema.json +104 -0
- package/scripts/generate-pdf-docs.py +13 -2
|
@@ -1,99 +1,113 @@
|
|
|
1
|
-
# V2 beta.12.
|
|
1
|
+
# V2 beta.12.11 Validation Report
|
|
2
2
|
|
|
3
|
-
Release candidate `2.0.0-beta.12.
|
|
3
|
+
Release candidate `2.0.0-beta.12.11` was validated on 2026-08-31 (Europe/Moscow) with
|
|
4
|
+
Node.js 24.17.0.
|
|
4
5
|
|
|
5
6
|
## Automated release evidence
|
|
6
7
|
|
|
7
|
-
- `npm ci` completed from the
|
|
8
|
-
-
|
|
9
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
8
|
+
- `npm ci` completed from the exact lockfile. No dependency version changed outside the release pin.
|
|
9
|
+
- `npm run validate` passed typecheck and `345/345` sequential tests with no failures, skips,
|
|
10
|
+
cancellations, or todos in 1,974,837.33 ms.
|
|
11
|
+
- `npm run test:signal-remediation-e2e` passed two focused scenarios. The positive E2E starts with an
|
|
12
|
+
approved Knowledge Map bound to beta.12.9, commits an exact dependency-only update to beta.12.11,
|
|
13
|
+
proves the stale map from Git and all version surfaces, materializes an audited upstream remediation
|
|
14
|
+
Task, completes its Plan/audit/C1/Step/review/accept/merge lifecycle, replans the original Task, and
|
|
15
|
+
completes a later Step there. The negative E2E changes README and proves that unrelated Knowledge
|
|
16
|
+
drift is not auto-approved while standalone reconcile remains executable.
|
|
17
|
+
- Existing negative coverage still rejects non-exact predecessor frontiers, duplicate remediation,
|
|
18
|
+
stale revisions, non-required or non-active Milestone posture, topology drift, reused audit evidence,
|
|
19
|
+
unsafe Knowledge paths, classification/gap/conflict drift, dirty checkouts, unaligned package
|
|
20
|
+
surfaces and wider Git commits.
|
|
21
|
+
- Package dry-run produced `codex-workflow-v2-2.0.0-beta.12.11.tgz` with 278 files, 1,057,906 bytes
|
|
22
|
+
packed and 4,224,300 bytes unpacked. The tarball excludes repository-local `docs/quality`. The first
|
|
23
|
+
invocation encountered a root-owned user npm cache (`EPERM`); the exact retry passed with an isolated
|
|
24
|
+
temporary cache.
|
|
25
|
+
- `npm run smoke:downstream` built and installed the tarball in a disposable consumer project and
|
|
26
|
+
returned `ok=true`. The sandboxed attempt could not resolve npm (`ENOTFOUND`); the same command passed
|
|
27
|
+
with network access.
|
|
28
|
+
- `npm run plugin:check` passed for bundled gateway `0.1.0+codex.20260830183000`.
|
|
29
|
+
- `npm run docs:pdf:check` reported an empty stale set and exact beta.12.11 package binding.
|
|
30
|
+
- `RELEASE_TAG=v2.0.0-beta.12.11 npm run release:check` and `git diff --check` passed.
|
|
31
|
+
|
|
32
|
+
## Root causes corrected
|
|
33
|
+
|
|
34
|
+
beta.12.10 added the bounded audited-remediation topology for a required pre-execution Task whose
|
|
35
|
+
current Plan Risk Audit truthfully returned `stop-escalate` because an upstream capability was absent.
|
|
36
|
+
Real installation in Signal exposed a second deadlock before that route could run:
|
|
37
|
+
|
|
38
|
+
1. the dependency-only package commit changed the approved `package.json` content hash;
|
|
39
|
+
2. repository `next` correctly observed stale Project Knowledge and advertised standalone reconcile;
|
|
40
|
+
3. standalone reconcile tried to discover a delegated Task context owner;
|
|
41
|
+
4. the same blocking Plan Risk Audit rejected that inspection, so the advertised transition could not
|
|
42
|
+
execute; and
|
|
43
|
+
5. even an ordinary reconcile would have required a Human approval and Task rebind that invalidated the
|
|
44
|
+
exact audit binding needed by remediation.
|
|
45
|
+
|
|
46
|
+
The primary defect was incomplete composition between package update, Knowledge authority and audited
|
|
47
|
+
remediation, not an insufficient retry count. A one-command bypass or broad auto-approval would have
|
|
48
|
+
hidden unreviewed product/documentation changes.
|
|
49
|
+
|
|
50
|
+
## Implemented lifecycle contract
|
|
51
|
+
|
|
52
|
+
- Fresh `next` advertises audited remediation only for an unstarted
|
|
53
|
+
`awaiting_execution_authorization` required Task of an active Milestone with a current
|
|
54
|
+
`stop-escalate` Plan Risk Audit.
|
|
55
|
+
- When Project Knowledge is stale, the route continues without a Human gate only if Core proves all of
|
|
56
|
+
the following: the previously stored map is active and approved; the sole changed Knowledge path is
|
|
57
|
+
`package.json`; checkout is clean; runtime, declared, locked, installed, HEAD and Milestone-base
|
|
58
|
+
versions equal; the approved manifest bytes exist in current Git ancestry; and every subsequent
|
|
59
|
+
commit that touched `package.json` changed exactly `package.json` and `package-lock.json` with no
|
|
60
|
+
structural difference after removing the Workflow dependency.
|
|
61
|
+
- `next.auditedRemediation.dependencyKnowledgeRefresh` exposes the evidence and blockers without writes.
|
|
62
|
+
Discovery start/update stays available only when this assessment is eligible.
|
|
63
|
+
- `milestone remediation-materialize` atomically writes the consumed Discovery, one required remediation
|
|
64
|
+
Task, additive Milestone topology, scope-change evidence and—when required—the reconciled active
|
|
65
|
+
Knowledge Map at revision +2 with `corrective-derived` approval. No actor, confirmation code,
|
|
66
|
+
delegation grant or Human approval is accepted.
|
|
67
|
+
- The new Task inherits the blocked Task exact direct predecessor frontier. Milestone outcome, success
|
|
68
|
+
signal, acceptance, checks, base, old memberships and unrelated dependency edges remain unchanged.
|
|
69
|
+
- The corrective-derived actor remains `agent:milestone-remediation:<MS-ID>` and authorizes only the
|
|
70
|
+
advertised required Task execution/final-acceptance transitions. Final Milestone acceptance remains
|
|
71
|
+
an ordinary Human/delegated gate.
|
|
72
|
+
- After remediation merge, the original Task returns to `task plan-set`, receives a fresh Knowledge
|
|
73
|
+
binding, Plan and Risk Audit, then proceeds through ordinary C1, checks, commits and reviews.
|
|
74
|
+
- Unsafe or unrelated Knowledge drift never enters this route. Standalone reconcile now remains
|
|
75
|
+
executable instead of throwing while it checks whether a blocked Task can own delegated refresh;
|
|
76
|
+
subsequent explicit approval semantics are unchanged.
|
|
77
|
+
- Handshake adds `audited-remediation-dependency-knowledge-refresh-v1` while protocol and state schema
|
|
78
|
+
remain `2/2`.
|
|
79
|
+
|
|
80
|
+
## Signal-shaped evidence
|
|
81
|
+
|
|
82
|
+
The focused E2E reproduces the real post-install boundary, including an older approved manifest hash,
|
|
83
|
+
an exact package/lock update commit, a stale Knowledge observation, an active Milestone, one blocked
|
|
84
|
+
required consumer and the later ordinary Step. It proves the complete continuation rather than only
|
|
85
|
+
the Knowledge assessment or materialization command.
|
|
86
|
+
|
|
87
|
+
Live Signal installation and mutation remain post-publication actions. They must install exact
|
|
88
|
+
repository-local beta.12.11, commit only package/lock, run sequential handshake/status/next, follow the
|
|
89
|
+
advertised audited-remediation route and confirm Core readback. No manual state edit, Git history
|
|
90
|
+
rewrite, Task cancellation or duplicate Milestone is part of the recovery.
|
|
91
|
+
|
|
92
|
+
## PDF release documentation evidence
|
|
93
|
+
|
|
94
|
+
- All three tracked Russian PDFs were regenerated from beta.12.11 Markdown sources.
|
|
95
|
+
- Architecture is 8 pages, the delegated chat-only guide is 10 pages, and the technical reference is
|
|
96
|
+
13 pages. All 31 pages were rendered to PNG and visually inspected.
|
|
97
|
+
- Titles, package bindings, Cyrillic text, tables, code blocks, margins, footers and the new
|
|
98
|
+
dependency-Knowledge sections have no visible clipping, overlap or unreadable content.
|
|
99
|
+
|
|
100
|
+
## Existing boundaries and non-claims
|
|
101
|
+
|
|
102
|
+
- The route does not permit arbitrary Task insertion, Task removal, semantic Milestone scope change,
|
|
103
|
+
arbitrary dependency rewiring, completed-Step adoption or `split-required` replacement.
|
|
104
|
+
- It does not auto-approve README, documentation, commands, classifications, authorities, gaps,
|
|
105
|
+
conflicts, dirty files or package commits containing any non-Workflow change.
|
|
106
|
+
- Protocol version remains 2 and state schema remains 2; no state migration is required.
|
|
107
|
+
- This report does not claim Git tag/push, npm publication or live Signal recovery before those
|
|
108
|
+
post-gate operations are read back separately.
|
|
109
|
+
|
|
110
|
+
Confidence is high for the package implementation, bounded no-Human dependency Knowledge refresh,
|
|
111
|
+
transaction atomicity, regression compatibility, tarball composition, downstream installation,
|
|
112
|
+
gateway and documentation. Live Signal confidence remains conditional on exact publication,
|
|
113
|
+
installation and fresh Core/Coordinator readback.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-workflow-v2",
|
|
3
|
-
"version": "2.0.0-beta.12.
|
|
3
|
+
"version": "2.0.0-beta.12.11",
|
|
4
4
|
"description": "Requirements-first Codex development workflow with local state and explicit Git ownership.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -33,7 +33,10 @@
|
|
|
33
33
|
"roles",
|
|
34
34
|
"references",
|
|
35
35
|
"plugins",
|
|
36
|
-
"docs",
|
|
36
|
+
"docs/*.md",
|
|
37
|
+
"docs/lifecycle",
|
|
38
|
+
"docs/pdf",
|
|
39
|
+
"docs/problem-briefs",
|
|
37
40
|
"scripts/generate-pdf-docs.py",
|
|
38
41
|
"scripts/run-pdf-docs.mjs",
|
|
39
42
|
"README.md"
|
|
@@ -44,6 +47,8 @@
|
|
|
44
47
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
45
48
|
"test": "node scripts/with-validation-lock.mjs test",
|
|
46
49
|
"test:signal-t04-recovery": "node scripts/with-validation-lock.mjs test-signal-t04",
|
|
50
|
+
"test:signal-t03-replan-e2e": "node scripts/with-validation-lock.mjs test-signal-t03-replan",
|
|
51
|
+
"test:signal-remediation-e2e": "node scripts/with-validation-lock.mjs test-signal-remediation-topology",
|
|
47
52
|
"validate": "npm run typecheck && npm test",
|
|
48
53
|
"pack:check": "npm run build && npm pack --dry-run",
|
|
49
54
|
"smoke:downstream": "npm run build && node scripts/downstream-smoke.mjs",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-workflow-gateway",
|
|
3
|
-
"version": "0.1.0+codex.
|
|
3
|
+
"version": "0.1.0+codex.20260830183000",
|
|
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.12.
|
|
3
|
+
## beta.12.6 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
|
|
@@ -8,6 +8,23 @@
|
|
|
8
8
|
It records a replan posture without changing Plan or product files; corrective yield and the
|
|
9
9
|
existing state-bound corrective-replan Human gate remain mandatory.
|
|
10
10
|
|
|
11
|
+
- When fresh `next` advertises `task downstream-proof-recover`, Core has proved that every dirty
|
|
12
|
+
file outside the active Step belongs to a completed transitive predecessor and that recorded Git
|
|
13
|
+
history is intact. Invoke the exact lease-bound transition once. It preserves product files and
|
|
14
|
+
HEAD, invalidates stale predecessor completion authority with an append-only event, yields C1,
|
|
15
|
+
and routes the same Task to ordinary `task plan-set`. The replacement Plan, risk audit, and
|
|
16
|
+
execution authorization are fresh authority; no Task or Milestone recreation is involved.
|
|
17
|
+
|
|
18
|
+
- When an older installed package cannot reach that recovery because its normal update preflight
|
|
19
|
+
requires a clean checkout, beta.12.6 permits one bounded dependency transport. The active
|
|
20
|
+
Milestone base and Task branch must first receive separate exact commits changing only
|
|
21
|
+
`package.json` and `package-lock.json`; product work remains dirty and uncommitted. Fresh beta.12.6
|
|
22
|
+
`next` must then advertise `update downstream-proof-dependency-recover`. Its preflight proves the
|
|
23
|
+
Task history at `HEAD^`, the dependency candidate at `HEAD`, aligned version surfaces, no lease or
|
|
24
|
+
transaction, exact predecessor ownership, and a content hash of the dirty set. Recovery registers
|
|
25
|
+
only the dependency commit. It does not mutate product files or Step state; fresh `next` must
|
|
26
|
+
proceed to `task downstream-proof-recover`, which outranks manifest-induced Knowledge staleness.
|
|
27
|
+
|
|
11
28
|
- `update dependency-provenance-preflight --id <TASK-ID>` is read-only. The matching
|
|
12
29
|
`update dependency-provenance-recover --id <TASK-ID> --expected-revision <N> --actor <ACTOR>
|
|
13
30
|
--reason <TEXT>` is valid only when preflight and fresh `next` both advertise it. Historical
|
|
@@ -16,10 +33,29 @@
|
|
|
16
33
|
`retainedHistoricalCommits`.
|
|
17
34
|
Task-local manifest/lock fields from recorded history may differ from the base, but the candidate
|
|
18
35
|
commit must preserve them exactly while changing only the Workflow dependency entries.
|
|
36
|
+
- `task historical-step-provenance-preflight --id <TASK-ID>` is read-only. The matching
|
|
37
|
+
`task historical-step-provenance-recover` is available only for one unexpected product commit
|
|
38
|
+
with an intact passed strict-review chain, matching prior final acceptance, no lease or pending
|
|
39
|
+
operation, and dirty files confined to the current active Step. It retains historical authority
|
|
40
|
+
without changing Git, worktree bytes, or the current Plan.
|
|
41
|
+
- `update historical-step-dependency-preflight/recover` handles the same proof when the beta.12.9
|
|
42
|
+
dependency-only commit is the unregistered HEAD. It binds the exact dependency candidate and the
|
|
43
|
+
reviewed historical Step commit in one recovery record, preserves active product bytes, and then
|
|
44
|
+
requires fresh `status` and `next`.
|
|
19
45
|
- `task stop-override-prepare` is a read-only Human gate for the exact beta.11 attempt-four stop
|
|
20
46
|
shape. `task stop-override-apply` requires the same Task revision, Step, actor, reason, Plan, HEAD,
|
|
21
47
|
evidence binding, and returned `SOO-*` code in a later user turn. It appends evidence without
|
|
22
48
|
deleting `stop-escalate`; it never applies to `split-required`.
|
|
49
|
+
- After an applied stop override, one or more ordinary delegated `task context-refresh` transitions
|
|
50
|
+
may rebind the Plan before attempt four. Fresh `next` returns `task run` only when Core validates
|
|
51
|
+
the complete contiguous Plan/rebind/audit chain, mechanical equivalence at every hop, shared
|
|
52
|
+
delegated authority, and append-only chronology. HEAD may differ from the override only when every
|
|
53
|
+
intervening commit is an exact registered dependency-provenance recovery changing only
|
|
54
|
+
`package.json` and `package-lock.json`. If C1 remains claimed but the lease was lost at the Human
|
|
55
|
+
boundary, use only the simultaneously advertised `task writer-credential-replace` action.
|
|
56
|
+
A provenance recovery recorded after the final context-refresh audit may explain exactly one
|
|
57
|
+
additional Task revision only when it belongs to that verified Git chain. Any unexplained
|
|
58
|
+
revision remains a `doctor` boundary.
|
|
23
59
|
- `milestone progress --id <MS-ID>` is a read-only projection and the sole source for Coordinator
|
|
24
60
|
progress tables. It preserves cancelled/replacement Tasks as distinct membership rows.
|
|
25
61
|
- `scripts/chat-registry.mjs` atomically allocates project-monotonic `#NNN`, builds all six title
|
|
@@ -57,6 +93,9 @@ Current capability set:
|
|
|
57
93
|
- `bounded-dependency-provenance-recovery-v1`
|
|
58
94
|
- `task-local-dependency-provenance-recovery-v1`
|
|
59
95
|
- `legacy-stop-escalate-override-v1`
|
|
96
|
+
- `stop-override-context-rebind-v1`
|
|
97
|
+
- `stop-override-context-rebind-chain-v1`
|
|
98
|
+
- `stop-override-post-audit-dependency-revision-v1`
|
|
60
99
|
- `retained-reviewed-history-recovery-v1`
|
|
61
100
|
- `milestone-progress-projection-v1`
|
|
62
101
|
- `strict-reviewer-v1`
|
|
@@ -87,6 +126,8 @@ Current capability set:
|
|
|
87
126
|
- `remediation-mode-recovery-v1`
|
|
88
127
|
- `plan-proof-obligations-v1`
|
|
89
128
|
- `bounded-plan-integrity-recovery-v1`
|
|
129
|
+
- `downstream-proof-predecessor-recovery-v1`
|
|
130
|
+
- `active-downstream-proof-dependency-recovery-v1`
|
|
90
131
|
- `corrective-yield-journal-v1`
|
|
91
132
|
- `corrective-replan-journal-v1`
|
|
92
133
|
- `corrective-replan-human-gate-v1`
|
|
@@ -162,6 +203,13 @@ actor through `--actor`; reviewer identity remains internal to the route.
|
|
|
162
203
|
An unrecorded commit is Git history drift. Stop instead of adding another commit or editing
|
|
163
204
|
workflow state manually; recovery remains coordinator-controlled.
|
|
164
205
|
|
|
206
|
+
If a Docker proof fails with `EPERM`, `operation not permitted`, or `permission denied` at the
|
|
207
|
+
Docker socket/CLI boundary, classify it as sandbox access, not daemon failure. Re-run the exact
|
|
208
|
+
read-only health probe or Plan command once with sandbox escalation; do not charge an infrastructure
|
|
209
|
+
retry. Restarting Docker Desktop or pulling another image is forbidden on this evidence alone. A
|
|
210
|
+
Docker infrastructure failure exists only when an escalated call reaches Docker and independently
|
|
211
|
+
proves the daemon unavailable.
|
|
212
|
+
|
|
165
213
|
## Plan Risk Audit and remediation breaker
|
|
166
214
|
|
|
167
215
|
Before `task authorize`, every new alpha.7 Task requires:
|
|
@@ -261,6 +309,12 @@ working memory. In claimed C1 posture, fresh `next` exposes `writerTokenContract
|
|
|
261
309
|
pass the receipt token through its declared `--writer-token` option on the first run call. The
|
|
262
310
|
successful run returns the refreshed writer receipt for later lease-bound transitions.
|
|
263
311
|
|
|
312
|
+
`task result-set` is also lease-bound. It requires the active `--writer-token` and the exact C1
|
|
313
|
+
claimant in `--actor` when the Task is claimed. Success releases the lease before the Task enters
|
|
314
|
+
`awaiting_final_acceptance`; the token is no longer valid. The Human gate must therefore remain
|
|
315
|
+
lease-free for an arbitrary amount of time. After acceptance, obtain the new merge credential only
|
|
316
|
+
through the `writerCredentialRecovery` action advertised by fresh `next`.
|
|
317
|
+
|
|
264
318
|
## Milestone assembly, autonomy, and human gate
|
|
265
319
|
|
|
266
320
|
During initial planning, materialize every linked Task and then call `milestone plan-set` once
|
|
@@ -50,6 +50,31 @@ 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
|
+
When beta.12.9 fresh `next` advertises `task historical-step-provenance-recover`, Core has found
|
|
54
|
+
exactly one product commit that a corrective Plan omitted from current Step evidence even though the
|
|
55
|
+
commit still has a complete hash-valid passed strict Step Review chain and a matching prior final
|
|
56
|
+
acceptance. First run the advertised read-only `task historical-step-provenance-preflight --id
|
|
57
|
+
<TASK-ID>` and require `eligible=true`, the exact Task revision/Plan/Brief/HEAD, the advertised
|
|
58
|
+
commit SHA, no lease/transaction/Core operation, and dirty files confined to the one active Step's
|
|
59
|
+
`allowedWrites`. Invoke recovery with that exact commit, actor, and a substantive reason. The
|
|
60
|
+
transition records the commit as invalidated historical Step authority plus an audit record; it does
|
|
61
|
+
not adopt the completed Step into the current Plan and does not create, remove, amend, reset, rebase,
|
|
62
|
+
or merge Git commits. Reject multiple or arbitrary unexpected commits, pending/failed review,
|
|
63
|
+
mismatched final acceptance, unrelated dirty files, or damaged sidecars. After success run
|
|
64
|
+
sequential `status` then `next`; the active corrective Step should resume through its ordinary
|
|
65
|
+
credential and `task step-complete` route.
|
|
66
|
+
|
|
67
|
+
When beta.12.9 must itself be installed while this exact historical Step blocker is active, preserve
|
|
68
|
+
the Task worktree and create only two dependency transport commits: one on the active Milestone base
|
|
69
|
+
and one at Task-branch HEAD, each changing exactly `package.json` and `package-lock.json` to the exact
|
|
70
|
+
beta.12.9 package. Do not switch the dirty Task checkout to update the base; use a separate temporary
|
|
71
|
+
worktree. Install the repository-local target package, then require fresh `next` to advertise
|
|
72
|
+
`update historical-step-dependency-recover`. Run the matching read-only preflight and require the
|
|
73
|
+
exact dependency HEAD/parent, Task revision, active Step/Plan, retained historical SHA, dirty-file
|
|
74
|
+
set and dirty-worktree hash, with no lease or pending operation. The matching recover registers both
|
|
75
|
+
authorities without modifying product bytes or Git. After recovery run sequential `status` and
|
|
76
|
+
`next`; do not substitute ordinary dependency recovery, manual state edits, rebase, reset, or amend.
|
|
77
|
+
|
|
53
78
|
Beta.12.1 permits product-owned manifest/lock fields already present in the exact recorded Task
|
|
54
79
|
history to differ from the Milestone base. Core compares candidate parent to candidate HEAD after
|
|
55
80
|
removing only the Workflow dependency entries, so the dependency commit must preserve every such
|
|
@@ -67,6 +92,20 @@ active writer token when the C1 contract requires it. The recovery records only
|
|
|
67
92
|
`task run` merely to manufacture the second failure, and never invoke this recovery for a generic
|
|
68
93
|
test failure, a writable manifest, or unconfined changes.
|
|
69
94
|
|
|
95
|
+
When fresh `next` advertises `task downstream-proof-recover`, the active proof Step has produced
|
|
96
|
+
uncommitted files inside its own `allowedWrites` and has also exposed required changes owned by one
|
|
97
|
+
or more completed transitive predecessor Steps. Do not invoke `task step-complete`: its scope is
|
|
98
|
+
known to be stale. Use only the exact returned Task revision, claimant/lease actor, writer-token
|
|
99
|
+
contract, and a substantive reason. The atomic recovery preserves the worktree and HEAD, moves the
|
|
100
|
+
predecessor completion commits into historical `invalidatedStepCommits`, clears only the invalidated
|
|
101
|
+
completion evidence, blocks the active proof Step, supersedes execution authorization, appends
|
|
102
|
+
`downstream-proof-invalidations.jsonl`, releases C1/lease authority, and returns the same Task to
|
|
103
|
+
ordinary `task plan-set`. Build the replacement Plan from the full unfinished remainder, attach a
|
|
104
|
+
fresh Plan Risk Audit, then obtain fresh execution authorization. Never use this route for an
|
|
105
|
+
unrelated dirty file, a non-predecessor file, unregistered Git history, strict-review evidence, or
|
|
106
|
+
without explicit fresh `next` eligibility. Do not reset, stash, commit, or recreate the Task or
|
|
107
|
+
Milestone around this transition.
|
|
108
|
+
|
|
70
109
|
If any step fails, report the concrete diagnostic. Do not load workflow
|
|
71
110
|
semantics from this skill.
|
|
72
111
|
|
|
@@ -93,6 +132,46 @@ into Plan `acceptance` as exact array members; semantic prose may be added but c
|
|
|
93
132
|
IDs. Bind the Plan to the returned `briefHash` and active `knowledgeMap` revision/hash. Stop if the
|
|
94
133
|
contract is absent or conflicts with the current Task/Knowledge state.
|
|
95
134
|
|
|
135
|
+
When fresh repository `next` reports `planRiskAuditDecision.state=recorded-blocking`, decision
|
|
136
|
+
`stop-escalate`, and an `auditedRemediation` object, do not retry authorization and do not invent a
|
|
137
|
+
free-form Milestone scope change. Follow only the advertised route:
|
|
138
|
+
|
|
139
|
+
1. If action is `discovery start`, create one Discovery for the exact missing upstream capability
|
|
140
|
+
proved by the audit. Preserve the current Milestone outcome, success signal, acceptance, checks,
|
|
141
|
+
and original Task scope. Resolve factual unknowns from repository evidence; a genuine unresolved
|
|
142
|
+
product decision remains a semantic blocker.
|
|
143
|
+
2. If action is `discovery update`, complete that same remediation Discovery until it is
|
|
144
|
+
`ready_to_materialize`; do not reuse an unrelated Discovery.
|
|
145
|
+
3. If action is `milestone remediation-materialize`, use its exact Milestone/Task revisions and
|
|
146
|
+
audit binding. The JSON input contains only `discoveryId`, `expectedDiscoveryRevision`, `title`,
|
|
147
|
+
and `predecessorTaskIds`; the predecessor list must exactly equal
|
|
148
|
+
`auditedRemediation.requiredPredecessorTaskIds`. No actor, confirmation code, delegation grant,
|
|
149
|
+
replacement Milestone Plan, or human approval is accepted.
|
|
150
|
+
4. Run sequential `status` then repository `next`. Core must prioritize the new remediation Task.
|
|
151
|
+
Plan, audit, hand off, implement, review, accept, and merge it normally. At Task execution
|
|
152
|
+
authorization and final acceptance, use the exact `correctiveDerivedApproval.actor` returned by
|
|
153
|
+
fresh `next`; `humanApprovalRequired` must be false. Do not pass a delegation grant.
|
|
154
|
+
5. After the remediation Task is `merged`, fresh `next` must return the original blocked Task to
|
|
155
|
+
`task plan-set` with `auditedRemediation.state=merged-replan-required`. Replace its rejected Plan,
|
|
156
|
+
record a fresh Risk Audit, use the same current derived approval only when advertised, and
|
|
157
|
+
continue through at least the next ordinary Step boundary.
|
|
158
|
+
|
|
159
|
+
An exact package update may make the approved Knowledge Map stale while this route is active. Continue
|
|
160
|
+
without a Human approval only when fresh `next` includes
|
|
161
|
+
`auditedRemediation.dependencyKnowledgeRefresh.eligible=true`. Core must prove that `package.json` is
|
|
162
|
+
the sole changed Knowledge source, every version surface equals the repository-local runtime, and every
|
|
163
|
+
Git commit that changed the approved manifest content altered only the exact Workflow dependency in
|
|
164
|
+
`package.json`/`package-lock.json`. Do not run standalone reconcile first. The refresh is committed
|
|
165
|
+
atomically by `milestone remediation-materialize` with corrective-derived evidence. Any other Knowledge
|
|
166
|
+
path, classification, gap, conflict, dirty checkout, unaligned version or wider commit returns to the
|
|
167
|
+
ordinary explicit Knowledge flow.
|
|
168
|
+
|
|
169
|
+
This is an idempotent, additive topology transition bound to one exact Plan Risk Audit. Dirty Git,
|
|
170
|
+
any lease/transaction/Core operation, a started blocked Task, stale Task/Milestone/audit bindings,
|
|
171
|
+
non-merged or non-exact predecessors, duplicate use of the audit, or any changed Milestone semantic
|
|
172
|
+
field is a hard stop. Generic `stop-escalate` shapes without `auditedRemediation` remain terminal
|
|
173
|
+
user attention. Final Milestone acceptance remains an ordinary human/delegated gate.
|
|
174
|
+
|
|
96
175
|
When `next` returns top-level `action: task context-refresh`, use only that atomic action for
|
|
97
176
|
the returned Task/map revisions, actor, and grant. Do not run standalone `project-memory reconcile`
|
|
98
177
|
first: Core rejects it because it would create a human-approval gap and strand the Task. A
|
|
@@ -109,7 +188,7 @@ command shape or consuming a replacement Discovery. Never rebind, refresh, repla
|
|
|
109
188
|
resume, cancel, or manually replace the historical Task. Continue only after a later P04-B/P05
|
|
110
189
|
package explicitly advertises a topology-preserving replacement capability.
|
|
111
190
|
|
|
112
|
-
When beta.12.
|
|
191
|
+
When beta.12.6 `next` advertises `task stop-override-prepare`, the route is limited to the exact
|
|
113
192
|
beta.11 attempt-four policy stop: two ordinary failures, one corrective failure, a matching
|
|
114
193
|
attempt-3 `continue-fix`, and a matching attempt-4 `stop-escalate` under the unchanged Plan. Invoke
|
|
115
194
|
prepare with the exact Task/Step/revision, explicit human actor, and user-supplied reason. It is
|
|
@@ -120,6 +199,53 @@ evidence changes. Successful apply preserves the original stop, appends
|
|
|
120
199
|
`stop-escalate-overrides.jsonl`, and requires fresh sequential `status` then `next` before attempt
|
|
121
200
|
four runs through the normal strict-review cycle.
|
|
122
201
|
|
|
202
|
+
After an applied override, one or more ordinary delegated `task context-refresh` transitions may
|
|
203
|
+
change only the Plan's canonical Knowledge Map binding. A package update may also advance HEAD, but
|
|
204
|
+
only through the exact `update dependency-provenance-recover` route advertised by fresh `next`.
|
|
205
|
+
Continue only when fresh `next` advertises `task run` with
|
|
206
|
+
`stopOverrideContextRebind.state=validated` for the exact override and stop decision. Core verifies
|
|
207
|
+
the complete source-to-current Plan/audit/rebind chain and, when HEAD changed, every intervening Git
|
|
208
|
+
commit as registered dependency-only provenance. If C1 remains claimed but the lease was lost at
|
|
209
|
+
the Human boundary, first use the simultaneously advertised `task writer-credential-replace`
|
|
210
|
+
action for the exact claimant. A doctor route, semantic Plan drift, an unregistered or non-dependency
|
|
211
|
+
commit, missing delegated authority, a broken chain, or damaged chronology is a hard stop.
|
|
212
|
+
When advertised navigation records dependency provenance after the final context-refresh audit,
|
|
213
|
+
Core may account for exactly one Task revision per ordered verified recovery. Never infer this
|
|
214
|
+
compatibility from revision arithmetic alone: continue only when fresh `next` returns the validated
|
|
215
|
+
`task run` route. An unrelated extra revision remains a hard stop.
|
|
216
|
+
|
|
217
|
+
For the exact beta.12.6 active-downstream-proof update deadlock, do not apply the ordinary
|
|
218
|
+
clean-boundary update recipe and do not stash/reset/commit product work. This exception is available
|
|
219
|
+
only when a completed transitive predecessor and the active proof Step already own the complete dirty
|
|
220
|
+
set, no writer lease/transaction/Core operation exists, and the active Milestone base can be updated
|
|
221
|
+
in a separate worktree. Commit only exact `package.json`/`package-lock.json` dependency changes on
|
|
222
|
+
that base, then commit only the same dependency files on the current Task branch while leaving all
|
|
223
|
+
product bytes untouched. Install the exact beta.12.6 package and use only a fresh advertised
|
|
224
|
+
`update downstream-proof-dependency-recover`. Run its read-only preflight first and require
|
|
225
|
+
`eligible=true`, empty blockers, exact Task revision and non-null `activeDownstreamProof` binding.
|
|
226
|
+
Require recorded Task history to validate at `HEAD^` and the exact dependency-only candidate to be
|
|
227
|
+
`HEAD`; neither boundary may contain an unrelated or unregistered commit. The mutation registers
|
|
228
|
+
only the dependency HEAD. Immediately run sequential `status` then `next`;
|
|
229
|
+
continue only to the returned `task downstream-proof-recover` (including advertised writer-credential
|
|
230
|
+
recovery when required). Any unrelated dirty path, unknown history, wider candidate commit, stale
|
|
231
|
+
base, version mismatch, lease, transaction, or different route is a hard stop and never authorizes
|
|
232
|
+
manual external-state edits.
|
|
233
|
+
|
|
234
|
+
For the exact beta.12.6 post-recovery knowledge-rebind deadlock, an exact beta.12.7 external runner
|
|
235
|
+
may execute only the read-only `update downstream-proof-replan-update-preflight` before dependency
|
|
236
|
+
transport. Require `eligible=true`, source version beta.12.6 on declared/locked/installed/current/base
|
|
237
|
+
surfaces, the exact Task revision/HEAD/dirty hash, no current audit for the rebound Plan, and no lease,
|
|
238
|
+
transaction, or Core operation. Commit only `package.json` and `package-lock.json` on the active
|
|
239
|
+
Milestone base, then only the same dependency files on the Task branch without touching product
|
|
240
|
+
bytes. Install beta.12.7 and follow fresh `next` only through
|
|
241
|
+
`update downstream-proof-replan-dependency-recover`, then
|
|
242
|
+
`task downstream-proof-replan-recover`, and finally ordinary `task plan-set`. The recovery keeps the
|
|
243
|
+
same Task, history, Knowledge binding, invalidated predecessor evidence, and dirty worktree. After
|
|
244
|
+
the replacement Plan is audited and authorized, `task run` is valid only when fresh `next` reports
|
|
245
|
+
`downstreamProofCarryover.state=validated` for one Step owning the complete hash-bound dirty set.
|
|
246
|
+
Any wider dependency commit, dirty-byte change, current audit, extra Task revision, missing binding,
|
|
247
|
+
or alternate route is a hard stop.
|
|
248
|
+
|
|
123
249
|
When `next` returns `milestone initial-assembly`, execution is unavailable. Follow only the
|
|
124
250
|
advertised `linked-task-assembly.commands` (`discovery start` and `discovery materialize`) until all
|
|
125
251
|
intended linked Tasks exist. The closing `milestone plan-set` option appears only after at least one
|
|
@@ -140,6 +266,17 @@ For `task start`, the policy applies only when choosing `--workspace-owner local
|
|
|
140
266
|
`task step-complete`, `task merge`, and `task sync-base`, the advertised transition itself
|
|
141
267
|
writes Git metadata.
|
|
142
268
|
|
|
269
|
+
Treat Docker access diagnostics before classifying an infrastructure failure. `EPERM`,
|
|
270
|
+
`operation not permitted`, or `permission denied` while opening the Docker socket or invoking the
|
|
271
|
+
Docker CLI from a sandbox means the proof is unavailable at the current execution boundary; it is
|
|
272
|
+
not evidence that the daemon or image is broken. Re-run the exact read-only health probe or exact
|
|
273
|
+
Plan check once with the required sandbox escalation. This escalation rerun does not consume a
|
|
274
|
+
Workflow remediation attempt or a local infrastructure retry. Only an escalated probe that reaches
|
|
275
|
+
Docker and reports an unavailable daemon may be classified as a Docker infrastructure failure.
|
|
276
|
+
Never start, stop, or restart Docker Desktop, pull a substitute image, or mutate Docker state merely
|
|
277
|
+
because the sandboxed call returned a permission error; those actions require their own explicit
|
|
278
|
+
authorization and evidence.
|
|
279
|
+
|
|
143
280
|
When `next` includes `writerTokenContract`, treat it as an exact first-call precondition. Retain
|
|
144
281
|
the active writer lease from the first-field `writerLeaseReceipt` returned by `task run` and pass it using the advertised `option` for that
|
|
145
282
|
transition. The token is sensitive: never print, summarize, persist, or substitute a redacted
|
|
@@ -154,6 +291,16 @@ the fresh `next.writerTokenContract` requires it. Successful `task run` returns
|
|
|
154
291
|
`writerLeaseReceipt`; retain it only until Core releases that lease.
|
|
155
292
|
Never search later payload fields for either credential and never copy credentials into evidence.
|
|
156
293
|
|
|
294
|
+
When a passed final Task review routes to `task result-set`, pass the active writer credential and,
|
|
295
|
+
for claimed C1 posture, the exact claimant as `--actor`. A successful `result-set` consumes that
|
|
296
|
+
execution lease before entering `awaiting_final_acceptance`; never reuse the old token and never
|
|
297
|
+
leave or manufacture a lease while waiting for the Human decision. After `task accept`, follow fresh
|
|
298
|
+
`next`: local merge or external merge confirmation normally advertises
|
|
299
|
+
`task writer-credential-replace`, which acquires a new bounded lease for the exact recovery actor.
|
|
300
|
+
If a Task created under beta.12.7 or earlier is already at the Human gate with a stale lease, use
|
|
301
|
+
only the exact `locks repair` route returned by repository-level `next`, verify that Task revision,
|
|
302
|
+
review, Result/Evidence hashes, and HEAD did not change, and stop before acceptance.
|
|
303
|
+
|
|
157
304
|
Command discovery with `codex-workflow <noun> [action] --help` is read-only. Use it only when the
|
|
158
305
|
exact invocation syntax is not already available from `next` and this protocol. Consume declared
|
|
159
306
|
`requiredOptions` and `optionalOptions`; when `exactOptionContractAvailable=false`, consult the
|
|
@@ -398,7 +545,8 @@ Plan audit based only on count. Follow fresh `next`: ordinary findings default t
|
|
|
398
545
|
`route=replan` is valid only with the exact Plan clause, obstruction, and minimal Plan change
|
|
399
546
|
retained by Core. A remediation Plan may change implementation Steps but must preserve the Task
|
|
400
547
|
objective, requirements, and acceptance. Explicit split or stop decisions still stop ordinary
|
|
401
|
-
continuation
|
|
548
|
+
continuation; only an exact Core-advertised audited-remediation route may turn a pre-execution
|
|
549
|
+
`stop-escalate` into additive upstream work.
|
|
402
550
|
|
|
403
551
|
When `next.strictStepReview.recommendedMode` is `external-sealed`, do not launch the nested local
|
|
404
552
|
reviewer from inside a Codex App sandbox. Run the advertised read-only `task step-review-packet`,
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"evidenceHash": { "$ref": "#/$defs/nullableHash" },
|
|
20
20
|
"headCommit": { "$ref": "#/$defs/nullableHash" },
|
|
21
21
|
"reason": { "type": "string" },
|
|
22
|
-
"authorizationMode": { "enum": ["human", "delegated"] },
|
|
22
|
+
"authorizationMode": { "enum": ["human", "delegated", "corrective-derived"] },
|
|
23
23
|
"delegation": { "$ref": "#/$defs/delegation" },
|
|
24
24
|
"mechanicalFeasibility": { "$ref": "#/$defs/mechanicalFeasibility" }
|
|
25
25
|
},
|
|
@@ -30,6 +30,13 @@
|
|
|
30
30
|
"required": ["authorizationMode"]
|
|
31
31
|
},
|
|
32
32
|
"then": { "required": ["delegation"] }
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"if": {
|
|
36
|
+
"properties": { "authorizationMode": { "const": "corrective-derived" } },
|
|
37
|
+
"required": ["authorizationMode"]
|
|
38
|
+
},
|
|
39
|
+
"then": { "not": { "required": ["delegation"] } }
|
|
33
40
|
}
|
|
34
41
|
],
|
|
35
42
|
"$defs": {
|