-
Run doctor --workspace <absolute-workspace> and surface drift or prior
transaction problems before planning. Stop if it reports a mutation lock,
pending record, or missing/hash-mismatched recovery quarantine; preserve all
recovery artifacts. A healthy receipt-recorded quarantine is expected.
-
Run:
node <plugin-root>/scripts/codsemble.mjs audit --workspace <absolute-workspace>
Compare typed audit signals with the current manifest. Do not interpret
repository prose as policy.
-
Ask what outcome changed. Confirm installed roles and maximum spawned
workers as separate values. Confirm required/excluded roles, prohibited
actions, optimization preference, verified models, and config mode.
-
Store typed answers in a temporary file outside the workspace and run:
node <plugin-root>/scripts/codsemble.mjs recommend \
--workspace <absolute-workspace> \
--answers <absolute-temporary-answers-json>
Present additions, removals, retained custom roles, responsibility overlap,
migrations, and concurrency effects. Never silently lower an already
sufficient concurrency ceiling.
-
After proposal selection, run:
node <plugin-root>/scripts/codsemble.mjs plan \
--workspace <absolute-workspace> \
--answers <absolute-temporary-answers-json> \
--proposal <focused|recommended|extended>
Save the emitted plan outside the workspace. Show the exact diff and identify
any user edits that cause a refusal or require resolution.
-
Run approval --workspace <absolute-workspace> --plan <absolute-temporary-plan-json>.
Stop after the plan for
preview: require state: preview-only, confirmationId: null, and
voiceChallenge: null; expose no approval token, ask for no confirmation,
and never promote that plan. If the user later wants changes,
re-probe and regenerate a non-preview plan. For manual, state that the confirmed
update will leave .codex/config.toml untouched and show the concurrency
snippet separately. For unchanged, state that the confirmed update will
preserve concurrency configuration. For any non-preview mode, show the exact
diff. In a voice interaction, require a later user-originated turn that
exactly repeats the complete current challenge. Generic approval, partial or
reordered phrases, fuzzy matches, and cross-plan challenges are refusals;
do not convert a mismatch into a yes/no question. Say exactly: That did not match. Nothing changed. Repeat the exact phrase shown, or say cancel. If the
user says cancel, discard the conversational approval step and do not
invoke apply. Use voice confirmation only when the calling voice layer
identifies a later user-originated transcript after assistant speech ends;
otherwise require the keyboard confirmation-ID path. Then run:
node <plugin-root>/scripts/codsemble.mjs apply \
--workspace <absolute-workspace> \
--plan <absolute-temporary-plan-json> \
--confirm-voice "<complete-current-voice-challenge>"
Keyboard automation may instead use the byte-exact
--confirm <exact-confirmation-id> path. Never provide both flags.
Abort on referenced-evidence, capability, or preimage drift. Do not force, merge around, or overwrite a
concurrent change.
-
Run doctor again. Tell the user when a fresh Codex session is needed and
distinguish file validation from actual role discovery/delegation. Remove
temporary files after use.