Part of #4189. Depends on #4194.
Context
gittensory already has a deterministic "this PR probably needed tests" detector — it just doesn't act on it beyond a warning-severity advisory finding today:
// src/signals/focus-manifest.ts:674
if (manifest.testExpectations.length > 0 && testFileCount === 0 && passedValidationCount === 0) {
// ... pushes a "manifest_missing_tests" finding (focus-manifest.ts:678)
}
It only fires when (a) the repo has opted into .gittensory.yml's testExpectations list, and (b) the PR touched zero test-path files, and (c) the PR body carries no validation note. The inputs are computed at the call site: testFileCount = changed files matching isTestPath (src/queue/processors.ts:9011), passedValidationCount = hasValidationNote(pr.body ?? "") ? 1 : 0 (processors.ts:9013). The resulting finding (code: "manifest_missing_tests", src/queue/processors.ts:955 / focus-manifest.ts:792) is currently just advisory text in the review comment — nothing downstream consumes it as a trigger.
Not every PR should get an E2E-test-generation pass (cost, noise), and pure explicit-ask (#4195) undersells the automation gittensory already has. This issue promotes the existing boolean into an actual trigger.
Requirements
Deliverables
Expected outcome
A PR that's genuinely missing test coverage (per gittensory's own existing detector) gets an E2E test suggestion automatically, with zero contributor/maintainer action required — while a PR that already has adequate test evidence never triggers an unnecessary LLM call.
Resources / examples
src/signals/focus-manifest.ts:577-712 (buildFocusManifestGuidance, the trigger condition at line 674)
src/queue/processors.ts:9011-9024, 955 (the call-site inputs and the finding's public-safe policy entry)
Effort
S — the hard part (the detector) already exists; this is a trigger-wiring issue.
Part of #4189. Depends on #4194.
Context
gittensory already has a deterministic "this PR probably needed tests" detector — it just doesn't act on it beyond a warning-severity advisory finding today:
It only fires when (a) the repo has opted into
.gittensory.yml'stestExpectationslist, and (b) the PR touched zero test-path files, and (c) the PR body carries no validation note. The inputs are computed at the call site:testFileCount= changed files matchingisTestPath(src/queue/processors.ts:9011),passedValidationCount=hasValidationNote(pr.body ?? "") ? 1 : 0(processors.ts:9013). The resulting finding (code: "manifest_missing_tests",src/queue/processors.ts:955/focus-manifest.ts:792) is currently just advisory text in the review comment — nothing downstream consumes it as a trigger.Not every PR should get an E2E-test-generation pass (cost, noise), and pure explicit-ask (#4195) undersells the automation gittensory already has. This issue promotes the existing boolean into an actual trigger.
Requirements
manifest_missing_testsfires for a PR andfeatures.e2eTestsis enabled for the repo (feat(review): resolver gate for e2eTests — src/review/e2e-test-gen.ts #4192's gate), automatically invoke the same generation-and-render path feat(review): dispatch wiring for e2eTests in queue/processors.ts #4194 wires up for the explicit command — do not invent a second heuristic; key off the identicaltestExpectations.length > 0 && testFileCount === 0 && passedValidationCount === 0boolean (or filterguidance.findingsforcode === "manifest_missing_tests") rather than re-deriving "PR probably needs tests" from scratch.processors.ts, the same place feat(review): dispatch wiring for e2eTests in queue/processors.ts #4194 resolvese2eTestGenEnabledForReview— wire it as an additional condition on the existing flag, not a parallel code path.@gittensory generate-testscommand (feat(commands): wire @gittensory generate-tests PR-comment command #4195) remains available regardless of whether this signal fired, matching CodeRabbit's own explicit-ask model — auto-trigger and explicit-ask are additive, not exclusive.Deliverables
manifest_missing_testsboolean, no new heuristic.Expected outcome
A PR that's genuinely missing test coverage (per gittensory's own existing detector) gets an E2E test suggestion automatically, with zero contributor/maintainer action required — while a PR that already has adequate test evidence never triggers an unnecessary LLM call.
Resources / examples
src/signals/focus-manifest.ts:577-712(buildFocusManifestGuidance, the trigger condition at line 674)src/queue/processors.ts:9011-9024, 955(the call-site inputs and the finding's public-safe policy entry)Effort
S — the hard part (the detector) already exists; this is a trigger-wiring issue.