Implement the 031-quality-gates-hygiene feature that strengthens automated quality gates by adding pnpm audit to the check script, v8 coverage thresholds with per-directory auto-ratchet (domain 96%, adapters 71%, persistence 87%), Biome cognitive complexity enforcement (max 15), and keyboard accessibility for the combatant row, while cleaning up all blanket biome-ignore comments, refactoring 5 overly complex functions into smaller helpers, and codifying the early-enforcement principle in the constitution and CLAUDE.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
81
specs/031-quality-gates-hygiene/plan.md
Normal file
81
specs/031-quality-gates-hygiene/plan.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# Implementation Plan: Quality Gates & Code Hygiene
|
||||
|
||||
**Branch**: `031-quality-gates-hygiene` | **Date**: 2026-03-11 | **Spec**: [spec.md](./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)
|
||||
|
||||
```text
|
||||
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)
|
||||
|
||||
```text
|
||||
# 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.
|
||||
Reference in New Issue
Block a user