codex-workflow-v2 2.0.0-beta.13.1 → 2.0.0-beta.13.2

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 +1 -1
  2. package/dist/reviewer-runtime-build.json +15 -11
  3. package/dist/src/cli-actions.d.ts +1 -1
  4. package/dist/src/cli-actions.js +3 -0
  5. package/dist/src/cli-actions.js.map +1 -1
  6. package/dist/src/cli.js +15 -0
  7. package/dist/src/cli.js.map +1 -1
  8. package/dist/src/gateway-handshake.js +1 -0
  9. package/dist/src/gateway-handshake.js.map +1 -1
  10. package/dist/src/observed-routes.js +1 -0
  11. package/dist/src/observed-routes.js.map +1 -1
  12. package/dist/src/pending-review-update.d.ts +49 -0
  13. package/dist/src/pending-review-update.js +132 -0
  14. package/dist/src/pending-review-update.js.map +1 -0
  15. package/dist/src/repository.js +16 -4
  16. package/dist/src/repository.js.map +1 -1
  17. package/dist/src/reviewer.js +4 -1
  18. package/dist/src/reviewer.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 +10 -0
  22. package/dist/src/workflow.js +155 -2
  23. package/dist/src/workflow.js.map +1 -1
  24. package/docs/beta13.2-signal-review-recovery.md +38 -0
  25. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  26. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  27. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  28. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +1 -1
  29. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +2 -2
  30. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +2 -2
  31. package/docs/pending-review-update.md +15 -0
  32. package/docs/release.md +11 -0
  33. package/package.json +1 -1
  34. package/plugins/codex-workflow-gateway/references/protocol.md +7 -0
  35. package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +36 -13
@@ -0,0 +1,38 @@
1
+ # beta.13.2: pending-review recovery
2
+
3
+ ## Confirmed failure
4
+
5
+ Signal M04 T01 completed the product changes for STEP-002 on beta.13.1, but its
6
+ required independent Step review could not be prepared. The cumulative Task diff
7
+ was 2,236,058 bytes, exceeding the default synchronous Git output buffer. The
8
+ checkout remained clean and the completion commit remained recorded; review had
9
+ not passed.
10
+
11
+ After the writer lease expired, repository navigation preferred delegated
12
+ Knowledge context refresh over the pending review's credential recovery. The
13
+ context-refresh executor correctly rejected the still-in-progress Step. Thus
14
+ navigation advertised an action its executor could not perform. Ordinary package
15
+ update was also blocked by the in-progress Step.
16
+
17
+ ## Required recovery guarantees
18
+
19
+ - Large Step and final Task review inputs are complete or fail explicitly; Git
20
+ errors have bounded diagnostics rather than dumping the input corpus.
21
+ - Pending review and its exact writer credential recovery remain ahead of
22
+ Knowledge refresh. Refresh during a running Step stays forbidden.
23
+ - Installation recovery validates the source version, exact Task/Plan/Step and
24
+ completion commit, clean checkout, recorded Git history, review journal, and
25
+ absence of active ownership or transactions.
26
+ - Dependency transport preserves product bytes and the original reviewed commit.
27
+ Pending review never establishes passed-review provenance.
28
+ - The original required review, delegated context refresh, Task acceptance and
29
+ merge remain mandatory after recovery. Grants are not broadened or renewed.
30
+
31
+ ## Release acceptance
32
+
33
+ The package regression suite must cover oversized review inputs and the combined
34
+ pending-review, expired-lease and stale-Knowledge state, including rejection of
35
+ unsafe recovery candidates. Release validation also requires the ordinary package
36
+ and external-review lifecycle gates. Actual Signal recovery must pass the blocked
37
+ Step review and reach a subsequent executable lifecycle boundary; green fixture
38
+ tests alone do not establish that the production Milestone has resumed.
@@ -463,7 +463,7 @@ Restart Docker Desktop требует отдельного разрешения
463
463
  # 10. Operational checklist
464
464
 
465
465
  - exact package version установлен, bundled gateway соответствует release и переустановлен;
466
- - handshake подтверждает `packageVersion=2.0.0-beta.13.1`, protocol 2, state schema 2 и beta.13
466
+ - handshake подтверждает `packageVersion=2.0.0-beta.13.2`, protocol 2, state schema 2 и beta.13
467
467
  capabilities;
468
468
  - routine observation начинается с компактного `status`; `status --full` запрашивается только для
469
469
  расследования, которому действительно нужна полная historical projection;
@@ -57,7 +57,7 @@ AGENTS.md
57
57
  -> doctor только как дополнительная диагностика
