Keep Straight-Through Preparation Moving While Live SOS Is Pending

September 16, 2026
September 16, 2026
10 Minutes Read
Secretary of State APIblog main image

Executive Summary: Cobalt's interim cachedData can reduce idle handling during a slow Secretary of State search, but it does not make live verification complete. Lenders can preserve straight-through preparation by automating reversible work on a clearly labeled cached observation while keeping approval, funding, final verification, and other decision-bearing steps behind the live-completion gate. The design goal is controlled progress, not an unsupported shortcut.

What Does Straight-Through Mean in a Pending-Live Workflow?

Why does straight-through not require every gate to finish at once?

A workflow can move data preparation, comparison, document collection, and queue routing automatically while one evidence-dependent control remains intentionally closed. Straight-through describes the absence of unnecessary manual handling, not the absence of control boundaries.

Cobalt defines 202 + Incomplete as continued processing rather than failure.[1] The new interim record creates a useful middle state inside that open request.

Which promise should the design avoid?

Do not promise automatic approval, funding, or a measured throughput improvement without evidence. The feature supplies earlier structured data; the lender decides whether any named reversible task may use it.

Automate preparation while preserving the final-live gate.

The completed live result remains the final Cobalt observation, even when cached fields look complete.

Define success as correct state progression, not maximum automatic movement. A file that waits at the live gate after preparing everything else can still be operating straight through as designed. The control becomes inefficient only when work that could safely proceed is blocked without reason or when operations must manually repair a state the system should manage.

Which Tasks Are Reversible Enough to Consider?

What test should each task pass?

Ask whether the task can be undone or recomputed without committing a credit outcome, communicating a final result, or losing evidence. Trace its downstream consumers before classifying it. An internal prefill can become decision-bearing if another service interprets populated fields as verified.

• No final customer outcome. The task does not approve, decline, price, or fund.

• Clear undo path. Changed live data can reverse or recompute the output.

• Visible provenance. People and systems retain cached-interim labeling.

• Narrow permission. The rule authorizes one action, not generic verification.

• No silent propagation. Unreviewed consumers cannot treat it as final.

• Traceable history. Input, rule, action, and later transition remain linked.

If any condition fails, leave the task behind live completion.

Which categories may qualify for lender review?

Candidates include populating a preliminary internal card, preparing a field comparison, identifying missing documentation, assigning a work queue, or staging a review checklist. These are examples, not universal permissions. The lender's authorized policy owner decides.

Do not call a task reversible merely because software can edit the database. Consider people, external messages, reports, and copied data too.

Create a task inventory with inputs, outputs, consumers, and undo procedure. Ask whether the output can leave the application, influence a person, trigger another rule, or be copied into a permanent record. Classify the whole effect chain. A queue assignment may be reversible inside one service but not after an external notification or service-level clock starts.

How Should cachedData Enter the Automation Path?

Which checks should occur first?

Verify the request remains incomplete, correlate retryId, preserve the raw cached observation, parse updatedAt, apply the lender's age rule, apply match conditions, and produce a named permission. Cobalt's cache guidance tells consumers to use timestamps for recency decisions.[2]

Cobalt also notes that state cache timing can vary.[3] Do not substitute a universal monthly assumption for the returned timestamp.

What should the permission object contain?

Tie permission to request, observation, action, policy version, and evaluation time:

{
  "requestId": "vr_1042",
  "observationId": "obs_cached_1",
  "action": "prepare_entity_comparison",
  "policyVersion": "interim-sos-v3",
  "result": "allowed",
  "verificationPhase": "live_pending"
}

This is a customer-side design example, not a Cobalt field set. A downstream service should reject any action not explicitly named.

Give the permission a short lifetime or state dependency where appropriate. It should become invalid when the live result arrives, the observation is superseded, the query changes, or policy is withdrawn. A service processing delayed work must recheck current request version before acting rather than trusting permission copied into an old queue message.

How Should the Workflow Preserve the Final Gate?

Which states make the boundary enforceable?

Represent provider process and lender permission separately. A compact lifecycle can include accepted, live_pending_no_cache, live_pending_with_cache, interim_preparation_allowed, live_complete, review_required, and terminal_error. The interim permission remains subordinate to live pending.

Cobalt's status documentation distinguishes incomplete and terminal meanings.[4] Do not map populated fields to completion.

Which controls must remain closed?

Keep final verification, approval, decline, pricing, funding, final customer communication, and any lender-defined decision-bearing action behind terminal live processing and required review. Enforce the rule in services, not only through disabled interface controls.

If another system asks for a final-only action, return a clear pending-state error and next step. Do not coerce interim data into its terminal schema.

Keep one authoritative transition service or contract. If every consumer independently decides that populated fields look complete, the system will drift. Publish machine-readable state and allowed actions, enforce them at the point of effect, and give other services a deterministic way to obtain the current version.

