feat(mcp): expose maintainer-lane triage via gittensory_get_maintainer_lane - #1456
Conversation
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1456 +/- ##
=======================================
Coverage 95.48% 95.49%
=======================================
Files 202 203 +1
Lines 21920 21931 +11
Branches 7924 7925 +1
=======================================
+ Hits 20931 20942 +11
Misses 413 413
Partials 576 576
🚀 New features to boost your workflow:
|
…r_lane The deterministic maintainer-lane report (`buildMaintainerLaneReport`, src/signals/engine.ts) synthesizes a repo's lane recommendation alongside the configured maintainer cut, queue health, config quality, and contributor-intake health — the maintainer's own-lane triage view. It already powers the repo-intelligence response but had no MCP surface, so agents/CLI couldn't pull it (it is also absent from gittensory_get_repo_context). Add `gittensory_get_maintainer_lane` (maintainer-authenticated via the existing requireRepoAccess, advisory only), mirroring the merged maintainer-noise / outcome-calibration serving (JSONbored#1414 / JSONbored#1174): a thin load-or-compute service (src/services/maintainer-lane.ts) that loads the repo's cached signals + collision report and runs the existing builder, plus the MCP tool registration + output schema + method. Output flows through the existing redactSensitiveForMcp wrapper. No new REST route, no migration, no auth-policy change — purely additive to the MCP surface. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
aa1edb1 to
e840d99
Compare
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review — held for maintainer review
⏸️ Held for maintainer review — Touches a guarded path — held for manual review Review summary
Nits — 7 non-blocking
Review context
Contributor next steps
Signal definitions
Review detailsGenerated from public PR metadata and the diff. Advisory only; deterministic signals remain authoritative. Clean, well-scoped additive MCP surface over the existing `buildMaintainerLaneReport` builder — the same load-then-build pattern as `maintainerNoise` and `outcomeCalibration`, with matching auth (`requireRepoAccess`), output schema, and test coverage. The service layer correctly assembles the same four DB projections the repo-intelligence path uses, delegates to the established builder, and the summary function exercises both arms of the `maintainerCutConfigured` ternary with typed (not fabricated) inputs. No schema change, no migration, no auth-policy change — the diff matches the PR description exactly. Nits (5)
🟩 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 Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
Summary
Tracking / design issue: #1460 — this PR implements it. (Referenced, not auto-closing: a self-authored, unlabeled issue must not carry a
Closeskeyword here, per the linked-issue hard rule +issueDiscoveryPolicy: discouraged; the issue is closed manually with this PR cited.)The deterministic maintainer-lane report (
buildMaintainerLaneReport,src/signals/engine.ts) synthesizes a repo's lane recommendation in the context of the configured maintainer cut, queue health, config quality, and contributor-intake health — the maintainer's own-lane triage view. It already powers the repo-intelligence response but had no MCP surface, so agents/CLI couldn't pull it (it is also absent fromgittensory_get_repo_context, which exposes a different subset).This adds
gittensory_get_maintainer_lane(maintainer-authenticated via the existingrequireRepoAccess, advisory only), mirroring the just-mergedgittensory_get_maintainer_noise(#1414) andgittensory_get_outcome_calibration(#1174): a thin load-or-compute service (src/services/maintainer-lane.ts) that loads the repo's cached signals + collision report and runs the existing builder, plus the MCP tool registration + output schema + method. Output flows through the existingredactSensitiveForMcpwrapper.No linked issue: small, self-evident additive MCP surface over a live builder — same shape and scope as the merged maintainer-noise / outcome-calibration tools. No new REST route, no migration, no auth-policy change.
Scope
type(scope): short summaryConventional Commit format.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Validation
git diff --checknpm run actionlintnpm run typechecknpm run test:coverage—codecov/patch: every changed line and branch insrc/services/maintainer-lane.tsand the newsrc/mcp/server.tslines is covered (verified via lcov, incl. both sides of the cut-configured ternary).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=moderate(0 vulnerabilities)test/unit/maintainer-lane.test.ts, incl. cut-not-configured finding + sanitizer boundary + both summary branches), the MCP call-test intest/unit/mcp-output-schemas.test.ts, and the tool-list assertion intest/integration/api.test.ts.Safety
redactSensitiveForMcp; a test asserts nowallet/hotkey/payout/reward/trust scoreterms leak.requireRepoAccessmaintainer guard (no new auth surface).Notes
Second tool in the maintainer-side MCP series after the merged
gittensory_get_maintainer_noise(#1414); identical blessed pattern (service + tool + output schema + tests). MCP-tool-only — does not touch the deliberately-consolidated/v1/contributors/:login/*surface.🤖 Generated with Claude Code