- Ya
- 26 Juni 2026, 20:34 UTC
- Mwandishi
- Kamo
- Ahadi ya
- ae753fa
The guideline-rule predicate conjunct of §8.1 step-2. Critically, REUSES the reviewed Slice-4 condition evaluator instead of duplicating the safety-critical predicate logic. DRY refactor (non-regressive — evaluator bodies byte-identical): - PredicateCondition interface **************** - MlosAdjustmentCondition + MlosGuidelineRuleCondition both implement it. - AdjustmentConditionEvaluator generalized to PredicateCondition; adjustmentMatches -> allConditionsMatch (List<? extends PredicateCondition>). Slice-4 test re-runs green (9), both prior HIGH fixes intact. New: - MlosGuidelineRule (mlos_guideline_rule): guidelineVersionId FK, productId FK, ruleCode (unique per version), verdict (RuleVerdict ELIGIBLE/INELIGIBLE/STIPULATED §10.3 vocab), requirementKind **************** requirementValue, severity, sourceSectionRef, unconditioned flag. + MlosGuidelineRuleCondition (implements PredicateCondition). - GuidelineRuleEvaluator (ungated @Component) + GuidelineEvaluation + GuidelineOutcome: a rule fires when all its conditions hold (via the shared evaluator); INELIGIBLE iff any fired INELIGIBLE rule; stipulations collected. 8 GuidelineRuleEvaluatorTest green. Adversarially reviewed (2-agent): refactor confirmed byte-identical/non-regressive; fixed MEDIUM over-block hazard — a non-blanket rule with zero conditions now fails SAFE (does not fire) so a half-authored/dangling-FK INELIGIBLE rule can't silently block every borrower (mirrors value-set fail-closed); explicit `unconditioned` flag for intentional blanket rules. NO KamoInitializer code change.