Skip to content

Assertions

The Assertions tab is the browsing surface for every assertion in a repository. It pairs an assertion list with a detail panel, surfaces per-source reputation, and provides filter controls. For some assertions it also renders a belief/disbelief/uncertainty (BDU) meter — see When BDU Meters Appear for which ones.

Once any assertions have loaded, the tab leads with a collapsible Source Reputation panel that summarizes the loaded assertions by source. Assertions whose payload omits a source field are bucketed under a single unknown row, so the panel is present even for repositories that don’t tag sources — those repos just see one unknown row.

The panel header shows a shield icon and a count of distinct sources (unknown counts as one source). Expanded, each source renders as a row with:

  • Source name and the number of assertions it has authored in the currently loaded set.
  • Inline BDU meter showing the source’s average belief, disbelief, and uncertainty across its loaded assertions.

These counts and averages are computed from the assertions the tab has loaded so far, not the full repository. Authenticated viewers walk every page automatically, so they see the full picture. Anonymous viewers are capped (see Anonymous viewing below) and so see source aggregates only over the loaded subset.

Disbelief is derived from 1 − avgBelief − avgUncertainty (floored at zero), so the meter reflects an aggregate stance per source rather than per assertion.

Six filter controls sit above the assertion list:

  • Search — free-text match against assertion name, wref, shape name, and about target.

  • Shape — restrict to a single shape, populated from shapes present in the loaded assertions.

  • Belief band — narrows the list by how confident an assertion is:

    • All assertions — no filter.
    • High belief — strong belief, low uncertainty.
    • Moderate belief — middling belief, low uncertainty.
    • Low belief — weak belief, low uncertainty.
    • High uncertainty — uncertain enough that the belief level is unreliable, regardless of where it sits.

    Any assertion in the high-uncertainty zone is grouped under High uncertainty rather than the matching belief band.

  • SortStrongest belief (default), Most uncertain, Alphabetical, or Highest version. Belief- and uncertainty-based sorts tie-break on the opposite axis, then by name.

  • About — restrict to assertions whose about ref contains the chosen target string (substring match, case-insensitive). The selector is searchable and is populated from the about refs present in the loaded assertions; selecting one target can also match assertions whose about-ref includes that string as a substring.

  • Group byNo grouping (default), Source, Shape, or Target.

A Clear filters button appears when any filter is active.

Assertions without an opinion are treated as belief 0 / disbelief 0 / uncertainty 1 for filtering and sorting purposes, so they cluster under High uncertainty and at the bottom of belief-sorted lists.

The center column lists assertions matching the current filters. The header shows the result count and a (loading...) indicator while pages are still being fetched.

Each row shows:

  • Name with a belief band pill (when an opinion is present).
  • Shape name, an arrow, and a link to the about target (when set).
  • Source attribution (by <source>) when the assertion declares a source.
  • Inline BDU bar on medium screens and above (when an opinion is present).
  • Version pill (e.g. v2).

Click any row to select the assertion — the detail panel opens and the selection is reflected in the URL via the assertion query parameter, so links are shareable.

When Group by is set to Source, Shape, or Target, sticky group headers separate the list. Source-grouped headers additionally show avg belief and avg uncertainty percentages — these averages are the same per-source aggregates shown in the Source Reputation panel (computed over every loaded assertion from that source, not just the assertions visible inside the current filter).

Unauthenticated viewers see a capped result set. When more assertions exist than the anonymous viewing limit allows, the list footer reads “Showing the first N assertions” with a sign-in prompt.

Selecting an assertion opens the detail panel on the right:

  • Name + belief band pill (when an opinion is present), wref link, and version pill in the header.
  • Full-width BDU meter with numeric values, when the assertion carries an opinion.
  • Metadata grid with four fields:
    • Shape — the shape the assertion was committed under. Falls back to unshaped if the assertion has no shape.
    • About — the wref of the thing this assertion is about, in the form <targetLocalWref>@v<n> (the backend version-pins the about-target at commit time). Falls back to none for assertions with no about target.
    • Pinned wref — the selected assertion’s own pinned identity at commit time, in the form <localWref>@v<n>. Falls back to unavailable. (Distinct from About above: that’s the target’s pinned wref; this is this assertion’s pinned wref.)
    • Validated shape — the shape the assertion was validated against at commit time, when recorded. Falls back to unavailable.
  • Clear selection button.

A Related assertions section lists other assertions that share the selected assertion’s about ref, grouped by shape. Each entry shows the assertion name, wref, version, and a full-width BDU meter when an opinion is present. Clicking an entry switches the selection to that assertion.

The list is currently capped and the tab doesn’t yet paginate the related panel, so larger sibling sets are silently truncated:

  • Signed-in viewers see at most 50 related assertions.
  • Anonymous viewers are additionally clamped by the site-wide anon limit and see at most 25 related assertions, plus a sign-in-to-see-more footer when more exist.

When the selected assertion has no about ref, the section displays “This assertion does not have an about ref.”

The detail panel ends with a Raw JSON block that pretty-prints the selected assertion’s data payload — just the payload, not the wrapping name, shape, version, or about ref already shown above. If the assertion has no payload, the block reads “No raw payload available”.

The tab today only renders meters for assertions whose payload uses one specific opinion-payload shape — a nested object at data.opinion with the short-form numeric keys b, d, and u (any one of which is sufficient; missing axes default to 0, except u which defaults to 1). A nested opinion object that uses long-form keys (opinion.belief, etc.) does not match and won’t render a meter.

This nested shape is not the WarmHub-canonical convention; the opinions-as-separate-assertions pattern stores opinion values at the top level of the payload (as b, d, u, a), and the Veritas shapes Certainty, Support, Opposition, and Consensus likewise store belief / disbelief / uncertainty / alpha at the top level.

Concretely, that means:

  • Assertions emitted under the canonical separate-opinion pattern with top-level (b, d, u, α) keys — do not currently render a meter in this tab.
  • Assertions emitted by Veritas — do not currently render a meter in this tab.
  • Assertions whose payload happens to nest opinion values under an opinion field — do render a meter.
  • Assertions with no opinion at all — render without a meter; they still appear in the list and detail panel with shape, source, version, and Raw JSON.

When opinion numbers are present in the payload, they’re visible in the detail panel’s Raw JSON block regardless of whether a meter renders.

To do the same kinds of things from the terminal that this tab supports in the browser:

  • Browse every assertion in a repowh thing list --kind assertion --all --repo <org/repo>. (The default page size is 50; use --all to walk every page, matching what the tab shows authenticated viewers.)
  • Inspect a single assertionwh thing view <wref>. Returns the full thing record, including the data payload that the tab pretty-prints in Raw JSON.
  • Find other assertions about the same targetwh thing about <about-target-wref-with-version>. To exactly match the Related assertions panel, pass the version-pinned target wref (e.g. Location/cave@v3) — the panel queries against the pinned aboutWref that the selected assertion was committed against. Passing the bare identity (e.g. Location/cave) is also valid CLI usage but returns assertions across all versions of the target, which is a broader set than the panel shows after the target has been revised. The CLI also returns the selected assertion itself; the panel filters that row out client-side.
  • Trace a single assertion’s historywh thing history <wref>.

See Assertions for the underlying data model and CLI reference for the full command surface.