Story Statement
As a contributor trusting pnpm format:check
I want the formatting check to cover the files that live outside workspace packages
So that "the gate checks formatting" means the whole repo, not only apps/* and packages/*
Epic Context
Parent Epic: repo tooling / quality gates (no epic — standalone tech debt)
Status: Todo
Priority: P2 (Could-Have)
Problem
format:check = pnpm prettier:check && pnpm mdlint:check, and:
prettier:check is turbo prettier:check — turbo <task> only runs tasks in workspace members (apps/*, packages/*, tools/*). Files at the repo root and in non-workspace dirs are never prettier-checked: root package.json, turbo.json, .jscpd.json, .claude/**/*.json, scripts/**.
mdlint:check adds markdownlint-check.sh '*.md' — a non-recursive root glob. So root README.md/CLAUDE.md/DEVELOPMENT.md are linted, but .pair/**/*.md (adoption + knowledge base), qa/**, docs/** and scripts/workflows/release/README.md are not.
Pre-existing (write mode had the same blind spot), but #394 made check coverage the whole value of the gate: the adoption/KB markdown edited by nearly every story in this repo is not covered by the check that is supposed to keep formatting out of unrelated diffs.
Likely In Scope
- Extend the root
prettier:check/prettier:fix and mdlint:check/mdlint:fix scripts to cover non-workspace paths (root-level files, scripts/, .pair/, qa/, docs/) — check and fix must stay symmetric by construction
- Absorb the resulting one-time formatting sweep as its own commit (expect a large diff on
.pair/**)
- Keep the
.gitignore delegation working from the repo root cwd
Likely Out of Scope
- CI enforcement of
format:check (see the companion story)
- Any write-mode formatter in the gate (banned — ADL 2026-07-31 +
pnpm gate:composition)
- Changing markdownlint rules
Acceptance Criteria (draft)
- An unformatted
.pair/**/*.md (or root-level JSON/TS) fails pnpm format:check
pnpm format fixes exactly what pnpm format:check reports (same file set)
- Gitignored/generated trees stay excluded (no push blocked by generated output)
Notes
Filed from the independent review of PR #412, where it was raised twice as a Question and answered as "worth its own story". Sizing risk: the one-time sweep over .pair/** is the bulk of the work, not the script change.
Story Statement
As a contributor trusting
pnpm format:checkI want the formatting check to cover the files that live outside workspace packages
So that "the gate checks formatting" means the whole repo, not only
apps/*andpackages/*Epic Context
Parent Epic: repo tooling / quality gates (no epic — standalone tech debt)
Status: Todo
Priority: P2 (Could-Have)
Problem
format:check=pnpm prettier:check && pnpm mdlint:check, and:prettier:checkisturbo prettier:check—turbo <task>only runs tasks in workspace members (apps/*,packages/*,tools/*). Files at the repo root and in non-workspace dirs are never prettier-checked: rootpackage.json,turbo.json,.jscpd.json,.claude/**/*.json,scripts/**.mdlint:checkaddsmarkdownlint-check.sh '*.md'— a non-recursive root glob. So rootREADME.md/CLAUDE.md/DEVELOPMENT.mdare linted, but.pair/**/*.md(adoption + knowledge base),qa/**,docs/**andscripts/workflows/release/README.mdare not.Pre-existing (write mode had the same blind spot), but #394 made check coverage the whole value of the gate: the adoption/KB markdown edited by nearly every story in this repo is not covered by the check that is supposed to keep formatting out of unrelated diffs.
Likely In Scope
prettier:check/prettier:fixandmdlint:check/mdlint:fixscripts to cover non-workspace paths (root-level files,scripts/,.pair/,qa/,docs/) — check and fix must stay symmetric by construction.pair/**).gitignoredelegation working from the repo root cwdLikely Out of Scope
format:check(see the companion story)pnpm gate:composition)Acceptance Criteria (draft)
.pair/**/*.md(or root-level JSON/TS) failspnpm format:checkpnpm formatfixes exactly whatpnpm format:checkreports (same file set)Notes
Filed from the independent review of PR #412, where it was raised twice as a Question and answered as "worth its own story". Sizing risk: the one-time sweep over
.pair/**is the bulk of the work, not the script change.