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

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 (46) hide show
  1. package/README.md +7 -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-binding-manifest.js +2 -0
  18. package/dist/src/lifecycle/corrective-replan-binding-manifest.js.map +1 -1
  19. package/dist/src/lifecycle/corrective-replan.js +1 -1
  20. package/dist/src/lifecycle/corrective-replan.js.map +1 -1
  21. package/dist/src/lifecycle/semantic-registry.js +1 -1
  22. package/dist/src/state/corrective-replan-executor.js +7 -5
  23. package/dist/src/state/corrective-replan-executor.js.map +1 -1
  24. package/dist/src/state/corrective-replan-public.js +30 -6
  25. package/dist/src/state/corrective-replan-public.js.map +1 -1
  26. package/dist/src/state/corrective-yield-transaction.js +11 -2
  27. package/dist/src/state/corrective-yield-transaction.js.map +1 -1
  28. package/dist/src/version.d.ts +1 -1
  29. package/dist/src/version.js +1 -1
  30. package/dist/src/workflow.d.ts +4 -0
  31. package/dist/src/workflow.js +258 -12
  32. package/dist/src/workflow.js.map +1 -1
  33. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  34. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  35. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  36. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +22 -5
  37. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +22 -7
  38. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +52 -10
  39. package/docs/release.md +3 -2
  40. package/docs/updating-existing-project.md +25 -0
  41. package/docs/validation-report.md +115 -94
  42. package/package.json +1 -1
  43. package/schemas/corrective-decision-event.schema.json +57 -10
  44. package/schemas/corrective-replan-credentials.private.schema.json +4 -2
  45. package/schemas/task.schema.json +23 -0
  46. package/schemas/transition-definition.schema.json +8 -0
@@ -1,10 +1,10 @@
1
1
  ---
2
- title: Codex Workflow V2: архитектура beta.12.11
2
+ title: Codex Workflow V2: архитектура beta.12.13
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.13
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.13 гарантирует
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.13 не гарантирует
45
45
 
46
46
  - правильность продуктовой идеи или автоматически выбранного provider Task;
47
47
  - semantic sufficiency Plan, если точные факты нельзя доказать поддерживаемым analyzer;
@@ -314,6 +314,23 @@ 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
+
326
+ beta.12.13 устраняет следующий доказанный разрыв этого пути. Corrective-replan credential раздельно
327
+ связывает исходную Knowledge revision/hash Task и целевую active Knowledge revision/hash replacement
328
+ Plan. Различие разрешено только при exact Plan-integrity dependency recovery: текущий system commit,
329
+ package version, failed Step, Plan, полная remediation history, dirty file set и их bytes должны
330
+ совпасть. Следующее dependency-only обновление после corrective yield может перенести ту же compatibility
331
+ на новый HEAD только при точном parent commit и неизменном worktree. Completed corrective-yield journal
332
+ остаётся историческим prefix-доказательством и не блокирует последующие append-only handoff events.
333
+
317
334
  Docker socket `EPERM` в sandbox не является доказательством сломанного daemon. Gateway один раз
318
335
  повторяет exact health probe или Plan check с sandbox escalation без расходования remediation attempt.
319
336
  Restart Docker Desktop требует отдельного разрешения и допустим только после escalated daemon failure.
@@ -323,7 +340,7 @@ Restart Docker Desktop требует отдельного разрешения
323
340
  # 10. Operational checklist
324
341
 
325
342
  - exact package version установлен, bundled gateway соответствует release и переустановлен;
326
- - handshake подтверждает protocol 2, state schema 2 и beta.12.11 capabilities;
343
+ - handshake подтверждает protocol 2, state schema 2 и beta.12.13 capabilities;
327
344
  - каждый mutation следует свежему `status -> next` и exact option contract;
328
345
  - Docker permission failure сначала классифицируется как sandbox boundary, а не как infra retry;
329
346
  - 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.13 путь от нового 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.13
8
8
  ---
