- Ya
- 27 Juni 2026, 17:10 UTC
- Mwandishi
- Kamo
- Ahadi ya
- 1e22ab0
Closes the reason-code reachability gap the PriceAssemblyEngine review flagged: a cell miss on EXACTLY one containment dimension now becomes INELIGIBLE with its specific ECOA principal reason (FICO_BELOW_MIN / STATE_NOT_ELIGIBLE / PROPERTY_TYPE_NOT_ELIGIBLE / UNITS_NOT_ELIGIBLE / **************** instead of collapsing to generic NO_COVERAGE — making the 9 unreachable CELL codes reachable. Multi-dimensional / ambiguous misses, and numeric catalog gaps (FICO above a ceiling or between bands; a loan amount between disjoint bands), correctly stay NO_COVERAGE (a §6.6 coverage defect, never a borrower denial). Pure substrate — no live service consumes the matcher yet; no schema change, no KamoInitializer run. - EligibilityResult: carries the principal MlosAdverseActionReasonCode (the matcher owns it — only it holds the dimensional context). The reason-less 2-arg ineligible factory is REMOVED so reasonCode is null iff ELIGIBLE — the MlosPricedProductResult @PrePersist invariant holds by construction for any factory-built result. - EligibilityCellMatcher: failedDims + relax-one-dimension attributeNoCoverage; direction (BELOW/ABOVE/GAP) computed ONLY over the sole-on-that-dimension failers (not the whole matrix) so a too-large loan on disjoint bands is never mislabeled BELOW_MIN, and a FICO above-ceiling/gap is a coverage gap, not a false "score too low". Substrate contract documented: one true disqualifier; the LOE-Core consumer re-attributes the up-to-4 NOAA reasons. - PriceAssemblyEngine: additive reasonOr(cell, fallback) — prefers the matcher's owned code; cellReasonCode(matrixType) kept as the defensive raw-result fallback. 2-agent adversarial review → FIX_THEN_SHIP; applied both must-fixes (loan-amount & FICO direction mislabels, each proven with a worked example) + should-fixes (totalize the record invariant; substrate-contract + direction docs). 19 matcher + 33 engine tests green (89 catalog tests green).