feat(review): enrich issue planning with gittensor type-label taxonomy when enrolled#7516
Conversation
…y when enrolled When a repo has opted into the gittensor plugin (the fleet-wide LOOPOVER_EXPERIMENTAL_GITTENSOR flag AND the repo's own .loopover.yml experimental.gittensor: true, gittensor-wire.ts's existing shouldEnableGittensorForRepo gate), loopover_plan_repo_issues now merges the repo's configured bug/feature/priority type-label taxonomy into the labels it already prefers reusing. Label names only, never any scoring weight. Zero footprint when the plugin is off (the fleet-wide default): the global flag check short-circuits before loading a manifest or resolved settings at all, matching gittensor-wire.ts's own contract. Uses resolveRepositorySettings (DB overlaid with .loopover.yml), not the raw DB-only getRepositorySettings, since typeLabels/ typeLabelsEnabled are config-as-code only (#6443) -- no DB column backs them anymore. Closes #7428
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
e227501 to
3649b59
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7516 +/- ##
==========================================
- Coverage 88.48% 88.46% -0.02%
==========================================
Files 720 720
Lines 75703 75710 +7
Branches 22533 22537 +4
==========================================
- Hits 66983 66979 -4
- Misses 7677 7684 +7
- Partials 1043 1047 +4
Flags with carried forward coverage won't be shown. Click here to find out more.
|
|
Tip ✅ LoopOver review result - approve/merge recommendedReview updated: 2026-07-20 19:56:29 UTC
Review summary Nits — 5 non-blocking
Decision drivers
Context & advisory signals — never blocks the verdict
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://loopover.ai/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
loopover_plan_repo_issues(#7426): when the target repo has opted into the gittensor plugin (LOOPOVER_EXPERIMENTAL_GITTENSORAND the repo's own.loopover.yml experimental.gittensor: true—shouldEnableGittensorForRepo,src/review/gittensor-wire.ts), the repo's configured bug/feature/priority type-label taxonomy is merged into the "existing labels" the prompt already prefers reusing.buildIssuePlanUserPrompt, so the model treats them exactly like any other repo label to prefer reusing.isGittensorPluginEnabled(env)short-circuits before this ever loads a manifest or resolved settings, matchinggittensor-wire.ts's own documented contract ("a self-host instance with no gittensor affiliation has zero footprint from it").resolveRepositorySettings(DB overlaid with.loopover.yml), not the raw DB-onlygetRepositorySettings:typeLabels/typeLabelsEnabledare config-as-code only now (no DB column backs them, per an existing#6443comment insrc/db/repositories.ts) — reading the raw DB row would have silently ignored a repo's actual configured taxonomy and always produced the built-in default.Scope
type(scope): short summaryConventional Commit format, for examplefix(api): restore profile access checks.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Closes #123) — a linked open issue is required for every contributor PR.Validation
git diff --checknpm run typechecknpm run test:coveragelocally — full unsharded suite: 1021 files / 19392 tests passed, 2 skipped. The same 9 pre-existing failures in 3 unrelated miner test files (already tracked separately, currently under independent investigation) reproduce identically regardless of this change. New/changed code insrc/services/issue-plan-draft.tsis 100% branch-covered.npm run selfhost:env-reference:check/npm run ui:openapi:check/npm run docs:drift-check/npm run manifest:drift-check— all clean; no new env vars, no OpenAPI/manifest/MCP-schema surface touched (this PR only changes internal prompt-building logic, no new tool input/output shape).npm run ui:lint/npm run ui:typecheck/npm run ui:build/npm run test:workers— not run; noapps/loopover-ui/**or workers-pool-specific files changed.test/unit/issue-plan-draft.test.ts: zero-footprint when the plugin is off fleet-wide (even with the repo's own manifest opted in), no enrichment when only one of the two gates is on, full default taxonomy merged when both gates are on, no enrichment whentypeLabelsEnabledis explicitly false (config-as-code), a customtypeLabelsoverride taking precedence over thegittensor:*defaults, and theDEFAULT_TYPE_LABELSfallback branch.If any required check was skipped, explain why:
ui:lint/ui:typecheck/ui:build/test:workers: noapps/loopover-ui/**or workers-pool-specific files changed.Safety
isFocusManifestPublicSafecheck unchanged.UI Evidencesection. (N/A — backend-only change.)UI Evidence
N/A — this is a backend-only change with no visible UI, frontend, or docs surface.
Notes
loopover_plan_repo_issuestool (already merged, #7476).Closes #7428