* docs(ci): add Vale CI integration design
Design for adding Vale style linting to GitHub Actions PR checks:
- Block merging on style errors
- Inline annotations + PR summary comments
- Smart config detection per product area
- Shared content resolution script (reusable by other workflows)
- Docker-based Vale execution (matches local setup)
* docs(ci): add Vale CI implementation plan
Detailed step-by-step plan for implementing Vale CI:
- Task 1: Shared content resolution script
- Task 2: Vale check script with config mapping
- Task 3: GitHub Actions workflow
- Task 4: Testing procedure
- Task 5: Documentation updates
- Task 6: Final verification
* feat(ci): add shared content resolution script
Resolves content/shared/* files to their consuming product pages
by searching for matching source: frontmatter. Reusable by Vale,
link-checker, and other workflows that need shared content expansion.
* feat(ci): add Vale check script with config mapping
Maps files to product-specific Vale configs matching lefthook.yml:
- cloud-dedicated, cloud-serverless, v2 use product configs
- Other content uses root .vale.ini
- Non-content uses .vale-instructions.ini
Runs Vale via Docker for version consistency with local dev.
* feat(ci): add Vale style check workflow
Runs Vale on PR changes with product-specific configs:
- Blocks merging on errors
- Shows warnings/suggestions as annotations
- Posts summary comment for humans and AI agents
- Uses Docker for Vale version consistency
* test(ci): add temporary file to test Vale workflow
* test(ci): remove Vale test file
* docs: add Vale CI section to DOCS-TESTING.md
* fix(ci): handle files without trailing newline in vale-check.sh
Add `|| [[ -n "$f" ]]` to while read loops to catch the last line
even when input doesn't end with a newline. This is a common bash
pitfall where `while read` skips the final line without a terminator.
* Delete docs/plans/2026-02-11-vale-ci-design.md
Migrated design to PR description
* Delete docs/plans/2026-02-11-vale-ci-implementation.md
Migrated implementation summary to PR description