15 lines
954 B
TypeScript
15 lines
954 B
TypeScript
import type { PolicyEvaluationResult } from './policy-evaluation';
|
|
|
|
/** Read-time reporting contract; persisted evaluator evidence remains unchanged. */
|
|
export function policyComparisonDisposition(result: PolicyEvaluationResult): 'misconfigured' | 'not-configured' | undefined {
|
|
const { baseline, actual, relation } = result.comparator;
|
|
if (result.baselineState !== 'explicit-recommendation' || !baseline || baseline.kind === 'none'
|
|
|| (baseline.kind === 'text' && !baseline.value.trim())
|
|
|| result.diagnosticCodes.includes('policy-evaluation-baseline-consensus-conflict')
|
|
|| result.classification !== 'confirmed_configured_deviation'
|
|
|| !['different', 'weaker'].includes(relation)) return undefined;
|
|
if (result.customerState === 'missing' && (!actual || actual.kind === 'none')) return 'not-configured';
|
|
if (result.customerState === 'configured' && actual && actual.kind !== 'none') return 'misconfigured';
|
|
return undefined;
|
|
}
|