review: collapse signal table into decision drivers + advisory fold - #6083
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 #6083 +/- ##
=======================================
Coverage 95.24% 95.24%
=======================================
Files 595 595
Lines 47035 47062 +27
Branches 15015 15021 +6
=======================================
+ Hits 44797 44824 +27
Misses 1493 1493
Partials 745 745
Flags with carried forward coverage won't be shown. Click here to find out more.
|
|
Caution 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 🛑 LoopOver review result - fixes requiredReview updated: 2026-07-15 09:09:14 UTC
🛑 Suggested Action - Manual Review Review summary Nits — 6 non-blocking
CI checks failing
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.
|
The always-rendered 9-row Signal/Result/Evidence table only ever had two decision-authoritative rows (Code review, Gate result); the other seven already say "No action." / "Advisory only." in their own Evidence/Action text. Split it into an always-visible "Decision drivers" bullet list (only rows marked gates: true, plus the synthetic Code review row) and a collapsed "Context & advisory signals" fold for everything else -- same underlying data, same review.fields visibility, no longer competing for attention with the blockers. Closes #6067
#6067 replaced the always-rendered table's bold "**Code review**" first row with the "Decision drivers" bullet list -- this end-to-end integration test (exercising the real renderer through processGitHubWebhook, not a scoped unit test) still asserted the old bold-table-row text.
The structured fix-context data (path/line/instruction/suggested diff) already existed via buildFixHandoffBlock, but only ever rendered into its own disconnected, all-severities-combined "Fix handoff" collapsible -- never attached to the blockers a reader is actually looking at. Split fixHandoffBlocks by severity: blocker-severity findings now render as their own "Copy AI fix context" collapsible directly under each blocker (still gated by the existing review.fixHandoff toggle); nit-severity findings keep going into the combined "Fix handoff" collapsible as before. The whole-PR "Copy for AI agents" prompt is unchanged and stays available as the aggregate option. Closes #6068
dca092b to
c1f0695
Compare
…follow-up) The unified-comment bridge became the sole PR-comment renderer in JSONbored#6128, which left the unifiedComment ConvergedFeatureKey and its LOOPOVER_REVIEW_UNIFIED_COMMENT env flag declared but functionally inert. Since the drift-check gate requires every declared LOOPOVER_REVIEW_* flag to be documented, and there was no working precedent for a retired-but-still-required flag, this fully removes the key/flag from the resolver, config-as-code examples, self-hosting docs, and env declarations (regenerating worker-configuration.d.ts via cf-typegen) rather than leaving stale references. Also fixes the "signal table" description in docs.how-reviews-work.tsx, left over from the earlier decision-drivers redesign (JSONbored#6083), and a timing-flaky GraphQL single-flight test unrelated to this change but caught by the same full-suite run (crypto.subtle.digest is backed by a real OS thread pool, so two concurrent callers with identical inputs can complete in either order under load; stubbed with a deterministic pure-microtask digest for the one test that exercises the race).
Closes #6067.
Stacked on #6077 (same function, sequential edit — this PR's diff is intentionally scoped to just the table change; GitHub will show only the incremental diff against that branch, and auto-retarget to
mainonce #6077 merges).Summary
UnifiedSignalRowgets a new optionalgates?: booleanfield.panelRowsToSignalRows(the bridge that converts the legacy 4-col panel rows into the unified renderer's rows) setsgates: row.key === "gateResult"— the ONLY row among the panel's 7 that can actually move the verdict; every other row's own Evidence/Action text already says it's advisory (e.g. "No action.", "Advisory only.").review.fields) plus anygates: truerow.<details>containing the same Signal/Result/Evidence table markup as before, scoped to the non-gating rows. Omitted entirely when there's nothing advisory to show.review.fields.<key>visibility toggles are unaffected — filtering still happens on the raw panel rows (by.key) before this split, so a hidden row stays hidden in either bucket.review.comment_verbosity: quiet, matching the old table's own invariant (it was never dropped by quiet either) — only decorative detail (Nits, extraCollapsibles) is.Test plan
npx vitest run test/unit/unified-comment.test.ts test/unit/unified-comment-bridge.test.ts test/unit/signals-coverage.test.ts— 224/224 pass (updated existing table-format assertions to the new bullet format + 3 new tests covering the gates:true split and its edge cases)npx tsc --noEmitcleannpm run docs:drift-check,npm run manifest:drift-check,npm run command-reference:check— passsignalTable/old row shape — none found