9
9
 
10
- # 1. Рабочая модель beta.12.11
10
+ # 1. Рабочая модель beta.12.13
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.13 как точную 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.13 должен сообщать `packageVersion=2.0.0-beta.12.13`, `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.13 в delegated режиме.
121
121
  Repository: <ABSOLUTE-REPOSITORY-ROOT>.
122
122
  Milestone ID: AUTO.
123
123
  Delegate actor: agent:milestone-coordinator.
@@ -350,6 +350,21 @@ 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
+
363
+ Если update произошёл уже после `task corrective-yield`, beta.12.13 допускает только advertised
364
+ `update plan-integrity-dependency-recover`: parent должен быть предыдущим зарегистрированным recovery
365
+ commit, а failed Step, Plan, remediation IDs, dirty paths и dirty SHA-256 — полностью совпадать. После
366
+ recovery снова запросите `status -> next`; ожидаемый route остаётся `task corrective-replan-prepare`.
367
+
353
368
  Для exact beta.12.6 stranded-replan shape сначала нужен eligible read-only source preflight с exact
354
369
  revision/HEAD/dirty hash. Затем два beta.12.7 dependency-only commits и advertised dependency/replan
355
370
  recoveries. После Knowledge refresh `next` обязан остаться на `task plan-set`; новый единый Step должен
@@ -382,7 +397,7 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
382
397
 
383
398
  # 14. Итоговый checklist пользователя
384
399
 
385
- - beta.12.11 exact package и новый bundled gateway установлены;
400
+ - beta.12.13 exact package и новый bundled gateway установлены;
386
401
  - новый Coordinator chat не является fork старого Milestone;
387
402
  - bootstrap DGR, если нужен, выдан отдельным exact human confirmation;
388
403
  - 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.13
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.13
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.13 | Значение |
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.13` |
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.13 capabilities:
41
41
 
42
42
  | Группа | Capabilities |
43
43
  |---|---|
@@ -445,6 +445,47 @@ 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
+
471
+ # 13.6. beta.12.13 source/target Knowledge binding
472
+
473
+ Corrective-replan receipt теперь включает две разные пары. `knowledgeRevision/knowledgeHash` связывает
474
+ исходное состояние Task; `targetKnowledgeRevision/targetKnowledgeHash` связывает active Project
475
+ Knowledge Map и replacement Plan. Executor проверяет source под Task lock, candidate Plan — по target,
476
+ а Risk Audit и materialized Task получают target binding.
477
+
478
+ Source и target могут различаться только при exact `dependencyProvenanceRecoveries.planIntegrity` для
479
+ текущего HEAD и package version. Record обязан совпасть по Plan, failed Step, всей remediation event ID
480
+ последовательности, dirty paths и повторно вычисленному dirty SHA-256. Для последовательного package
481
+ update после corrective yield Core переносит compatibility лишь с зарегистрированного `HEAD^`; любое
482
+ изменение product bytes, Step status, Plan, decision или C1 posture отключает route.
483
+
484
+ Completed corrective-yield transaction проверяет неизменный canonical yield event как prefix текущей
485
+ append-only handoff history. Это сохраняет tamper detection, но разрешает новый handoff после успешного
486
+ corrective replan. E2E release gate проходит prepare/confirm/execute, authorization, handoff/claim,
487
+ selector-bearing Step completion commit и strict Step review.
488
+
448
489
  # 14. P04-A structural replacement boundary
449
490
 
450
491
  Command shape `task replacement-materialize` retained только для compatibility diagnostics. Любая попытка
@@ -507,12 +548,12 @@ Docker socket/CLI `EPERM`, `operation not permitted` или `permission denied`
507
548
  После каждой successful mutation обязателен sequential `status`, затем fresh `next`. Failed status/next
508
549
  не разрешает direct mutation. Syntax help read-only и не заменяет navigation authority.
509
550
 
510
- # 18. Public command surface beta.12.11
551
+ # 18. Public command surface beta.12.13
511
552
 
