fix(review): make review.memory a full config-as-code substitute - #4123
fix(review): make review.memory a full config-as-code substitute#4123JSONbored wants to merge 1 commit into
Conversation
shouldApplyReviewMemory previously required GITTENSORY_REVIEW_MEMORY AND the per-repo manifest toggle (a repo could only narrow, never replace, the env var). Match the inlineComments/fixHandoff shape (#4099): the env flag is now an absolute kill-switch, and an explicit review.memory true/false fully controls the feature by itself. review.memory has never had a GITTENSORY_REVIEW_REPOS cutover allowlist, so an unset manifest toggle stays byte-identical to the original always-off default.
|
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 #4123 +/- ##
=======================================
Coverage 93.65% 93.65%
=======================================
Files 384 384
Lines 35865 35866 +1
Branches 13160 13160
=======================================
+ Hits 33589 33590 +1
Misses 1618 1618
Partials 658 658
🚀 New features to boost your workflow:
|
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-08 03:15:36 UTC
⏸️ Suggested Action - Manual Review
Review summary Blockers
Nits — 6 non-blocking
Concerns raised — review before merging
Linked issue satisfactionPartially addressed 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.
|
|
Closing unmerged — see #4101's closing comment for the full evidence. This PR's own gittensory-orb review correctly flagged that it changes no runtime behavior (the required-AND it "fixes" was already equivalent to the kill-switch+decide shape, since reviewMemory never had an allowlist term to bypass, unlike inlineComments/fixHandoff in #4116). An independent adversarial re-verification confirmed the bot's blocker was correct, not a false positive. Shipping this as-is would overclaim a fix that isn't there. |
Summary
shouldApplyReviewMemory(src/review/review-memory-wire.ts) required BOTHGITTENSORY_REVIEW_MEMORYAND an explicitreview.memory: truemanifest opt-in (isReviewMemoryEnabled(env) && manifestReviewMemoryEnabled) — a repo could only ever narrow what the operator already turned on, never fully control the feature through config.inlineComments/fixHandoffshape shipped in feat(review): upgrade inlineComments + fixHandoff to full config-as-code substitutes #4116 (Upgrade inlineComments + fixHandoff from required-AND opt-in to full config-as-code substitutes #4099): the operator'sGITTENSORY_REVIEW_MEMORYflag remains an absolute master kill-switch (off ⇒ always false, regardless of the manifest), and an explicit per-repo.gittensory.ymlreview.memory: true/falsenow fully decides the outcome by itself.review.memoryhas never had aGITTENSORY_REVIEW_REPOScutover allowlist (confirmed: not inCONVERGED_FEATURE_KEYS, andenv.d.ts's doc comment forGITTENSORY_REVIEW_MEMORYnever mentioned one), so an unset manifest toggle staysfalse— byte-identical to the feature's original always-off default.resolveReviewMemoryManifestToggle(src/signals/focus-manifest.ts) already resolved the manifest correctly and needed no change.src/queue/processors.ts(the auto-review pass and the@gittensory resolvecommand handler) compile unchanged against the newmanifestToggle: boolean | undefinedparameter type since they already passresolveReviewMemoryManifestToggle(...)'s resolved boolean through.Scope
type(scope): short summaryConventional Commit format, for examplefix(api): restore profile access checks.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Closes #123) — a linked open issue is required for every contributor PR.Validation
git diff --checknpm run actionlintnpm run typechecknpm run test:coveragelocally;codecov/patchrequires ≥99% coverage of the lines AND branches you changed (aim for 100% on your diff so CI variance does not fail near the threshold). Global coverage is a non-blocking trend with a loose 90% backstop, not the gate.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=moderateRan the full local gate:
npm run test:ci(green — actionlint, migrations/schema-drift/env-reference/observability checks, cf-typegen, typecheck, unshardedtest:coverage,test:workers, MCP/miner build+pack,rees:test,ui:openapi,docs:drift-check,command-reference:check,ui:lint/typecheck/test/build) plusnpm audit --audit-level=moderate(0 vulnerabilities). Confirmed viacoverage/lcov.infothatsrc/review/review-memory-wire.tsis 21/21 lines and 22/22 branches covered (LF:21 LH:21,BRF:22 BRH:22), and the only hunk insrc/queue/processors.tsis a doc-comment update (no coverable lines). Rebased ontoorigin/mainafter the local gate passed; re-rantypecheckplus the targetedreview-memory-wire/review-fix-handoff/worker-entry-boundary/queue.test.ts(review-memory filter) suites post-rebase — all green.If any required check was skipped, explain why:
Safety
ui:openapi:checkconfirms no drift.)UI Evidencesection below with JPG/JPEG or PNG screenshots arranged as organized, captioned, clickable thumbnails. (N/A — backend-only change, no visible UI.)UI Evidence
N/A — backend-only change (
src/review/review-memory-wire.ts,src/queue/processors.tscomment, tests). No visible UI/frontend/docs surface.Notes