36 lines
1.3 KiB
Markdown
36 lines
1.3 KiB
Markdown
# Data Model: Quality Gates & Code Hygiene
|
|
|
|
**Feature**: 031-quality-gates-hygiene
|
|
**Date**: 2026-03-11
|
|
|
|
## Overview
|
|
|
|
This feature has no new domain entities. It modifies configuration files, documentation, and refactors existing code for lint compliance. No data model changes.
|
|
|
|
## Configuration Artifacts
|
|
|
|
### Vitest Coverage Config (vitest.config.ts)
|
|
|
|
New `test.coverage` block:
|
|
- `provider`: "v8"
|
|
- `enabled`: true
|
|
- `thresholds.lines`: 70 (initial, auto-ratchets)
|
|
- `thresholds.branches`: 60 (initial, auto-ratchets)
|
|
- `thresholds.autoUpdate`: true
|
|
|
|
### Biome Config (biome.json)
|
|
|
|
New rules under `linter.rules`:
|
|
- `complexity.noExcessiveCognitiveComplexity`: error, maxAllowedComplexity: 15
|
|
- `a11y.noNoninteractiveElementInteractions`: error
|
|
|
|
### Check Script (package.json)
|
|
|
|
Updated `check` script adds `pnpm audit --audit-level=high` step.
|
|
|
|
## New Component
|
|
|
|
### StopPropagation Wrapper (apps/web/src/components/)
|
|
|
|
A small presentational component that wraps children in a `<div>` with `onClickCapture` to stop propagation, replacing the current pattern of `<div onClick={e => e.stopPropagation()}>` that requires biome-ignore comments. Exact implementation TBD during task execution — alternatives include using `role="presentation"` or restructuring the click handling logic in the parent row.
|