512
553
  | Область | Actions |
513
554
  |---|---|
514
555
  | 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 |
556
+ | Update | `preflight`, `rescue-preflight`, dependency provenance, historical-Step dependency bridge, downstream-proof bridges, Plan-integrity update/dependency bridge |
516
557
  | Project memory | `scan`, `show`, `status`, `approve`, `reconcile` |
517
558
  | Delegation | `prepare`, `grant`, `list`, `show`, `revoke` |
518
559
  | Graph | `prepare`, `status`, `refresh-request`, `bind`, `fallback` |
@@ -532,10 +573,11 @@ Exact options берутся из fresh `next`; command help используе
532
573
 
533
574
  Перед package update project-local `update preflight` должен вернуть `safe=true`: clean checkout, нет
534
575
  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.
576
+ active-downstream-proof bridge, beta.12.7 exact stranded-replan bridge, beta.12.9 historical-Step
577
+ dependency bridge и beta.12.13 Plan-integrity bridge; все они fail-closed и не дают общего разрешения
578
+ dirty update.
537
579
 
538
- Перед beta.12.11 tag обязательны `npm ci`, `npm run validate`, `npm run test:signal-remediation-e2e`, `npm run pack:check`,
580
+ Перед beta.12.13 tag обязательны `npm ci`, `npm run validate`, `npm run test:signal-remediation-e2e`, `npm run pack:check`,
539
581
  `npm run smoke:downstream`, `npm run plugin:check`, official plugin/skill validators,
540
582
  `npm run docs:pdf:check`, `npm run release:check` с exact tag binding и validation
541
583
  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.13 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.13` 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.
8
+ - `npm ci` completed from the exact lockfile; the audit reported zero vulnerabilities.
9
+ - The first full `npm run validate` passed 346 of 348 tests. The only two failures were exact
10
+ transition-definition identity pins intentionally changed by the two new Knowledge fields: the
11
+ serialized definition SHA-256 and the binding-manifest row count. The derived serialized digest,
12
+ runtime fingerprint, runtime catalog hash, and row count were recorded from the actual compiled
13
+ model; the focused authority suite then passed `4/4`.
14
+ - The mandatory clean rerun of `npm run validate` passed typecheck and `348/348` sequential tests
15
+ with no failures, skips, cancellations, or todos in 2,131,076.63 ms.
16
+ - The full suite includes a beta.12.13 Signal-shaped E2E: repeated selector-contract failures,
17
+ beta.12.12-like dependency recovery, a second package-only update, carried exact compatibility,
18
+ corrective replan against the active Knowledge Map, fresh authorization/C1, selector-bearing
19
+ validation, a Core Step commit, and strict Step review. It also proves that changed dirty bytes
20
+ make the carry preflight fail closed.
21
+ - `npm run test:signal-remediation-e2e` passed `2/2`; `npm run
22
+ test:signal-t03-replan-e2e` passed `1/1`; and `npm run test:signal-t04-recovery` passed `11/11`.
23
+ Together they independently cover audited upstream remediation through a later Step, the
24
+ Signal-shaped accidental-rebind/replan path, bounded dependency recovery, and retained reviewed
25
+ Step provenance.
26
+ - Package dry-run produced `codex-workflow-v2-2.0.0-beta.12.13.tgz` with 281 files (approximately
27
+ 1.1 MB packed and 4.3 MB unpacked). The first invocation encountered the known root-owned user npm
28
+ cache (`EPERM`); the exact retry passed with an isolated temporary cache and no system permission
29
+ changes.
30
+ - `npm run smoke:downstream` built and installed that tarball in a disposable consumer project and
31
+ returned `ok=true`. The sandboxed attempt could not resolve npm (`ENOTFOUND`); the same command
32
+ passed with approved network access.
28
33
  - `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.
