# Glossary

Generated from `assets/fixtures-atlas.js`. Status: **EST** established requirement · **PROP** proposed design.

## Collector worker · EST

Our application role that acquires evidence from a source and submits it through the versioned capture interface.

- **Owner:** Collection (deployment tools own lifecycle)
- **Identifier:** `cw_*`
- **Example:** cw_halden_us_browser collects src_halden_us.
- **Relationships:** runs as → collector instance; submits → capture; targets → source
- **Common confusion:** Not a Cloudflare Worker. A collector worker may run on Workers, a local process, or a regional host.
- **Screens:** collectors.html

## Cloudflare Worker · EST

One possible runtime: a serverless function on Cloudflare. Also hosts the resolver API and product service in the candidate deployment.

- **Owner:** Platform
- **Identifier:** `Worker script name`
- **Example:** cw_bazaarline_api runs as a Worker with a Cron Trigger.
- **Relationships:** hosts → collector worker (sometimes); hosts → resolver intake
- **Common confusion:** A runtime, not a role. Placement is not a guarantee of the country a merchant sees.
- **Screens:** atlas.html#deploy

## Collector instance · EST

A specific running or scheduled deployment of a collector worker, with its own version, execution location, heartbeat or invocation history.

- **Owner:** Resolver records; deployment tools run
- **Identifier:** `ci_*`
- **Example:** ci_halden_fra_01 — long-running on a Frankfurt host, lease to 09:13:12Z.
- **Relationships:** instance of → collector worker; reports → heartbeat / run status
- **Common confusion:** The resolver records instance status; it never starts machines.
- **Screens:** collectors.html

## Capture · EST

One submission of evidence about one source record at one time, with context (market, locale, execution region) and artifact references.

- **Owner:** Resolver (stored on receipt)
- **Identifier:** `cap_*`
- **Example:** cap_lum_0310 — Lumen LPD-77310 at 2026-10-10T03:31:55Z.
- **Relationships:** contains → artifacts; yields → claims; acknowledged by → ingestion receipt
- **Common confusion:** A capture is evidence, not a fact. Its captured_at is preserved through replay.
- **Screens:** contracts.html, review.html

## Artifact · EST

Raw bytes captured from a source: HTML, JSON, screenshot, file. Stored privately and referenced by checksum.

- **Owner:** Resolver (private R2)
- **Identifier:** `art_* · r2:// ref · sha256`
- **Example:** art_0310_html, text/html, 233,904 bytes.
- **Relationships:** belongs to → capture; cited by → evidence locator
- **Common confusion:** Queues carry references to artifacts, never the bytes.
- **Screens:** review.html

## Observation · EST

The time-stamped fact that a source showed something at a moment. Observation time is when the source said it, not when we processed it.

- **Owner:** Resolver
- **Identifier:** `observed_at on claims`
- **Example:** Northfield showed 14 units at 2026-10-09T06:00:41Z.
- **Relationships:** carried by → claim; drives → freshness
- **Common confusion:** observed_at ≠ accepted_at ≠ published_at ≠ applied_at.
- **Screens:** preview.html

## Claim · EST

A proposed, evidence-linked statement extracted from a capture: attribute, value, locator, method/version, review status.

- **Owner:** Resolver
- **Identifier:** `clm_*`
- **Example:** LLM claim storage:heatsink=false (locator: unmapped "Thermal").
- **Relationships:** from → capture; about → listing / item / merchant; becomes → accepted fact via decision
- **Common confusion:** Proposed claims look different from accepted facts everywhere in this workbench (dashed vs solid).
- **Screens:** review.html

## Parser adapter · EST

Deterministic code selected by source, media type, schema and template that turns an artifact into claims. Exposes supports() and parse().

- **Owner:** Resolver module
- **Identifier:** `pa_*@semver`
- **Example:** pa_lumen_product@0.9.1 supports lumen.pdp.v1 but not lumen.spec-grid.v2.
- **Relationships:** selected for → capture; emits → claims; improved by → improvement proposal
- **Common confusion:** A valid capture submission does not prove a suitable adapter exists.
- **Screens:** improvements.html

## Normalization profile · PROP

Versioned rules that convert raw values to typed attributes: units, aliases, label maps, money.

- **Owner:** Resolver module
- **Identifier:** `np_*@version`
- **Example:** np_storage@3 maps "2000GB" → 2 TB and "Gen4" → pcie4_x4.
- **Relationships:** applied after → parser adapter; version recorded on → claim
- **Common confusion:** Profiles normalize values; they do not decide identity.
- **Screens:** improvements.html

