codex-workflow-v2 2.0.0-beta.12.15 → 2.0.0-beta.12.16
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 +18 -12
- package/dist/src/alpha6/check-support-anchor.d.ts +24 -0
- package/dist/src/alpha6/check-support-anchor.js +102 -0
- package/dist/src/alpha6/check-support-anchor.js.map +1 -0
- package/dist/src/alpha6/downstream-proof.js +4 -2
- package/dist/src/alpha6/downstream-proof.js.map +1 -1
- package/dist/src/alpha6/mechanical-feasibility.js +14 -0
- package/dist/src/alpha6/mechanical-feasibility.js.map +1 -1
- package/dist/src/alpha6/plan-integrity.js +55 -8
- package/dist/src/alpha6/plan-integrity.js.map +1 -1
- package/dist/src/alpha6/remediation.d.ts +1 -0
- package/dist/src/alpha6/remediation.js +86 -5
- package/dist/src/alpha6/remediation.js.map +1 -1
- package/dist/src/cli.js +1 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +31 -2
- package/dist/src/reviewer.d.ts +9 -4
- package/dist/src/reviewer.js +10 -8
- package/dist/src/reviewer.js.map +1 -1
- package/dist/src/state/corrective-replan-public.js +5 -4
- package/dist/src/state/corrective-replan-public.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/workflow.js +33 -9
- package/dist/src/workflow.js.map +1 -1
- package/docs/autonomy-guardrails.md +17 -14
- package/docs/development-flow.md +7 -7
- 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 +16 -5
- package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +11 -7
- package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +24 -7
- package/docs/release.md +13 -8
- package/docs/updating-existing-project.md +18 -0
- package/docs/validation-report.md +109 -89
- package/package.json +2 -1
- package/schemas/authorization-event.schema.json +2 -2
- package/schemas/corrective-decision-event.schema.json +67 -4
|
@@ -145,25 +145,28 @@ commit, or unverified recovery remains blocked.
|
|
|
145
145
|
|
|
146
146
|
### First-failure Plan-integrity recovery
|
|
147
147
|
|
|
148
|
-
A mechanically impossible Plan check must not consume
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
following
|
|
152
|
-
|
|
153
|
-
- the failed Step contains an exact root `npm run <script>`
|
|
154
|
-
|
|
155
|
-
-
|
|
148
|
+
A mechanically impossible Plan check must not consume another attempt merely to unlock its known
|
|
149
|
+
correction. After the first guarded `checks-failed` event, Core performs a read-only bounded
|
|
150
|
+
assessment. Existing missing-script and required-selector conflicts route to corrective replan.
|
|
151
|
+
beta.12.16 additionally recognizes one exact check-support conflict when all of the following hold:
|
|
152
|
+
|
|
153
|
+
- the failed Step contains an exact root `npm run <script>` check and declares an absent migration
|
|
154
|
+
output path that is inside its original `allowedWrites`;
|
|
155
|
+
- the root script resolves to a repository-local runner whose direct static import resolves to a
|
|
156
|
+
tracked checksum/catalog support module;
|
|
157
|
+
- that support module has SHA-256 anchors and names an existing migration in the same file family,
|
|
158
|
+
but is outside the Step's `allowedWrites` and `forbiddenScope`;
|
|
156
159
|
- exactly one ordinary `checks-failed` remediation event exists for the Step;
|
|
157
160
|
- no corrective decision exists for its second-attempt binding;
|
|
158
161
|
- every dirty file remains inside the Step's current `allowedWrites` and outside its
|
|
159
162
|
`forbiddenScope`.
|
|
160
163
|
|
|
161
|
-
The recovery appends one hash-bound `
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
The recovery appends one hash-bound `continue-fix` decision for attempt ordinal 2 and the exact
|
|
165
|
+
support path. It preserves the worktree and Plan hash; it does not alter source or Git. The current
|
|
166
|
+
C1 actor presents the existing writer token and fresh `task run` exposes the effective scope.
|
|
167
|
+
`task step-complete` remains the only commit owner, all checks rerun, and strict review packets name
|
|
168
|
+
the derived scope. Missing-script/selector conflicts still use `replan-required` plus the normal
|
|
169
|
+
Human-confirmed corrective replan. Unproved or broader scope changes never receive this authority.
|
|
167
170
|
|
|
168
171
|
### Downstream-proof predecessor recovery
|
|
169
172
|
|
package/docs/development-flow.md
CHANGED
|
@@ -93,13 +93,13 @@ executable. A reviewer routes to `replan` only with an exact Plan obstruction an
|
|
|
93
93
|
change; ordinary findings default to `fix`. Remediation cannot change the Task objective,
|
|
94
94
|
requirements, or acceptance.
|
|
95
95
|
|
|
96
|
-
One bounded exception avoids
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
One bounded exception avoids deliberately repeating an already-proved Plan-integrity failure.
|
|
97
|
+
Missing root scripts and missing mandatory selectors use the advertised evidence-bound
|
|
98
|
+
`replan-required` path. For beta.12.16's exact direct check-support case, fresh `next` instead binds
|
|
99
|
+
the imported SHA/catalog support module and records a machine-derived `continue-fix` scope. Continue
|
|
100
|
+
with fresh `task run`; its envelope contains the original Step paths plus that one support path.
|
|
101
|
+
Core still owns the commit and review packet. Do not add adjacent files or treat this as generic
|
|
102
|
+
permission to change the Plan.
|
|
103
103
|
|
|
104
104
|
If a later proof Step leaves changes both in its own scope and in files owned by a completed
|
|
105
105
|
transitive predecessor, fresh `next` advertises `task downstream-proof-recover` instead of
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Codex Workflow V2: архитектура beta.12.
|
|
2
|
+
title: Codex Workflow V2: архитектура beta.12.16
|
|
3
3
|
subtitle: Источники истины, lifecycle, роли, delegation, зависимости Tasks и границы доверия
|
|
4
4
|
part: Часть 1 из 3 | Архитектура
|
|
5
5
|
document_version: 2.0
|
|
6
6
|
date: 31 августа 2026
|
|
7
|
-
subject: Архитектура и границы Codex Workflow V2 beta.12.
|
|
7
|
+
subject: Архитектура и границы Codex Workflow V2 beta.12.16
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# 1. Назначение и граница системы
|
|
@@ -18,7 +18,7 @@ Codex Workflow V2 - локальный state machine поверх Codex App, Git
|
|
|
18
18
|
Система рассчитана на одного пользователя и одну машину. Она не предоставляет distributed locking,
|
|
19
19
|
криптографическую идентификацию actor string или безопасную синхронизацию state между компьютерами.
|
|
20
20
|
|
|
21
|
-
## 1.1. Что beta.12.
|
|
21
|
+
## 1.1. Что beta.12.16 гарантирует
|
|
22
22
|
|
|
23
23
|
- exact project-local npm package и совместимый handshake до lifecycle действий;
|
|
24
24
|
- Discovery до materialization Task или Milestone;
|
|
@@ -41,7 +41,7 @@ Codex Workflow V2 - локальный state machine поверх Codex App, Git
|
|
|
41
41
|
один additive remediation Task без нового Human gate; Core сохраняет Milestone semantics и выводит
|
|
42
42
|
authority из текущей Milestone authorization и exact audit evidence.
|
|
43
43
|
|
|
44
|
-
## 1.2. Что beta.12.
|
|
44
|
+
## 1.2. Что beta.12.16 не гарантирует
|
|
45
45
|
|
|
46
46
|
- правильность продуктовой идеи или автоматически выбранного provider Task;
|
|
47
47
|
- semantic sufficiency Plan, если точные факты нельзя доказать поддерживаемым analyzer;
|
|
@@ -337,6 +337,17 @@ Completed corrective-replan journal также остаётся читаемым
|
|
|
337
337
|
если его завершённый manifest/runtime/catalog tuple есть в append-only historical registry. Pending и
|
|
338
338
|
неизвестные identity по-прежнему fail-closed, поэтому compatibility не выдаёт новую authority.
|
|
339
339
|
|
|
340
|
+
beta.12.16 закрывает следующий доказанный разрыв: migration Step мог владеть новой SQL migration,
|
|
341
|
+
manifest и bootstrap, но не владеть TypeScript-модулем, который direct import из обязательного check
|
|
342
|
+
использовал как независимую SHA/catalog authority. Новый `wf2.check-support-anchor@1` блокирует такой
|
|
343
|
+
Plan до execution authorization. Для уже выполняемой Task после первого `checks-failed` Core связывает
|
|
344
|
+
Plan/Step/HEAD, полный dirty set, runner/support hashes, direct import, отсутствующий declared output и
|
|
345
|
+
существующие anchors. Если доказательство однозначно, append-only decision `continue-fix` выдаёт только
|
|
346
|
+
один exact support path как effective Step scope. Human replan не нужен, Plan hash и product bytes не
|
|
347
|
+
меняются, а Worker envelope, Core commit и sealed review packet явно используют и раскрывают derived
|
|
348
|
+
scope. Indirect import, dynamic shell, forbidden path, unrelated dirty file или отсутствие SHA anchors
|
|
349
|
+
fail-closed и не расширяют authority.
|
|
350
|
+
|
|
340
351
|
Docker socket `EPERM` в sandbox не является доказательством сломанного daemon. Gateway один раз
|
|
341
352
|
повторяет exact health probe или Plan check с sandbox escalation без расходования remediation attempt.
|
|
342
353
|
Restart Docker Desktop требует отдельного разрешения и допустим только после escalated daemon failure.
|
|
@@ -346,7 +357,7 @@ Restart Docker Desktop требует отдельного разрешения
|
|
|
346
357
|
# 10. Operational checklist
|
|
347
358
|
|
|
348
359
|
- exact package version установлен, bundled gateway соответствует release и переустановлен;
|
|
349
|
-
- handshake подтверждает protocol 2, state schema 2 и beta.12.
|
|
360
|
+
- handshake подтверждает protocol 2, state schema 2 и beta.12.16 capabilities;
|
|
350
361
|
- каждый mutation следует свежему `status -> next` и exact option contract;
|
|
351
362
|
- Docker permission failure сначала классифицируется как sandbox boundary, а не как infra retry;
|
|
352
363
|
- semantic unknowns и human gates не маскируются delegation;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Codex Workflow V2: delegated chat-only guide
|
|
3
|
-
subtitle: Актуальный beta.12.
|
|
3
|
+
subtitle: Актуальный beta.12.16 путь от нового Discovery до принятого Milestone без ручного CLI
|
|
4
4
|
part: Часть 2 из 3 | Практика
|
|
5
5
|
document_version: 2.0
|
|
6
6
|
date: 31 августа 2026
|
|
7
|
-
subject: Практическое руководство по delegated Discovery и Milestone в Workflow V2 beta.12.
|
|
7
|
+
subject: Практическое руководство по delegated Discovery и Milestone в Workflow V2 beta.12.16
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# 1. Рабочая модель beta.12.
|
|
10
|
+
# 1. Рабочая модель beta.12.16
|
|
11
11
|
|
|
12
12
|
Пользователь работает в одном Codex Project и формулирует продуктовый outcome. Coordinator выполняет
|
|
13
13
|
CLI, создаёт отдельные Task/Reviewer chats и ведёт supervision loop. Workflow Core остаётся authority
|
|
@@ -40,7 +40,7 @@ Blocking unknown, scope change, grant issuance или unrecoverable integrity co
|
|
|
40
40
|
# 2. Подготовка проекта перед новым Discovery
|
|
41
41
|
|
|
42
42
|
1. Убедитесь, что checkout чистый и выбран правильный repository root.
|
|
43
|
-
2. Установите beta.12.
|
|
43
|
+
2. Установите beta.12.16 как точную devDependency после публикации release.
|
|
44
44
|
3. Обновите и переустановите bundled `codex-workflow-gateway` этого release.
|
|
45
45
|
4. Проверьте, что declared и installed package versions равны.
|
|
46
46
|
5. Запустите новый Coordinator chat, не fork старого Milestone conversation.
|
|
@@ -56,7 +56,7 @@ AGENTS.md
|
|
|
56
56
|
-> doctor только как дополнительная диагностика
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
Handshake beta.12.
|
|
59
|
+
Handshake beta.12.16 должен сообщать `packageVersion=2.0.0-beta.12.16`, `protocolVersion=2`,
|
|
60
60
|
`stateSchemaVersion=2`, dependency DAG, initial Plan transaction, mechanical feasibility,
|
|
61
61
|
Milestone autonomy и structural replacement disabled capabilities.
|
|
62
62
|
|
|
@@ -117,7 +117,7 @@ delegate, scope, transitions и expiry. DGR передаётся только е
|
|
|
117
117
|
```text
|
|
118
118
|
НОВЫЙ COORDINATOR CHAT
|
|
119
119
|
|
|
120
|
-
Проведи новый Milestone через Codex Workflow V2 beta.12.
|
|
120
|
+
Проведи новый Milestone через Codex Workflow V2 beta.12.16 в delegated режиме.
|
|
121
121
|
Repository: <ABSOLUTE-REPOSITORY-ROOT>.
|
|
122
122
|
Milestone ID: AUTO.
|
|
123
123
|
Delegate actor: agent:milestone-coordinator.
|
|
@@ -298,6 +298,7 @@ Task chat записывает его только при совпадении p
|
|
|
298
298
|
| Состояние | Действие |
|
|
299
299
|
|---|---|
|
|
300
300
|
| First proven impossible npm check после legacy/late authorization | Только рекламируемый `task plan-integrity-recover` |
|
|
301
|
+
| Direct imported migration checksum/catalog authority вне Step scope | beta.12.16: advertised `task plan-integrity-recover`, затем тот же Step с exact derived support path; Human replan не нужен |
|
|
301
302
|
| Downstream proof требует изменить completed predecessor | Только `task downstream-proof-recover`, затем новый Plan/risk audit/authorization в той же Task |
|
|
302
303
|
| Failed guarded review | Та же Task: исправление и новый strict review без attempt hard stop |
|
|
303
304
|
| Finding `route=fix` | Продолжить тот же Step; count остаётся диагностикой |
|
|
@@ -313,6 +314,9 @@ Task chat записывает его только при совпадении p
|
|
|
313
314
|
| Review seal drift | Discard review и создать fresh packet |
|
|
314
315
|
|
|
315
316
|
Plan-integrity recovery не редактирует Plan, package.json или worktree и не синтезирует второй failure.
|
|
317
|
+
Для beta.12.16 check-support evidence fresh `task run` обязан показать `boundedEffect=record-machine-derived-check-support-scope`
|
|
318
|
+
и добавить ровно рекламируемый support path в Worker `allowedWrites`. Для иных Plan-integrity видов
|
|
319
|
+
сохраняется `replan-required` route.
|
|
316
320
|
P04-A не переносит completed Steps и не rewires dependencies при split.
|
|
317
321
|
|
|
318
322
|
Audited remediation beta.12.11 не является generic scope-change. Coordinator использует только exact
|
|
@@ -404,7 +408,7 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
|
|
|
404
408
|
|
|
405
409
|
# 14. Итоговый checklist пользователя
|
|
406
410
|
|
|
407
|
-
- beta.12.
|
|
411
|
+
- beta.12.16 exact package и новый bundled gateway установлены;
|
|
408
412
|
- новый Coordinator chat не является fork старого Milestone;
|
|
409
413
|
- bootstrap DGR, если нужен, выдан отдельным exact human confirmation;
|
|
410
414
|
- Discovery не materialized при blocking unknowns;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Codex Workflow V2: технический справочник beta.12.
|
|
2
|
+
title: Codex Workflow V2: технический справочник beta.12.16
|
|
3
3
|
subtitle: Protocol 2, state schema 2, transactions, credentials, dependency authority, review и recovery
|
|
4
4
|
part: Часть 3 из 3 | Technical reference
|
|
5
5
|
document_version: 2.0
|
|
6
6
|
date: 31 августа 2026
|
|
7
|
-
subject: Технический контракт Codex Workflow V2 beta.12.
|
|
7
|
+
subject: Технический контракт Codex Workflow V2 beta.12.16
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# 1. Runtime contract
|
|
@@ -13,9 +13,9 @@ Workflow V2 предоставляет локальные revisioned transitions
|
|
|
13
13
|
и `value` либо структурированную ошибку с `code`, `message` и `details`. Chat, PDF и gateway не создают
|
|
14
14
|
authority сами: mutating permission определяется runtime state и свежим `next`.
|
|
15
15
|
|
|
16
|
-
| Параметр beta.12.
|
|
16
|
+
| Параметр beta.12.16 | Значение |
|
|
17
17
|
|---|---|
|
|
18
|
-
| npm package | `codex-workflow-v2@2.0.0-beta.12.
|
|
18
|
+
| npm package | `codex-workflow-v2@2.0.0-beta.12.16` |
|
|
19
19
|
| protocolVersion | 2 |
|
|
20
20
|
| stateSchemaVersion | 2 |
|
|
21
21
|
| lifecycle epoch | 2 |
|
|
@@ -37,7 +37,7 @@ Gateway выполняет:
|
|
|
37
37
|
5. вызов только package-local `dist/src/cli.js --repo <root>`;
|
|
38
38
|
6. `gateway handshake` до lifecycle действий.
|
|
39
39
|
|
|
40
|
-
Ключевые beta.12.
|
|
40
|
+
Ключевые beta.12.16 capabilities:
|
|
41
41
|
|
|
42
42
|
| Группа | Capabilities |
|
|
43
43
|
|---|---|
|
|
@@ -496,6 +496,23 @@ legacy tuple у незавершённой transaction, повреждённый
|
|
|
496
496
|
`journal-invalid`. Это позволяет читать terminal beta.12.12 history после расширения binding manifest,
|
|
497
497
|
не превращая legacy identity в новую execution authority.
|
|
498
498
|
|
|
499
|
+
# 13.7. beta.12.16 check-support scope authority
|
|
500
|
+
|
|
501
|
+
Analyzer `wf2.check-support-anchor@1` рассматривает только root `npm run` check, repository-local
|
|
502
|
+
`node`/`tsx` runner и его direct relative static import. Блокировка допустима, когда Step создаёт
|
|
503
|
+
отсутствующий exact migration output, импортированный support-модуль содержит SHA-256 и approved/
|
|
504
|
+
expected/manifest/catalog anchors той же `.sql` family, но Step не владеет support path. Это machine
|
|
505
|
+
evidence, а не вывод из текста ошибки.
|
|
506
|
+
|
|
507
|
+
Для pre-execution Plan finding `CHECK_SUPPORT_ANCHOR_OUTSIDE_ALLOWED_WRITES` блокирует authorization.
|
|
508
|
+
Для уже выполняемой guarded Step первый `checks-failed` может рекламировать тот же
|
|
509
|
+
`task plan-integrity-recover`, но evidence v3 записывает `continue-fix`, а не `replan-required`.
|
|
510
|
+
`scopeExtensions` равно отсортированному exact набору support paths из conflict evidence; dirty files
|
|
511
|
+
до recovery обязаны оставаться в original allowedWrites, support path не может пересекать
|
|
512
|
+
forbiddenScope. Plan hash не меняется. Effective scope используется retry precondition, Worker envelope,
|
|
513
|
+
Core commit, downstream-proof assessment, corrective-replan worktree guard и strict review packet.
|
|
514
|
+
Любое более широкое изменение остаётся в обычном corrective replan с Human gate.
|
|
515
|
+
|
|
499
516
|
# 14. P04-A structural replacement boundary
|
|
500
517
|
|
|
501
518
|
Command shape `task replacement-materialize` retained только для compatibility diagnostics. Любая попытка
|
|
@@ -558,7 +575,7 @@ Docker socket/CLI `EPERM`, `operation not permitted` или `permission denied`
|
|
|
558
575
|
После каждой successful mutation обязателен sequential `status`, затем fresh `next`. Failed status/next
|
|
559
576
|
не разрешает direct mutation. Syntax help read-only и не заменяет navigation authority.
|
|
560
577
|
|
|
561
|
-
# 18. Public command surface beta.12.
|
|
578
|
+
# 18. Public command surface beta.12.16
|
|
562
579
|
|
|
563
580
|
| Область | Actions |
|
|
564
581
|
|---|---|
|
|
@@ -589,7 +606,7 @@ active-downstream-proof bridge, beta.12.7 exact stranded-replan bridge, beta.12.
|
|
|
589
606
|
dependency bridge и beta.12.15 Plan-integrity bridge; все они fail-closed и не дают общего разрешения
|
|
590
607
|
dirty update.
|
|
591
608
|
|
|
592
|
-
Перед beta.12.
|
|
609
|
+
Перед beta.12.16 tag обязательны `npm ci`, `npm run validate`, `npm run test:signal-t10-check-support-e2e`, `npm run test:signal-remediation-e2e`, `npm run pack:check`,
|
|
593
610
|
`npm run smoke:downstream`, `npm run plugin:check`, official plugin/skill validators,
|
|
594
611
|
`npm run docs:pdf:check`, `npm run release:check` с exact tag binding и validation
|
|
595
612
|
append-only real-agent lifecycle log.
|
package/docs/release.md
CHANGED
|
@@ -10,14 +10,15 @@ Before tagging a release:
|
|
|
10
10
|
|
|
11
11
|
1. `npm ci`
|
|
12
12
|
2. `npm run validate`
|
|
13
|
-
3. `npm run test:signal-
|
|
14
|
-
4. `npm run
|
|
15
|
-
5. `npm run
|
|
16
|
-
6. `npm run
|
|
17
|
-
7. `npm run
|
|
18
|
-
8. `npm run
|
|
19
|
-
9.
|
|
20
|
-
10. validate the
|
|
13
|
+
3. `npm run test:signal-t10-check-support-e2e`
|
|
14
|
+
4. `npm run test:signal-remediation-e2e`
|
|
15
|
+
5. `npm run pack:check`
|
|
16
|
+
6. `npm run smoke:downstream`
|
|
17
|
+
7. `npm run plugin:check`
|
|
18
|
+
8. `npm run docs:pdf:check`
|
|
19
|
+
9. `npm run release:check`
|
|
20
|
+
10. validate `plugins/codex-workflow-gateway` with the Codex plugin validator
|
|
21
|
+
11. validate the append-only real-agent log with
|
|
21
22
|
`node scripts/validate-lifecycle-transcript.mjs --file <lifecycle-log.jsonl>`
|
|
22
23
|
|
|
23
24
|
The downstream smoke packs the actual tarball, installs it into an empty temporary project,
|
|
@@ -60,6 +61,10 @@ For beta.12.12, the release gate also relies on `npm run release:check` to fail
|
|
|
60
61
|
- bounded first- or repeated-failure Plan-integrity recovery, selector-required npm-check
|
|
61
62
|
feasibility, exact failed-remediation/manifest/worktree
|
|
62
63
|
bindings, or the no-synthetic-second-failure regression is absent.
|
|
64
|
+
- a direct migration check can import an external checksum/catalog authority without the producing
|
|
65
|
+
Step owning it; or in-flight recovery can widen beyond the exact imported support path, bypass
|
|
66
|
+
`forbiddenScope`, change the Plan hash, skip checks/Core commit/review disclosure, or require a
|
|
67
|
+
Human approval for the machine-proved scope-only correction.
|
|
63
68
|
- downstream proof cannot invalidate only completed transitive-predecessor authority while
|
|
64
69
|
preserving worktree/HEAD, yielding C1, and returning the same Task to fresh planning; or unrelated
|
|
65
70
|
dirty files and damaged invalidation evidence do not fail closed.
|
|
@@ -22,6 +22,24 @@ state schema. Совпадение `stateSchemaVersion` до и после об
|
|
|
22
22
|
нужна. Для alpha.6 при `stateSchemaVersion: 2` применяется не migration, а sidecar-only
|
|
23
23
|
adoption posture.
|
|
24
24
|
|
|
25
|
+
### beta.12.16: direct migration check-support authority
|
|
26
|
+
|
|
27
|
+
Новый mechanical analyzer до execution authorization проверяет root `npm run` migration checks,
|
|
28
|
+
repository-local `node`/`tsx` runner и его direct static relative imports. Если Step создаёт новую
|
|
29
|
+
SQL migration, а импортированный TypeScript/JavaScript support-модуль закрепляет approved SHA-256,
|
|
30
|
+
manifest или expected catalog той же migration family, этот support path должен входить в
|
|
31
|
+
`allowedWrites` той же Step. Иначе Plan возвращается к `task plan-set` до запуска Worker.
|
|
32
|
+
|
|
33
|
+
Для уже выполняемой Task с первым `checks-failed` fresh beta.12.16 `next` может рекламировать
|
|
34
|
+
`task plan-integrity-recover` с reason `CHECK_SUPPORT_ANCHOR_OUTSIDE_ALLOWED_WRITES` и
|
|
35
|
+
`boundedEffect=record-machine-derived-check-support-scope`. Выполните только этот route под текущим
|
|
36
|
+
C1 actor/writer credential, затем снова прочитайте `next` и вызовите `task run`. Worker envelope
|
|
37
|
+
должен добавить ровно `evidence.scopeExtensions`; Plan hash и существующие product bytes остаются
|
|
38
|
+
неизменными. Core повторяет все checks, сам создаёт commit и включает derived scope в sealed review
|
|
39
|
+
packet. Human corrective-replan для этого точного scope-only случая не требуется. Если route не
|
|
40
|
+
рекламируется, есть indirect/dynamic import, лишний dirty path, forbiddenScope intersection или нет
|
|
41
|
+
SHA/catalog anchors — не расширяйте scope вручную.
|
|
42
|
+
|
|
25
43
|
### beta.12.12: неисполняемая Step check и сохранение текущей реализации
|
|
26
44
|
|
|
27
45
|
Новые Plans больше не могут получить execution authorization, если root npm script запускает
|
|
@@ -1,107 +1,127 @@
|
|
|
1
|
-
# V2 beta.12.
|
|
1
|
+
# V2 beta.12.16 Validation Report
|
|
2
2
|
|
|
3
|
-
Release candidate `2.0.0-beta.12.
|
|
3
|
+
Release candidate `2.0.0-beta.12.16` was validated on 2026-08-31 (Europe/Moscow) with
|
|
4
4
|
Node.js 24.17.0.
|
|
5
5
|
|
|
6
6
|
## Automated release evidence
|
|
7
7
|
|
|
8
8
|
- A clean `npm ci` completed from the exact lockfile and reported zero vulnerabilities.
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
test:signal-
|
|
18
|
-
- Package dry-run passed with
|
|
19
|
-
|
|
9
|
+
- `npm run validate` passed typecheck and `352/352` sequential tests with no failures, skips,
|
|
10
|
+
cancellations or todos in 2,166,261.797 ms.
|
|
11
|
+
- The release-specific `npm run test:signal-t10-check-support-e2e` gate passed `6/6`. Its
|
|
12
|
+
Signal-shaped case reproduces the STEP-002 migration/check-support conflict, records one bounded
|
|
13
|
+
machine-derived scope extension, retries the same Step, passes checks and produces the Core-owned
|
|
14
|
+
Step commit without a Human replan.
|
|
15
|
+
- Existing Signal compatibility gates remained green: `npm run test:signal-t04-recovery` passed
|
|
16
|
+
`11/11`, `npm run test:signal-t03-replan-e2e` passed `1/1`, and `npm run
|
|
17
|
+
test:signal-remediation-e2e` passed `2/2`.
|
|
18
|
+
- Package dry-run passed with 284 files (approximately 1.1 MB packed and 4.4 MB unpacked). The
|
|
19
|
+
tarball contains the compiled `check-support-anchor` analyzer and its declaration/source map.
|
|
20
|
+
- Disposable downstream installation returned `ok=true` for the exact beta.12.16 tarball. The first
|
|
20
21
|
sandboxed run failed only because registry DNS was unavailable; the exact network-enabled retry
|
|
21
22
|
passed.
|
|
22
|
-
- `npm run plugin:check`
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
## Live Signal reproduction
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- beta.12.
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
23
|
+
- `npm run plugin:check` passed. `npm run docs:pdf:check` reported `stale=[]` and the exact
|
|
24
|
+
beta.12.16 package binding.
|
|
25
|
+
|
|
26
|
+
## Live Signal reproduction before installation
|
|
27
|
+
|
|
28
|
+
The live repository was observed read-only at:
|
|
29
|
+
|
|
30
|
+
- Task branch `codex/task-01m1b79c66-current-formalization-commit-and-provide`;
|
|
31
|
+
- HEAD `f290d0875387283c368bedd03964fb423619db7b`;
|
|
32
|
+
- repository-local package `codex-workflow-v2@2.0.0-beta.12.15`, protocol/schema `2/2`;
|
|
33
|
+
- Task `TASK-01M1B79C660YMNSRRZ236NTR1T`, with the last recorded STEP-002 failure at Task revision
|
|
34
|
+
21.
|
|
35
|
+
|
|
36
|
+
HEAD is the Core-owned STEP-001 commit. Its strict external review passed with sealed packet hash
|
|
37
|
+
`c48658ce617bca58eddba4e11f43501eb87967d076e43bd4656f512ba256358f` and seal
|
|
38
|
+
`31cfd03a8bd9f9ba21f067703db90da97102643901725718f3e88199e486d806`.
|
|
39
|
+
|
|
40
|
+
The checkout still contains exactly the eight STEP-002 product paths present at the recorded
|
|
41
|
+
`checks-failed` boundary:
|
|
42
|
+
|
|
43
|
+
- `libs/processing-decision/ports/src/processing-persistence.ts`;
|
|
44
|
+
- `libs/processing-decision/ports/src/index.ts`;
|
|
45
|
+
- `libs/processing-decision/adapters/postgres/src/processing-evidence-transaction.ts`;
|
|
46
|
+
- `libs/processing-decision/adapters/postgres/src/processing-evidence-transaction.spec.ts`;
|
|
47
|
+
- `libs/processing-decision/adapters/postgres/src/processing-evidence-transaction.integration.spec.ts`;
|
|
48
|
+
- `libs/processing-decision/adapters/postgres/migrations/0003_current_formalization_commits.sql`;
|
|
49
|
+
- `libs/processing-decision/adapters/postgres/migrations/manifest.json`;
|
|
50
|
+
- `libs/processing-decision/adapters/postgres/bootstrap/0000_roles_and_schema.sql`.
|
|
51
|
+
|
|
52
|
+
Focused evidence and full affected validation passed for those product changes. The exact migration
|
|
53
|
+
check failed because `tools/postgres/check-processing-migrations.ts` directly imports
|
|
54
|
+
`tools/postgres/processing-migration-files.ts`, while the latter did not catalog the new migration
|
|
55
|
+
and was outside STEP-002 `allowedWrites`. Repeating the approved check could not change that result.
|
|
56
|
+
|
|
57
|
+
The beta.12.16 analyzer was then run read-only against this exact repository state. It derived one
|
|
58
|
+
candidate and no broader scope:
|
|
59
|
+
|
|
60
|
+
- runner: `tools/postgres/check-processing-migrations.ts`;
|
|
61
|
+
- support authority: `tools/postgres/processing-migration-files.ts`;
|
|
62
|
+
- expected output:
|
|
63
|
+
`libs/processing-decision/adapters/postgres/migrations/0003_current_formalization_commits.sql`;
|
|
64
|
+
- reason: `CHECK_SUPPORT_ANCHOR_OUTSIDE_ALLOWED_WRITES`.
|
|
65
|
+
|
|
66
|
+
Fresh beta.12.15 `status -> next` currently stops earlier at an expired writer lease and advertises
|
|
67
|
+
only `locks repair`. No Signal lease, Workflow state, Git history, product file or chat was changed
|
|
68
|
+
by this release-candidate reproduction. Live beta.12.16 recovery is intentionally not claimed until
|
|
69
|
+
publication, installation, stale-lease repair and fresh repository-local readback.
|
|
44
70
|
|
|
45
71
|
## Root cause corrected
|
|
46
72
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
The
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
## Implemented
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
-
|
|
71
|
-
review
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
transactions.
|
|
78
|
-
- Historical manifest/runtime/catalog identities are accepted only for exact registered completed
|
|
79
|
-
journals and cannot create new authority.
|
|
80
|
-
- Corrective-replan credentials still separate source Task Knowledge from target replacement-Plan
|
|
81
|
-
Knowledge.
|
|
82
|
-
- Completed corrective-yield journals still require their canonical event bytes to be an exact prefix
|
|
83
|
-
of the append-only handoff history.
|
|
84
|
-
- After dependency recovery, the blocked Task must still pass normal corrective-replan preparation,
|
|
85
|
-
confirmation, execution, fresh authorization/C1, selector-bearing checks, Core-owned Step commit and
|
|
86
|
-
strict external review.
|
|
73
|
+
Mechanical feasibility treated the migration, manifest and bootstrap files as the Step's complete
|
|
74
|
+
output boundary, but did not model the repository-local module imported by the approved migration
|
|
75
|
+
check as execution authority. That support module owns the exact migration list and SHA-256 catalog;
|
|
76
|
+
therefore the new migration cannot pass its check until the support module changes as well.
|
|
77
|
+
|
|
78
|
+
This is not a semantic Plan error and not evidence that the product implementation must be
|
|
79
|
+
discarded. The missing path is mechanically derivable from executable code and exact file anchors.
|
|
80
|
+
The old runtime nevertheless routed the first confirmed failure back to ordinary `task run`, where
|
|
81
|
+
the Worker remained forbidden from editing the only file that could make the approved check pass.
|
|
82
|
+
|
|
83
|
+
## Implemented contract
|
|
84
|
+
|
|
85
|
+
- New analyzer `wf2.check-support-anchor@1` recognizes only a root `npm run` check, its
|
|
86
|
+
repository-local Node/tsx runner, one direct relative static import, and a support module whose
|
|
87
|
+
migration filename family plus SHA/catalog anchors bind an exact Plan-declared migration output.
|
|
88
|
+
- For a future Plan, execution authorization fails closed when the producing Step does not own that
|
|
89
|
+
exact support path. This prevents the invalid scope from reaching execution.
|
|
90
|
+
- For an already running guarded Step, the first exact `checks-failed` event may advertise `task
|
|
91
|
+
plan-integrity-recover`. Recovery revalidates Plan, Step, HEAD, complete dirty set, runner/support
|
|
92
|
+
hashes, direct import, missing declared output and existing evidence under the Workflow lock.
|
|
93
|
+
- Recovery appends one `continue-fix` decision with the exact `scopeExtensions` path. It does not
|
|
94
|
+
change the Plan hash, product bytes, Git history or review result and does not synthesize a second
|
|
95
|
+
failed attempt.
|
|
96
|
+
- Worker envelope, retry boundary, Core commit, downstream proof, corrective-replan worktree guard
|
|
97
|
+
and strict review packet all use the same effective Step scope. The original allowedWrites remain
|
|
98
|
+
canonical and the append-only decision is visible as derived authority.
|
|
99
|
+
- The existing missing-script and selector-required cases retain `replan-required` and their
|
|
100
|
+
Human-confirmed corrective-replan route. Indirect imports, dynamic shell, unsupported syntax,
|
|
101
|
+
forbidden paths, unrelated dirty files, missing SHA/catalog anchors and multiple ambiguous
|
|
102
|
+
candidates remain fail-closed.
|
|
87
103
|
|
|
88
104
|
## PDF release documentation evidence
|
|
89
105
|
|
|
90
|
-
- All three tracked Russian PDFs were regenerated from beta.12.
|
|
91
|
-
- Architecture is 9 pages, delegated chat-only guide is 10 pages, and technical reference is
|
|
92
|
-
pages. All
|
|
106
|
+
- All three tracked Russian PDFs were regenerated from beta.12.16 sources.
|
|
107
|
+
- Architecture is 9 pages, delegated chat-only guide is 10 pages, and technical reference is 15
|
|
108
|
+
pages. All 34 rendered pages were visually inspected; no clipping, overlap or unreadable content
|
|
93
109
|
was observed.
|
|
94
110
|
|
|
95
111
|
## Boundaries and non-claims
|
|
96
112
|
|
|
97
|
-
- The
|
|
98
|
-
|
|
99
|
-
-
|
|
100
|
-
|
|
101
|
-
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
the
|
|
113
|
+
- The patch is not autonomous semantic replanning and does not permit a Worker to add an arbitrary
|
|
114
|
+
file after a failed check.
|
|
115
|
+
- Scope augmentation is limited to one exact mechanically proved support authority for the current
|
|
116
|
+
migration-file family. A broader or ambiguous dependency remains an ordinary Plan conflict.
|
|
117
|
+
- The patch does not weaken dirty-worktree, forbidden-scope, Plan identity, C1 authority, checks,
|
|
118
|
+
Core-owned commit or sealed strict-review gates.
|
|
119
|
+
- This report does not claim commit/tag/push, npm publication, live beta.12.16 installation, live
|
|
120
|
+
STEP-002 recovery, STEP-002 commit/review, Task merge or Milestone completion before those
|
|
121
|
+
operations receive their own readback.
|
|
122
|
+
|
|
123
|
+
Confidence is high for the bounded analyzer, preventive authorization and runtime recovery because
|
|
124
|
+
the full 352-test gate, release-specific Signal E2E, legacy Signal gates and read-only live candidate
|
|
125
|
+
agree. End-to-end confidence for the active Signal Task remains conditional on publication, exact
|
|
126
|
+
repository-local installation, advertised stale-lease repair, fresh `status -> next`, Core recovery,
|
|
127
|
+
the real approved checks and a new sealed external review packet.
|
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.16",
|
|
4
4
|
"description": "Requirements-first Codex development workflow with local state and explicit Git ownership.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
"test:signal-t04-recovery": "node scripts/with-validation-lock.mjs test-signal-t04",
|
|
50
50
|
"test:signal-t03-replan-e2e": "node scripts/with-validation-lock.mjs test-signal-t03-replan",
|
|
51
51
|
"test:signal-remediation-e2e": "node scripts/with-validation-lock.mjs test-signal-remediation-topology",
|
|
52
|
+
"test:signal-t10-check-support-e2e": "node scripts/with-validation-lock.mjs test-signal-t10-check-support",
|
|
52
53
|
"validate": "npm run typecheck && npm test",
|
|
53
54
|
"pack:check": "npm run build && npm pack --dry-run",
|
|
54
55
|
"smoke:downstream": "npm run build && node scripts/downstream-smoke.mjs",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"required": ["analyzerId", "analyzerVersion"],
|
|
99
99
|
"properties": {
|
|
100
100
|
"analyzerId": {
|
|
101
|
-
"enum": ["wf2.root-npm-script", "wf2.exact-output-path", "wf2.exact-predecessor-path"]
|
|
101
|
+
"enum": ["wf2.root-npm-script", "wf2.root-npm-script-arguments", "wf2.check-support-anchor", "wf2.exact-output-path", "wf2.exact-predecessor-path"]
|
|
102
102
|
},
|
|
103
103
|
"analyzerVersion": { "const": 1 }
|
|
104
104
|
}
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
],
|
|
112
112
|
"properties": {
|
|
113
113
|
"analyzerId": {
|
|
114
|
-
"enum": ["wf2.root-npm-script", "wf2.exact-output-path", "wf2.exact-predecessor-path"]
|
|
114
|
+
"enum": ["wf2.root-npm-script", "wf2.root-npm-script-arguments", "wf2.check-support-anchor", "wf2.exact-output-path", "wf2.exact-predecessor-path"]
|
|
115
115
|
},
|
|
116
116
|
"analyzerVersion": { "const": 1 },
|
|
117
117
|
"result": { "enum": ["pass", "blocked", "unverified"] },
|