58
58
  ```
59
59
 
60
- Handshake beta.13.1 должен сообщать `packageVersion=2.0.0-beta.13.1`, `protocolVersion=2`,
60
+ Handshake beta.13.1 должен сообщать `packageVersion=2.0.0-beta.13.2`, `protocolVersion=2`,
61
61
  `stateSchemaVersion=2`, dependency DAG, initial Plan transaction, mechanical feasibility,
62
62
  Milestone autonomy, host-safe credential reference, failed-Step continuation transaction,
63
63
  cause-bound rolling refinement, structural production edge, compact status, reviewer runtime preflight,
@@ -482,7 +482,7 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
482
482
  # 14. Итоговый checklist пользователя
483
483
 
484
484
  - beta.13.1 exact package и новый bundled gateway установлены; handshake показывает
485
- `packageVersion=2.0.0-beta.13.1`, protocol/state schema `2/2` и beta.13 capabilities;
485
+ `packageVersion=2.0.0-beta.13.2`, protocol/state schema `2/2` и beta.13 capabilities;
486
486
  - новый Coordinator chat не является fork старого Milestone;
487
487
  - bootstrap DGR, если нужен, выдан отдельным exact human confirmation;
488
488
  - Discovery не materialized при blocking unknowns;
@@ -15,7 +15,7 @@ authority сами: mutating permission определяется runtime state
15
15
 
16
16
  | Параметр beta.13 | Значение |
17
17
  |---|---|
18
- | npm package | `codex-workflow-v2@2.0.0-beta.13.1` |
18
+ | npm package | `codex-workflow-v2@2.0.0-beta.13.2` |
19
19
  | protocolVersion | 2 |
20
20
  | stateSchemaVersion | 2 |
21
21
  | lifecycle epoch | 2 |
@@ -767,7 +767,7 @@ dirty update.
767
767
  observed-route matrix/compact-status/reviewer-runtime tests, legacy compatibility regressions,
768
768
  `npm run test:signal-t10-check-support-e2e`, `npm run test:signal-remediation-e2e`,
769
769
  `npm run pack:check`, `npm run smoke:downstream`, `npm run plugin:check`, official plugin/skill validators,
770
- `npm run docs:pdf:check` и `npm run release:check` с exact `v2.0.0-beta.13.1` tag binding и append-only
770
+ `npm run docs:pdf:check` и `npm run release:check` с exact `v2.0.0-beta.13.2` tag binding и append-only
771
771
  real-agent lifecycle log. Candidate проверяется из clean source checkout; missing built module не должен
772
772
  превращаться в stack trace, а обязан быть детерминированно собран или диагностирован release gate.
773
773
 
@@ -0,0 +1,15 @@
1
+ # Updating while a strict Step review is pending
2
+
3
+ This narrow bridge supports source `codex-workflow-v2@2.0.0-beta.13.1` and the exact executing target package. It preserves the original completion commit, pending review chain, Plan and Knowledge authorization. It does not mark a review passed or bypass the following Knowledge refresh.
4
+
5
+ Use only a verified, exact target package runner with capability `pending-strict-review-dependency-bridge-v1`. The source preflight checks its package/build manifest and runtime file hashes. Never use a mutable version range or a global runner. The target runner exception before installation permits only the read-only source preflight below. Use the installed source runner for an explicitly returned stale lease repair.
6
+
7
+ 1. Run the external target runner: `update pending-review-source-preflight --repo <repo> --id <Task> --json`. Save the complete JSON response outside the repository. If `staleLeaseRepair` names exactly this Task, use the **installed source** `locks repair --id <Task>` and rerun source preflight. The lock manager rechecks expiry; a live or unrelated lease is not repairable through this bridge. Do not transport until the fresh result has `eligible=true` and no blockers.
8
+ 2. Retain the exact source receipt. Create one dependency transport commit on its `baseBranch` at `baseHead`, using a separate temporary worktree. Create one on `taskBranch` at `completionCommit`. Each commit must have one parent, change exactly `package.json` and `package-lock.json`, and change only the exact Workflow dependency entries from source to target. Preserve all product-owned manifest/lock fields independently on each branch. Do not merge, amend, reset, rebase, copy the base manifest over Task changes, or transport product work.
9
+ 3. Install the exact target package in the Task repository. Use its repository-local runner for all remaining commands. Run `status`, then `next`; it must advertise `update pending-review-dependency-recover`. Run `update pending-review-dependency-preflight --id <Task> --file <source-receipt.json>`. Require `eligible=true` and no blockers.
10
+ 4. Run `update pending-review-dependency-recover --id <Task> --expected-revision <source-task-revision> --file <source-receipt.json> --actor <coordinator> --reason <substantive-reason>`. Both plain preflight results and CLI `{ok:true,value:...}` receipts are accepted. The receipt is not authority: recovery reconstructs every source binding from canonical Task, artifacts, strict-review sidecars and Git parent commits. It checks clean checkout, all target version surfaces, exact base transport, and absence of any writer lease or pending transaction/Core operation again.
11
+ 5. Recovery atomically registers the Task dependency commit in existing dependency provenance and writes the hash-chained `pending-review-updates.jsonl` sidecar. Task schema 2 is unchanged. It increments the Task revision but preserves the original pending event, product completion SHA and Step evidence. Repeating recovery is rejected rather than creating duplicate authority.
12
+ 6. Run `status`, then `next`. Recover the exact advertised C1 writer credential if necessary. Generate a fresh `task step-review-packet`; use an independent external sealed reviewer and record the unchanged result with `task step-review-record`. The packet binds the original product commit and includes revalidated transport evidence; its repository seal binds the current dependency HEAD. Any later HEAD, base, Plan, evidence, packet, or seal change fails closed. Local nested review retains its original HEAD guard.
13
+ 7. Follow fresh `status` and `next` after review. Under the original eligible Milestone Autonomy Grant, execute the advertised `task context-refresh` for predeclared supporting-source additions and dependency manifest drift. Then continue to the next normal Step or final Task boundary. Do not substitute standalone approval or manually edit state.
14
+
15
+ A failed preflight is a stop for this bridge. Repair only a specifically documented obstruction, then rerun the read-only assessment; never edit the receipt to hide a blocker. A pending or corrupt transaction must be recovered through its ordinary exact route before retrying.
package/docs/release.md CHANGED
@@ -4,6 +4,17 @@ The npm package is `codex-workflow-v2` with public visibility. Consumers must pi
4
4
  an exact version. Stable compatibility covers the latest minor release of the current
5
5
  major only; older minors are unsupported unless a release note explicitly says otherwise.
6
6
 
7
+ ## beta.13.2 review recovery gate
8
+
9
+ The patch preserves protocol 2 and canonical entity schema 2. In addition to the
10
+ ordinary release gates, `release:check` executes the large-diff, pending-review
11
+ update, supporting-source refresh and Task guard regressions. Acceptance requires
12
+ complete external-sealed Step and Task packets above 2 MiB, explicit bounded
13
+ failure above the Git output limit, exact credential recovery before Knowledge
14
+ refresh, and a Signal-shaped delegated update followed by actual review,
15
+ context refresh and the next ordinary Step. A source preflight alone is not
16
+ recovery completion. See `beta13.2-signal-review-recovery.md`.
17
+
7
18
  ## Release gate
8
19
 
9
20
  Before tagging a release:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-workflow-v2",
3
- "version": "2.0.0-beta.13.1",
3
+ "version": "2.0.0-beta.13.2",
4
4
  "description": "Requirements-first Codex development workflow with local state and explicit Git ownership.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -56,6 +56,13 @@
56
56
  A provenance recovery recorded after the final context-refresh audit may explain exactly one
57
57
  additional Task revision only when it belongs to that verified Git chain. Any unexplained
58
58
  revision remains a `doctor` boundary.
59
+ - Before a credential-consuming mutation, check the public `writerCredentialReference.expiresAt`
60
+ against the current time and its actor/action binding. Lease heartbeat or renewal does not
61
+ extend that reference's expiry. An expired, missing, consumed or unverifiable reference requires
62
+ the simultaneously advertised `next.writerCredentialRecovery` action with its exact Task,
63
+ revision and `requiredActor`, followed by fresh `status` and `next`; use the new reference.
64
+ If no recovery is advertised, stop before mutation. Never read or patch the vault, extend expiry
65
+ manually, or reuse the old reference. This check also applies after independent reviews and pauses.
59
66
  - `milestone progress --id <MS-ID>` is a read-only projection and the sole source for Coordinator
60
67
  progress tables. It preserves cancelled/replacement Tasks as distinct membership rows.
61
68
  - `scripts/chat-registry.mjs` atomically allocates project-monotonic `#NNN`, builds all six title
