BANS: the truth model
BANS is the Broadcast Address Numbering System. The registry returns one canonical origin per broadcaster, carrying six facets that are deliberately kept separate.
identity ≠ governance ≠ allocation ≠ publication ≠ presentations ≠ reachability
Two invariants hold throughout: reviewed ≠ governed, and allocated ≠ published ≠ reachable.
Origin (identity)
The canonical broadcaster. origin.id (wwbn:origin:<uuid>) is the stable, per-origin key you route and bookmark on. registry_id (WWBN-0000000) is the network address — shared by an origin's siblings — so it is not a per-origin key.
"origin": {
"id": "wwbn:origin:1160f6e7-…",
"name": "Example Network",
"registry_id": "WWBN-0001006",
"network": { "id": "…", "name": "YouTube" }
}
Governance
An origin is governed only when an active governance edge establishes it. A reviewed crosswalk on its own means the origin is reviewed (its presentations resolve) but not yet governed.
| State | governance.state | Meaning |
|---|---|---|
| Governed | governed | active_edges ≥ 1 — the only BANS-eligibility signal. |
| Reviewed | ungoverned | A reviewed crosswalk exists (presentations resolve) but no active governance edge — awaiting adoption. |
| Unreviewed | ungoverned | No reviewed crosswalk and no governance — no resolved presentations. |
BANS allocation
A governed origin may hold a permanent channel-tier address: network.station.channel (e.g. 2.0.1). Numbers are station-scoped and never recycled.
"bans": {
"allocated": true,
"address": "2.0.1",
"network": 2, "station": 0, "channel": 1,
"publication_status": "published"
}
registry_id — they are different addressing systems. The registry never substitutes one for the other.A governed origin without an allocation is eligible, not broken: bans.allocated = false.
Publication
An allocation is either published or held. A held allocation keeps its same address — it is reserved for the origin, never freed.
"bans": { "allocated": true, "address": "2.0.2",
"publication_status": "held",
"held": { "at": "…", "reason": "…" } }
Presentations (reachability)
The transports actually resolved to the origin — one entry per carriage. Multiple carriages of the same transport aggregate beneath the one origin.
OVPIPTVOTAFAST
"presentations": [
{ "carriage_id": "ostv:carriage:…", "transport": "iptv",
"provider": "…", "source": "…", "availability": "available" }
]
availability is transport telemetry; where the source has none it is null. A carriage merely existing does not imply the origin is reachable, and it is never promoted to publication_status.What never happens here
- Unresolved carriages never create a synthetic origin.
- Identity is never inferred from matching names.
- Network-tier addressing is never surfaced as the channel-tier BANS address.
- Nothing is written — the registry is a projection.
See the worked examples: published · held · governed (eligible) · reviewed · unreviewed.