34
+ - `npm run docs:pdf:check` reported an empty stale set and exact beta.12.13 package binding.
35
+ - `RELEASE_TAG=v2.0.0-beta.12.13 npm run release:check` and `git diff --check` passed.
31
36
 
32
- ## Root causes corrected
37
+ ## Root cause corrected
33
38
 
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:
39
+ Signal Task `TASK-01M1B79C660YMNSRRZ236NTR1T` retained its three allowlisted Worker files and reached
40
+ a legitimate `corrective-replan-prepare` route after beta.12.12 recovery. Preparation still failed:
41
+ the Task source Plan remained bound to the older Project Knowledge Map, while the only admissible
42
+ replacement Plan correctly bound the newer active map created by the package-only Knowledge refresh.
43
+ The public corrective-replan path required those two bindings to be identical, so no candidate could
44
+ satisfy both constraints.
37
45
 
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.
46
+ A further release update exposed two related continuity gaps:
45
47
 
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.
48
+ 1. Plan-integrity dependency recovery could derive compatibility only from a currently detectable
49
+ invalid-check assessment. After the first recovery and `replan-required` decision, a second
50
+ package-only update could no longer reconstruct the already registered exact compatibility.
51
+ 2. A completed corrective-yield journal required the whole current handoff sidecar to equal the
52
+ yield-owned bytes forever. A later valid append-only handoff therefore made historical readback
53
+ fail even though the original yielded entry was intact.
54
+
55
+ The defect was not insufficient Worker effort, an invalid product implementation, or a need to
56
+ increase attempts. It was an over-constrained source/target Knowledge identity plus incomplete
57
+ append-only continuity across consecutive Workflow updates.
49
58
 
50
59
  ## Implemented lifecycle contract
51
60
 
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.
61
+ - Corrective-replan credentials now bind two distinct pairs. `knowledgeRevision`/`knowledgeHash`
62
+ identify the unchanged source Task/Plan state under the Core lock;
63
+ `targetKnowledgeRevision`/`targetKnowledgeHash` identify the active Project Knowledge Map that the
64
+ candidate Plan, new Plan Risk Audit, and materialized Task state must bind.
65
+ - Source and target Knowledge may differ only when the Task contains one exact current
66
+ Plan-integrity dependency-provenance recovery. It must match the current HEAD and package version,
67
+ a Workflow-owned system commit, current Plan and failed Step, the complete remediation-event list,
68
+ exact dirty paths, and a freshly recomputed dirty-worktree hash. Otherwise preparation remains
69
+ fail closed.
70
+ - A consecutive package-only update may carry compatibility from exactly one prior registered
71
+ recovery on `HEAD^`. Carry is admitted only when the current Task still has the same Plan, failed
72
+ Step, full remediation history, dirty paths and bytes, one `replan-required` decision, and no C1
73
+ posture. It cannot infer compatibility from prose or widen the product boundary.
74
+ - The corrective-replan private credential schema and binding manifest contain 30 exact fields.
75
+ Their serialized definition digest, runtime semantic fingerprint, and runtime catalog hash are
76
+ pinned by the authority-model suite.
77
+ - A completed corrective-yield journal now proves that its owned handoff bytes remain an exact prefix
78
+ of the current canonical append-only history and validates the entire current JSONL chain. Pending
79
+ and in-flight phases retain exact-byte equality. Truncation, prefix mutation, or malformed appended
80
+ history still fails closed.
81
+ - Protocol and state schema remain `2/2`; no lifecycle-state migration is required.
82
+
83
+ ## Signal-shaped and negative evidence
84
+
85
+ The new synthetic E2E reproduces the live boundary instead of testing a helper in isolation:
86
+
87
+ - an active failed guarded Step with repeated selector-contract failures and three allowlisted dirty
88
+ product files;
89
+ - an existing beta.12.12 Plan-integrity recovery and `replan-required` decision;
90
+ - a subsequent exact package-only beta.12.13 update while the Task source Knowledge remains older
91
+ than the active Project Knowledge Map;
92
+ - reconstruction of exact compatibility from `HEAD^` without modifying product bytes;
93
+ - corrective replan whose source binding remains old and whose candidate target binding is current;
94
+ - new execution authorization and C1 cycle;
95
+ - the selector-bearing `validate:affected -- --files=...` check;
96
+ - successful Step completion through a Workflow-owned Core commit and strict Step review.
97
+
98
+ Negative coverage rejects changed dirty bytes, wider dirty scope, the wrong parent/system commit,
99
+ stale Plan or Step, incomplete remediation history, a non-`replan-required` decision, active C1,
100
+ unregistered Knowledge drift, truncated historical handoff bytes, mutated historical bytes, and
101
+ malformed appended handoff history.
102
+
103
+ Live Signal mutation remains post-publication work. Installation must preserve the three current
104
+ Worker files, transport only package/lock through the advertised update compatibility route, use a
105
+ fresh repository-local handshake/status/next before each mutation, and follow only Core-advertised
106
+ actions. No manual Workflow-state edit, history rewrite, Task cancellation, duplicate Task, or
107
+ replacement Milestone is authorized by this release.
91
108
 
