Skip to main content

File-level parked is emergent from Product Decisions

Status: accepted Date: 2026-07-09 Phase 9 demotes file-level parked 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

  1. Parked is emergent only. A file-level parked presentation appears if and only if:
    • no Product Decision is in an operator-actionable status (qualified, qualified_conditional, or manual_review), and
    • at least one Product Decision carries a time-based prerequisite (e.g. seasoning, recent credit activity, thin-file wait).
  2. Cross-product non-exclusivity applies. If term_loan, mca, or bloc is actionable while card_stacking is 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.
  3. 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.
  4. 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 / prerequisites exist 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

Today parked 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 over products[].

Consequences

  • deriveWorkflow must not emit an exclusive parked primary 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.