/** * COMP005: capability-kind-is-noun * * Flags a step `kind` that names a component rather than an operation — the * "capability-per-component (renamed sprawl)" failure mode from epic #551 * §"Failure modes ... + guardrails": "Tell: capabilities named after nouns." * Every starter-set verb is a verb-phrase describing an operation * (`cfn-deploy`, `publish-image`, `wait-steady-state`, ...); a capability * named after *this* component (or any other discovered component) is * exactly the sprawl the capability model exists to remove — see * docs/components/capabilities.mdx#the-discipline ("A capability describes * an operation, never a component"). * * Detection is structural, not NLP: a step `kind` is flagged when it equals, * or is built from, a discovered component's own kebab-case `name` (e.g. a * `search-service` component composing a `{ kind: "deploy-search-service" }` * or `{ kind: "search-service" }` step) — the concrete, checkable form of * "named after a component" the issue asks for, mirroring how * ../../../components/capability.ts's own docstring defines the discipline * ("never named after the component that happens to use it"). * * Every registered `kind` is excluded from this check unconditionally, * regardless of whether its dash-separated segments happen to overlap a * component's name. The allowlist comes from `ctx.knownKinds` — the kinds the * project's capability registry actually resolves, which `chant lint` builds * from the project's config (core's starter set plus the active lexicons' * leaves, e.g. `cfn-deploy`/`wait-for-stack` when `lexicons: ["aws"]`). Without * this exclusion, a component literally named "stack", "job", "image", or * "host" would falsely flag `wait-for-stack`/`emr-start-job-run`/`publish-image`/ * `load-image-on-host` — a real capability's verb-ness is an established fact of * the registry, not something to re-adjudicate by substring match. When no * registry was resolved (a direct unit test), it falls back to core's starter * set (`CORE_STARTER_KINDS`). * * Triggers on: `{ kind: "search-service" }` or `{ kind: "deploy-search-service" }` * in any component, when "search-service" is a discovered component's name and * neither form is a registered verb. * OK: `{ kind: "cfn-deploy" }`, `{ kind: "ecs-update-service" }`, * `{ kind: "wait-for-stack" }` — verb-named, and/or a registered verb. */ import type { ComponentCheck } from "../../component-checks.js"; export declare const comp005CapabilityKindIsNounRule: ComponentCheck; //# sourceMappingURL=comp005-capability-kind-is-noun.d.ts.map