codex-workflow-v2 2.0.0-beta.12.15 → 2.0.0-beta.12.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +22 -12
  2. package/dist/src/alpha6/check-support-anchor.d.ts +24 -0
  3. package/dist/src/alpha6/check-support-anchor.js +102 -0
  4. package/dist/src/alpha6/check-support-anchor.js.map +1 -0
  5. package/dist/src/alpha6/downstream-proof.js +4 -2
  6. package/dist/src/alpha6/downstream-proof.js.map +1 -1
  7. package/dist/src/alpha6/mechanical-feasibility.js +14 -0
  8. package/dist/src/alpha6/mechanical-feasibility.js.map +1 -1
  9. package/dist/src/alpha6/plan-integrity.js +55 -8
  10. package/dist/src/alpha6/plan-integrity.js.map +1 -1
  11. package/dist/src/alpha6/remediation.d.ts +1 -0
  12. package/dist/src/alpha6/remediation.js +86 -5
  13. package/dist/src/alpha6/remediation.js.map +1 -1
  14. package/dist/src/cli.js +2 -0
  15. package/dist/src/cli.js.map +1 -1
  16. package/dist/src/contracts.d.ts +31 -2
  17. package/dist/src/reviewer.d.ts +9 -4
  18. package/dist/src/reviewer.js +10 -8
  19. package/dist/src/reviewer.js.map +1 -1
  20. package/dist/src/state/corrective-replan-public.js +5 -4
  21. package/dist/src/state/corrective-replan-public.js.map +1 -1
  22. package/dist/src/version.d.ts +1 -1
  23. package/dist/src/version.js +1 -1
  24. package/dist/src/workflow.js +45 -12
  25. package/dist/src/workflow.js.map +1 -1
  26. package/docs/autonomy-guardrails.md +17 -14
  27. package/docs/development-flow.md +7 -7
  28. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  29. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  30. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  31. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +22 -5
  32. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +12 -7
  33. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +38 -7
  34. package/docs/release.md +17 -9
  35. package/docs/updating-existing-project.md +34 -0
  36. package/docs/validation-report.md +96 -98
  37. package/package.json +2 -1
  38. package/schemas/authorization-event.schema.json +2 -2
  39. 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 the second ordinary remediation attempt
149
- only to unlock corrective replan. After the first guarded `checks-failed` event, Core performs a
150
- read-only bounded assessment. `next` advertises `task plan-integrity-recover` only when all of the
151
- following are true:
152
-
153
- - the failed Step contains an exact root `npm run <script>` or `npm run-script <script>` check;
154
- - the named script is absent from the current root `package.json`;
155
- - `package.json` is outside the failed Step's `allowedWrites`;
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 `replan-required` decision for attempt ordinal 2. It preserves
162
- the worktree and does not edit the Plan. A claimed C1 Task must present its current writer token and
163
- then follow `task corrective-yield`; the replacement Plan still requires the existing independent
164
- validation, Risk Audit, Human confirmation, journaled execution, readback, and renewed execution
165
- authorization. Other check failures use the normal continuable remediation route; they do not
166
- receive the narrow Plan-integrity shortcut, but attempt count alone never stops them.
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
 
@@ -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 a deliberately repeated failure for an older authorization without
97
- P01-A evidence or a contradiction that becomes observable only after execution starts. If the first guarded check failure
98
- is caused by an absent root npm script that the Step cannot add because `package.json` is outside
99
- its `allowedWrites`, fresh `next` advertises `task plan-integrity-recover`. The command records only
100
- the exact evidence-bound early `replan-required` posture; it never edits source, Plan, or Git.
101
- Continue through the advertised corrective yield and corrective replan rather than calling
102
- `task run` again.
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
@@ -1,10 +1,10 @@
1
1
  ---
2
- title: Codex Workflow V2: архитектура beta.12.15
2
+ title: Codex Workflow V2: архитектура beta.12.17
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.15
7
+ subject: Архитектура и границы Codex Workflow V2 beta.12.17
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.15 гарантирует
21
+ ## 1.1. Что beta.12.17 гарантирует
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.15 не гарантирует
44
+ ## 1.2. Что beta.12.17 не гарантирует
45
45
 
46
46
  - правильность продуктовой идеи или автоматически выбранного provider Task;
