Skip to content

fix(scripts): add FooterExcludePaths parameter to frontmatter validation#334

Merged
WilliamBerryiii merged 2 commits intomainfrom
fix/footer-exclude-paths
Jan 28, 2026
Merged

fix(scripts): add FooterExcludePaths parameter to frontmatter validation#334
WilliamBerryiii merged 2 commits intomainfrom
fix/footer-exclude-paths

Conversation

@WilliamBerryiii
Copy link
Copy Markdown
Member

Pull Request

Description

Add FooterExcludePaths parameter to frontmatter validation, enabling per-file exclusion from footer validation without skipping footer checks entirely.

Changes:

  • Add FooterExcludePaths parameter to Test-SingleFileFrontmatter with wildcard pattern support
  • Thread parameter through Invoke-FrontmatterValidation and Validate-MarkdownFrontmatter.ps1
  • Add footer-exclude-paths workflow input with CHANGELOG.md default (comma-separated list support)
  • Normalize path separators for cross-platform pattern matching (forward slashes)
  • Add 6 unit tests covering exclusion logic, non-excluded files, wildcard patterns, and parameter threading

Related Issue(s)

Closes #333

Type of Change

Select all that apply:

Code & Documentation:

  • Bug fix (non-breaking change fixing an issue)
  • New feature (non-breaking change adding functionality)
  • Breaking change (fix or feature causing existing functionality to change)
  • Documentation update

Infrastructure & Configuration:

  • GitHub Actions workflow
  • Linting configuration (markdown, PowerShell, etc.)
  • Security configuration
  • DevContainer configuration
  • Dependency update

