feat(#161): enforce single top-level function in src/public files#166
Merged
Conversation
- Stop build-driven workflows when a src/public file contains zero or multiple top-level functions to prevent accidental public API leaks. - Introduce -OverrideWarning option to allow intentional bypass of this guard during builds, tests, packaging, and releases. - Update documentation to reflect new behavior and usage of -OverrideWarning.
Contributor
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…r handling - Implement Get-NovaReleaseBoundValueOrDefault function for default value retrieval - Add Test-NovaReleaseBoundSwitch function for switch parameter validation - Enhance existing Get-NovaReleaseRequest function with improved parameter handling - Add test for Get-NovaPackageWorkflowModulePath function
There was a problem hiding this comment.
Gates Passed
6 Quality Gates Passed
See analysis details in CodeScene
Quality Gate Profile: Pay Down Tech Debt
Install CodeScene MCP: safeguard and uplift AI-generated code. Catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Code Coverage Gates Passed
Overall Coverage: 100.0%
(required = 95%)
New & Changed Code Coverage: 100%
(required = 100%)
Review details by gate
-
Overall Coverage
- Pass/Fail Reason:
The overall coverage gate was checked for all code and meets the goal: 100.0% covered >= threshold = 95% - Action:
You have 281 files with a sum of 2844 covered and 1 uncovered lines of code.
- Pass/Fail Reason:
-
New & Changed Code Coverage
- Pass/Fail Reason:
New or changed code meets coverage goal: 100% covered >= threshold = 100% - Action:
You modified 21 files, and covered 89 added/modified lines of code.
- Pass/Fail Reason:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
src/publicfile contains zero or multiple top-level functions, and add an explicit override path for maintainers who want to continue intentionally.src/public, which makes it easy to leak helper functions into the public module surface by accident.Affected area
novaCLI or command routingproject.jsonhandlingREADME.md,CONTRIBUTING.md, repository workflow docs)docs/*.html)docs/NovaModuleTools/en-US/*.md)src/resources/example/project.json, workflow dependencies, release tooling)Review guidance
src/private/build/AssertNovaPublicFunctionFileLayout.ps1andsrc/private/build/InvokeNovaBuildWorkflow.ps1; that is the new shared guardrail and the shared build entrypoint it plugs into.src/public/,src/private/shared/InvokeNovaBuildValidation.ps1,src/private/quality/InvokeNovaTestWorkflow.ps1,src/private/release/InvokeNovaReleaseWorkflow.ps1, andsrc/private/cli/.README.md,CHANGELOG.md,docs/NovaModuleTools/en-US/, and the updated/additional test files undertests/.src/publicfile will now fail build-driven workflows by default. That is intentional, and maintainers can bypass it explicitly with-OverrideWarning/--override-warning/-o.Validation
Invoke-NovaBuildTest-NovaBuild./scripts/build/Invoke-ScriptAnalyzerCI.ps1./scripts/build/ci/Invoke-NovaModuleToolsCI.ps1% nova build,% nova test,% nova merge,% nova deploy,% nova publish,% nova release,% nova update,% nova notification, or% nova initas relevant)Validation notes:
Documentation and release follow-up
README.mdreviewed and updated if contributor workflow, architecture, CI, release, or automation changedCONTRIBUTING.mdreviewed and updated if contribution expectations or review guidance changedCHANGELOG.mdreviewed and updated if the change matters to users, maintainers, or contributorsdocs/NovaModuleTools/en-US/help updated if a public command or CLI behavior changeddocs/*.htmlupdated if end-user workflows or examples changedsrc/resources/example/reviewed and updated if the real-world project layout, package model, or upload workflowchanged
Maintainability, compatibility, and risk
Risk, rollout, or rollback notes:
Important
Do not use a public pull request to disclose a vulnerability before coordinated handling.
Use the private reporting path in
SECURITY.mdfor new security issues.