Catalog ProofGraph / Import Firewall / Rule Set 1.0.0

Know what an import will change before it runs.

ChangeAtlas reads your Matrixify or WooCommerce export in the browser — never your store — and returns a deterministic decision with row-level evidence: what changes, what it could reach, and what stays honestly unknown.

0
pinned source profiles
Matrixify XLSX · WooCommerce CSV
0
store writes
upload-first, browser-local
0
rows per analysis
bounded parser budget
0
deterministic rules
changeatlas-core@1.0.0
§ 1 — The instrument

Evidence before confidence.

Six working parts, each shown with the demo's own sample data. Every figure below is live in the product, one click away.

  • Fig. 02 Semantic delta

    Every difference, with its row

    R412
    Cedar Lamp / Ink
    Variant Barcode
    0621888352488column absentOMITTED
    R2
    Linen Notebook / Raw
    Variant Inventory Qty
    1832CHANGED
    R6
    Walnut Tote Tall
    Image Alt Text
    Walnut Tote Tall, view 1blank — explicit clearCLEARED
    R349
    Ash Mug Slim Edition / M
    Variant SKU
    ATL-1679-BATL-1679-RREKEYED
    CREATEDCHANGEDCLEAREDOMITTEDREKEYEDREMOVEDUNKNOWN
    1,349 deltas in this sample, each tied to a sheet, row and column.Open
  • Fig. 03 Evidence classes

    Six kinds of knowing, never blended

    • Source statedThe cell says so.
    • CalculatedDerived from cells, deterministically.
    • InferredA best reading; confidence stated.
    • ObservedSeen at analysis time (e.g. a URL).
    • User assertedYou declared it; revisioned.
    • UnknownNobody knows — and it says so.
    Your declarations sit beside the file's facts, labeled as yours.Open
  • Fig. 04 ProofGraph

    What a change could reach

    Ash Mug Slim Edit…SUBJECTL · ATL-1678-AHAS_VARIANTM · ATL-1679-RHAS_VARIANTXL · ATL-1680-CHAS_VARIANTS · ATL-1681-DHAS_VARIANTAutumn editIN_COLLECTIONNew arrivalsIN_COLLECTIONImage 1HAS_IMAGEHandle (blank)
    Bounded traversal: depth 3, cap 80 nodes · 42 affected, 1 unresolved.Open
  • Fig. 05 Source coverage

    Absence is not emptiness

    • ProductsPRESENTProduct, variant, image and SEO fields
    • Export SummaryPRESENTPreserved as metadata; never semantic.
    • Custom CollectionsUNKNOWNSheet absent from the workbook; not exported, declared empty, or never existed cannot be told apart from the file alone.
    Declare empty→ recorded asUser assertedrevision 1 · dependent rules run · decision recomputes
    A missing region is UNKNOWN until you re-export it or declare it empty — as your assertion, not the file's.Open
  • Fig. 06 Batch plan

    Batches that never split a group

    1. Batch 1R2–R251 · 109 groups
    2. Batch 2 · after b-01R252–R499 · 104 groups
      1 collection reference not defined in this file.
    3. Batch 3 · after b-02R500–R749 · 106 groups
      1 collection reference not defined in this file.
    4. Batch 4 · after b-03R750–R938 · 84 groups
      2 blocking findings inside this batch; the plan is not executable until they are resolved.
    4 batches, prerequisites ordered, groups intact: no.Open
  • Fig. 07 Review package

    Deterministic, digested, signed off

    {
      "ruleSetVersion": "changeatlas-core@1.0.0",
      "decision": { "verdict": "BLOCK", "completeness": 0.96 },
      "sources": [
        { "role": "PROPOSAL", "digest": "sha256:1fb66c21-52d…" }
      ],
      "notExecuted": ["CRD-002", "MED-003"],
      "valueMode": "raw | minimized"
    }
    Same file, same rules, same bytes. Plus a print view for whoever signs off.Open
§ 2 — Four minutes, one blank cell

From “why is this blocked” to fixed and verified.

