<!-- source: openspec/changes/add-specialist-tool-composition/verification.md -->

---
audience:
  - executor
---
# Verification — add-specialist-tool-composition

> Companion to proposal.md / design.md / tasks.md.

## Spec alignment

"Done" means each specialist's archetype + brand resolves to a YAML
palette under `openspec/brands/<slug>/archetypes/<role>/tools.yaml`
(with platform-default fallback under
`openspec/_methodology/specialist-tool-palettes/`); turn dispatch
filters the tool list so the LLM only sees palette-approved tools;
out-of-palette calls are impossible because the model never sees
the unallowed tools; a typed `palette-invalid` error surfaces YAML
syntax / Zod validation failures.

## Hallucination risks

MUST appear:

- `openspec/changes/add-specialist-tool-composition/proposal.md` — new.
- `openspec/changes/add-specialist-tool-composition/design.md` — new.
- `openspec/changes/add-specialist-tool-composition/tasks.md` — new.
- `openspec/changes/add-specialist-tool-composition/verification.md` — new.

MUST NOT appear in the scaffold PR:

- No new files under `packages/muse/src/runtime/` — Wave 2 lands post-ratification.
- No new YAML palette files under `openspec/_methodology/specialist-tool-palettes/` or `openspec/brands/<slug>/archetypes/` — Wave 3 + 4 land post-ratification.
- No edits to `apps/studio/src/app/(auth-walled)/(canvas)/spec/[id]/turn/route.ts` — Wave 5 lands post-ratification.
- No new lint gates under `tools/` — Wave 7 lands post-ratification.
- No edits to `openspec/current/*.md` or `openspec/_root/glossary.md` — Wave 11 amends specs at archive.

## Pattern references

- `openspec/archive/2026-05-20-add-brand-mirroring-schema/` — sibling change establishing the per-brand override pattern this scaffold reuses.
- `openspec/changes/add-muse-translation-mode/` — sibling RAP-1124 slug with similar Muse-runtime + brand-vocabulary touchpoints.
- `openspec/archive/2026-05-20-add-chat-error-taxonomy/` — P5 change supplying the `ErrorKind` union this scaffold extends with `palette-invalid`.
- `openspec/_methodology/` — existing methodology folder hosting platform defaults.
- `openspec/brands/<slug>/identity.md` — existing per-brand identity files; archetypes folder nests alongside.

## Acceptance

### Wave 1 — Scaffold

- Done when: file `openspec/changes/add-specialist-tool-composition/proposal.md` exists.
- Done when: file `openspec/changes/add-specialist-tool-composition/design.md` exists.
- Done when: file `openspec/changes/add-specialist-tool-composition/tasks.md` exists.
- Done when: file `openspec/changes/add-specialist-tool-composition/verification.md` exists.

### Wave 2 — Validation

- Done when: `node tools/check-openspec-refs.mjs` exits 0.

### Wave 3 — Reviewer sign-off

- Reviewer confirms: D-STC-1 per-archetype YAML; specialists inherit; rule-of-three reserved for a future per-specialist override.
- Reviewer confirms: D-STC-2 per-brand override path with platform-default fallback; first-match-wins.
- Reviewer confirms: D-STC-3 hard-block at turn dispatch (no audit-only fallback).
- Reviewer confirms: D-STC-4 process-lifetime LRU cache; dev bypass via `NODE_ENV`.
- Reviewer confirms: D-STC-5 drift gate informational <5 missing, fails ≥5; tool-id gate fails CI on unknown ids.
- Reviewer confirms: D-STC-6 typed `palette-invalid` error tied to the RAP-1094 taxonomy (or `unknown` fallback until RAP-1094 lands).
