Blueprint · relationship

Interactive acquisition seam

A user-triggered miss acknowledges acquisition immediately, preserves the observation, and delivers an immutable result later.

Cell 2.1 · runtime · data · evidence
  • Lookup or refresh to Current truth?: check
  • Current truth? to Preserve + schedule: miss
  • Preserve + schedule to Immutable delivery: eventual result
checkmisseventual result
perspectivemixed

Lookup or refresh

One public request with no session identity in scraper evidence.

JobCache App
processmixed

Current truth?

Return verified Core truth directly when it exists.

JobCache App
processmixed

Preserve + schedule

Acknowledge missing work without claiming that queued data is fresh.

Ingestion
processtarget

Immutable delivery

Result snapshot or honest terminal failure reaches the requesting session.

JobCache App
search / refresh intentverified result / pending statebounded acquisition work
  1. 01 · perspective · mixed Lookup or refresh

    One public request with no session identity in scraper evidence.

    JobCache App
  2. 02 · process · mixed Current truth?

    Return verified Core truth directly when it exists.

    JobCache App
  3. 03 · process · mixed Preserve + schedule

    Acknowledge missing work without claiming that queued data is fresh.

    Ingestion
  4. 04 · process · target Immutable delivery

    Result snapshot or honest terminal failure reaches the requesting session.

    JobCache App

Flows

  • Lookup or refresh Current truth? check
  • Current truth? Preserve + schedule miss
  • Preserve + schedule Immutable delivery eventual result
as built target / open Boundary arrows open the neighbouring module; ports stay machine-only

Ingestion × JobCache

Purpose

Own every contract that crosses between acquisition and the JobCache product. This is a relationship module, not a second ingestion implementation.

Pathways

Path Latency Contract
User-triggered lookup Interactive Return verified current truth directly when available; schedule missing acquisition explicitly
Add or refresh source Interactive acknowledgement Preserve the observation before asynchronous enrichment
Continuous source discovery Asynchronous Pull-based leases with bounded retries and evidence receipts
Freshness repair Asynchronous Drift and aging create work without rewriting the last verified result
Product notification Eventual JobCache App receives an immutable result or honest failure state

Reuse seam

Lease, receipt, retry, capability feedback, content addressing, and result-envelope code can be shared with CareerVector contribution paths. Session identity, product authorization, and JobCache-specific presentation cannot.

Invariants

  • The interactive response is never delayed merely to route through a staging store.
  • A queued refresh is not represented as fresh data.
  • Acquisition failures do not delete the last verified evidence.
  • JobCache session IDs do not enter scraper evidence or JobCache Core.

Completion evidence

Trace one user-triggered miss from request through preserved raw evidence, enrichment, publication, App delivery, and UI refresh. Trace the same contract under timeout, duplicate, stale, and rejected-source conditions.

Source: architecture/modules/ingestion-jobcache.md