92
109
  ## PDF release documentation evidence
93
110
 
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.
111
+ - All three tracked Russian PDFs were regenerated from beta.12.13 Markdown sources.
112
+ - Architecture remains 9 pages, the delegated chat-only guide 10 pages, and the technical reference
113
+ 13 pages. All 32 pages were rendered and visually inspected; changed source/target Knowledge,
114
+ consecutive-update, and append-only yield sections were additionally checked at full resolution.
115
+ - Titles, version bindings, Cyrillic text, tables, code blocks, margins and footers show no clipping,
116
+ overlap, or unreadable content.
99
117
 
100
118
  ## Existing boundaries and non-claims
101
119
 
102
- - The route does not permit arbitrary Task insertion, Task removal, semantic Milestone scope change,
103
- arbitrary dependency rewiring, completed-Step adoption or `split-required` replacement.
104
- - It does not auto-approve README, documentation, commands, classifications, authorities, gaps,
105
- conflicts, dirty files or package commits containing any non-Workflow change.
106
- - Protocol version remains 2 and state schema remains 2; no state migration is required.
107
- - This report does not claim Git tag/push, npm publication or live Signal recovery before those
108
- post-gate operations are read back separately.
109
-
110
- Confidence is high for the package implementation, bounded no-Human dependency Knowledge refresh,
111
- transaction atomicity, regression compatibility, tarball composition, downstream installation,
112
- gateway and documentation. Live Signal confidence remains conditional on exact publication,
113
- installation and fresh Core/Coordinator readback.
120
+ - Compatibility is exact recovery authority, not general permission to rebind Knowledge, edit a
121
+ Plan, change product files, alter Milestone topology, adopt unrelated commits, or skip review.
122
+ - The carry route supports a consecutive package-only update only when the previous recovery record
123
+ remains fully reproducible from current Git, Task and worktree evidence.
124
+ - Historical corrective-yield readback accepts append-only continuation, not arbitrary sidecar drift.
125
+ - The release does not make failing product logic pass, approve a broken check, increase retry limits,
126
+ or infer an executable selector. The replacement Plan must supply the exact selector-bearing command.
127
+ - This report does not claim Git commit/tag/push, npm publication, live Signal installation, or Task
128
+ completion before those operations receive their own readbacks.
129
+
130
+ Confidence is high for source/target Knowledge separation, consecutive-update compatibility,
131
+ append-only yield continuity, Core authority closure, transaction recovery, package composition,
132
+ downstream installation, gateway validation and documentation. Live Signal confidence remains
133
+ conditional on exact publication, installation, fresh Core readback, and completion of the blocked
134
+ Step through the advertised route.
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.13",
4
4
  "description": "Requirements-first Codex development workflow with local state and explicit Git ownership.",
5
5
  "repository": {
6
6
  "type": "git",