47
47
  - semantic sufficiency Plan, если точные факты нельзя доказать поддерживаемым analyzer;
@@ -337,6 +337,23 @@ 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
+
351
+ beta.12.17 закрывает transport-разрыв перед этим recovery: внешний runner больше не ожидает один
352
+ зашитый source release. Он выводит exact beta.12 source из declared dependency, требует равенства
353
+ locked, installed, current Task branch и active Milestone base и допускает только patch от .11 до
354
+ версии ниже runner. Dirty scope, отсутствие lease/transaction и dependency-only Git transport
355
+ остаются обязательными; product bytes и Workflow state вручную не изменяются.
356
+
340
357
  Docker socket `EPERM` в sandbox не является доказательством сломанного daemon. Gateway один раз
341
358
  повторяет exact health probe или Plan check с sandbox escalation без расходования remediation attempt.
342
359
  Restart Docker Desktop требует отдельного разрешения и допустим только после escalated daemon failure.
@@ -346,7 +363,7 @@ Restart Docker Desktop требует отдельного разрешения
346
363
  # 10. Operational checklist
347
364
 
348
365
  - exact package version установлен, bundled gateway соответствует release и переустановлен;
349
- - handshake подтверждает protocol 2, state schema 2 и beta.12.15 capabilities;
366
+ - handshake подтверждает protocol 2, state schema 2 и beta.12.17 capabilities;
350
367
  - каждый mutation следует свежему `status -> next` и exact option contract;
351
368
  - Docker permission failure сначала классифицируется как sandbox boundary, а не как infra retry;
352
369
  - 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.15 путь от нового Discovery до принятого Milestone без ручного CLI
3
+ subtitle: Актуальный beta.12.17 путь от нового 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.15
7
+ subject: Практическое руководство по delegated Discovery и Milestone в Workflow V2 beta.12.17
8
8
  ---
9
9
 
