pwn 0.5.669 → 0.5.673

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/Gemfile +1 -1
  4. data/README.md +13 -9
  5. data/documentation/AI-Integration.md +1 -1
  6. data/documentation/Agent-Tool-Registry.md +17 -5
  7. data/documentation/Configuration.md +19 -8
  8. data/documentation/Diagrams.md +2 -2
  9. data/documentation/Home.md +2 -2
  10. data/documentation/How-PWN-Works.md +12 -10
  11. data/documentation/Installation.md +3 -1
  12. data/documentation/Mistakes.md +3 -0
  13. data/documentation/Persistence.md +4 -1
  14. data/documentation/Reinforcement-Learning.md +90 -73
  15. data/documentation/Skills-Memory-Learning.md +28 -4
  16. data/documentation/What-is-PWN.md +8 -7
  17. data/documentation/Why-PWN.md +3 -2
  18. data/documentation/diagrams/agent-tool-registry.svg +188 -160
  19. data/documentation/diagrams/dot/agent-tool-registry.dot +7 -4
  20. data/documentation/diagrams/dot/memory-skills-detailed.dot +12 -5
  21. data/documentation/diagrams/dot/overall-pwn-architecture.dot +4 -3
  22. data/documentation/diagrams/dot/persistence-filesystem.dot +2 -1
  23. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +11 -4
  24. data/documentation/diagrams/dot/reinforcement-learning.dot +8 -3
  25. data/documentation/diagrams/dot/task-summarizer.dot +24 -12
  26. data/documentation/diagrams/memory-skills-detailed.svg +252 -210
  27. data/documentation/diagrams/overall-pwn-architecture.svg +21 -12
  28. data/documentation/diagrams/persistence-filesystem.svg +127 -113
  29. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +449 -397
  30. data/documentation/diagrams/reinforcement-learning.svg +276 -239
  31. data/documentation/diagrams/task-summarizer.svg +178 -126
  32. data/documentation/pwn-ai-Agent.md +66 -32
  33. data/lib/pwn/ai/agent/curriculum.rb +13 -4
  34. data/lib/pwn/ai/agent/dispatch.rb +3 -0
  35. data/lib/pwn/ai/agent/learning.rb +100 -14
  36. data/lib/pwn/ai/agent/loop.rb +692 -25
  37. data/lib/pwn/ai/agent/metrics.rb +52 -4
  38. data/lib/pwn/ai/agent/mistakes.rb +158 -1
  39. data/lib/pwn/ai/agent/policy.rb +935 -0
  40. data/lib/pwn/ai/agent/prompt_builder.rb +82 -6
  41. data/lib/pwn/ai/agent/reflect.rb +11 -3
  42. data/lib/pwn/ai/agent/registry.rb +18 -3
  43. data/lib/pwn/ai/agent/reward.rb +360 -48
  44. data/lib/pwn/ai/agent/task_summarizer.rb +415 -33
  45. data/lib/pwn/ai/agent/tool_guard.rb +157 -0
  46. data/lib/pwn/ai/agent/tools/policy.rb +76 -0
  47. data/lib/pwn/ai/agent/tools/ruby_eval.rb +27 -1
  48. data/lib/pwn/ai/agent/tools/shell.rb +28 -32
  49. data/lib/pwn/ai/agent.rb +2 -0
  50. data/lib/pwn/config.rb +14 -2
  51. data/lib/pwn/memory.rb +188 -0
  52. data/lib/pwn/sessions.rb +9 -4
  53. data/lib/pwn/version.rb +1 -1
  54. data/spec/integration/reinforced_feedback_loop_spec.rb +35 -9
  55. data/spec/lib/pwn/ai/agent/learning_spec.rb +119 -3
  56. data/spec/lib/pwn/ai/agent/loop_spec.rb +215 -3
  57. data/spec/lib/pwn/ai/agent/metrics_spec.rb +10 -0
  58. data/spec/lib/pwn/ai/agent/mistakes_spec.rb +33 -0
  59. data/spec/lib/pwn/ai/agent/policy_spec.rb +165 -0
  60. data/spec/lib/pwn/ai/agent/prompt_builder_spec.rb +51 -0
  61. data/spec/lib/pwn/ai/agent/reward_spec.rb +75 -0
  62. data/spec/lib/pwn/ai/agent/signal_hygiene_spec.rb +118 -0
  63. data/spec/lib/pwn/ai/agent/task_summarizer_spec.rb +111 -6
  64. data/spec/lib/pwn/ai/agent/tool_guard_spec.rb +61 -0
  65. data/spec/lib/pwn/ai/agent/tools/policy_spec.rb +18 -0
  66. data/spec/lib/pwn/memory_spec.rb +62 -0
  67. data/spec/support/sandbox.rb +2 -0
  68. data/third_party/pwn_rdoc.jsonl +108 -4
  69. metadata +10 -3
@@ -4,154 +4,168 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
6
  <!-- Title: PWN_Persistence Pages: 1 -->
7
- <svg width="591pt" height="1590pt"
8
- viewBox="0.00 0.00 591.00 1590.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
- <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 1546.45)">
7
+ <svg width="591pt" height="1656pt"
8
+ viewBox="0.00 0.00 591.00 1656.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 1612.45)">
10
10
  <title>PWN_Persistence</title>
11
- <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-1546.45 547.45,-1546.45 547.45,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="8" y="-1481.25" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">~/.pwn/ &#45; Everything PWN Persists Across Sessions</text>
13
- <text xml:space="preserve" text-anchor="start" x="89.38" y="-1469.8" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">verified / auto&#45;repaired by PWN::Migrate &#160;· &#160;pwn setup &#45;&#45;migrate &#45;&#45;fix</text>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-1612.45 547.45,-1612.45 547.45,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="8" y="-1547.25" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">~/.pwn/ &#45; Everything PWN Persists Across Sessions</text>
13
+ <text xml:space="preserve" text-anchor="start" x="89.38" y="-1535.8" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">verified / auto&#45;repaired by PWN::Migrate &#160;· &#160;pwn setup &#45;&#45;migrate &#45;&#45;fix</text>
14
14
  <!-- Root -->
