codex-workflow-v2 2.0.0-beta.12.11 → 2.0.0-beta.12.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +5 -4
  2. package/dist/src/alpha6/mechanical-feasibility.js +28 -12
  3. package/dist/src/alpha6/mechanical-feasibility.js.map +1 -1
  4. package/dist/src/alpha6/npm-check-contract.d.ts +11 -0
  5. package/dist/src/alpha6/npm-check-contract.js +36 -0
  6. package/dist/src/alpha6/npm-check-contract.js.map +1 -0
  7. package/dist/src/alpha6/plan-integrity.js +82 -26
  8. package/dist/src/alpha6/plan-integrity.js.map +1 -1
  9. package/dist/src/alpha6/remediation.js +88 -40
  10. package/dist/src/alpha6/remediation.js.map +1 -1
  11. package/dist/src/cli.js +25 -0
  12. package/dist/src/cli.js.map +1 -1
  13. package/dist/src/contracts.d.ts +37 -3
  14. package/dist/src/dependency-provenance.d.ts +3 -3
  15. package/dist/src/dependency-provenance.js +21 -6
  16. package/dist/src/dependency-provenance.js.map +1 -1
  17. package/dist/src/lifecycle/corrective-replan.js +1 -1
  18. package/dist/src/lifecycle/corrective-replan.js.map +1 -1
  19. package/dist/src/version.d.ts +1 -1
  20. package/dist/src/version.js +1 -1
  21. package/dist/src/workflow.d.ts +3 -0
  22. package/dist/src/workflow.js +222 -12
  23. package/dist/src/workflow.js.map +1 -1
  24. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  25. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  26. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  27. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +14 -5
  28. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +17 -7
  29. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +34 -10
  30. package/docs/release.md +3 -2
  31. package/docs/updating-existing-project.md +25 -0
  32. package/docs/validation-report.md +117 -96
  33. package/package.json +1 -1
  34. package/schemas/corrective-decision-event.schema.json +57 -10
  35. package/schemas/task.schema.json +23 -0
@@ -1,10 +1,10 @@
1
1
  ---
2
- title: Codex Workflow V2: архитектура beta.12.11
2
+ title: Codex Workflow V2: архитектура beta.12.12
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.11
7
+ subject: Архитектура и границы Codex Workflow V2 beta.12.12
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.11 гарантирует
21
+ ## 1.1. Что beta.12.12 гарантирует
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.11 не гарантирует
44
+ ## 1.2. Что beta.12.12 не гарантирует
45
45
 
46
46
  - правильность продуктовой идеи или автоматически выбранного provider Task;
47
47
  - semantic sufficiency Plan, если точные факты нельзя доказать поддерживаемым analyzer;
@@ -314,6 +314,15 @@ Workflow pin, Core переносит reconcile и `corrective-derived` approval
314
314
  transaction. Изменение любого другого Knowledge source, classification, gap или conflict fail-closed
315
315
  остаётся в обычном явном approval flow.
316
316
 
317
+ beta.12.12 закрывает доказанный runtime Plan-integrity gap. Mechanical feasibility теперь статически
318
+ распознаёт repository-local `node <runner> affected`, когда исходник runner явно требует selector,
319
+ и блокирует authorization для `npm run <script>` без `--base`, `--head` или `--files`. Для уже начатой
320
+ Task recovery связывает не только первую, а всю последовательную checks-failed history, точный Plan,
321
+ manifest/runner hashes, HEAD и dirty allowlist. Exact beta.12.11 update bridge сохраняет product bytes,
322
+ регистрирует только dependency commit и атомарно обновляет Knowledge, если изменился только Workflow pin.
323
+ Результат — один `replan-required` decision и обычный corrective replan с исполняемой check command;
324
+ повтор старой команды, ручной commit product files и state editing не допускаются.
325
+
317
326
  Docker socket `EPERM` в sandbox не является доказательством сломанного daemon. Gateway один раз
318
327
  повторяет exact health probe или Plan check с sandbox escalation без расходования remediation attempt.
319
328
  Restart Docker Desktop требует отдельного разрешения и допустим только после escalated daemon failure.
@@ -323,7 +332,7 @@ Restart Docker Desktop требует отдельного разрешения
323
332
  # 10. Operational checklist
324
333
 
325
334
  - exact package version установлен, bundled gateway соответствует release и переустановлен;
