feat(review): add fix-handoff block renderer + follow-up-issue MCP spec - #3834
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | f527b49 | Commit Preview URL Branch Preview URL |
Jul 06 2026, 03:02 PM |
|
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 #3834 +/- ##
==========================================
- Coverage 93.41% 93.41% -0.01%
==========================================
Files 326 327 +1
Lines 32887 32879 -8
Branches 12044 12044
==========================================
- Hits 30723 30715 -8
Misses 1530 1530
Partials 634 634
🚀 New features to boost your workflow:
|
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-06 14:49:51 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 5 non-blocking
Concerns raised — review before merging
Review context
Contributor next steps
Signal definitions
🟩 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.
|
Adds the render slice of #1962 (#2175): a boundary-safe, content-only renderer that turns a review finding into a structured "apply this fix" block for a contributor's own local agent to consume -- path/line/ severity/instruction plus an optional suggested change, a machine- readable HTML-comment marker, and the shared no-cloud-write boundary text. A finding with no commentable line still yields a valid path-only block. No server-side write, no execution; pairs with the already- shipped review.fixHandoff config/gate slice in src/review/fix-handoff.ts. Also adds a follow-up-issue action spec builder (#2177) for deferred review findings -- composes a bounded, public-safe title/body from a single finding and delegates to the existing file_issue local-write spec, so a maintainer can hand a contributor's agent "file this as a tracked issue" without a new write path. Optional point-bearing label support. Exposes a new gittensory_file_follow_up_issue MCP tool. Documents the GITTENSORY_REVIEW_FIX_HANDOFF flag in src/env.d.ts and the docs pages (a gap left by the config-slice PR). Both slices are advisory/content-only and never touch gate disposition.
d2a9a99 to
f527b49
Compare
Summary
src/review/fix-handoff-render.ts) that turns a single review finding into a structured "apply this fix" block for a contributor's own local agent to consume -- path/line/severity/instruction plus an optional suggested change, a machine-readable HTML-comment marker, and the shared no-cloud-write boundary text. A finding with no commentable line still yields a valid path-only block (mirrors the existingline: 0path-only sentinel used byreview/safety.ts/review/secrets-scan.ts). No server-side write, no execution.buildFileIssueSpeclocal-write spec, exposed as a newgittensory_file_follow_up_issueMCP tool. Optional point-bearing label support (empty-label branch when omitted).GITTENSORY_REVIEW_FIX_HANDOFFfeature flag (the config/gate slice for feat(config): add review.fixHandoff toggle (default off) for fix-handoff blocks #2176 merged separately in feat(config): add review.fixHandoff toggle (default off) for fix-handoff blocks (#2176) #3824) insrc/env.d.tsand the docs pages, closing a docs-drift gap that PR left open.Closes #2175. #2177 was already marked closed by #3836 (an earlier, unwired implementation); this PR supersedes it with the actual live, MCP-wired version -- see Notes. Advances #1962 (not closed -- this PR covers the render + follow-up-issue slices only; the config/gate slice already shipped in #3824).
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:coveragelocally -- 100% branch coverage on both changed source files (src/review/fix-handoff-render.ts,src/mcp/local-write-tools.ts)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=moderateSafety
gittensory_file_follow_up_issueMCP tool, tested via the MCP client harness intest/unit/mcp-write-tools.test.ts.)UI Evidencesection below. (N/A -- text-only docs additions, no visual/layout change.)Notes
src/review/fix-handoff.tsis already taken by the merged feat(config): add review.fixHandoff toggle (default off) for fix-handoff blocks #2176 config/gate slice (isFixHandoffEnabled/shouldEmitFixHandoff), so this PR's renderer lives atsrc/review/fix-handoff-render.tsinstead -- a caller wires the two together by callingshouldEmitFixHandoffbefore invokingbuildFixHandoffBlock.buildFollowUpIssueSpecstrips any embedded HTML-comment marker or fenced code block from the finding text before composing the issue body, since a follow-up issue is read by a human triaging a backlog, not a harness expecting the fix-handoff marker.