15
15
  <g id="node1" class="node">
16
16
  <title>Root</title>
17
- <polygon fill="#7dd3fc" stroke="#334155" stroke-width="1.3" points="134.5,-708 131.5,-712 110.5,-712 107.5,-708 75,-708 75,-672 134.5,-672 134.5,-708"/>
18
- <text xml:space="preserve" text-anchor="middle" x="104.75" y="-685.15" font-family="sans-Serif" font-size="13.00" fill="#0f172a">~/.pwn/</text>
17
+ <polygon fill="#7dd3fc" stroke="#334155" stroke-width="1.3" points="134.5,-750 131.5,-754 110.5,-754 107.5,-750 75,-750 75,-714 134.5,-714 134.5,-750"/>
18
+ <text xml:space="preserve" text-anchor="middle" x="104.75" y="-727.15" font-family="sans-Serif" font-size="13.00" fill="#0f172a">~/.pwn/</text>
19
19
  </g>
20
20
  <!-- cfg -->
21
21
  <g id="node2" class="node">
22
22
  <title>cfg</title>
23
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M407.12,-1458.75C407.12,-1461.78 373.62,-1464.25 332.38,-1464.25 291.13,-1464.25 257.62,-1461.78 257.62,-1458.75 257.62,-1458.75 257.62,-1409.25 257.62,-1409.25 257.62,-1406.22 291.13,-1403.75 332.38,-1403.75 373.62,-1403.75 407.12,-1406.22 407.12,-1409.25 407.12,-1409.25 407.12,-1458.75 407.12,-1458.75"/>
24
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M407.12,-1458.75C407.12,-1455.72 373.62,-1453.25 332.38,-1453.25 291.13,-1453.25 257.62,-1455.72 257.62,-1458.75"/>
25
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1442.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn.yaml (+ .decryptor)</text>
26
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1430.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">engines · vault&#45;encrypted keys</text>
27
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1418.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">agent opts</text>
23
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M407.12,-1524.75C407.12,-1527.78 373.62,-1530.25 332.38,-1530.25 291.13,-1530.25 257.62,-1527.78 257.62,-1524.75 257.62,-1524.75 257.62,-1475.25 257.62,-1475.25 257.62,-1472.22 291.13,-1469.75 332.38,-1469.75 373.62,-1469.75 407.12,-1472.22 407.12,-1475.25 407.12,-1475.25 407.12,-1524.75 407.12,-1524.75"/>
24
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M407.12,-1524.75C407.12,-1521.72 373.62,-1519.25 332.38,-1519.25 291.13,-1519.25 257.62,-1521.72 257.62,-1524.75"/>
25
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1508.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn.yaml (+ .decryptor)</text>
26
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1496.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">engines · vault&#45;encrypted keys</text>
27
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1484.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">agent opts</text>
28
28
  </g>
29
29
  <!-- Root&#45;&gt;cfg -->
30
30
  <g id="edge1" class="edge">
31
31
  <title>Root&#45;&gt;cfg</title>
32
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M106.85,-708.39C113.15,-807.85 147.43,-1280.92 235.5,-1392 239.8,-1397.42 244.94,-1402.16 250.58,-1406.3"/>
33
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="248.85,-1408.09 256.03,-1409.96 251.59,-1404.03 248.85,-1408.09"/>
32
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M106.73,-750.35C112.47,-851.7 144.66,-1342.72 235.5,-1458 239.78,-1463.44 244.92,-1468.19 250.55,-1472.33"/>
33
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="248.82,-1474.12 255.99,-1476 251.55,-1470.05 248.82,-1474.12"/>
34
34
  </g>
35
35
  <!-- schm -->
36
36
  <g id="node3" class="node">
37
37
  <title>schm</title>
38
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M402.62,-1375.75C402.62,-1378.78 371.14,-1381.25 332.38,-1381.25 293.61,-1381.25 262.12,-1378.78 262.12,-1375.75 262.12,-1375.75 262.12,-1326.25 262.12,-1326.25 262.12,-1323.22 293.61,-1320.75 332.38,-1320.75 371.14,-1320.75 402.62,-1323.22 402.62,-1326.25 402.62,-1326.25 402.62,-1375.75 402.62,-1375.75"/>
39
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M402.62,-1375.75C402.62,-1372.72 371.14,-1370.25 332.38,-1370.25 293.61,-1370.25 262.12,-1372.72 262.12,-1375.75"/>
40
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1359.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">.schema</text>
41
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1347.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">{schema:, pwn_version:, at:}</text>
42
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1335.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">drives launch drift warning</text>
38
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M402.62,-1441.75C402.62,-1444.78 371.14,-1447.25 332.38,-1447.25 293.61,-1447.25 262.12,-1444.78 262.12,-1441.75 262.12,-1441.75 262.12,-1392.25 262.12,-1392.25 262.12,-1389.22 293.61,-1386.75 332.38,-1386.75 371.14,-1386.75 402.62,-1389.22 402.62,-1392.25 402.62,-1392.25 402.62,-1441.75 402.62,-1441.75"/>
39
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M402.62,-1441.75C402.62,-1438.72 371.14,-1436.25 332.38,-1436.25 293.61,-1436.25 262.12,-1438.72 262.12,-1441.75"/>
40
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1425.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">.schema</text>
41
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1413.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">{schema:, pwn_version:, at:}</text>
42
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1401.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">drives launch drift warning</text>
43
43
  </g>
44
44
  <!-- Root&#45;&gt;schm -->
45
45
  <g id="edge2" class="edge">
46
46
  <title>Root&#45;&gt;schm</title>
47
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M107.32,-708.35C115.56,-800.64 156.39,-1213.46 235.5,-1310 240.84,-1316.51 247.4,-1322.01 254.56,-1326.65"/>
48
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="253.2,-1328.69 260.47,-1330.16 255.7,-1324.48 253.2,-1328.69"/>
47
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M107.17,-750.43C114.81,-845 153.65,-1275.35 235.5,-1376 240.81,-1382.53 247.36,-1388.04 254.51,-1392.69"/>
48
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="253.15,-1394.73 260.42,-1396.2 255.65,-1390.52 253.15,-1394.73"/>
49
49
  </g>