@@ -278,22 +278,32 @@ because the sandboxed call returned a permission error; those actions require th
278
278
  authorization and evidence.
279
279
 
280
280
  When `next` includes `writerTokenContract`, treat it as an exact first-call precondition. Retain
281
- the active writer lease from the first-field `writerLeaseReceipt` returned by `task run` and pass it using the advertised `option` for that
282
- transition. The token is sensitive: never print, summarize, persist, or substitute a redacted
283
- fingerprint. Stop before mutation if the active lease is unavailable. This input contract is
284
- independent from `gitMutationPolicy`; satisfy both when both are present.
285
-
286
- On successful `task handoff-prepare`, consume the first-field `credentialHandoff` before reading
287
- the Task/event/bundle payload. Retain its one-time token only in working memory and use it exactly
288
- once with the declared `action` and `option` for the declared `targetActor`. Successful `task claim`
289
- returns a first-field `writerLeaseReceipt`; retain that lease and pass it to claimed `task run` when
290
- the fresh `next.writerTokenContract` requires it. Successful `task run` returns the refreshed
291
- `writerLeaseReceipt`; retain it only until Core releases that lease.
292
- Never search later payload fields for either credential and never copy credentials into evidence.
281
+ the `writerCredentialReference` returned by `task run`, `task claim`, or
282
+ `task writer-credential-replace`, including its public `credentialRef`, actor, allowed actions and
283
+ `expiresAt`. Pass the reference using the advertised `--writer-credential-ref` option. The secret
284
+ stays in the local vault: never read, print, copy, or edit vault records or substitute a redacted
285
+ token. This input contract is independent from `gitMutationPolicy`; satisfy both when present.
286
+
287
+ Before every credential-consuming mutation, especially after an independent review or a pause,
288
+ compare the held reference's `expiresAt` with the current time and verify its actor/action binding.
289
+ A live or renewed lease does not extend an existing reference's expiry; `reuse-reference` is not
290
+ permission to reuse an expired reference. If the reference is expired, missing, consumed, or its
291
+ validity cannot be established, use only the simultaneously advertised
292
+ `next.writerCredentialRecovery` action with its exact Task, revision and `requiredActor` before
293
+ attempting the blocked mutation. Follow successful replacement with `status` then `next`, retain
294
+ the newly returned reference and expiry, and discard the prior reference. If recovery is not
295
+ advertised, stop before mutation. Never extend expiry manually or retry with the old reference.
296
+
297
+ Successful `task handoff-prepare` returns a one-time `claimCredentialReference`; use its
298
+ `credentialRef` with the declared `--claim-credential-ref` option for `task claim` and the bound
299
+ actor. Successful claim consumes that reference. A renewed claim/run may return
300
+ `writerCredential.disposition=renewed` without a new reference; the held reference must still
301
+ satisfy its own expiry and binding checks. Never search later payload fields for raw tokens and
302
+ never copy credentials into evidence.
293
303
 
