Home / Docs / The briefs / The ABP Is A Fractal Semantic Graph: One Row Crosses Nine Universes, Each Keeps Its Own Ontology, And The Ladder Runs Up To The Estate Of Agents
The ABP Is A Fractal Semantic Graph: One Row Crosses Nine Universes, Each Keeps Its Own Ontology, And The Ladder Runs Up To The Estate Of Agents
docs/briefs/v0.4.0__dev-brief__the-abp-is-a-fractal-semantic-graph-one-row-crosses-nine-universes-and-each-keeps-its-own-ontology.md, which is served unchanged. Anything rendered on this network stays one click from the file it came from.version v0.4.0 date 20 September 2026 from The site's agent, for the project lead to Whoever models the ABP graph, whoever builds the pages of abp.sgit.ai, and the teams at riskmandate.ai and store.sgit.ai who render against its data
type Dev brief (the mapping of the Agent Behaviour Policy onto Fractal Semantic Graphs: the universes an ABP crosses, the ontology each one keeps, the edges that join them, and the changes to this site in build order)
Written after reading this site at v0.3.0 in full, the platform guidance at sgit.ai/llms.txt, riskmandate.ai at v1.26.2 with its sixteen published behaviour policy vaults and seven lab pages, store.sgit.ai at v0.3.24, the Fractal Semantic Graphs page at sgit.ai/demos/fractal-graphs/ and graphs.sgit.ai at v0.6.22, including the correction it took at v0.6.21 that the grammar survives every zoom and the ontology is meant to change. Nothing here is implemented. It is a map, and the build order at the end says what each release would carry. Limitations: the universes above and beside the ABP are described by who owns them and by the edges into them, and their inner ontologies are named rather than written, because they are not this site's to write.
What This Is
The ABP, mapped onto the discipline the rest of the network now calls Fractal Semantic Graphs: this site already holds the ABP as a semantic graph, with fifteen verb edges, thirteen node type formulas and a lexicon in which read.file.project is three nodes, and by the zoom test as graphs.sgit.ai now states it that graph is mostly a well addressed hierarchy, because every zoom from a capability to its verb, object and reach lands in the same vocabulary; the fractal property lives at the edges of that graph, where a deployment shape opens into a vendor's vocabulary of tools, scopes and settings, where a barrier opens into a world of enforcers and layers, where a grant row opens into observations and probe runs, where a mandate opens into a deployer's own words about jobs, people and whose material, and where the whole ABP is one node in the licence and acceptance world that riskmandate.ai owns and this site must never hold; the finding is that an ABP is a junction object, its four objects are each owned by a different party who speaks a different vocabulary, and that is precisely the case Fractal Semantic Graphs exists for, so the right model is not one bigger ontology but nine small ones joined by named edges, with the grammar shared and nothing else; this brief names the nine universes one capability row crosses, from the source bytes to the licence condition, defines the ontology each keeps, lists every edge that crosses a boundary with its owner, settles the words altitude, level and universe so that the ruling of 20 August survives, answers the three open requests riskmandate.ai has published against this site by placing each in its universe, applies the zoom test row by row and reports which zooms are fractal and which are decomposition, and ends with the site changes in build order, one universe per release, with the universes that are gaps named as gaps rather than drawn. New here: the nine universes and their ontologies, the junction edge set, the lexicon scopes that let policy and control and grant mean different things in different worlds without a merge, the position on a connector that is present and switched off, and the rule that levels run up and down while universes run across, which is the one distinction that stops this map from becoming a hierarchy.
What Was Read, And What Each Source Settled
| Source | Read | What it settled for this brief |
|---|---|---|
| abp.sgit.ai v0.3.0, every page and every data file | 20 September 2026 | The four objects, the label, the 23 primitives, the lexicon of 33 words, the 15 edges, the 13 formulas, the three layers, the 9 stored deltas, and the two named gaps: quantity and interaction between agents |
| sgit.ai/llms.txt, the guidance and the Fractal Semantic Graphs page | 20 September 2026 | The definition: every node opens into a semantic graph with its own ontology, joined to the worlds above and below by named edges, down to the word; only the grammar is shared. And the sentence about this site: the agent rung is a vocabulary, not yet a join |
| graphs.sgit.ai v0.6.22, including the v2 lexicon and the fractal chapter of the second edition | 20 September 2026 | The corrected claim: uniformity of grammar is the mechanism, composition with local override is the claim; the zoom test in two halves; a lexicon held as scopes that may override the root with the superseded definition kept visible; name clashes are not a problem |
| riskmandate.ai v1.26.2: the ABP pages, sixteen vault pages, Lab 03 and Lab 07 | 20 September 2026 | What an ABP instance looks like as a vault: eight files, three inputs, one authored. The licence to operate with a referent. Three open requests against this site. Seven deployment shapes measured or documented there that this site's data does not carry |
| store.sgit.ai v0.3.24 | 20 September 2026 | The boundary: the store owns checkout, riskmandate.ai owns the products and the policies, this site is the free library and sells nothing |
Three facts from that reading decide the shape of the map.
The first is the corrected definition of fractal. The first edition of graphs.sgit.ai defined it as one grammar and one schema at every zoom, and this site's own graph module still quotes that version: if zooming into a node needs a new format or a special case, the system is hierarchical rather than fractal. The second edition corrected it on 23 August and propagated it on 20 September: what survives every zoom is the grammar, being verb edges with inverses, meaning in connectivity, supersede never delete and provenance; the ontology is meant to change at every altitude, and a system whose types and verbs are identical all the way down is a hierarchy. This brief is written against the corrected definition, and the module docstring on this site needs the same correction.
The second is that riskmandate.ai has already built the instance this site describes. Sixteen behaviour policy vaults, each with a grant, a starting mandate, a derived delta, a licence to operate and the files an agent reads, nine of them for this site's shapes and seven for shapes this site's data does not carry. The instance exists; what does not exist is the join between the instance and the worlds around it, and that join is what this map is for.
The third is the sentence on the Fractal Semantic Graphs page. abp.sgit.ai's 23 capability primitives are the right shape to attach to a system's actual permission set; no published vault yet imports a real grant and computes the delta against a mandate at scale. The ladder on that page runs from the text of a law to a threat on one compute instance and this site is named as the rung where the graph meets a real permission set. The rung is named and the edges into it are not drawn. Drawing them is the work.
The Zoom Test, Applied To v0.3.0 Before Anything Is Added
The test has two halves. If zooming in lands you in the same types, the same verbs and the same vocabulary, you have a hierarchy. If zooming in needs a different grammar, the claim is false. Every zoom that opens a new ontology joined by a named edge to the last is the claim working. Applied to every zoom this site offers today:
| Zoom | What you land in | Verdict |
|---|---|---|
| A capability into its verb, object class and reach class | Three nodes in the same lexicon, joined by has_verb, acts_on and reaches | Decomposition in one vocabulary. Very good addressing, and the hierarchy half of the test. It was the right thing to build and it is not the fractal property |
| A capability into its family and undo class | Two more nodes in the same lexicon | Decomposition again |
| A reach class into what each deployment shape says it means | Nine rows, each owned by the shape that said it, none merged | The first fractal move on the site. host is one word and nine local definitions, held without a merge. That is composition with local override, and the page says so |
| A deployment shape into its grant | GrantedCapability nodes carrying a barrier and an evidence tier | Decomposition. The shape has tools, reach names and routes, and none of them is a node yet |
| A barrier into what enforces it | Three Enforcer nodes | Fractal, one edge deep, and then it stops. enforced_by crosses into the enforcement world and the world has three nodes and no vocabulary |
| A granted row into how it is known | An EvidenceTier node | Fractal, one edge deep, then it stops. There is no observation, no probe run and no date behind the tier |
| A mandate into what it authorises | Capability nodes in the grammar | Decomposition. The deployer's own words, the person, the job and whose material are prose in a description field |
| A delta into its inputs | Pinned versions in a record | Fractal in intent: the record names another world's versions. No node for the computation, the trigger or the series |
| This vocabulary into the game's | One declared bridge, similar_to, total by construction | Fractal, and honest that the bridge is total today and declared so that divergence has somewhere to be recorded |
| Anything into a score | Nothing, by rule | Not a zoom. The edge is refused, and the refusal is correct |
The verdict, honestly. v0.3.0 passes the grammar half everywhere, which is the part that matters for a validator, a query engine and a provenance rule. It passes the recursion half in exactly two places, the reach class disagreement and the bridge to the game, and in three more places it takes one step into another world and finds it empty. Everywhere else it decomposes one vocabulary very well. That is not a defect in v0.3.0. It is the description of what a fractal map has to add: not more nodes in the grammar, but the worlds the existing edges already point at.
Three Words, Settled Before The Map
This site and the Fractal Semantic Graphs page use the word altitude for different things, and the map cannot be drawn until that is settled.
| Word | On this site today | On the Fractal Semantic Graphs page | Ruling proposed here |
|---|---|---|---|
| Altitude | The stakeholder axis. Altitude is for stakeholder, depth is for detail, ruled 20 August. The executive rendering and the engineer's rendering are two altitudes over one fact set | The rung of the world ladder: the law at altitude zero, the compute instance at altitude eleven | Keep the 20 August sense on this site. An altitude is a rendering of the same facts for a different reader, and it lives in the projection universe below. It is never a different world |
| Universe | Not used | The page's own word for the world you land in when a link crosses a boundary: on one of those links you can jump into another universe | Adopt it. A universe is a world with its own owner, its own node types and its own verbs, joined to its neighbours by named edges. An ABP row crosses nine |
| Level | The five level compression hierarchy of the book, which is the altitude axis again | The rungs, counted | Use level only for position on the ladder, up towards the estate of agents and down towards the byte. Levels are up and down. Universes are across |
The rule that follows is the one that keeps the map from collapsing into a tree. The four objects of an ABP are not levels. The mandate is not above the grant and the delta is not below the barrier. They sit side by side at one level, and each opens into a different universe owned by a different party. A map that stacks them is a hierarchy with the wrong shape. The ladder runs up, to the licence and to the estate of agents, and down, to the word and to the byte. The four objects run across.
The Map: One Row, Nine Universes
send.endpoint.world and said the shape exposes it through its fetch tool and grants it as a row known by documentation, bounded by a boundary that an egress proxy enforces. The shape does not grant that row: it grants send.endpoint.allowed at that barrier, and the mandate asked for it, so the path would never have reached a prohibition. The row the data walks is authenticate-as.credential.tenant, which is excess and bounded, and the table and the sentence below now say so. The walk itself is built from the published data on every build at /model/universes/, which is how this mistake was found and why it cannot recur. Two statuses in the universe sections further down also moved, from live to partial, when the status became a gate check: the source bytes are per file rather than per node, and the derivation's records are files rather than nodes. The prose there stands as written; the data at /data/universes/ is the record.The map is not a picture of everything, because the third graph rule forbids one. It is one query, run against one row of one published example, and it is the query every example page should end with once the universes exist. The row is send.endpoint.world in the shape anthropic/claude-code-remote/ccr-container, which is the shape this site is built from and the shape riskmandate.ai delivered its first vault for.
| Level | Universe | The node the walk is standing on | The edge that leaves it | Owner of the universe |
|---|---|---|---|---|
| down | U0 The source bytes | the row for the primitive in upstream/primitives.json, and its hash sha256:d6d4ba40, retrieved 11 September | hashed_from, up into the grammar | nobody: the bytes are what they are |
| down | U1 The grammar | authenticate-as, credential, tenant; and the primitive authenticate-as.credential.tenant they spell, undo no | granted_by, across into the shape | abp.sgit.ai, promoted from the game |
| across | U2 The deployment shape | the shape ccr-container, profile version 2026-09-05.2, through its shell and its harness tools, in a container that is the vendor's | grants, into the grant | the vendor's published words, read on a date |
| across | U3 The grant and its evidence | the granted row, known by inference, with the note that the token's scope is set by the platform | bounded_by, into enforcement | whoever measured, or the documentation |
| across | U4 The enforcement | the barrier boundary, enforced by something above the grant, which is a control | withheld_by or authorised_by, into the deployer's world | whoever set the control: here the platform |
| across | U5 The deployer | the mandate coding-assistant-in-a-container, authored 9 September, which left this capability unstated; the person who will correct it | derived_into, into the derivation | the deployer, in their own words |
| across | U6 The derivation | the stored delta, computed 11 September by abp.delta/v1, pinning profile 2026-09-05.2 and mandate 2026-09-09, with the row in excess and not unbounded | projected_as, into the projections | the computation: never a person |
| across | U7 The projections | the prohibition the agent must not act in accounts with the credentials it holds, at barrier boundary, enforced today, rendered on the leaflet and in AGENTS.md | licensed_under, up into the licence | the renderer, and the fact diff that checks it |
| up | U8 The licence, the acceptance and the risk | a condition of LICENCE-TO-OPERATE.md in vault ruj286tr, beside the token scope that enforces it; the owner who will sign; the interval | gives_rise_to, further up into risk, which this site never draws | riskmandate.ai |
Read as one sentence, which is the fifth graph rule and the acceptance test: the words authenticate-as, credential and tenant spell a primitive that the shape ccr-container grants through its shell and its harness as a row known by inference, bounded by a boundary that the token's scope enforces and the platform set, which the mandate a coding assistant in a container left unstated, so the derivation of 11 September records it as excess and not unbounded, which the leaflet renders as a prohibition that is enforced today, and which the licence in vault ruj286tr carries as a condition beside its enforcer, for an owner who has not yet signed.
Nine universes, nine vocabularies, one grammar, one traversal. That sentence is the whole argument of this brief, and every clause of it is a node this site can hold or an edge it can declare.
The Universes, One At A Time
Each universe below is stated the same way: who owns it, what its centre of gravity is, what its smallest node is, its node types, its verbs with inverse, domain and range, the formulas that classify inside it, what exists on this site today, its status, and the edges that leave it. The verbs marked reused are in the published edge set at graphs.sgit.ai or in this site's own set already; the ones marked proposed are new here and follow the extension rule: a sentence, a different sentence for the inverse, a domain and a range.
U0 The source bytes
Owner nobody. Centre of gravity the hash. Smallest node a byte range in a file that was fetched on a date. Status live: every promoted file carries its source, retrieval time and content hash, and the build refuses to run if the bytes disagree with their manifest.
| Node type | Formula |
|---|---|
| SourceFile | a node with a -fetched_from-> [URL] and a -hashes_to-> [Digest] |
| ByteRange | a node -inside-> a [SourceFile] with a stated offset and length |
| Verb | Inverse | Domain | Range | Reads as | From |
|---|---|---|---|---|---|
| fetched_from | serves | SourceFile | URL | this file was fetched from this address on this date | proposed |
| hashes_to | digest_of | SourceFile | Digest | this file hashes to this digest | proposed |
| hashed_from | grounds | Node in any universe | ByteRange | this node was read from these bytes | proposed; the AIUC-1 vault calls its version anchors |
What this adds to today. Today the provenance block sits on every data file and says the same thing for every row in it. The Regulation Graph ends every chain in a hash of the retrieved bytes, per node. The per row version is what riskmandate.ai asked for in its Lab 03, request three, and it belongs here: a row's evidence is a node in U3 that is hashed_from a byte range in U0.
U1 The grammar
Owner abp.sgit.ai, promoted from what-can-it-do.games.sgit.ai and bridged back to it. Centre of gravity the primitive. Smallest node the word. Status live at v0.3.0 and complete for what it is: 10 verbs, 9 object classes, 5 reach classes, 9 families, 3 undo classes, 23 primitives, 33 word nodes with their own addresses.
This universe keeps the seven formulas it has: Verb, ObjectClass, ReachClass, Family, UndoClass, Capability and the rule that a specific path, host or mailbox is an instance of a primitive and never a new one. Nothing is added to it by this map, and that is deliberate: the grammar is the shared layer that everybody reads by address and nobody forks, so it has to stay small. Two verbs in it, receive and revoke, have nothing under them and are kept as named absences.
One property is added, on a proposal from riskmandate.ai, and it is added here with a per deployer override in U5. The property is material, with the values own, organisation, third_party and mixed: whose material a capability reaches. Reach answers how far; material answers whose. A property, not a fourth element of the grammar, because a fourth element multiplies the primitives and the vocabulary has to stay readable by address. The value that matters is mixed, because a mailbox is mixed, a shared drive is mixed, and no setting any vendor documents makes mixed into own. The lean riskmandate.ai stated, vocabulary with a per policy override, is adopted: the default lives on the primitive here, the override lives on the mandate in U5, and a delta records which one it used.
Edges leaving U1: granted_by into U2, authorised_by and withheld_by into U5, similar_to across the bridge to the game, hashed_from down into U0.
U2 The deployment shape
Owner the vendor's published words, read on a date, with a hash, and never probed. Centre of gravity the setting. Smallest node a scope, a flag or a line on a documentation page. Status half built: a shape today carries its tools, its reach names and the route each row goes through, as strings in a profile file. None of them is a node.
This is the first universe where the vocabulary is not this site's. A vendor speaks in OAuth scopes such as gmail.readonly, in tool names such as WebFetch, in flags such as dangerously-skip-permissions, in consent screens, in administrator settings and in the sentences on its documentation pages. The ABP does not translate those into its grammar. It keeps them in the vendor's words and draws an edge from each to the primitive it exposes.
| Node type | Formula |
|---|---|
| Product | a node that -has_variant-> at least one [DeploymentShape] |
| DeploymentShape | a node that -grants-> at least one [Capability]; unchanged from today |
| Tool | a node that a [DeploymentShape] -runs_with-> and that -exposes-> at least one [Capability] |
| Scope | a node that a [Tool] or [DeploymentShape] -scoped_by->, in the vendor's own identifier |
| Setting | a node that -moves-> a [Barrier] on at least one [GrantedCapability]; the confirmations flag is the published case |
| DocumentationPage | a [SourceFile] in U0 that a [Shape], [Tool], [Scope] or [Setting] is -documented_at-> |
| Contradiction | a node where an -advertises-> claim and a -scoped_by-> scope on the same [Product] disagree, both quoted, both dated, published unresolved |
| Verb | Inverse | Domain | Range | Reads as | From |
|---|---|---|---|---|---|
| has_variant | variant_of | Product | DeploymentShape | this product has this variant | proposed |
| runs_with | run_by | DeploymentShape | Tool | this shape runs with this tool | proposed |
| exposes | exposed_by | Tool | Capability | this tool exposes this capability | reused from graphs.sgit.ai edge set |
| scoped_by | scopes | Tool or DeploymentShape | Scope | this tool is scoped by this vendor scope | proposed |
| moves | moved_by | Setting | Barrier | this setting moves this barrier | proposed |
| documented_at | documents | Shape, Tool, Scope or Setting | DocumentationPage | this tool is documented at this page, read on this date | proposed |
| advertises | advertised_by | Product | Capability | this product's page advertises this capability | proposed |
| contradicts | contradicted_by | Contradiction | Scope or Capability | this advertised claim contradicts this granted scope | proposed |
What riskmandate.ai has already built in this universe, and what this map does with it. Its Lab 01 holds four vendor contradictions with verbatim quotes and URLs, and its vault directory holds seven shapes this site's data does not carry: two Gmail scopes, a Drive scope, a Microsoft 365 connector, a Dropbox server, the Google Workspace servers and an n8n instance measured live by an early user. Under the three layers those are layer one facts, owned by nobody, and they belong at the address every consumer reads rather than inside one consumer's vaults. The change is an intake path, not a merge: a shape proposed to this site carries its source, timestamp and hash, the gate checks them as it checks every profile today, and riskmandate.ai's vaults then pin this site's version of the shape rather than their own copy. That answers Lab 03 request two by placing it, and it is the request they marked as the one that unblocks a product.
The position on a connector that is present and switched off, which is Lab 03's second convention and the most common state in any real estate. The enforcer test already decides it. If the switch that turns the connector on is inside the agent's grant, the capability is in the grant at barrier setting, one click away, and the label counts it. If the switch is outside the grant, held by an administrator the agent is not, the capability is not in the grant, and it is recorded in U9 below as one setting away for the estate. No new barrier kind and no new label field: a capability is in the grant when the grant includes the means to reach it, and a switch is a means. The profile needs one node for the setting and one edge saying who can move it.
Edges leaving U2: exposes into U1, grants into U3, moves into U4, documented_at into U0, instantiated_by from U9.
U3 The grant and its evidence
Owner whoever observed, or the documentation that was read. Centre of gravity the observation. Smallest node one probe result on one instance on one date. Status one edge deep: every granted row carries an evidence tier and the tier is a node; nothing is behind the tier.
The GrantedCapability node stays what it is, the node that carries the barrier, because the barrier is a property of a capability in a shape and never of the capability itself. What opens behind it is the world that answers how do you know.
| Node type | Formula |
|---|---|
| GrantedCapability | unchanged: a [Capability] with an inbound -grants-> from a [DeploymentShape], carrying a -bounded_by-> [Barrier] and a -known_by-> [EvidenceTier] |
| Observation | a node -observed_on-> an [Instance] on a date, -backed_by-> an [EvidenceFile], that -evidences-> at least one [GrantedCapability] |
| Instance | a running deployment of a [DeploymentShape] that somebody was entitled to run |
| SelfReport | an [Observation] made by the agent about its own grant, from inside the shape; it stays a claim until a log held outside the agent agrees |
| EvidenceFile | a [SourceFile] in U0 |
| Refusal | an [Observation] that a probe was stopped before it ran, by something above the session; a barrier the grant has no row for |
| Verb | Inverse | Domain | Range | Reads as | From |
|---|---|---|---|---|---|
| known_by | evidences | GrantedCapability | EvidenceTier | unchanged | this site |
| observed_on | hosted | Observation | Instance | this observation was made on this instance | reused from graphs.sgit.ai edge set |
| backed_by | backs | Observation | EvidenceFile | this observation is backed by this file | reused from graphs.sgit.ai edge set |
| measured_by | measures | GrantedCapability | Observation | this row was measured by this observation | reused from graphs.sgit.ai edge set |
| contradicts | contradicted_by | Observation | Observation | this observation contradicts that one | proposed |
| stopped_by | stopped | Refusal | Enforcer | this probe was stopped by this enforcer | proposed |
The formula that moves. Measured today is a headline, 21 of 99, counted from the observed tier. With observations as nodes it becomes a query: a row is measured when it has a -measured_by-> path to an [Observation] whose [Instance] was one we were entitled to run. The headline is then computed on every build rather than promoted from a sentence, per row, with a date, which is exactly what riskmandate.ai's Lab 03 asked for in request three. And the calibration loop on the delta page, where a deployment that runs and reports back moves a row from derived to measured, becomes an edge somebody adds rather than a paragraph. Lab 07's grant check, eleven of fifteen rows seen present in ordinary work and two probe batches refused by the platform's own classifier, is a SelfReport and two Refusals, and both node types are named here because that check has already happened and had nowhere to go.
Edges leaving U3: bounded_by into U4, authorised_by into U5, derived_into into U6, hashed_from into U0.
U4 The enforcement
Owner whoever set the control: the vendor, the platform, the deployer or nobody. Centre of gravity the enforcer. Smallest node one configuration line at one layer, set by one party, on one date. Status one edge deep: four barriers, three enforcers, one Control formula that the gate walks on every build. The formula is the most important thing on the site and it lands in a world with three nodes.
The dev brief of 11 September on the prohibition's two lives already wrote most of this universe's vocabulary and it was never made into nodes: five layers, prompt, tool schema, client rule, gateway and sandbox, of which only the last three are controls, and the datum that ask is a weak control because people approve roughly ninety three per cent of prompts. Lab 06 added the property the brief did not have: a barrier is perishable, and a classifier that refuses a probe today is a barrier with no row and no expiry.
| Node type | Formula |
|---|---|
| Barrier | unchanged: a node that -bounds-> at least one [GrantedCapability] |
| Enforcer | a node that -enforces-> at least one [Barrier], -set_by-> a [Party], -at_layer-> a [Layer] |
| Layer | one of prompt, tool schema, client rule, gateway, sandbox; a node a [Layer] is -above-> or -below-> another |
| Party | the vendor, the platform, the deployer, the administrator, the agent's own account, or nobody |
| Control | unchanged: a [Barrier] that is -enforced_by-> an [Enforcer] the [Grant] does not include |
| EvidencedControl | a [Control] whose [Enforcer] is -backed_by-> an [Observation] in U3; the regulated customer's stricter formula from the three layers page, now writable |
| CompiledRule | a node that a [Prohibition] in U7 -compiles_to->, in a named target language, that -passes-> a shadowed permit analysis |
| Verb | Inverse | Domain | Range | Reads as | From |
|---|---|---|---|---|---|
| enforced_by | enforces | Barrier | Enforcer | unchanged | this site |
| set_by | sets | Enforcer | Party | this enforcer was set by this party | proposed |
| at_layer | layer_of | Enforcer | Layer | this enforcer sits at the gateway layer | proposed |
| removable_by | can_remove | Enforcer | Party | this enforcer can be removed by this party | proposed; the enforcer test as an edge |
| expires_on | expiry_of | Enforcer | Date | this enforcer is good until this date, or has no stated expiry | proposed |
| compiles_to | compiled_from | Prohibition | CompiledRule | this prohibition compiles to this rule | proposed |
| defeated_by | defeats | Barrier | Observation | this barrier was defeated in this observation | reused from graphs.sgit.ai edge set |
The formula that carries the argument does not change and gains a second reading. Control is a barrier whose enforcer the grant does not include. With Party and removable_by as nodes and edges, does not include becomes a path: the grant includes the enforcer when the agent's own account is a -can_remove-> party of it. That is the same formula walked one universe further, and it is what lets a customer write EvidencedControl beside it without touching ours. The five layers become nodes so that the leaflet's rightmost column, the layer a control would sit at, stops being a string.
Edges leaving U4: bounds into U3, moved_by from U2, stopped from U3, compiled_from into U7, enforces_condition into U8.
U5 The deployer
Owner the deployer, in their own words, and the named person who will correct the draft. Centre of gravity the job. Smallest node one sentence somebody said about one capability on one date. Status eight starting mandates exist, each a want list, a refuse list and an unstated list over the 23 primitives, with a description and per capability notes in prose. The person, the job, the purpose and whose material are not nodes.
This is the universe where the estate's own rule that customisation and consolidation are one mechanism does its work. A customer's mandate is written in their vocabulary: per role rather than per deployment, per client engagement, per data class. It attaches to the grammar by authorises and withholds and to nothing else.
| Node type | Formula |
|---|---|
| Mandate | unchanged: a node that -authorises-> at least one [Capability] |
| Deployer | an [Organisation] or [Person] that -issued-> at least one [Mandate] |
| Owner | a [Person] that -corrected-> or -signed-> a [Mandate]; never a team and never a function |
| Job | a node a [Mandate] -is_for->, in the deployer's words: draft the reply, fix the build |
| Expectation | one row of a [Mandate]: a [Capability] with a stance of wanted, refused or unstated, -said_by-> a [Person] on a date |
| MaterialOverride | a node on a [Mandate] that -overrides-> the material value of one [Capability] from U1, with its authority recorded and the default kept visible |
| Correction | a [Mandate] that -supersedes-> an earlier one; the sale, on riskmandate.ai's own account |
| Verb | Inverse | Domain | Range | Reads as | From |
|---|---|---|---|---|---|
| authorises | authorised_by | Mandate | Capability | unchanged | this site |
| withholds | withheld_by | Mandate | Capability | unchanged | this site |
| is_for | served_by | Mandate | Job | this mandate is for this job | proposed |
| issued | issued_by | Deployer | Mandate | this deployer issued this mandate | proposed |
| said_by | said | Expectation | Person | this expectation was said by this person on this date | proposed |
| corrected | corrected_by | Person | Mandate | this person corrected this mandate | proposed |
| overrides | overridden_by | MaterialOverride | Capability | this mandate overrides whose material this capability reaches | proposed |
| supersedes | superseded_by | Mandate | Mandate | reused: a corrected mandate supersedes its draft and the draft is kept | this site |
The interchange form lives here and nowhere else. The W3C rights expression vocabulary has permission, prohibition and duty, constraints on time, purpose, count and place, a conflict strategy in which prohibitions win, and inheritance, and the dev brief of 11 September placed it as the interchange vocabulary through a profile that adds these primitives as actions. In this map that profile is a projection of U5 and U6, written out in U7, and it is never claimed to enforce anything, because enforcement is U4. The name clash is not a problem: an ODRL Policy is a scoped term in U5's lexicon, the insurance instrument is a scoped term in U8's, and the behaviour policy is the root. The lexicon section below says how.
Edges leaving U5: authorises and withholds into U1, derived_into into U6, licensed_under into U8, elicited_from into U9 when a twin exists.
U6 The derivation
Owner the computation, and never a person. Centre of gravity the pinned input. Smallest node one stored record with its inputs, its time and the version of the code that produced it. Status live: nine stored deltas, each pinning the profile version, the mandate version, the pack version, the time and abp.delta/v1, recomputed by the gate on every build. What is missing is the series, the trigger and the crossing.
The delta page already wrote this universe's rules: the delta is a materialised view; reality is the third input; a recompute has a trigger and the trigger has a standard; a threshold crossing is a record and the consequence is a policy somebody set in advance; the history is the business case read rather than constructed. None of that is a node yet.
| Node type | Formula |
|---|---|
| DeltaRecord | a node -derived_from-> exactly one [GrantVersion] and exactly one [MandateVersion], -computed_by-> one [Computation], with an -excess->, an -unbounded_excess-> and a -shortfall-> set; no field writable by a person |
| Computation | a version of the code: abp.delta/v1 today |
| Series | the ordered set of [DeltaRecord]s for one shape and one mandate, each -supersedes-> the last |
| Trigger | an event that -causes_recompute-> of a [Series]: credential change, token claims change, assurance level change, device compliance change, from the continuous access evaluation profile; a new observation in U3; a corrected mandate in U5; a new pack version in U1 |
| Crossing | a [DeltaRecord] whose count -crosses-> a [Threshold] somebody set in advance; a record, never a verdict |
| Verb | Inverse | Domain | Range | Reads as | From |
|---|---|---|---|---|---|
| derived_from | derived_into | DeltaRecord | GrantVersion or MandateVersion | this record was derived from these pinned inputs | proposed |
| computed_by | computed | DeltaRecord | Computation | this record was computed by this version of the code | proposed |
| exceeds | exceeded_by | GrantedCapability | Mandate | unchanged | this site |
| falls_short_of | unmet_by | Mandate | Capability | unchanged | this site |
| causes_recompute | recomputed_on | Trigger | Series | this event caused this series to recompute | proposed |
| crosses | crossed_by | DeltaRecord | Threshold | this record crosses this threshold | proposed |
| supersedes | superseded_by | DeltaRecord | DeltaRecord | reused | this site |
The rule that does not change is the one that makes this universe safe to open. No field on any node here is authored. A Trigger is received, a Crossing is computed, a Series is appended. The gate's twelfth check, which recomputes every stored delta from its pinned inputs, extends to the series without a new idea: every record in a series recomputes, and a series with a gap in its supersedes chain fails the build. Lab 07's history folder, one entry per recompute, is the live instance of Series and it exists in riskmandate.ai's vault today.
Edges leaving U6: derived_from into U3 and U5, projected_as into U7, crosses into a Threshold that U8 sets.
U7 The projections
Owner the renderer, and the fact diff that has to check it. Centre of gravity the fact set. Smallest node one rendered sentence that traces to one node. Status the label, the leaflet and the prohibitions exist and are generated from one call; AGENTS.md, SKILL.md and LICENCE-TO-OPERATE.md exist in riskmandate.ai's vaults; the fact set is not data and the fact diff, named as the blocker on four consecutive days in September, does not exist.
This is the universe where altitude in the 20 August sense lives. Every projection is a rendering of the same fact set for a different reader, and the diff over leaf assertions between any two projections must be empty. The classes differ by altitude, the facts do not.
| Node type | Formula |
|---|---|
| FactSet | the leaf assertions of one [DeltaRecord]: this shape grants this capability at this barrier with this undo class; this mandate authorises these; therefore this excess. Computed, never authored |
| Projection | a node -projects-> one [FactSet], -rendered_for-> one [Audience], with every sentence -traces_to-> a node |
| Audience | a decision maker, an engineer, an auditor, an underwriter, an agent; the altitude axis |
| Label | a [Projection] with nine fields and no score |
| Leaflet | a [Projection] with every row |
| Prohibition | a [Projection] of one [Excess] row as a sentence, carrying its barrier today and the layer a control would sit at; -compiles_to-> a [CompiledRule] in U4 |
| AgentFile | a [Projection] -rendered_for-> the agent itself: AGENTS.md, SKILL.md; honest on its own face that it is a rule in prose, the second barrier, and bounds nothing |
| InterchangeDocument | a [Projection] in the W3C vocabulary through the agent profile; a rule somebody wrote down until U4 compiles it |
| FactDiff | a node that -compares-> two [Projection]s over their [FactSet]s and is empty or names the row |
| Verb | Inverse | Domain | Range | Reads as | From |
|---|---|---|---|---|---|
| projects | projected_as | Projection | FactSet | this rendering projects this fact set | proposed |
| rendered_for | reads | Projection | Audience | this rendering is for this reader | proposed |
| traces_to | rendered_in | Sentence | Node | this sentence traces to this node | proposed |
| compares | compared_by | FactDiff | Projection | this diff compares these two renderings | proposed |
| same_facts_as | same_facts_as | Projection | Projection | symmetric on purpose, and only ever computed | proposed |
Why this universe is where the fact diff finally gets built. The pack's specification was precise: the diff is over leaf assertions, not over structure. With FactSet as a node and every Projection carrying a projects edge to it, the diff is a set comparison over one node's edges, and the gate can run it on every build across the label, the leaflet, the prohibitions and the agent files. The multi audience promise on the store, which cannot be printed until the diff exists, becomes printable the release this ships.
Edges leaving U7: projects into U6, compiles_to into U4, licensed_under into U8, traces_to into every universe.
U8 The licence, the acceptance and the risk
Owner riskmandate.ai. Centre of gravity the named person and the date it comes back. Smallest node one condition beside the thing that enforces it. Status exists on riskmandate.ai as a template file in every published vault, unissued, and as the acceptance mechanism the Risk Graph Explorer and the Agentic Browser Isolation vaults already run. This site never holds it. It holds the anchor nodes the licence points at, and it declares the edges that cross into it.
| Node type, owned there | What it points at here |
|---|---|
| LicenceToOperate | -licensed_under-> one [Mandate] in U5 and one [DeltaRecord] in U6, -pinned_to-> a [GrantVersion] and a pack version, -issued_by-> an [Owner], -valid_until-> a date |
| Condition | -enforced_by-> an [Enforcer] in U4, or beside the admission that nothing enforces it |
| Acceptance | -accepted_by-> a named person for an interval; no deny button |
| Risk | -arises_from-> an [Excess] row in U6; the first node with assets in it, and the first place a score can exist |
| Threshold | what a [Crossing] in U6 crosses; set here, in advance, and never by the ABP |
The edges licensed_under, pinned_to, enforced_by on a condition and arises_from are declared by riskmandate.ai in its vault, pointing at this site's addresses by version and hash, which is the three layers construction working as designed: their formulas, their bridges, our facts, and nothing merged. The one sentence this site adds to its own pages is that the score has a home and this is its address.
Beside and above: the four universes this map names and does not draw
| Universe | Owner | What it holds | Edges into the ABP | Status |
|---|---|---|---|---|
| U9 The estate and the twin | the customer, through twins.sgit.ai | the real environment: this machine, these accounts, this repository attached to this session, this connector present and off, this credential in this home directory; the twin's own clock | instantiates a [DeploymentShape] in U2; resolves what host, tenant and world mean for one instance, which is the reach class disagreement made per estate; one_setting_away for a capability whose switch is outside the grant; synchronised_at for the second of the three clocks; holds a MaterialOverride when the estate knows whose material it is | a gap, and the one the delta page already named: this site has no twin connected to anything and its label says so |
| U10 The obligations | standards.sgit.ai and the AIUC-1 conformance vault | provisions, articles, controls of a standard, the consumer guidance of 9 March 2026, the processor rule in Article 28 | cites from a [Mandate] or a [Prohibition] to a provision; crosswalks_to from a standard's control to a [Capability]; never a conformance claim | a bridge: the foundation document already cites them in prose; the change is that a citation becomes an anchor node with a constructible URL |
| U11 The runtime | whoever holds the logs: never this site | tool calls, turns, sessions, counts within an interval, sums within an interval, the licence to operate simulation's per turn cost, behaviour drift | instance_of from a tool call to a [Capability]; observed_in from a call to a [Session]; drifted_from from a session to a [Mandate]. Quantity lives here, which is the first gap the foundation document names | a gap: the ABP is before the action and this universe is after it, and the two are joined by exactly the edges that make drift and excess different measurements |
| U12 The estate of agents | the organisation | many ABPs; one agent's output as another's input; delegation; sub processing under Article 28 | acts_on_output_of between two [DeploymentShape] instances; delegates_to; composes_into, whose range is a capability neither mandate authorised. The second gap the foundation document names | a gap, and the fractal claim running upward: an ABP of ABPs is the same shape one level up, with the composed grant as its grant. Nothing on the site says more than one sentence about it today, and this table is the second sentence |
Named gaps get filled and unnamed ones do not. These four are named so that the next brief has an address to write to.
The Junctions: Every Edge That Crosses A Boundary
The property that turns a set of graphs into a fractal rather than a pile is the edge that crosses from one universe into another. Each one below is stated with the universe on each end and the party who owns the edge, because an edge is an assertion by somebody.
| Edge | Inverse | From universe | To universe | Owned by | Status |
|---|---|---|---|---|---|
| hashed_from | grounds | any | U0 | the promoter | per file today, per node proposed |
| granted_by | grants | U1 | U2 | this site | live |
| exposes | exposed_by | U2 | U1 | this site, from the vendor's words | proposed |
| grants | granted_by | U2 | U3 | this site | live |
| moves | moved_by | U2 | U4 | this site | proposed |
| bounded_by | bounds | U3 | U4 | this site | live |
| stopped_by | stopped | U3 | U4 | whoever ran the probe | proposed |
| authorised_by | authorises | U3 | U5 | this site | live |
| derived_from | derived_into | U6 | U3 and U5 | the computation | live in intent, pinned versions today |
| projected_as | projects | U6 | U7 | the renderer | proposed |
| compiles_to | compiled_from | U7 | U4 | whoever compiles | proposed |
| licensed_under | licenses | U8 | U5 and U6 | riskmandate.ai | live in its vaults |
| pinned_to | pins | U8 | U3 | riskmandate.ai | live in its vaults |
| enforces_condition | condition_of | U4 | U8 | riskmandate.ai | live in its vaults, as prose |
| arises_from | gives_rise_to | U8 | U6 | riskmandate.ai | never drawn here |
| instantiates | instantiated_by | U9 | U2 | the twin | gap |
| one_setting_away | one_setting_from | U9 | U1 | the twin | gap |
| cites | cited_by | U5 or U7 | U10 | this site | prose today |
| crosswalks_to | crosswalked_from | U10 | U1 | the standard's vault | live in the AIUC-1 vault, at article level |
| instance_of | instanced_by | U11 | U1 | whoever holds the logs | gap |
| composes_into | composed_from | U12 | U1 | the organisation | gap |
| similar_to | similar_to | U1 | the game's vocabulary | this site | live, total by construction |
Twenty two junction edges. Seven are live, two are live in riskmandate.ai's vaults rather than here, one is a sentence on a page, and the rest are proposed or gaps. There is no relates_to among them and there will not be one.
The Lexicon Becomes Scopes, Because Name Clashes Are Not A Problem
One consequence of keeping nine vocabularies is that the same word means different things in different universes, and nothing breaks as long as the definitions are scoped and the overrides are recorded. graphs.sgit.ai holds its book's lexicon exactly this way at v2/lexicon: a root scope any other scope may link to, per source scopes that map their terms onto the root, an override recorded with its authority and the superseded definition kept visible, and a resolution rule: a term at a scope means that scope's definition if present, else the parent's.
The lexicon on this site today is one scope: the 33 words of the grammar. It should become the root of several.
| Term | In the root scope, this site | Scoped elsewhere | Why it must not be merged |
|---|---|---|---|
| policy | never used alone: it is the ABP or the behaviour policy | U5: an ODRL Policy is a set of rules. U8: the insurance instrument with bands, ceilings, a pool and a premium, on the licence to operate demonstration | three standing rulings, and the store's boundary page; one word, three worlds, and each world is right |
| control | a barrier enforced by something the grant does not include | U4, a regulated customer: enforced and evidenced. U10, a standard: a numbered requirement with crosswalks. AIUC-1 has 53 of them | the three layers page's own example of a per party formula |
| grant | everything the agent can do, as primitives | riskmandate.ai: what a credential technically permits, as the union of every route | the same fact set, one level of resolution apart; riskmandate.ai's reading is U9's |
| mandate | what the deployer authorised and expected, as a want, refuse and unstated list | riskmandate.ai: an exception, approval or agent action with an owner, a blast radius and an expiry | U5 and U8 disagree about what a mandate carries, and the disagreement is where the licence gets its fields from |
| host | the machine, container or account it runs as | nine shapes, nine local definitions, already published unmerged | the first fractal move on this site, and the model for the rest |
| licence to operate | not defined here | U8: the organisation is the authority, the behaviour policy is the instrument, the agent is the licensee; a file in the vault, unissued until signed | ruled by riskmandate.ai on 15 September by asking for the file by name; this site links and does not define |
| altitude | a rendering for a reader | the Fractal Semantic Graphs page: a rung on the ladder | settled above: this site keeps the 20 August sense and says universe for the other |
The change is a scopes field on data/lexicon/index.json in the shape graphs.sgit.ai already publishes, with the root scope carrying the grammar and one scope per universe carrying the terms it overrides, each with its authority and the superseded definition kept. A term that appears in a scope and is neither mapped to the root nor marked as a named absence fails the build, which is the gate graphs.sgit.ai already runs.
What This Answers For riskmandate.ai
Lab 03 published three requests against this site on 12 September. Each is answered by placing it in a universe, and the answer is the placement.
| Request | Where it lives | The position |
|---|---|---|
| A material property with the values own, organisation, third_party, mixed | U1 as a default on the primitive; U5 as a MaterialOverride on the mandate with its authority recorded; U9 when the estate knows better than either | Adopted, with the override riskmandate.ai leaned towards. A property and never a fourth element, because the grammar has to stay readable by address |
| Four connector shapes, mailbox and drive, personal and corporate | U2, through an intake path with source, timestamp and hash, and the Contradiction node for where the advertised capability and the granted scope disagree | The seven shapes riskmandate.ai has already built are the proposals. This site promotes them to layer one and riskmandate.ai's vaults pin the promoted version |
| Per row provenance, machine readable | U3 as Observation nodes hashed from U0 byte ranges, with measured as a formula rather than a headline | Adopted |
| A stated position on enabled but switched off | U2 for the switch as a Setting node with who can move it; U9 for the estate's view | If the switch is inside the grant the capability is in the grant at barrier setting. If it is outside, the capability is not in the grant and the estate records it as one setting away. The enforcer test decides it and no new barrier kind is needed |
| A shape identity and a vocabulary version to pin to | U2 and U1: a shape is its id plus its profile version; the vocabulary is the pack version; a DeltaRecord in U6 already pins both | Already true in the data and never stated as a contract. The schema page gains the sentence |
The Site Changes, In Build Order
One universe per release, the live ones first, the gaps last and only as named absences. Every release regenerates every page from data, carries a version record with a sentence for a title, and passes the gate.
| Release | Universe | What lands | Done when |
|---|---|---|---|
| v0.4.0 | the map | This brief in docs/briefs/, in the index, in llms.txt and in the sitemap without a second edit; a pointer from the graph page; the module docstring's fractal test corrected to the second edition's wording | This brief is served, and the graph page links it |
| v0.5.0 | the universes as data | data/universes/index.json and one file per universe with its owner, status, node types, verbs and junction edges; a universe field on every node type formula and a crosses field on every junction edge; a page at /model/universes/ that renders one query, the nine universe walk of one row, and one page per universe rendering its ontology; a nav entry under the model | The gate's fourteenth check: every edge names its universe, a junction edge crosses exactly two, every universe has an owner and a status, and no edge is relates_to |
| v0.6.0 | U7 the projections | FactSet as data per stored delta; the label, the leaflet and the prohibitions each declared as a Projection over it; the fact diff as a gate check that fails on a single leaf assertion differing between any two renderings; every example page ends with the nine universe sentence built from its own data | The diff runs and is empty, which unblocks the multi format promise on the store |
| v0.7.0 | U2 the deployment shape | Tool, Scope, Setting and DocumentationPage as nodes; exposes and moves as edges; the material property on the 23 primitives; the intake path for proposed shapes with the Contradiction node; the seven riskmandate.ai shapes promoted with their sources, hashes and dates, marked derived except the n8n grant, marked self reported | The confirmations pair on the home page reads as one Setting node moving one Barrier, and the connector shapes are at this site's address |
| v0.8.0 | U3 the evidence | Observation, Instance, SelfReport, Refusal and EvidenceFile as nodes; measured as a formula run on every build; the headline computed rather than promoted; per row source, date and tier in the data | The provenance line on every page is a query result and per row provenance is machine readable |
| v0.9.0 | U4 the enforcement | Layer, Party, Enforcer with set_by, removable_by and expires_on; EvidencedControl beside Control as a second formula; the layer column on the prohibitions as nodes; compiles_to declared with no target compiled yet | Two formulas classify the same four barriers and both are walked on every build |
| v0.10.0 | U5 the deployer | Deployer, Owner, Job, Expectation, MaterialOverride and Correction; the eight starting mandates re-expressed as Expectation rows with who said them and when; the lexicon scopes with policy, control, grant and mandate scoped; the ODRL agent profile as an InterchangeDocument projection, stated three times not to enforce anything | A corrected mandate supersedes its draft and the draft stays visible |
| v0.11.0 | U6 the derivation | Series, Trigger and Crossing; the gate recomputes every record in every series; the trigger table on the delta page as nodes | A series with a gap fails the build |
| later | U9, U10, U11, U12 | Each as a universe file with an owner, a status of gap, and its junction edges declared with no nodes behind them, so that a twin, a standard, a log or an estate has an address to attach to | The universes page lists them as named absences, which is knowledge too |
Three changes are not tied to a universe and belong in v0.5.0. The home page gains one paragraph saying that an ABP is a Fractal Semantic Graph and what that means, linking the definition on sgit.ai rather than restating it. The model index gains a sixth piece, the universes, beside the graph. And a media index at /media/ links, and does not copy, the seven licence to operate shorts and the three risk graph walkthroughs on sgit.ai, because this site was asked to be the home for the ABP's videos and visualisations and the honest way to hold somebody else's vault content is a link with a date.
One boundary sentence belongs on the README and the docs index. abp.sgit.ai is the free public library: the argument, the model, the universes, the examples, the data, the docs and the media. riskmandate.ai is where the ABP becomes a licence, an acceptance and a score, and store.sgit.ai is where one is bought. Each site links across and none restates the other.
What Must Not Change
- No score, anywhere. A score is a node in U8 and there is no edge to it from this site. The map makes the boundary an edge somebody else draws rather than a sentence this site keeps repeating, and that is stronger, not weaker.
- The delta is derived and never authored. U6 has no authored field and the series inherits the rule.
- Every prohibition carries its barrier. U7 renders nothing without an edge into U4.
- Nothing is merged. Nine vocabularies, one grammar, twenty two junction edges, and a scope per universe in the lexicon. A customer who cannot accept our definition of a control writes EvidencedControl and the facts do not move.
- Never render the whole graph. The universes page renders the walk of one row. There is no map of everything on this site and this brief did not draw one.
- Never probe anybody's system. U3 has an Instance node precisely so that every observation states whose system it was and that we were entitled to run it.
- The grammar stays small. U1 gains one property and no primitive. A new verb, object class or reach still needs a probe.
Honest Tensions
| Tension | Note |
|---|---|
| Nine universes for one document | It is the honest count of the parties who own an ABP's parts, and it is a lot of pages. Shipping one universe per release is the only way it stays readable and the gaps stay named rather than drawn |
| Levels across, not down | The four objects side by side is the right shape and it fights the instinct to draw a ladder. The ladder is real and it is short: byte, word, ABP, licence, estate of agents |
| Adopting material | It is one property on the grammar this site swore not to change, and it is the minimum that makes a connector shape sayable. The override in U5 is what keeps it from being a verdict |
| Promoting riskmandate.ai's seven shapes | They were measured or documented by the consumer of this data rather than by its publisher, and the layer one rule says they belong here anyway. The provenance line carries who did the reading |
| The enabled but off position | It follows from the enforcer test and it means a connector an administrator could turn on tomorrow is absent from the grant today, which will surprise a reader who runs the estate. U9 is where their surprise has an address |
| The fact diff, again | Named as the blocker on four consecutive days in September and still not built. This map gives it a node and a formula, which is the first time it has had either, and it is still not built |
| Altitude | Keeping the 20 August sense on this site while the sibling page uses the word for rungs is a disagreement recorded rather than resolved, which is the method, and it will confuse a reader who arrives from that page |
Open Questions
- Is nine the right count, or should U0 fold into U3 and U7 into U6? The map keeps them apart because their owners differ: bytes belong to nobody, evidence to whoever observed, projections to the renderer and derivations to the computation. If the project lead reads owners differently, the count changes and nothing else does.
- Does the material property go on the primitive or only on the mandate? The lean is adopted; the alternative is cleaner for the grammar and worse for the connector shapes.
- Who owns the intake path for a proposed shape, and does a shape measured by a consumer's user carry a lower tier than one this site measured itself? The evidence tiers already have self reported; the question is whether a consumer's observation is documented or observed.
- Should the universes be a vault rather than pages, given that riskmandate.ai's Lab 03 asked the same question of its own request list? The data files are the shared facts and belong at this address; the discussion about them may belong in a vault with write access on both sides.
- Does the ODRL profile get published under this site's name, which the 11 September brief left open, or does it stay an unpublished projection until somebody compiles one?
- What does a Trigger cost to receive? The continuous access evaluation profile is named as the right shape and its status was not confirmed. Nothing is wired and nothing here changes that.
- Is a media index a page this site should hold, or does linking the shorts from the examples they demonstrate do the same work with less chrome?
Relationship To Previous Briefs
From the foundation document, it takes the four objects, the label and the two gaps, and gives the gaps addresses: U11 for quantity, U12 for interaction between agents.
From the dev brief on the behaviour policy as a graph, it takes the projection pattern, the W3C vocabulary as interchange, the five enforcement layers and the empty diff rule, and turns each into nodes in U7, U5, U4 and U7 respectively.
From the dev brief on the delta, it takes the materialised view, the three clocks, the trigger standard and the crossing as a record, and makes U6 and the second clock's home in U9.
From the pack's model document, it takes the ruling that altitude is for stakeholder and depth for detail, and keeps it by adopting a different word for the worlds.
From graphs.sgit.ai's second edition, it takes the corrected fractal claim, the zoom test in two halves, the scoped lexicon and the rule that name clashes are not a problem.
From the Fractal Semantic Graphs page on sgit.ai, it takes the definition, the word universe, the ladder, and the sentence that names this site as the rung where the graph meets a real permission set.
From riskmandate.ai's Lab 03 and Lab 07, it takes the three requests and the delivered vault, and answers the first by placing each request in its universe and reads the second as the live instance of U5, U6, U7 and U8.
Key Claims
| # | Claim |
|---|---|
| 1 | By the zoom test as now stated, v0.3.0 is a semantic graph that decomposes one vocabulary very well and crosses into another in exactly two places; the map adds the worlds its edges already point at, not more nodes in the grammar |
| 2 | An ABP is a junction object: its four objects are owned by four different parties speaking four vocabularies, and that is the case Fractal Semantic Graphs exists for |
| 3 | One capability row crosses nine universes, from the source bytes to a licence condition, and the walk reads as one sentence |
| 4 | Levels run up and down, to the byte and to the estate of agents; universes run across; the four objects are neighbours and never a stack |
| 5 | Altitude keeps its 20 August sense on this site, a rendering for a reader, and universe is the word for a world with its own ontology |
| 6 | Each universe keeps its own node types and verbs, with inverses, domains and ranges stated, and shares only the grammar |
| 7 | Twenty two edges cross a universe boundary, each with a stated owner, and none of them is relates_to |
| 8 | The lexicon becomes scopes: policy, control, grant and mandate mean different things in different universes, recorded with authority and never merged |
| 9 | The material property is adopted as a default on the primitive with an override on the mandate, and a connector present and switched off is in the grant only when the switch is inside the grant |
| 10 | The seven shapes riskmandate.ai built are layer one facts and belong at this address, through an intake path that carries their provenance |
| 11 | The fact diff has a node and a formula for the first time, and it is still not built |
| 12 | The score has an address, in U8, and the map makes its absence from this site an edge somebody else draws rather than a sentence this site repeats |
Sources
All read 20 September 2026.
This site. abp.sgit.ai v0.3.0: the home page, the foundation document, the model pages, the lexicon, the graph pages, the five examples, every file under data/ and the four briefs and six pack documents under docs/.
The platform. https://sgit.ai/llms.txt and https://sgit.ai/docs/guidance/index.html. The Fractal Semantic Graphs page at https://sgit.ai/demos/fractal-graphs/index.html and its markdown twin. The licence to operate vault page at https://sgit.ai/demos/vaults/licence-to-operate/index.html and the risk mandate vault page at https://sgit.ai/demos/vaults/risk-mandate/index.html.
The discipline. https://graphs.sgit.ai/llms.txt at v0.6.22. The corrected fractal claim at https://graphs.sgit.ai/v2/books/fsg/content/06__fractal-is-a-testable-claim.md. The scoped lexicon at https://graphs.sgit.ai/v2/lexicon/data/lexicon.json. The edge set at https://graphs.sgit.ai/v1/grammar/edge-set.html, for observed_on, backed_by, measured_by, exposes, defeated_by and gives_rise_to.
The commercial sites. https://riskmandate.ai/llms.txt at v1.26.2, with https://riskmandate.ai/abp.md, https://riskmandate.ai/agent-behaviour-policy.md, https://riskmandate.ai/licence-to-operate.md, https://riskmandate.ai/how-it-works.md, https://riskmandate.ai/lab-abp-requests.md and https://riskmandate.ai/lab-vault-delivered.md. https://store.sgit.ai/llms.txt at v0.3.24, for the boundary between the three sites.
Outside the estate, as cited by the briefs this one builds on. The rights expression vocabulary at https://www.w3.org/TR/odrl-model/. The continuous access evaluation profile from the shared signals working group, whose status the delta page says to check before citing as settled.
This document is released under the Creative Commons Attribution 4.0 International licence (CC BY 4.0).