sgit newsroom v0.1.29 · snapshot 2026-09-24

Reading room · ungovr.providers.sgit.ai

On this page

Reading room / ungovr.providers.sgit.ai · raw text · live ↗

From ungovr.providers.sgit.ai, the page as fetched on 2026-09-25 · open the live page ↗Everything on this sheet is the source site's own text; the newsroom's chrome is outside it.

02 — The Model

version v0.1 · 9 September 2026

← 01 The anchor-node thesis↗ · Next → 03 The standards map↗


Five node classes, and the prefix says whose claim it is

Origin is carried by the prefix and never by the colour. This is the two-edge rule this vault already ships, extended by one class.

PrefixClassWho asserts itEditable by us
ung:Anchor — entity, jurisdictionUnGovrNever. Transcribed with provenance and left alone
akn:Instrument — act, provisionThe publisher of the lawNever. Anchored to a published citation
std:Standard — framework, control, requirementThe standards bodyNever. Transcribed from their published corpus
sg:Our model — obligation, control-instance, evidence, acceptanceUsYes. This is the only layer we own
x:Crosswalk — a claimed correspondenceWhoever published it, or usYes, and always carries who

Four of the five are somebody else's. That ratio is the point: the value is in the connective tissue, not in re-typing corpora that already exist.

The edge vocabulary

Every edge is a verb with a distinct, meaningfully-named inverse — not the same edge walked backwards. The generic association edge is banned.

Six come from graphs.sgit.ai's fifteen established edges ↗, reused with their inverse names. Four come from the AIUC-1 conformance layer. Five are proposed here and marked as proposed, exactly as that site marks its own.

This paragraph said eight … reused unchanged, and four of the six were not unchanged. observed_on had been given the inverse observation_of where the published set says bears_observation; backed_by→backs for evidences; accepted_by→accepts for accepted; conditional_on→condition_for for conditions. Renaming another vocabulary's inverses and calling it reuse is a fork, and it is the exact failure this pack's own rule 6 exists to prevent — committed by the file that states the rule. Caught by fetching the published edge set and comparing row by row, not by rereading this table. The four are now theirs.

EdgeInverseDomain → rangeStatus
located_incontainsentity → entityproposed here
governed_bygovernsentity → jurisdictionproposed here
has_provisionprovision_ofinstrument → provisionproposed here
creates_obligationarises_fromprovision → obligationproposed here
addressesaddressed_bystd:control → obligationproposed here
maps_tomapped_fromstd:control → std:controlestablished (AIUC-1 uses it)
has_requirementrequirement_ofstd:control → requirementestablished (AIUC-1)
evidenced_byevidencesanything → evidenceestablished. Do not redefine
attested_byattestscontrol-instance → attestationestablished. Never traversed with evidenced_by unnamed
observed_onbears_observationevidence → dateestablished
backed_byevidencesclaim → source bytesestablished
accepted_byacceptedevidence → acceptanceestablished
owned_byownsacceptance → named personestablished
conditional_onconditionsobligation → conditionestablished
underwritten_byunderwritesacceptance → policyestablished

Rule for extending this set, quoted from the grammar: a new edge needs a sentence, its inverse needs a different sentence, both need a stated domain and range. The five proposed above each do.

The rule that keeps evidenced_by and attested_by apart

Taken whole from the AIUC-1 conformance layer, because it is already load-bearing there:

EdgeAnswersAbsent means
evidenced_bydoes the standard say this?a build defect
attested_bydoes this subject do this?the control is unevidenced — which is the finding

A query may traverse both, and must name which it used. The conformance layer enforces this with a test that goes red if a layer edge reaches a source observation. This pack inherits the rule and the test.

Provenance, on every node that claims a source

Seven fields, unchanged from this vault's existing model:

{
  "source_url":       "https://data.ungovr.org/v1/entities/detail/us--ca--santa-barbara.json",
  "response_sha256":  "8d5e6db9e4056b2f68fcd66da7c18e6797340bf516dc5c4446f0e8267e0fcd7d",
  "retrieved":        "2026-09-09T01:49Z",
  "method":           "HTTPS GET, raw bytes hashed before parsing",
  "licence":          "CC BY 4.0",
  "assertion":        "asserted | inferred",
  "note":             "for nodes that are ours, instead of a hash they have not earned"
}

A node that is our model carries the note and no hash. Writing a plausible-looking hash on a node nobody retrieved is the exact failure the whole method exists to prevent.

The crosswalk rule

A crosswalk edge always names who drew it, and there are only two answers:

x:sourceMeaningAssertion
the standards bodyThey published this mappingasserted
usWe drew itinferred, always, with no exceptions

AIUC-1's 1,126 crosswalks are the first kind and can be transcribed. Anything we add between two standards is the second kind, and rendering it like the first would be a lie about the source — the same lie sg:resolvesTo would be if it were drawn solid.

Rendering

Never render the whole graph. Render the result of a query. Mermaid is unreadable past ~50 nodes; a rendered graph past ~300–400. A standards graph is tens of thousands of nodes, so whole-graph is not a view, it is a failure mode.

Two visual channels, never merged, as this vault's app already does:

Hue is spent on the second, so the first cannot also use it. A reader checking this work checks that separation first.


This document is released under the Creative Commons Attribution 4.0 International licence (CC BY 4.0).