@ikon85/agent-workflow-kit 0.44.1 → 0.45.0
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/.agents/skills/audit-skills/SKILL.md +7 -4
- package/.agents/skills/code-review/SKILL.md +7 -4
- package/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +7 -4
- package/.agents/skills/improve-codebase-architecture/INTERFACE-DESIGN.md +7 -4
- package/.agents/skills/improve-codebase-architecture/SKILL.md +7 -4
- package/.agents/skills/orchestrate-wave/SKILL.md +1 -1
- package/.agents/skills/orchestrate-wave/references/dispatch-subagents.md +9 -0
- package/.agents/skills/orchestrate-wave/references/dispatch-workflow.md +9 -0
- package/.agents/skills/research/SKILL.md +7 -4
- package/.agents/skills/to-issues/SKILL.md +25 -4
- package/.claude/skills/audit-skills/SKILL.md +7 -4
- package/.claude/skills/code-review/SKILL.md +7 -4
- package/.claude/skills/codebase-design/DESIGN-IT-TWICE.md +7 -4
- package/.claude/skills/codex-build/SKILL.md +13 -0
- package/.claude/skills/codex-review/SKILL.md +13 -0
- package/.claude/skills/grill-me-codex/SKILL.md +14 -0
- package/.claude/skills/grill-with-docs-codex/SKILL.md +14 -0
- package/.claude/skills/improve-codebase-architecture/INTERFACE-DESIGN.md +7 -4
- package/.claude/skills/improve-codebase-architecture/SKILL.md +7 -4
- package/.claude/skills/orchestrate-wave/SKILL.md +1 -1
- package/.claude/skills/orchestrate-wave/references/dispatch-subagents.md +9 -0
- package/.claude/skills/orchestrate-wave/references/dispatch-workflow.md +9 -0
- package/.claude/skills/research/SKILL.md +7 -4
- package/.claude/skills/skill-manifest.json +34 -23
- package/.claude/skills/to-issues/SKILL.md +25 -4
- package/README.md +71 -0
- package/agent-workflow-kit.package.json +149 -45
- package/package.json +1 -1
- package/scripts/doctrine-migration/index.mjs +296 -0
- package/scripts/kit-release.mjs +41 -9
- package/src/cli.mjs +521 -80
- package/src/commands/routing-status.mjs +288 -0
- package/src/commands/update.mjs +9 -1
- package/src/consumer-migrations.json +23 -1
- package/src/lib/bundle.mjs +158 -2
- package/src/lib/consumerMigrations.mjs +55 -0
- package/src/lib/dispatchJournal.mjs +300 -0
- package/src/lib/dispatchPlan.mjs +286 -0
- package/src/lib/dispatchReceipt.mjs +226 -89
- package/src/lib/frontendWorkloads.mjs +35 -33
- package/src/lib/routeDispatcher.mjs +367 -70
- package/src/lib/routingAccessGraph.mjs +265 -20
- package/src/lib/routingAccessGraphStore.mjs +300 -0
- package/src/lib/routingAdapters/claude.mjs +104 -4
- package/src/lib/routingAdapters/codex.mjs +132 -7
- package/src/lib/routingAdapters/hostBridge.mjs +291 -0
- package/src/lib/routingCatalog.mjs +201 -24
- package/src/lib/routingDispatchLease.mjs +253 -0
- package/src/lib/routingEvidenceCache.mjs +78 -0
- package/src/lib/routingIntent.mjs +176 -10
- package/src/lib/routingIntentClassifier.mjs +137 -0
- package/src/lib/routingInventory/snapshots/claude.json +49 -0
- package/src/lib/routingInventory/snapshots/codex.json +109 -0
- package/src/lib/routingInventory.mjs +182 -0
- package/src/lib/routingPolicy.mjs +193 -6
- package/src/lib/routingProfile.mjs +1251 -123
- package/src/lib/routingProfilePolicy.mjs +156 -0
- package/src/lib/routingProfileStorage.mjs +299 -0
- package/src/lib/routingResolver.mjs +369 -86
- package/src/lib/routingSources/artificialAnalysis.mjs +19 -7
- package/src/lib/routingSources/benchlm.mjs +5 -0
- package/src/lib/routingSources/codeArena.mjs +13 -3
- package/src/lib/routingSources/deepswe.mjs +19 -5
- package/src/lib/routingSources/openhands.mjs +17 -4
- package/src/lib/routingSources/openhandsFrontend.mjs +13 -3
- package/src/lib/safeText.mjs +26 -0
- package/src/lib/updateCandidate.mjs +36 -3
|
@@ -122,10 +122,13 @@ otherwise stay invisible.
|
|
|
122
122
|
|
|
123
123
|
### 2. Audit in parallel — one subagent per skill
|
|
124
124
|
|
|
125
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
126
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
127
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
128
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
129
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
130
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
131
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
129
132
|
precedence, and catalog/access/policy revisions are proved.
|
|
130
133
|
|
|
131
134
|
Run **one read-only research subagent per skill** — several in parallel in a
|
|
@@ -81,10 +81,13 @@ When `projectEnrichment` is active, read `docs/agents/code-review.md` first. App
|
|
|
81
81
|
|
|
82
82
|
## Execution
|
|
83
83
|
|
|
84
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
85
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
86
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
87
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
88
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
89
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
90
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
88
91
|
precedence, and catalog/access/policy revisions are proved.
|
|
89
92
|
|
|
90
93
|
- Run both axes as **parallel sub-agents** — separate context each, so neither poisons the other's read. Give the Standards sub-agent the Standards sources **plus** the full Fowler baseline in its prompt; it has no other way to see the baseline.
|
|
@@ -18,10 +18,13 @@ Show this to the user, then immediately proceed to Step 2. The user reads and th
|
|
|
18
18
|
|
|
19
19
|
### 2. Spawn sub-agents
|
|
20
20
|
|
|
21
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
22
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
23
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
24
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
25
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
26
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
27
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
25
28
|
precedence, and catalog/access/policy revisions are proved.
|
|
26
29
|
|
|
27
30
|
<!-- mirror-xform:start codex-parallel-subagent-dispatch -->
|
|
@@ -18,10 +18,13 @@ Show this to the user, then immediately proceed to Step 2. The user reads and th
|
|
|
18
18
|
|
|
19
19
|
### 2. Spawn sub-agents
|
|
20
20
|
|
|
21
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
22
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
23
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
24
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
25
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
26
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
27
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
25
28
|
precedence, and catalog/access/policy revisions are proved.
|
|
26
29
|
|
|
27
30
|
<!-- mirror-xform:start codex-parallel-subagent-dispatch -->
|
|
@@ -43,10 +43,13 @@ This skill is _informed_ by the project's domain model. The domain language give
|
|
|
43
43
|
|
|
44
44
|
Read the project's domain glossary and any ADRs in the area you're touching first.
|
|
45
45
|
|
|
46
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
47
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
48
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
49
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
50
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
51
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
52
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
50
53
|
precedence, and catalog/access/policy revisions are proved.
|
|
51
54
|
|
|
52
55
|
<!-- mirror-xform:start codex-explorer-dispatch -->
|
|
@@ -109,7 +109,7 @@ node scripts/readiness.mjs check --skill orchestrate-wave --json
|
|
|
109
109
|
Pass only host-supplied inventory through `capabilityAdapter.claude` or `.codex`,
|
|
110
110
|
then call the selector. It returns exactly one target; missing or `unknown` evidence
|
|
111
111
|
degrades A → B → C. A model claim is not evidence; do not emulate a missing primitive.
|
|
112
|
-
Before any spawn, resolve the provider-neutral Routing intent through the shared resolver and spawn guard, then use the active Claude or Codex adapter. Codex contributes only its dated host attestation through `routingAdapters/codex.mjs`; it does not create a second catalog, Access graph, or Routing policy. A detected transport is not authorization. The Dispatch receipt must show requested and applied route, model/effort enforcement, environment precedence on mismatch, and catalog/access/policy revisions. AFK blocks unverified, unauthorized, overridden, unenforced, or silently degraded routes; a Codex host without model and effort selectors blocks differentiated AFK before spawn, and unreachable routes follow policy handoff/inherit/block exactly.
|
|
112
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent block first, otherwise the workflow classifier — and authorize the whole run once through a Dispatch plan whose hash binds every unit, intent, route and reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a Dispatch receipt from the shared spawn guard that carries the authorization id the plan recorded. A detected transport is not authorization; AFK dispatch stops unless requested/applied route, model/effort enforcement, environment precedence, and catalog/access/policy revisions are proved. Before any spawn, resolve the provider-neutral Routing intent through the shared resolver and spawn guard, then use the active Claude or Codex adapter. Codex contributes only its dated host attestation through `routingAdapters/codex.mjs`; it does not create a second catalog, Access graph, or Routing policy. A detected transport is not authorization. The Dispatch receipt must show requested and applied route, model/effort enforcement, environment precedence on mismatch, and catalog/access/policy revisions. AFK blocks unverified, unauthorized, overridden, unenforced, or silently degraded routes; a Codex host without model and effort selectors blocks differentiated AFK before spawn, and unreachable routes follow policy handoff/inherit/block exactly.
|
|
113
113
|
- **Path A:** requires the literal `Workflow` tool, callable and permitted, plus
|
|
114
114
|
individually proven named phases, run identity, runtime output validation,
|
|
115
115
|
journal, and resume. Then read [its recipe](references/dispatch-workflow.md).
|
|
@@ -54,6 +54,15 @@ Reconciliation is never delegated to a subagent.
|
|
|
54
54
|
|
|
55
55
|
## Round 2 — Build
|
|
56
56
|
|
|
57
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
58
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
59
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
60
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
61
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
62
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
63
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
64
|
+
precedence, and catalog/access/policy revisions are proved.
|
|
65
|
+
|
|
57
66
|
For the current reconciled batch, spawn **one builder per slice**, again as one
|
|
58
67
|
concurrent batch joined by an explicit wait. Give each builder the verbatim
|
|
59
68
|
builder contract, its reconciled allowlist, and its required commands. Resolve
|
|
@@ -48,6 +48,15 @@ current reconciled batch, make one `agent()` call per slice with explicit
|
|
|
48
48
|
the reconciled allowlist and required commands in each verbatim builder prompt;
|
|
49
49
|
the main thread still performs `semanticVerify` on every returned report.
|
|
50
50
|
|
|
51
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
52
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
53
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
54
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
55
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
56
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
57
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
58
|
+
precedence, and catalog/access/policy revisions are proved.
|
|
59
|
+
|
|
51
60
|
Before each `agent()` call, resolve its provider-neutral Routing intent and pass
|
|
52
61
|
the decision through the shared spawn guard and active surface adapter. The
|
|
53
62
|
Claude adapter must attest Workflow model/effort precedence in the current
|
|
@@ -11,10 +11,13 @@ Before applying this Core skill, run `node scripts/project-skill-extension.mjs i
|
|
|
11
11
|
Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
|
|
12
12
|
<!-- project-extension:protocol-v1:end -->
|
|
13
13
|
|
|
14
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
15
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
16
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
17
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
18
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
19
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
20
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
18
21
|
precedence, and catalog/access/policy revisions are proved.
|
|
19
22
|
|
|
20
23
|
Spin up a **background agent** to do the research, so you keep working while it reads.
|
|
@@ -436,6 +436,20 @@ Reference the blocking ticket(s), or "None - can start immediately".
|
|
|
436
436
|
**Decision:** <chosen option + why it wins on the criteria that matter + what was consciously traded off>
|
|
437
437
|
**Verdict sink:** <ADR / this body / follow-up slice #N>
|
|
438
438
|
|
|
439
|
+
## Routing intent
|
|
440
|
+
<!-- Provider-neutral and durable: the dimensions of the WORK, never a model,
|
|
441
|
+
effort, or provider name. Written as ONE blank-line-delimited block so the
|
|
442
|
+
dispatching surface can read it as the explicit intent instead of guessing
|
|
443
|
+
from workflow signals; a second such block in the body makes it ambiguous
|
|
444
|
+
and unreadable. Keys and vocabularies are owned by the intent schema. -->
|
|
445
|
+
intent-version: 2
|
|
446
|
+
routing-intent: <judgment | development | mechanical>
|
|
447
|
+
reasoning-intent: <deep | balanced | light>
|
|
448
|
+
task-shape: <single-step | multi-step | long-horizon>
|
|
449
|
+
risk: <low | moderate | high>
|
|
450
|
+
autonomy-requirement: <supervised | afk>
|
|
451
|
+
context-need: <focused | repository | long-context>
|
|
452
|
+
|
|
439
453
|
## Handoff Start Command
|
|
440
454
|
<!-- SELF-CONTAINED: scope + live-verify live HERE, never as a "see anchor
|
|
441
455
|
handoff" pointer — the anchor carries no per-slice handoff blocks anymore, and a
|
|
@@ -444,7 +458,7 @@ Reference the blocking ticket(s), or "None - can start immediately".
|
|
|
444
458
|
```
|
|
445
459
|
Welle <N> · Slice <X> (<closes #x | refs #<prd#>, Parent #<prd#>>). Read #<prd#> for decisions.
|
|
446
460
|
Start skill: 🧭 Design Grill → /grill-with-docs · 🔬 Verify Spike → /verify-spike · 📐 Trade-off/Research → /decision-gate · AFK → /implement · HITL → /grill-me → /implement.
|
|
447
|
-
Routing intent:
|
|
461
|
+
Routing intent: the body's `## Routing intent` block — read it as the explicit intent. The dispatching surface resolves the current executable route from it; never persist that provider route here.
|
|
448
462
|
Worktree: your project's worktree helper, or `git worktree add`
|
|
449
463
|
Scope (<N> files) — REQUIRED FIELD, blast-radius estimate at cut time; the build session checks it against its own recon findings, >2x deviation → STOP:
|
|
450
464
|
- <concrete file + change>
|
|
@@ -453,10 +467,17 @@ PR: <closes #x | Part of #<prd#> — NEVER closes on the anchor>.
|
|
|
453
467
|
```
|
|
454
468
|
<!-- mirror-xform:end -->
|
|
455
469
|
|
|
470
|
+
Every published issue carries that block, gate slices included — an unstated
|
|
471
|
+
intent forces the dispatching surface to classify from workflow signals, and a
|
|
472
|
+
guess is what the block exists to replace. Fill each dimension from the slice
|
|
473
|
+
itself: `autonomy-requirement: afk` only for the AFK bucket (§5c), `supervised`
|
|
474
|
+
for every HITL slice.
|
|
475
|
+
|
|
456
476
|
At execution time, consume that provider-neutral intent only through
|
|
457
|
-
`src/lib/routeDispatcher.mjs` and its shared spawn guard
|
|
458
|
-
|
|
459
|
-
|
|
477
|
+
`src/lib/routeDispatcher.mjs` and its shared spawn guard, under the Dispatch
|
|
478
|
+
plan that authorized the run. The active Claude or Codex adapter must produce
|
|
479
|
+
Dispatch receipt v2 with requested/applied route, model/effort enforcement,
|
|
480
|
+
precedence, the plan's authorization id, and catalog/access/policy revisions
|
|
460
481
|
before an AFK subagent starts; the durable issue never claims that proof.
|
|
461
482
|
</issue-template>
|
|
462
483
|
|
|
@@ -122,10 +122,13 @@ otherwise stay invisible.
|
|
|
122
122
|
|
|
123
123
|
### 2. Audit in parallel — one subagent per skill
|
|
124
124
|
|
|
125
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
126
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
127
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
128
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
129
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
130
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
131
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
129
132
|
precedence, and catalog/access/policy revisions are proved.
|
|
130
133
|
|
|
131
134
|
Run **one read-only research subagent per skill** — several in parallel in a
|
|
@@ -81,10 +81,13 @@ When `projectEnrichment` is active, read `docs/agents/code-review.md` first. App
|
|
|
81
81
|
|
|
82
82
|
## Execution
|
|
83
83
|
|
|
84
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
85
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
86
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
87
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
88
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
89
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
90
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
88
91
|
precedence, and catalog/access/policy revisions are proved.
|
|
89
92
|
|
|
90
93
|
- Run both axes as **parallel sub-agents** — separate context each, so neither poisons the other's read. Give the Standards sub-agent the Standards sources **plus** the full Fowler baseline in its prompt; it has no other way to see the baseline.
|
|
@@ -18,10 +18,13 @@ Show this to the user, then immediately proceed to Step 2. The user reads and th
|
|
|
18
18
|
|
|
19
19
|
### 2. Spawn sub-agents
|
|
20
20
|
|
|
21
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
22
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
23
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
24
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
25
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
26
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
27
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
25
28
|
precedence, and catalog/access/policy revisions are proved.
|
|
26
29
|
|
|
27
30
|
<!-- mirror-xform:start codex-parallel-subagent-dispatch -->
|
|
@@ -21,6 +21,19 @@ The role-flip of `/codex-review`: there, Claude builds the plan and Codex critiq
|
|
|
21
21
|
|
|
22
22
|
## Prerequisites (verify once, fast)
|
|
23
23
|
|
|
24
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
25
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
26
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
27
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
28
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
29
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
30
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
31
|
+
precedence, and catalog/access/policy revisions are proved.
|
|
32
|
+
|
|
33
|
+
`scripts/codex-exec.sh` is the transport that decision names, never a
|
|
34
|
+
second router: the wrapper applies the resolved pair and its rollout file
|
|
35
|
+
is the readback the receipt quotes. Echoing a config default is not proof.
|
|
36
|
+
|
|
24
37
|
- Let `scripts/codex-exec.sh` preflight Codex before launch. It enforces the
|
|
25
38
|
exact tested-version allowlist, authentication, platform, and capabilities;
|
|
26
39
|
surface any failure rather than retrying silently.
|
|
@@ -19,6 +19,19 @@ This is a **deliberate, high-stakes tool** — reach for it on auth, data models
|
|
|
19
19
|
|
|
20
20
|
## Prerequisites (verify once, fast)
|
|
21
21
|
|
|
22
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
23
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
24
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
25
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
26
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
27
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
28
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
29
|
+
precedence, and catalog/access/policy revisions are proved.
|
|
30
|
+
|
|
31
|
+
`scripts/codex-exec.sh` is the transport that decision names, never a
|
|
32
|
+
second router: the wrapper applies the resolved pair and its rollout file
|
|
33
|
+
is the readback the receipt quotes. Echoing a config default is not proof.
|
|
34
|
+
|
|
22
35
|
- Let `scripts/codex-exec.sh` preflight Codex before launch. It enforces the
|
|
23
36
|
exact tested-version allowlist, authentication, platform, and capabilities;
|
|
24
37
|
surface any failure to the user rather than retrying silently.
|
|
@@ -86,6 +86,20 @@ Act 1 (grill) complete — plan locked with the user. MAX_ROUNDS=<n>.
|
|
|
86
86
|
Now hand the locked plan to Codex for adversarial review. Same engine, mechanics verified end-to-end (2026-06-04).
|
|
87
87
|
|
|
88
88
|
### Prerequisites (verify once, fast)
|
|
89
|
+
|
|
90
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
91
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
92
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
93
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
94
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
95
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
96
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
97
|
+
precedence, and catalog/access/policy revisions are proved.
|
|
98
|
+
|
|
99
|
+
`scripts/codex-exec.sh` is the transport that decision names, never a
|
|
100
|
+
second router: the wrapper applies the resolved pair and its rollout file
|
|
101
|
+
is the readback the receipt quotes. Echoing a config default is not proof.
|
|
102
|
+
|
|
89
103
|
- Let `scripts/codex-exec.sh` preflight Codex before launch. It enforces the
|
|
90
104
|
exact tested-version allowlist, authentication, platform, and capabilities;
|
|
91
105
|
surface any failure rather than retrying silently.
|
|
@@ -170,6 +170,20 @@ Act 1 (grill-with-docs) complete — plan locked, CONTEXT.md/ADRs updated. MAX_R
|
|
|
170
170
|
Hand the locked plan to Codex for adversarial review. Mechanics verified end-to-end (2026-06-04).
|
|
171
171
|
|
|
172
172
|
### Prerequisites
|
|
173
|
+
|
|
174
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
175
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
176
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
177
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
178
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
179
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
180
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
181
|
+
precedence, and catalog/access/policy revisions are proved.
|
|
182
|
+
|
|
183
|
+
`scripts/codex-exec.sh` is the transport that decision names, never a
|
|
184
|
+
second router: the wrapper applies the resolved pair and its rollout file
|
|
185
|
+
is the readback the receipt quotes. Echoing a config default is not proof.
|
|
186
|
+
|
|
173
187
|
- Let `scripts/codex-exec.sh` preflight Codex before launch. It enforces the
|
|
174
188
|
exact tested-version allowlist, authentication, platform, and capabilities;
|
|
175
189
|
surface any failure rather than retrying silently.
|
|
@@ -18,10 +18,13 @@ Show this to the user, then immediately proceed to Step 2. The user reads and th
|
|
|
18
18
|
|
|
19
19
|
### 2. Spawn sub-agents
|
|
20
20
|
|
|
21
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
22
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
23
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
24
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
25
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
26
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
27
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
25
28
|
precedence, and catalog/access/policy revisions are proved.
|
|
26
29
|
|
|
27
30
|
<!-- mirror-xform:start codex-parallel-subagent-dispatch -->
|
|
@@ -43,10 +43,13 @@ This skill is _informed_ by the project's domain model. The domain language give
|
|
|
43
43
|
|
|
44
44
|
Read the project's domain glossary and any ADRs in the area you're touching first.
|
|
45
45
|
|
|
46
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
47
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
48
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
49
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
50
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
51
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
52
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
50
53
|
precedence, and catalog/access/policy revisions are proved.
|
|
51
54
|
|
|
52
55
|
<!-- mirror-xform:start codex-explorer-dispatch -->
|
|
@@ -109,7 +109,7 @@ node scripts/readiness.mjs check --skill orchestrate-wave --json
|
|
|
109
109
|
Pass only host-supplied inventory through `capabilityAdapter.claude` or `.codex`,
|
|
110
110
|
then call the selector. It returns exactly one target; missing or `unknown` evidence
|
|
111
111
|
degrades A → B → C. A model claim is not evidence; do not emulate a missing primitive.
|
|
112
|
-
Before any spawn, resolve the provider-neutral Routing intent through the shared resolver and spawn guard, then use the active Claude or Codex adapter. Codex contributes only its dated host attestation through `routingAdapters/codex.mjs`; it does not create a second catalog, Access graph, or Routing policy. A detected transport is not authorization. The Dispatch receipt must show requested and applied route, model/effort enforcement, environment precedence on mismatch, and catalog/access/policy revisions. AFK blocks unverified, unauthorized, overridden, unenforced, or silently degraded routes; a Codex host without model and effort selectors blocks differentiated AFK before spawn, and unreachable routes follow policy handoff/inherit/block exactly.
|
|
112
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent block first, otherwise the workflow classifier — and authorize the whole run once through a Dispatch plan whose hash binds every unit, intent, route and reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a Dispatch receipt from the shared spawn guard that carries the authorization id the plan recorded. A detected transport is not authorization; AFK dispatch stops unless requested/applied route, model/effort enforcement, environment precedence, and catalog/access/policy revisions are proved. Before any spawn, resolve the provider-neutral Routing intent through the shared resolver and spawn guard, then use the active Claude or Codex adapter. Codex contributes only its dated host attestation through `routingAdapters/codex.mjs`; it does not create a second catalog, Access graph, or Routing policy. A detected transport is not authorization. The Dispatch receipt must show requested and applied route, model/effort enforcement, environment precedence on mismatch, and catalog/access/policy revisions. AFK blocks unverified, unauthorized, overridden, unenforced, or silently degraded routes; a Codex host without model and effort selectors blocks differentiated AFK before spawn, and unreachable routes follow policy handoff/inherit/block exactly.
|
|
113
113
|
- **Path A:** requires the literal `Workflow` tool, callable and permitted, plus
|
|
114
114
|
individually proven named phases, run identity, runtime output validation,
|
|
115
115
|
journal, and resume. Then read [its recipe](references/dispatch-workflow.md).
|
|
@@ -54,6 +54,15 @@ Reconciliation is never delegated to a subagent.
|
|
|
54
54
|
|
|
55
55
|
## Round 2 — Build
|
|
56
56
|
|
|
57
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
58
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
59
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
60
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
61
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
62
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
63
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
64
|
+
precedence, and catalog/access/policy revisions are proved.
|
|
65
|
+
|
|
57
66
|
For the current reconciled batch, spawn **one builder per slice**, again as one
|
|
58
67
|
concurrent batch joined by an explicit wait. Give each builder the verbatim
|
|
59
68
|
builder contract, its reconciled allowlist, and its required commands. Resolve
|
|
@@ -48,6 +48,15 @@ current reconciled batch, make one `agent()` call per slice with explicit
|
|
|
48
48
|
the reconciled allowlist and required commands in each verbatim builder prompt;
|
|
49
49
|
the main thread still performs `semanticVerify` on every returned report.
|
|
50
50
|
|
|
51
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
52
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
53
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
54
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
55
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
56
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
57
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
58
|
+
precedence, and catalog/access/policy revisions are proved.
|
|
59
|
+
|
|
51
60
|
Before each `agent()` call, resolve its provider-neutral Routing intent and pass
|
|
52
61
|
the decision through the shared spawn guard and active surface adapter. The
|
|
53
62
|
Claude adapter must attest Workflow model/effort precedence in the current
|
|
@@ -11,10 +11,13 @@ Before applying this Core skill, run `node scripts/project-skill-extension.mjs i
|
|
|
11
11
|
Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
|
|
12
12
|
<!-- project-extension:protocol-v1:end -->
|
|
13
13
|
|
|
14
|
-
Before dispatch, resolve a provider-neutral Routing intent
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
Before dispatch, resolve a provider-neutral Routing intent — an explicit intent
|
|
15
|
+
block first, otherwise the workflow classifier — and authorize the whole run
|
|
16
|
+
once through a Dispatch plan whose hash binds every unit, intent, route and
|
|
17
|
+
reason. Dispatch only through `src/lib/routeDispatcher.mjs`, and require a
|
|
18
|
+
Dispatch receipt from the shared spawn guard that carries the authorization id
|
|
19
|
+
the plan recorded. A detected transport is not authorization; AFK dispatch
|
|
20
|
+
stops unless requested/applied route, model/effort enforcement, environment
|
|
18
21
|
precedence, and catalog/access/policy revisions are proved.
|
|
19
22
|
|
|
20
23
|
Spin up a **background agent** to do the research, so you keep working while it reads.
|