326
- - handshake подтверждает protocol 2, state schema 2 и beta.12.11 capabilities;
335
+ - handshake подтверждает protocol 2, state schema 2 и beta.12.12 capabilities;
327
336
  - каждый mutation следует свежему `status -> next` и exact option contract;
328
337
  - Docker permission failure сначала классифицируется как sandbox boundary, а не как infra retry;
329
338
  - 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.11 путь от нового Discovery до принятого Milestone без ручного CLI
3
+ subtitle: Актуальный beta.12.12 путь от нового 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.11
7
+ subject: Практическое руководство по delegated Discovery и Milestone в Workflow V2 beta.12.12
8
8
  ---
9
9
 
10
- # 1. Рабочая модель beta.12.11
10
+ # 1. Рабочая модель beta.12.12
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.11 как точную devDependency после публикации release.
43
+ 2. Установите beta.12.12 как точную 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.11 должен сообщать `packageVersion=2.0.0-beta.12.11`, `protocolVersion=2`,
59
+ Handshake beta.12.12 должен сообщать `packageVersion=2.0.0-beta.12.12`, `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.11 в delegated режиме.
120
+ Проведи новый Milestone через Codex Workflow V2 beta.12.12 в delegated режиме.
121
121
  Repository: <ABSOLUTE-REPOSITORY-ROOT>.
122
122
  Milestone ID: AUTO.
123
123
  Delegate actor: agent:milestone-coordinator.
@@ -350,6 +350,16 @@ binding dirty set. Recover регистрирует только dependency HEAD
350
350
  Recover сохраняет product bytes; затем обязательны `status -> next -> task step-complete`. Если package
351
351
  уже зарегистрирован, используйте advertised `task historical-step-provenance-preflight/recover`.
352
352
 
353
+ Для beta.12.11 Task, застрявшей на selector-required `npm run validate:affected` без selector, сначала
354
+ остановите Worker и дождитесь отсутствия active/stale lease. Внешний exact beta.12.12 runner допускается
355
+ только для read-only `update plan-integrity-update-preflight`; требуйте `eligible=true`, exact failed Step,
356
+ полную remediation history и неизменённый dirty allowlist. После единственного dependency-only commit
357
+ на base и Task branch fresh repository-local `next` должен рекламировать
358
+ `update plan-integrity-dependency-recover`. Recovery атомарно регистрирует commit и dependency-only
359
+ Knowledge refresh. Затем выполните advertised credential recovery, `task plan-integrity-recover` и
360
+ `task corrective-yield`. Replacement Plan меняет только неисполняемую check на
361
+ `npm run validate:affected -- --files=<Step allowedWrites>` и проходит fresh Plan Risk Audit до нового run.
362
+
353
363
  Для exact beta.12.6 stranded-replan shape сначала нужен eligible read-only source preflight с exact
354
364
  revision/HEAD/dirty hash. Затем два beta.12.7 dependency-only commits и advertised dependency/replan
355
365
  recoveries. После Knowledge refresh `next` обязан остаться на `task plan-set`; новый единый Step должен
@@ -382,7 +392,7 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
382
392
 
383
393
  # 14. Итоговый checklist пользователя
384
394
 
385
- - beta.12.11 exact package и новый bundled gateway установлены;
395
+ - beta.12.12 exact package и новый bundled gateway установлены;
386
396
  - новый Coordinator chat не является fork старого Milestone;
387
397
  - bootstrap DGR, если нужен, выдан отдельным exact human confirmation;
388
398
  - Discovery не materialized при blocking unknowns;
@@ -1,10 +1,10 @@
1
1
  ---
2
- title: Codex Workflow V2: технический справочник beta.12.11
2
+ title: Codex Workflow V2: технический справочник beta.12.12
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.11
7
+ subject: Технический контракт Codex Workflow V2 beta.12.12
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.11 | Значение |
16
+ | Параметр beta.12.12 | Значение |
17
17
  |---|---|
18
- | npm package | `codex-workflow-v2@2.0.0-beta.12.11` |
18
+ | npm package | `codex-workflow-v2@2.0.0-beta.12.12` |
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.11 capabilities:
40
+ Ключевые beta.12.12 capabilities:
41
41
 
42
42
  | Группа | Capabilities |
43
43
  |---|---|
@@ -445,6 +445,29 @@ Materialization тогда дополнительно пишет active Knowledg
445
445
  `corrective-derived` в той же Project transaction. Это не разрешает автоматически принимать README,
446
446
  docs, commands, classification, authority, gaps или conflicts.
447
447
 
448
+ # 13.5. beta.12.12 selector-contract Plan-integrity recovery
449
+
450
+ Analyzer `wf2.root-npm-script-arguments@1` читает root `package.json` и только repository-local runner
451
+ из evaluated Git HEAD. Узкий доказуемый contract — script `node <safe-relative-path> affected`, исходник
452
+ которого использует `process.argv.slice(3)`, содержит selector literals `--base`, `--head`, `--files` и
453
+ явный `Affected mode requires` guard. Для такого script check без forwarded selector получает
454
+ `ROOT_NPM_SCRIPT_REQUIRED_SELECTOR_MISSING` и блокирует execution authorization. Произвольный shell или
455
+ нераспознанный runner остаётся `unverified`, а не объявляется ошибочным по догадке.
456
+
457
+ Legacy recovery принимает последовательную append-only history из одного или нескольких
458
+ `checks-failed` events при отсутствии corrective decision. Evidence v2 связывает каждый event ID/hash/
459
+ ordinal, Task revision, Plan/Step definition, manifest и runner hashes, Git HEAD, conflicts и SHA-256
460
+ dirty worktree. `task plan-integrity-recover` записывает один `replan-required` decision с
461
+ `triggeringAttemptCount = failures + 1` и полным `coveredEventIds`.
462
+
463
+ Если exact beta.12.12 package ещё не установлен, `update plan-integrity-update-preflight` проверяет
464
+ source beta.12.11, отсутствие leases/transactions и exact dirty allowlist. После dependency-only
465
+ transport `update plan-integrity-dependency-preflight/recover` регистрирует единственный HEAD как system
466
+ commit. Когда Knowledge drift объясняется только Workflow pin, та же Project transaction выполняет
467
+ corrective-derived reconcile/approval; прочий drift fail-closed. Product bytes не коммитятся и не
468
+ переносятся. Fresh route продолжается через credential replacement, `plan-integrity-recover`, yield и
469
+ corrective replan с selector-bearing check.
470
+
448
471
  # 14. P04-A structural replacement boundary
449
472
 
450
473
  Command shape `task replacement-materialize` retained только для compatibility diagnostics. Любая попытка
@@ -507,12 +530,12 @@ Docker socket/CLI `EPERM`, `operation not permitted` или `permission denied`
507
530
  После каждой successful mutation обязателен sequential `status`, затем fresh `next`. Failed status/next
508
531
  не разрешает direct mutation. Syntax help read-only и не заменяет navigation authority.
509
532
 
510
- # 18. Public command surface beta.12.11
533
+ # 18. Public command surface beta.12.12
511
534
 
512
535
  | Область | Actions |
513
536
  |---|---|
514
537
  | System | `doctor`, `status`, `next`, `gateway handshake`, `locks` |
515
- | Update | `preflight`, `rescue-preflight`, dependency provenance, historical-Step dependency bridge, downstream-proof dependency bridge, downstream-proof replan update/dependency bridge |
538
+ | Update | `preflight`, `rescue-preflight`, dependency provenance, historical-Step dependency bridge, downstream-proof bridges, Plan-integrity update/dependency bridge |
516
539
  | Project memory | `scan`, `show`, `status`, `approve`, `reconcile` |
517
540
  | Delegation | `prepare`, `grant`, `list`, `show`, `revoke` |
518
541
  | Graph | `prepare`, `status`, `refresh-request`, `bind`, `fallback` |
@@ -532,10 +555,11 @@ Exact options берутся из fresh `next`; command help используе
532
555
 
533
556
  Перед package update project-local `update preflight` должен вернуть `safe=true`: clean checkout, нет
534
557
  running Step и active/stale writer lease. Исключения — документированный alpha.7 rescue, beta.12.6
535
- active-downstream-proof bridge, beta.12.7 exact stranded-replan bridge и beta.12.9 historical-Step
536
- dependency bridge; все они fail-closed и не дают общего разрешения dirty update.
558
+ active-downstream-proof bridge, beta.12.7 exact stranded-replan bridge, beta.12.9 historical-Step
559
+ dependency bridge и beta.12.12 Plan-integrity bridge; все они fail-closed и не дают общего разрешения
560
+ dirty update.
537
561
 
538
- Перед beta.12.11 tag обязательны `npm ci`, `npm run validate`, `npm run test:signal-remediation-e2e`, `npm run pack:check`,
562
+ Перед beta.12.12 tag обязательны `npm ci`, `npm run validate`, `npm run test:signal-remediation-e2e`, `npm run pack:check`,
539
563
  `npm run smoke:downstream`, `npm run plugin:check`, official plugin/skill validators,
540
564
  `npm run docs:pdf:check`, `npm run release:check` с exact tag binding и validation
541
565
  append-only real-agent lifecycle log.
package/docs/release.md CHANGED
@@ -28,7 +28,7 @@ The PDF check deterministically regenerates all three Russian documents from
28
28
  `docs/pdf/sources`, binds the visible package version to the root manifest, and fails when any
29
29
  tracked PDF is stale. Source and binary PDFs are one release unit.
30
30
 
31
- For beta.12.11, the release gate also relies on `npm run release:check` to fail if:
31
+ For beta.12.12, the release gate also relies on `npm run release:check` to fail if:
32
32
 
33
33
  - canonical entity schema 2 shapes drift;
34
34
  - protocol 2 is not the active public contract, or intact protocol-1 adoption evidence stops being readable through the bounded compatibility window;
@@ -57,7 +57,8 @@ For beta.12.11, the release gate also relies on `npm run release:check` to fail
57
57
  commit, current Plan/Step, dirty paths/content hash, and absence of leases/transactions.
58
58
  - the read-only Milestone progress projection, replacement regression, project-monotonic chat
59
59
  registry, title fallback/readback, or long-Cyrillic multi-attempt E2E evidence is absent.
60
- - bounded first-failure Plan-integrity recovery, exact failed-remediation/manifest/worktree
60
+ - bounded first- or repeated-failure Plan-integrity recovery, selector-required npm-check
61
+ feasibility, exact failed-remediation/manifest/worktree
61
62
  bindings, or the no-synthetic-second-failure regression is absent.
62
63
  - downstream proof cannot invalidate only completed transitive-predecessor authority while
63
64
  preserving worktree/HEAD, yielding C1, and returning the same Task to fresh planning; or unrelated
@@ -22,6 +22,31 @@ state schema. Совпадение `stateSchemaVersion` до и после об
22
22
  нужна. Для alpha.6 при `stateSchemaVersion: 2` применяется не migration, а sidecar-only
23
23
  adoption posture.
24
24
 
25
+ ### beta.12.12: неисполняемая Step check и сохранение текущей реализации
26
+
27
+ Новые Plans больше не могут получить execution authorization, если root npm script запускает
28
+ repository-local `affected` validator, сам validator явно требует `--base`, `--head` или `--files`,
29
+ а Step check не передаёт ни одного selector. Исправьте check в Plan, например
30
+ `npm run validate:affected -- --files=<allowedWrites>`; Worker и remediation attempt до этого не
31
+ запускаются.
32
+
33
+ Для Task, уже застрявшей на beta.12.11 после одного или нескольких одинаковых `checks-failed`,
34
+ используется только bounded bridge. Внешний exact beta.12.12 runner выполняет read-only
35
+ `update plan-integrity-update-preflight`; продолжение допустимо лишь при `eligible=true`, отсутствии
36
+ lease/transaction и точном dirty set внутри failed Step `allowedWrites`. Затем один dependency-only
37
+ commit (`package.json` и `package-lock.json`) должен оказаться и на Milestone base, и в Task history
38
+ без изменения product bytes. Fresh repository-local `next` рекламирует
39
+ `update plan-integrity-dependency-recover`; этот переход регистрирует dependency commit и, если
40
+ Knowledge drift вызван только Workflow pin в `package.json`, атомарно выполняет corrective-derived
41
+ Knowledge refresh без Human approval.
42
+
43
+ После регистрации Core связывает всю append-only цепочку failed attempts, текущий Plan, HEAD,
44
+ manifest, validator и SHA-256 dirty worktree. `task plan-integrity-recover` записывает один
45
+ `replan-required` decision для следующего ordinal. Затем следуйте fresh
46
+ `task corrective-yield -> task corrective-replan-*`; replacement Plan обязан сохранить Step и dirty
47
+ allowlist, но заменить check на исполняемую selector-bearing команду. Не коммитьте product files,
48
+ не редактируйте state и не повторяйте старую неисполняемую проверку.
49
+
25
50
  ### beta.12.11: audited remediation и dependency-only Knowledge refresh
26
51
 
27
52
  После безопасного обновления существующий active Milestone может продолжить работу без пересоздания,
@@ -1,113 +1,134 @@
1
- # V2 beta.12.11 Validation Report
1
+ # V2 beta.12.12 Validation Report
2
2
 
3
- Release candidate `2.0.0-beta.12.11` was validated on 2026-08-31 (Europe/Moscow) with
3
+ Release candidate `2.0.0-beta.12.12` 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
- - `npm ci` completed from the exact lockfile. No dependency version changed outside the release pin.
9
- - `npm run validate` passed typecheck and `345/345` sequential tests with no failures, skips,
10
- cancellations, or todos in 1,974,837.33 ms.
11
- - `npm run test:signal-remediation-e2e` passed two focused scenarios. The positive E2E starts with an
12
- approved Knowledge Map bound to beta.12.9, commits an exact dependency-only update to beta.12.11,
13
- proves the stale map from Git and all version surfaces, materializes an audited upstream remediation
14
- Task, completes its Plan/audit/C1/Step/review/accept/merge lifecycle, replans the original Task, and
15
- completes a later Step there. The negative E2E changes README and proves that unrelated Knowledge
16
- drift is not auto-approved while standalone reconcile remains executable.
17
- - Existing negative coverage still rejects non-exact predecessor frontiers, duplicate remediation,
18
- stale revisions, non-required or non-active Milestone posture, topology drift, reused audit evidence,
19
- unsafe Knowledge paths, classification/gap/conflict drift, dirty checkouts, unaligned package
20
- surfaces and wider Git commits.
21
- - Package dry-run produced `codex-workflow-v2-2.0.0-beta.12.11.tgz` with 278 files, 1,057,906 bytes
22
- packed and 4,224,300 bytes unpacked. The tarball excludes repository-local `docs/quality`. The first
23
- invocation encountered a root-owned user npm cache (`EPERM`); the exact retry passed with an isolated
24
- temporary cache.
25
- - `npm run smoke:downstream` built and installed the tarball in a disposable consumer project and
26
- returned `ok=true`. The sandboxed attempt could not resolve npm (`ENOTFOUND`); the same command passed
27
- with network access.
28
- - `npm run plugin:check` passed for bundled gateway `0.1.0+codex.20260830183000`.
29
- - `npm run docs:pdf:check` reported an empty stale set and exact beta.12.11 package binding.
30
- - `RELEASE_TAG=v2.0.0-beta.12.11 npm run release:check` and `git diff --check` passed.
31
-
32
- ## Root causes corrected
33
-
34
- beta.12.10 added the bounded audited-remediation topology for a required pre-execution Task whose
35
- current Plan Risk Audit truthfully returned `stop-escalate` because an upstream capability was absent.
36
- Real installation in Signal exposed a second deadlock before that route could run:
37
-
38
- 1. the dependency-only package commit changed the approved `package.json` content hash;
39
- 2. repository `next` correctly observed stale Project Knowledge and advertised standalone reconcile;
40
- 3. standalone reconcile tried to discover a delegated Task context owner;
41
- 4. the same blocking Plan Risk Audit rejected that inspection, so the advertised transition could not
42
- execute; and
43
- 5. even an ordinary reconcile would have required a Human approval and Task rebind that invalidated the
44
- exact audit binding needed by remediation.
45
-
46
- The primary defect was incomplete composition between package update, Knowledge authority and audited
47
- remediation, not an insufficient retry count. A one-command bypass or broad auto-approval would have
48
- hidden unreviewed product/documentation changes.
8
+ - `npm ci` completed from the exact lockfile; the audit reported zero vulnerabilities.
9
+ - The first full `npm run validate` run found two compatibility regressions in the pre-existing
10
+ corrective-recovery suite. Plan-integrity preflight was made non-authoritative while a repairable
11
+ legacy remediation-history defect exists, and an old test was aligned with the intentional
12
+ corrective-yield-before-context-refresh priority. Both focused reproductions then passed.
13
+ - The mandatory second `npm run validate` passed typecheck and `348/348` sequential tests with no
14
+ failures, skips, cancellations, or todos in 2,149,397.21 ms.
15
+ - The full suite includes the beta.12.12 selector-contract E2E: four sequential failures of one
16
+ guarded Step, dependency-only update transport, exact compatibility registration, automatic
17
+ package-only Knowledge refresh, Plan-integrity recovery, corrective yield, and fresh corrective
18
+ replan without losing the Step worktree.
19
+ - `npm run test:signal-remediation-e2e` passed both focused scenarios (`2/2`). It still proves the
20
+ audited upstream-remediation route through a later Step and rejects unrelated Knowledge drift.
21
+ - Package dry-run produced `codex-workflow-v2-2.0.0-beta.12.12.tgz` with 281 files, 1,070,498 bytes
22
+ packed and 4,283,430 bytes unpacked. The tarball SHA-1 is
23
+ `349bcd371b09a2467496057166c78d879e99e937`. The first invocation encountered a root-owned user npm
24
+ cache (`EPERM`); the exact retry passed with an isolated temporary cache and no system permission
25
+ changes.
26
+ - `npm run smoke:downstream` built and installed that tarball in a disposable consumer project and
27
+ returned `ok=true`. The sandboxed attempt could not resolve npm (`ENOTFOUND`); the same command
28
+ passed with approved network access.
29
+ - `npm run plugin:check` passed for bundled gateway `0.1.0+codex.20260830183000`. The installed
30
+ Codex CLI exposes no `plugin validate` subcommand, so the repository validator plus successful
31
+ packaged downstream installation are the available plugin release evidence.
32
+ - `npm run docs:pdf:check` reported an empty stale set and exact beta.12.12 package binding.
33
+ - `RELEASE_TAG=v2.0.0-beta.12.12 npm run release:check` and `git diff --check` passed.
34
+ - `node scripts/validate-lifecycle-transcript.mjs --file
35
+ tests/fixtures/lifecycle-transcripts/valid-normal-sequence.jsonl` passed with four checked events;
36
+ the full validator suite also passed all positive and negative transcript fixtures.
37
+
38
+ ## Root cause corrected
39
+
40
+ Signal Task `TASK-01M1B79C660YMNSRRZ236NTR1T` reached revision 12 with four recorded
41
+ `checks-failed` events. The approved Step check was `npm run validate:affected`, while the existing
42
+ repository script delegates to `tools/validation/run.mjs affected`, whose public contract requires at
43
+ least one of `--base`, `--head`, or `--files`. The command therefore failed before validation and could
44
+ not become successful through another implementation attempt.
45
+
46
+ Two Workflow gaps made the state non-recoverable:
47
+
48
+ 1. mechanical feasibility proved that the npm script existed but did not verify the mandatory
49
+ selector contract of the repository-owned runner; and
50
+ 2. bounded Plan-integrity recovery recognized only the first failed attempt with no corrective
51
+ decision, so it could not convert the already accumulated four-event history into a fresh Plan.
52
+
53
+ The primary defect was an invalid executable Plan contract plus an incomplete late-recovery route,
54
+ not insufficient Worker effort and not an attempt-count problem.
49
55
 
50
56
  ## Implemented lifecycle contract
51
57
 
52
- - Fresh `next` advertises audited remediation only for an unstarted
53
- `awaiting_execution_authorization` required Task of an active Milestone with a current
54
- `stop-escalate` Plan Risk Audit.
55
- - When Project Knowledge is stale, the route continues without a Human gate only if Core proves all of
56
- the following: the previously stored map is active and approved; the sole changed Knowledge path is
57
- `package.json`; checkout is clean; runtime, declared, locked, installed, HEAD and Milestone-base
58
- versions equal; the approved manifest bytes exist in current Git ancestry; and every subsequent
59
- commit that touched `package.json` changed exactly `package.json` and `package-lock.json` with no
60
- structural difference after removing the Workflow dependency.
61
- - `next.auditedRemediation.dependencyKnowledgeRefresh` exposes the evidence and blockers without writes.
62
- Discovery start/update stays available only when this assessment is eligible.
63
- - `milestone remediation-materialize` atomically writes the consumed Discovery, one required remediation
64
- Task, additive Milestone topology, scope-change evidence and—when required—the reconciled active
65
- Knowledge Map at revision +2 with `corrective-derived` approval. No actor, confirmation code,
66
- delegation grant or Human approval is accepted.
67
- - The new Task inherits the blocked Task exact direct predecessor frontier. Milestone outcome, success
68
- signal, acceptance, checks, base, old memberships and unrelated dependency edges remain unchanged.
69
- - The corrective-derived actor remains `agent:milestone-remediation:<MS-ID>` and authorizes only the
70
- advertised required Task execution/final-acceptance transitions. Final Milestone acceptance remains
71
- an ordinary Human/delegated gate.
72
- - After remediation merge, the original Task returns to `task plan-set`, receives a fresh Knowledge
73
- binding, Plan and Risk Audit, then proceeds through ordinary C1, checks, commits and reviews.
74
- - Unsafe or unrelated Knowledge drift never enters this route. Standalone reconcile now remains
75
- executable instead of throwing while it checks whether a blocked Task can own delegated refresh;
76
- subsequent explicit approval semantics are unchanged.
77
- - Handshake adds `audited-remediation-dependency-knowledge-refresh-v1` while protocol and state schema
78
- remain `2/2`.
79
-
80
- ## Signal-shaped evidence
81
-
82
- The focused E2E reproduces the real post-install boundary, including an older approved manifest hash,
83
- an exact package/lock update commit, a stale Knowledge observation, an active Milestone, one blocked
84
- required consumer and the later ordinary Step. It proves the complete continuation rather than only
85
- the Knowledge assessment or materialization command.
86
-
87
- Live Signal installation and mutation remain post-publication actions. They must install exact
88
- repository-local beta.12.11, commit only package/lock, run sequential handshake/status/next, follow the
89
- advertised audited-remediation route and confirm Core readback. No manual state edit, Git history
90
- rewrite, Task cancellation or duplicate Milestone is part of the recovery.
58
+ - Mechanical feasibility now uses the versioned analyzer `wf2.root-npm-script-arguments@1`. It
59
+ conservatively recognizes only a root npm script whose command is a repository-relative Node
60
+ `affected` runner and whose source contains the established selector contract. A Plan check without
61
+ `--base`, `--head`, or `--files` is blocked when the runner is outside current/predecessor
62
+ `allowedWrites`; an explicit forwarded selector passes. Unsupported syntax remains `unverified`.
63
+ - Plan-integrity evidence schema v2 binds the current Task revision, Step and Plan hashes, every
64
+ sequential remediation event, package manifest and runner bytes, Git HEAD, dirty Step files, and a
65
+ canonical conflict hash. Existing v1 evidence remains readable.
66
+ - Recovery accepts one or more contiguous `checks-failed` events only when no corrective decision has
67
+ consumed them. It appends one `replan-required` decision at the next ordinal and covers the complete
68
+ failed history; it does not synthesize an extra failure.
69
+ - A published update from beta.12.11 is permitted only through the read-only
70
+ `update plan-integrity-update-preflight` proof. Transport may commit only `package.json` and
71
+ `package-lock.json` on the active Milestone base and carry that exact dependency commit to the Task
72
+ branch while preserving all product bytes.
73
+ - Fresh `next` then advertises `update plan-integrity-dependency-recover` only when current HEAD,
74
+ package version, parent commit, Task/Step/Plan, remediation IDs, dirty paths and their content hash,
75
+ absence of leases, and transaction state still match the preflight boundary.
76
+ - Dependency registration and a Project Knowledge refresh are one Project transaction. The refresh is
77
+ allowed without a Human gate only when the sole canonical drift is the exact Workflow pin in
78
+ `package.json`; any unrelated Knowledge change fails closed.
79
+ - The compatibility record is authority only for the exact post-update Plan-integrity recovery. A
80
+ fresh replacement Plan must bind the current Knowledge Map and replace the invalid check with an
81
+ executable selector-bearing command. Ordinary authorization, C1, Core commit, strict review, and
82
+ subsequent navigation remain mandatory.
83
+ - A repairable legacy remediation-mode defect outranks this new preflight. Plan-integrity assessment
84
+ reports itself ineligible and leaves `next` free to advertise the established
85
+ `task remediation-mode-recover` route.
86
+ - Handshake adds `plan-integrity-update-recovery-v1`; protocol and state schema remain `2/2`.
87
+
88
+ ## Signal-shaped and negative evidence
89
+
90
+ The new synthetic E2E reproduces the real Signal boundary rather than testing a helper in isolation:
91
+
92
+ - beta.12.11 package/lock and approved Knowledge Map;
93
+ - an active claimed guarded Step with four distinct `checks-failed` events;
94
+ - the same missing selector contract as Signal;
95
+ - the exact allowlisted dirty worktree;
96
+ - a dependency-only beta.12.12 commit;
97
+ - automatic package-only Knowledge refresh and compatibility registration;
98
+ - writer credential replacement, Plan-integrity recovery, corrective yield, and fresh corrective
99
+ replan preparation.
100
+
101
+ Negative coverage rejects a runner inside the current Step write scope, unrelated dirty files,
102
+ tampered evidence, an active lease, wider dependency commits, changed worktree bytes, stale
103
+ Task/Plan/Step bindings, transaction conflicts, and unrelated Knowledge drift. Existing tests also
104
+ prove that Plan-integrity preflight cannot hide the older remediation-mode recovery route.
105
+
106
+ Live Signal mutation remains post-publication work. It must preserve the three current Worker files,
107
+ transport only package/lock, use fresh repository-local handshake/status/next before each mutation,
108
+ and follow only advertised recovery actions. No manual Workflow-state edit, history rewrite, Task
109
+ cancellation, duplicate Task, or replacement Milestone is authorized by this release.
91
110
 
92
111
  ## PDF release documentation evidence
93
112
 
94
- - All three tracked Russian PDFs were regenerated from beta.12.11 Markdown sources.
95
- - Architecture is 8 pages, the delegated chat-only guide is 10 pages, and the technical reference is
96
- 13 pages. All 31 pages were rendered to PNG and visually inspected.
97
- - Titles, package bindings, Cyrillic text, tables, code blocks, margins, footers and the new
98
- dependency-Knowledge sections have no visible clipping, overlap or unreadable content.
113
+ - All three tracked Russian PDFs were regenerated from beta.12.12 Markdown sources.
114
+ - Architecture is 9 pages, the delegated chat-only guide is 10 pages, and the technical reference is
115
+ 13 pages. All 32 pages were rendered and visually inspected through contact sheets.
116
+ - Titles, version bindings, Cyrillic text, tables, code blocks, margins, footers and selector-recovery
117
+ sections show no clipping, overlap, or unreadable content.
99
118
 
100
119
  ## Existing boundaries and non-claims
101
120
 
102
- - The route does not permit arbitrary Task insertion, Task removal, semantic Milestone scope change,
103
- arbitrary dependency rewiring, completed-Step adoption or `split-required` replacement.
104
- - It does not auto-approve README, documentation, commands, classifications, authorities, gaps,
105
- conflicts, dirty files or package commits containing any non-Workflow change.
121
+ - The analyzer does not execute or infer arbitrary shell grammar and does not claim to understand
122
+ every repository validation framework.
123
+ - The compatibility route cannot change product files, Plan semantics, Milestone topology, Task
124
+ membership, dependency edges, completed-Step provenance, or unrelated Knowledge.
125
+ - The release does not make a failing implementation pass, approve a broken check, or increase retry
126
+ limits. It creates a bounded route to replace a mechanically impossible approved check.
106
127
  - Protocol version remains 2 and state schema remains 2; no state migration is required.
107
- - This report does not claim Git tag/push, npm publication or live Signal recovery before those
108
- post-gate operations are read back separately.
128
+ - This report does not claim Git commit/tag/push, npm publication, live Signal installation, or Task
129
+ completion before those operations receive their own readbacks.
109
130
 
110
- Confidence is high for the package implementation, bounded no-Human dependency Knowledge refresh,
111
- transaction atomicity, regression compatibility, tarball composition, downstream installation,
131
+ Confidence is high for selector detection, repeated-failure recovery, update compatibility,
132
+ transaction atomicity, regression compatibility, package composition, downstream installation,
112
133
  gateway and documentation. Live Signal confidence remains conditional on exact publication,
113
- installation and fresh Core/Coordinator readback.
134
+ installation, fresh Core readback, and completion of the previously blocked Step.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-workflow-v2",
3
- "version": "2.0.0-beta.12.11",
3
+ "version": "2.0.0-beta.12.12",
4
4
  "description": "Requirements-first Codex development workflow with local state and explicit Git ownership.",
5
5
  "repository": {
6
6
  "type": "git",