From 8a284a5ab7b1f48d26c26c8370555c4e2e9044f2 Mon Sep 17 00:00:00 2001
From: JSONbored <49853598+JSONbored@users.noreply.github.com>
Date: Tue, 7 Jul 2026 20:12:18 -0700
Subject: [PATCH] chore(review): remove never-wired test-generation dead slice
(#4108)
GITTENSORY_REVIEW_TEST_GENERATION, the review.testGeneration manifest
field, and their resolver/gate functions (resolveTestGenerationManifestToggle,
isTestGenerationEnabled, shouldOfferTestGenerationSpec) had zero callers
anywhere in the review pipeline -- the spec-attachment slice that was
supposed to consume them was never built. Removes the whole orphaned
surface plus its test file and the stale doc mentions in the example
configs and docs pages. The live, ungated MCP test-generation tools
(gittensory_generate_tests, boundary-test-generation) are untouched.
---
.gittensory.yml.example | 15 ----------
.../src/routes/docs.privacy-security.tsx | 1 -
apps/gittensory-ui/src/routes/docs.tuning.tsx | 6 ----
config/examples/gittensory.full.yml | 15 ----------
.../gittensory-engine/src/focus-manifest.ts | 23 ++-------------
src/env.d.ts | 6 ----
src/review/test-generation.ts | 25 -----------------
src/signals/focus-manifest.ts | 15 ++--------
test/unit/config-templates.test.ts | 15 ----------
test/unit/focus-manifest.test.ts | 28 +------------------
test/unit/signals-coverage.test.ts | 2 +-
test/unit/test-generation.test.ts | 22 ---------------
worker-configuration.d.ts | 4 +--
wrangler.jsonc | 5 ----
14 files changed, 9 insertions(+), 173 deletions(-)
delete mode 100644 src/review/test-generation.ts
delete mode 100644 test/unit/test-generation.test.ts
diff --git a/.gittensory.yml.example b/.gittensory.yml.example
index 7e3b499710..61782cebf8 100644
--- a/.gittensory.yml.example
+++ b/.gittensory.yml.example
@@ -484,15 +484,6 @@ review:
# (CI green, gate passing, mergeable-clean, valid linked issue). SURFACE ONLY — never changes the decision.
# auto_merge_summary: false
- # Boundary-safe test-generation advisory (#1972, kill-switch config slice #2189). Bool | null. Default:
- # null/false — byte-identical (no boundary scan runs at all). Requires the operator's
- # GITTENSORY_REVIEW_TEST_GENERATION flag to be on AND this toggle. When both are on, a diff that touches a
- # small, precise set of boundary-condition patterns (off-by-one array/index bounds, null/undefined branches,
- # empty-collection checks) with NO test evidence anywhere in the PR gets an advisory finding plus a
- # LOCAL-execution test-generation action spec (criteria/hints for your OWN agent to scaffold tests with —
- # gittensory never writes or runs test code).
- # test_generation: false
-
# Deterministic label suggestions (#2045). Each rule SUGGESTS a non-scoring label when a PR matches ALL of the
# `when` criteria it sets (at least one is required): when_paths (any changed path matches a glob), title_contains,
# description_contains (both case-insensitive). Suggestions are advisory; they are auto-applied only when the repo's
@@ -913,12 +904,6 @@ settings:
# # fallback for whatever it omits. Only takes effect when inline_comments is already on. Bool or null.
# # Default: null/false.
# finding_categories: false
-# # When true, a diff touching a small, precise set of boundary-condition patterns (off-by-one array/index
-# # bounds, null/undefined branches, empty-collection checks) with no test evidence in the PR gets an
-# # advisory finding plus a LOCAL-execution test-generation action spec (criteria/hints only -- never
-# # generated test code; your own agent scaffolds it). Also requires the operator flag
-# # GITTENSORY_REVIEW_TEST_GENERATION. Bool or null. Default: null/false (byte-identical).
-# test_generation: false
# # How strictly a linked issue must actually be SATISFIED by the PR (distinct from linkedIssuePolicy,
# # which only checks a link EXISTS). off = not evaluated; advisory = surface a finding; block = can
# # become a hard blocker (confirmed-contributor-gated). This is the config knob only — parsed and
diff --git a/apps/gittensory-ui/src/routes/docs.privacy-security.tsx b/apps/gittensory-ui/src/routes/docs.privacy-security.tsx
index 56cdc748a3..6eb7ee1251 100644
--- a/apps/gittensory-ui/src/routes/docs.privacy-security.tsx
+++ b/apps/gittensory-ui/src/routes/docs.privacy-security.tsx
@@ -92,7 +92,6 @@ GITTENSORY_REVIEW_REPUTATION="true" # submitter-reputation spend co
GITTENSORY_REVIEW_UNIFIED_COMMENT="true" # one in-place unified PR comment
GITTENSORY_REVIEW_ENRICHMENT="true" # external analyzer registry (REES) findings
GITTENSORY_REVIEW_INLINE_COMMENTS="true" # diff-anchored inline PR review comments
-GITTENSORY_REVIEW_TEST_GENERATION="true" # boundary-safe test-gen action spec (contributor-run)
GITTENSORY_REVIEW_FIX_HANDOFF="true" # machine-readable fix-handoff block (contributor-run)
GITTENSORY_REVIEW_PLANNER="true" # @gittensory plan on-demand implementation plan
GITTENSORY_REVIEW_SCREENSHOTS="true" # before/after visual capture for UI changes
diff --git a/apps/gittensory-ui/src/routes/docs.tuning.tsx b/apps/gittensory-ui/src/routes/docs.tuning.tsx
index 6b47af0cca..9162c6562e 100644
--- a/apps/gittensory-ui/src/routes/docs.tuning.tsx
+++ b/apps/gittensory-ui/src/routes/docs.tuning.tsx
@@ -183,12 +183,6 @@ function Tuning() {
GITTENSORY_REVIEW_INLINE_COMMENTS — posts AI-review findings as inline
diff-anchored PR review comments instead of (or alongside) the summary comment. Per-PR.
-
GITTENSORY_REVIEW_TEST_GENERATION — offers a boundary-safe local-write action
- spec alongside a missing-test-evidence finding, describing what test cases should exist
- for the repo's detected framework; the contributor's own agent scaffolds and runs the
- tests locally. Per-PR.
- GITTENSORY_REVIEW_FIX_HANDOFF — renders a review finding as a structured,
machine-readable "apply this fix" block for the contributor's own local agent to consume —
diff --git a/config/examples/gittensory.full.yml b/config/examples/gittensory.full.yml
index ac10a39870..e6d3414fef 100644
--- a/config/examples/gittensory.full.yml
+++ b/config/examples/gittensory.full.yml
@@ -497,15 +497,6 @@ review:
# (CI green, gate passing, mergeable-clean, valid linked issue). SURFACE ONLY — never changes the decision.
# auto_merge_summary: false
- # Boundary-safe test-generation advisory (#1972, kill-switch config slice #2189). Bool | null. Default:
- # null/false — byte-identical (no boundary scan runs at all). Requires the operator's
- # GITTENSORY_REVIEW_TEST_GENERATION flag to be on AND this toggle. When both are on, a diff that touches a
- # small, precise set of boundary-condition patterns (off-by-one array/index bounds, null/undefined branches,
- # empty-collection checks) with NO test evidence anywhere in the PR gets an advisory finding plus a
- # LOCAL-execution test-generation action spec (criteria/hints for your OWN agent to scaffold tests with —
- # gittensory never writes or runs test code).
- # test_generation: false
-
# Deterministic label suggestions (#2045). Each rule SUGGESTS a non-scoring label when a PR matches ALL of the
# `when` criteria it sets (at least one is required): when_paths (any changed path matches a glob), title_contains,
# description_contains (both case-insensitive). Suggestions are advisory; they are auto-applied only when the repo's
@@ -926,12 +917,6 @@ settings:
# # fallback for whatever it omits. Only takes effect when inline_comments is already on. Bool or null.
# # Default: null/false.
# finding_categories: false
-# # When true, a diff touching a small, precise set of boundary-condition patterns (off-by-one array/index
-# # bounds, null/undefined branches, empty-collection checks) with no test evidence in the PR gets an
-# # advisory finding plus a LOCAL-execution test-generation action spec (criteria/hints only -- never
-# # generated test code; your own agent scaffolds it). Also requires the operator flag
-# # GITTENSORY_REVIEW_TEST_GENERATION. Bool or null. Default: null/false (byte-identical).
-# test_generation: false
# # How strictly a linked issue must actually be SATISFIED by the PR (distinct from linkedIssuePolicy,
# # which only checks a link EXISTS). off = not evaluated; advisory = surface a finding; block = can
# # become a hard blocker (confirmed-contributor-gated). This is the config knob only — parsed and
diff --git a/packages/gittensory-engine/src/focus-manifest.ts b/packages/gittensory-engine/src/focus-manifest.ts
index 2be9c9c754..dabb2129e8 100644
--- a/packages/gittensory-engine/src/focus-manifest.ts
+++ b/packages/gittensory-engine/src/focus-manifest.ts
@@ -430,17 +430,6 @@ export type FocusManifestReviewConfig = {
* source, same display-only (never touches the AI prompt) shape. null/false (default, absent) = no chip =
* byte-identical behavior. (#1955) */
effortScore: boolean | null;
- /** `review.test_generation` (#1972, kill-switch config slice #2189): when true, a diff that touches a small,
- * precise set of boundary-condition patterns (off-by-one array/index bounds, null/undefined branches,
- * empty-collection checks — see `src/signals/boundary-test-generation.ts`) with NO test evidence anywhere in
- * the PR gets an additional advisory finding plus a boundary-safe LOCAL-execution
- * `gittensory_generate_tests` action spec (criteria/hints only, never generated test code — see
- * `src/mcp/local-write-tools.ts`'s `buildTestGenSpec`). Also gated by the operator's
- * `GITTENSORY_REVIEW_TEST_GENERATION` kill-switch (`src/review/test-generation.ts`'s
- * `isTestGenerationEnabled`) — the caller ANDs both. Purely additive and deterministic; it never changes what
- * `missingTestEvidence` already does. null/false (default, absent) ⇒ byte-identical behavior — no boundary
- * scan runs and no spec is ever built. */
- testGeneration: boolean | null;
/** `review.impact_map` (#2184, config slice of #1971): when true, gates BOTH the deterministic impact-map
* computation (`computeImpactMap`, `src/review/impact-map.ts`) and its rendering as a compact section in
* the unified review comment (#2185) / additive AI-review grounding context (#2186). Deterministic/display
@@ -887,7 +876,7 @@ const EMPTY_MANIFEST: FocusManifest = {
publicNotes: [],
gate: { ...EMPTY_GATE_CONFIG },
settings: {},
- review: { present: false, footerText: null, note: null, fields: {}, enrichmentAnalyzers: {}, profile: null, tone: null, securityFocus: null, inlineComments: null, fixHandoff: null, autoMergeSummary: null, suggestions: null, changedFilesSummary: null, effortScore: null, testGeneration: null, impactMap: null, cultureProfile: null, selftune: null, reviewMemory: null, findingCategories: null, inlineCommentsPerCategory: null, minFindingSeverity: null, maxFindings: { ...EMPTY_MAX_FINDINGS_CONFIG }, commentVerbosity: null, pathInstructions: [], instructions: null, excludePaths: [], pathFilters: [], preMergeChecks: [], autoReview: { ...EMPTY_AUTO_REVIEW_CONFIG }, labelingRules: [], aiModel: { ...EMPTY_SELF_HOST_AI_MODEL_CONFIG }, visual: { ...EMPTY_VISUAL_CONFIG }, linkedIssueSatisfaction: null, sharedConfigSource: null },
+ review: { present: false, footerText: null, note: null, fields: {}, enrichmentAnalyzers: {}, profile: null, tone: null, securityFocus: null, inlineComments: null, fixHandoff: null, autoMergeSummary: null, suggestions: null, changedFilesSummary: null, effortScore: null, impactMap: null, cultureProfile: null, selftune: null, reviewMemory: null, findingCategories: null, inlineCommentsPerCategory: null, minFindingSeverity: null, maxFindings: { ...EMPTY_MAX_FINDINGS_CONFIG }, commentVerbosity: null, pathInstructions: [], instructions: null, excludePaths: [], pathFilters: [], preMergeChecks: [], autoReview: { ...EMPTY_AUTO_REVIEW_CONFIG }, labelingRules: [], aiModel: { ...EMPTY_SELF_HOST_AI_MODEL_CONFIG }, visual: { ...EMPTY_VISUAL_CONFIG }, linkedIssueSatisfaction: null, sharedConfigSource: null },
features: { ...EMPTY_FEATURES_CONFIG },
contentLane: { ...EMPTY_CONTENT_LANE_CONFIG },
repoDocGeneration: { ...EMPTY_REPO_DOC_GENERATION_CONFIG },
@@ -917,7 +906,7 @@ function emptyManifest(source: FocusManifestSource, warnings: string[] = []): Fo
warnings,
gate: { ...EMPTY_GATE_CONFIG },
settings: {},
- review: { present: false, footerText: null, note: null, fields: {}, enrichmentAnalyzers: {}, profile: null, tone: null, securityFocus: null, inlineComments: null, fixHandoff: null, autoMergeSummary: null, suggestions: null, changedFilesSummary: null, effortScore: null, testGeneration: null, impactMap: null, cultureProfile: null, selftune: null, reviewMemory: null, findingCategories: null, inlineCommentsPerCategory: null, minFindingSeverity: null, maxFindings: { ...EMPTY_MAX_FINDINGS_CONFIG }, commentVerbosity: null, pathInstructions: [], instructions: null, excludePaths: [], pathFilters: [], preMergeChecks: [], autoReview: { ...EMPTY_AUTO_REVIEW_CONFIG }, labelingRules: [], aiModel: { ...EMPTY_SELF_HOST_AI_MODEL_CONFIG }, visual: { ...EMPTY_VISUAL_CONFIG }, linkedIssueSatisfaction: null, sharedConfigSource: null },
+ review: { present: false, footerText: null, note: null, fields: {}, enrichmentAnalyzers: {}, profile: null, tone: null, securityFocus: null, inlineComments: null, fixHandoff: null, autoMergeSummary: null, suggestions: null, changedFilesSummary: null, effortScore: null, impactMap: null, cultureProfile: null, selftune: null, reviewMemory: null, findingCategories: null, inlineCommentsPerCategory: null, minFindingSeverity: null, maxFindings: { ...EMPTY_MAX_FINDINGS_CONFIG }, commentVerbosity: null, pathInstructions: [], instructions: null, excludePaths: [], pathFilters: [], preMergeChecks: [], autoReview: { ...EMPTY_AUTO_REVIEW_CONFIG }, labelingRules: [], aiModel: { ...EMPTY_SELF_HOST_AI_MODEL_CONFIG }, visual: { ...EMPTY_VISUAL_CONFIG }, linkedIssueSatisfaction: null, sharedConfigSource: null },
features: { ...EMPTY_FEATURES_CONFIG },
contentLane: { ...EMPTY_CONTENT_LANE_CONFIG },
repoDocGeneration: { ...EMPTY_REPO_DOC_GENERATION_CONFIG },
@@ -1921,7 +1910,7 @@ function parsePublicSafeText(value: JsonValue | undefined, field: string, warnin
* throws; invalid/unsafe values are dropped with warnings.
*/
function parseReviewConfig(value: JsonValue | undefined, warnings: string[]): FocusManifestReviewConfig {
- const empty: FocusManifestReviewConfig = { present: false, footerText: null, note: null, fields: {}, enrichmentAnalyzers: {}, profile: null, tone: null, securityFocus: null, inlineComments: null, fixHandoff: null, autoMergeSummary: null, suggestions: null, changedFilesSummary: null, effortScore: null, testGeneration: null, impactMap: null, cultureProfile: null, selftune: null, reviewMemory: null, findingCategories: null, inlineCommentsPerCategory: null, minFindingSeverity: null, maxFindings: { ...EMPTY_MAX_FINDINGS_CONFIG }, commentVerbosity: null, pathInstructions: [], instructions: null, excludePaths: [], pathFilters: [], preMergeChecks: [], autoReview: { ...EMPTY_AUTO_REVIEW_CONFIG }, labelingRules: [], aiModel: { ...EMPTY_SELF_HOST_AI_MODEL_CONFIG }, visual: { ...EMPTY_VISUAL_CONFIG }, linkedIssueSatisfaction: null, sharedConfigSource: null };
+ const empty: FocusManifestReviewConfig = { present: false, footerText: null, note: null, fields: {}, enrichmentAnalyzers: {}, profile: null, tone: null, securityFocus: null, inlineComments: null, fixHandoff: null, autoMergeSummary: null, suggestions: null, changedFilesSummary: null, effortScore: null, impactMap: null, cultureProfile: null, selftune: null, reviewMemory: null, findingCategories: null, inlineCommentsPerCategory: null, minFindingSeverity: null, maxFindings: { ...EMPTY_MAX_FINDINGS_CONFIG }, commentVerbosity: null, pathInstructions: [], instructions: null, excludePaths: [], pathFilters: [], preMergeChecks: [], autoReview: { ...EMPTY_AUTO_REVIEW_CONFIG }, labelingRules: [], aiModel: { ...EMPTY_SELF_HOST_AI_MODEL_CONFIG }, visual: { ...EMPTY_VISUAL_CONFIG }, linkedIssueSatisfaction: null, sharedConfigSource: null };
if (value === undefined || value === null) return empty;
if (typeof value !== "object" || Array.isArray(value)) {
warnings.push(`Manifest field "review" must be a mapping; ignoring it.`);
@@ -1963,7 +1952,6 @@ function parseReviewConfig(value: JsonValue | undefined, warnings: string[]): Fo
const suggestions = normalizeOptionalBoolean(r.suggestions, "review.suggestions", warnings);
const changedFilesSummary = normalizeOptionalBoolean(r.changed_files_summary, "review.changed_files_summary", warnings);
const effortScore = normalizeOptionalBoolean(r.effort_score, "review.effort_score", warnings);
- const testGeneration = normalizeOptionalBoolean(r.test_generation, "review.test_generation", warnings);
const impactMap = normalizeOptionalBoolean(r.impact_map, "review.impact_map", warnings);
const cultureProfile = normalizeOptionalBoolean(r.culture_profile, "review.culture_profile", warnings);
const selftune = normalizeOptionalBoolean(r.selftune, "review.selftune", warnings);
@@ -2005,7 +1993,6 @@ function parseReviewConfig(value: JsonValue | undefined, warnings: string[]): Fo
suggestions !== null ||
changedFilesSummary !== null ||
effortScore !== null ||
- testGeneration !== null ||
impactMap !== null ||
cultureProfile !== null ||
selftune !== null ||
@@ -2034,7 +2021,6 @@ function parseReviewConfig(value: JsonValue | undefined, warnings: string[]): Fo
aiModel,
visual,
linkedIssueSatisfaction,
- testGeneration,
enrichmentAnalyzers,
profile,
tone,
@@ -2139,7 +2125,6 @@ function computeReviewConfigPresent(review: Omit