## Manufacturer · EST

The organization that makes the product.

- **Owner:** Resolver (canonical)
- **Identifier:** `mfr_*`
- **Example:** mfr_corvane makes Strata drives and Atrium cases.
- **Relationships:** owns → brands
- **Common confusion:** Not the brand, not the seller, not the source operator.
- **Screens:** sources.html

## Brand · EST

The name products are marketed under.

- **Owner:** Resolver (canonical)
- **Identifier:** `brd_*`
- **Example:** brd_strata (by mfr_corvane).
- **Relationships:** owned by → manufacturer; names → product family
- **Common confusion:** One manufacturer can own several brands.
- **Screens:** sources.html

## Product class · EST

A kind of product with its own attribute definitions and identity attributes.

- **Owner:** Resolver (schema)
- **Identifier:** `cls_*`
- **Example:** cls_storage_ssd, cls_pc_case, cls_coffee_beans.
- **Relationships:** defines → identity attributes; classifies → product family
- **Common confusion:** Classes are generic; compatibility rules are future consumers, not part of the class.
- **Screens:** atlas.html#domain

## Product family · EST

A product line grouping several exact configurations.

- **Owner:** Resolver (canonical)
- **Identifier:** `fam_*`
- **Example:** fam_strata_p5 has 2 TB, 1 TB and 1 TB-with-heatsink items.
- **Relationships:** groups → catalog items
- **Common confusion:** A family is never what a listing maps to.
- **Screens:** preview.html

## Catalog item · EST

An exact configuration and packaging. Listings map to catalog items.

- **Owner:** Resolver (canonical identity)
- **Identifier:** `itm_*`
- **Example:** itm_ridgeline_500g and itm_ridgeline_2x250g are distinct items.
- **Relationships:** mapped from → source listings; configuration of → product family
- **Common confusion:** Identity is not a URL. One item has many listing URLs. Equal total quantity is not equal identity.
- **Screens:** preview.html, review.html

## Merchant · EST

A selling business.

- **Owner:** Resolver (canonical)
- **Identifier:** `mer_*`
- **Example:** mer_halden sells via src_halden_us and src_halden_de.
- **Relationships:** sells via → sources; has → typed locations
- **Common confusion:** A marketplace source can contain several merchants; the marketplace operator is not the seller.
- **Screens:** sources.html

## Source · EST

A website, storefront, API, or feed we collect from, with a market, currency and locale.

- **Owner:** Resolver
- **Identifier:** `src_*`
- **Example:** src_bazaarline_api (operator op_bazaarline) lists Northfield and Pantry & Pour.
- **Relationships:** operated by → source operator; publishes → source records / listings
- **Common confusion:** Source ≠ merchant. One merchant may have several sources.
- **Screens:** sources.html

## Source record · EST

The source-native unit a capture describes: a product page, API offer, feed row, or policy page.

- **Owner:** Resolver
- **Identifier:** `source + native id`
- **Example:** Bazaarline B0X7P52T / OFR-55120-NF.
- **Relationships:** captured by → capture; may be → source listing
- **Common confusion:** A policy page is a source record but not a listing.
- **Screens:** contracts.html

## Source listing · EST

An offer for a product on a source, retaining original URL, native identifier, merchant when known, and market/variant context.

- **Owner:** Resolver
- **Identifier:** `lst_*`
- **Example:** lst_lum_p5_1t_hs → https://lumenparts.example.com/catalog/ssd/strata-p5-1tb-hs
- **Relationships:** maps to → catalog item (revisioned); has → inventory observations
- **Common confusion:** The listing URL is evidence of an offer, not the item identity.
- **Screens:** sources.html, preview.html

## Inventory observation · EST

Stock state for a listing, item variant, market, location or stock pool, and fulfillment scope, at a time.

- **Owner:** Resolver; projected by product service
- **Identifier:** `inv_*`
- **Example:** inv_0412_a: 42 at Reno; inv_0412_b: "In stock online" overlaps it.
- **Relationships:** for → listing + pool + scope
- **Common confusion:** Unknown, unavailable, zero quantity and no observation differ. Overlapping pools are never summed.
- **Screens:** preview.html

## Source profile · PROP

First-class view of a source: claimed facts, derived catalog statistics, and collection health, kept separate.

