@@ -430,17 +430,6 @@ export type FocusManifestReviewConfig = {
430430 * source, same display-only (never touches the AI prompt) shape. null/false (default, absent) = no chip =
431431 * byte-identical behavior. (#1955) */
432432 effortScore : boolean | null ;
433- /** `review.test_generation` (#1972, kill-switch config slice #2189): when true, a diff that touches a small,
434- * precise set of boundary-condition patterns (off-by-one array/index bounds, null/undefined branches,
435- * empty-collection checks — see `src/signals/boundary-test-generation.ts`) with NO test evidence anywhere in
436- * the PR gets an additional advisory finding plus a boundary-safe LOCAL-execution
437- * `gittensory_generate_tests` action spec (criteria/hints only, never generated test code — see
438- * `src/mcp/local-write-tools.ts`'s `buildTestGenSpec`). Also gated by the operator's
439- * `GITTENSORY_REVIEW_TEST_GENERATION` kill-switch (`src/review/test-generation.ts`'s
440- * `isTestGenerationEnabled`) — the caller ANDs both. Purely additive and deterministic; it never changes what
441- * `missingTestEvidence` already does. null/false (default, absent) ⇒ byte-identical behavior — no boundary
442- * scan runs and no spec is ever built. */
443- testGeneration : boolean | null ;
444433 /** `review.impact_map` (#2184, config slice of #1971): when true, gates BOTH the deterministic impact-map
445434 * computation (`computeImpactMap`, `src/review/impact-map.ts`) and its rendering as a compact section in
446435 * the unified review comment (#2185) / additive AI-review grounding context (#2186). Deterministic/display
@@ -887,7 +876,7 @@ const EMPTY_MANIFEST: FocusManifest = {
887876 publicNotes : [ ] ,
888877 gate : { ...EMPTY_GATE_CONFIG } ,
889878 settings : { } ,
890- 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 } ,
879+ 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 } ,
891880 features : { ...EMPTY_FEATURES_CONFIG } ,
892881 contentLane : { ...EMPTY_CONTENT_LANE_CONFIG } ,
893882 repoDocGeneration : { ...EMPTY_REPO_DOC_GENERATION_CONFIG } ,
@@ -917,7 +906,7 @@ function emptyManifest(source: FocusManifestSource, warnings: string[] = []): Fo
917906 warnings,
918907 gate : { ...EMPTY_GATE_CONFIG } ,
919908 settings : { } ,
920- 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 } ,
909+ 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 } ,
921910 features : { ...EMPTY_FEATURES_CONFIG } ,
922911 contentLane : { ...EMPTY_CONTENT_LANE_CONFIG } ,
923912 repoDocGeneration : { ...EMPTY_REPO_DOC_GENERATION_CONFIG } ,
@@ -1921,7 +1910,7 @@ function parsePublicSafeText(value: JsonValue | undefined, field: string, warnin
19211910 * throws; invalid/unsafe values are dropped with warnings.
19221911 */
19231912function parseReviewConfig ( value : JsonValue | undefined , warnings : string [ ] ) : FocusManifestReviewConfig {
1924- 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 } ;
1913+ 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 } ;
19251914 if ( value === undefined || value === null ) return empty ;
19261915 if ( typeof value !== "object" || Array . isArray ( value ) ) {
19271916 warnings . push ( `Manifest field "review" must be a mapping; ignoring it.` ) ;
@@ -1963,7 +1952,6 @@ function parseReviewConfig(value: JsonValue | undefined, warnings: string[]): Fo
19631952 const suggestions = normalizeOptionalBoolean ( r . suggestions , "review.suggestions" , warnings ) ;
19641953 const changedFilesSummary = normalizeOptionalBoolean ( r . changed_files_summary , "review.changed_files_summary" , warnings ) ;
19651954 const effortScore = normalizeOptionalBoolean ( r . effort_score , "review.effort_score" , warnings ) ;
1966- const testGeneration = normalizeOptionalBoolean ( r . test_generation , "review.test_generation" , warnings ) ;
19671955 const impactMap = normalizeOptionalBoolean ( r . impact_map , "review.impact_map" , warnings ) ;
19681956 const cultureProfile = normalizeOptionalBoolean ( r . culture_profile , "review.culture_profile" , warnings ) ;
19691957 const selftune = normalizeOptionalBoolean ( r . selftune , "review.selftune" , warnings ) ;
@@ -2005,7 +1993,6 @@ function parseReviewConfig(value: JsonValue | undefined, warnings: string[]): Fo
20051993 suggestions !== null ||
20061994 changedFilesSummary !== null ||
20071995 effortScore !== null ||
2008- testGeneration !== null ||
20091996 impactMap !== null ||
20101997 cultureProfile !== null ||
20111998 selftune !== null ||
@@ -2034,7 +2021,6 @@ function parseReviewConfig(value: JsonValue | undefined, warnings: string[]): Fo
20342021 aiModel,
20352022 visual,
20362023 linkedIssueSatisfaction,
2037- testGeneration,
20382024 enrichmentAnalyzers,
20392025 profile,
20402026 tone,
@@ -2139,7 +2125,6 @@ function computeReviewConfigPresent(review: Omit<FocusManifestReviewConfig, "pre
21392125 review . suggestions !== null ||
21402126 review . changedFilesSummary !== null ||
21412127 review . effortScore !== null ||
2142- review . testGeneration !== null ||
21432128 review . impactMap !== null ||
21442129 review . cultureProfile !== null ||
21452130 review . selftune !== null ||
@@ -2184,7 +2169,6 @@ export function overlayReviewConfig(
21842169 suggestions : pickOverlayNullable ( override . suggestions , base . suggestions ) ,
21852170 changedFilesSummary : pickOverlayNullable ( override . changedFilesSummary , base . changedFilesSummary ) ,
21862171 effortScore : pickOverlayNullable ( override . effortScore , base . effortScore ) ,
2187- testGeneration : pickOverlayNullable ( override . testGeneration , base . testGeneration ) ,
21882172 impactMap : pickOverlayNullable ( override . impactMap , base . impactMap ) ,
21892173 cultureProfile : pickOverlayNullable ( override . cultureProfile , base . cultureProfile ) ,
21902174 selftune : pickOverlayNullable ( override . selftune , base . selftune ) ,
@@ -2674,7 +2658,6 @@ export function reviewConfigToJson(review: FocusManifestReviewConfig): JsonValue
26742658 if ( review . suggestions !== null ) out . suggestions = review . suggestions ;
26752659 if ( review . changedFilesSummary !== null ) out . changed_files_summary = review . changedFilesSummary ;
26762660 if ( review . effortScore !== null ) out . effort_score = review . effortScore ;
2677- if ( review . testGeneration !== null ) out . test_generation = review . testGeneration ;
26782661 if ( review . impactMap !== null ) out . impact_map = review . impactMap ;
26792662 if ( review . cultureProfile !== null ) out . culture_profile = review . cultureProfile ;
26802663 if ( review . selftune !== null ) out . selftune = review . selftune ;
0 commit comments