adfire.digital Reading the machinery behind a display ad slot — one bid request at a time
adfire.digital  /  The supply chain object

Reading source.schain, one node at a time

When an impression is resold, each system that touched it is supposed to append a node to an ordered list. That list travels inside the bid request. This page reads the list structurally and shows what an incomplete one is actually claiming.

What a node contains

Every hop appends one entry. The entries stay in order, so the list itself is the route.

Node keyHoldsReading it
asiThe advertising system identifier — the domain of that hopMust be the domain whose sellers.json you then open. A hop naming a domain that publishes no such file cannot be checked further.
sidThe seller identifier inside that systemThis is the value to look up. Absence of the identifier in that system's file is a contradiction between two public declarations.
hpWhether this node is paid for the impressionDistinguishes a payment hop from a purely technical one.
ridThe request identifier at that hopLets one auction be traced across two systems' logs when both are available.
completeA flag on the chain, not on a nodeSet when every hop from the publisher onwards is present. Cleared when at least one hop is missing or unknown.

Complete versus incomplete, stated plainly

The flag is a claim about the list's coverage. It is not a quality score and does not describe the inventory.

What complete asserts

  • Every intermediary between the original publisher and this request appended a node.
  • The first node names the system the publisher itself sells through.
  • Each identifier can, in principle, be looked up in that system's public seller file.

What complete does not assert

  • That the declarations are accurate — only that they exist and are ordered.
  • That the inventory is desirable, viewable, or free of fraud.
  • That the chain is short. A long complete chain is still complete.

Checking one hop end to end

Three lookups, all against publicly served files, no account needed.

  1. Take the node's system domain.Open that domain's /sellers.json. This file is published by the system, not by the publisher.

  2. Search it for the node's seller identifier.A matching entry names the seller and states whether the relationship is a publisher or an intermediary one.

  3. Go back to the publisher's ads.txt.The same system domain and account identifier should appear there too. Two files, published by two different parties, agreeing on one pair of values — that agreement is the check.

Basis for this procedure