- **Owner:** Resolver
- **Identifier:** `prof_*`
- **Example:** prof_lumen: 4 of 4 recent captures fell back to LLM.
- **Relationships:** about → source
- **Common confusion:** Derived statistics are ours, not claims by the merchant.
- **Screens:** sources.html

## Location · EST

A typed place: headquarters, registered address, store, fulfillment origin, or collector execution region.

- **Owner:** Resolver
- **Identifier:** `loc_* + type`
- **Example:** loc_halden_fc_reno (fulfillment origin) vs loc_halden_hq (headquarters).
- **Relationships:** belongs to → merchant / manufacturer / collector
- **Common confusion:** None of these is a storefront market, currency, or shipping destination.
- **Screens:** sources.html, collectors.html

## Shipping policy · EST

Versioned, scoped shipping rules with original text, URL, service, coverage, exclusions, conditions and effective dates.

- **Owner:** Resolver (accepted); product service (projection)
- **Identifier:** `pol_* + rev`
- **Example:** pol_halden_us_shipping v3 (accepted) and v4 (in review).
- **Relationships:** scoped to → source / merchant / service; clauses → coverage, exclusion, free shipping, rate, delivery
- **Common confusion:** A merchant shipping to a country does not prove every item ships to every postcode there.
- **Screens:** shipping.html, sources.html

## Shipping evaluation · PROP

Four separate answers for a listing or same-merchant basket and destination: eligibility, free-shipping qualification, cost, delivery estimate.

- **Owner:** Product service
- **Identifier:** `computed per request`
- **Example:** Halden basket to 97205: eligible · free shipping eligible · USD 0.00 · 3–5 business days.
- **Relationships:** uses → applied policy projection; inputs → basket, destination, service, customer conditions
- **Common confusion:** Unknown cost is not zero; it cannot win a delivered-price ranking.
- **Screens:** shipping.html

## Review case · EST

A durable unit of uncertainty awaiting automatic, LLM-assisted or human resolution, with bounded attempts per revision.

- **Owner:** Resolver (PostgreSQL)
- **Identifier:** `rc_* + revision`
- **Example:** rc_0007 rev 2, awaiting human.
- **Relationships:** about → claims, listing, candidates; resolved by → decision
- **Common confusion:** Not a queue message. Queues carry jobs; cases live in the database.
- **Screens:** review.html

## Decision · EST

A recorded resolution — by rule, or by a person with rationale — that turns claims into accepted facts.

- **Owner:** Resolver
- **Identifier:** `dec_*`
- **Example:** dec_0141: human correction on rc_0007.
- **Relationships:** resolves → review case; emits → outbox events
- **Common confusion:** A reviewer recommendation is not a decision.
- **Screens:** review.html

## Improvement proposal · EST

A deduplicated, issue-ready draft from repeated fallbacks: evidence, expected vs actual, affected versions, fix area, regression fixture.

- **Owner:** Resolver (drafts); humans (publish)
- **Identifier:** `imp_*`
- **Example:** imp_0003 groups 4 Lumen captures.
- **Relationships:** from → reviewed cases; validated by → replay
- **Common confusion:** Drafts are simulated here; nothing is published.
- **Screens:** improvements.html

## Outbox event · EST

An accepted change committed in the same transaction as the facts, then relayed to the product-ingestion queue.

- **Owner:** Resolver
- **Identifier:** `evt_*`
- **Example:** evt_0142 listing_mapping.corrected rev 2, depends on itm_ssd_p5_1t_hs@1.
- **Relationships:** carries → aggregate id + revision + dependency revisions
- **Common confusion:** Accepted by the resolver ≠ applied by the product service.
- **Screens:** contracts.html, preview.html

## Ingestion receipt · EST

The durable record that a capture was received and stored, keyed by idempotency key, with stage history.

- **Owner:** Resolver
- **Identifier:** `rcpt_*`
- **Example:** rcpt_0310: stored → processing failed → review.
- **Relationships:** acknowledges → capture
- **Common confusion:** A receipt is not a resolution result.
- **Screens:** contracts.html

## Product projection · EST

Queryable state built only from applied accepted events, serving search, filters and display.

- **Owner:** Product service
- **Identifier:** `aggregate key → applied revision`
- **Example:** listing_mapping:lst_lum_p5_1t_hs at rev 1 until evt_0142 applies.
- **Relationships:** built from → outbox events via inbox
- **Common confusion:** The product service never invents canonical identities.
- **Screens:** preview.html

