docs(openapi): document the /v1/lint/* + /v1/validate/focus-manifest route family in the spec - #9430
Conversation
…route family in the spec
|
Tip ✅ LoopOver review result - approve/merge recommendedReview updated: 2026-07-27 18:38:25 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. Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. Scroll preview
A short scroll-through clip (desktop) — click either thumbnail to open the full animation. Evidence for scroll-linked behavior a single screenshot can't show. 🟩 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.
|
|
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 #9430 +/- ##
==========================================
+ Coverage 75.51% 75.68% +0.17%
==========================================
Files 275 277 +2
Lines 58032 58445 +413
Branches 6209 6216 +7
==========================================
+ Hits 43820 44232 +412
Misses 13942 13942
- Partials 270 271 +1
Flags with carried forward coverage won't be shown. Click here to find out more.
|


What
src/api/routes.tsexposes eight deterministic, source-free advisory-check POST routes under/v1/lint/*and/v1/validate/focus-manifest, each backed by an MCP tool whose Zod output shapealready lives in
src/mcp/server.ts. None of the eight appeared insrc/openapi/spec.ts, so thepublic API document (
GET /openapi.json/apps/loopover-ui/public/openapi.json) silently omitted awhole tested, publicly-callable route family.
POST /v1/lint/pr-textloopover_lint_pr_textPOST /v1/lint/slop-riskloopover_check_slop_riskPOST /v1/lint/improvement-potentialloopover_check_improvement_potentialPOST /v1/lint/open-pr-pressureloopover_simulate_open_pr_pressurePOST /v1/lint/boundary-testsloopover_suggest_boundary_testsPOST /v1/lint/test-evidenceloopover_check_test_evidencePOST /v1/lint/issue-sloploopover_check_issue_slopPOST /v1/validate/focus-manifestloopover_validate_configChange
Following the established
#9309/v1/loop/*pattern exactly:src/openapi/schemas.ts: one…RequestSchema+ one…ResponseSchemaper route (16 total),each
z.object({...}).openapi("Name"), mirroring the top-level keys of the corresponding MCP toolinputSchema/outputSchema. Deeply nested / opaque payloads are left asunknown, exactly as the#9309schemas do.issue-slop's output mirrorscheckSlopRiskOutputSchema(the MCP alias).src/openapi/spec.ts:registry.registerall 16 schemas as components + aregisterPathentry for each of the eight POST routes (request body +
200/400responses).apps/loopover-ui/public/openapi.json: regenerated (pure addition — 738 inserts, 0 deletions).Validation
test/unit/openapi.test.ts(mirrors the#9309block): for all eight routes asserts adocumented POST path with a request body, both request/response components registered, and each
component's top-level property keys equal to the MCP tool's shape keys. Full
openapi.test.tssuite(5 tests, incl. the every-operation-has-summary and templated-path-param guards) passes.
schemas.tsandspec.tsis line+branch covered by the spec-build test.Closes #9308