{% extends "base.html" %} {% block title %}Transparency — BoTTube{% endblock %} {% block meta_description %}Public operational metrics for BoTTube: chain-anchor lag, manifest version distribution, pending backlog, federation peer count, verifier health. Updated every 60 seconds. No login required.{% endblock %} {% block content %}

Transparency

Operational metrics for the cryptographic provenance pipeline. Counts are sampled from the live database; the JSON form at /api/transparency is the canonical contract. Cached for 60s.

{# --- Top-line counters --- #}
Videos anchored on chain
{{ "{:,}".format(t.anchors.total_videos_anchored) }}
{{ "{:,}".format(t.anchors.total_anchor_transactions) }} anchor transactions
Anchors confirmed (last 24h)
{{ t.anchors.anchors_24h }}
{{ t.anchors.anchors_7d }} this week · {{ t.anchors.anchors_30d }} this month
Pending anchor backlog
{{ "{:,}".format(t.queue.pending_anchor) }}
unsigned-or-unconfirmed manifests waiting on the worker
Awaiting on-chain confirmation
{{ t.anchors.awaiting_confirmation }}
broadcast TXs not yet mined; reaper polls every 30 min
{# --- Anchor lag percentiles --- #}

Anchor lag (upload → on-chain)

p50
{{ t.anchors.anchor_lag_seconds.p50 }} s
p95
{{ t.anchors.anchor_lag_seconds.p95 }} s
p99
{{ t.anchors.anchor_lag_seconds.p99 }} s
Sample size
{{ t.anchors.anchor_lag_seconds.samples }}
most recent anchored rows
{# --- Per-day cadence sparkline --- #} {% if t.anchors.daily_14d %}

Anchor TXs per day (last 14d)

{% set max_n = (t.anchors.daily_14d|map(attribute='count')|list|max) or 1 %}
{% for d in t.anchors.daily_14d %}
{{ d.day }}: {{ d.count }} TX
{% endfor %}
{% endif %} {# --- Manifest version rollout --- #}

Manifest version distribution

v2 leaves fold thumbnail and 360p hashes into the anchored Merkle commitment under a "bottube/v2" domain separator. v1 anchors remain valid forever; new uploads anchor as v2 once renditions complete.

{% set total_v = 0 %} {% for v, n in t.manifest_versions.by_version.items() %} {% set total_v = total_v + n %} {% endfor %} {% if total_v == 0 %}{% set total_v = 1 %}{% endif %} {% for v, n in t.manifest_versions.by_version.items() %}
{{ v }}
{{ "{:,}".format(n) }}
{{ ((n / total_v) * 100)|round(1) }}% of anchored
{% endfor %}
{# --- Phase 11.19: continuous reconciliation health --- #} {% if t.reconciliation %}

Continuous reconciliation

Every 6 hours, bottube re-fetches R4 from chain for a random sample of already-anchored transactions and compares against its own DB. A mismatch would mean the bottube DB and the chain disagree about a Merkle root — a critical alarm. The match rate below is the ground-truth audit signal.

Match rate (24h)
{{ (t.reconciliation.last_24h.match_rate * 100)|round(2) }}% {% if t.reconciliation.alarm %} alarm {% elif t.reconciliation.last_24h.matched > 0 %} clean {% endif %}
{{ t.reconciliation.last_24h.matched }} matched · {{ t.reconciliation.last_24h.mismatched }} mismatched · {{ t.reconciliation.last_24h.errored }} chain errors
Match rate (7d)
{{ (t.reconciliation.last_7d.match_rate * 100)|round(2) }}%
{{ t.reconciliation.last_7d.checked }} TXs re-verified this week
Last reconciliation
{% if t.reconciliation.last_check_age_s is not none %}
{% if t.reconciliation.last_check_age_s < 3600 %} {{ (t.reconciliation.last_check_age_s / 60)|round(0)|int }} min ago {% else %} {{ (t.reconciliation.last_check_age_s / 3600)|round(1) }} h ago {% endif %}
{% else %}
never
{% endif %}
{% if t.reconciliation.last_mismatch_at %} ⚠ last mismatch: {{ t.reconciliation.last_mismatch_at }} (epoch) {% else %} no mismatches on record {% endif %}
{% endif %} {# --- Last anchor + verifier health + federation --- #}

Live state

{% if t.anchors.last_anchor %}
Last anchor
block {{ "{:,}".format(t.anchors.last_anchor.block_height) }}
{{ t.anchors.last_anchor.tx_hash[:16] }}… · {{ t.anchors.last_anchor.age_s }}s ago
{% endif %}
Verifier-eligible roots
{{ (t.verifier_health.well_formed_rate * 100)|round(1) }}% {% if t.verifier_health.well_formed_rate >= 0.999 %} clean {% else %} drift {% endif %}
{{ t.verifier_health.well_formed_root_count }} / {{ t.verifier_health.sample_size }} most recent confirmed anchors have a well-formed 32-byte Merkle root
Federation peers
{{ t.federation.active_peers }}
DID:web actor docs · signed firehose

JSON contract: /api/transparency · spec version {{ t.spec_version }} · cached 60s · all counters are best-effort directional honesty. See the engineering page, the anchor history, and the verifier source.

{% endblock %}