/** * COMP003: mutating-no-rollback * * Flags a mutating capability step whose family has no known native/starter * rollback and no explicit opt-out — the "mutating capability with no * rollback and no explicit opt-out reason" guardrail from epic #551 §7 and * §"Failure modes". * * Each capability declares its rollback disposition via `rollbackPolicy` * (../../../components/capability.ts): `"native"` (a paired `rollback`, e.g. * `cfn-deploy`/`ecs-update-service`/`lambda-deploy`/`code-deploy`), * `"none-by-design"` (nothing to compensate — the build/publish and wait/verify * families, whose outputs are immutable/content-addressed or read-only), or * `"needs-opt-out"` (a mutating verb with no native rollback and no safe undo, * e.g. `s3-sync`/`run-migration`). This rule flags only `"needs-opt-out"` steps * lacking an explicit opt-out. It reads the disposition from the project's * capability registry (`ctx.rollbackPolicies`, built by `chant lint` from the * active lexicons + core starter — the same seam COMP005 uses for * `ctx.knownKinds`), never a hard-coded verb list, so the aws leaves' * dispositions come from the aws lexicon that owns them. * * The opt-out: since the capability interface and schema are out of scope for * this issue (`Step` already has `additionalProperties: true` — see * component.schema.json), a component may attach a `noRollback: ""` * string property directly on the step to declare the compensation gap is * intentional and understood, or supply its own explicit compensation via a * component-level `rollback` field (as the ALB/ECS pilot does with * `rollback-previous`) or a sibling `rollback-previous`/`snapshot-before` step * in the same phase. * * Triggers on: a bare `{ kind: "run-migration", ... }` step with no * `noRollback` reason, no component-level `rollback`, and no sibling * `rollback-previous`/`snapshot-before` step. * OK: `{ kind: "run-migration", ..., noRollback: "forward-only migration, ..." }`, * or a component `rollback` field, or a sibling compensation step. */ import type { ComponentCheck } from "../../component-checks.js"; export declare const comp003MutatingNoRollbackRule: ComponentCheck; //# sourceMappingURL=comp003-mutating-no-rollback.d.ts.map