File size: 7,581 Bytes
629293f
9ec4919
629293f
9ec4919
629293f
 
 
 
9ec4919
 
629293f
 
9ec4919
629293f
 
 
 
 
 
 
 
 
9ec4919
629293f
 
9ec4919
 
 
629293f
 
9ec4919
629293f
 
 
9ec4919
629293f
 
 
 
 
 
 
 
 
 
9ec4919
629293f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9ec4919
629293f
 
 
 
 
 
 
9ec4919
629293f
 
 
 
 
 
9ec4919
629293f
 
 
 
9ec4919
 
629293f
 
 
 
9ec4919
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<svg xmlns="http://www.w3.org/2000/svg" width="1240" height="560" viewBox="0 0 1240 560" role="img" aria-labelledby="title desc">
  <title id="title">Loop Engineering lifecycle</title>
  <desc id="desc">A polished lifecycle diagram for a recurring agent loop: Intake, Delegate, Act, Verify, Persist, Decide, then retry, escalate, or exit.</desc>
  <defs>
    <linearGradient id="panel" x1="86" y1="28" x2="1154" y2="532" gradientUnits="userSpaceOnUse">
      <stop offset="0" stop-color="#111a33"/>
      <stop offset="0.56" stop-color="#0b1020"/>
      <stop offset="1" stop-color="#12192d"/>
    </linearGradient>
    <linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#38bdf8"/>
      <stop offset="1" stop-color="#a78bfa"/>
    </linearGradient>
    <linearGradient id="node" x1="0" y1="0" x2="1" y2="1">
      <stop offset="0" stop-color="#0f1a2e"/>
      <stop offset="1" stop-color="#0b1324"/>
    </linearGradient>
    <filter id="cardShadow" x="-18%" y="-28%" width="136%" height="156%" color-interpolation-filters="sRGB">
      <feDropShadow dx="0" dy="14" stdDeviation="14" flood-color="#020617" flood-opacity="0.24"/>
    </filter>
    <marker id="arrowCyan" viewBox="0 0 10 10" refX="8.7" refY="5" markerWidth="8" markerHeight="8" orient="auto">
      <path d="M0 0L10 5L0 10Z" fill="#7dd3fc"/>
    </marker>
    <marker id="arrowViolet" viewBox="0 0 10 10" refX="8.7" refY="5" markerWidth="8" markerHeight="8" orient="auto">
      <path d="M0 0L10 5L0 10Z" fill="#a78bfa"/>
    </marker>
  </defs>

  <rect width="1240" height="560" rx="40" fill="#070b16"/>
  <rect x="24" y="24" width="1192" height="512" rx="34" fill="url(#panel)" stroke="#243044" stroke-width="1.5"/>

  <g font-family="Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, sans-serif">
    <text x="620" y="76" text-anchor="middle" fill="#f8fafc" font-size="34" font-weight="850">Loop Engineering Lifecycle</text>
    <text x="620" y="108" text-anchor="middle" fill="#cbd5e1" font-size="16" font-weight="500">One recurring agent pass, governed by evidence, state, and bounded decisions</text>

    <g transform="translate(132 146)">
      <rect x="0" y="0" width="976" height="58" rx="18" fill="#0b1324" stroke="#263249"/>
      <text x="28" y="36" fill="#e0f2fe" font-size="15" font-weight="760">Contract</text>
      <text x="138" y="36" fill="#9fb0c7" font-size="14">goal + trigger</text>
      <circle cx="278" cy="29" r="3" fill="#38bdf8"/>
      <text x="306" y="36" fill="#9fb0c7" font-size="14">workspace + context</text>
      <circle cx="510" cy="29" r="3" fill="#38bdf8"/>
      <text x="538" y="36" fill="#9fb0c7" font-size="14">verification + state</text>
      <circle cx="748" cy="29" r="3" fill="#a78bfa"/>
      <text x="776" y="36" fill="#9fb0c7" font-size="14">budget + exit</text>
    </g>

    <path d="M1066 258C1048 218 824 214 620 214C416 214 196 218 178 258" fill="none" stroke="#a78bfa" stroke-width="2.6" stroke-linecap="round" stroke-dasharray="6 8" marker-end="url(#arrowViolet)"/>
    <rect x="533" y="199" width="174" height="28" rx="14" fill="#0b1324" stroke="#2a244b"/>
    <text x="620" y="218" text-anchor="middle" fill="#c4b5fd" font-size="13" font-weight="780">retry with evidence</text>

    <g filter="url(#cardShadow)">
      <g transform="translate(80 250)">
        <rect width="142" height="86" rx="19" fill="url(#node)" stroke="#2c3a55"/>
        <circle cx="71" cy="27" r="13" fill="#0f2742" stroke="#38bdf8" stroke-opacity="0.52"/>
        <text x="71" y="32" text-anchor="middle" fill="#7dd3fc" font-size="12" font-weight="850">1</text>
        <text x="71" y="61" text-anchor="middle" fill="#f1f5f9" font-size="17" font-weight="780">Intake</text>
      </g>
      <g transform="translate(254 250)">
        <rect width="142" height="86" rx="19" fill="url(#node)" stroke="#2c3a55"/>
        <circle cx="71" cy="27" r="13" fill="#0f2742" stroke="#38bdf8" stroke-opacity="0.52"/>
        <text x="71" y="32" text-anchor="middle" fill="#7dd3fc" font-size="12" font-weight="850">2</text>
        <text x="71" y="61" text-anchor="middle" fill="#f1f5f9" font-size="17" font-weight="780">Delegate</text>
      </g>
      <g transform="translate(428 250)">
        <rect width="142" height="86" rx="19" fill="url(#node)" stroke="#2c3a55"/>
        <circle cx="71" cy="27" r="13" fill="#0f2742" stroke="#38bdf8" stroke-opacity="0.52"/>
        <text x="71" y="32" text-anchor="middle" fill="#7dd3fc" font-size="12" font-weight="850">3</text>
        <text x="71" y="61" text-anchor="middle" fill="#f1f5f9" font-size="17" font-weight="780">Act</text>
      </g>
      <g transform="translate(602 250)">
        <rect width="142" height="86" rx="19" fill="url(#node)" stroke="#2c3a55"/>
        <circle cx="71" cy="27" r="13" fill="#0f2742" stroke="#38bdf8" stroke-opacity="0.52"/>
        <text x="71" y="32" text-anchor="middle" fill="#7dd3fc" font-size="12" font-weight="850">4</text>
        <text x="71" y="61" text-anchor="middle" fill="#f1f5f9" font-size="17" font-weight="780">Verify</text>
      </g>
      <g transform="translate(776 250)">
        <rect width="142" height="86" rx="19" fill="url(#node)" stroke="#2c3a55"/>
        <circle cx="71" cy="27" r="13" fill="#0f2742" stroke="#38bdf8" stroke-opacity="0.52"/>
        <text x="71" y="32" text-anchor="middle" fill="#7dd3fc" font-size="12" font-weight="850">5</text>
        <text x="71" y="61" text-anchor="middle" fill="#f1f5f9" font-size="17" font-weight="780">Persist</text>
      </g>
      <g transform="translate(950 250)">
        <rect width="142" height="86" rx="19" fill="#111827" stroke="url(#accent)" stroke-width="2.4"/>
        <circle cx="71" cy="27" r="13" fill="#1f1d3f" stroke="#a78bfa" stroke-opacity="0.64"/>
        <text x="71" y="32" text-anchor="middle" fill="#c4b5fd" font-size="12" font-weight="850">6</text>
        <text x="71" y="61" text-anchor="middle" fill="#f8fafc" font-size="17" font-weight="800">Decide</text>
      </g>
    </g>

    <g stroke="#7dd3fc" stroke-width="2.8" stroke-linecap="round">
      <line x1="222" y1="293" x2="248" y2="293" marker-end="url(#arrowCyan)"/>
      <line x1="396" y1="293" x2="422" y2="293" marker-end="url(#arrowCyan)"/>
      <line x1="570" y1="293" x2="596" y2="293" marker-end="url(#arrowCyan)"/>
      <line x1="744" y1="293" x2="770" y2="293" marker-end="url(#arrowCyan)"/>
      <line x1="918" y1="293" x2="944" y2="293" marker-end="url(#arrowCyan)"/>
    </g>

    <path d="M1021 336V378" fill="none" stroke="#38bdf8" stroke-width="2.8" stroke-linecap="round" marker-end="url(#arrowCyan)"/>
    <g transform="translate(778 394)">
      <rect width="188" height="62" rx="17" fill="#0b1324" stroke="#31405c"/>
      <text x="94" y="26" text-anchor="middle" fill="#bae6fd" font-size="15" font-weight="820">Escalate</text>
      <text x="94" y="47" text-anchor="middle" fill="#9fb0c7" font-size="13">human handoff</text>
    </g>
    <g transform="translate(992 394)">
      <rect width="128" height="62" rx="17" fill="#0b1324" stroke="url(#accent)" stroke-width="2"/>
      <text x="64" y="26" text-anchor="middle" fill="#ddd6fe" font-size="15" font-weight="820">Exit</text>
      <text x="64" y="47" text-anchor="middle" fill="#9fb0c7" font-size="13">goal met</text>
    </g>

    <g transform="translate(96 472)">
      <circle cx="0" cy="0" r="5" fill="#38bdf8"/>
      <text x="18" y="5" fill="#cbd5e1" font-size="14">Verification is a deterministic gate, state persists outside the model, and every loop has a budget plus a human exit.</text>
    </g>
  </g>
</svg>