50
50
  <!-- mem -->
51
51
  <g id="node4" class="node">
52
52
  <title>mem</title>
53
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M400.38,-1295C400.38,-1297.21 369.9,-1299 332.38,-1299 294.85,-1299 264.38,-1297.21 264.38,-1295 264.38,-1295 264.38,-1259 264.38,-1259 264.38,-1256.79 294.85,-1255 332.38,-1255 369.9,-1255 400.38,-1256.79 400.38,-1259 400.38,-1259 400.38,-1295 400.38,-1295"/>
54
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M400.38,-1295C400.38,-1292.79 369.9,-1291 332.38,-1291 294.85,-1291 264.38,-1292.79 264.38,-1295"/>
55
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1279.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory.json</text>
56
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1267.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">facts · prefs · lessons · env</text>
53
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M400.38,-1361C400.38,-1363.21 369.9,-1365 332.38,-1365 294.85,-1365 264.38,-1363.21 264.38,-1361 264.38,-1361 264.38,-1325 264.38,-1325 264.38,-1322.79 294.85,-1321 332.38,-1321 369.9,-1321 400.38,-1322.79 400.38,-1325 400.38,-1325 400.38,-1361 400.38,-1361"/>
54
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M400.38,-1361C400.38,-1358.79 369.9,-1357 332.38,-1357 294.85,-1357 264.38,-1358.79 264.38,-1361"/>
55
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1345.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory.json</text>
56
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1333.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">facts · prefs · lessons · env</text>
57
57
  </g>
58
58
  <!-- Root&#45;&gt;mem -->
59
59
  <g id="edge3" class="edge">
60
60
  <title>Root&#45;&gt;mem</title>
61
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M107.69,-708.49C117.13,-795.26 160.92,-1161.44 235.5,-1244 241.46,-1250.6 248.81,-1255.88 256.76,-1260.11"/>
62
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="255.33,-1262.14 262.7,-1262.97 257.46,-1257.73 255.33,-1262.14"/>
61
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M107.48,-750.38C116.21,-839.24 158,-1223.4 235.5,-1310 241.43,-1316.63 248.76,-1321.93 256.7,-1326.16"/>
62
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="255.27,-1328.19 262.64,-1329.03 257.4,-1323.78 255.27,-1328.19"/>
63
63
  </g>
64
64
  <!-- midx -->
65
65
  <g id="node5" class="node">
66
66
  <title>midx</title>
