codex-workflow-v2 2.0.0-beta.10 → 2.0.0-beta.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 +43 -9
- package/dist/src/alpha6/handoff.d.ts +4 -3
- package/dist/src/alpha6/handoff.js +58 -3
- package/dist/src/alpha6/handoff.js.map +1 -1
- package/dist/src/alpha6/mechanical-feasibility.d.ts +7 -0
- package/dist/src/alpha6/mechanical-feasibility.js +303 -0
- package/dist/src/alpha6/mechanical-feasibility.js.map +1 -0
- package/dist/src/alpha6/milestone.d.ts +25 -2
- package/dist/src/alpha6/milestone.js +359 -32
- package/dist/src/alpha6/milestone.js.map +1 -1
- package/dist/src/alpha6/plan-integrity.d.ts +14 -0
- package/dist/src/alpha6/plan-integrity.js +127 -0
- package/dist/src/alpha6/plan-integrity.js.map +1 -0
- package/dist/src/alpha6/remediation.d.ts +2 -1
- package/dist/src/alpha6/remediation.js +168 -3
- package/dist/src/alpha6/remediation.js.map +1 -1
- package/dist/src/cli.js +13 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +69 -1
- package/dist/src/git.d.ts +1 -1
- package/dist/src/git.js +8 -1
- package/dist/src/git.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lifecycle/corrective-replan.js +8 -3
- package/dist/src/lifecycle/corrective-replan.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/workflow.d.ts +5 -0
- package/dist/src/workflow.js +399 -90
- package/dist/src/workflow.js.map +1 -1
- package/docs/autonomy-guardrails.md +21 -0
- package/docs/beta11-plan-integrity-recovery-brief.md +38 -0
- package/docs/development-flow.md +31 -6
- package/docs/lifecycle/state-machine-stabilization.md +1 -1
- package/docs/pdf/README.md +24 -0
- 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/requirements.txt +1 -0
- package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +234 -0
- package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +334 -0
- package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +413 -0
- package/docs/problem-briefs/01-pre-implementation-integrity.md +478 -0
- package/docs/problem-briefs/02-minimal-step-integrity.md +411 -0
- package/docs/problem-briefs/03-minimal-agent-context-integrity.md +358 -0
- package/docs/problem-briefs/04-task-dependency-and-structural-replacement-integrity.md +566 -0
- package/docs/problem-briefs/BRIEF-TEMPLATE.md +56 -0
- package/docs/problem-briefs/README.md +120 -0
- package/docs/problem-briefs/evidence/p01-mechanical-feasibility-corpus.md +90 -0
- package/docs/problem-briefs/evidence/signal-v4-pre-m3-replay.md +246 -0
- package/docs/release.md +15 -6
- package/docs/split-required-recovery.md +19 -26
- package/docs/validation-report.md +116 -77
- package/package.json +5 -1
- package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +1 -1
- package/plugins/codex-workflow-gateway/references/protocol.md +19 -2
- package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +17 -3
- package/references/state-machine.md +9 -5
- package/schemas/authorization-event.schema.json +64 -1
- package/schemas/corrective-decision-event.schema.json +48 -3
- package/schemas/milestone-scope-change-event.schema.json +6 -1
- package/schemas/milestone.schema.json +6 -1
- package/schemas/task-handoff-event.schema.json +18 -2
- package/scripts/generate-pdf-docs.py +512 -0
- package/scripts/run-pdf-docs.mjs +62 -0
|
@@ -1,85 +1,124 @@
|
|
|
1
|
-
# V2 beta.
|
|
1
|
+
# V2 beta.11 Validation Report
|
|
2
2
|
|
|
3
|
-
Release candidate `2.0.0-beta.
|
|
3
|
+
Release candidate `2.0.0-beta.11` was validated on 2026-08-24 with Node.js 24.17.0.
|
|
4
4
|
|
|
5
5
|
## Automated release evidence
|
|
6
6
|
|
|
7
|
-
- `npm
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
- `npm run pack:check` passed
|
|
11
|
-
|
|
12
|
-
- `npm run smoke:downstream` packed and installed the actual beta.
|
|
13
|
-
then passed the packaged CLI handshake. The first sandboxed attempt was network-blocked
|
|
14
|
-
fetching `ajv`; the authorized network retry passed.
|
|
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
|
|
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
15
|
- `npm run plugin:check`, the plugin-creator structural validator, the skill validator,
|
|
16
|
-
`npm run release:check`, and `git diff --check` passed. The bundled
|
|
17
|
-
`0.1.0+codex.
|
|
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
|
-
- The
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
`
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
## External App-runtime limitation retained
|
|
72
|
-
|
|
73
|
-
Plugin CLI installation and cache readback passed. A currently open Codex task can still retain the
|
|
74
|
-
skill path injected when that task started; loading the new personal plugin version requires a new
|
|
75
|
-
Codex task. This is an App runtime/catalog lifetime boundary, not a package or Workflow-state
|
|
76
|
-
failure.
|
|
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.
|
|
77
71
|
|
|
78
72
|
## Not claimed
|
|
79
73
|
|
|
80
|
-
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
74
|
+
- 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.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-workflow-v2",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.11",
|
|
4
4
|
"description": "Requirements-first Codex development workflow with local state and explicit Git ownership.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -34,6 +34,8 @@
|
|
|
34
34
|
"references",
|
|
35
35
|
"plugins",
|
|
36
36
|
"docs",
|
|
37
|
+
"scripts/generate-pdf-docs.py",
|
|
38
|
+
"scripts/run-pdf-docs.mjs",
|
|
37
39
|
"README.md"
|
|
38
40
|
],
|
|
39
41
|
"scripts": {
|
|
@@ -46,6 +48,8 @@
|
|
|
46
48
|
"pack:check": "npm run build && npm pack --dry-run",
|
|
47
49
|
"smoke:downstream": "npm run build && node scripts/downstream-smoke.mjs",
|
|
48
50
|
"plugin:check": "node scripts/validate-plugin.mjs",
|
|
51
|
+
"docs:pdf": "node scripts/run-pdf-docs.mjs",
|
|
52
|
+
"docs:pdf:check": "node scripts/run-pdf-docs.mjs --check",
|
|
49
53
|
"release:check": "node scripts/release-check.mjs",
|
|
50
54
|
"publish:release": "node scripts/publish.mjs"
|
|
51
55
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-workflow-gateway",
|
|
3
|
-
"version": "0.1.0+codex.
|
|
3
|
+
"version": "0.1.0+codex.20260824113210",
|
|
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,12 @@
|
|
|
1
1
|
# Gateway Protocol V2
|
|
2
2
|
|
|
3
|
-
## beta.
|
|
3
|
+
## beta.11 coordinator projections, retained review provenance, chat registry, and Plan-integrity recovery
|
|
4
|
+
|
|
5
|
+
- When fresh `next` advertises `task plan-integrity-recover`, consume its exact Task revision,
|
|
6
|
+
Step, actor, and writer-token contract. This route is valid only for the Core-derived
|
|
7
|
+
first-failure missing-root-npm-script evidence and must be followed by fresh `status -> next`.
|
|
8
|
+
It records a replan posture without changing Plan or product files; corrective yield and the
|
|
9
|
+
existing state-bound corrective-replan Human gate remain mandatory.
|
|
4
10
|
|
|
5
11
|
- `update dependency-provenance-preflight --id <TASK-ID>` is read-only. The matching
|
|
6
12
|
`update dependency-provenance-recover --id <TASK-ID> --expected-revision <N> --actor <ACTOR>
|
|
@@ -38,7 +44,7 @@ Current capability set:
|
|
|
38
44
|
- `delegated-approval-v1`
|
|
39
45
|
- `task-knowledge-rebind-v1`
|
|
40
46
|
- `task-context-refresh-v1`
|
|
41
|
-
- `
|
|
47
|
+
- `structural-task-replacement-disabled-v1`
|
|
42
48
|
- `project-composite-transaction-journal-v1`
|
|
43
49
|
- `corrective-plan-audit-v1`
|
|
44
50
|
- `safe-update-preflight-v1`
|
|
@@ -52,7 +58,10 @@ Current capability set:
|
|
|
52
58
|
- `step-remediation-circuit-breaker-sidecar-v1`
|
|
53
59
|
- `milestone-scope-change-sidecar-v1`
|
|
54
60
|
- `milestone-membership-integrity-v1`
|
|
61
|
+
- `milestone-task-dependency-dag-v1`
|
|
62
|
+
- `milestone-initial-plan-transaction-v1`
|
|
55
63
|
- `task-c1-handoff-sidecar-v1`
|
|
64
|
+
- `task-mechanical-feasibility-v1`
|
|
56
65
|
- `semantic-plan-risk-audit-v2`
|
|
57
66
|
- `guarded-remediation-hard-stop-v1`
|
|
58
67
|
- `milestone-reverse-membership-integrity-v1`
|
|
@@ -62,10 +71,18 @@ Current capability set:
|
|
|
62
71
|
- `milestone-initial-assembly-v1`
|
|
63
72
|
- `milestone-initial-assembly-navigation-v2`
|
|
64
73
|
- `milestone-autonomy-contract-v1`
|
|
74
|
+
- `milestone-autonomy-content-refresh-v1`
|
|
65
75
|
- `milestone-autonomous-membership-evolution-v1`
|
|
66
76
|
- `task-c1-derived-worker-actor-v1`
|
|
67
77
|
- `guarded-corrective-auditor-routing-v1`
|
|
78
|
+
- `corrective-decision-context-recovery-v1`
|
|
79
|
+
- `remediation-mode-recovery-v1`
|
|
68
80
|
- `plan-proof-obligations-v1`
|
|
81
|
+
- `bounded-plan-integrity-recovery-v1`
|
|
82
|
+
- `corrective-yield-journal-v1`
|
|
83
|
+
- `corrective-replan-journal-v1`
|
|
84
|
+
- `corrective-replan-human-gate-v1`
|
|
85
|
+
- `corrective-replan-protocol-v2`
|
|
69
86
|
|
|
70
87
|
Protocol `1` and schema `2` remain valid only because alpha.7 is additive. The gateway must
|
|
71
88
|
not claim compatibility if canonical entity shapes or non-additive command semantics change.
|
|
@@ -50,6 +50,17 @@ 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
|
+
The beta.11 bounded Plan-integrity route prevents a known impossible check from consuming a second
|
|
54
|
+
ordinary remediation attempt. Use `task plan-integrity-recover` only when fresh `next` advertises
|
|
55
|
+
it for the exact failed Task/Step/revision. Require `state=eligible`, no blockers, one first
|
|
56
|
+
`checks-failed` remediation, an exact missing root npm script, `package.json` outside the Step's
|
|
57
|
+
`allowedWrites`, and a dirty-file set confined to that Step. Pass the exact returned actor and the
|
|
58
|
+
active writer token when the C1 contract requires it. The recovery records only a bound early
|
|
59
|
+
`replan-required` decision: it does not edit the Plan or worktree. Then follow fresh `next` through
|
|
60
|
+
`task corrective-yield` and the existing Human-confirmed corrective-replan flow. Never repeat
|
|
61
|
+
`task run` merely to manufacture the second failure, and never invoke this recovery for a generic
|
|
62
|
+
test failure, a writable manifest, or unconfined changes.
|
|
63
|
+
|
|
53
64
|
If any step fails, report the concrete diagnostic. Do not load workflow
|
|
54
65
|
semantics from this skill.
|
|
55
66
|
|
|
@@ -85,9 +96,12 @@ Autonomy Grant. Never infer eligibility from the Plan yourself; if Core returns
|
|
|
85
96
|
`contextRefreshBlocked.unsafeDifferences`, use the ordinary visible Knowledge Map flow.
|
|
86
97
|
|
|
87
98
|
When `next` reports terminal `split-required`, follow `docs/split-required-recovery.md` from the
|
|
88
|
-
installed package.
|
|
89
|
-
|
|
90
|
-
|
|
99
|
+
installed package. P04-A returns `doctor` with blocked action `task replacement-materialize`,
|
|
100
|
+
diagnostic `STRUCTURAL_REPLACEMENT_REQUIRED`, and
|
|
101
|
+
`replacementGate.structuralReplacementAvailable=false`. Stop without invoking the retained
|
|
102
|
+
command shape or consuming a replacement Discovery. Never rebind, refresh, replan, authorize,
|
|
103
|
+
resume, cancel, or manually replace the historical Task. Continue only after a later P04-B/P05
|
|
104
|
+
package explicitly advertises a topology-preserving replacement capability.
|
|
91
105
|
|
|
92
106
|
When `next` returns `milestone initial-assembly`, execution is unavailable. Follow only the
|
|
93
107
|
advertised `linked-task-assembly.commands` (`discovery start` and `discovery materialize`) until all
|
|
@@ -78,20 +78,24 @@ the grant's Milestone. Every added source must match the Plan, and removals, can
|
|
|
78
78
|
wildcard or directory targets, existing source category/scope/authority changes, gaps, and
|
|
79
79
|
conflicts fail closed before any state write. `next` exposes the composite option only when the
|
|
80
80
|
full predicate passes and otherwise reports concrete unsafe differences. Both update paths journal
|
|
81
|
-
`state.json`, `plan.json`, and `scope-change-events.jsonl` together.
|
|
82
|
-
|
|
81
|
+
`state.json`, `plan.json`, and `scope-change-events.jsonl` together. Initial Plan publication uses
|
|
82
|
+
the same recovery journal for `state.json` and `plan.json`. Membership and dependency integrity is
|
|
83
|
+
validated before scheduling, handoff, claim (before lease acquisition), Task start, Milestone
|
|
84
|
+
validation, scope change, and repository `next`.
|
|
83
85
|
The same guard scans in reverse and blocks every live Task whose `milestoneId` is absent from
|
|
84
86
|
the Milestone's required/waived/cancelled classification.
|
|
85
87
|
|
|
86
88
|
`C1` coordination is machine-bound but local: `task handoff-prepare` returns a one-time claim
|
|
87
89
|
token and prompt bound to a stable handoff ID, revision, context hashes, Milestone positions,
|
|
88
|
-
delegate/grant, expected next action,
|
|
90
|
+
Milestone revision, membership revision, Milestone Plan hash, delegate/grant, expected next action,
|
|
91
|
+
and expiry. `task claim` validates those bindings and
|
|
89
92
|
activates claimant-only mutation; terminal `task handback-create` returns result, evidence,
|
|
90
93
|
review, knowledge, limitation, and recommended-next bindings. Milestone Tasks must be claimed
|
|
91
94
|
before start. If no target is supplied, Core derives `agent:worker:<task-id>`. No part of this
|
|
92
95
|
contract requires or proves a physically separate Codex thread.
|
|
93
96
|
|
|
94
|
-
Repository-level scheduling respects current Milestone membership
|
|
95
|
-
is eligible only for an `active` Milestone with `required` disposition
|
|
97
|
+
Repository-level scheduling respects current Milestone membership and its canonical dependency
|
|
98
|
+
DAG. A linked Task is eligible only for an `active` Milestone with `required` disposition after
|
|
99
|
+
all required predecessors are `merged`. Historical unstarted
|
|
96
100
|
Tasks from `waived`, `cancelled`, accepted, or cancelled Milestone paths cannot shadow the
|
|
97
101
|
Milestone/repository transition returned by `next`.
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
"headCommit": { "$ref": "#/$defs/nullableHash" },
|
|
21
21
|
"reason": { "type": "string" },
|
|
22
22
|
"authorizationMode": { "enum": ["human", "delegated"] },
|
|
23
|
-
"delegation": { "$ref": "#/$defs/delegation" }
|
|
23
|
+
"delegation": { "$ref": "#/$defs/delegation" },
|
|
24
|
+
"mechanicalFeasibility": { "$ref": "#/$defs/mechanicalFeasibility" }
|
|
24
25
|
},
|
|
25
26
|
"allOf": [
|
|
26
27
|
{
|
|
@@ -50,6 +51,68 @@
|
|
|
50
51
|
]
|
|
51
52
|
}
|
|
52
53
|
}
|
|
54
|
+
},
|
|
55
|
+
"mechanicalFeasibility": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"additionalProperties": false,
|
|
58
|
+
"required": [
|
|
59
|
+
"schemaVersion", "taskId", "evaluatedTaskRevision", "briefHash", "planHash",
|
|
60
|
+
"sourceKind", "sourceBranch", "evaluatedHead", "baseCommit", "analyzerSetHash",
|
|
61
|
+
"analyzerInputHash", "analyzers", "findings", "decision"
|
|
62
|
+
],
|
|
63
|
+
"properties": {
|
|
64
|
+
"schemaVersion": { "const": 1 },
|
|
65
|
+
"taskId": { "type": "string", "pattern": "^TASK-[0-9A-HJKMNP-TV-Z]{26}$" },
|
|
66
|
+
"evaluatedTaskRevision": { "type": "integer", "minimum": 1 },
|
|
67
|
+
"briefHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
68
|
+
"planHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
69
|
+
"sourceKind": { "enum": ["pre-start-base", "corrective-task-workspace"] },
|
|
70
|
+
"sourceBranch": { "type": "string", "minLength": 1 },
|
|
71
|
+
"evaluatedHead": { "type": "string", "pattern": "^[a-f0-9]{40,64}$" },
|
|
72
|
+
"baseCommit": { "$ref": "#/$defs/nullableHash" },
|
|
73
|
+
"analyzerSetHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
74
|
+
"analyzerInputHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
75
|
+
"analyzers": {
|
|
76
|
+
"type": "array",
|
|
77
|
+
"minItems": 3,
|
|
78
|
+
"maxItems": 3,
|
|
79
|
+
"items": { "$ref": "#/$defs/mechanicalAnalyzer" }
|
|
80
|
+
},
|
|
81
|
+
"findings": {
|
|
82
|
+
"type": "array",
|
|
83
|
+
"items": { "$ref": "#/$defs/mechanicalFinding" }
|
|
84
|
+
},
|
|
85
|
+
"decision": { "enum": ["clear", "blocked"] }
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"mechanicalAnalyzer": {
|
|
89
|
+
"type": "object",
|
|
90
|
+
"additionalProperties": false,
|
|
91
|
+
"required": ["analyzerId", "analyzerVersion"],
|
|
92
|
+
"properties": {
|
|
93
|
+
"analyzerId": {
|
|
94
|
+
"enum": ["wf2.root-npm-script", "wf2.exact-output-path", "wf2.exact-predecessor-path"]
|
|
95
|
+
},
|
|
96
|
+
"analyzerVersion": { "const": 1 }
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"mechanicalFinding": {
|
|
100
|
+
"type": "object",
|
|
101
|
+
"additionalProperties": false,
|
|
102
|
+
"required": [
|
|
103
|
+
"analyzerId", "analyzerVersion", "result", "stepId", "subject", "evidence", "reasonCode"
|
|
104
|
+
],
|
|
105
|
+
"properties": {
|
|
106
|
+
"analyzerId": {
|
|
107
|
+
"enum": ["wf2.root-npm-script", "wf2.exact-output-path", "wf2.exact-predecessor-path"]
|
|
108
|
+
},
|
|
109
|
+
"analyzerVersion": { "const": 1 },
|
|
110
|
+
"result": { "enum": ["pass", "blocked", "unverified"] },
|
|
111
|
+
"stepId": { "type": "string", "pattern": "^STEP-[0-9]{3}(?:-[A-Z0-9-]+)?$" },
|
|
112
|
+
"subject": { "type": "string" },
|
|
113
|
+
"evidence": { "type": "string", "minLength": 1 },
|
|
114
|
+
"reasonCode": { "type": "string", "pattern": "^[A-Z0-9_]+$" }
|
|
115
|
+
}
|
|
53
116
|
}
|
|
54
117
|
}
|
|
55
118
|
}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"eventId": { "type": "string", "minLength": 1 },
|
|
23
23
|
"taskId": { "$ref": "#/$defs/taskId" },
|
|
24
24
|
"stepId": { "$ref": "#/$defs/stepId" },
|
|
25
|
-
"triggeringAttemptCount": { "type": "integer", "minimum":
|
|
25
|
+
"triggeringAttemptCount": { "type": "integer", "minimum": 2 },
|
|
26
26
|
"decision": {
|
|
27
27
|
"enum": ["continue-fix", "replan-required", "split-required", "stop-escalate"]
|
|
28
28
|
},
|
|
@@ -38,18 +38,63 @@
|
|
|
38
38
|
"items": { "type": "string", "minLength": 1 }
|
|
39
39
|
},
|
|
40
40
|
"planHash": { "$ref": "#/$defs/hash64" },
|
|
41
|
+
"recoveryBasis": { "const": "plan-integrity" },
|
|
42
|
+
"planIntegrityEvidence": { "$ref": "#/$defs/planIntegrityEvidence" },
|
|
41
43
|
"previousEventHash": { "$ref": "#/$defs/nullableHash64" },
|
|
42
44
|
"recordedAt": { "type": "string", "format": "date-time" },
|
|
43
45
|
"eventHash": { "$ref": "#/$defs/hash64" }
|
|
44
46
|
},
|
|
45
|
-
"
|
|
47
|
+
"allOf": [
|
|
48
|
+
{
|
|
49
|
+
"if": { "properties": { "triggeringAttemptCount": { "const": 2 } }, "required": ["triggeringAttemptCount"] },
|
|
50
|
+
"then": {
|
|
51
|
+
"required": ["recoveryBasis", "planIntegrityEvidence"],
|
|
52
|
+
"properties": { "decision": { "const": "replan-required" } }
|
|
53
|
+
},
|
|
54
|
+
"else": {
|
|
55
|
+
"not": { "anyOf": [{ "required": ["recoveryBasis"] }, { "required": ["planIntegrityEvidence"] }] }
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"anyOf": [
|
|
46
60
|
{ "properties": { "coveredFindingIds": { "minItems": 1 } } },
|
|
47
61
|
{ "properties": { "coveredEventIds": { "minItems": 1 } } }
|
|
62
|
+
]
|
|
63
|
+
}
|
|
48
64
|
],
|
|
49
65
|
"$defs": {
|
|
50
66
|
"taskId": { "type": "string", "pattern": "^TASK-[0-9A-HJKMNP-TV-Z]{26}$" },
|
|
51
67
|
"stepId": { "type": "string", "pattern": "^STEP-[0-9]{3}(?:-[A-Z0-9-]+)?$" },
|
|
52
68
|
"hash64": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
53
|
-
"nullableHash64": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" }
|
|
69
|
+
"nullableHash64": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" },
|
|
70
|
+
"gitOid": { "type": "string", "pattern": "^[a-f0-9]{40,64}$" },
|
|
71
|
+
"stringList": {
|
|
72
|
+
"type": "array",
|
|
73
|
+
"uniqueItems": true,
|
|
74
|
+
"items": { "type": "string", "minLength": 1 }
|
|
75
|
+
},
|
|
76
|
+
"planIntegrityEvidence": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"additionalProperties": false,
|
|
79
|
+
"required": [
|
|
80
|
+
"kind", "taskRevision", "remediationEventId", "remediationEventHash",
|
|
81
|
+
"manifestPath", "manifestHash", "gitHead", "stepDefinitionHash",
|
|
82
|
+
"missingScripts", "checkCommands", "changedFiles", "conflictHash"
|
|
83
|
+
],
|
|
84
|
+
"properties": {
|
|
85
|
+
"kind": { "const": "missing-npm-script-outside-allowed-writes" },
|
|
86
|
+
"taskRevision": { "type": "integer", "minimum": 1 },
|
|
87
|
+
"remediationEventId": { "type": "string", "minLength": 1 },
|
|
88
|
+
"remediationEventHash": { "$ref": "#/$defs/hash64" },
|
|
89
|
+
"manifestPath": { "const": "package.json" },
|
|
90
|
+
"manifestHash": { "$ref": "#/$defs/nullableHash64" },
|
|
91
|
+
"gitHead": { "$ref": "#/$defs/gitOid" },
|
|
92
|
+
"stepDefinitionHash": { "$ref": "#/$defs/hash64" },
|
|
93
|
+
"missingScripts": { "$ref": "#/$defs/stringList", "minItems": 1 },
|
|
94
|
+
"checkCommands": { "$ref": "#/$defs/stringList", "minItems": 1 },
|
|
95
|
+
"changedFiles": { "$ref": "#/$defs/stringList" },
|
|
96
|
+
"conflictHash": { "$ref": "#/$defs/hash64" }
|
|
97
|
+
}
|
|
98
|
+
}
|
|
54
99
|
}
|
|
55
100
|
}
|
|
@@ -50,7 +50,12 @@
|
|
|
50
50
|
"properties": {
|
|
51
51
|
"taskId": { "$ref": "#/$defs/taskId" },
|
|
52
52
|
"disposition": { "enum": ["required", "waived", "cancelled"] },
|
|
53
|
-
"reason": { "type": "string" }
|
|
53
|
+
"reason": { "type": "string" },
|
|
54
|
+
"dependsOnTaskIds": {
|
|
55
|
+
"type": "array",
|
|
56
|
+
"uniqueItems": true,
|
|
57
|
+
"items": { "$ref": "#/$defs/taskId" }
|
|
58
|
+
}
|
|
54
59
|
}
|
|
55
60
|
},
|
|
56
61
|
"scopeSnapshot": {
|
|
@@ -51,7 +51,12 @@
|
|
|
51
51
|
"properties": {
|
|
52
52
|
"taskId": { "$ref": "#/$defs/taskId" },
|
|
53
53
|
"disposition": { "enum": ["required", "waived", "cancelled"] },
|
|
54
|
-
"reason": { "type": "string" }
|
|
54
|
+
"reason": { "type": "string" },
|
|
55
|
+
"dependsOnTaskIds": {
|
|
56
|
+
"type": "array",
|
|
57
|
+
"uniqueItems": true,
|
|
58
|
+
"items": { "$ref": "#/$defs/taskId" }
|
|
59
|
+
}
|
|
55
60
|
}
|
|
56
61
|
}
|
|
57
62
|
}
|
|
@@ -45,6 +45,12 @@
|
|
|
45
45
|
"planHash": { "$ref": "#/$defs/nullableHash64" },
|
|
46
46
|
"knowledgeMapRevision": { "type": ["integer", "null"], "minimum": 1 },
|
|
47
47
|
"knowledgeMapHash": { "$ref": "#/$defs/nullableHash64" },
|
|
48
|
+
"dependencyBinding": {
|
|
49
|
+
"oneOf": [
|
|
50
|
+
{ "type": "null" },
|
|
51
|
+
{ "$ref": "#/$defs/dependencyBinding" }
|
|
52
|
+
]
|
|
53
|
+
},
|
|
48
54
|
"expectedNext": { "type": "string", "minLength": 1 },
|
|
49
55
|
"delegate": { "type": "string", "minLength": 1 },
|
|
50
56
|
"grantId": { "type": ["string", "null"], "minLength": 1 },
|
|
@@ -94,8 +100,18 @@
|
|
|
94
100
|
"$defs": {
|
|
95
101
|
"taskId": { "type": "string", "pattern": "^TASK-[0-9A-HJKMNP-TV-Z]{26}$" },
|
|
96
102
|
"hash64": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
97
|
-
"nullableHash64": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" }
|
|
98
|
-
|
|
103
|
+
"nullableHash64": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" },
|
|
104
|
+
"dependencyBinding": {
|
|
105
|
+
"type": "object",
|
|
106
|
+
"additionalProperties": false,
|
|
107
|
+
"required": ["milestoneRevision", "membershipRevision", "milestonePlanHash"],
|
|
108
|
+
"properties": {
|
|
109
|
+
"milestoneRevision": { "type": "integer", "minimum": 1 },
|
|
110
|
+
"membershipRevision": { "type": "integer", "minimum": 1 },
|
|
111
|
+
"milestonePlanHash": { "$ref": "#/$defs/hash64" }
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"handback": {
|
|
99
115
|
"type": "object",
|
|
100
116
|
"additionalProperties": false,
|
|
101
117
|
"required": ["status", "mergedCommit", "planHash", "resultHash", "evidenceHash", "reviewAttestationHash", "knowledgeMapRevision", "knowledgeMapHash", "limitations", "recommendedNext"],
|