AI Artifacts:

  • Reviewed contribution with prompt-builder agent and addressed all feedback
  • Copilot instructions (.github/instructions/*.instructions.md)
  • Copilot prompt (.github/prompts/*.prompt.md)
  • Copilot agent (.github/agents/*.agent.md)

Other:

  • Script/automation (.ps1, .sh, .py)
  • Other (please describe):

Testing

  • Unit tests: 4 new tests in FrontmatterValidation.Tests.ps1 covering Test-SingleFileFrontmatter footer exclusion behavior
  • Integration tests: 2 new tests in Validate-MarkdownFrontmatter.Tests.ps1 verifying parameter threading to module
  • All tests pass: 237 total Pester tests execute successfully
  • PSScriptAnalyzer: Clean analysis with no issues

Checklist

Required Checks

  • Documentation is updated (if applicable)
  • Files follow existing naming conventions
  • Changes are backwards compatible (if applicable)
  • Tests added for new functionality (if applicable)

Required Automated Checks

The following validation commands must pass before merging:

  • Markdown linting: npm run lint:md
  • Spell checking: npm run spell-check
  • Frontmatter validation: npm run lint:frontmatter
  • Link validation: npm run lint:md-links
  • PowerShell analysis: npm run lint:ps

Security Considerations

  • This PR does not contain any sensitive or NDA information
  • Any new dependencies have been reviewed for security issues
  • Security-related scripts follow the principle of least privilege

Additional Notes

The FooterExcludePaths parameter uses PowerShell's -like operator for pattern matching, supporting wildcards (*, ?). Path separators are normalized to forward slashes for consistent cross-platform behavior.

Default workflow configuration excludes CHANGELOG.md from footer validation since changelog files follow their own formatting conventions.

- add FooterExcludePaths parameter to Test-SingleFileFrontmatter
- thread parameter through Invoke-FrontmatterValidation and script
- add footer-exclude-paths workflow input with CHANGELOG.md default
- add unit tests for new parameter behavior

🔧 - Generated by Copilot
@WilliamBerryiii WilliamBerryiii requested a review from a team as a code owner January 28, 2026 01:53
Copilot AI review requested due to automatic review settings January 28, 2026 01:53
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jan 28, 2026

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Jan 28, 2026

Codecov Report

❌ Patch coverage is 75.00000% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 41.04%. Comparing base (c0e48c6) to head (7872e63).

Files with missing lines Patch % Lines
scripts/linting/Validate-MarkdownFrontmatter.ps1 25.00% 3 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #334      +/-   ##
==========================================
+ Coverage   40.64%   41.04%   +0.40%     
==========================================
  Files          15       15              
  Lines        2864     2870       +6     
==========================================
+ Hits         1164     1178      +14     
+ Misses       1700     1692       -8     
Flag Coverage Δ
pester 41.04% <75.00%> (+0.40%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
scripts/linting/Modules/FrontmatterValidation.psm1 96.29% <100.00%> (+0.06%) ⬆️
scripts/linting/Validate-MarkdownFrontmatter.ps1 64.84% <25.00%> (+4.10%) ⬆️

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a FooterExcludePaths parameter to the frontmatter validation system, enabling per-file exclusion from footer validation without disabling all footer checks. This addresses the issue where auto-generated files like CHANGELOG.md cannot maintain the standard Copilot footer but still need frontmatter validation.

Changes:

  • Add FooterExcludePaths parameter with wildcard pattern support to validation functions
  • Thread the parameter through the entire validation pipeline (workflow → script → module)
  • Normalize path separators to forward slashes for cross-platform pattern matching
  • Add 6 comprehensive unit and integration tests covering the new functionality

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
.github/workflows/frontmatter-validation.yml Add footer-exclude-paths workflow input with default CHANGELOG.md and comma-separated list parsing
scripts/linting/Validate-MarkdownFrontmatter.ps1 Add FooterExcludePaths parameter and thread it through all validation calls
scripts/linting/Modules/FrontmatterValidation.psm1 Add FooterExcludePaths to validation functions with path normalization and pattern matching logic
scripts/tests/linting/FrontmatterValidation.Tests.ps1 Add 4 unit tests for footer exclusion patterns and parameter threading
scripts/tests/linting/Validate-MarkdownFrontmatter.Tests.ps1 Add 2 integration tests verifying parameter flow from script to module

Add .PARAMETER help sections for FooterExcludePaths to:
- Test-FrontmatterValidation
- Test-SingleFileFrontmatter
- Invoke-FrontmatterValidation

Addresses PR #334 review feedback.
@WilliamBerryiii WilliamBerryiii merged commit 64db98d into main Jan 28, 2026
16 checks passed
WilliamBerryiii pushed a commit that referenced this pull request Jan 28, 2026
🤖 I have created a release *beep* *boop*
---


##
[2.0.0](hve-core-v1.1.0...hve-core-v2.0.0)
(2026-01-28)


### ⚠ BREAKING CHANGES

* **agents:** add Task Reviewer and expand RPI to 4-phase workflow
([#277](#277))

### ✨ Features

* **agents:** add hve-core-installer agent to extension package
([#297](#297))
([c0e48c6](c0e48c6))
* **agents:** add Task Reviewer and expand RPI to 4-phase workflow
([#277](#277))
([ae76cab](ae76cab))
* **build:** add code coverage reporting to Pester workflow
([#230](#230))
([a34822a](a34822a))
* **docs:** add GOVERNANCE.md for OSSF Silver Badge compliance
([#235](#235))
([b0e752c](b0e752c))
* **docs:** add ROADMAP.md for OSSF Silver badge compliance
([#238](#238))
([4a41c16](4a41c16))
* **mcp:** add MCP server configuration guidance and installer
enhancements ([#225](#225))
([0bce418](0bce418))
* **scripts:** add YAML linting with actionlint
([#234](#234))
([d9301f9](d9301f9))
* **security:** add OpenSSF Scorecard workflow and badge
([#271](#271))
([7c6d788](7c6d788))
* **skills:** add video-to-gif conversion skill with FFmpeg two-pass
optimization ([#247](#247))
([8d65c42](8d65c42))
* **tests:** add Pester tests for LintingHelpers and
Validate-MarkdownFrontmatter
([#197](#197),
[#198](#198))
([#205](#205))
([51ae563](51ae563))


### 🐛 Bug Fixes

* **build:** detect table formatting changes via git diff
([#261](#261))
([985eee0](985eee0))
* **build:** disable MD024 lint rule in CHANGELOG for release-please
([#220](#220))
([971df94](971df94))
* **build:** quote shell variables and group redirects in workflow files
([#299](#299))
([3372509](3372509))
* **build:** resolve scorecard badge and workflow security issues
([#301](#301))
([aeaed13](aeaed13))
* **extension:** remove frontmatter from README and exclude from
markdown linting
([#223](#223))
([4272529](4272529))
* **instructions:** quote applyTo glob pattern for YAML compatibility
([#216](#216))
([085199c](085199c))
* **scripts:** add FooterExcludePaths parameter to frontmatter
validation ([#334](#334))
([64db98d](64db98d))
* **scripts:** add GHSA word and logs/ exclusion to cspell config
([#214](#214))
([5c99b3f](5c99b3f))
* **scripts:** correct type assertions in Invoke-YamlLint.Tests.ps1
([#332](#332))
([af7050d](af7050d))
* **scripts:** eliminate false positives in dependency pinning npm
pattern ([#273](#273))
([ccbdfa3](ccbdfa3))
* **security:** add artifact attestation for signed releases
([#257](#257))
([c52d6e2](c52d6e2))
* standardize markdown footers and complete frontmatter
([#217](#217))
([b4e7556](b4e7556))


### 📚 Documentation

* add OpenSSF Best Practices Passing badge to README
([#239](#239))
([91bc529](91bc529))
* **architecture:** add architecture documentation and value proposition
([#252](#252))
([0e4b02f](0e4b02f))
* **contributing:** add testing requirements for OSSF compliance
([#254](#254))
([4db1a18](4db1a18))
* **docs:** add enterprise status badges to README header
([#270](#270))
([ccb68a4](ccb68a4))
* **security:** add security assurance case and threat model for OSSF
Silver ([#259](#259))
([a390e26](a390e26))


### ♻️ Refactoring

* **application:** wrap execution with try blocks, ensure proper …
([#296](#296))
([35c4417](35c4417))
* **scripts:** extract frontmatter validation to testable module
([#293](#293))
([4e8707e](4e8707e))
* **scripts:** extract pure functions for Pester testability
([#221](#221))
([d40e742](d40e742))


### 🔧 Maintenance

* **deps-dev:** bump cspell from 9.4.0 to 9.6.0 in the npm-dependencies
group ([#208](#208))
([855914b](855914b))
* **deps-dev:** bump cspell from 9.6.0 to 9.6.1 in the npm-dependencies
group ([#294](#294))
([1e45ad6](1e45ad6))
* **deps:** bump actions/setup-node from 6.1.0 to 6.2.0 in the
github-actions group
([#209](#209))
([c4c69e2](c4c69e2))
* **deps:** bump the github-actions group with 4 updates
([#295](#295))
([d8337b8](d8337b8))
* remove step-security/harden-runner from workflows
([#246](#246))
([c5708d8](c5708d8))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: hve-core-release-please[bot] <254602402+hve-core-release-please[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Issue]: Add FooterExcludePaths parameter to frontmatter validation

4 participants