67
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M404.5,-1227.75C404.5,-1230.78 372.17,-1233.25 332.38,-1233.25 292.58,-1233.25 260.25,-1230.78 260.25,-1227.75 260.25,-1227.75 260.25,-1178.25 260.25,-1178.25 260.25,-1175.22 292.58,-1172.75 332.38,-1172.75 372.17,-1172.75 404.5,-1175.22 404.5,-1178.25 404.5,-1178.25 404.5,-1227.75 404.5,-1227.75"/>
68
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M404.5,-1227.75C404.5,-1224.72 372.17,-1222.25 332.38,-1222.25 292.58,-1222.25 260.25,-1224.72 260.25,-1227.75"/>
69
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1211.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory.idx</text>
70
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1199.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">local embedding index</text>
71
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1187.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(relevance&#45;ranked MEMORY)</text>
67
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M404.5,-1293.75C404.5,-1296.78 372.17,-1299.25 332.38,-1299.25 292.58,-1299.25 260.25,-1296.78 260.25,-1293.75 260.25,-1293.75 260.25,-1244.25 260.25,-1244.25 260.25,-1241.22 292.58,-1238.75 332.38,-1238.75 372.17,-1238.75 404.5,-1241.22 404.5,-1244.25 404.5,-1244.25 404.5,-1293.75 404.5,-1293.75"/>
68
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M404.5,-1293.75C404.5,-1290.72 372.17,-1288.25 332.38,-1288.25 292.58,-1288.25 260.25,-1290.72 260.25,-1293.75"/>
69
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1277.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory.idx</text>
70
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1265.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">local embedding index</text>
71
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1253.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(relevance&#45;ranked MEMORY)</text>
72
72
  </g>
73
73
  <!-- Root&#45;&gt;midx -->
74
74
  <g id="edge4" class="edge">
75
75
  <title>Root&#45;&gt;midx</title>
76
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M105.48,-708.34C105.45,-776.83 114.23,-1020.86 235.5,-1161 240.48,-1166.75 246.39,-1171.75 252.8,-1176.08"/>
77
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="251.28,-1178.01 258.52,-1179.64 253.87,-1173.86 251.28,-1178.01"/>
76
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M105.18,-750.28C103.99,-820.82 108.81,-1078.75 235.5,-1227 240.44,-1232.78 246.33,-1237.8 252.73,-1242.14"/>
77
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="251.2,-1244.07 258.43,-1245.71 253.8,-1239.92 251.2,-1244.07"/>
78
78
  </g>
79
79
  <!-- skl -->
80
80
  <g id="node6" class="node">
81
81
  <title>skl</title>
82
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M418.38,-1144.75C418.38,-1147.78 379.83,-1150.25 332.38,-1150.25 284.92,-1150.25 246.38,-1147.78 246.38,-1144.75 246.38,-1144.75 246.38,-1095.25 246.38,-1095.25 246.38,-1092.22 284.92,-1089.75 332.38,-1089.75 379.83,-1089.75 418.38,-1092.22 418.38,-1095.25 418.38,-1095.25 418.38,-1144.75 418.38,-1144.75"/>
83
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M418.38,-1144.75C418.38,-1141.72 379.83,-1139.25 332.38,-1139.25 284.92,-1139.25 246.38,-1141.72 246.38,-1144.75"/>
84
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1128.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skills/&lt;name&gt;/SKILL.md</text>
85
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1116.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">agentskills.io spec</text>
86
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">name+description frontmatter + refs</text>
82
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M418.38,-1210.75C418.38,-1213.78 379.83,-1216.25 332.38,-1216.25 284.92,-1216.25 246.38,-1213.78 246.38,-1210.75 246.38,-1210.75 246.38,-1161.25 246.38,-1161.25 246.38,-1158.22 284.92,-1155.75 332.38,-1155.75 379.83,-1155.75 418.38,-1158.22 418.38,-1161.25 418.38,-1161.25 418.38,-1210.75 418.38,-1210.75"/>
83
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M418.38,-1210.75C418.38,-1207.72 379.83,-1205.25 332.38,-1205.25 284.92,-1205.25 246.38,-1207.72 246.38,-1210.75"/>
84
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1194.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skills/&lt;name&gt;/SKILL.md</text>
85
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1182.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">agentskills.io spec</text>
86
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1170.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">name+description frontmatter + refs</text>
87
87
  </g>
88
88
  <!-- Root&#45;&gt;skl -->
89
89
  <g id="edge5" class="edge">
90
90
  <title>Root&#45;&gt;skl</title>
91
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M106.72,-708.5C110.87,-769.48 132.05,-966.68 235.5,-1079 237.91,-1081.62 240.52,-1084.08 243.29,-1086.39"/>
92
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="241.61,-1088.19 248.66,-1090.5 244.59,-1084.3 241.61,-1088.19"/>
91
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M106.29,-750.28C109.09,-813.36 126.57,-1024.63 235.5,-1145 237.89,-1147.64 240.48,-1150.12 243.23,-1152.45"/>
92
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="241.54,-1154.24 248.57,-1156.58 244.53,-1150.36 241.54,-1154.24"/>
93
93
  </g>
94
94
  <!-- lrn -->
95
95
  <g id="node7" class="node">
96
96
  <title>lrn</title>
97
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M372.62,-1064C372.62,-1066.21 354.58,-1068 332.38,-1068 310.17,-1068 292.12,-1066.21 292.12,-1064 292.12,-1064 292.12,-1028 292.12,-1028 292.12,-1025.79 310.17,-1024 332.38,-1024 354.58,-1024 372.62,-1025.79 372.62,-1028 372.62,-1028 372.62,-1064 372.62,-1064"/>
98
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M372.62,-1064C372.62,-1061.79 354.58,-1060 332.38,-1060 310.17,-1060 292.12,-1061.79 292.12,-1064"/>
99
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1048.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning.jsonl</text>
100
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1036.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">task outcomes</text>
97
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M372.62,-1130C372.62,-1132.21 354.58,-1134 332.38,-1134 310.17,-1134 292.12,-1132.21 292.12,-1130 292.12,-1130 292.12,-1094 292.12,-1094 292.12,-1091.79 310.17,-1090 332.38,-1090 354.58,-1090 372.62,-1091.79 372.62,-1094 372.62,-1094 372.62,-1130 372.62,-1130"/>
98
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M372.62,-1130C372.62,-1127.79 354.58,-1126 332.38,-1126 310.17,-1126 292.12,-1127.79 292.12,-1130"/>
99
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1114.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning.jsonl</text>
100
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1102.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">task outcomes</text>
101
101
  </g>
102
102
  <!-- Root&#45;&gt;lrn -->
103
103
  <g id="edge6" class="edge">
104
104
  <title>Root&#45;&gt;lrn</title>
105
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M107.8,-708.29C114.87,-762.69 143.09,-925.14 235.5,-1013 248.66,-1025.51 266.77,-1033.29 283.71,-1038.13"/>
106
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="282.91,-1040.45 290.3,-1039.86 284.15,-1035.71 282.91,-1040.45"/>
105
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M107.24,-750.39C112.83,-807.5 137.59,-983.64 235.5,-1079 248.5,-1091.67 266.59,-1099.48 283.55,-1104.3"/>
106
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="282.76,-1106.63 290.15,-1106.02 283.99,-1101.88 282.76,-1106.63"/>
107
107
  </g>
108
108
  <!-- prf -->
109
109
  <g id="node8" class="node">
110
110
  <title>prf</title>
111
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M429.25,-996.75C429.25,-999.78 385.83,-1002.25 332.38,-1002.25 278.92,-1002.25 235.5,-999.78 235.5,-996.75 235.5,-996.75 235.5,-947.25 235.5,-947.25 235.5,-944.22 278.92,-941.75 332.38,-941.75 385.83,-941.75 429.25,-944.22 429.25,-947.25 429.25,-947.25 429.25,-996.75 429.25,-996.75"/>
112
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M429.25,-996.75C429.25,-993.72 385.83,-991.25 332.38,-991.25 278.92,-991.25 235.5,-993.72 235.5,-996.75"/>
113
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-980.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">preferences.jsonl</text>
114
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-968.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">DPO/KTO/ORPO pairs</text>
115
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-956.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">user_correction · resolve · counterfactual</text>
111
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M429.25,-1062.75C429.25,-1065.78 385.83,-1068.25 332.38,-1068.25 278.92,-1068.25 235.5,-1065.78 235.5,-1062.75 235.5,-1062.75 235.5,-1013.25 235.5,-1013.25 235.5,-1010.22 278.92,-1007.75 332.38,-1007.75 385.83,-1007.75 429.25,-1010.22 429.25,-1013.25 429.25,-1013.25 429.25,-1062.75 429.25,-1062.75"/>
112
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M429.25,-1062.75C429.25,-1059.72 385.83,-1057.25 332.38,-1057.25 278.92,-1057.25 235.5,-1059.72 235.5,-1062.75"/>
113
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1046.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">preferences.jsonl</text>
114
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1034.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">DPO/KTO/ORPO pairs</text>
115
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-1022.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">user_correction · resolve · counterfactual</text>
116
116
  </g>
117
117
  <!-- Root&#45;&gt;prf -->
118
118
  <g id="edge7" class="edge">
119
119
  <title>Root&#45;&gt;prf</title>
120
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M111.14,-708.55C124.82,-752.68 164.93,-865.04 235.5,-930 238.52,-932.78 241.75,-935.39 245.13,-937.85"/>
121
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="243.71,-939.85 250.88,-941.74 246.46,-935.79 243.71,-939.85"/>
120
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M110.14,-750.64C122.16,-797.87 159.86,-923.61 235.5,-996 238.46,-998.83 241.65,-1001.5 244.99,-1003.99"/>
121
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="243.54,-1005.97 250.69,-1007.94 246.33,-1001.94 243.54,-1005.97"/>
122
122
  </g>
123
123
  <!-- mis -->
124
124
  <g id="node9" class="node">
125
125
  <title>mis</title>
126
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M411.62,-913.75C411.62,-916.78 376.1,-919.25 332.38,-919.25 288.65,-919.25 253.12,-916.78 253.12,-913.75 253.12,-913.75 253.12,-864.25 253.12,-864.25 253.12,-861.22 288.65,-858.75 332.38,-858.75 376.1,-858.75 411.62,-861.22 411.62,-864.25 411.62,-864.25 411.62,-913.75 411.62,-913.75"/>
127
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M411.62,-913.75C411.62,-910.72 376.1,-908.25 332.38,-908.25 288.65,-908.25 253.12,-910.72 253.12,-913.75"/>
128
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-897.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">mistakes.json</text>
129
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-885.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">failure fingerprints · fixes</text>
130
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-873.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">[REPEATING] · [REGRESSED]</text>
126
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M411.62,-979.75C411.62,-982.78 376.1,-985.25 332.38,-985.25 288.65,-985.25 253.12,-982.78 253.12,-979.75 253.12,-979.75 253.12,-930.25 253.12,-930.25 253.12,-927.22 288.65,-924.75 332.38,-924.75 376.1,-924.75 411.62,-927.22 411.62,-930.25 411.62,-930.25 411.62,-979.75 411.62,-979.75"/>
127
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M411.62,-979.75C411.62,-976.72 376.1,-974.25 332.38,-974.25 288.65,-974.25 253.12,-976.72 253.12,-979.75"/>
128
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-963.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">mistakes.json</text>
129
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-951.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">failure fingerprints · fixes</text>
130
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-939.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">[REPEATING] · [REGRESSED]</text>
131
131
  </g>
132
132
  <!-- Root&#45;&gt;mis -->
133
133
  <g id="edge8" class="edge">
134
134
  <title>Root&#45;&gt;mis</title>
135
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M116.96,-708.61C137.1,-740.7 182.3,-806.85 235.5,-847 239.89,-850.31 244.57,-853.42 249.43,-856.34"/>
136
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="247.91,-858.3 255.2,-859.65 250.35,-854.04 247.91,-858.3"/>
135
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M114.64,-750.4C132.76,-786.19 177.22,-865.79 235.5,-913 239.58,-916.3 243.95,-919.4 248.51,-922.28"/>
136
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="247.11,-924.3 254.38,-925.8 249.63,-920.1 247.11,-924.3"/>
137
137
  </g>
138
138
  <!-- met -->
139
139
  <g id="node10" class="node">
140
140
  <title>met</title>
141
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M405.25,-830.75C405.25,-833.78 372.59,-836.25 332.38,-836.25 292.16,-836.25 259.5,-833.78 259.5,-830.75 259.5,-830.75 259.5,-781.25 259.5,-781.25 259.5,-778.22 292.16,-775.75 332.38,-775.75 372.59,-775.75 405.25,-778.22 405.25,-781.25 405.25,-781.25 405.25,-830.75 405.25,-830.75"/>
142
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M405.25,-830.75C405.25,-827.72 372.59,-825.25 332.38,-825.25 292.16,-825.25 259.5,-827.72 259.5,-830.75"/>
143
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-814.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">metrics.json</text>
144
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-802.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">per&#45;tool · per&#45;engine telemetry</text>
145
- <text xml:space="preserve" text-anchor="middle" x="332.38" y="-790.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">calibration</text>
141
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M405.25,-896.75C405.25,-899.78 372.59,-902.25 332.38,-902.25 292.16,-902.25 259.5,-899.78 259.5,-896.75 259.5,-896.75 259.5,-847.25 259.5,-847.25 259.5,-844.22 292.16,-841.75 332.38,-841.75 372.59,-841.75 405.25,-844.22 405.25,-847.25 405.25,-847.25 405.25,-896.75 405.25,-896.75"/>
142
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M405.25,-896.75C405.25,-893.72 372.59,-891.25 332.38,-891.25 292.16,-891.25 259.5,-893.72 259.5,-896.75"/>
143
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-880.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">metrics.json</text>
144
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-868.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">per&#45;tool · per&#45;engine telemetry</text>
145
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-856.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">calibration</text>
146
146
  </g>
147
147
  <!-- Root&#45;&gt;met -->
148
148
  <g id="edge9" class="edge">
149
149
  <title>Root&#45;&gt;met</title>
150
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M135.08,-708.31C161.02,-724.18 200.14,-747.3 235.5,-765 241.55,-768.03 247.88,-771.05 254.27,-773.99"/>
151
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="252.89,-776.06 260.28,-776.73 254.92,-771.6 252.89,-776.06"/>
150
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M126.63,-750.55C151.35,-771.88 194.38,-807.02 235.5,-831 240.71,-834.04 246.2,-836.99 251.79,-839.81"/>
151
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="250.61,-841.96 257.97,-842.84 252.77,-837.56 250.61,-841.96"/>
152
152
  </g>
153
- <!-- rws -->
153
+ <!-- pol -->
154
154
  <g id="node11" class="node">
155
+ <title>pol</title>
156
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M411.25,-816C411.25,-818.21 375.9,-820 332.38,-820 288.85,-820 253.5,-818.21 253.5,-816 253.5,-816 253.5,-780 253.5,-780 253.5,-777.79 288.85,-776 332.38,-776 375.9,-776 411.25,-777.79 411.25,-780 411.25,-780 411.25,-816 411.25,-816"/>
157
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M411.25,-816C411.25,-813.79 375.9,-812 332.38,-812 288.85,-812 253.5,-813.79 253.5,-816"/>
158
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-800.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">policy.json + policy_traj.jsonl</text>
159
+ <text xml:space="preserve" text-anchor="middle" x="332.38" y="-788.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">live Q / REINFORCE · MDP log</text>
160
+ </g>
161
+ <!-- Root&#45;&gt;pol -->
162
+ <g id="edge10" class="edge">
163
+ <title>Root&#45;&gt;pol</title>
164
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M134.78,-740.49C164.07,-749.06 210.61,-762.67 251.06,-774.5"/>
165
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="250.32,-776.84 257.72,-776.46 251.69,-772.14 250.32,-776.84"/>
166
+ </g>
167
+ <!-- rws -->
168
+ <g id="node12" class="node">
155
169
  <title>rws</title>
156
170
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M411.25,-750C411.25,-752.21 375.9,-754 332.38,-754 288.85,-754 253.5,-752.21 253.5,-750 253.5,-750 253.5,-714 253.5,-714 253.5,-711.79 288.85,-710 332.38,-710 375.9,-710 411.25,-711.79 411.25,-714 411.25,-714 411.25,-750 411.25,-750"/>
157
171
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M411.25,-750C411.25,-747.79 375.9,-746 332.38,-746 288.85,-746 253.5,-747.79 253.5,-750"/>
@@ -159,13 +173,13 @@
159
173
  <text xml:space="preserve" text-anchor="middle" x="332.38" y="-722.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">proxy vs judge vs correction gap</text>
160
174
  </g>
161
175
  <!-- Root&#45;&gt;rws -->
162
- <g id="edge10" class="edge">
176
+ <g id="edge11" class="edge">
163
177
  <title>Root&#45;&gt;rws</title>
164
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M134.78,-695.4C162.56,-700.58 205.87,-708.64 244.77,-715.88"/>
165
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="244.03,-718.23 251.36,-717.11 244.93,-713.42 244.03,-718.23"/>
178
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M134.78,-732C162.56,-732 205.87,-732 244.77,-732"/>
179
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="244.33,-734.45 251.33,-732 244.33,-729.55 244.33,-734.45"/>
166
180
  </g>
167
181
  <!-- ext -->
168
- <g id="node12" class="node">
182
+ <g id="node13" class="node">
169
183
  <title>ext</title>
170
184
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M416.12,-680.5C416.12,-684.36 378.59,-687.5 332.38,-687.5 286.16,-687.5 248.62,-684.36 248.62,-680.5 248.62,-680.5 248.62,-617.5 248.62,-617.5 248.62,-613.64 286.16,-610.5 332.38,-610.5 378.59,-610.5 416.12,-613.64 416.12,-617.5 416.12,-617.5 416.12,-680.5 416.12,-680.5"/>
171
185
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M416.12,-680.5C416.12,-676.64 378.59,-673.5 332.38,-673.5 286.16,-673.5 248.62,-676.64 248.62,-680.5"/>
@@ -175,13 +189,13 @@
175
189
  <text xml:space="preserve" text-anchor="middle" x="332.38" y="-627.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">packet/vision/voice) + prev + obs[]</text>
176
190
  </g>
177
191
  <!-- Root&#45;&gt;ext -->
178
- <g id="edge11" class="edge">
192
+ <g id="edge12" class="edge">
179
193
  <title>Root&#45;&gt;ext</title>
180
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M134.78,-684.72C161.34,-679.9 202.09,-672.49 239.61,-665.68"/>
181
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="239.97,-668.1 246.42,-664.44 239.1,-663.28 239.97,-668.1"/>
194
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M134.78,-721.32C161.45,-711.51 202.43,-696.44 240.08,-682.58"/>
195
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="240.78,-684.94 246.5,-680.22 239.08,-680.34 240.78,-684.94"/>
182
196
  </g>
183
197
  <!-- eart -->
184
- <g id="node13" class="node">
198
+ <g id="node14" class="node">
185
199
  <title>eart</title>
186
200
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M415.75,-584C415.75,-586.21 378.38,-588 332.38,-588 286.37,-588 249,-586.21 249,-584 249,-584 249,-548 249,-548 249,-545.79 286.37,-544 332.38,-544 378.38,-544 415.75,-545.79 415.75,-548 415.75,-548 415.75,-584 415.75,-584"/>
187
201
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M415.75,-584C415.75,-581.79 378.38,-580 332.38,-580 286.37,-580 249,-581.79 249,-584"/>
@@ -189,13 +203,13 @@
189
203
  <text xml:space="preserve" text-anchor="middle" x="332.38" y="-556.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">screenshots · pcaps · wav/txt</text>
190
204
  </g>
191
205
  <!-- Root&#45;&gt;eart -->
192
- <g id="edge12" class="edge">
206
+ <g id="edge13" class="edge">
193
207
  <title>Root&#45;&gt;eart</title>
194
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M128.48,-671.43C153.49,-651.68 195.49,-620.51 235.5,-600 242.02,-596.66 248.95,-593.51 255.98,-590.57"/>
195
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="256.52,-592.99 262.08,-588.1 254.68,-588.45 256.52,-592.99"/>
208
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M119.29,-713.63C140.92,-685.48 185.91,-631.6 235.5,-600 240.67,-596.7 246.2,-593.68 251.9,-590.91"/>
209
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="252.92,-593.14 258.25,-587.98 250.87,-588.69 252.92,-593.14"/>
196
210
  </g>
197
211
  <!-- ses -->
198
- <g id="node14" class="node">
212
+ <g id="node15" class="node">
199
213
  <title>ses</title>
200
214
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M398.88,-518C398.88,-520.21 369.07,-522 332.38,-522 295.68,-522 265.88,-520.21 265.88,-518 265.88,-518 265.88,-482 265.88,-482 265.88,-479.79 295.68,-478 332.38,-478 369.07,-478 398.88,-479.79 398.88,-482 398.88,-482 398.88,-518 398.88,-518"/>
201
215
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M398.88,-518C398.88,-515.79 369.07,-514 332.38,-514 295.68,-514 265.88,-515.79 265.88,-518"/>
@@ -203,13 +217,13 @@
203
217
  <text xml:space="preserve" text-anchor="middle" x="332.38" y="-490.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">transcripts (+ step_reward)</text>
204
218
  </g>
205
219
  <!-- Root&#45;&gt;ses -->
206
- <g id="edge13" class="edge">
220
+ <g id="edge14" class="edge">
207
221
  <title>Root&#45;&gt;ses</title>
208
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M116.32,-671.45C135.79,-638.85 180.42,-571.16 235.5,-533 242.28,-528.3 249.8,-524.22 257.55,-520.68"/>
209
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="258.36,-523 263.83,-517.98 256.43,-518.49 258.36,-523"/>
222
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M112.92,-713.42C128.92,-674.33 171.26,-583.09 235.5,-533 242.3,-527.7 250.01,-523.21 258.04,-519.43"/>
223
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="258.53,-521.89 263.95,-516.83 256.56,-517.41 258.53,-521.89"/>
210
224
  </g>
211
225
  <!-- crn -->
212
- <g id="node15" class="node">
226
+ <g id="node16" class="node">
213
227
  <title>crn</title>
214
228
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M418.38,-450.75C418.38,-453.78 379.83,-456.25 332.38,-456.25 284.92,-456.25 246.38,-453.78 246.38,-450.75 246.38,-450.75 246.38,-401.25 246.38,-401.25 246.38,-398.22 284.92,-395.75 332.38,-395.75 379.83,-395.75 418.38,-398.22 418.38,-401.25 418.38,-401.25 418.38,-450.75 418.38,-450.75"/>
215
229
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M418.38,-450.75C418.38,-447.72 379.83,-445.25 332.38,-445.25 284.92,-445.25 246.38,-447.72 246.38,-450.75"/>
@@ -218,13 +232,13 @@
218
232
  <text xml:space="preserve" text-anchor="middle" x="332.38" y="-410.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">curriculum_train_weekly</text>
219
233
  </g>
220
234
  <!-- Root&#45;&gt;crn -->
221
- <g id="edge14" class="edge">
235
+ <g id="edge15" class="edge">
222
236
  <title>Root&#45;&gt;crn</title>
223
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M111.91,-671.49C126.74,-629.58 168.22,-526.49 235.5,-467 238.56,-464.29 241.83,-461.75 245.24,-459.35"/>
224
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="246.52,-461.44 251.03,-455.56 243.83,-457.34 246.52,-461.44"/>
237
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M110,-713.6C121.78,-666.37 159.18,-539.51 235.5,-467 238.31,-464.33 241.31,-461.83 244.47,-459.47"/>
238
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="245.85,-461.49 250.22,-455.5 243.07,-457.46 245.85,-461.49"/>
225
239
  </g>
226
240
  <!-- agt -->
227
- <g id="node16" class="node">
241
+ <g id="node17" class="node">
228
242
  <title>agt</title>
229
243
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M375.25,-370C375.25,-372.21 356.03,-374 332.38,-374 308.72,-374 289.5,-372.21 289.5,-370 289.5,-370 289.5,-334 289.5,-334 289.5,-331.79 308.72,-330 332.38,-330 356.03,-330 375.25,-331.79 375.25,-334 375.25,-334 375.25,-370 375.25,-370"/>
230
244
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M375.25,-370C375.25,-367.79 356.03,-366 332.38,-366 308.72,-366 289.5,-367.79 289.5,-370"/>
@@ -232,13 +246,13 @@
232
246
  <text xml:space="preserve" text-anchor="middle" x="332.38" y="-342.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">persona registry</text>
233
247
  </g>
234
248
  <!-- Root&#45;&gt;agt -->
235
- <g id="edge15" class="edge">
249
+ <g id="edge16" class="edge">
236
250
  <title>Root&#45;&gt;agt</title>
237
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M108.31,-671.6C116.56,-619.12 147.3,-467.18 235.5,-385 248,-373.35 264.81,-365.79 280.86,-360.89"/>
238
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="281.47,-363.27 287.55,-359.02 280.15,-358.55 281.47,-363.27"/>
251
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M107.24,-713.61C112.83,-656.5 137.59,-480.36 235.5,-385 247.74,-373.08 264.49,-365.45 280.56,-360.58"/>
252
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="281.18,-362.95 287.27,-358.72 279.87,-358.23 281.18,-362.95"/>
239
253
  </g>
240
254
  <!-- swm -->
241
- <g id="node17" class="node">
255
+ <g id="node18" class="node">
242
256
  <title>swm</title>
243
257
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M387.25,-304C387.25,-306.21 362.65,-308 332.38,-308 302.1,-308 277.5,-306.21 277.5,-304 277.5,-304 277.5,-268 277.5,-268 277.5,-265.79 302.1,-264 332.38,-264 362.65,-264 387.25,-265.79 387.25,-268 387.25,-268 387.25,-304 387.25,-304"/>
244
258
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M387.25,-304C387.25,-301.79 362.65,-300 332.38,-300 302.1,-300 277.5,-301.79 277.5,-304"/>
@@ -246,13 +260,13 @@
246
260
  <text xml:space="preserve" text-anchor="middle" x="332.38" y="-276.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">multi&#45;agent chat</text>
247
261
  </g>
248
262
  <!-- Root&#45;&gt;swm -->
249
- <g id="edge16" class="edge">
263
+ <g id="edge17" class="edge">
250
264
  <title>Root&#45;&gt;swm</title>
251
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M106.72,-671.64C110.87,-612.05 131.99,-422 235.5,-319 244.71,-309.83 256.59,-303.21 268.82,-298.42"/>
252
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="269.55,-300.76 275.32,-296.1 267.9,-296.15 269.55,-300.76"/>
265
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M105.97,-713.42C107.75,-649.38 122.28,-435.34 235.5,-319 244.67,-309.58 256.64,-302.85 269,-298.04"/>
266
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="269.81,-300.35 275.59,-295.71 268.17,-295.74 269.81,-300.35"/>
253
267
  </g>
254
268
  <!-- cur -->
255
- <g id="node18" class="node">
269
+ <g id="node19" class="node">
256
270
  <title>cur</title>
257
271
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M413.5,-238C413.5,-240.21 377.14,-242 332.38,-242 287.61,-242 251.25,-240.21 251.25,-238 251.25,-238 251.25,-202 251.25,-202 251.25,-199.79 287.61,-198 332.38,-198 377.14,-198 413.5,-199.79 413.5,-202 413.5,-202 413.5,-238 413.5,-238"/>
258
272
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M413.5,-238C413.5,-235.79 377.14,-234 332.38,-234 287.61,-234 251.25,-235.79 251.25,-238"/>
@@ -260,13 +274,13 @@
260
274
  <text xml:space="preserve" text-anchor="middle" x="332.38" y="-210.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">self&#45;play · A/B eval · KPI trend</text>
261
275
  </g>
262
276
  <!-- Root&#45;&gt;cur -->
263
- <g id="edge17" class="edge">
277
+ <g id="edge18" class="edge">
264
278
  <title>Root&#45;&gt;cur</title>
265
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M105.59,-671.76C106.02,-605.83 116.42,-377.3 235.5,-253 238.03,-250.35 240.79,-247.92 243.72,-245.68"/>
266
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="245.06,-247.73 249.45,-241.75 242.29,-243.69 245.06,-247.73"/>
279
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M105.02,-713.51C103.29,-643.38 106.62,-390.81 235.5,-253 238,-250.32 240.73,-247.87 243.63,-245.61"/>
280
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="244.99,-247.65 249.33,-241.64 242.19,-243.63 244.99,-247.65"/>
267
281
  </g>
268
282
  <!-- ftn -->
269
- <g id="node19" class="node">
283
+ <g id="node20" class="node">
270
284
  <title>ftn</title>
271
285
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M412,-172C412,-174.21 376.31,-176 332.38,-176 288.44,-176 252.75,-174.21 252.75,-172 252.75,-172 252.75,-136 252.75,-136 252.75,-133.79 288.44,-132 332.38,-132 376.31,-132 412,-133.79 412,-136 412,-136 412,-172 412,-172"/>
272
286
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M412,-172C412,-169.79 376.31,-168 332.38,-168 288.44,-168 252.75,-169.79 252.75,-172"/>
@@ -274,13 +288,13 @@
274
288
  <text xml:space="preserve" text-anchor="middle" x="332.38" y="-144.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">ShareGPT / OpenAI SFT + DPO</text>
275
289
  </g>
276
290
  <!-- Root&#45;&gt;ftn -->
277
- <g id="edge18" class="edge">
291
+ <g id="edge19" class="edge">
278
292
  <title>Root&#45;&gt;ftn</title>
279
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M108.15,-671.59C119.13,-589.92 167.03,-261.11 235.5,-187 238.48,-183.77 241.8,-180.86 245.35,-178.23"/>
280
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="246.59,-180.35 251.07,-174.44 243.88,-176.26 246.59,-180.35"/>
293
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M107.76,-713.53C117.47,-627.63 162,-268.06 235.5,-187 238.45,-183.74 241.75,-180.81 245.28,-178.16"/>
294
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="246.52,-180.28 250.97,-174.35 243.79,-176.21 246.52,-180.28"/>
281
295
  </g>
282
296
  <!-- bkp -->
283
- <g id="node20" class="node">
297
+ <g id="node21" class="node">
284
298
  <title>bkp</title>
285
299
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M397.75,-106C397.75,-108.21 368.45,-110 332.38,-110 296.3,-110 267,-108.21 267,-106 267,-106 267,-70 267,-70 267,-67.79 296.3,-66 332.38,-66 368.45,-66 397.75,-67.79 397.75,-70 397.75,-70 397.75,-106 397.75,-106"/>
286
300
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M397.75,-106C397.75,-103.79 368.45,-102 332.38,-102 296.3,-102 267,-103.79 267,-106"/>
@@ -288,13 +302,13 @@
288
302
  <text xml:space="preserve" text-anchor="middle" x="332.38" y="-78.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Migrate autofix snapshots</text>
289
303
  </g>
290
304
  <!-- Root&#45;&gt;bkp -->
291
- <g id="edge19" class="edge">
305
+ <g id="edge20" class="edge">
292
306
  <title>Root&#45;&gt;bkp</title>
293
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M107.56,-671.61C116.54,-583.58 159.08,-206.09 235.5,-121 241.96,-113.81 250.06,-108.18 258.8,-103.78"/>
294
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="259.75,-106.04 265.1,-100.91 257.72,-101.58 259.75,-106.04"/>
307
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M107.25,-713.5C115.09,-621.4 154.04,-213.08 235.5,-121 241.91,-113.76 249.97,-108.11 258.7,-103.69"/>
308
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="259.64,-105.96 264.99,-100.82 257.61,-101.5 259.64,-105.96"/>
295
309
  </g>
296
310
  <!-- hist -->
297
- <g id="node21" class="node">
311
+ <g id="node22" class="node">
298
312
  <title>hist</title>
299
313
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M372.62,-40C372.62,-42.21 354.58,-44 332.38,-44 310.17,-44 292.12,-42.21 292.12,-40 292.12,-40 292.12,-4 292.12,-4 292.12,-1.79 310.17,0 332.38,0 354.58,0 372.62,-1.79 372.62,-4 372.62,-4 372.62,-40 372.62,-40"/>
300
314
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M372.62,-40C372.62,-37.79 354.58,-36 332.38,-36 310.17,-36 292.12,-37.79 292.12,-40"/>
@@ -302,10 +316,10 @@
302
316
  <text xml:space="preserve" text-anchor="middle" x="332.38" y="-12.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">REPL history</text>
303
317
  </g>
304
318
  <!-- Root&#45;&gt;hist -->
305
- <g id="edge20" class="edge">
319
+ <g id="edge21" class="edge">
306
320
  <title>Root&#45;&gt;hist</title>
307
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M107.1,-671.41C114.31,-576.96 151.16,-151.08 235.5,-55 247.68,-41.13 265.96,-33.09 283.31,-28.42"/>
308
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="283.87,-30.81 290.1,-26.78 282.72,-26.04 283.87,-30.81"/>
321
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M106.84,-713.5C112.96,-615.55 146.03,-158.19 235.5,-55 247.59,-41.06 265.86,-33 283.22,-28.34"/>
322
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="283.78,-30.73 290.01,-26.71 282.64,-25.96 283.78,-30.73"/>
309
323
  </g>
310
324
  </g>
311
325
  </svg>