First child of T-89. Codifies "don't make coverage worse" as a durable pre-push contract before any test-writing children land. - pubspec.yaml: new `coverage_floor: 34` key. Single source of truth for the floor; ratchets up only. - ci/coverage_gate.sh: parses coverage/lcov.info (LH/LF), reads the floor from pubspec.yaml, exits non-zero if integer-truncated measured % drops below it. Self-contained awk parser — no `lcov` CLI dependency. - ci/test.sh: flutter test now runs with --coverage, so the gate reads fresh data without an extra test invocation. Wall time delta is small and stays inside the < 90 s pre-push budget (D-29). - Makefile: new `coverage-gate` target wires the script in; `push-check` adds it as a dependency. The .githooks/pre-push hook (already wired) picks this up automatically. - .gitignore: ignore /coverage/ wholesale; the floor lives in pubspec.yaml, nothing under coverage/ is committed. Decision recorded as D-66 (decisions/testing.md). End target is 95%; reaching it is tracked as the rest of T-89's children. Co-Authored-By: Claude <noreply@anthropic.com>
112 lines
2.6 KiB
Plaintext
112 lines
2.6 KiB
Plaintext
# -- macOS sandbox (machine-specific paths; template is committed) ------
|
|
/macos/Runner/DebugProfile.entitlements
|
|
|
|
# -- Flutter / Dart (single package at repo root) -----------------------
|
|
/.dart_tool/
|
|
/.packages
|
|
/.flutter-plugins
|
|
/.flutter-plugins-dependencies
|
|
/build/
|
|
/.idea/
|
|
/.vscode/
|
|
/*.iml
|
|
/ios/Pods/
|
|
/macos/Pods/
|
|
/windows/flutter/ephemeral/
|
|
/linux/flutter/ephemeral/
|
|
/macos/Flutter/ephemeral/
|
|
/bin/clide
|
|
/bin/clide.exe
|
|
# pubspec.lock is committed (supply-chain policy).
|
|
|
|
# UI harness (Playwright) — npm + output artefacts.
|
|
tools/ui/node_modules/
|
|
tools/ui/out/
|
|
tools/ui/test-results/
|
|
tools/ui/playwright-report/
|
|
tools/ui/.serve.pid
|
|
|
|
# -- ptyc (C supporter tool) --------------------------------------------
|
|
/ptyc/bin/
|
|
/ptyc/*.o
|
|
|
|
# -- dugite-native (bundled git, downloaded at build time) ---------------
|
|
/native/dugite/
|
|
|
|
# -- dart doc output (generated by `dart doc`, uploaded as CI artefact) -
|
|
/doc/
|
|
|
|
# -- coverage output (regenerated by every `flutter test --coverage`).
|
|
# Floor lives in pubspec.yaml `coverage_floor:`; nothing under
|
|
# coverage/ is committed.
|
|
/coverage/
|
|
|
|
# -- Test, coverage, profile output ------------------------------------
|
|
*.test
|
|
*.out
|
|
*.prof
|
|
*.pprof
|
|
coverage.*
|
|
/tmp/
|
|
|
|
# Alchemist golden-test failure artefacts (diff images written when a
|
|
# pixel-compare fails locally; the committed fixtures live under
|
|
# app/test/goldens/goldens/{ci,linux}/).
|
|
test/goldens/failures/
|
|
|
|
# -- pql per-repo state (index + planning DB, rebuilt from markdown) ----
|
|
/.pql/*
|
|
!/.pql/pql-plan.json
|
|
|
|
# -- SQLite index files (defensive; should never land at repo root) ----
|
|
*.sqlite
|
|
*.sqlite-journal
|
|
*.sqlite-wal
|
|
*.sqlite-shm
|
|
*.db
|
|
|
|
# -- Editor / IDE ------------------------------------------------------
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
|
|
# -- OS cruft ----------------------------------------------------------
|
|
.DS_Store
|
|
._*
|
|
Thumbs.db
|
|
|
|
# -- Secrets -----------------------------------------------------------
|
|
.env
|
|
.env.local
|
|
.env.*.local
|
|
*-credentials.md
|
|
|
|
# -- Claude Code — user-specific settings only; project-level settings
|
|
# and skills are committed
|
|
.claude/settings.local.json
|
|
|
|
# -- Legacy Python clide (under legacy/, pre-dating the Flutter rebuild).
|
|
# Narrowly scoped so repo-root ignores stay focused on the current
|
|
# toolchain.
|
|
legacy/.venv/
|
|
legacy/.ruff_cache/
|
|
legacy/**/__pycache__/
|
|
legacy/**/*.py[cod]
|
|
legacy/**/*$py.class
|
|
legacy/**/.pytest_cache/
|
|
legacy/**/.mypy_cache/
|
|
legacy/**/.ruff_cache/
|
|
legacy/**/*.egg-info/
|
|
legacy/**/htmlcov/
|
|
legacy/**/.coverage
|
|
legacy/**/.coverage.*
|
|
.clide/settings.yaml
|
|
.claude/skills/pql/
|
|
|
|
# frame0-wireframe local ID ↔ Frame0 ID mapping; per-machine state.
|
|
*.idmap.json
|
|
.pql/*
|
|
!.pql/pql-plan.json
|
|
!.pql/hooks/
|