feat(settings): derive contribution lanes from focus manifests#337
Open
JPette1783 wants to merge 4 commits into
Open
feat(settings): derive contribution lanes from focus manifests#337JPette1783 wants to merge 4 commits into
JPette1783 wants to merge 4 commits into
Conversation
Adds deriveContributionLanes() to compile a FocusManifest into a
standalone ContributionLanes summary that contributors and repo owners
can use to plan work before touching any files.
- src/signals/focus-manifest.ts:
- New ContributionLanePreference type ("preferred"|"neutral"|"discouraged")
- New ContributionLanes type with directPrLane, issueDiscoveryLane,
preferredEntryPaths, discouragedEntryPaths, validationExpectations,
issueEntryGuidance, prEntryGuidance, warnings, summary
- New deriveContributionLanes(manifest) function — deterministic,
no change-set required, all output fields pass isFocusManifestPublicSafe
- Private helper functions for each derivation dimension, each with
explicit public-safe filtering
- test/unit/focus-manifest.test.ts:
- 15 fixture tests in deriveContributionLanes describe block:
absent manifest, wanted paths, issueDiscoveryPolicy encouraged/
discouraged, linkedIssuePolicy required/preferred, blocked paths,
preferred labels, publicNotes, maintainerNotes exclusion, forbidden
language filtering in testExpectations and publicNotes, source
preservation, and full end-to-end fixture
- Property-based sanitizer test (400 iterations, seeded LCG) verifying
no forbidden language appears in any derived lane output field
JSONbored
requested changes
Jun 3, 2026
Owner
JSONbored
left a comment
There was a problem hiding this comment.
@web-dev0521 this needs a rebase before review can continue.
A few notes:
- The contribution-lane derivation is in the right settings/focus-manifest area.
- The branch conflicts in both implementation and tests.
- There are multiple focus-manifest PRs open, so this needs to land against the current shape deliberately.
Required changes:
- Rebase on current
main. - Resolve
src/signals/focus-manifest.tsandtest/unit/focus-manifest.test.ts. - Re-run the focused focus-manifest test file.
Validation expected:
- Focused focus-manifest tests
npm run typecheck- Full CI green
…ution-lanes # Conflicts: # src/signals/focus-manifest.ts # test/unit/focus-manifest.test.ts
Contributor
Author
|
@JSONbored , Updated. |
This was referenced Jun 5, 2026
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
ContributionLanePreference,ContributionLanestypes andderiveContributionLanes()tosrc/signals/focus-manifest.tsCloses: #297
Scope
CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Validation
git diff --checknpm run actionlintnpm run typecheck— cleannpm run test:coveragelocally — 788 pass (1 skipped); pre-existing Windows failures confirmed onmainbefore this branch; coverage stays above 97%npm run test:workersnpm run build:mcpnpm run test:mcp-packnpm run ui:openapi:checknpm run ui:lintnpm run ui:typechecknpm run ui:buildnpm audit --audit-level=moderateIf any required check was skipped, explain why:
src/signals/focus-manifest.tsand its test fileSafety
Notes
Lane derivation logic:
wantedPaths.length > 0directPrLane: "preferred"issueDiscoveryPolicy: "encouraged"directPrLane: "discouraged",issueDiscoveryLane: "preferred"issueDiscoveryPolicy: "discouraged"issueDiscoveryLane: "discouraged"issueDiscoveryPolicy: "neutral"issueDiscoveryLane: "neutral"linkedIssuePolicy: "required"validationExpectationsand "Issues must be linked to a PR before it is opened." toissueEntryGuidancelinkedIssuePolicy: "preferred"testExpectationsisFocusManifestPublicSafefilterpublicNotesprEntryGuidanceafterisFocusManifestPublicSafefiltermaintainerNotesTest coverage (45 total, 16 new):
isFocusManifestPublicSafe