File-level parked is emergent from Product Decisions
Status: accepted Date: 2026-07-09 Phase 9 demotes file-levelparked from an exclusive workflow primary to a derived file state. Per-product time-based prerequisites remain the authority; Funding Queue semantics (callback date, tags) are sourced from that derived layer.
Decision
- Parked is emergent only. A file-level
parkedpresentation appears if and only if:- no Product Decision is in an operator-actionable status (
qualified,qualified_conditional, ormanual_review), and - at least one Product Decision carries a time-based prerequisite (e.g. seasoning, recent credit activity, thin-file wait).
- no Product Decision is in an operator-actionable status (
- Cross-product non-exclusivity applies. If
term_loan,mca, orblocis actionable whilecard_stackingis blocked only by a time-based prerequisite, the file is not parked — the actionable product(s) proceed. Cards’ prerequisite still surfaces on that product’s row. - Funding Queue keeps callback-date / tag behavior, but those fields are derived from the Product Decision prerequisites (and any operator park overrides), not from a router that erases other primaries.
- Per-product “why” (reasons + prerequisites visible on each product row — tooltip or inline) ships in Phase 9e as part of the per-product verdict panel. That is in scope for Phase 9, not a follow-up initiative:
ProductDecision.reasons/prerequisitesexist so operators can see e.g. “too many newly opened accounts / not enough revolving history” on cards even when another product is qualified. Exact chrome (tooltip vs always-visible) is a 9e UX choice.
Context
Todayparked is a file-level workflow.primaryPaths value that behaves like a soft veto. Seasoning and thin-file waits are often cards problems while TL or Established can still be actionable — a file-level parked primary re-introduces the exclusivity Phase 9 is removing for credit-repair (ADR-0004). The design doc already required parked-as-derived; this ADR locks the emergence rule and confirms reason visibility belongs in 9e.
Considered options
- A — Emergent only (accepted). File parked iff nothing actionable and ≥1 time-based prerequisite.
- B — Per-product only; never a file-level parked primary — rejected as the Phase 9 cut; operators still need a file-level parked banner/queue bucket when nothing is actionable. Emergence preserves that without hiding other products when they exist.
- C — Keep file-level parked primary but allow coexistence in
primaryPaths— rejected; keeps parked as a peer primary instead of a pure derivation overproducts[].
Consequences
deriveWorkflowmust not emit an exclusiveparkedprimary that drops qualifying TL/MCA/BLOC paths.- Persona delta table (9-pre) must include at least one “cards seasoning + TL qualified → not file-parked” case.
- Phase 9e verdict panel MUST render reasons/prerequisites for non-qualified products (minimum viable: tooltip or secondary line). Shipping Product Decisions without a readable “why” fails the operator need that justified the model.
- Glossary: CONTEXT.md → “Emergent parked”. System reference:
docs/design/underwriting.md§7.

