/** * Test Ingester — Tier-2 proposal candidate source. * * Reads two data sources: * * Source A — `.cleo/audit/gates.jsonl`: CLEO evidence gate failure records. * Each line is a JSONL record. Lines where `failCount > 0` produce a * proposal suggesting a flaky-test guard be added for the failing task. * * Source B — `.cleo/coverage-summary.json`: vitest coverage JSON summary. * Written by `vitest --coverage --reporter json-summary`. Lines where * `lines.pct < 80` produce a proposal suggesting coverage improvement. * If the file is absent, Source B returns zero candidates (no error). * * Design principles: * - NO LLM calls. All data comes from structured file reads. * - Title is template-generated. Prompt-injection defence (T1008 §3.6). * - Failures are swallowed: returns empty array + pushes a non-fatal warning * (`W_SENTIENT_INGESTER_DEGRADED`) into the active LAFS envelope (T9773). * * @task T1008 * @see ADR-054 — Sentient Loop Tier-2 */ import type { ProposalCandidate } from '@cleocode/contracts'; /** Relative path from project root to gates.jsonl. */ export declare const GATES_JSONL_PATH: ".cleo/audit/gates.jsonl"; /** Relative path from project root to the coverage summary. */ export declare const COVERAGE_SUMMARY_PATH: ".cleo/coverage-summary.json"; /** Coverage line percentage below which a proposal is emitted. */ export declare const MIN_LINE_COVERAGE_PCT = 80; /** Base weight for all test ingester candidates. */ export declare const TEST_BASE_WEIGHT = 0.5; /** * Run the test ingester against both data sources. * * Merges Source A (gates.jsonl) and Source B (coverage-summary.json) without * duplication. Returns an empty array if both sources yield nothing or if * errors occur (errors are swallowed). * * @param projectRoot - Absolute path to the project root. * @returns Combined ProposalCandidate array (may be empty). */ export declare function runTestIngester(projectRoot: string): ProposalCandidate[]; //# sourceMappingURL=test-ingester.d.ts.map