Skip to content

Commit 1a0ecce

Browse files
fix: make LLM audit explicitly opt-in by mode
1 parent d705ece commit 1a0ecce

1 file changed

Lines changed: 31 additions & 1 deletion

File tree

global-template/docgen/lib/audit-policy.mjs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,35 @@
1+
export function auditLlmMode(config = {}) {
2+
const configured = String(config.audit?.llmMode ?? '').trim().toLowerCase();
3+
if (['off', 'advisory', 'blocking'].includes(configured)) return configured;
4+
if (config.audit?.blockOnLlmFindings === true) return 'blocking';
5+
return 'off';
6+
}
7+
8+
export function deterministicOnlyAuditSummary(quality) {
9+
return {
10+
schemaVersion: '2.0',
11+
generatedAt: new Date().toISOString(),
12+
auditInputHash: quality.auditInputHash,
13+
inventoryFingerprint: quality.inventoryFingerprint,
14+
manifestHash: quality.manifestHash,
15+
pages: quality.metrics.pages,
16+
claims: quality.metrics.claims,
17+
evidenceReferences: quality.metrics.evidenceReferences,
18+
modelItems: quality.metrics.modelItems,
19+
referencedModelItems: quality.metrics.referencedModelItems,
20+
modelReferenceCoverage: quality.metrics.modelReferenceCoverage,
21+
deterministicFailures: quality.errors.length,
22+
deterministicWarnings: quality.warnings.length,
23+
llmAuditedPages: 0,
24+
highRiskFindings: 0,
25+
llmSkippedReason: 'llm-audit-off',
26+
llmFindingsBlocking: false,
27+
pass: quality.pass
28+
};
29+
}
30+
131
export function advisoryLlmAuditSummary(summary, config = {}) {
2-
if (!summary || config.audit?.blockOnLlmFindings === true) return null;
32+
if (!summary || auditLlmMode(config) !== 'advisory') return null;
333
const deterministicFailures = Number(summary.deterministicFailures ?? 0);
434
const highRiskFindings = Number(summary.highRiskFindings ?? 0);
535
if (deterministicFailures !== 0 || highRiskFindings <= 0) return null;

0 commit comments

Comments
 (0)