The scenario the demo opens with. Scroll — the panel on the right is the product at each step.

  1. 01 — Minute 0

    A blank cell, row 412.

    While blanking a discontinued collection, someone also blanked the Handle on one variant row. In Matrixify's grouping, a blank Handle detaches the variant from its product — an importer either fails the row or creates a stray product. Nothing in the spreadsheet looks wrong.

    proposal.xlsx · Productschangeatlas-core@1.0.0
    HandleTitleOption1 ValueVariant SKU
    411cedar-lampCedar LampCharcoalATL-1812-A
    412 InkATL-1814-B
    413cedar-lampNaturalATL-1817-C

    Row 412: Handle is blank in the proposal; the baseline had cedar-lamp. To a spreadsheet, that is just an empty cell.

  2. 02 — Minute 1

    The decision says BLOCK, and says why.

    Rule REF-004 fires on Products!R412 · Handle. The finding carries the remediation and the exact provenance, so the fix is one cell in your own file — not a support ticket.

    Findings · BLOCKchangeatlas-core@1.0.0
    BLOCK3 blocking · 15 warnings · 2 not executed
    BLOCKREF-004Required parent handle presentProducts!R412 · Handle

    Variant row 412 has a blank Handle; the variant is detached from its product group.

    Fix: Fill Handle on row 412 with the product's handle so the row stays inside its group.

    Baseline · R412 · Handle
    cedar-lamp
    Proposal · R412 · Handle
    blank — explicit clearCLEARED
  3. 03 — Minute 2

    See what it would have touched.

    The ProofGraph shows the detached variant beside its siblings and the product group it fell out of. Traversal is bounded and says so; unresolved references stay visible as dashed nodes instead of disappearing.

    ProofGraph · cedar-lampchangeatlas-core@1.0.0
    CharcoalATL-1812-A · R411InkATL-1814-B · R412DETACHED · HANDLE BLANKNaturalATL-1817-C · R413Cedar Lampcedar-lamp · R411–413bounded · depth 3 · cap 80 · 1 unresolved reference
  4. 04 — Minute 4

    Fixed file, READY — with evidence.

    Re-run the corrected export: no blocking findings, every required check executed, four advisory warnings left. Export the review package and hand it to whoever signs off.

    Autumn catalog update (corrected)changeatlas-core@1.0.0
    READYchangeatlas-core@1.0.0

    No blocking findings and every required check executed; 4 advisory warnings remain. 1 advisory check not executed.

    Blocking
    0
    Warnings
    4
    Info
    2
    Not executed
    1
    Export report.jsonPrint view· digests + rule-set version included
§ 3 — Operating rules

What the product refuses to do.

ChangeAtlas is as much about what it will not claim as what it finds. These rules are enforced in the engine, not written in a policy.

  1. 01

    Difference is not execution.

    A file difference is not an import effect. Effects are projected only when you declare the intent — mode, key, mapping — and labeled conditional when they depend on it.

  2. 02

    Absence is not emptiness.

    A region missing from the export is UNKNOWN, not empty. You can re-export it, or declare it empty as your own, revisioned assertion.

  3. 03

    Unknown stays unknown.

    Checks that cannot run are recorded NOT_EXECUTED and the verdict can stay UNKNOWN. Completeness is reported beside the verdict, never folded into it.

  4. 04

    Every number has a row.

    Findings cite sheet, row and column. Deltas carry provenance from both files. Nothing on a report is a summary you cannot open.

  5. 05

    Nothing leaves the browser.

    Upload-first and browser-local. No credentials, no store writes — and therefore nothing to roll back.

  6. 06

    Same input, same output.

    A deterministic pipeline over a versioned rule registry. Every artifact carries digests and the rule-set version it was produced under.

§ 4 — Pinned source profiles

Two formats, read exactly as their exporters write them.

A profile is pinned to the exporter's documented behavior — blank cells, grouping, commands — and versioned like the rules.

  • SHOPIFY.xlsx

    Matrixify Shopify catalog workbook

    Matrixify (Shopify app), Products export

    Sheets
    3
    Columns
    25
    Required
    4
    matrixify-shopify-catalog-xlsx@1.0.0Spec
  • WOOCOMMERCE.csv

    WooCommerce core products CSV

    WooCommerce 11.0.1 core exporter (Products > Export)

    Sheets
    1
    Columns
    22
    Required
    3
    woocommerce-core-products-csv@1.0.0Spec