- Shipped
- August 7, 2026 at 6:46 AM UTC
- Author
- kamo
- Commit
- 53b2749
The MORTGAGE market page carried fifteen tabs, twelve of them lender config, and several answered the same question in two places: hedging was switched on under Capital Markets while its tolerance lived under Policies, the servicing model and the servicing terms were separate tabs, product enablement carried a channel restriction while channel rules allowed and disallowed channels, and delegation was set in three places with nothing to say which one won. Grouped by the question an operator is actually answering: institution business model, underwriting authority, licensing offerings product enablement, channel rules, risk overlays capital-markets execution posture, pricing policy, capital policy investors investors and their delegation, overlays, delivery, commitment servicing servicing posture, servicing policy automation AI autonomy, per-stage confidence walls partners provider connections, vendor directory Where a setting is genuinely resolved from several places, the page now says so instead of leaving the operator to guess: the authority section states the delegation precedence, channel-rule hints say an investor delivery rule beats them, and the servicing remittance target is labelled as the org default. Every section is built from a new configKit, replacing about a hundred lines of duplicated load/save/error/snackbar plumbing per tab with one section shell, one table, one save bar and one toast per tab. Licences, risk overlays and provider connections gain inline editing — the API always supported it, so fixing a typo used to mean deleting the row. The four investor sub-editors became one component behind a segmented control, so opening an investor costs one request instead of four. Overview gains a lender-profile readout wired to lenderProfile, lenderProfileValidation and changeLog: three endpoints that had existed since the surface was built and that nothing had ever called, so there was no way to see whether a profile validated or which modules it switched on. Links minted against the old slugs are remapped rather than silently landing on Overview, since SettingsView resolves an unknown ?tab= to index 0.