10
- # 1. Рабочая модель beta.12.15
10
+ # 1. Рабочая модель beta.12.17
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.15 как точную devDependency после публикации release.
43
+ 2. Установите beta.12.17 как точную 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.15 должен сообщать `packageVersion=2.0.0-beta.12.15`, `protocolVersion=2`,
59
+ Handshake beta.12.17 должен сообщать `packageVersion=2.0.0-beta.12.17`, `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.15 в delegated режиме.
120
+ Проведи новый Milestone через Codex Workflow V2 beta.12.17 в delegated режиме.
121
121
  Repository: <ABSOLUTE-REPOSITORY-ROOT>.
122
122
  Milestone ID: AUTO.
123
123
  Delegate actor: agent:milestone-coordinator.
@@ -298,6 +298,8 @@ 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 не нужен |
302
+ | In-flight Plan-integrity Task требует package update | beta.12.17 external preflight выводит coherent exact beta.12 source из пяти version surfaces; затем только dependency-only transport и advertised recovery |
301
303
  | Downstream proof требует изменить completed predecessor | Только `task downstream-proof-recover`, затем новый Plan/risk audit/authorization в той же Task |
302
304
  | Failed guarded review | Та же Task: исправление и новый strict review без attempt hard stop |
303
305
  | Finding `route=fix` | Продолжить тот же Step; count остаётся диагностикой |
@@ -313,6 +315,9 @@ Task chat записывает его только при совпадении p
313
315
  | Review seal drift | Discard review и создать fresh packet |
314
316
 
315
317
  Plan-integrity recovery не редактирует Plan, package.json или worktree и не синтезирует второй failure.
318
+ Для beta.12.16 check-support evidence fresh `task run` обязан показать `boundedEffect=record-machine-derived-check-support-scope`
319
+ и добавить ровно рекламируемый support path в Worker `allowedWrites`. Для иных Plan-integrity видов
320
+ сохраняется `replan-required` route.
316
321
  P04-A не переносит completed Steps и не rewires dependencies при split.
317
322
 
318
323
  Audited remediation beta.12.11 не является generic scope-change. Coordinator использует только exact
@@ -404,7 +409,7 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
404
409
 
405
410
  # 14. Итоговый checklist пользователя
406
411
 
407
- - beta.12.15 exact package и новый bundled gateway установлены;
412
+ - beta.12.17 exact package и новый bundled gateway установлены;
408
413
  - новый Coordinator chat не является fork старого Milestone;
409
414
  - bootstrap DGR, если нужен, выдан отдельным exact human confirmation;
410
415
  - Discovery не materialized при blocking unknowns;
@@ -1,10 +1,10 @@
1
1
  ---
2
- title: Codex Workflow V2: технический справочник beta.12.15
2
+ title: Codex Workflow V2: технический справочник beta.12.17
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.15
7
+ subject: Технический контракт Codex Workflow V2 beta.12.17
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.15 | Значение |
16
+ | Параметр beta.12.17 | Значение |
17
17
  |---|---|
18
- | npm package | `codex-workflow-v2@2.0.0-beta.12.15` |
18
+ | npm package | `codex-workflow-v2@2.0.0-beta.12.17` |
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.15 capabilities:
40
+ Ключевые beta.12.17 capabilities:
41
41
 
42
42
  | Группа | Capabilities |
43
43
  |---|---|
@@ -496,6 +496,37 @@ 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
+
516
+ # 13.8. beta.12.17 coherent Plan-integrity update source
517
+
518
+ Read-only `update plan-integrity-update-preflight` выводит `sourceVersion` из declared dependency, а
519
+ не из release-specific constant. Он принимает только exact `2.0.0-beta.12.N`, где `N >= 11` и
520
+ `N` меньше patch ordinal внешнего runner. Locked, installed, current Task branch и active Milestone
521
+ base обязаны совпадать с declared source. Любая missing/divergent surface блокирует transport.
522
+
523
+ Version consensus не заменяет остальные guards: должна существовать ровно одна eligible failed-Step
524
+ Plan-integrity assessment, observation обязана быть coherent, lease/transaction/Core operation
525
+ отсутствуют, а dirty bytes совпадают с доказанным Step scope. После dependency-only Git transport
526
+ repository-local runner регистрирует commit только через advertised
527
+ `update plan-integrity-dependency-recover`. Source consensus не усыновляет product history, не меняет
528
+ Plan/remediation evidence и не даёт generic update authority другим beta lines.
529
+
499
530
  # 14. P04-A structural replacement boundary
500
531
 
501
532
  Command shape `task replacement-materialize` retained только для compatibility diagnostics. Любая попытка
@@ -558,7 +589,7 @@ Docker socket/CLI `EPERM`, `operation not permitted` или `permission denied`
558
589
  После каждой successful mutation обязателен sequential `status`, затем fresh `next`. Failed status/next
559
590
  не разрешает direct mutation. Syntax help read-only и не заменяет navigation authority.
560
591
 
561
- # 18. Public command surface beta.12.15
592
+ # 18. Public command surface beta.12.17
562
593
 
563
594
  | Область | Actions |
564
595
  |---|---|
@@ -589,7 +620,7 @@ active-downstream-proof bridge, beta.12.7 exact stranded-replan bridge, beta.12.
589
620
  dependency bridge и beta.12.15 Plan-integrity bridge; все они fail-closed и не дают общего разрешения
590
621
  dirty update.
591
622
 
592
- Перед beta.12.15 tag обязательны `npm ci`, `npm run validate`, `npm run test:signal-remediation-e2e`, `npm run pack:check`,
623
+ Перед beta.12.17 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
624
  `npm run smoke:downstream`, `npm run plugin:check`, official plugin/skill validators,
594
625
  `npm run docs:pdf:check`, `npm run release:check` с exact tag binding и validation
595
626
  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-remediation-e2e`
14
- 4. `npm run pack:check`
15
- 5. `npm run smoke:downstream`
16
- 6. `npm run plugin:check`
17
- 7. `npm run docs:pdf:check`
18
- 8. `npm run release:check`
19
- 9. validate `plugins/codex-workflow-gateway` with the Codex plugin validator
20
- 10. validate the append-only real-agent log with
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,
@@ -28,7 +29,7 @@ The PDF check deterministically regenerates all three Russian documents from
28
29
  `docs/pdf/sources`, binds the visible package version to the root manifest, and fails when any
29
30
  tracked PDF is stale. Source and binary PDFs are one release unit.
30
31
 