What Happens When cachedData Is Missing or Rejected?

Does the workflow need a manual exception immediately?

No. Cache absence means no interim record was available. Continue the same live request and let other independent work proceed if policy permits. Cobalt says a cache miss does not prove the business is absent from the registry.[5]

Show Live SOS search in progress rather than No match. Avoid repeat submissions that create competing requests.

What if age or match policy rejects the record?

Store the observation and rule outcome, withhold the named task, and wait for live. A rejected interim permission is not provider failure or a negative applicant signal.

Use distinct reason codes for cache absent, age rejected, match review, final live no-match, and terminal error. That separation supports accurate operations and metrics.

Let unrelated application work continue when it does not depend on SOS evidence. The pending gate should block only tasks whose input or authority requires the final observation. A dependency map prevents a broad verification_pending flag from freezing document collection, customer-authorized data intake, or internal preparation that has independent inputs.

How Should Live Completion Reconcile Prepared Work?

What happens when cached and live data agree?

Store the live observation, transition the request once, validate the prepared output against final fields, and release only the next actions authorized by lender policy. Record confirmation rather than silently changing source labels.

Cobalt supports polling and callbacks for long-running searches.[6] Both paths should call the same final transition.

What happens when they differ?

Pause dependent preparation, preserve both observations, and create a neutral comparison case for material variance. Reverse or recompute interim outputs through documented actions. Do not delete the original history.

Cobalt's matched-field guidance[7] and confidence guidance[8] provide context, but the lender owns identity disposition and every credit consequence.

Record which prepared outputs depended on each cached field. If only business status changed, the system can identify the checklist or comparison that requires recomputation without discarding unrelated work. This dependency record also helps reviewers understand the practical consequence of a variance instead of treating every field difference as equally material.

How Should the Automation Avoid Duplicate Effects?

What if the same interim event is processed again?

Use an effect idempotency key tied to request, observation version, and action. Return the stored outcome without creating another checklist, task, or message. Provider retryId correlates the process but does not deduplicate lender business effects.

AWS recommends idempotent retry handling so repeat delivery has the same state effect as one.[9]

What if polling and callback race?

Use one atomic terminal key. The first valid completion commits live state and permitted effects; the other verifies consistency and becomes a harmless repeat. A stale interim worker must reload current state before writing.

Terminal state never returns to pending. Conflicting content enters review instead of overwriting.

Use an outbox or equivalent durable effect pattern when state changes and work messages must stay consistent. Commit the transition and a uniquely keyed effect together, then let a dispatcher deliver it. A crash after commit can safely retry delivery, while a duplicate consumer call returns the stored effect.

How Should the Workflow Be Tested and Measured?

Which cases prove the gate works?

Test cache present and absent, age pass and fail, match pass and review, repeated incomplete delivery, live agreement, live variance, callback-poll race, stale interface action, final no-match, terminal error, and failure between state commit and effect delivery.

Assert task count, decision-call count, visible labels, observation history, state, and emitted messages. No interim case may emit a final-only effect.

Inject failure before and after every durable boundary. Crash after observation storage, after permission creation, after task enqueue, after live commit, and before acknowledgment. Repeat the event and confirm convergence. Run poll and callback completion concurrently, and attempt an interim action from a browser opened before live completion.

Which metrics are useful without promising results?

Track time spent pending, proportion with interim data, reversible tasks prepared, tasks later confirmed or reversed, review volume, duplicate effects blocked, and final outcomes. Treat them as observed operating measures, not promised speed, approval, or loss improvements.

Measure a baseline before enabling interim actions and segment by state, task, and policy version. An observed reduction in idle time may coexist with more reviews or reversals. Policy owners need the full set of effects and denominators before expanding automation. One favorable metric should not hide a new exception burden.

Log status, reason, action, and source-aware identities. OWASP recommends that event logs capture these elements.[10] The verification waterfall guide explains source layers, while the retry guide covers longer-running requests. To map reversible preparation into your flow, schedule a demo.

Roll out one task at a time behind customer-controlled configuration. Review the first real cases, compare the final live result, and read back the downstream effects. Expand only after the evidence shows that provenance, reversal, and final gating work from the API adapter through the operational interface.

Publish an operating runbook for exceptions. It should tell support how to locate the request, identify the observation and policy version, see prepared effects, pause unsafe work, replay an idempotent transition, and escalate a material variance. The runbook should never instruct staff to mark a pending request complete merely to move the file.

Review the automation periodically with underwriting operations, engineering, and the authorized policy owners. Retire tasks that are no longer reversible, update dependencies when systems change, and preserve prior rule versions. Straight-through behavior remains safe only while its actual downstream effects still match the approved classification.

Keep the ordinary live-only path available as the safe fallback for every interim automation.