codex-workflow-v2 2.0.0-beta.14 → 2.0.0-beta.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/reviewer-runtime-build.json +24 -20
- package/dist/src/alpha6/adoption.d.ts +1 -1
- package/dist/src/alpha6/adoption.js +26 -8
- package/dist/src/alpha6/adoption.js.map +1 -1
- package/dist/src/alpha6/corrective-decision-boundary.js +9 -3
- package/dist/src/alpha6/corrective-decision-boundary.js.map +1 -1
- package/dist/src/alpha6/remediation.d.ts +2 -0
- package/dist/src/alpha6/remediation.js +68 -2
- package/dist/src/alpha6/remediation.js.map +1 -1
- package/dist/src/alpha7/autonomy.d.ts +9 -0
- package/dist/src/alpha7/autonomy.js +40 -1
- package/dist/src/alpha7/autonomy.js.map +1 -1
- package/dist/src/beta1/project-transaction.js +14 -4
- package/dist/src/beta1/project-transaction.js.map +1 -1
- package/dist/src/cli-actions.d.ts +3 -3
- package/dist/src/cli-actions.js +5 -0
- package/dist/src/cli-actions.js.map +1 -1
- package/dist/src/cli.js +31 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +19 -2
- package/dist/src/delegation.d.ts +5 -1
- package/dist/src/delegation.js +4 -0
- package/dist/src/delegation.js.map +1 -1
- package/dist/src/failed-checkpoint-update.d.ts +69 -0
- package/dist/src/failed-checkpoint-update.js +171 -0
- package/dist/src/failed-checkpoint-update.js.map +1 -0
- package/dist/src/lifecycle/corrective-replan-credential-core.d.ts +2 -0
- package/dist/src/lifecycle/corrective-replan-credential-core.js +45 -9
- package/dist/src/lifecycle/corrective-replan-credential-core.js.map +1 -1
- package/dist/src/lifecycle/corrective-replan.js +12 -8
- package/dist/src/lifecycle/corrective-replan.js.map +1 -1
- package/dist/src/lifecycle/semantic-registry.js +4 -2
- package/dist/src/lifecycle/semantic-registry.js.map +1 -1
- package/dist/src/observed-routes.js +5 -0
- package/dist/src/observed-routes.js.map +1 -1
- package/dist/src/state/corrective-replan-executor.js +1 -0
- package/dist/src/state/corrective-replan-executor.js.map +1 -1
- package/dist/src/state/corrective-replan-public.d.ts +9 -1
- package/dist/src/state/corrective-replan-public.js +49 -7
- package/dist/src/state/corrective-replan-public.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/src/workflow-blocker-route.js +1 -1
- package/dist/src/workflow-blocker-route.js.map +1 -1
- package/dist/src/workflow.d.ts +40 -1
- package/dist/src/workflow.js +203 -33
- package/dist/src/workflow.js.map +1 -1
- package/docs/autonomy-guardrails.md +4 -4
- package/docs/development-flow.md +8 -6
- package/docs/project-memory.md +2 -2
- package/docs/release.md +7 -1
- package/docs/updating-existing-project.md +37 -0
- package/package.json +1 -1
- package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +1 -1
- package/plugins/codex-workflow-gateway/references/chat-dispatch.md +17 -5
- package/plugins/codex-workflow-gateway/references/protocol.md +39 -43
- package/plugins/codex-workflow-gateway/scripts/chat-dispatch.mjs +13 -3
- package/plugins/codex-workflow-gateway/scripts/chat-model-policy.mjs +18 -33
- package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +15 -10
- package/references/state-machine.md +3 -1
- package/roles/delivery-coordinator.md +31 -11
- package/roles/scope-lead.md +1 -1
- package/roles/technical-planner.md +4 -1
- package/schemas/adoption-posture-event.schema.json +11 -0
- package/schemas/authorization-event.schema.json +1 -1
- package/schemas/corrective-decision-event.schema.json +23 -3
- package/schemas/corrective-replan-credentials.private.schema.json +8 -5
- package/schemas/corrective-replan-execution-event.private.schema.json +9 -0
- package/schemas/corrective-replan-public.schema.json +2 -1
- package/schemas/delegation-grant.schema.json +1 -1
- package/schemas/task.schema.json +18 -0
- package/schemas/transition-definition.schema.json +4 -0
- package/src/alpha6/adoption.ts +30 -7
- package/src/alpha6/corrective-decision-boundary.ts +9 -3
- package/src/alpha6/remediation.ts +69 -2
- package/src/alpha7/autonomy.ts +39 -1
- package/src/beta1/project-transaction.ts +13 -4
- package/src/cli-actions.ts +5 -0
- package/src/cli.ts +33 -0
- package/src/contracts.ts +19 -1
- package/src/delegation.ts +5 -1
- package/src/failed-checkpoint-update.ts +203 -0
- package/src/lifecycle/corrective-replan-credential-core.ts +39 -10
- package/src/lifecycle/corrective-replan.ts +12 -8
- package/src/lifecycle/semantic-registry.ts +4 -2
- package/src/observed-routes.ts +5 -0
- package/src/state/corrective-replan-executor.ts +1 -0
- package/src/state/corrective-replan-public.ts +50 -6
- package/src/version.ts +1 -1
- package/src/workflow-blocker-route.ts +1 -1
- package/src/workflow.ts +192 -22
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
## Approval and independent evidence
|
|
4
4
|
|
|
5
|
-
Human approval
|
|
5
|
+
Human mode retains explicit human approval. In delegate mode the human decides Discovery creation/edits and grant issuance/expansion; operational decisions inside those boundaries belong to the Coordinator, independent agents and Core. A principal issues an expiring grant to a distinct delegate after confirming its exact bound code. Only the current scope and enumerated transition are delegated. Events retain principal, delegate and policy hash; expired, revoked, mismatched or expanded authority is rejected.
|
|
6
6
|
|
|
7
|
-
The grant allow-list covers Knowledge approval, Task execution/final acceptance and Milestone execution/final acceptance.
|
|
7
|
+
The grant allow-list covers `project.adopt`, Knowledge approval, Task execution/final acceptance and Milestone execution/final acceptance. Standalone adoption and Knowledge approval require an eligible project-scoped grant. An existing exact Milestone grant containing all four Task/Milestone execution and final-acceptance transitions can derive its autonomy contract through the advertised `milestone autonomy-bind` without issuing or expanding a grant or asking for another confirmation. That contract permits membership-only evolution. Scoped Knowledge approval inside an eligible atomic Task context refresh additionally requires the explicit Knowledge permission issued with a full autonomy grant; a four-transition grant does not acquire it through binding. Neither permits standalone Knowledge approval. Use only the eligible option returned by the same fresh `next` response. Ordinary writer actions do not consume approval grants.
|
|
8
8
|
|
|
9
9
|
Every Plan requires an independent Risk Audit. Guarded risks include persistence changes, concurrency, crash/restart/replay, providers, composition and security boundaries. Each classified failure mode names a hostile counterexample, expected safe result and exact executable evidence. Unsupported or missing proof is not success.
|
|
10
10
|
|
|
@@ -15,7 +15,7 @@ Strict Step and final Task reviews must be independent of the Worker and coordin
|
|
|
15
15
|
| Boundary | Allowed continuation | Preserved invariant |
|
|
16
16
|
|---|---|---|
|
|
17
17
|
| Ordinary failed check/review | Same-Step or same-Task fix and fresh checks/review | Failure count creates no approval or arbitrary stop |
|
|
18
|
-
| Proven Plan obstruction | Independent corrective evidence
|
|
18
|
+
| Proven Plan obstruction | Independent corrective evidence; eligible `task corrective-replan-authorize` in delegate mode, or the human preparation/confirmation route | Objective, requirements, acceptance and completed evidence remain bound |
|
|
19
19
|
| Mechanically impossible check | Exact `task plan-integrity-recover` route | No synthetic second failure and no arbitrary scope widening |
|
|
20
20
|
| Active downstream proof touches predecessor-owned paths | `task downstream-proof-recover`, then current planning | Preserve product bytes/HEAD; invalidate only proven predecessor authority |
|
|
21
21
|
| Knowledge-only drift | Current rebind or eligible atomic context refresh | No semantic Plan rewrite, implicit grant or writer replacement |
|
|
@@ -38,6 +38,6 @@ Existing append-only history remains verifiable. Readers of already recorded eve
|
|
|
38
38
|
|
|
39
39
|
Claim and writer credentials use local credential references bound to project, entity, action and actor. Do not pass raw bearer tokens in CLI arguments, prompts or evidence. A pending claim blocks competing execution; a claimed Task keeps its exact actor. Handoff evidence alone does not prove a physically independent reviewer.
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
In delegate mode a current eligible grant replaces operational human confirmation; it does not remove the bound decision, audit, evidence or executor checks. Technical adoption uses `state adoption-apply` with the current confirmation binding and an eligible `project.adopt` grant. Missing authority is a grant decision, not permission to impersonate the principal. Acceptance and criteria of success must never be weakened to declare completion: an unattainable outcome requires evidence and a return to Discovery. Human mode retains its explicit bound confirmation route. Infrastructure denial is not a Workflow grant failure; report its real layer and use only authorized recovery. Never restart services or change product checks to conceal an access failure.
|
|
42
42
|
|
|
43
43
|
Do not repeatedly execute an unchanged failing route. Preserve the command, state binding and blocker; distinguish an external wait, human gate, integrity failure and unsupported transition. No arbitrary retry counter establishes completion. A1 remains a release blocker until actual continuation evidence covers the supported routes.
|
package/docs/development-flow.md
CHANGED
|
@@ -16,11 +16,11 @@ Authorization binds the Plan and its audit. Plan changes supersede it. Local exe
|
|
|
16
16
|
|
|
17
17
|
The Worker changes only the dispatched Step's effective allowed paths and leaves changes uncommitted. Core `task step-complete` runs checks, verifies history, makes the atomic Step commit and records evidence. Guarded Steps remain pending until an independent strict review and attestation bind that exact commit. Never substitute a manual commit or a self-authored review.
|
|
18
18
|
|
|
19
|
-
Failed review ordinarily returns to a fix in the same Task. Attempt count does not authorize success or impose an artificial terminal stop. A replan requires recorded evidence of a Plan obstruction and preserves Task objective, requirements and acceptance. Completed Steps remain verified history. See [guardrails](autonomy-guardrails.md) for recovery and authority boundaries.
|
|
19
|
+
Failed review ordinarily returns to a fix in the same Task. Attempt count does not authorize success or impose an artificial terminal stop. A replan requires recorded evidence of a Plan obstruction and preserves Task objective, requirements and acceptance. In delegate mode, an eligible execution grant and independently validated same-scope candidate use `task corrective-replan-authorize`; the human prepare/confirm route remains available in human mode. Completed Steps remain verified history. No route may weaken acceptance to force success. See [guardrails](autonomy-guardrails.md) for recovery and authority boundaries.
|
|
20
20
|
|
|
21
|
-
After Knowledge changes between Steps, use the current rebind or atomic context-refresh route described in [project memory](project-memory.md). Pending completion/review and already-started failed-Step recovery must not be bypassed with a Knowledge refresh. A fresh execution authorization is required where Core superseded the prior one.
|
|
21
|
+
After Knowledge changes between Steps, use the current rebind or atomic context-refresh route described in [project memory](project-memory.md). Pending completion/review and already-started failed-Step recovery must not be bypassed with a Knowledge refresh. A fresh execution authorization is required where Core superseded the prior one; an eligible delegated context refresh supplies it without a repeat human question.
|
|
22
22
|
|
|
23
|
-
Submission binds a clean, auditable Task HEAD. Passing independent review permits Result creation. Result entry releases the execution lease before the human
|
|
23
|
+
Submission binds a clean, auditable Task HEAD. Passing independent review permits Result creation. Result entry releases the execution lease before final acceptance; use an eligible delegated approval in delegate mode, or the explicit human gate in human mode. Recover the credential through fresh `next` before merge; same-scope recovery already covered by the actual authorization does not require a new operational question. Base advancement can require synchronization, validation and acceptance again.
|
|
24
24
|
|
|
25
25
|
After every required Task is merged, Milestone validation binds Result, checks and the clean base HEAD. Acceptance uses its exact current confirmation binding. Cancellation retains history and never reverts merged code.
|
|
26
26
|
|
|
@@ -28,15 +28,17 @@ After every required Task is merged, Milestone validation binds Result, checks a
|
|
|
28
28
|
|
|
29
29
|
| Role | Owns | Does not grant |
|
|
30
30
|
|---|---|---|
|
|
31
|
-
| User / principal |
|
|
31
|
+
| User / principal | Discovery creation/edits and grant issuance/expansion in delegate mode; explicit gates in human mode | Fabricated evidence or weakened acceptance to manufacture completion |
|
|
32
32
|
| Scope Lead | Discovery and unresolved questions | Product edits |
|
|
33
33
|
| Technical Planner | Plan and requirement/check mapping | Execution approval |
|
|
34
|
-
| Coordinator | Current route, dispatch, supervision and closure | Arbitrary authority
|
|
34
|
+
| Coordinator | Current route, authorized dispatch, delegated operational decisions, supervision and closure | Arbitrary authority, semantic scope expansion or self-authored independent review |
|
|
35
35
|
| Worker | One dispatched Step | Plan changes, self-review or manual Core commits |
|
|
36
36
|
| Independent Reviewer | Immutable review packet and evidence | Fixes or acceptance |
|
|
37
37
|
| Core | State, hashes, transactions, ownership and Git mechanics | Semantic product decisions |
|
|
38
38
|
|
|
39
|
-
Use one dedicated Task chat per required Task and a supervising Milestone coordinator. Dispatch uses the packaged registry's unique mapping and fresh TaskContextPacket. A completed chat is not a merged Task: inspect Core state before dispatching a successor. Recoverable continuation stays in the same Task chat. The coordinator waits on active work and
|
|
39
|
+
Use one dedicated Task chat per required Task and a supervising Milestone coordinator. Dispatch uses the packaged registry's unique mapping and fresh TaskContextPacket. A completed chat is not a merged Task: inspect Core state before dispatching a successor. Recoverable continuation stays in the same Task chat. The coordinator waits on active work and continues through recoverable intermediate states until the assigned scope is terminal. In delegate mode it returns to the human only for Discovery or grant decisions; a reproduced workflow/App/infrastructure blocker is reported with its exact layer and safe continuation requirements, not relabeled as a new approval. A completed Step, chat or review is not Task closure.
|
|
40
|
+
|
|
41
|
+
Reuse actual user authorization for required role-chat creation, minimum packet transfer, checks, fresh review packets and same-scope credential recovery. Model/reasoning are omitted by default so destination settings apply. Do not request separate approval for each operation already covered; an actual App refusal still cannot be bypassed.
|
|
40
42
|
|
|
41
43
|
For a tracked Worker, verify the real App checkout with `dispatch-context-check` before the first write and after a checkout/branch change. A match is not a writer credential or filesystem permission. Independent reviewers inspect only the bound immutable packet and repository evidence; a different reviewer checkout is not a reason to mutate or reconcile it.
|
|
42
44
|
|
package/docs/project-memory.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Version-controlled repository files are durable project knowledge. The local Knowledge Map stores paths, classification, scope, authority and hashes; it does not create a second memory bank or make an MCP index authoritative.
|
|
4
4
|
|
|
5
|
-
Scope Lead discovers sources and unresolved conflicts
|
|
5
|
+
Scope Lead discovers sources and unresolved conflicts. Canonical/supporting classifications require recorded approval: the user in human mode, or the eligible delegate under a project-scoped Knowledge approval grant in delegate mode. A Milestone grant does not authorize standalone Knowledge approval. Plans bind approved sources and declare Knowledge impact. Workers update only authorized targets, reviewers verify the result, and coordinators reconcile changed source bindings.
|
|
6
6
|
|
|
7
7
|
A changed approved file makes its map binding stale. Rebind is mechanical: it preserves Step definitions, status and evidence, records old/new bindings and supersedes execution authorization. It cannot run over an active Worker Step or conceal a Plan obstruction. Pending strict review retains its immutable historical binding and precedes current-map rebind.
|
|
8
8
|
|
|
9
|
-
When fresh `next` returns `task context-refresh`, use its exact eligible delegate/grant and Task/Knowledge revisions without standalone reconcile first. Core atomically combines reconciliation, scoped approval, rebind and, where execution is eligible, reauthorization. A planning-only refresh preserves stopped planning without execution authority. Content-only drift is eligible only with unchanged classifications, scope, authority, gaps and conflicts. A Milestone contract may additionally admit exact supporting sources already declared by the authorized Plan. Removed, canonical, undeclared or conflicting sources require ordinary classification/approval.
|
|
9
|
+
When fresh `next` returns `task context-refresh`, use its exact eligible delegate/grant and Task/Knowledge revisions without standalone reconcile first. Core atomically combines reconciliation, scoped approval, rebind and, where execution is eligible, reauthorization. A planning-only refresh preserves stopped planning without execution authority. Content-only drift is eligible only with unchanged classifications, scope, authority, gaps and conflicts. A Milestone contract may additionally admit exact supporting sources already declared by the authorized Plan. Removed, canonical, undeclared or conflicting sources require ordinary classification/approval under its own eligible authority; context refresh cannot silently approve them. Within a valid delegated route, changed Knowledge hashes do not require another human approval. If no suitable grant covers the needed approval, request grant issuance/expansion; if the change alters the product intent or acceptance, return to Discovery.
|
|
10
10
|
|
|
11
11
|
## Workflow code discovery
|
|
12
12
|
|
package/docs/release.md
CHANGED
|
@@ -71,7 +71,13 @@ The entry point re-verifies the passport, source, tag and packed package identit
|
|
|
71
71
|
|
|
72
72
|
The specific A1 and M04 route results retain their accepted scope. Broader A4 autonomy metrics, R2 escaped-session cleanup, native host startup diagnosis and any absent live App qualification remain explicit. Positive validator tests use temporary synthetic records; they test rejection/acceptance logic and never substitute for a real App run. A publication decision does not silently close these findings or demonstrate universal lifecycle completion.
|
|
73
73
|
|
|
74
|
-
##
|
|
74
|
+
## beta.14.1 candidate
|
|
75
|
+
|
|
76
|
+
The current candidate is `codex/release-candidate-beta.14.1`, based on published
|
|
77
|
+
`v2.0.0-beta.14`. See [the current delegate contract](autonomy-guardrails.md).
|
|
78
|
+
Release eligibility is established only by the fresh exact-candidate passport.
|
|
79
|
+
|
|
80
|
+
## Historical beta.14 assembly inventory
|
|
75
81
|
|
|
76
82
|
The reproducible branch is `codex/release-candidate-beta.14`, based on tag
|
|
77
83
|
`v2.0.0-beta.13.16` (commit `500c783d469f8c571a136c6763b7781091406cb1`).
|
|
@@ -26,3 +26,40 @@ not a successful update. Diagnose incomplete version/base bindings rather than p
|
|
|
26
26
|
The gateway plugin resolves the installed package; it does not copy Workflow assets into the consumer. Refresh its installed source through the supported plugin installation flow when the package changes, then verify a new Task loads the intended skill. Package text validation alone does not prove the App installation boundary.
|
|
27
27
|
|
|
28
28
|
This guide does not authorize updating a live consumer while auditing the workflow package. Such a change is a separate explicitly scoped operation.
|
|
29
|
+
|
|
30
|
+
## Paused external failed-check update: beta.14 to beta.14.1
|
|
31
|
+
|
|
32
|
+
The verified Milestone 4 repair has a separate, bounded checkpoint: an external Task at
|
|
33
|
+
`awaiting_execution_authorization`, exactly one failed Step with its native check-failure
|
|
34
|
+
receipt, retained regular dirty files, independently reviewed completed predecessors, the
|
|
35
|
+
original Worker claim, and no lease or pending operation. A missing or negative rebound Plan
|
|
36
|
+
audit is planning evidence only. This route does not approve product work or weaken acceptance.
|
|
37
|
+
It is limited to the exact beta.14 → beta.14.1 package transition; it is not a general dirty-update route.
|
|
38
|
+
|
|
39
|
+
1. Obtain the exact published beta.14.1 tarball outside the consumer. Its unpacked target runtime
|
|
40
|
+
may run only `update failed-checkpoint-source-preflight --id <Task> --tarball <artifact>`
|
|
41
|
+
against the source Worker checkout. Require `eligible=true` and retain the returned `receipt`
|
|
42
|
+
object outside the checkout. Candidate qualification may use an unpublished tarball only in
|
|
43
|
+
an isolated copy. A live transport requires the published, verified artifact.
|
|
44
|
+
2. In separate base and Task checkouts, create exactly one dependency-only commit on each
|
|
45
|
+
receipt-bound source HEAD. Change only the workflow entries in package.json/package-lock.json.
|
|
46
|
+
If package.json already contains dirty product scripts, stage the dependency change derived
|
|
47
|
+
from committed HEAD, not the whole working manifest; retain the product delta in the working
|
|
48
|
+
file. Preserve every other byte, including formatting; only the literal workflow version
|
|
49
|
+
string may change in a dirty package.json. Dirty package-lock.json, symlinks, deleted files,
|
|
50
|
+
extra commits, changed product bytes, leases or changed state make this checkpoint ineligible.
|
|
51
|
+
3. Install that same exact target and run its handshake, status and next. Follow
|
|
52
|
+
`update failed-checkpoint-transport-preflight --id <Task> --tarball <artifact> --file <receipt>`.
|
|
53
|
+
Only an eligible proof permits `update failed-checkpoint-recover` using its exact revision,
|
|
54
|
+
original actor and an explicit reason. The runtime reconstructs the original source proof;
|
|
55
|
+
an edited receipt cannot authorize transport.
|
|
56
|
+
4. Recovery registers the target dependency commit and an explicit `failedCheckpoint` provenance
|
|
57
|
+
record. It preserves completed-Step evidence, the failed-Step receipt, dirty product changes,
|
|
58
|
+
authorizations and claim history. Original and transported dirty hashes remain distinguishable;
|
|
59
|
+
no historical evidence is rewritten and no new execution authority is granted. Replaying the
|
|
60
|
+
recovery after its revision change fails.
|
|
61
|
+
5. Follow fresh Knowledge reconciliation and a new independently bound Plan audit before any
|
|
62
|
+
corrective decision/replan or execution. An old auditor report remains historical evidence,
|
|
63
|
+
not a fresh audit for the transported candidate. Continue only through the current advertised
|
|
64
|
+
corrective and authorization routes. The release qualification must prove this continuation,
|
|
65
|
+
not merely that the state schema can be read.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-workflow-gateway",
|
|
3
|
-
"version": "0.1.0+codex.
|
|
3
|
+
"version": "0.1.0+codex.20260910215719",
|
|
4
4
|
"description": "Thin personal Codex gateway for exact project-local Codex Workflow V2 packages and codebase-memory-mcp.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Codex Workflow Maintainers"
|
|
@@ -29,10 +29,12 @@ report only outside repository checkouts under actual permissions; zero-write in
|
|
|
29
29
|
1. `allocate` for the exact role/entity/membership/review attempt. Use its title verbatim.
|
|
30
30
|
Reuse the existing matching reservation; neither a new number nor a missing App listing proves
|
|
31
31
|
an earlier creation failed. Review attempt numbers come from the Workflow review cycle.
|
|
32
|
-
2. Prepare a private request with repositoryRoot, appProjectId, hostId
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
2. Prepare a private request with repositoryRoot, appProjectId, hostId and promptFile. Omit
|
|
33
|
+
modelRequest by default: registry createArgs/followUpArgs omit model and thinking and retain
|
|
34
|
+
destination/user settings. Do not ask for a model per role. Only for an explicit user override,
|
|
35
|
+
provide modelRequest `{userAuthorized:true, model, thinking?, availableModels}` using the exact
|
|
36
|
+
selected model and actual destination catalog. The assertion is not a grant of App authority;
|
|
37
|
+
unavailable choices fail without silent substitution.
|
|
36
38
|
3. Run `dispatch-begin` before the App call. Only `createAllowed=true` permits one
|
|
37
39
|
`create_thread` using its exact `createArgs`; save the complete receipt privately.
|
|
38
40
|
4. Record `dispatch-result` from the actual App result. A pending client ID is not a thread ID.
|
|
@@ -71,10 +73,20 @@ prove Task completion. On restart reconcile App readback, saved cursors and Core
|
|
|
71
73
|
The Task chat supervises its independent reviewers; the Milestone coordinator supervises its Task
|
|
72
74
|
chats. Use fresh `task show` and `milestone progress` for progress, preserving cancelled/replacement
|
|
73
75
|
membership identities. After required Tasks merge, follow Milestone validation and acceptance.
|
|
74
|
-
A user checkpoint or
|
|
76
|
+
A user checkpoint or evidenced integrity/infrastructure/App blocker may end supervision;
|
|
75
77
|
report the exact pending Task and route so resumption does not create duplicates.
|
|
76
78
|
|
|
77
79
|
For a material phase change, authorized `model-select` returns settings for the same bound chat.
|
|
78
80
|
It changes neither role nor authority. Keep settings otherwise; do not escalate model or retries
|
|
79
81
|
because a review failed. A workflow incident is a bounded diagnostic packet, not authorization to
|
|
80
82
|
publish or message a patch chat. Obtain the required user authorization before external dispatch.
|
|
83
|
+
|
|
84
|
+
## Scoped delegate authorization
|
|
85
|
+
|
|
86
|
+
In delegate mode the human decides Discovery and grant only. Authorized creation of required
|
|
87
|
+
role tasks includes their minimum Task/Brief/Plan/Knowledge/commit/seal/check context, intended
|
|
88
|
+
public one-time claim reference, and reports back to the authorized coordinator chain. Reuse that
|
|
89
|
+
actual authorization across routine revisions and fresh review packets; do not ask separately for
|
|
90
|
+
creation, default model, packet transfer, check execution or same-scope credential recovery.
|
|
91
|
+
Preserve recipient/scope/expiry/one-time checks and never transmit vault secrets. If App rejects
|
|
92
|
+
an action despite this authorization, report its exact refusal; the workflow cannot override it.
|
|
@@ -1,55 +1,51 @@
|
|
|
1
1
|
# Current action inputs
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
This reference does not enumerate transitions or provide another compatibility contract.
|
|
3
|
+
Fresh Core navigation defines eligibility; current help/schemas define serialization.
|
|
4
|
+
Read this reference for planning, context refresh and sealed review, not as another transition catalog.
|
|
6
5
|
|
|
7
6
|
## Planning and Knowledge
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
`
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
For `task plan-set`, use `taskPlanContract`: retain every `requiredRequirementIds` and
|
|
9
|
+
`requiredAcceptanceIds` member, Brief hash and Knowledge Map revision/hash. Prose cannot replace IDs.
|
|
10
|
+
Replanning preserves completed evidence and semantic/safety boundaries; contradictory bindings block submission.
|
|
11
|
+
Compare exact `allowedWrites`/outputs with scanner classifications. New Knowledge sources require
|
|
12
|
+
`knowledgeImpact: create` and exact normalized path/category in `knowledgeTargets`, not wildcards/directories.
|
|
13
|
+
Approved repository evidence defines source authority; planners cannot infer delegated eligibility.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
comes from approved repository evidence; the planner cannot infer delegated approval eligibility.
|
|
19
|
-
|
|
20
|
-
If top-level `next` advertises `task context-refresh`, execute that atomic action with the returned
|
|
21
|
-
Task/map revisions, named delegate and grant. Do not approve/reconcile Knowledge separately first.
|
|
22
|
-
Unsafe differences use the visible Knowledge approval route returned by Core. For additional
|
|
23
|
-
implementation scope, `change explain` consumes a closed proposal; its diagnostic is not approval.
|
|
15
|
+
For advertised `task context-refresh`, use its exact Task/map revisions, delegate and grant atomically;
|
|
16
|
+
do not reconcile/approve separately first. Unsafe differences follow Core's Knowledge approval route.
|
|
17
|
+
Additional scope uses `change explain` with a closed proposal; its diagnostic is not approval.
|
|
24
18
|
|
|
25
19
|
## Sealed review
|
|
26
20
|
|
|
27
|
-
For `external-sealed`,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
- `review`: the closed object containing `status`, `reviewer`, `summary`, and `findings`.
|
|
37
|
-
|
|
38
|
-
Consult `task step-review-record --help` or `task review-sealed-record --help` for the applicable
|
|
39
|
-
schema/example. Mode belongs in the envelope; do not invent an extra record-command option.
|
|
40
|
-
Use the lifecycle actor from `next`, separately from the independent reviewer identity, and the
|
|
41
|
-
advertised credential reference. Discard a review whose packet, commit or seal changed.
|
|
42
|
-
An unverified launch or permission denial is not evidence of a semantic implementation failure.
|
|
21
|
+
For `external-sealed`, obtain the advertised Step/Task packet and send only immutable evidence and
|
|
22
|
+
the read-only role to an independent reviewer. Thread identity alone proves no review: obtain the
|
|
23
|
+
actual result with unchanged bindings. Do not substitute a nested local App-sandbox reviewer.
|
|
24
|
+
Record the full envelope: `protocol`, `packetHash`, `repositorySealHash`, `reviewerThreadId`,
|
|
25
|
+
`reviewMode`, and nested `review` containing `status`, `reviewer`, `summary`, `findings`.
|
|
26
|
+
Use `task step-review-record --help` or `task review-sealed-record --help` for its schema/example.
|
|
27
|
+
Mode belongs in the envelope, not an invented CLI option. Use the lifecycle actor/reference from
|
|
28
|
+
`next`, separately from reviewer identity. Discard results with changed packet, commit or seal.
|
|
29
|
+
Unverified launch or permission denial is not a semantic implementation failure.
|
|
43
30
|
|
|
44
31
|
## Context and authority changes
|
|
45
32
|
|
|
46
|
-
Help
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
33
|
+
Help and derived actor names waive no claim, lease, audit or authority checks. Review findings grant
|
|
34
|
+
no scope expansion/new Task: follow current fix/replan/stop and preserve history. Choose alternatives
|
|
35
|
+
consistent with user intent; advertised cancellation/publication/grant issuance is not authorization.
|
|
36
|
+
Result submission may release the lease before acceptance; use fresh navigation/credential recovery,
|
|
37
|
+
not the old reference. Normal updates require installed `update preflight` with `safe=true`; for an
|
|
38
|
+
explicit blocked-checkpoint update follow the gateway's exact-target exception. Unsafe state never
|
|
39
|
+
permits manual state editing or deleting retained work.
|
|
40
|
+
|
|
41
|
+
## Delegated corrective replan
|
|
42
|
+
|
|
43
|
+
For `task corrective-replan-authorize`, retain the independently validated candidate and add
|
|
44
|
+
`delegation: {grantId, actor}` from the eligible execution option. `authority.actorIdentityHash` is
|
|
45
|
+
SHA256 of the exact grant delegate UTF-8 string; `authority.humanPrincipalIdentityHash` hashes its
|
|
46
|
+
principal string as provenance, not new Human confirmation. Preserve objective, requirements,
|
|
47
|
+
acceptance and completed evidence. Core revalidates grant at issuance and execution.
|
|
48
|
+
Run authorize with `--id --file`, then `task corrective-replan-execute` with its exact returned
|
|
49
|
+
credential. The receipt contains `delegated`, no `human` confirmation; never use prepare/confirm
|
|
50
|
+
for it. Missing/expired authority returns to grant issuance/expansion; unattainable acceptance returns
|
|
51
|
+
to Discovery, never a weakened Plan.
|
|
@@ -29,7 +29,17 @@ function promptMatches(value, digest) {
|
|
|
29
29
|
if (typeof value !== 'string') return false;
|
|
30
30
|
if (hash(value) === digest) return true;
|
|
31
31
|
const wrapped = /^<codex_delegation>\s*<source_thread_id>[^<]+<\/source_thread_id>\s*<input>([\s\S]*)<\/input>\s*<\/codex_delegation>$/.exec(value);
|
|
32
|
-
|
|
32
|
+
if (wrapped === null) return false;
|
|
33
|
+
const input = wrapped[1];
|
|
34
|
+
// Older App transports carried literal input. Keep exact bytes authoritative.
|
|
35
|
+
if (hash(input) === digest) return true;
|
|
36
|
+
// Decode only the five XML text entities, exactly once. No trimming, recursive
|
|
37
|
+
// unescape, HTML/numeric entities or Unicode normalization may alter the packet.
|
|
38
|
+
// In particular, original literal `>` arrives as `&gt;` and stays `>`.
|
|
39
|
+
if (input.includes('<') || /&(?!amp;|lt;|gt;|quot;|apos;)/.test(input)) return false;
|
|
40
|
+
const entities = { amp: '&', lt: '<', gt: '>', quot: '"', apos: "'" };
|
|
41
|
+
const decoded = input.replace(/&(amp|lt|gt|quot|apos);/g, (_match, name) => entities[name]);
|
|
42
|
+
return hash(decoded) === digest;
|
|
33
43
|
}
|
|
34
44
|
function view(entry) {
|
|
35
45
|
const d = entry.dispatch;
|
|
@@ -79,7 +89,7 @@ export function dispatchAction(action, entry, input = {}) {
|
|
|
79
89
|
};
|
|
80
90
|
return { ...view(entry), createAllowed: true, nextAction: 'create-thread-once', createArgs: {
|
|
81
91
|
target: { type: 'project', projectId: appProjectId, environment: { type: executionMode } },
|
|
82
|
-
title: entry.requestedTitle, prompt: dispatchedPrompt,
|
|
92
|
+
title: entry.requestedTitle, prompt: dispatchedPrompt, ...selection.dispatchArgs,
|
|
83
93
|
} };
|
|
84
94
|
}
|
|
85
95
|
const d = entry.dispatch;
|
|
@@ -297,7 +307,7 @@ export function dispatchAction(action, entry, input = {}) {
|
|
|
297
307
|
d.selection = selection;
|
|
298
308
|
d.selectionHistory.push(selection);
|
|
299
309
|
return { ...view(entry), followUpArgs: { threadId: entry.threadId, hostId: entry.hostId,
|
|
300
|
-
|
|
310
|
+
...selection.dispatchArgs } };
|
|
301
311
|
}
|
|
302
312
|
throw new Error(`Unknown dispatch action: ${action}`);
|
|
303
313
|
}
|
|
@@ -1,45 +1,30 @@
|
|
|
1
|
-
//
|
|
2
|
-
export const MODEL_POLICY_VERSION = 'chat-model-policy-
|
|
3
|
-
const PROFILES = {
|
|
4
|
-
mechanical: [['gpt-5.4-mini', 'low'], ['gpt-5.6-luna', 'low']],
|
|
5
|
-
scoped: [['gpt-5.6-luna', 'low'], ['gpt-5.4-mini', 'medium']],
|
|
6
|
-
implementation: [['gpt-5.6-terra', 'low'], ['gpt-5.6-luna', 'medium']],
|
|
7
|
-
planning: [['gpt-5.6-terra', 'low'], ['gpt-5.6-luna', 'medium']],
|
|
8
|
-
review: [['gpt-5.6-terra', 'low'], ['gpt-5.6-luna', 'medium']],
|
|
9
|
-
'scoped-review': [['gpt-5.6-luna', 'low'], ['gpt-5.4-mini', 'medium']],
|
|
10
|
-
complex: [['gpt-5.6-terra', 'medium'], ['gpt-5.6-luna', 'medium']],
|
|
11
|
-
};
|
|
1
|
+
// Destination settings are authoritative unless the user explicitly chose an override.
|
|
2
|
+
export const MODEL_POLICY_VERSION = 'chat-model-policy-v3';
|
|
12
3
|
const TYPES = [
|
|
13
4
|
'coordinator', 'task', 'step-review', 'final-review', 'corrective-audit', 'plan-audit', 'workflow-blocker',
|
|
14
5
|
];
|
|
15
6
|
export function selectChatModel(type, request) {
|
|
16
7
|
if (!TYPES.includes(type)) throw new Error('Unknown chat type.');
|
|
17
|
-
if (
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
8
|
+
if (request == null) return {
|
|
9
|
+
policyVersion: MODEL_POLICY_VERSION, profile: 'destination-default', dispatchArgs: {},
|
|
10
|
+
};
|
|
11
|
+
// This records the caller's explicit-user-selection assertion; it is not an App
|
|
12
|
+
// permission or a substitute for the actual user instruction at dispatch time.
|
|
13
|
+
if (request.userAuthorized !== true || typeof request.model !== 'string' || !request.model.trim()) {
|
|
14
|
+
throw new Error('Model override requires an explicit user-authorized model; otherwise omit modelRequest and use destination defaults.');
|
|
15
|
+
}
|
|
21
16
|
if (!Array.isArray(request.availableModels) || request.availableModels.length === 0
|
|
22
17
|
|| request.availableModels.some(m => !m || typeof m.id !== 'string' || !Array.isArray(m.reasoningEfforts)
|
|
23
18
|
|| m.reasoningEfforts.some(e => typeof e !== 'string'))
|
|
24
19
|
|| new Set(request.availableModels.map(m => m.id)).size !== request.availableModels.length) {
|
|
25
20
|
throw new Error('Provide the destination host model/effort catalog; never infer availability.');
|
|
26
21
|
}
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
profile = 'mechanical';
|
|
36
|
-
} else if (type === 'coordinator' || request.phase === 'coordination' || request.complexity === 'routine') profile = 'scoped';
|
|
37
|
-
else profile = 'implementation';
|
|
38
|
-
const selected = PROFILES[profile].find(([id, effort]) => request.availableModels.some(m => m.id === id && m.reasoningEfforts.includes(effort)));
|
|
39
|
-
if (!selected) throw new Error(`No supported model/effort for ${profile}; explicit policy revision required, never inherit coordinator settings.`);
|
|
40
|
-
return {
|
|
41
|
-
policyVersion: MODEL_POLICY_VERSION, profile, model: selected[0], thinking: selected[1],
|
|
42
|
-
phase: request.phase, complexity: request.complexity, highRisk: request.highRisk,
|
|
43
|
-
rationale: request.rationale.trim(), fallback: selected !== PROFILES[profile][0],
|
|
44
|
-
};
|
|
22
|
+
const selected = request.availableModels.find(m => m.id === request.model);
|
|
23
|
+
if (!selected || (request.thinking !== undefined && !selected.reasoningEfforts.includes(request.thinking))) {
|
|
24
|
+
throw new Error('User-selected model/effort is unavailable on the destination host; no automatic substitution.');
|
|
25
|
+
}
|
|
26
|
+
const dispatchArgs = { model: request.model,
|
|
27
|
+
...(request.thinking === undefined ? {} : { thinking: request.thinking }) };
|
|
28
|
+
return { policyVersion: MODEL_POLICY_VERSION, profile: 'explicit-user-selection',
|
|
29
|
+
...dispatchArgs, userAuthorized: true, dispatchArgs };
|
|
45
30
|
}
|
|
@@ -17,7 +17,8 @@ Stop on missing/ranged/mismatched versions or an incompatible handshake. Do not
|
|
|
17
17
|
global package, mutable tag, external runner or MCP ADR memory.
|
|
18
18
|
|
|
19
19
|
For an explicitly requested blocked navigation update, the exact target may run only the read-only
|
|
20
|
-
`update navigation-source-preflight
|
|
20
|
+
`update navigation-source-preflight` or `update failed-checkpoint-source-preflight`; read
|
|
21
|
+
`docs/updating-existing-project.md` from that exact target package for the matching boundary.
|
|
21
22
|
Only an eligible source receipt permits its two dependency transports; recovery uses the newly installed local target.
|
|
22
23
|
|
|
23
24
|
For workflow source development, use the requested source checkout and record its Git revision
|
|
@@ -48,15 +49,19 @@ Report repeated unchanged states without progress as an incident; they do not au
|
|
|
48
49
|
|
|
49
50
|
## Respect human decisions
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
In delegate mode ask the human only to form/edit Discovery or issue/expand grant. Use the exact
|
|
53
|
+
currently eligible `delegatedApprovalOptions` for operational approvals; retain required machine
|
|
54
|
+
confirmation-code bindings. Missing authority requires grant issuance/expansion, never invented
|
|
55
|
+
human identity or confirmation. Outside delegate mode, present a `requiredHumanGate` and execute
|
|
56
|
+
only after a later explicit approval of its unchanged code.
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
Routine role creation/minimum packet dispatch, declared Plan checks and same-actor credential
|
|
59
|
+
recovery do not require repeated questions when covered by the actual scoped authorization.
|
|
60
|
+
Use destination model defaults unless explicitly overridden by the user. Actual App/sandbox
|
|
61
|
+
denials remain enforceable and must be reported, not bypassed. Grant issuance, expansion and
|
|
62
|
+
renewal extending authority remain human decisions. Product-intent changes return to Discovery;
|
|
63
|
+
never weaken approved acceptance or checks to declare completion. Core eligibility does not grant
|
|
64
|
+
external-operation or filesystem permissions beyond the actual authorization.
|
|
60
65
|
|
|
61
66
|
## Keep execution and review separate
|
|
62
67
|
|
|
@@ -84,7 +89,7 @@ Before authorized App dispatch, read [chat dispatch](../../references/chat-dispa
|
|
|
84
89
|
Create required Task/reviewer chats as fresh `create_thread` tasks with closed role packets;
|
|
85
90
|
never use `fork_thread` to carry parent history into them. The packaged registry owns allocation,
|
|
86
91
|
creation permits, exact title/context readback and binding. An ambiguous result is not permission
|
|
87
|
-
to create a duplicate.
|
|
92
|
+
to create a duplicate. Omit model/reasoning overrides by default; an explicit user choice must match the destination tool contract.
|
|
88
93
|
|
|
89
94
|
Maintain the Task-to-chat mapping and supervision cursor. A completed chat is evidence, not a
|
|
90
95
|
terminal Workflow Task: reconcile fresh Core state, continue the same chat when permitted, and
|
|
@@ -68,7 +68,9 @@ During initial planning, all linked Tasks may be materialized before one complet
|
|
|
68
68
|
materialization, with explicit `discovery start` and `discovery materialize` commands. After at
|
|
69
69
|
least one linked Task exists, it also exposes the closing `milestone plan-set` command. Failed navigation is fail-closed and cannot be treated as an
|
|
70
70
|
expected assembly signal. After that boundary, semantic updates use human-only `milestone scope-change-prepare` and
|
|
71
|
-
`milestone scope-change-apply
|
|
71
|
+
`milestone scope-change-apply`; in delegate mode a product-intent change returns to Discovery.
|
|
72
|
+
An expiring Milestone Autonomy Contract can be bound mechanically by `milestone autonomy-bind`
|
|
73
|
+
from an existing sufficient grant, without issuing new authority or another Human confirmation. It may
|
|
72
74
|
use `milestone autonomy-evolve` only for membership changes while outcome, success signal,
|
|
73
75
|
acceptance, checks, discovery, and base branch remain fixed. It may also approve Project Memory
|
|
74
76
|
only within an atomic context refresh for a Task in that Milestone; standalone map approval
|
|
@@ -3,21 +3,22 @@
|
|
|
3
3
|
Own state transitions, dispatch envelopes, evidence collection, and recovery guidance.
|
|
4
4
|
|
|
5
5
|
- Verify Project Knowledge Map freshness before Plan authorization and role dispatch.
|
|
6
|
-
- After
|
|
7
|
-
the
|
|
6
|
+
- After a knowledge change between Steps, use the advertised atomic delegated context-refresh
|
|
7
|
+
without separately reconciling/approving the map first. For other changes use the eligible
|
|
8
|
+
Knowledge approval route; do not request authorization already covered by the grant.
|
|
8
9
|
- Own derived map revisions and context selection, but never edit the meaning of canonical project files.
|
|
9
10
|
- Treat CLI `status`, `next`, revision, and lock state as authoritative machine state.
|
|
10
11
|
- Never bypass authorization, scope checks, failed validation, or stale review.
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
- In delegate mode human decisions are limited to forming/editing Discovery and issuing/expanding
|
|
13
|
+
grant. Use current eligible delegated approval options for operational gates; retain exact evidence
|
|
14
|
+
and confirmation-code bindings where Core uses them as machine input. Missing authority returns
|
|
15
|
+
to grant issuance/expansion, never an invented Human confirmation or principal identity.
|
|
16
|
+
- Accept a Milestone through its exact eligible delegated option after all independent checks pass.
|
|
17
|
+
Outside delegate mode retain the explicit bound Human gate and later confirmation.
|
|
17
18
|
- During initial Milestone planning, materialize the complete linked Task set and record one
|
|
18
19
|
full membership Plan. When a Milestone Autonomy Contract is active, evolve only membership;
|
|
19
20
|
any outcome, success-signal, acceptance, check, discovery, or base-branch change returns to
|
|
20
|
-
|
|
21
|
+
Discovery editing; never weaken acceptance to claim success.
|
|
21
22
|
- Use the Milestone contract for Project Memory approval only through the exact atomic
|
|
22
23
|
content-only Task context-refresh route; never use it for standalone map approval.
|
|
23
24
|
- Dispatch one Worker at a time for a concrete Step.
|
|
@@ -52,8 +53,9 @@ Own state transitions, dispatch envelopes, evidence collection, and recovery gui
|
|
|
52
53
|
boundaries. `wait_threads` is only the wakeup signal; always use `read_thread` for the full report
|
|
53
54
|
before comparing it with Workflow state.
|
|
54
55
|
- When the same Task remains nonterminal and fresh navigation provides a non-human continuation,
|
|
55
|
-
resume that same chat with `send_message_to_thread`. Ask the user only
|
|
56
|
-
|
|
56
|
+
resume that same chat with `send_message_to_thread`. Ask the user only to edit Discovery or
|
|
57
|
+
issue/expand grant. A genuine integrity/infrastructure/App blocker requires evidence, not a new
|
|
58
|
+
category of repeated operational approval.
|
|
57
59
|
Do not create another Task chat merely because the existing one is idle or finished.
|
|
58
60
|
- Do not end the Milestone coordinator turn with a dispatched nonterminal Task except at a requested
|
|
59
61
|
checkpoint or genuine blocker. Record the Task/thread/host/title/cursor mapping and fresh
|
|
@@ -74,3 +76,21 @@ Own state transitions, dispatch envelopes, evidence collection, and recovery gui
|
|
|
74
76
|
content-only option. Classification, authority, source-set, gap, or conflict changes still
|
|
75
77
|
require the ordinary visible Knowledge Map flow.
|
|
76
78
|
- Do not make product-scope decisions or implement production changes.
|
|
79
|
+
|
|
80
|
+
## Delegate operating boundary
|
|
81
|
+
|
|
82
|
+
The scoped delegation decision covers required role chats and their minimum startup/review/report
|
|
83
|
+
packets, intended public one-time claim references, approved Plan checks (including their declared
|
|
84
|
+
local files/containers), Core completion, and credential recovery for the same actor/Task/scope.
|
|
85
|
+
Do not request these decisions again merely because revision, commit, seal or chat changed.
|
|
86
|
+
Use destination model defaults unless the user explicitly selected an override. Never send vault
|
|
87
|
+
secrets or claim references to unrelated recipients. Actual App/sandbox refusals remain enforceable;
|
|
88
|
+
record the precise failed action and authorization mismatch, without disguising a retry or bypass.
|
|
89
|
+
|
|
90
|
+
For same-scope corrective replan use the eligible `task corrective-replan-authorize` option and
|
|
91
|
+
independent candidate validation/audit; it consumes the existing `task.execution_authorize` grant.
|
|
92
|
+
For technical adoption use an eligible project `project.adopt` grant. Bind Milestone autonomy from
|
|
93
|
+
an existing sufficient grant with `milestone autonomy-bind`; do not issue another grant implicitly.
|
|
94
|
+
Preserve claims/leases, dirty bytes, completed evidence, acceptance and current receipt bindings.
|
|
95
|
+
If success is unattainable, show evidence and return to Discovery. Never delete a required check,
|
|
96
|
+
weaken an acceptance criterion or relabel a failed outcome as success to close work.
|
package/roles/scope-lead.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Own requirements discovery before any Task, branch, or execution artifact exists.
|
|
4
4
|
|
|
5
5
|
- Scan existing repository files and propose a Project Knowledge Map before code-aware discovery.
|
|
6
|
-
- Classify candidate sources and explicit gaps;
|
|
6
|
+
- Classify candidate sources and explicit gaps; canonical source selection follows Discovery and the eligible Knowledge approval contract; do not add a separate human gate inside an existing grant.
|
|
7
7
|
- Read broad approved project knowledge, treating the local map as derived metadata rather than content.
|
|
8
8
|
- Separate facts, decisions, assumptions, and unknowns.
|
|
9
9
|
- Ask only for missing information that changes scope, outcome, constraints, or acceptance.
|
|
@@ -17,4 +17,7 @@ Translate an approved Brief into an execution-ready Plan.
|
|
|
17
17
|
recovery orchestration, and executable composition. Do not use arbitrary line/file limits;
|
|
18
18
|
split on independently verifiable failure boundaries.
|
|
19
19
|
- Do not edit production files or silently expand the Brief.
|
|
20
|
-
- Return unresolved
|
|
20
|
+
- Return unresolved product-intent choices to Discovery through the Delivery Coordinator.
|
|
21
|
+
- Technical corrective replanning inside the approved objective and grant requires independent
|
|
22
|
+
validation/audit, not another Human confirmation. Never weaken acceptance, hide a required
|
|
23
|
+
failure-specific check, or change Discovery to make the candidate pass.
|