31
- For beta.12.12, the release gate also relies on `npm run release:check` to fail if:
32
+ For beta.12.17, the release gate also relies on `npm run release:check` to fail if:
32
33
 
33
34
  - canonical entity schema 2 shapes drift;
34
35
  - protocol 2 is not the active public contract, or intact protocol-1 adoption evidence stops being readable through the bounded compatibility window;
@@ -60,6 +61,13 @@ 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
+ - Plan-integrity update preflight again hard-codes one historical source release instead of deriving
65
+ a coherent exact beta.12 source from declared/locked/installed/current/base surfaces, or it accepts
66
+ a source before beta.12.11, a source not older than the runner, or any divergent version surface.
67
+ - a direct migration check can import an external checksum/catalog authority without the producing
68
+ Step owning it; or in-flight recovery can widen beyond the exact imported support path, bypass
69
+ `forbiddenScope`, change the Plan hash, skip checks/Core commit/review disclosure, or require a
70
+ Human approval for the machine-proved scope-only correction.
63
71
  - downstream proof cannot invalidate only completed transitive-predecessor authority while
64
72
  preserving worktree/HEAD, yielding C1, and returning the same Task to fresh planning; or unrelated
65
73
  dirty files and damaged invalidation evidence do not fail closed.
@@ -22,6 +22,40 @@ state schema. Совпадение `stateSchemaVersion` до и после об
22
22
  нужна. Для alpha.6 при `stateSchemaVersion: 2` применяется не migration, а sidecar-only
23
23
  adoption posture.
24
24
 
25
+ ### beta.12.17: coherent beta.12 Plan-integrity update transport
26
+
27
+ `update plan-integrity-update-preflight` больше не связывает совместимый transport с одним
28
+ историческим source release. Внешний exact beta.12.17 runner выводит source version из declared
29
+ dependency и требует, чтобы locked, installed, current Task branch и active Milestone base
30
+ совпадали с ним. Source должен быть exact `2.0.0-beta.12.N`, где `N >= 11` и `N` меньше patch
31
+ ordinal текущего runner. Расхождение хотя бы одной поверхности блокирует transport.
32
+
33
+ Остальные границы не изменены: ровно одна eligible Plan-integrity conflict, coherent observation,
34
+ нет lease/transaction/Core operation, а dirty set полностью совпадает с уже доказанным failed Step
35
+ scope. После `eligible=true` один dependency-only commit обновляет только `package.json` и
36
+ `package-lock.json` на Milestone base и в Task history; fresh repository-local package затем
37
+ регистрирует commit через advertised `update plan-integrity-dependency-recover`. Product bytes,
38
+ Plan hash и remediation evidence не переписываются. Этот контракт разрешает текущий `.15 -> .17`
39
+ transport и не требует нового literal для следующего совместимого beta.12 patch.
40
+
41
+ ### beta.12.16: direct migration check-support authority
42
+
43
+ Новый mechanical analyzer до execution authorization проверяет root `npm run` migration checks,
44
+ repository-local `node`/`tsx` runner и его direct static relative imports. Если Step создаёт новую
45
+ SQL migration, а импортированный TypeScript/JavaScript support-модуль закрепляет approved SHA-256,
46
+ manifest или expected catalog той же migration family, этот support path должен входить в
47
+ `allowedWrites` той же Step. Иначе Plan возвращается к `task plan-set` до запуска Worker.
48
+
49
+ Для уже выполняемой Task с первым `checks-failed` fresh beta.12.16 `next` может рекламировать
50
+ `task plan-integrity-recover` с reason `CHECK_SUPPORT_ANCHOR_OUTSIDE_ALLOWED_WRITES` и
51
+ `boundedEffect=record-machine-derived-check-support-scope`. Выполните только этот route под текущим
52
+ C1 actor/writer credential, затем снова прочитайте `next` и вызовите `task run`. Worker envelope
53
+ должен добавить ровно `evidence.scopeExtensions`; Plan hash и существующие product bytes остаются
54
+ неизменными. Core повторяет все checks, сам создаёт commit и включает derived scope в sealed review
55
+ packet. Human corrective-replan для этого точного scope-only случая не требуется. Если route не
56
+ рекламируется, есть indirect/dynamic import, лишний dirty path, forbiddenScope intersection или нет
57
+ SHA/catalog anchors — не расширяйте scope вручную.
58
+
25
59
  ### beta.12.12: неисполняемая Step check и сохранение текущей реализации
