{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "name": "visibility.cloud — the four costs",
  "description": "There is no single company message on this surface, by design: anonymity is one defect and it sends four different bills. Each read stands on its own evidence and names its evidence class.",
  "url": "https://visibility.cloud/#yours",
  "verified": "2026-08-06",
  "evidenceClasses": {
    "public-record": "The read cites a dated, public, third-party record the reader can check without us.",
    "structural-only": "The read cites no market figure of any kind. Every claim on it is a checkable property of a record or of a published specification."
  },
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "WebPage",
        "identifier": "recall",
        "url": "https://visibility.cloud/for/recall/",
        "name": "One run went bad. You withdrew all of them.",
        "headline": "One run went bad. You withdrew all of them.",
        "description": "The size of a withdrawal is set by what your record can tell apart — not by what actually went wrong.",
        "about": "Food CPG and QSR — whoever owns the recall desk.",
        "abstract": "One run went bad and you withdrew everything it could have been in.",
        "evidenceClass": "public-record",
        "evidenceNote": "FSMA 204 and its dated enforcement record are public and citable. No adoption, customer or recovery figure is claimed.",
        "offer": "fork-the-scan",
        "segment": "manufacturer",
        "artifact": {
          "name": "Both records are conformant. Only one can answer.",
          "description": "The same receiving event, written twice. Once it names two hundred and forty units of one lot; once it names one case. Post both to the validator that checks against GS1’s own published EPCIS 2.0.1 schema — no key, no account, and nothing of ours in the answer.",
          "url": "https://epcis.dev/",
          "steps": [
            {
              "action": "The lot-grain event — a quantity of 7A-4412:",
              "returns": "$ curl -sX POST https://epcis.dev/validate \\\n    -H 'content-type: application/json' -d @lot.json\n\n  \"valid\": true,  \"errors\": []\n  \"schema\": { \"artefact\": \"epcis-json-schema.json\",\n              \"version\": \"2.0.1\",\n              \"sha256\": \"0f46ff69…210af\" }"
            },
            {
              "action": "The unit-grain event — one case, and not the case behind it:",
              "returns": "$ curl -sX POST https://epcis.dev/validate \\\n    -H 'content-type: application/json' -d @unit.json\n\n  \"valid\": true,  \"errors\": []"
            }
          ],
          "finding": "The standard does not prefer one over the other, and no amount of software makes the first one into the second. The lot document is not a coarser record of the same subject — it is a record about a different subject, and there is no query that recovers the case from it. That choice was made at the print head, before any of this ran."
        },
        "corrections": [
          "The date you were quoted has probably moved. The enforcement floor is July 2028, and FDA is actively soliciting further flexibilities. If a vendor is still selling you January 2026, that is worth knowing about the vendor.",
          "Nothing in the rule asks for unit-level identifiers. A traceability lot code is assigned at a lot, and going finer than that is a decision with a real cost at the print head. It is an operational choice, not a compliance one, and this page is arguing the operational case.",
          "Validating a document is not filing anything. epcis.dev/validate checks a document against a published schema and returns a verdict. It submits nothing, to anyone, ever.",
          "The withdrawal boundary is not ours to draw. It is set by your counsel and a regulator, to the last verified-good control point. A finer record changes where that point can be, and it does not change who decides."
        ],
        "vocabulary": [
          "the drill",
          "the trace-back",
          "traceability lot code",
          "critical tracking event",
          "key data element",
          "the covered food",
          "the DC",
          "the case",
          "the lot",
          "the co-man",
          "the franchisee",
          "the supplier letter",
          "the withdrawal window",
          "the COA",
          "the ASN"
        ],
        "never": [
          "FSMA 204 as a countdown",
          "any recall-cost statistic",
          "the 9,800/270 arithmetic",
          "competence flattery",
          "a headline that needs EPCIS knowledge to parse"
        ]
      }
    },
    {
      "@type": "ListItem",
      "position": 2,
      "item": {
        "@type": "WebPage",
        "identifier": "authenticity",
        "url": "https://visibility.cloud/for/authenticity/",
        "name": "Four people ask whether you made it.",
        "headline": "Four people ask whether you made it.",
        "description": "Your bench can answer for a piece it is holding. Every one of those four questions is about a piece it is not.",
        "about": "Jewelry, watches and luxury — brand protection, and whoever answers the client.",
        "abstract": "A convincing copy carries the same digits as the original.",
        "evidenceClass": "structural-only",
        "evidenceNote": "No counterfeit rate, market size or resale figure is cited here, because none is held that can be shown. Every claim on this read is a checkable property of a record.",
        "offer": "agent-sandbox",
        "segment": "manufacturer",
        "artifact": {
          "name": "Arithmetic the other side runs without you.",
          "description": "The standard defines one way to compute an event’s identity from its content — CBV 2.0 §8.9, GS1’s algorithm and not ours. Post any event twice and the identity is the same. Change one character anywhere in it and it is not. Run it on your own document; no key, no account, and the value does not depend on us being honest.",
          "url": "https://epcis.dev/",
          "steps": [
            {
              "action": "Post the event. Then post it again, unchanged:",
              "returns": "$ curl -sX POST https://epcis.dev/hash \\\n    -H 'content-type: application/json' -d @handoff.json\n\n  ni:///sha-256;3a2abe05…a7e7d?ver=CBV2.0\n  ni:///sha-256;3a2abe05…a7e7d?ver=CBV2.0"
            },
            {
              "action": "Change one character — a reference, a digit, a timestamp — and post it once more:",
              "returns": "$ curl -sX POST https://epcis.dev/hash \\\n    -H 'content-type: application/json' -d @edited.json\n\n  ni:///sha-256;7f906195…fc55e?ver=CBV2.0"
            }
          ],
          "finding": "Any conformant implementation computes the same URI from the same bytes, which is what makes it evidence rather than a claim. A chain of them cannot be produced after the fact, because producing it means producing every event in it and every event that pointed at those. A copy can carry the same digits. It cannot carry the same chain, and there is no way to give it one afterward."
        },
        "corrections": [
          "The hash identifies the event, not the object. It proves a record has not been edited since it was written. It says nothing about whether the object in the photograph is the object in the event.",
          "A chain that resolves proves custody was recorded, not that it was recorded honestly. What it removes is the ability to write the record afterward, once the answer is known.",
          "Anything printed on an item can be printed again. Nothing here changes that, and any vendor who tells you otherwise is selling you the part they cannot do.",
          "§8.9 is GS1’s algorithm, not ours. That is the point — the counterparty computes the same value from the same bytes without using our door and without trusting us. GS1 has not reviewed, certified or approved this platform."
        ],
        "vocabulary": [
          "the piece",
          "the bench",
          "the archive",
          "the serial book",
          "the certificate",
          "the movement",
          "the service book",
          "the client",
          "the consignment",
          "the declaration",
          "the claim"
        ],
        "never": [
          "immutable",
          "blockchain",
          "tamper-proof",
          "anti-counterfeit",
          "any counterfeiting figure",
          "anything implying a copy is detectable in the hand"
        ]
      }
    },
    {
      "@type": "ListItem",
      "position": 3,
      "item": {
        "@type": "WebPage",
        "identifier": "shrink",
        "url": "https://visibility.cloud/for/shrink/",
        "name": "The loss has a number. It has no address.",
        "headline": "The loss has a number. It has no address.",
        "description": "A fully instrumented chain tells you where a unit was last read. It cannot tell you who was standing there.",
        "about": "Apparel and general merchandise — loss prevention, and the fulfillment side that owns the dock it happens on.",
        "abstract": "Every unit was scanned, and the investigation still ends at “seen here, then not.”",
        "evidenceClass": "structural-only",
        "evidenceNote": "No shrink rate, loss figure or recovery number is cited here, because none is held that can be shown. Every claim on this read is a checkable property of a record.",
        "offer": "agent-sandbox",
        "segment": "retail",
        "artifact": {
          "name": "Try to write the name down.",
          "description": "Take a receiving event that has just passed GS1’s own published EPCIS 2.0.1 schema. Add one field naming the person who took the load. Post it again to the same validator, which takes no key and no account and returns the schema’s verdict, not ours.",
          "url": "https://epcis.dev/",
          "steps": [
            {
              "action": "The event as the standard has it — a company, a location, a time:",
              "returns": "$ curl -sX POST https://epcis.dev/validate \\\n    -H 'content-type: application/json' -d @receiving.json\n\n  \"valid\": true,  \"errors\": []"
            },
            {
              "action": "The same event, with the name of the person who received it:",
              "returns": "$ curl -sX POST https://epcis.dev/validate \\\n    -H 'content-type: application/json' -d @with-a-name.json\n\n  \"valid\": false,  8 errors, among them:\n  { \"path\": \"/epcisBody/eventList/0\",\n    \"keyword\": \"propertyNames\",\n    \"message\": \"property name must be valid\" }"
            }
          ],
          "finding": "There is a way to make it pass: namespace the field — acme:receivedBy, with your own prefix declared — and the same validator says valid again. That is not a workaround, it is the finding. The standard will let you write the name down, in a place nothing but your own systems will ever read. Which is exactly where the answer sits today, in fourteen of them, with nothing to join on."
        },
        "corrections": [
          "The standard’s party fields are organization-grain on purpose. A GLN or a PGLN names a company doing a process (EPCIS 2.0 §7.2.2, §7.3.6.4; CBV §8.7.1). That is not an oversight anybody left in; it is what the standard was scoped to answer, and it answers it well.",
          "If your guns log in per person and it is enforced, part of this is already solved inside your four walls. The hops that are not are the ones staffed by people who do not work for you, and that is where this argument lives.",
          "An attested observer is not a camera and it is not a badge reader. It is a claim made at the moment of capture that somebody stands behind — which is why it has to be distinct from the account that warrants it, and why the two are never collapsed.",
          "None of this is evidence of a crime. It is a named handoff. What that is worth in a claim, a chargeback or a conversation with a carrier is your call, not ours. GS1 has not reviewed, certified or approved this platform."
        ],
        "vocabulary": [
          "OS&D",
          "the claim",
          "the account",
          "cycle count",
          "inventory accuracy",
          "the SLA",
          "cost per unit",
          "the P&L",
          "associates",
          "the roster",
          "the dock door",
          "the seal",
          "the BOL",
          "the POD",
          "detention",
          "the RF gun",
          "the license plate"
        ],
        "never": [
          "any shrink percentage or recovery figure",
          "prevent",
          "predict",
          "SSCC in our own voice",
          "AI-powered loss prevention",
          "real-time visibility",
          "control tower",
          "any suggestion the investigation fails because they run it badly"
        ]
      }
    },
    {
      "@type": "ListItem",
      "position": 4,
      "item": {
        "@type": "WebPage",
        "identifier": "discarded-scan",
        "url": "https://visibility.cloud/for/the-discarded-scan/",
        "name": "The lane reads it. Then throws it away.",
        "headline": "The lane reads it. Then throws it away.",
        "description": "Serial, lot and expiry travel inside the same symbol the register already scans. The register takes the GTIN and discards the rest.",
        "about": "Retailers and brands on the Sunrise 2027 timeline.",
        "abstract": "The lane reads the serial, the lot and the expiry, and keeps none of them.",
        "evidenceClass": "public-record",
        "evidenceNote": "GS1's Sunrise 2027 program is public and dated, and is cited here as GS1's own program. No adoption or scan-volume figure is claimed.",
        "offer": "fork-the-scan",
        "segment": "retail",
        "artifact": {
          "name": "Two of the three are already true. Check both.",
          "description": "The scan is happening — that one you can see from where you are standing. The other is that the data is already in the code. Type one element string into the field and watch it come apart, on your own device, with nothing uploaded and no account.",
          "url": "https://barcoding.dev/scan/",
          "steps": [
            {
              "action": "At barcoding.dev/scan, type or paste:",
              "returns": "(01)09506000134352(10)7A-4412(17)260930"
            },
            {
              "action": "It comes apart where the parentheses are, on your device:",
              "returns": "ai  01   GTIN               09506000134352\nai  10   batch/lot          7A-4412\nai  17   expiration date    260930 → 2026-09-30"
            }
          ],
          "finding": "Three application identifiers, one symbol, one scan. The register needs the first one and has nowhere to put the other two. The third thing that has to be true is the split itself — and that is the one part of this that is not built, listed as unbuilt on What ships today. It is the only part of this you are being asked to take on trust."
        },
        "corrections": [
          "A GS1 DataMatrix is not a QR code for a shopper’s phone. It is a lane symbol, read by lane hardware. The consumer story is a different symbol and a different decision, and anyone who blurs the two is selling you both at the price of one.",
          "Element strings are not a URI. (01)…(10)… and a Digital Link URI are two different encodings of overlapping content, and the lane parses the first. Which one goes on the pack is genuinely your decision as the GTIN owner.",
          "Sunrise’s baseline is GTIN extraction at point of sale. Lot and expiry are optional application identifiers a brand chooses to encode. Nothing in the program obliges you to carry either.",
          "Sunrise puts nothing on anyone’s pack. It sets what a register is expected to be able to read. What gets printed is the brand’s decision, on the brand’s cycle, and it always was.",
          "hasGS1DigitalLink is on pending.schema.org, not in schema.org core — verified 2026-08-06, where the term’s own page marks it Pending. It is not new in v30.0, and a proposal is not a standard.",
          "This one is ours, not GS1’s. The split at the lane is unbuilt, and it is named as unbuilt on What ships today."
        ],
        "vocabulary": [
          "the artwork",
          "the proof",
          "the lane",
          "the register",
          "SKU productivity",
          "velocity",
          "TDP",
          "%ACV",
          "distribution",
          "trial and repeat",
          "promotional lift",
          "TPR",
          "trade spend",
          "the digital shelf",
          "the broker",
          "the distributor",
          "retailer submissions",
          "market, meaning a geography"
        ],
        "never": [
          "the 2D symbol Sunrise 2027 puts on your pack",
          "DataMatrix described as consumer-scannable",
          "Sunrise framed as our deadline",
          "any consumer-scan analytics claim",
          "recipes behind the code",
          "retail media network (in the seat it is always the named network)"
        ]
      }
    }
  ],
  "offers": [
    {
      "@type": "Offer",
      "identifier": "fork-the-scan",
      "name": "Fork the scan.",
      "description": "The retail lane will read the whole symbol and keep a twelfth of it. The other eleven twelfths are yours for the asking, and asking costs nobody a behavior change.",
      "availability": "https://schema.org/PreOrder",
      "note": "The lane-side split is not built, and What ships today says so. What is live today is the read underneath it: the interview at get started ends every business path with the Sunrise decision read for your situation — which symbology and which URI form is genuinely your decision as GTIN owner, and what the lane must extract versus what nothing obliges you to encode."
    },
    {
      "@type": "Offer",
      "identifier": "agent-sandbox",
      "name": "One place to point your agents.",
      "description": "An agent buying from you has to show whose money it is spending and under what limit. An agent working inside your plant has to show whose authority it holds and which task it was asked to perform. Those are the same question, asked from opposite sides of the same door.",
      "availability": "https://schema.org/PreOrder",
      "note": "Neither the sandbox nor the seat mandate it runs under is built, and What ships today says so. What is live today is the machine face this surface already publishes: /llms.txt, /icp.json, /agent-classes.json, /flow.json and /variants.json, plus the markdown twin of this page on this same route."
    }
  ]
}