294
304
  When a passed final Task review routes to `task result-set`, pass the active writer credential and,
295
305
  for claimed C1 posture, the exact claimant as `--actor`. A successful `result-set` consumes that
296
- execution lease before entering `awaiting_final_acceptance`; never reuse the old token and never
306
+ execution lease before entering `awaiting_final_acceptance`; never reuse the old reference and never
297
307
  leave or manufacture a lease while waiting for the Human decision. After `task accept`, follow fresh
298
308
  `next`: local merge or external merge confirmation normally advertises
299
309
  `task writer-credential-replace`, which acquires a new bounded lease for the exact recovery actor.
@@ -571,6 +581,19 @@ When `next` returns a derived C1 Worker or corrective Auditor actor, use that ex
571
581
  asking the user to name one. Derivation removes a routing pause; handoff claim, writer lease,
572
582
  strict review, and auditor-independence checks remain mandatory.
573
583
 
584
+ The beta.13.2 pending strict-review update exception is documented in
585
+ `docs/pending-review-update.md` in the exact package. An exact external target runner may run
586
+ only `update pending-review-source-preflight` against the known beta.13.1 source. Require its
587
+ verified runtime build, exact Task/revision/Plan/HEAD/pending binding and no blockers. If it
588
+ returns an exact stale Task lease repair, run that `locks repair` with the installed source and
589
+ repeat preflight. Preserve the eligible receipt outside the checkout; transport only the two
590
+ bound dependency commits on base and Task, then install the target locally. Fresh local `next`
591
+ must advertise `update pending-review-dependency-recover`; run its matching read-only preflight
592
+ with `--file <source-receipt>` before recovery. Recovery does not approve Knowledge or review.
593
+ Use the original pending product SHA through the newly sealed external packet and record,
594
+ then follow fresh credential/context-refresh/ordinary lifecycle actions. Never treat this as
595
+ permission for other external-runner mutations, product transport, or manual state repair.
596
+
574
597
  Before an npm package update, run the project-local `update preflight` and stop unless it
575
598
  returns `safe=true` with a clean checkout, no running Step, and no active writer lease.
576
599