26
60
 
27
61
  Новые Plans больше не могут получить execution authorization, если root npm script запускает
@@ -1,107 +1,105 @@
1
- # V2 beta.12.15 Validation Report
1
+ # V2 beta.12.17 Validation Report
2
2
 
3
- Release candidate `2.0.0-beta.12.15` was validated on 2026-08-31 (Europe/Moscow) with
3
+ Release candidate `2.0.0-beta.12.17` was validated on 2026-09-01 (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
- - The first full `npm run validate` run passed every behavioral assertion except two diagnostics
10
- whose text still described the superseded one-commit boundary. The messages were corrected without
11
- changing transition behavior. The second full run passed typecheck and `349/349` sequential tests
12
- with no failures, skips, cancellations or todos in 2,169,018.255 ms.
13
- - The focused dependency-provenance suite passed `11/11`. It covers a two-commit unregistered
14
- dependency suffix, exact oldest-to-newest recovery, per-commit package-version provenance and
15
- fail-closed product/payload/ancestry drift.
16
- - `npm run test:signal-t04-recovery` passed `11/11`; `npm run
17
- test:signal-t03-replan-e2e` passed `1/1`; and `npm run test:signal-remediation-e2e` passed `2/2`.
18
- - Package dry-run passed with 281 files (approximately 1.1 MB packed and 4.3 MB unpacked).
19
- - Disposable downstream installation returned `ok=true` for the exact beta.12.15 tarball. The first
20
- sandboxed run failed only because registry DNS was unavailable; the exact network-enabled retry
21
- passed.
22
- - `npm run plugin:check` and `npm run docs:pdf:check` passed. PDF freshness reported an empty stale
23
- set and exact beta.12.15 package binding.
24
-
25
- ## Live Signal reproduction
26
-
27
- Signal Task `TASK-01M1B79C660YMNSRRZ236NTR1T` is blocked after a completed corrective yield. Its
28
- three allowlisted STEP-001 product files remain uncommitted and unchanged. The repository contains
29
- two consecutive Workflow dependency-only commits that Core could not register:
30
-
31
- - beta.12.13: `51e5e61b39ff9a234dcc9ccb80d81da710570f55`;
32
- - beta.12.14: `96c3bd22e818873c1de59cd42b466efde0947d23`.
33
-
34
- Fresh beta.12.14 observation is otherwise coherent: no pending or corrupt transactions and no active
35
- leases. Nevertheless, `next` advertised dependency recovery while its preflight rejected the route
36
- because it expected the current update commit's parent to be an already registered system commit.
37
- The beta.12.13 parent could not be registered earlier because the beta.12.13 transaction-observation
38
- defect prevented all workflow commands before beta.12.14 was installed.
39
-
40
- The beta.12.15 implementation was built locally and run read-only against this exact Signal state.
41
- Preflight returned `eligible=true`, action `update plan-integrity-dependency-recover`, and the exact
42
- two-commit chain above in oldest-to-newest order. No Signal state, journal, sidecar, Git history or
43
- product file was modified by this reproduction.
44
-
45
- ## Root cause corrected
46
-
47
- The beta.12.14 carried-compatibility and dependency-recovery logic assumed a single unregistered
48
- Workflow update at `HEAD`, with an already registered parent at `HEAD^`. That assumption is false
49
- when an earlier release was installable but its recovery route was unreachable because observation
50
- itself failed. Installing the observer fix then creates a bounded consecutive suffix of two
51
- unregistered dependency-only commits.
52
-
53
- The resulting blocker was not invalid Signal product work, a stale lease or corrupt Core state. It
54
- was an incomplete dependency-provenance boundary: navigation advertised a route that the route's own
55
- single-hop preflight could never accept.
56
-
57
- ## Implemented compatibility contract
58
-
59
- - Preflight discovers the complete trailing unregistered suffix after the exact recorded Task
60
- history instead of assuming one commit.
61
- - Every suffix element must form an uninterrupted parent chain and change exactly `package.json` and
62
- `package-lock.json`, only as an exact `codex-workflow-v2` pin update. Product bytes, additional
63
- dependency changes, merge ancestry and unexplained commits remain blockers.
64
- - The terminal suffix commit must match the declared, locked and installed package version.
65
- - Carried Plan-integrity compatibility is derived by walking through the bounded suffix to the last
66
- registered system commit. The original recovery, failed Step, Plan, remediation history, dirty
67
- allowlist, dirty SHA-256, C1 posture and completed corrective-yield history must still match.
68
- - Recovery atomically registers the entire chain in `systemCommits` and appends one provenance record
69
- per commit using that commit's actual package version. Partial registration is not permitted.
70
- - A failed atomic recovery leaves all Core state unchanged. No product file, Plan, Step, lease,
71
- review or Git history is edited by this route.
72
- - Protocol and state schema remain `2/2`; no migration or manual state repair is required.
73
-
74
- ## Existing beta.12.14 contract retained
75
-
76
- - Current binding manifests remain mandatory for pending and in-flight corrective-replan
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.
87
-
88
- ## PDF release documentation evidence
89
-
90
- - All three tracked Russian PDFs were regenerated from beta.12.15 sources.
91
- - Architecture is 9 pages, delegated chat-only guide is 10 pages, and technical reference is 14
92
- pages. All 33 rendered pages were visually inspected; no clipping, overlap or unreadable content
93
- was observed.
9
+ - `npm run validate` passed typecheck and `353/353` sequential tests with no failures, skips,
10
+ cancellations or todos in 2,273,062.454 ms.
11
+ - `npm run test:signal-t10-check-support-e2e` passed `7/7`. It includes the Signal-shaped
12
+ check-support recovery and two complete update/recovery chains whose coherent source is
13
+ `2.0.0-beta.12.11` and `2.0.0-beta.12.15`, respectively.
14
+ - The `.15` case proves read-only update preflight, exact dependency-only transport, dependency
15
+ provenance registration, Plan-integrity recovery, retry and continuation without product-byte
16
+ loss or a Human replan for the machine-proved support scope.
17
+ - Existing Signal compatibility remained green inside the full suite, including T04 retained
18
+ review/history recovery, T03 corrective replan, audited remediation topology, downstream proof
19
+ and dependency-only update recovery.
20
+
21
+ ## Live Signal evidence before installation
22
+
23
+ The live repository was observed at:
24
+
25
+ - Task branch `codex/task-01m1b79c66-current-formalization-commit-and-provide`;
26
+ - HEAD `f290d0875387283c368bedd03964fb423619db7b`;
27
+ - repository-local package `codex-workflow-v2@2.0.0-beta.12.15`, protocol/schema `2/2`;
28
+ - Task `TASK-01M1B79C660YMNSRRZ236NTR1T`, revision 21, failed Step
29
+ `STEP-002-CURRENT-COMMIT`;
30
+ - exactly eight preserved STEP-002 product paths and no pending/corrupt Core transaction.
31
+
32
+ The stale writer lease was repaired only through the exact repository-level `locks repair` route.
33
+ Fresh beta.12.15 `status -> next` then reproduced the original defect: `next` advertised only
34
+ `task run`, although the Worker could not write the imported migration support authority.
35
+
36
+ Published beta.12.16 correctly identified the check-support conflict, but its external
37
+ `update plan-integrity-update-preflight` returned `eligible=false`: the implementation still required
38
+ all five version surfaces to equal the hard-coded stranded source `2.0.0-beta.12.11`. Signal already
39
+ had coherent `.15` declared, locked, installed, current-branch and Milestone-base versions. No update
40
+ commit, package installation, Workflow-state edit or product-file mutation was performed after that
41
+ failed preflight.
42
+
43
+ The beta.12.17 runner was then built locally and invoked read-only against the same Signal state. It
44
+ returned:
45
+
46
+ - `eligible=true` and `action=update plan-integrity-transport`;
47
+ - source `2.0.0-beta.12.15`, target `2.0.0-beta.12.17`;
48
+ - Task revision 21 and `STEP-002-CURRENT-COMMIT`;
49
+ - the same eight dirty paths;
50
+ - conflict hash `44ee553355bc696861bd2e4f49c1675e39c7cf4e5be28785e2f86cd95de45383`;
51
+ - zero blockers.
52
+
53
+ ## Root causes corrected
54
+
55
+ beta.12.16 corrected the product-flow root cause: the Plan and retry boundary did not model the
56
+ directly imported checksum/catalog module as authority required by the approved migration check.
57
+ The bounded analyzer and append-only scope augmentation remain unchanged in beta.12.17.
58
+
59
+ The installation blocker had a separate root cause. Plan-integrity update preflight encoded one
60
+ historical release literal instead of deriving the source version from the repository surfaces it
61
+ already inspected. Every compatible patch after `.11` therefore became impossible to transport
62
+ while failed-Step product work remained dirty.
63
+
64
+ ## Implemented beta.12.17 contract
65
+
66
+ - `planIntegrityUpdatePreflight` derives `sourceVersion` from the declared exact dependency.
67
+ - Source must match `2.0.0-beta.12.N`, with `N >= 11` and `N` strictly less than the external
68
+ runner's beta.12 patch ordinal.
69
+ - Locked, installed, current Task branch and active Milestone base must equal the declared source.
70
+ Missing or divergent surfaces block transport with an exact diagnostic.
71
+ - Existing guards remain mandatory: one eligible Plan-integrity conflict, coherent observation,
72
+ no active/stale lease, no pending/corrupt transaction or Core operation, and an exact dirty set
73
+ inside the failed Step boundary.
74
+ - The only allowed transport remains one dependency-only commit changing `package.json` and
75
+ `package-lock.json` on the Milestone base and in Task history. Fresh repository-local Core must
76
+ register it through advertised `update plan-integrity-dependency-recover`.
77
+ - The contract is advertised as `coherent-plan-integrity-update-source-v1`. It is deliberately
78
+ limited to the compatible beta.12 line and does not create generic update or product-history
79
+ adoption authority.
80
+
81
+ ## Retained check-support contract
82
+
83
+ - `wf2.check-support-anchor@1` blocks a future Plan whose producing migration Step does not own the
84
+ directly imported SHA/catalog support authority.
85
+ - For the already-running exact first-failure shape, `task plan-integrity-recover` appends one
86
+ `continue-fix` decision with the derived support path; Plan hash and product bytes remain stable.
87
+ - Worker envelope, retry boundary, Core commit, downstream proof, corrective-replan guard and sealed
88
+ review packet use and disclose the same effective scope.
89
+ - Indirect/dynamic imports, unsupported syntax, forbidden paths, unrelated dirty files or absent
90
+ anchors remain fail-closed. Missing scripts and selector-required checks retain their ordinary
91
+ `replan-required` path.
94
92
 
95
93
  ## Boundaries and non-claims
96
94
 
97
- - The suffix scan is not generic history adoption. Only the contiguous, exact Workflow-pin-only
98
- prefix between registered Task history and current HEAD is eligible.
99
- - The patch does not weaken dirty-worktree boundaries, Plan identity, remediation evidence, C1
100
- authority, checks or review gates.
101
- - This report does not claim commit/tag/push, npm publication, live beta.12.15 installation,
102
- dependency recovery or STEP-001 completion before each operation receives its own readback.
103
-
104
- Confidence is high for consecutive dependency-provenance recovery because the focused tests, full
105
- 349-test gate and read-only real Signal reproduction agree. End-to-end confidence remains conditional
106
- on publication, exact Signal installation, fresh repository-local `status -> next`, and completion of
107
- the blocked STEP-001 through Core-advertised routes.
95
+ - The patch does not bypass dependency-only Git transport or permit installation while version
96
+ surfaces diverge.
97
+ - It does not edit Plan, product work, Workflow state or Git history during preflight.
98
+ - This report does not claim beta.12.17 commit/tag/push, npm publication, live installation,
99
+ dependency registration, STEP-002 commit/review, Task merge or Milestone completion until each
100
+ operation receives its own readback.
101
+
102
+ Confidence is high for source-version consensus and retained check-support recovery because the
103
+ 353-test gate, both source-version E2E chains and the read-only live Signal preflight agree. Final
104
+ end-to-end confidence remains conditional on exact publication, dependency-only transport into
105
+ Signal, repository-local recovery, the real approved checks and a new sealed reviewer packet.