<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="eli.ai" agent="eli.ai diagram exporter" version="1">
  <diagram id="capability-locked-self-service-agent-fd36754d" name="Capability-locked self-service agent">
    <mxGraphModel dx="1600" dy="1200" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1200" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <object id="1" label="Capability-locked self-service agent" schemaVersion="1" diagramId="capability-locked-self-service-agent-fd36754d" canonicalAppearanceKey="tsx:src/app/(docs)/docs/workspace/journeys/page.tsx:JOURNEY_CAPABILITY_LOCKED_AGENT#1" sourceSha256="fd36754dce5d65bf61647045d41cde39a53758f65145dd50e010f06a3dba5bf5" metadataPayloadSha256="fe578a28dd8aea531cacacc31bdb384c9afa53de7a635a4e04070e5ea6a0682b" generationKey="bc6f365be3b7d755085b31a9f31cf3e03c77ab058d938b2ee884a71882fea508" concepts="[&quot;Workspace current diagrams&quot;,&quot;Journey capability locked agent&quot;,&quot;Workspace&quot;,&quot;Journeys&quot;]" keywords="[&quot;Chat or MCP harness&quot;,&quot;Agent builder&quot;,&quot;Immutable version&quot;,&quot;HITL policy&quot;,&quot;run or via&quot;,&quot;invoke tool&quot;,&quot;Runner and tool registry&quot;,&quot;publish tools + capability lock + budgets&quot;,&quot;reject every tool outside the lock&quot;,&quot;exactly the admitted tool surface&quot;,&quot;score risk and resolve rule&quot;,&quot;suspend with draft + rationale&quot;,&quot;approve, reject, or edit&quot;,&quot;outcome, review verdict, citations, cost&quot;,&quot;evaluate golden set + acceptance gates + drift&quot;,&quot;log + risk-score + sample for retrospective review&quot;,&quot;tools/list&quot;,&quot;/api/mcp/agents/slug&quot;,&quot;require/autopilot&quot;,&quot;Crucible&quot;,&quot;intersect lock + key scope + live role + ACL&quot;]" application="{&quot;name&quot;:&quot;eli-ai&quot;,&quot;version&quot;:&quot;0.1.0&quot;}" packages="{&quot;mermaid&quot;:&quot;11.16.0&quot;,&quot;mermaidCli&quot;:&quot;11.16.0&quot;,&quot;playwright&quot;:&quot;1.62.1&quot;,&quot;playwrightCore&quot;:&quot;1.62.1&quot;,&quot;puppeteer&quot;:&quot;25.6.0&quot;,&quot;puppeteerCore&quot;:&quot;25.6.0&quot;}" environment="{&quot;architecture&quot;:&quot;x64&quot;,&quot;containerImage&quot;:&quot;playwright:v1.62.1-noble@sha256:c091b21d9fae78c76e85cd4356431e9b018402f172a214fc7d7a5e9a7e29d8ac+node:26.3.1-bookworm-slim@sha256:209558c3e5e40e8adff68959d3c2ba7cd73723e716d89196878a0c362fa1e109&quot;,&quot;node&quot;:&quot;v26.3.1&quot;,&quot;platform&quot;:&quot;linux&quot;,&quot;yarn&quot;:&quot;4.17.1&quot;}" renderer="{&quot;browser&quot;:{&quot;executableSha256&quot;:&quot;0b20b130e7edd9dd51873be867761295fe0cfad490c2b9a64f95bd3cfc08fa71&quot;,&quot;name&quot;:&quot;chromium&quot;,&quot;revision&quot;:&quot;1234&quot;,&quot;version&quot;:&quot;151.0.7922.34&quot;},&quot;font&quot;:{&quot;family&quot;:&quot;Eli Diagram Inter Variable&quot;,&quot;fileSha256&quot;:&quot;3100e775e8616cd2611beecfa23a4263d7037586789b43f035236a2e6fbd4c62&quot;,&quot;licenseSha256&quot;:&quot;3b0a5fca3d17942cde889069889dedbbbd075e9b599968c82a95f4d944e9b345&quot;},&quot;mermaidConfigSha256&quot;:&quot;68c10966fe84406ee626034d58bfabd555df9f65f691204b7c46db24038da101&quot;,&quot;themeCssSha256&quot;:&quot;c80287a78d80ad63d27bd5ca348b2ef9a7e2f44da289e436be6484ea28a1b033&quot;}" adapterVersions="{&quot;diagramGenerator&quot;:&quot;2&quot;,&quot;drawioFlowchart&quot;:&quot;1&quot;,&quot;drawioGantt&quot;:&quot;1&quot;,&quot;drawioSequence&quot;:&quot;1&quot;,&quot;drawioState&quot;:&quot;1&quot;}" mermaidType="sequence" generatedAt="2026-08-12T23:37:12.800Z" mermaidSource="sequenceDiagram&#10;  participant B as Agent builder&#10;  participant V as Immutable version&#10;  participant H as Chat or MCP harness&#10;  participant R as Runner and tool registry&#10;  participant G as HITL policy&#10;  participant E as Crucible&#10;  B-&gt;&gt;V: publish tools + capability lock + budgets&#10;  V-&gt;&gt;V: reject every tool outside the lock&#10;  H-&gt;&gt;R: run or tools/list via /api/mcp/agents/slug&#10;  R-&gt;&gt;R: intersect lock + key scope + live role + ACL&#10;  R--&gt;&gt;H: exactly the admitted tool surface&#10;  H-&gt;&gt;R: invoke tool&#10;  R-&gt;&gt;G: score risk and resolve require/autopilot rule&#10;  alt human review required&#10;    G--&gt;&gt;B: suspend with draft + rationale&#10;    B-&gt;&gt;G: approve, reject, or edit&#10;  else autopilot admitted&#10;    G-&gt;&gt;G: log + risk-score + sample for retrospective review&#10;  end&#10;  G-&gt;&gt;E: outcome, review verdict, citations, cost&#10;  E-&gt;&gt;E: evaluate golden set + acceptance gates + drift">
          <mxCell parent="0"/>
        </object>
        <object id="c:i12" label="alt [human review required] / [autopilot admitted]" mermaidId="i12" mermaidShape="frame">
          <mxCell parent="1" vertex="1" style="collapsible=0;container=1;dashed=1;fillColor=none;fontColor=#333333;html=1;recursiveResize=0;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="64" y="485" width="1737.5" height="300" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:E" label="Crucible" mermaidId="E" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="1841" y="0" width="150" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:G" label="HITL policy" mermaidId="G" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="1475" y="0" width="150" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:R" label="Runner and tool registry" mermaidId="R" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="1050" y="0" width="202" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:H" label="Chat or MCP harness" mermaidId="H" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="684.5" y="0" width="181" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:V" label="Immutable version" mermaidId="V" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="475.5" y="0" width="159" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:B" label="Agent builder" mermaidId="B" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="0" y="0" width="150" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="e:lifeline:E" label="" mermaidId="lifeline:E" mermaidKind="lifeline">
          <mxCell parent="1" source="n:E" target="n:E" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1916" y="65" as="sourcePoint"/>
              <mxPoint x="1916" y="935" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:lifeline:G" label="" mermaidId="lifeline:G" mermaidKind="lifeline">
          <mxCell parent="1" source="n:G" target="n:G" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1550" y="65" as="sourcePoint"/>
              <mxPoint x="1550" y="935" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:lifeline:R" label="" mermaidId="lifeline:R" mermaidKind="lifeline">
          <mxCell parent="1" source="n:R" target="n:R" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1151" y="65" as="sourcePoint"/>
              <mxPoint x="1151" y="935" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:lifeline:H" label="" mermaidId="lifeline:H" mermaidKind="lifeline">
          <mxCell parent="1" source="n:H" target="n:H" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="775" y="65" as="sourcePoint"/>
              <mxPoint x="775" y="935" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:lifeline:V" label="" mermaidId="lifeline:V" mermaidKind="lifeline">
          <mxCell parent="1" source="n:V" target="n:V" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="555" y="65" as="sourcePoint"/>
              <mxPoint x="555" y="935" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:lifeline:B" label="" mermaidId="lifeline:B" mermaidKind="lifeline">
          <mxCell parent="1" source="n:B" target="n:B" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="75" y="65" as="sourcePoint"/>
              <mxPoint x="75" y="935" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i0" label="publish tools + capability lock + budgets" mermaidId="i0" mermaidKind="message">
          <mxCell parent="1" source="n:B" target="n:V" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="76" y="115" as="sourcePoint"/>
              <mxPoint x="551" y="115" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i1" label="reject every tool outside the lock" mermaidId="i1" mermaidKind="message">
          <mxCell parent="1" source="n:V" target="n:V" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="556" y="165" as="sourcePoint"/>
              <mxPoint x="556" y="185" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="616" y="155"/>
                <mxPoint x="616" y="195"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i2" label="run or tools/list via /api/mcp/agents/slug" mermaidId="i2" mermaidKind="message">
          <mxCell parent="1" source="n:H" target="n:R" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="776" y="245" as="sourcePoint"/>
              <mxPoint x="1147" y="245" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i3" label="intersect lock + key scope + live role + ACL" mermaidId="i3" mermaidKind="message">
          <mxCell parent="1" source="n:R" target="n:R" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1152" y="295" as="sourcePoint"/>
              <mxPoint x="1152" y="315" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="1212" y="285"/>
                <mxPoint x="1212" y="325"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i4" label="exactly the admitted tool surface" mermaidId="i4" mermaidKind="message">
          <mxCell parent="1" source="n:R" target="n:H" edge="1" style="dashed=1;dashPattern=3  3;edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1150" y="375" as="sourcePoint"/>
              <mxPoint x="779" y="375" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i5" label="invoke tool" mermaidId="i5" mermaidKind="message">
          <mxCell parent="1" source="n:H" target="n:R" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="776" y="425" as="sourcePoint"/>
              <mxPoint x="1147" y="425" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i6" label="score risk and resolve require/autopilot rule" mermaidId="i6" mermaidKind="message">
          <mxCell parent="1" source="n:R" target="n:G" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1152" y="475" as="sourcePoint"/>
              <mxPoint x="1546" y="475" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i8" label="suspend with draft + rationale" mermaidId="i8" mermaidKind="message">
          <mxCell parent="1" source="n:G" target="n:B" edge="1" style="dashed=1;dashPattern=3  3;edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1549" y="570" as="sourcePoint"/>
              <mxPoint x="79" y="570" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i9" label="approve, reject, or edit" mermaidId="i9" mermaidKind="message">
          <mxCell parent="1" source="n:B" target="n:G" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="76" y="620" as="sourcePoint"/>
              <mxPoint x="1546" y="620" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i11" label="log + risk-score + sample for retrospective review" mermaidId="i11" mermaidKind="message">
          <mxCell parent="1" source="n:G" target="n:G" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1551" y="715" as="sourcePoint"/>
              <mxPoint x="1551" y="735" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="1611" y="705"/>
                <mxPoint x="1611" y="745"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i13" label="outcome, review verdict, citations, cost" mermaidId="i13" mermaidKind="message">
          <mxCell parent="1" source="n:G" target="n:E" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1551" y="835" as="sourcePoint"/>
              <mxPoint x="1912" y="835" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i14" label="evaluate golden set + acceptance gates + drift" mermaidId="i14" mermaidKind="message">
          <mxCell parent="1" source="n:E" target="n:E" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1917" y="885" as="sourcePoint"/>
              <mxPoint x="1917" y="905" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="1977" y="875"/>
                <mxPoint x="1977" y="915"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
