Files
initiative/specs/031-quality-gates-hygiene/plan.md

4.2 KiB

Implementation Plan: Quality Gates & Code Hygiene

Branch: 031-quality-gates-hygiene | Date: 2026-03-11 | Spec: spec.md Input: Feature specification from /specs/031-quality-gates-hygiene/spec.md

Note: This template is filled in by the /speckit.plan command. See .specify/templates/plan-template.md for the execution workflow.

Summary

Strengthen the project's automated quality gates by: (1) codifying the early-enforcement principle in the constitution and CLAUDE.md, (2) adding Vitest v8 coverage thresholds with auto-ratchet, (3) enabling Biome's cognitive complexity rule and an additional a11y rule, (4) adding dependency auditing to the check script, and (5) cleaning up all blanket biome-ignore comments and reducing a11y suppressions in combatant-row.tsx. All gates enforce at pre-commit via pnpm check.

Technical Context

Language/Version: TypeScript 5.8 (strict mode, verbatimModuleSyntax) Primary Dependencies: Vitest 3.2.4, Biome 2.0, Lefthook, Knip, jscpd. New: @vitest/coverage-v8 Storage: N/A (config/documentation changes only) Testing: Vitest with v8 coverage provider (to be added) Target Platform: macOS/Linux dev environments (pre-commit hooks) Project Type: Web application (React 19 + Vite 6) Performance Goals: N/A — tooling config changes Constraints: All changes must pass pnpm check at pre-commit Scale/Scope: 10 files modified, 5 functions refactored for complexity

Constitution Check

GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.

Principle Status Notes
I. Deterministic Domain Core PASS No domain logic changes. set-initiative.ts fix is a lint-only refactor preserving identical behavior.
II. Layered Architecture PASS No layer boundary changes. Refactors stay within their existing layers.
III. Clarification-First PASS All requirements are explicitly specified by the user. No assumptions needed.
IV. Escalation Gates PASS All items are in the spec.
V. MVP Baseline Language PASS Constitution amendment uses PATCH clarification language, not permanent bans.
VI. No Gameplay Rules PASS No gameplay mechanics involved.
Dev Workflow: automated checks PASS This feature strengthens the check pipeline.
Dev Workflow: CLAUDE.md sync PASS CLAUDE.md will be updated to reflect the early-enforcement principle.
Dev Workflow: README sync PASS No user-facing capability changes — README update not required.

Post-Phase 1 re-check: All gates still pass. The constitution itself is being amended (PATCH), which follows the amendment procedure (propose → update → verify → review → commit).

Project Structure

Documentation (this feature)

specs/031-quality-gates-hygiene/
├── plan.md              # This file
├── research.md          # Phase 0 output — technical research
├── data-model.md        # Phase 1 output — config artifacts
├── quickstart.md        # Phase 1 output — implementation guide
└── tasks.md             # Phase 2 output (via /speckit.tasks)

Source Code (repository root)

# Files modified by this feature:
.specify/memory/constitution.md    # PATCH amendment (early enforcement)
CLAUDE.md                          # Add early-enforcement operational note
biome.json                         # Add complexity + a11y rules
vitest.config.ts                   # Add v8 coverage with thresholds
package.json                       # Add @vitest/coverage-v8, update check script
.gitignore                         # Add coverage/ directory

# Refactored for cognitive complexity:
apps/web/src/adapters/bestiary-adapter.ts
apps/web/src/persistence/encounter-storage.ts
scripts/check-layer-boundaries.mjs
scripts/generate-bestiary-index.mjs

# Refactored for biome-ignore hygiene:
packages/domain/src/set-initiative.ts
apps/web/src/components/combatant-row.tsx

Structure Decision: No new directories or structural changes. All modifications target existing files. The only potential new file is a small StopPropagation wrapper component if the combatant-row refactor warrants extraction.

Complexity Tracking

No constitution violations to justify.