← Files NaClARCHIVED FILE
skills/nacl-goal/resources/workflows/nacl-goal/SKILL.md
12.9 KB · Oct 2, 2026 · 00:29 UTC
--- name: nacl-goal description: | Prepare and validate NaCl `/goal` aliases, GOAL_PROOF checks, structured refusals, and preview output for compatibility with `/nacl-goal`. Covers the autonomy-by-default `intake` (single-PR) and `conduct` (multi-cluster, one PR per cluster) orchestrators — Codex previews both but never starts them. --- # NaCl Goal Compatibility For Codex ## Packaged Gateway Binding Read [`the packaged gateway binding`](../../references/workflow-gateway-contract.md). Run its `read-preflight` sequence once for graph-aware goals, then delegate any mutation to the exact BA, SA, TL, migration, or release sequence of the chosen leaf. Preserve project identity, principal/session/worker scope, idempotency, lease/fence/revision, child status/code, and the goal proof/refusal gates. ## Installation mode preflight Before any workflow work, reuse a `project MCP read canary` result from the current invocation or call that tool once when it is available. Continue only when it returns `status=VERIFIED`; a `FAILED` or `BLOCKED` result stops the workflow with its actionable guidance. If the tool is absent or cannot be called, never infer legacy-only mode and do not shell to a package/cache path. Report `BLOCKED`. The separate legacy symlink distribution owns its own fallback; a plugin workflow uses only the project-local MCP read canary and preserves its exact result. Prepare goal-compatible NaCl previews and checks without pretending Codex has Anthropic `/goal` control when the current runtime does not expose it. ## Required References Read these references before composing previews, start instructions, or compatibility reports: - `../references/goal-codex-contract.md` - `../references/verification-vocabulary.md` - `../../nacl-goal/SKILL.md` - `../../nacl-goal/aliases.md` - `../../nacl-goal/refusal-catalog.md` - `../../docs/guides/goal-command.md` - `../../docs/guides/goal-proof-protocol.md` - `../../docs/guides/goal-permissions.md` `feedback_skill_vs_agent_frontmatter`: Codex SKILL.md frontmatter for this package remains `name` and `description` only per `MIGRATION.md`. ## Codex Runtime Boundary Codex may prepare `/nacl-goal` previews, resolve aliases, run local check scripts, and report compatibility status. Codex must not claim Anthropic `/goal` ran unless the active runtime exposes that command and evidence exists. If autonomous start is requested and the runtime has no `/goal` primitive, print the composed interactive fallback and report: ```text Status: BLOCKED Reason: goal-runtime-unavailable ``` If only preview was requested, report: ```text Status: NOT_RUN Reason: preview-only ``` ## Invocation Support the same user-facing intent as the root `/nacl-goal` skill: ```text nacl-goal <alias> # preview only nacl-goal <alias> --start # guarded start, runtime dependent ``` Preview is always the safe default. It consumes no `/goal` turn and performs no irreversible mutation. ## Preview Semantics Compose preview output with: - resolved alias name and canonical form; - tier and budget information from `../../nacl-goal/aliases.md`; - check script path and arguments; - GOAL_PROOF instruction block from the root protocol; - human gates and structured refusal codes when statically detectable; - permission denylist summary; - exact interactive fallback when Codex cannot start `/goal`. Preview may run a check script only as read-only evidence. When no script runs, report `Status: UNVERIFIED`. ## Start Semantics Guard `--start` strictly: - If the active runtime exposes Anthropic `/goal`, print the composed command and require explicit user confirmation before invoking or advising it. - If the active runtime does not expose Anthropic `/goal`, do not simulate it. - Do not write `.tl/goal-runs/`, graph state, tracker state, release state, or production state from preview mode. - Treat dynamic gate detection as runtime behavior; do not claim it is active without implementation evidence. ## Alias Resolution Resolve built-in aliases from `../../nacl-goal/aliases.md`. | Alias | Packaged check reference (preview only) | |---|---| | `wave:<N>` | `wave` | | `fix:<BUG-NNN>` | `fix` | | `validate:module:<MOD-ID>` | `validate` | | `reopened-drain` | `reopened-drain` | Deferred 2.10.1 aliases are `stubs-cleanup:<MOD-ID>`, `migrate-canary`, and `feature:<FR-NNN>`. Do not report them as 2.10.0-ready aliases. The `intake` alias and its packaged check definition (2.10.1+) are autonomy-by-default and Claude-runtime only; Codex previews it but never starts it. When previewing, resolve and surface the branch/push dimensions from `../../nacl-goal/aliases.md` §intake: `branch_mode` (`current` default on a non-production branch | `new` via `--branch=new`), `push_cadence` (`deferred` default in current mode — one push at deliver | `per-atom` | `none`), and the Smart-WIP overlap protocol (uncommitted files from concurrent agents do not refuse the run; overlap with an atom's predicted zone resolves via one consolidated pre-start question). Preserve the new codes `GOAL_BLOCKED_WIP_COLLISION` (the only resumable GOAL_BLOCKED) and the mode-conditional `PLAN_BLOCKED_DIRTY_WORKTREE` triggers exactly as catalogued. On the dev-only path the wrapper records the local verify outcome to `.tl/goal-runs/<run_id>/dev-verified.json` (read by `intake.sh`; absent → `n/a`); under `--push=none` the run ends at verified local commits with no PR and `ci_status: n/a`. Question policy (2.14+, probe-scored since intake-self-diagnosis): the wrapper invokes `/nacl-tl-intake --autonomous --yes --emit-state`. Intake self-diagnoses first (source Step 2a.5 PROBE): atoms the graph alone did not resolve get their hypotheses verified against the actual code/DB and a rubric score (`../../nacl-tl-core/references/intake-scoring.md`; thresholds from the project `config.yaml -> intake.*`). Surface in previews that L2/L3 launch-sanity auto-confirms, probe-scored atoms auto-route on the leading hypothesis when the score clears the routing threshold (envelope gate `medium-confidence-routing`, audit-logged; tracked alternative + blocking fact), only sub-threshold atoms produce ONE consolidated pre-start question — which carries each atom's diagnosis (what was checked, per-hypothesis results, blocking fact) — and hard-refuse triggers (billing / auth / schema migration / destructive ops / product decisions) still refuse before `/goal`; a probe never clears them. `PLAN_BLOCKED_AMBIGUOUS_CLASSIFICATION` now fires only for sub-threshold atoms left unresolved after the probe AND that batch. Mid-run, a BUG atom that `/nacl-tl-fix` proves to be a feature (`exit_reason: L3-feature`) is re-typed, not failed: FEATURE_SMALL re-enters the same run; FEATURE_HEAVY marks the atom `unsupported` (counts toward `unsupported_atoms_count`) and the run continues. The `conduct` alias and its packaged check definition (2.18.0+) are the multi-cluster sibling of `intake` — autonomy-by-default, Claude-runtime only; Codex previews it but never starts it. It is for HETEROGENEOUS goals that span several unrelated modules: where `intake` is unitary and refuses such a goal with `PLAN_BLOCKED_PLAN_SPLIT_REQUIRED`, `conduct` materializes that split as module-aligned CLUSTERS, each shipping its OWN branch and PR, wave-ordered by cross-cluster dependencies. When previewing, resolve from `../../nacl-goal/aliases.md` §conduct: tier L, the per-cluster evidence keys (`clusters_total/shipped/deployed/blocked/skipped`, `prs_opened[]`, `per_cluster_status[]`), and the flags `--max-parallel` (v1 sequential, default 1), `--clusters=` (selective resume), `--single-pr` (degrade to intake). Branches are cut from a shared `integration/goal-<hash>` branch (never committed to as code; never `main`/`master`/`release/*`). Preserve the conduct-scoped codes exactly: `PLAN_BLOCKED_SINGLE_CLUSTER_USE_INTAKE`, `PLAN_BLOCKED_CLUSTER_DAG_CYCLE`, `PLAN_BLOCKED_INCOMPATIBLE_CLUSTER_TARGETS`, the `GOAL_BLOCKED_CLUSTER_*` family (per-cluster failures that do NOT abort siblings), `GOAL_BLOCKED_PARTIAL_WAVE` (the only `resumable: partial` state — `resume --clusters=<ids>` re-runs only the blocked clusters, leaving green PRs untouched), and `GOAL_BLOCKED_INTEGRATION_DRIFTED`. Surface the user's decision rule: one coherent change to one area → `intake`; several unrelated changes across modules → `conduct`. The two refuse into each other (`intake`→`conduct` on a heterogeneous goal; `conduct`→`intake` on a homogeneous one). The bounded per-cluster QA loop (`/nacl-tl-qa`, max 3 iterations; CRITICAL/MAJOR iterate, MINOR defer) is Claude-runtime behavior — preview it but do not execute it. For `fix:<BUG-NNN>`, preserve RED-first and PR-open evidence requirements. L0 or L1 emergency bugs route to refusal or interactive handling, not the ordinary fix loop. For `validate:module:<MOD-ID>`, validator truth comes from graph-backed validation evidence surfaced through GOAL_PROOF. For `reopened-drain`, preserve tracker reachability and emergency or hotfix refusal behavior. Resolve check scripts only from the packaged `../../nacl-goal/checks/` directory. If a declared script is absent from the installed cache, fail closed instead of resolving a source checkout. ## GOAL_PROOF Contract Keep GOAL_PROOF field names and refusal codes stable. GOAL_PROOF is transcript evidence for the evaluator and a check-script output format. It is not a replacement for local verification and is not proof that a goal loop ran. Use the root schema in `../../docs/guides/goal-proof-protocol.md`. ## Refusal Catalog Use `../../nacl-goal/refusal-catalog.md` for the full refusal catalog. Preserve codes exactly, including: - `REFUSE_HUMAN_GATE_BA_SA_HANDOFF` - `REFUSE_HUMAN_GATE_SA_PHASE_CONFIRMATION` - `REFUSE_HOTFIX_JUDGMENT` - `REFUSE_POST_CANARY_RETROSPECTIVE` - `REFUSE_PRODUCTION_MUTATION` - `REFUSE_UNTIERED_CUSTOM_GOAL` - `REFUSE_UNTRUSTED_WORKSPACE` - `REFUSE_HOOKS_DISABLED` - `REFUSE_CONCURRENT_GOAL_LOCKED` - `REFUSE_DANGEROUSLY_SKIP_PERMISSIONS` Refusal handling must fire at preview time wherever statically possible. ## Permissions And Human Gates Never run with, recommend, or bypass: - permission skipping; - disabled hooks; - untrusted workspace state; - mandatory BA-SA handoff, SA phase confirmation, hotfix judgment, or post-canary retrospective gates; - graph, git, tracker, release, or production mutation during preview. If a mandatory gate blocks autonomous operation, report `Status: BLOCKED` or `Status: NOT_RUN` and provide the interactive fallback. ## Capabilities ### May Do - Resolve built-in aliases from `../../nacl-goal/aliases.md`. - Read packaged `/goal` compatibility docs and check scripts. - Produce preview text without starting a goal loop. - Run packaged check scripts locally when the shell is available. - Report compatibility status with the Codex closed vocabulary. ### Must Not Do - Pretend Codex can issue Anthropic `/goal` unless the runtime exposes that command in the current environment. - Suppress mandatory human gates. - Rename GOAL_PROOF fields or refusal codes. - Run with or recommend permission bypass. - Mutate graph, git, tracker, release, or production state during preview. ### Conditional Tools And Actions - Shell execution is conditional on local tool availability and permission. - Graph and tracker reads are conditional on configured tools. - Actual autonomous start is external-runtime dependent. - If actual `/goal` is unavailable, print the exact interactive fallback and report `Status: BLOCKED` or `Status: NOT_RUN`, not success. ### Blocked Or Unverified Reporting - Use `BLOCKED` for missing package resources, missing scripts, unavailable `/goal`, disabled hooks, untrusted workspace, or denied permissions. - Use `UNVERIFIED` when preview can be composed but no check script ran. - Use `NOT_RUN` when `--start` is intentionally not attempted by Codex. - Lead the report with the plain-language reason + copy-paste fallback; the `PLAN_BLOCKED_*` / `REFUSE_*` code is a trailing tag, not the headline, and internal step numbers / `Tier-C` never appear in user-facing text (see the rendering rule in `../../nacl-goal/refusal-catalog.md`). ## Source Comparison - Source Claude skill path: `../../nacl-goal/SKILL.md` ### Preserved Methodology - Two-phase preview then start. - Alias catalog and tier model. - GOAL_PROOF wire format. - Structured refusal catalog. - Permission denylist and human-gate split-mode behavior. - 2.10.0 versus 2.10.1 capability distinction. ### Removed Claude Mechanics - Claude frontmatter fields. - Instructions that assume Task-agent mechanics. - Claims that Codex can directly issue Anthropic `/goal` when no such runtime primitive is available. - Long duplicated guide prose already maintained under `docs/guides/`. - Full refusal-message catalog text when a reference link is enough. ### Codex Replacement Behavior - Prepare and verify goal-compatible commands. - Execute deterministic local checks only when tools are available. - Treat `/goal` start as an external runtime action unless proven available. - Keep GOAL_PROOF and refusal codes as stable protocol references.
SHA-256: c9752290a136b4f07b2cad2dd11ce26be23992c26e67f2bdca588bf045c13fb4