Independent. No commercial relationship with UnGovr — no funding, no agreement, no conversation of any kind — checked 9 September 2026. Disclosures · how every claim here is evidenced

ungovr.providers.sgit.ai / packs / security-graph / 02__the-model.md

02 — The Model

View the raw file ↓02__the-model.md — rendered here, and served unrendered at /packs/security-graph/02__the-model.md. sha256 7778412bb213d545, checked against the vault on every build. The reader is an addition; the bytes are the document. The rendering drops the document's own title line, because this page already carries it as its heading, and rewrites intra-pack links so they resolve here.

version v0.1 · 9 September 2026

← 01 The anchor-node thesis [link removed: 01__the-anchor-node-thesis.md:] · Next → 03 The standards map [link removed: 03__the-standards-map.md:]


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_bybacks for evidences; accepted_byaccepts for accepted; conditional_oncondition_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:

  • Origin (ung: / akn: / std: / sg: / x:) → shape and border
  • Assertion class (asserted / inferred) → colour

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).

← 01__the-anchor-node-thesis.md03__the-standards-map.md →

This is the site's rendering of a vault document. Intra-pack links are rewritten so they resolve on this host; the raw file keeps every link exactly as the vault wrote it, including the breadcrumbs that point into the vault's own tree.