RiskMandate.ai · which agent is it?
The sources of truth
Every node in the mesh is a file, in a folder named for what it is, and every edge is typed by one ontology. The game, the graph and the report are compiled from these files with gates, so a correction is an edit: change the file, open a pull request, and the next build carries it. Nothing on the play screen is typed by hand.
How to correct a mapping
- Find the node. Every node on the mesh page and every row on a report carries source and edit links to the file behind it.
- Edit the file. A reach node's environments or obligations; a profile's refine map (which reach node a capability lands on for that profile) or a row's control; a question's class, reliability or expected answers. One file, one concern.
- Open a pull request. The build runs
gen_mesh.py,gen_guess.pyandgen_probes.py; an edge of an unknown type, an id that does not exist, or a profile the tree can no longer place from its own answers fails it, and the failure says why. - Play it. Demo mode plays a profile's own modal answers end to end, so a change can be watched land.
The ontology
Node types, then edge types with their direction. The rule is the fractal test: a coarse node (a family, a capability) and a fine node (an exposure — a capability at one reach node) are the same shape and are traversed identically, by member-of.
| node type | means | lives in | count |
|---|---|---|---|
vendor | who makes or provides the thing | probes/mesh/vendors/ | 5 |
profile | a named configuration of a product, listing its tools | probes/profiles/<vendor>/<product>/ | 9 |
tool | one tool inside a profile; the unit of mapping, because two tools in one session reach different things | (inside the profile file) | 17 |
family | the coarsest grouping of capabilities: filesystem, network, identity… | probes/primitives.json (families) | 9 |
capability | verb × object class × reach class, with reversibility — the coarse node | probes/primitives.json (capabilities) | 23 |
exposure | a capability at one reach node — the fine node; the same verb and object at fs:user-home and at fs:container-layer are two exposures | (derived from a profile's refine map) | 88 |
reach | where a capability lands: a file system, a network, a credential store, a repository, a scheduler — a node with its own edges, not a rung | probes/mesh/reaches/ | 35 |
env | where things run: a desktop, a container, a CI runner, a browser, the vendor's cloud | probes/mesh/envs/ | 8 |
obligation | a control or article that governs a reach — reached by traversal, and never a compliance finding | probes/mesh/obligations/ | 5 |
evidence | a findings/v1 file: probe runs or an operator's account, dated, with a tier | probes/evidence/ | 4 |
question | one question the game asks, with its class, reliability and the capability it asks about | probes/mesh/questions/ | 25 |
| edge type | from → to | means | count |
|---|---|---|---|
made-by | profile → vendor | the profile is a configuration of this vendor's product | 9 |
runs-in | ['profile', 'reach'] → env | runs in, or lives in, this environment | 77 |
provided-by | env → vendor | the environment is provided by this vendor (or by you) | 8 |
has-tool | profile → tool | the profile contains this tool | 17 |
reaches | tool → exposure | the tool can do this, here; attributes carry the control on the path, its tier, the evidence tier and a note | 113 |
at | exposure → reach | the exposure lands on this reach node | 88 |
member-of | ['exposure', 'capability'] → ['capability', 'family'] | fine is a member of coarse; same shape either way | 111 |
governed-by | reach → obligation | an obligation that governs this reach — a question worth asking, at the weakest tier | 32 |
evidenced-by | tool → evidence | the tool's rows are established by this evidence file | 4 |
asks-about | question → capability | an eliciting question is a prediction about this capability | 10 |
bounded-by | exposure → obligation | reserved: a control evidenced as the boundary on this exposure (not yet used) | 0 |
The folders
The ontology probes/mesh/ontology.json
node types and edge types; an edge of a type not here fails the build
Reach nodes probes/mesh/reaches/
where a capability lands — six file systems wearing one verb, and the rest; each with the environments it lives in and the obligations that govern it
probes/mesh/reaches/cfg__own-settings.json· view · editprobes/mesh/reaches/code__any-repo-of-yours.json· view · editprobes/mesh/reaches/code__attached-repo.json· view · editprobes/mesh/reaches/code__in-scope-repos.json· view · editprobes/mesh/reaches/fs__ci-checkout.json· view · editprobes/mesh/reaches/fs__cloud-store.json· view · editprobes/mesh/reaches/fs__container-layer.json· view · editprobes/mesh/reaches/fs__corporate-share.json· view · editprobes/mesh/reaches/fs__network-mount.json· view · editprobes/mesh/reaches/fs__project.json· view · editprobes/mesh/reaches/fs__server-disk.json· view · editprobes/mesh/reaches/fs__uploads.json· view · editprobes/mesh/reaches/fs__user-home.json· view · editprobes/mesh/reaches/id__agent-own-keys.json· view · editprobes/mesh/reaches/id__browser-sessions.json· view · editprobes/mesh/reaches/id__connector-token.json· view · editprobes/mesh/reaches/id__platform-token.json· view · editprobes/mesh/reaches/id__service-account.json· view · editprobes/mesh/reaches/id__user-credentials.json· view · editprobes/mesh/reaches/money__metered-account.json· view · editprobes/mesh/reaches/msg__anyone.json· view · editprobes/mesh/reaches/msg__mailbox.json· view · editprobes/mesh/reaches/net__allowlist.json· view · editprobes/mesh/reaches/net__vendor-egress.json· view · editprobes/mesh/reaches/net__world.json· view · editprobes/mesh/reaches/proc__ci-runner.json· view · editprobes/mesh/reaches/proc__container.json· view · editprobes/mesh/reaches/proc__host-account.json· view · editprobes/mesh/reaches/proc__server.json· view · editprobes/mesh/reaches/pub__registries.json· view · editprobes/mesh/reaches/rec__session-history.json· view · editprobes/mesh/reaches/rec__shell-history.json· view · editprobes/mesh/reaches/sched__host-cron.json· view · editprobes/mesh/reaches/sched__platform-routines.json· view · editprobes/mesh/reaches/web__every-page.json· view · edit
Environments probes/mesh/envs/
where things run
probes/mesh/envs/env__browser.json· view · editprobes/mesh/envs/env__ci-runner.json· view · editprobes/mesh/envs/env__container.json· view · editprobes/mesh/envs/env__desktop.json· view · editprobes/mesh/envs/env__managed-desktop.json· view · editprobes/mesh/envs/env__server.json· view · editprobes/mesh/envs/env__vendor-cloud.json· view · editprobes/mesh/envs/env__wsl.json· view · edit
Vendors probes/mesh/vendors/
who makes or provides
probes/mesh/vendors/anthropic.json· view · editprobes/mesh/vendors/generic.json· view · editprobes/mesh/vendors/github.json· view · editprobes/mesh/vendors/openai.json· view · editprobes/mesh/vendors/you.json· view · edit
Obligations probes/mesh/obligations/
reached by traversal from a reach node; a question worth asking, never a finding
probes/mesh/obligations/obl__aiuc1-B006.1.json· view · editprobes/mesh/obligations/obl__aiuc1-D003.1.json· view · editprobes/mesh/obligations/obl__aiuc1-D003.2.json· view · editprobes/mesh/obligations/obl__aiuc1-E004.json· view · editprobes/mesh/obligations/obl__aiuc1-E015.3.json· view · edit
Questions probes/mesh/questions/
one file each: class, reliability, the capability it asks about, a p_yes per profile
probes/mesh/questions/always-allow.json· view · editprobes/mesh/questions/attached-repo.json· view · editprobes/mesh/questions/before-2023.json· view · editprobes/mesh/questions/browser.json· view · editprobes/mesh/questions/called-agent.json· view · editprobes/mesh/questions/connectors.json· view · editprobes/mesh/questions/creds-home.json· view · editprobes/mesh/questions/desktop-app.json· view · editprobes/mesh/questions/every-page.json· view · editprobes/mesh/questions/installed-it.json· view · editprobes/mesh/questions/logged-in-sites.json· view · editprobes/mesh/questions/mail.json· view · editprobes/mesh/questions/money.json· view · editprobes/mesh/questions/name-code.json· view · editprobes/mesh/questions/name-gpt.json· view · editprobes/mesh/questions/name-person.json· view · editprobes/mesh/questions/never-ask.json· view · editprobes/mesh/questions/not-a-person.json· view · editprobes/mesh/questions/other-files.json· view · editprobes/mesh/questions/paste-only.json· view · editprobes/mesh/questions/proxy.json· view · editprobes/mesh/questions/push.json· view · editprobes/mesh/questions/terminal.json· view · editprobes/mesh/questions/unattended.json· view · editprobes/mesh/questions/vendor-env.json· view · edit
Capabilities and families probes/primitives.json
the coarse nodes: verb × object × reach class + reversible
Profiles probes/profiles/<vendor>/<product>/<variant>.json
a configuration of a product: tools, rows, reach names, what it cannot reach, and the refine map (capability → reach node)
probes/profiles/anthropic/claude-code-remote/ccr-container.json· view · editprobes/profiles/anthropic/claude-code/local-confirmations-off.json· view · editprobes/profiles/anthropic/claude-code/local-default.json· view · editprobes/profiles/anthropic/claude-desktop/default.json· view · editprobes/profiles/anthropic/claude-web/connectors-on.json· view · editprobes/profiles/generic/browser-extension/broad-host-permissions.json· view · editprobes/profiles/generic/scheduled-job/service-account.json· view · editprobes/profiles/github/actions-runner/ci.json· view · editprobes/profiles/openai/chatgpt-web/default.json· view · edit
Evidence probes/evidence/
findings files, self-run or reported, dated and tiered
probes/evidence/anthropic__claude-code-remote__ccr-container__fetch__2026-09-05.json· view · editprobes/evidence/anthropic__claude-code-remote__ccr-container__harness__2026-09-05.json· view · editprobes/evidence/anthropic__claude-code-remote__ccr-container__shell__2026-09-05.json· view · editprobes/evidence/github__actions-runner__ci__shell__2026-08-26.json· view · edit
What is compiled from them
probes/mesh/graph.json— the mesh: every node with its source and edit link, every edge typed.guess/tree.json— the question set the engine reads, fromquestions/.guess/selftest.json— every profile placed from its own modal answers, bygen_guess.py; the count is derived, never typed.probes/profiles/index.json— the profile manifest, bygen_probes.py.
Generated by admin/build/gen_mesh.py. The layout follows brief v0.33.65 (reach is a node) and the project lead's 5 September memo: folders per kind of thing, every node linked to its source, corrections as edits. CC BY 4.0.