fix(signals): filter wantedPaths before interpolating focus-area PR guidance - #5987
Conversation
…uidance deriveContributionLanes gated the "Focus changes on maintainer-wanted areas" guidance line on the public-safety-filtered safeWanted list but then interpolated the raw manifest.wantedPaths. A single public-unsafe entry anywhere in wantedPaths made the whole joined sentence fail the all-or-nothing isFocusManifestPublicSafe filter, silently dropping the entire line — including the legitimate safe paths it was meant to surface. Interpolate the filtered safeWanted list instead, mirroring the buildPolicyEntryGuidance fix already in the loopover-engine sibling. Adds a regression test with a mixed safe/unsafe wantedPaths list asserting the safe path still surfaces in prEntryGuidance. Closes JSONbored#5944
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Tip 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 ✅ LoopOver review result - approve/merge recommendedReview updated: 2026-07-15 05:55:24 UTC
✅ Suggested Action - Approve/Merge
Review summary Nits — 3 non-blocking
Linked issue satisfactionAddressed Review context
Contributor next steps
Signal definitions
🧪 Chat with LoopOverAsk LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://gittensory.aethereal.dev/docs/loopover-commands 🧪 Experimental — new and may change. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|
Summary
deriveContributionLanesinsrc/signals/focus-manifest.tsgated the "Focus changes on maintainer-wanted areas" PR-guidance line on the public-safety-filteredsafeWantedlist, but then interpolated the rawmanifest.wantedPathsinto the string it pushed. BecauseprEntryGuidanceis later collapsed through the all-or-nothingisFocusManifestPublicSafefilter, a single public-unsafe entry anywhere inwantedPathsmade the whole joined sentence fail that filter, silently dropping the entire guidance line — including the legitimate safe paths it was meant to surface.The fix interpolates the already-computed
safeWantedlist instead, mirroring the siblingbuildPolicyEntryGuidanceinpackages/loopover-engine/src/focus-manifest.ts, which documents and already applies this exact pattern (and matches the#5945fix at line 692 of this same file). ThesafeWanted.length > 0gate is unchanged; only the interpolated content is now filtered.Closes #5944
Scope
type(scope): short summaryConventional Commit format.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Closes #5944).Validation
git diff --check— cleannpm run actionlint— no workflow changesnpm run typecheck— passes (whole project, against the built@loopover/engine)npm run test:coverage— the changed line is exercised by the new regression test and existing lane tests; the change is a single interpolation expression (manifest.wantedPaths→safeWanted) inside an already-covered branch and adds no new branch, socodecov/patchon the diff is 100%. The covering suitetest/unit/policy-sanitizer.test.ts(67 tests) passes; the new test fails on the pre-fix code (asserts the safe path still surfaces) and passes after.npm run test:workers— unaffected (no worker changes)npm run build:mcp/test:mcp-pack— unaffected (no MCP changes)npm run ui:openapi:check— passes, no drift (pure value change, no schema/route change)npm run ui:lint/ui:typecheck/ui:build— unaffected (no UI app code;src/**triggers only the lightweight OpenAPI drift check)npm audit --audit-level=moderate— no dependency changeswantedPathslist assertsprEntryGuidancestill surfaces the safe path and never contains the unsafe oneIf any required check was skipped, explain why:
src/signals/focus-manifest.tsplus a regression test intest/unit/policy-sanitizer.test.ts. It introduces no workflow, MCP, UI, OpenAPI, or dependency changes, so those gates are unaffected. I additionally rannpm run engine-parity:drift-check(ok — this file has no engine twin undersignals/) and the backend drift checks (manifest,docs,command-reference,selfhost env-reference), all green.Safety
UI Evidencesection — N/A (no UI/frontend/docs/extension changes).Notes
isFocusManifestPublicSafe, so it can no longer be dropped wholesale by one unrelated unsafe entry, and no unsafe path can leak into the rendered sentence.