feat(enrichment): cross-file caller-impact / dead-symbol analyzer (#1509) - #1780
feat(enrichment): cross-file caller-impact / dead-symbol analyzer (#1509)#1780dev-miro26 wants to merge 11 commits into
Conversation
|
Caution 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 🛑 Gittensory review result - reject/close recommendedReview updated: 2026-06-30 06:13:11 UTC
🛑 Suggested Action - Reject/Close
Review summary Blockers
Nits — 6 non-blocking
Why this is blocked
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.
|
|
I will fix this conflicts soon |
…ler-impact # Conflicts: # review-enrichment/src/brief.ts # review-enrichment/src/render.ts # review-enrichment/src/types.ts
…ler-impact # Conflicts: # review-enrichment/src/brief.ts
…skip default exports (JSONbored#1509)
JSONbored
left a comment
There was a problem hiding this comment.
Merge conflicts, and blockers in review comment:
This branch has conflicts that must be resolved
Use the [web editor](https://github.com/JSONbored/gittensory/pull/1780/conflicts) or the command line to resolve conflicts before continuing.
review-enrichment/src/brief.ts
Summary
Adds the cross-file caller-impact / dead-symbol analyzer to the review-enrichment service (REES), resolving #1509. It surfaces two cross-file hazards the no-checkout in-prompt reviewer (which only sees the diff) is blind to:
removed-with-callersorchanged-with-callerswith the unchanged caller file paths.index.*,*.d.ts) are skipped because their exports are intentionally unused internally.It reports symbol names + unchanged caller file paths only — never source. Self-contained and fail-safe, matching the
codeowners(#1515) /asset-weight(#1621) / history-analyzer precedent: it uses the request's short-livedgithubTokenfor Code Search and degrades gracefully — no token →[], and a failed / rate-limited search drops only that symbol while the rest of the brief still ships. No engine /src/**change; entirely withinreview-enrichment/(its ownnode:testsuite, outside the main tsc/vitest/Codecov scope).Wired per the issue:
CallerImpactFindingtype +callerImpactkey intypes.ts,scanCallerImpactregistered in thebrief.tsanalyzer registry, and a public-safe block inrender.ts. 18node:testunits cover export-declaration parsing (every form, aliases, re-export-all, anonymous default), removed/changed/moved classification, the dead-on-arrival diff scan (incl. the public-entrypoint skip and$-identifier boundary), the no-token / rate-limit degrade paths, the SSRF repo guard, and rendering.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— full suite green. Nosrc/**changed, so there is nocodecov/patchobligation (the analyzer lives inreview-enrichment/, which Codecov ignores).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 vulnerabilitiesreview-enrichmentsuite green (200 pass, 18 new), covering every branch / fallback / degrade path.If any required check was skipped, explain why:
npm run test:cichain is green on this branch (off currentmain);npm run rees:test(build + sourcemap validation +node:test) also run directly.Safety
safeCodeSpanescaper and is re-sanitized + defanged by the engine before it is spliced.BriefFindings.callerImpact) is extended and unit-tested; no main-repo OpenAPI/MCP surface is touched.UI Evidencesection. — N/A: backend-only (review-enrichment service); no visible UI / frontend / docs / extension change.UI Evidence
N/A — backend-only change to the review-enrichment service; no visible UI, frontend, docs, or extension surface.
Notes
REES_ANALYZERSsetting, exactly like the existing analyzers — keeping this a clean, zero-engine-conflict drop entirely withinreview-enrichment/.main; no base conflict.