pwn 0.5.620 → 0.5.622

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 (96) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +1 -1
  4. data/documentation/Agent-Tool-Registry.md +3 -3
  5. data/documentation/Configuration.md +292 -47
  6. data/documentation/Cron.md +14 -1
  7. data/documentation/Diagrams.md +1 -1
  8. data/documentation/Extrospection.md +71 -5
  9. data/documentation/Home.md +2 -2
  10. data/documentation/How-PWN-Works.md +1 -1
  11. data/documentation/Mistakes.md +2 -1
  12. data/documentation/Persistence.md +2 -1
  13. data/documentation/Skills-Memory-Learning.md +3 -2
  14. data/documentation/Transparent-Browser.md +18 -1
  15. data/documentation/diagrams/agent-tool-registry.svg +55 -54
  16. data/documentation/diagrams/ai-integration-tool-calling.svg +24 -24
  17. data/documentation/diagrams/aws-cloud-security.svg +25 -25
  18. data/documentation/diagrams/burp-vs-zap-preference.svg +12 -12
  19. data/documentation/diagrams/code-scanning-sast.svg +25 -25
  20. data/documentation/diagrams/cron-scheduling.svg +23 -23
  21. data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
  22. data/documentation/diagrams/dot/extrospection-world-awareness.dot +29 -8
  23. data/documentation/diagrams/dot/memory-skills-detailed.dot +4 -0
  24. data/documentation/diagrams/dot/overall-pwn-architecture.dot +2 -2
  25. data/documentation/diagrams/dot/persistence-filesystem.dot +2 -1
  26. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +11 -5
  27. data/documentation/diagrams/driver-framework.svg +13 -13
  28. data/documentation/diagrams/extrospection-world-awareness.svg +229 -99
  29. data/documentation/diagrams/fuzzing-workflow.svg +24 -24
  30. data/documentation/diagrams/hardware-hacking.svg +18 -18
  31. data/documentation/diagrams/history-to-drivers.svg +18 -18
  32. data/documentation/diagrams/memory-skills-detailed.svg +124 -101
  33. data/documentation/diagrams/mistakes-negative-feedback.svg +55 -55
  34. data/documentation/diagrams/network-infra-testing.svg +27 -27
  35. data/documentation/diagrams/overall-pwn-architecture.svg +85 -85
  36. data/documentation/diagrams/penetration-testing-workflow.svg +30 -30
  37. data/documentation/diagrams/persistence-filesystem.svg +94 -85
  38. data/documentation/diagrams/plugin-ecosystem.svg +35 -35
  39. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +226 -180
  40. data/documentation/diagrams/pwn-repl-prototyping.svg +20 -20
  41. data/documentation/diagrams/reporting-pipeline.svg +18 -18
  42. data/documentation/diagrams/reverse-engineering-flow.svg +21 -21
  43. data/documentation/diagrams/sdr-radio-flow.svg +31 -31
  44. data/documentation/diagrams/sessions-cron-automation.svg +18 -18
  45. data/documentation/diagrams/swarm-multi-agent.svg +39 -39
  46. data/documentation/diagrams/web-application-testing.svg +26 -26
  47. data/documentation/diagrams/zero-day-research-flow.svg +25 -25
  48. data/documentation/pwn-ai-Agent.md +4 -4
  49. data/lib/pwn/ai/agent/assembly.rb +1 -1
  50. data/lib/pwn/ai/agent/btc.rb +1 -1
  51. data/lib/pwn/ai/agent/burp_suite.rb +1 -1
  52. data/lib/pwn/ai/agent/extrospection.rb +435 -6
  53. data/lib/pwn/ai/agent/gqrx.rb +2 -2
  54. data/lib/pwn/ai/agent/hacker_one.rb +1 -1
  55. data/lib/pwn/ai/agent/learning.rb +16 -16
  56. data/lib/pwn/ai/agent/loop.rb +1 -1
  57. data/lib/pwn/ai/agent/{introspection.rb → reflect.rb} +12 -12
  58. data/lib/pwn/ai/agent/sast.rb +1 -1
  59. data/lib/pwn/ai/agent/tools/extrospection.rb +89 -4
  60. data/lib/pwn/ai/agent/tools/learning.rb +7 -7
  61. data/lib/pwn/ai/agent/transparent_browser.rb +1 -1
  62. data/lib/pwn/ai/agent/vuln_gen.rb +2 -2
  63. data/lib/pwn/ai/agent.rb +1 -1
  64. data/lib/pwn/ai/open_ai.rb +10 -6
  65. data/lib/pwn/config.rb +5 -4
  66. data/lib/pwn/plugins/burp_suite.rb +2 -2
  67. data/lib/pwn/sast/pom_version.rb +2 -2
  68. data/lib/pwn/sast/test_case_engine.rb +1 -1
  69. data/lib/pwn/sdr/decoder/adsb.rb +14 -33
  70. data/lib/pwn/sdr/decoder/apt.rb +97 -36
  71. data/lib/pwn/sdr/decoder/base.rb +258 -171
  72. data/lib/pwn/sdr/decoder/bluetooth.rb +13 -20
  73. data/lib/pwn/sdr/decoder/dect.rb +13 -27
  74. data/lib/pwn/sdr/decoder/dsp.rb +396 -0
  75. data/lib/pwn/sdr/decoder/flex.rb +177 -210
  76. data/lib/pwn/sdr/decoder/gps.rb +12 -21
  77. data/lib/pwn/sdr/decoder/gsm.rb +21 -73
  78. data/lib/pwn/sdr/decoder/iridium.rb +11 -26
  79. data/lib/pwn/sdr/decoder/lora.rb +16 -23
  80. data/lib/pwn/sdr/decoder/lte.rb +11 -32
  81. data/lib/pwn/sdr/decoder/morse.rb +95 -21
  82. data/lib/pwn/sdr/decoder/p25.rb +19 -16
  83. data/lib/pwn/sdr/decoder/pager.rb +22 -38
  84. data/lib/pwn/sdr/decoder/pocsag.rb +175 -68
  85. data/lib/pwn/sdr/decoder/rfid.rb +24 -33
  86. data/lib/pwn/sdr/decoder/rtl433.rb +21 -30
  87. data/lib/pwn/sdr/decoder/rtty.rb +100 -27
  88. data/lib/pwn/sdr/decoder/wifi.rb +21 -42
  89. data/lib/pwn/sdr/decoder/zigbee.rb +18 -40
  90. data/lib/pwn/sdr/decoder.rb +8 -0
  91. data/lib/pwn/sdr/gqrx.rb +1 -1
  92. data/lib/pwn/version.rb +1 -1
  93. data/spec/lib/pwn/ai/agent/{introspection_spec.rb → reflect_spec.rb} +3 -3
  94. data/spec/lib/pwn/sdr/decoder/dsp_spec.rb +15 -0
  95. data/third_party/pwn_rdoc.jsonl +75 -19
  96. metadata +7 -5
@@ -4,371 +4,417 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
6
  <!-- Title: PWN_AI_Feedback_Learning_Loop Pages: 1 -->
7
- <svg width="1658pt" height="723pt"
8
- viewBox="0.00 0.00 1658.00 723.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
7
+ <svg width="1891pt" height="723pt"
8
+ viewBox="0.00 0.00 1891.00 723.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 679.95)">
10
10
  <title>PWN_AI_Feedback_Learning_Loop</title>
11
- <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-679.95 1614.99,-679.95 1614.99,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="592.4" y="-614.75" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">pwn&#45;ai — Closed Self&#45;Improvement Loop</text>
13
- <text xml:space="preserve" text-anchor="start" x="599.52" y="-603.3" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Introspection (self) &#160;⟷ &#160;Extrospection (world) &#160;· &#160;Mistakes (negative feedback)</text>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-679.95 1847.82,-679.95 1847.82,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="708.81" y="-614.75" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">pwn&#45;ai — Closed Self&#45;Improvement Loop</text>
13
+ <text xml:space="preserve" text-anchor="start" x="715.93" y="-603.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">Introspection (self) &#160;⟷ &#160;Extrospection (world) &#160;· &#160;Mistakes (negative feedback)</text>
14
14
  <g id="clust2" class="cluster">
15
15
  <title>cluster_core</title>
16
- <path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M131.59,-424C131.59,-424 468.59,-424 468.59,-424 474.59,-424 480.59,-430 480.59,-436 480.59,-436 480.59,-495.25 480.59,-495.25 480.59,-501.25 474.59,-507.25 468.59,-507.25 468.59,-507.25 131.59,-507.25 131.59,-507.25 125.59,-507.25 119.59,-501.25 119.59,-495.25 119.59,-495.25 119.59,-436 119.59,-436 119.59,-430 125.59,-424 131.59,-424"/>
17
- <text xml:space="preserve" text-anchor="middle" x="300.09" y="-484.25" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">PWN::AI::Agent::Loop</text>
16
+ <path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M376.77,-424C376.77,-424 713.77,-424 713.77,-424 719.77,-424 725.77,-430 725.77,-436 725.77,-436 725.77,-495.25 725.77,-495.25 725.77,-501.25 719.77,-507.25 713.77,-507.25 713.77,-507.25 376.77,-507.25 376.77,-507.25 370.77,-507.25 364.77,-501.25 364.77,-495.25 364.77,-495.25 364.77,-436 364.77,-436 364.77,-430 370.77,-424 376.77,-424"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="545.27" y="-484.25" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">PWN::AI::Agent::Loop</text>
18
18
  </g>
19
19
  <g id="clust4" class="cluster">
20
20
  <title>cluster_intro</title>
21
- <path fill="#022c22" stroke="#047857" stroke-width="2" d="M416.59,-257.75C416.59,-257.75 928.59,-257.75 928.59,-257.75 934.59,-257.75 940.59,-263.75 940.59,-269.75 940.59,-269.75 940.59,-355 940.59,-355 940.59,-361 934.59,-367 928.59,-367 928.59,-367 416.59,-367 416.59,-367 410.59,-367 404.59,-361 404.59,-355 404.59,-355 404.59,-269.75 404.59,-269.75 404.59,-263.75 410.59,-257.75 416.59,-257.75"/>
22
- <text xml:space="preserve" text-anchor="middle" x="672.59" y="-344" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">INTROSPECTION &#160;(self)</text>
21
+ <path fill="#022c22" stroke="#047857" stroke-width="2" d="M666.77,-257.75C666.77,-257.75 1178.77,-257.75 1178.77,-257.75 1184.77,-257.75 1190.77,-263.75 1190.77,-269.75 1190.77,-269.75 1190.77,-355 1190.77,-355 1190.77,-361 1184.77,-367 1178.77,-367 1178.77,-367 666.77,-367 666.77,-367 660.77,-367 654.77,-361 654.77,-355 654.77,-355 654.77,-269.75 654.77,-269.75 654.77,-263.75 660.77,-257.75 666.77,-257.75"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="922.77" y="-344" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">INTROSPECTION &#160;(self)</text>
23
23
  </g>
24
24
  <g id="clust5" class="cluster">
25
25
  <title>cluster_extro</title>
26
- <path fill="#422006" stroke="#a16207" stroke-width="2" d="M106.59,-264.5C106.59,-264.5 365.59,-264.5 365.59,-264.5 371.59,-264.5 377.59,-270.5 377.59,-276.5 377.59,-276.5 377.59,-348.25 377.59,-348.25 377.59,-354.25 371.59,-360.25 365.59,-360.25 365.59,-360.25 106.59,-360.25 106.59,-360.25 100.59,-360.25 94.59,-354.25 94.59,-348.25 94.59,-348.25 94.59,-276.5 94.59,-276.5 94.59,-270.5 100.59,-264.5 106.59,-264.5"/>
27
- <text xml:space="preserve" text-anchor="middle" x="236.09" y="-337.25" font-family="sans-Serif" font-size="20.00" fill="#fde68a">EXTROSPECTION &#160;(world)</text>
26
+ <path fill="#422006" stroke="#a16207" stroke-width="2" d="M182.77,-264.5C182.77,-264.5 615.77,-264.5 615.77,-264.5 621.77,-264.5 627.77,-270.5 627.77,-276.5 627.77,-276.5 627.77,-348.25 627.77,-348.25 627.77,-354.25 621.77,-360.25 615.77,-360.25 615.77,-360.25 182.77,-360.25 182.77,-360.25 176.77,-360.25 170.77,-354.25 170.77,-348.25 170.77,-348.25 170.77,-276.5 170.77,-276.5 170.77,-270.5 176.77,-264.5 182.77,-264.5"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="399.27" y="-337.25" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fde68a">EXTROSPECTION &#160;(world)</text>
28
28
  </g>
29
29
  <g id="clust7" class="cluster">
30
30
  <title>cluster_store</title>
31
- <path fill="#1e293b" stroke="#334155" stroke-dasharray="5,2" d="M318.59,-8C318.59,-8 1002.59,-8 1002.59,-8 1008.59,-8 1014.59,-14 1014.59,-20 1014.59,-20 1014.59,-79.25 1014.59,-79.25 1014.59,-85.25 1008.59,-91.25 1002.59,-91.25 1002.59,-91.25 318.59,-91.25 318.59,-91.25 312.59,-91.25 306.59,-85.25 306.59,-79.25 306.59,-79.25 306.59,-20 306.59,-20 306.59,-14 312.59,-8 318.59,-8"/>
32
- <text xml:space="preserve" text-anchor="middle" x="660.59" y="-68.25" font-family="sans-Serif" font-size="20.00" fill="#94a3b8">~/.pwn/</text>
31
+ <path fill="#1e293b" stroke="#334155" stroke-dasharray="5,2" d="M326.77,-8C326.77,-8 1011.77,-8 1011.77,-8 1017.77,-8 1023.77,-14 1023.77,-20 1023.77,-20 1023.77,-79.25 1023.77,-79.25 1023.77,-85.25 1017.77,-91.25 1011.77,-91.25 1011.77,-91.25 326.77,-91.25 326.77,-91.25 320.77,-91.25 314.77,-85.25 314.77,-79.25 314.77,-79.25 314.77,-20 314.77,-20 314.77,-14 320.77,-8 326.77,-8"/>
32
+ <text xml:space="preserve" text-anchor="middle" x="669.27" y="-68.25" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#94a3b8">~/.pwn/</text>
33
33
  </g>
34
34
  <!-- User -->
35
35
  <g id="node1" class="node">
36
36
  <title>User</title>
37
- <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M329.47,-597.75C329.47,-597.75 261.72,-597.75 261.72,-597.75 255.72,-597.75 249.72,-591.75 249.72,-585.75 249.72,-585.75 249.72,-573.75 249.72,-573.75 249.72,-567.75 255.72,-561.75 261.72,-561.75 261.72,-561.75 329.47,-561.75 329.47,-561.75 335.47,-561.75 341.47,-567.75 341.47,-573.75 341.47,-573.75 341.47,-585.75 341.47,-585.75 341.47,-591.75 335.47,-597.75 329.47,-597.75"/>
38
- <text xml:space="preserve" text-anchor="middle" x="295.59" y="-576.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">👤 &#160;Researcher</text>
37
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M574.64,-597.75C574.64,-597.75 506.89,-597.75 506.89,-597.75 500.89,-597.75 494.89,-591.75 494.89,-585.75 494.89,-585.75 494.89,-573.75 494.89,-573.75 494.89,-567.75 500.89,-561.75 506.89,-561.75 506.89,-561.75 574.64,-561.75 574.64,-561.75 580.64,-561.75 586.64,-567.75 586.64,-573.75 586.64,-573.75 586.64,-585.75 586.64,-585.75 586.64,-591.75 580.64,-597.75 574.64,-597.75"/>
38
+ <text xml:space="preserve" text-anchor="middle" x="540.77" y="-576.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">👤 &#160;Researcher</text>
39
39
  </g>
40
40
  <!-- Prompt -->
41
41
  <g id="node4" class="node">
42
42
  <title>Prompt</title>
43
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M317.09,-468C317.09,-468 256.09,-468 256.09,-468 250.09,-468 244.09,-462 244.09,-456 244.09,-456 244.09,-444 244.09,-444 244.09,-438 250.09,-432 256.09,-432 256.09,-432 317.09,-432 317.09,-432 323.09,-432 329.09,-438 329.09,-444 329.09,-444 329.09,-456 329.09,-456 329.09,-462 323.09,-468 317.09,-468"/>
44
- <text xml:space="preserve" text-anchor="middle" x="286.59" y="-453.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">PromptBuilder</text>
45
- <text xml:space="preserve" text-anchor="middle" x="286.59" y="-439.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">inject context</text>
43
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M562.27,-468C562.27,-468 501.27,-468 501.27,-468 495.27,-468 489.27,-462 489.27,-456 489.27,-456 489.27,-444 489.27,-444 489.27,-438 495.27,-432 501.27,-432 501.27,-432 562.27,-432 562.27,-432 568.27,-432 574.27,-438 574.27,-444 574.27,-444 574.27,-456 574.27,-456 574.27,-462 568.27,-468 562.27,-468"/>
44
+ <text xml:space="preserve" text-anchor="middle" x="531.77" y="-453.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">PromptBuilder</text>
45
+ <text xml:space="preserve" text-anchor="middle" x="531.77" y="-439.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">inject context</text>
46
46
  </g>
47
47
  <!-- User&#45;&gt;Prompt -->
48
48
  <g id="edge1" class="edge">
49
49
  <title>User&#45;&gt;Prompt</title>
50
- <path fill="none" stroke="#38bdf8" stroke-width="2" d="M294.36,-561.25C292.87,-540.16 290.36,-504.42 288.59,-479.36"/>
51
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="291.41,-479.5 288.05,-471.71 285.82,-479.89 291.41,-479.5"/>
52
- <text xml:space="preserve" text-anchor="middle" x="299.88" y="-517.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">task</text>
50
+ <path fill="none" stroke="#38bdf8" stroke-width="2" d="M539.54,-561.25C538.05,-540.16 535.53,-504.42 533.77,-479.36"/>
51
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="536.58,-479.5 533.23,-471.71 531,-479.89 536.58,-479.5"/>
52
+ <text xml:space="preserve" text-anchor="middle" x="545.06" y="-517.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">task</text>
53
53
  </g>
54
54
  <!-- Mistakes -->
55
55
  <g id="node9" class="node">
56
56
  <title>Mistakes</title>
57
- <path fill="#6ee7b7" stroke="#334155" stroke-width="2" d="M751.84,-327.75C751.84,-327.75 605.34,-327.75 605.34,-327.75 599.34,-327.75 593.34,-321.75 593.34,-315.75 593.34,-315.75 593.34,-277.75 593.34,-277.75 593.34,-271.75 599.34,-265.75 605.34,-265.75 605.34,-265.75 751.84,-265.75 751.84,-265.75 757.84,-265.75 763.84,-271.75 763.84,-277.75 763.84,-277.75 763.84,-315.75 763.84,-315.75 763.84,-321.75 757.84,-327.75 751.84,-327.75"/>
58
- <text xml:space="preserve" text-anchor="middle" x="678.59" y="-313.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Mistakes</text>
59
- <text xml:space="preserve" text-anchor="middle" x="678.59" y="-299.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">record · resolve</text>
60
- <text xml:space="preserve" text-anchor="middle" x="678.59" y="-286.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">guard · correction_hint</text>
61
- <text xml:space="preserve" text-anchor="middle" x="678.59" y="-272.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">[REPEATING] · [REGRESSED]</text>
57
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="2" d="M1002.02,-327.75C1002.02,-327.75 855.52,-327.75 855.52,-327.75 849.52,-327.75 843.52,-321.75 843.52,-315.75 843.52,-315.75 843.52,-277.75 843.52,-277.75 843.52,-271.75 849.52,-265.75 855.52,-265.75 855.52,-265.75 1002.02,-265.75 1002.02,-265.75 1008.02,-265.75 1014.02,-271.75 1014.02,-277.75 1014.02,-277.75 1014.02,-315.75 1014.02,-315.75 1014.02,-321.75 1008.02,-327.75 1002.02,-327.75"/>
58
+ <text xml:space="preserve" text-anchor="middle" x="928.77" y="-313.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Mistakes</text>
59
+ <text xml:space="preserve" text-anchor="middle" x="928.77" y="-299.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">record · resolve</text>
60
+ <text xml:space="preserve" text-anchor="middle" x="928.77" y="-286.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">guard · correction_hint</text>
61
+ <text xml:space="preserve" text-anchor="middle" x="928.77" y="-272.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">[REPEATING] · [REGRESSED]</text>
62
62
  </g>
63
63
  <!-- User&#45;&gt;Mistakes -->
64
64
  <g id="edge9" class="edge">
65
65
  <title>User&#45;&gt;Mistakes</title>
66
- <path fill="none" stroke="#fb7185" stroke-width="1.3" stroke-dasharray="5,2" d="M249.08,-567.02C169.94,-547.04 17.5,-508.42 16.59,-507.25 -6.09,-478.02 -4.75,-454.22 16.59,-424 54.13,-370.83 90.56,-386.66 154.59,-375 200.19,-366.7 527.28,-380.55 571.59,-367 594,-360.15 616.17,-347.12 634.47,-334.19"/>
67
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="635.65,-336.8 640.48,-329.84 632.36,-332.27 635.65,-336.8"/>
68
- <text xml:space="preserve" text-anchor="middle" x="63.09" y="-451.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">&quot;that&#39;s wrong&quot;</text>
69
- <text xml:space="preserve" text-anchor="middle" x="63.09" y="-441.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">check_user_correction</text>
66
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" stroke-dasharray="5,2" d="M494.25,-567.02C415.12,-547.04 262.68,-508.42 261.77,-507.25 239.08,-478.02 240.43,-454.22 261.77,-424 299.31,-370.83 335.74,-386.66 399.77,-375 445.91,-366.6 776.92,-380.71 821.77,-367 844.17,-360.15 866.35,-347.12 884.65,-334.2"/>
67
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="885.82,-336.8 890.65,-329.84 882.53,-332.27 885.82,-336.8"/>
68
+ <text xml:space="preserve" text-anchor="middle" x="308.27" y="-451.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">&quot;that&#39;s wrong&quot;</text>
69
+ <text xml:space="preserve" text-anchor="middle" x="308.27" y="-441.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">check_user_correction</text>
70
70
  </g>
71
71
  <!-- LLM -->
72
72
  <g id="node2" class="node">
73
73
  <title>LLM</title>
74
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M481.59,-597.75C481.59,-597.75 405.59,-597.75 405.59,-597.75 399.59,-597.75 393.59,-591.75 393.59,-585.75 393.59,-585.75 393.59,-573.75 393.59,-573.75 393.59,-567.75 399.59,-561.75 405.59,-561.75 405.59,-561.75 481.59,-561.75 481.59,-561.75 487.59,-561.75 493.59,-567.75 493.59,-573.75 493.59,-573.75 493.59,-585.75 493.59,-585.75 493.59,-591.75 487.59,-597.75 481.59,-597.75"/>
75
- <text xml:space="preserve" text-anchor="middle" x="443.59" y="-576.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🤖 &#160;LLM Provider</text>
74
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M726.77,-597.75C726.77,-597.75 650.77,-597.75 650.77,-597.75 644.77,-597.75 638.77,-591.75 638.77,-585.75 638.77,-585.75 638.77,-573.75 638.77,-573.75 638.77,-567.75 644.77,-561.75 650.77,-561.75 650.77,-561.75 726.77,-561.75 726.77,-561.75 732.77,-561.75 738.77,-567.75 738.77,-573.75 738.77,-573.75 738.77,-585.75 738.77,-585.75 738.77,-591.75 732.77,-597.75 726.77,-597.75"/>
75
+ <text xml:space="preserve" text-anchor="middle" x="688.77" y="-576.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">🤖 &#160;LLM Provider</text>
76
76
  </g>
77
77
  <!-- Dispatch -->
78
78
  <g id="node5" class="node">
79
79
  <title>Dispatch</title>
80
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M460.59,-468C460.59,-468 426.59,-468 426.59,-468 420.59,-468 414.59,-462 414.59,-456 414.59,-456 414.59,-444 414.59,-444 414.59,-438 420.59,-432 426.59,-432 426.59,-432 460.59,-432 460.59,-432 466.59,-432 472.59,-438 472.59,-444 472.59,-444 472.59,-456 472.59,-456 472.59,-462 466.59,-468 460.59,-468"/>
81
- <text xml:space="preserve" text-anchor="middle" x="443.59" y="-453.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Dispatch</text>
82
- <text xml:space="preserve" text-anchor="middle" x="443.59" y="-439.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">tool calls</text>
80
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M705.77,-468C705.77,-468 671.77,-468 671.77,-468 665.77,-468 659.77,-462 659.77,-456 659.77,-456 659.77,-444 659.77,-444 659.77,-438 665.77,-432 671.77,-432 671.77,-432 705.77,-432 705.77,-432 711.77,-432 717.77,-438 717.77,-444 717.77,-444 717.77,-456 717.77,-456 717.77,-462 711.77,-468 705.77,-468"/>
81
+ <text xml:space="preserve" text-anchor="middle" x="688.77" y="-453.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Dispatch</text>
82
+ <text xml:space="preserve" text-anchor="middle" x="688.77" y="-439.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">tool calls</text>
83
83
  </g>
84
84
  <!-- LLM&#45;&gt;Dispatch -->
85
85
  <g id="edge2" class="edge">
86
86
  <title>LLM&#45;&gt;Dispatch</title>
87
- <path fill="none" stroke="#a78bfa" stroke-width="2" d="M440.4,-550.18C439.65,-542.28 438.97,-533.69 438.59,-525.75 437.87,-510.42 438.88,-493.35 440.17,-479.39"/>
88
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="437.61,-550.42 441.21,-558.1 443.18,-549.86 437.61,-550.42"/>
89
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="442.95,-479.77 440.98,-471.52 437.38,-479.19 442.95,-479.77"/>
90
- <text xml:space="preserve" text-anchor="middle" x="458.09" y="-517.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">tool_calls</text>
87
+ <path fill="none" stroke="#a78bfa" stroke-width="2" d="M688.77,-550.28C688.77,-529.21 688.77,-500.63 688.77,-479.54"/>
88
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="685.97,-550.23 688.77,-558.23 691.57,-550.23 685.97,-550.23"/>
89
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="691.57,-479.72 688.77,-471.72 685.97,-479.72 691.57,-479.72"/>
90
+ <text xml:space="preserve" text-anchor="middle" x="708.27" y="-517.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">tool_calls</text>
91
91
  </g>
92
92
  <!-- World -->
93
93
  <g id="node3" class="node">
94
94
  <title>World</title>
95
- <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M194.34,-597.75C194.34,-597.75 98.84,-597.75 98.84,-597.75 92.84,-597.75 86.84,-591.75 86.84,-585.75 86.84,-585.75 86.84,-573.75 86.84,-573.75 86.84,-567.75 92.84,-561.75 98.84,-561.75 98.84,-561.75 194.34,-561.75 194.34,-561.75 200.34,-561.75 206.34,-567.75 206.34,-573.75 206.34,-573.75 206.34,-585.75 206.34,-585.75 206.34,-591.75 200.34,-597.75 194.34,-597.75"/>
96
- <text xml:space="preserve" text-anchor="middle" x="146.59" y="-582.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🌍 &#160;Host · Net · Repo</text>
97
- <text xml:space="preserve" text-anchor="middle" x="146.59" y="-569.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Toolchain · RF · Intel</text>
95
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M439.64,-597.75C439.64,-597.75 317.89,-597.75 317.89,-597.75 311.89,-597.75 305.89,-591.75 305.89,-585.75 305.89,-585.75 305.89,-573.75 305.89,-573.75 305.89,-567.75 311.89,-561.75 317.89,-561.75 317.89,-561.75 439.64,-561.75 439.64,-561.75 445.64,-561.75 451.64,-567.75 451.64,-573.75 451.64,-573.75 451.64,-585.75 451.64,-585.75 451.64,-591.75 445.64,-597.75 439.64,-597.75"/>
96
+ <text xml:space="preserve" text-anchor="middle" x="378.77" y="-582.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">🌍 &#160;Host · Net · Repo</text>
97
+ <text xml:space="preserve" text-anchor="middle" x="378.77" y="-569.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Toolchain · RF · Web · Intel</text>
98
98
  </g>
99
99
  <!-- Result -->
100
100
  <g id="node6" class="node">
101
101
  <title>Result</title>
102
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M189.47,-468C189.47,-468 139.72,-468 139.72,-468 133.72,-468 127.72,-462 127.72,-456 127.72,-456 127.72,-444 127.72,-444 127.72,-438 133.72,-432 139.72,-432 139.72,-432 189.47,-432 189.47,-432 195.47,-432 201.47,-438 201.47,-444 201.47,-444 201.47,-456 201.47,-456 201.47,-462 195.47,-468 189.47,-468"/>
103
- <text xml:space="preserve" text-anchor="middle" x="164.59" y="-453.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Result</text>
104
- <text xml:space="preserve" text-anchor="middle" x="164.59" y="-439.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">final answer</text>
102
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M434.64,-468C434.64,-468 384.89,-468 384.89,-468 378.89,-468 372.89,-462 372.89,-456 372.89,-456 372.89,-444 372.89,-444 372.89,-438 378.89,-432 384.89,-432 384.89,-432 434.64,-432 434.64,-432 440.64,-432 446.64,-438 446.64,-444 446.64,-444 446.64,-456 446.64,-456 446.64,-462 440.64,-468 434.64,-468"/>
103
+ <text xml:space="preserve" text-anchor="middle" x="409.77" y="-453.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Result</text>
104
+ <text xml:space="preserve" text-anchor="middle" x="409.77" y="-439.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">final answer</text>
105
105
  </g>
106
106
  <!-- World&#45;&gt;Result -->
107
107
  <!-- Snapshot -->
108
108
  <g id="node10" class="node">
109
109
  <title>Snapshot</title>
110
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M357.59,-321C357.59,-321 281.59,-321 281.59,-321 275.59,-321 269.59,-315 269.59,-309 269.59,-309 269.59,-284.5 269.59,-284.5 269.59,-278.5 275.59,-272.5 281.59,-272.5 281.59,-272.5 357.59,-272.5 357.59,-272.5 363.59,-272.5 369.59,-278.5 369.59,-284.5 369.59,-284.5 369.59,-309 369.59,-309 369.59,-315 363.59,-321 357.59,-321"/>
111
- <text xml:space="preserve" text-anchor="middle" x="319.59" y="-306.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">snapshot · drift</text>
112
- <text xml:space="preserve" text-anchor="middle" x="319.59" y="-293.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">host/net/toolchain</text>
113
- <text xml:space="preserve" text-anchor="middle" x="319.59" y="-279.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">repo/env/rf</text>
110
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M607.77,-321C607.77,-321 531.77,-321 531.77,-321 525.77,-321 519.77,-315 519.77,-309 519.77,-309 519.77,-284.5 519.77,-284.5 519.77,-278.5 525.77,-272.5 531.77,-272.5 531.77,-272.5 607.77,-272.5 607.77,-272.5 613.77,-272.5 619.77,-278.5 619.77,-284.5 619.77,-284.5 619.77,-309 619.77,-309 619.77,-315 613.77,-321 607.77,-321"/>
111
+ <text xml:space="preserve" text-anchor="middle" x="569.77" y="-306.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">snapshot · drift</text>
112
+ <text xml:space="preserve" text-anchor="middle" x="569.77" y="-293.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">host/net/toolchain</text>
113
+ <text xml:space="preserve" text-anchor="middle" x="569.77" y="-279.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">repo/env/rf/web</text>
114
114
  </g>
115
115
  <!-- World&#45;&gt;Snapshot -->
116
116
  <g id="edge12" class="edge">
117
117
  <title>World&#45;&gt;Snapshot</title>
118
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M206.94,-565.64C214.22,-564.24 221.56,-562.9 228.59,-561.75 294.2,-550.99 476.64,-570.73 525.59,-525.75 575.71,-479.7 599.49,-424.33 552.59,-375 540.48,-362.26 410.8,-373.81 394.59,-367 375.12,-358.81 357.52,-343.23 344.27,-328.92"/>
119
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="346.47,-327.18 339.06,-323.07 342.28,-330.9 346.47,-327.18"/>
118
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M452.34,-565.13C459.57,-563.93 466.81,-562.78 473.77,-561.75 541.5,-551.72 729.96,-572.73 779.77,-525.75 829.07,-479.24 849.47,-424.12 802.77,-375 790.66,-362.26 660.97,-373.81 644.77,-367 625.29,-358.81 607.69,-343.23 594.44,-328.92"/>
119
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="596.64,-327.18 589.23,-323.07 592.46,-330.9 596.64,-327.18"/>
120
120
  </g>
121
121
  <!-- Observe -->
122
122
  <g id="node11" class="node">
123
123
  <title>Observe</title>
124
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M214.97,-314.75C214.97,-314.75 114.22,-314.75 114.22,-314.75 108.22,-314.75 102.22,-308.75 102.22,-302.75 102.22,-302.75 102.22,-290.75 102.22,-290.75 102.22,-284.75 108.22,-278.75 114.22,-278.75 114.22,-278.75 214.97,-278.75 214.97,-278.75 220.97,-278.75 226.97,-284.75 226.97,-290.75 226.97,-290.75 226.97,-302.75 226.97,-302.75 226.97,-308.75 220.97,-314.75 214.97,-314.75"/>
125
- <text xml:space="preserve" text-anchor="middle" x="164.59" y="-299.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">observe · intel</text>
126
- <text xml:space="preserve" text-anchor="middle" x="164.59" y="-286.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">recon facts · CVE feed</text>
124
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M464.27,-314.75C464.27,-314.75 355.27,-314.75 355.27,-314.75 349.27,-314.75 343.27,-308.75 343.27,-302.75 343.27,-302.75 343.27,-290.75 343.27,-290.75 343.27,-284.75 349.27,-278.75 355.27,-278.75 355.27,-278.75 464.27,-278.75 464.27,-278.75 470.27,-278.75 476.27,-284.75 476.27,-290.75 476.27,-290.75 476.27,-302.75 476.27,-302.75 476.27,-308.75 470.27,-314.75 464.27,-314.75"/>
125
+ <text xml:space="preserve" text-anchor="middle" x="409.77" y="-299.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">observe · intel · watch</text>
126
+ <text xml:space="preserve" text-anchor="middle" x="409.77" y="-286.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">recon · CVE · web DOM</text>
127
127
  </g>
128
128
  <!-- World&#45;&gt;Observe -->
129
129
  <g id="edge13" class="edge">
130
130
  <title>World&#45;&gt;Observe</title>
131
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M206.91,-565.44C214.19,-564.07 221.55,-562.8 228.59,-561.75 271.74,-555.31 590.19,-557.98 619.59,-525.75 635.69,-508.11 806.02,-559.02 601.59,-375 587.01,-361.88 266.98,-373.84 248.59,-367 224.01,-357.86 201.4,-338.28 185.85,-322.27"/>
132
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="188.08,-320.56 180.56,-316.65 184,-324.39 188.08,-320.56"/>
131
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M452.31,-564.9C459.55,-563.74 466.79,-562.67 473.77,-561.75 520.53,-555.59 864.86,-560.49 896.77,-525.75 908.6,-512.87 967.57,-465.4 811.77,-375 781.68,-357.54 531.53,-378.71 498.77,-367 472.96,-357.77 448.76,-337.93 432.13,-321.84"/>
132
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="434.52,-320.26 426.88,-316.6 430.57,-324.23 434.52,-320.26"/>
133
+ </g>
134
+ <!-- Verify -->
135
+ <g id="node12" class="node">
136
+ <title>Verify</title>
137
+ <path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M288.27,-321C288.27,-321 191.27,-321 191.27,-321 185.27,-321 179.27,-315 179.27,-309 179.27,-309 179.27,-284.5 179.27,-284.5 179.27,-278.5 185.27,-272.5 191.27,-272.5 191.27,-272.5 288.27,-272.5 288.27,-272.5 294.27,-272.5 300.27,-278.5 300.27,-284.5 300.27,-284.5 300.27,-309 300.27,-309 300.27,-315 294.27,-321 288.27,-321"/>
138
+ <text xml:space="preserve" text-anchor="middle" x="239.77" y="-306.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">verify (browser)</text>
139
+ <text xml:space="preserve" text-anchor="middle" x="239.77" y="-293.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">fact&#45;check own claims</text>
140
+ <text xml:space="preserve" text-anchor="middle" x="239.77" y="-279.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">revalidate_memory</text>
141
+ </g>
142
+ <!-- World&#45;&gt;Verify -->
143
+ <g id="edge14" class="edge">
144
+ <title>World&#45;&gt;Verify</title>
145
+ <path fill="none" stroke="#38bdf8" stroke-width="2" d="M452.3,-564.85C459.54,-563.7 466.79,-562.65 473.77,-561.75 524.62,-555.23 898.96,-563.39 933.77,-525.75 936.94,-522.32 935.4,-519.62 933.77,-515.25 904.82,-437.87 886.67,-409.86 811.77,-375 787.08,-363.51 347.26,-376.56 321.77,-367 301.16,-359.27 282.11,-343.93 267.57,-329.65"/>
146
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="269.68,-327.81 262.09,-324.04 265.68,-331.72 269.68,-327.81"/>
147
+ <text xml:space="preserve" text-anchor="middle" x="971.59" y="-451.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">TransparentBrowser</text>
148
+ <text xml:space="preserve" text-anchor="middle" x="971.59" y="-441.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">:headless</text>
133
149
  </g>
134
150
  <!-- Prompt&#45;&gt;Dispatch -->
135
151
  <g id="edge4" class="edge">
136
152
  <title>Prompt&#45;&gt;Dispatch</title>
137
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M329.52,-450C354.44,-450 379.35,-450 404.26,-450"/>
138
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="404.22,-452.8 412.22,-450 404.22,-447.2 404.22,-452.8"/>
153
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M574.7,-450C599.61,-450 624.52,-450 649.44,-450"/>
154
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="649.39,-452.8 657.39,-450 649.39,-447.2 649.39,-452.8"/>
139
155
  </g>
140
156
  <!-- Dispatch&#45;&gt;Result -->
141
157
  <g id="edge5" class="edge">
142
158
  <title>Dispatch&#45;&gt;Result</title>
143
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M426.28,-468.49C405.51,-489.19 368.52,-521.53 329.09,-534.5 293.21,-546.31 278.77,-549.49 244.09,-534.5 217.08,-522.82 195,-496.95 181.03,-476.88"/>
144
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="183.42,-475.42 176.64,-470.33 178.76,-478.54 183.42,-475.42"/>
159
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M671.46,-468.49C650.68,-489.19 613.69,-521.53 574.27,-534.5 538.38,-546.31 523.95,-549.49 489.27,-534.5 462.25,-522.82 440.17,-496.95 426.2,-476.88"/>
160
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="428.59,-475.42 421.81,-470.33 423.94,-478.54 428.59,-475.42"/>
145
161
  </g>
146
162
  <!-- Metrics -->
147
163
  <g id="node7" class="node">
148
164
  <title>Metrics</title>
149
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M538.34,-314.75C538.34,-314.75 424.84,-314.75 424.84,-314.75 418.84,-314.75 412.84,-308.75 412.84,-302.75 412.84,-302.75 412.84,-290.75 412.84,-290.75 412.84,-284.75 418.84,-278.75 424.84,-278.75 424.84,-278.75 538.34,-278.75 538.34,-278.75 544.34,-278.75 550.34,-284.75 550.34,-290.75 550.34,-290.75 550.34,-302.75 550.34,-302.75 550.34,-308.75 544.34,-314.75 538.34,-314.75"/>
150
- <text xml:space="preserve" text-anchor="middle" x="481.59" y="-299.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Metrics</text>
151
- <text xml:space="preserve" text-anchor="middle" x="481.59" y="-286.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">per&#45;tool success · avg ms</text>
165
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M788.52,-314.75C788.52,-314.75 675.02,-314.75 675.02,-314.75 669.02,-314.75 663.02,-308.75 663.02,-302.75 663.02,-302.75 663.02,-290.75 663.02,-290.75 663.02,-284.75 669.02,-278.75 675.02,-278.75 675.02,-278.75 788.52,-278.75 788.52,-278.75 794.52,-278.75 800.52,-284.75 800.52,-290.75 800.52,-290.75 800.52,-302.75 800.52,-302.75 800.52,-308.75 794.52,-314.75 788.52,-314.75"/>
166
+ <text xml:space="preserve" text-anchor="middle" x="731.77" y="-299.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Metrics</text>
167
+ <text xml:space="preserve" text-anchor="middle" x="731.77" y="-286.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">per&#45;tool success · avg ms</text>
152
168
  </g>
153
169
  <!-- Dispatch&#45;&gt;Metrics -->
154
170
  <g id="edge6" class="edge">
155
171
  <title>Dispatch&#45;&gt;Metrics</title>
156
- <path fill="none" stroke="#34d399" stroke-width="1.3" d="M422.8,-431.36C408.23,-416.73 392.77,-395.15 401.34,-375 410.6,-353.24 429.32,-334.64 446.36,-321.15"/>
157
- <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="447.78,-323.58 452.46,-316.51 444.39,-319.13 447.78,-323.58"/>
158
- <text xml:space="preserve" text-anchor="middle" x="417.47" y="-382.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">record()</text>
172
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M670.29,-431.36C657.12,-416.55 643.13,-394.72 651.52,-375 660.77,-353.24 679.5,-334.64 696.53,-321.15"/>
173
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="697.96,-323.58 702.63,-316.51 694.57,-319.13 697.96,-323.58"/>
174
+ <text xml:space="preserve" text-anchor="middle" x="667.64" y="-382.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">record()</text>
159
175
  </g>
160
176
  <!-- Dispatch&#45;&gt;Mistakes -->
161
177
  <g id="edge8" class="edge">
162
178
  <title>Dispatch&#45;&gt;Mistakes</title>
163
- <path fill="none" stroke="#fb7185" stroke-width="2" d="M473.21,-448.45C542.47,-446.46 711.81,-437.4 746.59,-396 762.37,-377.23 749.08,-354.84 730.2,-336.18"/>
164
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="732.12,-334.15 724.35,-330.76 728.31,-338.25 732.12,-334.15"/>
165
- <text xml:space="preserve" text-anchor="middle" x="772.71" y="-387.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">on failure</text>
166
- <text xml:space="preserve" text-anchor="middle" x="772.71" y="-376.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">record()</text>
179
+ <path fill="none" stroke="#fb7185" stroke-width="2" d="M718.28,-439.05C743.96,-429.76 781.69,-414.55 811.77,-396 839.59,-378.84 867.75,-355.43 889.46,-335.76"/>
180
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="891.22,-337.95 895.22,-330.48 887.44,-333.82 891.22,-337.95"/>
181
+ <text xml:space="preserve" text-anchor="middle" x="858.49" y="-387.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">on failure</text>
182
+ <text xml:space="preserve" text-anchor="middle" x="858.49" y="-376.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">record()</text>
167
183
  </g>
168
184
  <!-- Dispatch&#45;&gt;Snapshot -->
169
185
  <g id="edge10" class="edge">
170
186
  <title>Dispatch&#45;&gt;Snapshot</title>
171
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M413.98,-434.36C397.73,-425.15 378.18,-411.98 364.59,-396 348.44,-377 336.92,-351.24 329.59,-330.86"/>
172
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="332.31,-330.15 327.06,-323.49 327.01,-331.97 332.31,-330.15"/>
173
- <text xml:space="preserve" text-anchor="middle" x="376.59" y="-382.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">probe</text>
187
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M659.25,-432.87C644.41,-423.61 627.03,-410.88 614.77,-396 598.9,-376.75 587.38,-351 579.97,-330.69"/>
188
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="582.69,-329.98 577.4,-323.35 577.4,-331.83 582.69,-329.98"/>
189
+ <text xml:space="preserve" text-anchor="middle" x="626.77" y="-382.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">probe</text>
174
190
  </g>
175
191
  <!-- Result&#45;&gt;User -->
176
- <g id="edge33" class="edge">
192
+ <g id="edge38" class="edge">
177
193
  <title>Result&#45;&gt;User</title>
178
- <path fill="none" stroke="#38bdf8" stroke-width="2" d="M176.86,-468.54C187.3,-481.86 203.6,-499.21 222.59,-507.25 235.95,-512.9 473.49,-504.84 483.59,-515.25 486.84,-518.6 486.41,-522.03 483.59,-525.75 475.46,-536.5 404.87,-554.35 352.57,-566.33"/>
179
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="352.18,-563.54 345,-568.05 353.42,-569.01 352.18,-563.54"/>
180
- <text xml:space="preserve" text-anchor="middle" x="500.87" y="-517.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">answer</text>
194
+ <path fill="none" stroke="#38bdf8" stroke-width="2" d="M422.03,-468.54C432.47,-481.87 448.77,-499.22 467.77,-507.25 481.59,-513.09 727.32,-504.48 737.77,-515.25 741.02,-518.6 740.61,-522.05 737.77,-525.75 733.37,-531.49 654.26,-551.51 597.65,-565.23"/>
195
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="597.08,-562.49 589.96,-567.09 598.39,-567.94 597.08,-562.49"/>
196
+ <text xml:space="preserve" text-anchor="middle" x="755.05" y="-517.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">answer</text>
181
197
  </g>
182
198
  <!-- Learning -->
183
199
  <g id="node8" class="node">
184
200
  <title>Learning</title>
185
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M920.34,-321C920.34,-321 818.84,-321 818.84,-321 812.84,-321 806.84,-315 806.84,-309 806.84,-309 806.84,-284.5 806.84,-284.5 806.84,-278.5 812.84,-272.5 818.84,-272.5 818.84,-272.5 920.34,-272.5 920.34,-272.5 926.34,-272.5 932.34,-278.5 932.34,-284.5 932.34,-284.5 932.34,-309 932.34,-309 932.34,-315 926.34,-321 920.34,-321"/>
186
- <text xml:space="preserve" text-anchor="middle" x="869.59" y="-306.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Learning</text>
187
- <text xml:space="preserve" text-anchor="middle" x="869.59" y="-293.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">note_outcome · reflect</text>
188
- <text xml:space="preserve" text-anchor="middle" x="869.59" y="-279.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">consolidate · distill_skill</text>
201
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M1170.52,-321C1170.52,-321 1069.02,-321 1069.02,-321 1063.02,-321 1057.02,-315 1057.02,-309 1057.02,-309 1057.02,-284.5 1057.02,-284.5 1057.02,-278.5 1063.02,-272.5 1069.02,-272.5 1069.02,-272.5 1170.52,-272.5 1170.52,-272.5 1176.52,-272.5 1182.52,-278.5 1182.52,-284.5 1182.52,-284.5 1182.52,-309 1182.52,-309 1182.52,-315 1176.52,-321 1170.52,-321"/>
202
+ <text xml:space="preserve" text-anchor="middle" x="1119.77" y="-306.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Learning</text>
203
+ <text xml:space="preserve" text-anchor="middle" x="1119.77" y="-293.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">note_outcome · reflect</text>
204
+ <text xml:space="preserve" text-anchor="middle" x="1119.77" y="-279.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">consolidate · distill_skill</text>
189
205
  </g>
190
206
  <!-- Result&#45;&gt;Learning -->
191
207
  <g id="edge7" class="edge">
192
208
  <title>Result&#45;&gt;Learning</title>
193
- <path fill="none" stroke="#34d399" stroke-width="1.3" d="M200.45,-431.32C207.64,-428.42 215.24,-425.78 222.59,-424 400.11,-381.01 454.09,-434.7 632.59,-396 658.57,-390.37 662.66,-380.81 688.59,-375 730.8,-365.54 745.52,-383.28 785.59,-367 806.66,-358.44 826.48,-342.63 841.57,-328.28"/>
194
- <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="843.44,-330.37 847.18,-322.77 839.51,-326.38 843.44,-330.37"/>
195
- <text xml:space="preserve" text-anchor="middle" x="712.59" y="-382.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">auto_reflect</text>
209
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M445.63,-431.31C452.81,-428.41 460.41,-425.77 467.77,-424 714.4,-364.49 806.38,-475.4 1035.77,-367 1055.89,-357.49 1075.27,-342.08 1090.33,-328.21"/>
210
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="1092.05,-330.44 1095.94,-322.91 1088.2,-326.37 1092.05,-330.44"/>
211
+ <text xml:space="preserve" text-anchor="middle" x="1040.38" y="-382.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">auto_introspect</text>
196
212
  </g>
197
213
  <!-- Result&#45;&gt;Observe -->
198
214
  <g id="edge11" class="edge">
199
215
  <title>Result&#45;&gt;Observe</title>
200
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M164.59,-431.35C164.59,-405.17 164.59,-355.81 164.59,-324.97"/>
201
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="167.39,-325.25 164.59,-317.25 161.79,-325.25 167.39,-325.25"/>
202
- <text xml:space="preserve" text-anchor="middle" x="197.22" y="-382.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">auto_extrospect</text>
216
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M409.77,-431.35C409.77,-405.17 409.77,-355.81 409.77,-324.97"/>
217
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="412.57,-325.25 409.77,-317.25 406.97,-325.25 412.57,-325.25"/>
218
+ <text xml:space="preserve" text-anchor="middle" x="442.39" y="-382.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">auto_extrospect</text>
203
219
  </g>
204
220
  <!-- Correlate -->
205
- <g id="node12" class="node">
221
+ <g id="node13" class="node">
206
222
  <title>Correlate</title>
207
- <path fill="#fda4af" stroke="#334155" stroke-width="2" d="M435.47,-172.75C435.47,-172.75 235.72,-172.75 235.72,-172.75 229.72,-172.75 223.72,-166.75 223.72,-160.75 223.72,-160.75 223.72,-148.25 223.72,-148.25 223.72,-142.25 229.72,-136.25 235.72,-136.25 235.72,-136.25 435.47,-136.25 435.47,-136.25 441.47,-136.25 447.47,-142.25 447.47,-148.25 447.47,-148.25 447.47,-160.75 447.47,-160.75 447.47,-166.75 441.47,-172.75 435.47,-172.75"/>
208
- <text xml:space="preserve" text-anchor="middle" x="335.59" y="-157.35" font-family="sans-Serif" font-size="12.00" fill="#0f172a">extro_correlate()</text>
209
- <text xml:space="preserve" text-anchor="middle" x="335.59" y="-143.1" font-family="sans-Serif" font-size="12.00" fill="#0f172a">&quot;I did it wrong&quot; &#160;vs &#160;&quot;the world changed&quot;</text>
223
+ <path fill="#fda4af" stroke="#334155" stroke-width="2" d="M675.64,-172.75C675.64,-172.75 475.89,-172.75 475.89,-172.75 469.89,-172.75 463.89,-166.75 463.89,-160.75 463.89,-160.75 463.89,-148.25 463.89,-148.25 463.89,-142.25 469.89,-136.25 475.89,-136.25 475.89,-136.25 675.64,-136.25 675.64,-136.25 681.64,-136.25 687.64,-142.25 687.64,-148.25 687.64,-148.25 687.64,-160.75 687.64,-160.75 687.64,-166.75 681.64,-172.75 675.64,-172.75"/>
224
+ <text xml:space="preserve" text-anchor="middle" x="575.77" y="-157.35" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#0f172a">extro_correlate()</text>
225
+ <text xml:space="preserve" text-anchor="middle" x="575.77" y="-143.1" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#0f172a">&quot;I did it wrong&quot; &#160;vs &#160;&quot;the world changed&quot;</text>
210
226
  </g>
211
227
  <!-- Metrics&#45;&gt;Correlate -->
212
- <g id="edge14" class="edge">
228
+ <g id="edge15" class="edge">
213
229
  <title>Metrics&#45;&gt;Correlate</title>
214
- <path fill="none" stroke="#34d399" stroke-width="1.3" d="M463.4,-278.27C437.75,-253.63 390.82,-208.55 361.53,-180.41"/>
215
- <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="363.61,-178.53 355.9,-175.01 359.73,-182.57 363.61,-178.53"/>
230
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M712.33,-278.27C684.8,-253.53 634.35,-208.17 603.08,-180.05"/>
231
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="605.23,-178.23 597.41,-174.96 601.49,-182.39 605.23,-178.23"/>
216
232
  </g>
217
233
  <!-- Fmet -->
218
- <g id="node13" class="node">
234
+ <g id="node14" class="node">
219
235
  <title>Fmet</title>
220
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M533.09,-48.73C533.09,-50.53 516.73,-52 496.59,-52 476.45,-52 460.09,-50.53 460.09,-48.73 460.09,-48.73 460.09,-19.27 460.09,-19.27 460.09,-17.47 476.45,-16 496.59,-16 516.73,-16 533.09,-17.47 533.09,-19.27 533.09,-19.27 533.09,-48.73 533.09,-48.73"/>
221
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M533.09,-48.73C533.09,-46.92 516.73,-45.45 496.59,-45.45 476.45,-45.45 460.09,-46.92 460.09,-48.73"/>
222
- <text xml:space="preserve" text-anchor="middle" x="496.59" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">metrics.json</text>
236
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M541.27,-48.73C541.27,-50.53 524.91,-52 504.77,-52 484.63,-52 468.27,-50.53 468.27,-48.73 468.27,-48.73 468.27,-19.27 468.27,-19.27 468.27,-17.47 484.63,-16 504.77,-16 524.91,-16 541.27,-17.47 541.27,-19.27 541.27,-19.27 541.27,-48.73 541.27,-48.73"/>
237
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M541.27,-48.73C541.27,-46.92 524.91,-45.45 504.77,-45.45 484.63,-45.45 468.27,-46.92 468.27,-48.73"/>
238
+ <text xml:space="preserve" text-anchor="middle" x="504.77" y="-30.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">metrics.json</text>
223
239
  </g>
224
240
  <!-- Metrics&#45;&gt;Fmet -->
225
- <g id="edge20" class="edge">
241
+ <g id="edge22" class="edge">
226
242
  <title>Metrics&#45;&gt;Fmet</title>
227
- <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M482.6,-278.24C485.16,-233.7 491.94,-115.88 495.03,-62.26"/>
228
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="497.81,-62.55 495.48,-54.4 492.22,-62.23 497.81,-62.55"/>
243
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M734.76,-278.23C739.19,-246.02 743.59,-176.97 708.77,-136.25 664.64,-84.65 621.2,-125.84 562.77,-91.25 548.84,-83.01 535.69,-70.77 525.44,-59.81"/>
244
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="527.59,-58.01 520.15,-53.95 523.43,-61.77 527.59,-58.01"/>
229
245
  </g>
230
246
  <!-- Learning&#45;&gt;Correlate -->
231
- <g id="edge15" class="edge">
247
+ <g id="edge16" class="edge">
232
248
  <title>Learning&#45;&gt;Correlate</title>
233
- <path fill="none" stroke="#34d399" stroke-width="1.3" d="M821.4,-271.95C809.85,-266.81 797.43,-261.73 785.59,-257.75 675.2,-220.66 545.09,-192.73 453.25,-175.51"/>
234
- <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="453.96,-172.79 445.58,-174.08 452.93,-178.29 453.96,-172.79"/>
249
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M1071.59,-271.91C1060.04,-266.77 1047.61,-261.7 1035.77,-257.75 923.4,-220.29 791.01,-192.5 697.18,-175.42"/>
250
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="697.96,-172.71 689.58,-174.05 696.96,-178.23 697.96,-172.71"/>
235
251
  </g>
236
252
  <!-- Flrn -->
237
- <g id="node14" class="node">
253
+ <g id="node15" class="node">
238
254
  <title>Flrn</title>
239
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M899.09,-48.73C899.09,-50.53 881.39,-52 859.59,-52 837.8,-52 820.09,-50.53 820.09,-48.73 820.09,-48.73 820.09,-19.27 820.09,-19.27 820.09,-17.47 837.8,-16 859.59,-16 881.39,-16 899.09,-17.47 899.09,-19.27 899.09,-19.27 899.09,-48.73 899.09,-48.73"/>
240
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M899.09,-48.73C899.09,-46.92 881.39,-45.45 859.59,-45.45 837.8,-45.45 820.09,-46.92 820.09,-48.73"/>
241
- <text xml:space="preserve" text-anchor="middle" x="859.59" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">learning.jsonl</text>
255
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1015.27,-48.73C1015.27,-50.53 997.56,-52 975.77,-52 953.97,-52 936.27,-50.53 936.27,-48.73 936.27,-48.73 936.27,-19.27 936.27,-19.27 936.27,-17.47 953.97,-16 975.77,-16 997.56,-16 1015.27,-17.47 1015.27,-19.27 1015.27,-19.27 1015.27,-48.73 1015.27,-48.73"/>
256
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M1015.27,-48.73C1015.27,-46.92 997.56,-45.45 975.77,-45.45 953.97,-45.45 936.27,-46.92 936.27,-48.73"/>
257
+ <text xml:space="preserve" text-anchor="middle" x="975.77" y="-30.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">learning.jsonl</text>
242
258
  </g>
243
259
  <!-- Learning&#45;&gt;Flrn -->
244
- <g id="edge21" class="edge">
260
+ <g id="edge23" class="edge">
245
261
  <title>Learning&#45;&gt;Flrn</title>
246
- <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M879.02,-271.98C883.55,-259.59 888.62,-244.06 891.59,-229.75 903.38,-172.96 908.63,-154.69 891.59,-99.25 887.58,-86.19 881.13,-72.52 875.07,-61.17"/>
247
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="877.62,-59.99 871.3,-54.34 872.71,-62.7 877.62,-59.99"/>
262
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M1164.03,-271.94C1172.88,-267.22 1182.11,-262.31 1190.77,-257.75 1214.69,-245.15 1230.72,-252.85 1244.77,-229.75 1274.9,-180.19 1280.7,-144.78 1244.77,-99.25 1217.95,-65.28 1095.51,-47.29 1025.42,-39.62"/>
263
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="1026.1,-36.88 1017.85,-38.82 1025.51,-42.45 1026.1,-36.88"/>
248
264
  </g>
249
265
  <!-- Fmem -->
250
- <g id="node16" class="node">
266
+ <g id="node17" class="node">
251
267
  <title>Fmem</title>
252
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M777.34,-48.73C777.34,-50.53 759.98,-52 738.59,-52 717.21,-52 699.84,-50.53 699.84,-48.73 699.84,-48.73 699.84,-19.27 699.84,-19.27 699.84,-17.47 717.21,-16 738.59,-16 759.98,-16 777.34,-17.47 777.34,-19.27 777.34,-19.27 777.34,-48.73 777.34,-48.73"/>
253
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M777.34,-48.73C777.34,-46.92 759.98,-45.45 738.59,-45.45 717.21,-45.45 699.84,-46.92 699.84,-48.73"/>
254
- <text xml:space="preserve" text-anchor="middle" x="738.59" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">memory.json</text>
268
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M785.52,-48.73C785.52,-50.53 768.15,-52 746.77,-52 725.39,-52 708.02,-50.53 708.02,-48.73 708.02,-48.73 708.02,-19.27 708.02,-19.27 708.02,-17.47 725.39,-16 746.77,-16 768.15,-16 785.52,-17.47 785.52,-19.27 785.52,-19.27 785.52,-48.73 785.52,-48.73"/>
269
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M785.52,-48.73C785.52,-46.92 768.15,-45.45 746.77,-45.45 725.39,-45.45 708.02,-46.92 708.02,-48.73"/>
270
+ <text xml:space="preserve" text-anchor="middle" x="746.77" y="-30.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">memory.json</text>
255
271
  </g>
256
272
  <!-- Learning&#45;&gt;Fmem -->
257
- <g id="edge24" class="edge">
273
+ <g id="edge26" class="edge">
258
274
  <title>Learning&#45;&gt;Fmem</title>
259
- <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M858.17,-271.87C843.14,-240.59 815.81,-184.1 791.59,-136.25 778.62,-110.61 763.36,-81.58 752.56,-61.2"/>
260
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="755.08,-59.97 748.85,-54.22 750.13,-62.6 755.08,-59.97"/>
261
- <text xml:space="preserve" text-anchor="middle" x="823.24" y="-151.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">lesson</text>
275
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M1105.94,-271.82C1085.11,-237.61 1042.65,-174.63 991.77,-136.25 957.9,-110.7 944.97,-109.36 903.77,-99.25 862.19,-89.05 846.97,-108.47 807.77,-91.25 791.97,-84.31 777.61,-71.55 766.79,-59.94"/>
276
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="768.93,-58.13 761.52,-54.02 764.74,-61.85 768.93,-58.13"/>
277
+ <text xml:space="preserve" text-anchor="middle" x="1044.3" y="-151.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">lesson</text>
262
278
  </g>
263
279
  <!-- Fskl -->
264
- <g id="node17" class="node">
280
+ <g id="node18" class="node">
265
281
  <title>Fskl</title>
266
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1006.59,-48.73C1006.59,-50.53 992.25,-52 974.59,-52 956.94,-52 942.59,-50.53 942.59,-48.73 942.59,-48.73 942.59,-19.27 942.59,-19.27 942.59,-17.47 956.94,-16 974.59,-16 992.25,-16 1006.59,-17.47 1006.59,-19.27 1006.59,-19.27 1006.59,-48.73 1006.59,-48.73"/>
267
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M1006.59,-48.73C1006.59,-46.92 992.25,-45.45 974.59,-45.45 956.94,-45.45 942.59,-46.92 942.59,-48.73"/>
268
- <text xml:space="preserve" text-anchor="middle" x="974.59" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">skills/*.md</text>
282
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M892.77,-48.73C892.77,-50.53 878.43,-52 860.77,-52 843.11,-52 828.77,-50.53 828.77,-48.73 828.77,-48.73 828.77,-19.27 828.77,-19.27 828.77,-17.47 843.11,-16 860.77,-16 878.43,-16 892.77,-17.47 892.77,-19.27 892.77,-19.27 892.77,-48.73 892.77,-48.73"/>
283
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M892.77,-48.73C892.77,-46.92 878.43,-45.45 860.77,-45.45 843.11,-45.45 828.77,-46.92 828.77,-48.73"/>
284
+ <text xml:space="preserve" text-anchor="middle" x="860.77" y="-30.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">skills/*.md</text>
269
285
  </g>
270
286
  <!-- Learning&#45;&gt;Fskl -->
271
- <g id="edge25" class="edge">
287
+ <g id="edge27" class="edge">
272
288
  <title>Learning&#45;&gt;Fskl</title>
273
- <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M894.37,-272.03C905.38,-260.26 917.62,-245.25 925.59,-229.75 954.14,-174.25 966.72,-101.15 971.71,-62.19"/>
274
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="974.45,-62.84 972.63,-54.56 968.89,-62.16 974.45,-62.84"/>
275
- <text xml:space="preserve" text-anchor="middle" x="965.73" y="-151.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">skill</text>
289
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M1131.34,-272C1149.96,-229.99 1179.87,-142.88 1131.77,-99.25 1113.9,-83.04 936.79,-101.12 914.77,-91.25 900.01,-84.64 887.27,-71.95 877.88,-60.3"/>
290
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="880.19,-58.72 873.12,-54.05 875.74,-62.11 880.19,-58.72"/>
291
+ <text xml:space="preserve" text-anchor="middle" x="1165.63" y="-151.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">skill</text>
276
292
  </g>
277
293
  <!-- Mistakes&#45;&gt;Dispatch -->
278
- <g id="edge31" class="edge">
294
+ <g id="edge36" class="edge">
279
295
  <title>Mistakes&#45;&gt;Dispatch</title>
280
- <path fill="none" stroke="#fb7185" stroke-width="2" stroke-dasharray="5,2" d="M630.95,-328.65C612.43,-340.64 591.04,-354.48 571.59,-367 540.76,-386.85 505.7,-409.31 480.07,-425.69"/>
281
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="478.87,-423.14 473.63,-429.81 481.88,-427.86 478.87,-423.14"/>
282
- <text xml:space="preserve" text-anchor="middle" x="590.35" y="-387.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">correction_hint</text>
283
- <text xml:space="preserve" text-anchor="middle" x="590.35" y="-376.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">(inline, next iter)</text>
296
+ <path fill="none" stroke="#fb7185" stroke-width="2" stroke-dasharray="5,2" d="M891.01,-328.6C871.51,-342.8 846.64,-358.37 821.77,-367 803.79,-373.24 752.78,-365.12 736.52,-375 718.98,-385.65 706.71,-405.46 699.01,-421.9"/>
297
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="696.62,-420.37 696,-428.82 701.76,-422.6 696.62,-420.37"/>
298
+ <text xml:space="preserve" text-anchor="middle" x="769.14" y="-387.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">correction_hint</text>
299
+ <text xml:space="preserve" text-anchor="middle" x="769.14" y="-376.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">(inline, next iter)</text>
284
300
  </g>
285
301
  <!-- Mistakes&#45;&gt;Correlate -->
286
- <g id="edge16" class="edge">
302
+ <g id="edge17" class="edge">
287
303
  <title>Mistakes&#45;&gt;Correlate</title>
288
- <path fill="none" stroke="#34d399" stroke-width="1.3" d="M602.9,-264.8C538.1,-238.3 446.45,-200.83 389.05,-177.36"/>
289
- <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="390.43,-174.9 381.96,-174.46 388.31,-180.08 390.43,-174.9"/>
304
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M850.86,-264.8C784.18,-238.3 689.85,-200.83 630.78,-177.36"/>
305
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="631.91,-174.79 623.44,-174.44 629.84,-180 631.91,-174.79"/>
290
306
  </g>
291
307
  <!-- Fmis -->
292
- <g id="node15" class="node">
308
+ <g id="node16" class="node">
293
309
  <title>Fmis</title>
294
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M656.84,-48.73C656.84,-50.53 638.8,-52 616.59,-52 594.38,-52 576.34,-50.53 576.34,-48.73 576.34,-48.73 576.34,-19.27 576.34,-19.27 576.34,-17.47 594.38,-16 616.59,-16 638.8,-16 656.84,-17.47 656.84,-19.27 656.84,-19.27 656.84,-48.73 656.84,-48.73"/>
295
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M656.84,-48.73C656.84,-46.92 638.8,-45.45 616.59,-45.45 594.38,-45.45 576.34,-46.92 576.34,-48.73"/>
296
- <text xml:space="preserve" text-anchor="middle" x="616.59" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">mistakes.json</text>
310
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M665.02,-48.73C665.02,-50.53 646.98,-52 624.77,-52 602.56,-52 584.52,-50.53 584.52,-48.73 584.52,-48.73 584.52,-19.27 584.52,-19.27 584.52,-17.47 602.56,-16 624.77,-16 646.98,-16 665.02,-17.47 665.02,-19.27 665.02,-19.27 665.02,-48.73 665.02,-48.73"/>
311
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M665.02,-48.73C665.02,-46.92 646.98,-45.45 624.77,-45.45 602.56,-45.45 584.52,-46.92 584.52,-48.73"/>
312
+ <text xml:space="preserve" text-anchor="middle" x="624.77" y="-30.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">mistakes.json</text>
297
313
  </g>
298
314
  <!-- Mistakes&#45;&gt;Fmis -->
299
- <g id="edge22" class="edge">
315
+ <g id="edge24" class="edge">
300
316
  <title>Mistakes&#45;&gt;Fmis</title>
301
- <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M671.24,-264.81C658.99,-213.3 634.62,-110.8 623.02,-62.02"/>
302
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="625.78,-61.51 621.2,-54.38 620.33,-62.81 625.78,-61.51"/>
317
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M896.64,-264.86C861.75,-231.82 803.87,-178.47 750.77,-136.25 723.55,-114.61 713.92,-112.97 686.77,-91.25 674.32,-81.29 661.16,-69.54 650.18,-59.36"/>
318
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="652.15,-57.37 644.4,-53.95 648.32,-61.46 652.15,-57.37"/>
303
319
  </g>
304
320
  <!-- Mistakes&#45;&gt;Fmem -->
305
- <g id="edge23" class="edge">
321
+ <g id="edge25" class="edge">
306
322
  <title>Mistakes&#45;&gt;Fmem</title>
307
- <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M685.71,-264.81C697.56,-213.3 721.15,-110.8 732.38,-62.02"/>
308
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="735.07,-62.8 734.13,-54.38 729.61,-61.55 735.07,-62.8"/>
309
- <text xml:space="preserve" text-anchor="middle" x="748.29" y="-151.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">resolve→lesson</text>
323
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M929.54,-265.05C928.83,-221.04 920.41,-140.75 871.77,-99.25 849.96,-80.64 833.77,-103.32 807.77,-91.25 792.23,-84.03 777.96,-71.38 767.14,-59.9"/>
324
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="769.3,-58.12 761.86,-54.05 765.14,-61.87 769.3,-58.12"/>
325
+ <text xml:space="preserve" text-anchor="middle" x="948.53" y="-151.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">resolve→lesson</text>
310
326
  </g>
311
327
  <!-- Snapshot&#45;&gt;Correlate -->
312
- <g id="edge17" class="edge">
328
+ <g id="edge18" class="edge">
313
329
  <title>Snapshot&#45;&gt;Correlate</title>
314
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M322.31,-271.96C325.11,-247.4 329.48,-209.11 332.43,-183.2"/>
315
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="335.18,-183.82 333.31,-175.55 329.62,-183.18 335.18,-183.82"/>
330
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M570.79,-271.96C571.83,-247.51 573.46,-209.45 574.57,-183.54"/>
331
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="577.37,-183.68 574.91,-175.56 571.77,-183.44 577.37,-183.68"/>
316
332
  </g>
317
333
  <!-- Observe&#45;&gt;Correlate -->
318
- <g id="edge18" class="edge">
334
+ <g id="edge19" class="edge">
319
335
  <title>Observe&#45;&gt;Correlate</title>
320
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M185.91,-278.27C216.2,-253.42 271.84,-207.79 306.09,-179.7"/>
321
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="307.54,-182.13 311.95,-174.89 303.99,-177.8 307.54,-182.13"/>
336
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M430.46,-278.27C459.74,-253.53 513.43,-208.17 546.71,-180.05"/>
337
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="548.49,-182.22 552.79,-174.91 544.87,-177.94 548.49,-182.22"/>
322
338
  </g>
323
339
  <!-- Fext -->
324
- <g id="node18" class="node">
340
+ <g id="node19" class="node">
325
341
  <title>Fext</title>
326
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M416.72,-48.73C416.72,-50.53 393.8,-52 365.59,-52 337.38,-52 314.47,-50.53 314.47,-48.73 314.47,-48.73 314.47,-19.27 314.47,-19.27 314.47,-17.47 337.38,-16 365.59,-16 393.8,-16 416.72,-17.47 416.72,-19.27 416.72,-19.27 416.72,-48.73 416.72,-48.73"/>
327
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M416.72,-48.73C416.72,-46.92 393.8,-45.45 365.59,-45.45 337.38,-45.45 314.47,-46.92 314.47,-48.73"/>
328
- <text xml:space="preserve" text-anchor="middle" x="365.59" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extrospection.json</text>
342
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M424.89,-48.73C424.89,-50.53 401.98,-52 373.77,-52 345.56,-52 322.64,-50.53 322.64,-48.73 322.64,-48.73 322.64,-19.27 322.64,-19.27 322.64,-17.47 345.56,-16 373.77,-16 401.98,-16 424.89,-17.47 424.89,-19.27 424.89,-19.27 424.89,-48.73 424.89,-48.73"/>
343
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M424.89,-48.73C424.89,-46.92 401.98,-45.45 373.77,-45.45 345.56,-45.45 322.64,-46.92 322.64,-48.73"/>
344
+ <text xml:space="preserve" text-anchor="middle" x="373.77" y="-30.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">extrospection.json</text>
329
345
  </g>
330
346
  <!-- Observe&#45;&gt;Fext -->
331
- <g id="edge26" class="edge">
347
+ <g id="edge28" class="edge">
332
348
  <title>Observe&#45;&gt;Fext</title>
333
- <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M164.56,-278.16C165.36,-246.73 170.97,-180.13 202.59,-136.25 229.7,-98.63 275.53,-71.98 311.7,-55.5"/>
334
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="312.69,-58.13 318.87,-52.33 310.42,-53.01 312.69,-58.13"/>
349
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M388.59,-278.41C363.94,-256.7 324.6,-216.97 308.77,-172.75 294.11,-131.79 325.14,-86.58 349.19,-59.5"/>
350
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="351.06,-61.6 354.41,-53.81 346.94,-57.81 351.06,-61.6"/>
351
+ </g>
352
+ <!-- Verify&#45;&gt;Correlate -->
353
+ <g id="edge20" class="edge">
354
+ <title>Verify&#45;&gt;Correlate</title>
355
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M290.76,-271.63C300.99,-266.93 311.69,-262.11 321.77,-257.75 389.27,-228.55 467.95,-197.3 519.64,-177.14"/>
356
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="520.38,-179.86 526.82,-174.35 518.35,-174.64 520.38,-179.86"/>
357
+ </g>
358
+ <!-- Verify&#45;&gt;Fmis -->
359
+ <g id="edge29" class="edge">
360
+ <title>Verify&#45;&gt;Fmis</title>
361
+ <path fill="none" stroke="#fb7185" stroke-width="2" d="M228.4,-271.58C214.05,-237.09 194.95,-173.77 227.77,-136.25 277.22,-79.71 494.66,-122.92 562.77,-91.25 578.15,-84.1 592.39,-71.78 603.33,-60.49"/>
362
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="605.25,-62.54 608.63,-54.77 601.14,-58.74 605.25,-62.54"/>
363
+ <text xml:space="preserve" text-anchor="middle" x="268.27" y="-156.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">:refuted →</text>
364
+ <text xml:space="preserve" text-anchor="middle" x="268.27" y="-145.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">assumption mistake</text>
365
+ </g>
366
+ <!-- Verify&#45;&gt;Fmem -->
367
+ <g id="edge30" class="edge">
368
+ <title>Verify&#45;&gt;Fmem</title>
369
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" stroke-dasharray="5,2" d="M253.87,-271.51C276.3,-235.41 323.73,-168.32 383.52,-136.25 503.59,-71.85 564.09,-150.54 686.77,-91.25 702.06,-83.86 716.09,-71.19 726.74,-59.75"/>
370
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="728.68,-61.78 731.91,-53.94 724.5,-58.05 728.68,-61.78"/>
371
+ <text xml:space="preserve" text-anchor="middle" x="413.14" y="-156.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">mark stale</text>
372
+ <text xml:space="preserve" text-anchor="middle" x="413.14" y="-145.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">[UNVERIFIED]</text>
373
+ </g>
374
+ <!-- Verify&#45;&gt;Fext -->
375
+ <g id="edge31" class="edge">
376
+ <title>Verify&#45;&gt;Fext</title>
377
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M178.28,-280.43C94.18,-256.49 -40.64,-205.67 12.02,-136.25 48.28,-88.45 219.27,-57.06 312.61,-43.18"/>
378
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="312.76,-45.99 320.27,-42.06 311.95,-40.45 312.76,-45.99"/>
379
+ <text xml:space="preserve" text-anchor="middle" x="33.39" y="-156.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">:confirmed</text>
380
+ <text xml:space="preserve" text-anchor="middle" x="33.39" y="-145.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">:intel obs</text>
335
381
  </g>
336
382
  <!-- Correlate&#45;&gt;Prompt -->
337
- <g id="edge32" class="edge">
383
+ <g id="edge37" class="edge">
338
384
  <title>Correlate&#45;&gt;Prompt</title>
339
- <path fill="none" stroke="#fb7185" stroke-width="2" stroke-dasharray="5,2" d="M448.33,-166.31C617.02,-183.66 918.83,-219.63 950.59,-257.75 981.67,-295.05 981.47,-329.53 950.59,-367 911.03,-415.01 455.12,-414.76 393.59,-424 376.02,-426.64 357.06,-430.67 340.06,-434.73"/>
340
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="339.8,-431.91 332.7,-436.53 341.13,-437.35 339.8,-431.91"/>
341
- <text xml:space="preserve" text-anchor="middle" x="1013.2" y="-293.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">findings → next run</text>
385
+ <path fill="none" stroke="#fb7185" stroke-width="2" stroke-dasharray="5,2" d="M688.58,-166C859.66,-183.09 1168.35,-218.92 1200.77,-257.75 1231.89,-295.02 1230.76,-328.82 1200.77,-367 1162,-416.36 700.86,-414.85 638.77,-424 621.19,-426.59 602.23,-430.61 585.23,-434.67"/>
386
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="584.97,-431.85 577.86,-436.47 586.3,-437.29 584.97,-431.85"/>
387
+ <text xml:space="preserve" text-anchor="middle" x="1263.06" y="-293.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">findings → next run</text>
342
388
  </g>
343
389
  <!-- Correlate&#45;&gt;Fmet -->
344
390
  <!-- Fmis&#45;&gt;Prompt -->
345
- <g id="edge29" class="edge">
391
+ <g id="edge34" class="edge">
346
392
  <title>Fmis&#45;&gt;Prompt</title>
347
- <path fill="none" stroke="#fb7185" stroke-width="2" stroke-dasharray="5,2" d="M630.71,-52.47C642.18,-65.39 659.54,-82.24 678.59,-91.25 802.47,-149.82 868.26,-62.26 983.59,-136.25 1074.83,-194.78 1130.78,-282.74 1062.59,-367 1015.66,-424.99 467.46,-413.52 393.59,-424 376,-426.5 357.04,-430.49 340.04,-434.55"/>
348
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="339.78,-431.74 332.67,-436.36 341.11,-437.17 339.78,-431.74"/>
349
- <text xml:space="preserve" text-anchor="middle" x="1117.63" y="-221.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">KNOWN MISTAKES</text>
350
- <text xml:space="preserve" text-anchor="middle" x="1117.63" y="-210.7" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">+ KNOWN FIXES</text>
393
+ <path fill="none" stroke="#fb7185" stroke-width="2" stroke-dasharray="5,2" d="M638.51,-52.51C649.9,-65.63 667.34,-82.72 686.77,-91.25 712.15,-102.39 1158.49,-124.87 1183.77,-136.25 1290.91,-184.47 1386.68,-275.67 1312.77,-367 1265.49,-425.42 713.18,-413.46 638.77,-424 621.17,-426.49 602.21,-430.48 585.21,-434.55"/>
394
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="584.95,-431.73 577.85,-436.36 586.28,-437.17 584.95,-431.73"/>
395
+ <text xml:space="preserve" text-anchor="middle" x="1351.6" y="-221.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">KNOWN MISTAKES</text>
396
+ <text xml:space="preserve" text-anchor="middle" x="1351.6" y="-210.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">+ KNOWN FIXES</text>
351
397
  </g>
352
398
  <!-- Fmem&#45;&gt;Prompt -->
353
- <g id="edge27" class="edge">
399
+ <g id="edge32" class="edge">
354
400
  <title>Fmem&#45;&gt;Prompt</title>
355
- <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M752.47,-52.54C763.56,-65.32 780.26,-81.95 798.59,-91.25 952.48,-169.27 1081.22,-59.97 1168.59,-208.75 1206.61,-273.48 1162.46,-313.71 1109.59,-367 1087.03,-389.75 1074.8,-388.74 1043.59,-396 761.95,-461.51 680.07,-384.71 393.59,-424 375.65,-426.46 356.31,-430.53 339.06,-434.68"/>
356
- <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="338.73,-431.88 331.63,-436.52 340.07,-437.32 338.73,-431.88"/>
357
- <text xml:space="preserve" text-anchor="middle" x="1210.36" y="-215.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">MEMORY block</text>
401
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M760.26,-52.44C771.45,-65.53 788.59,-82.61 807.77,-91.25 986.98,-172.02 1058.3,-83.87 1247.77,-136.25 1325.31,-157.69 1415.46,-150.31 1402.77,-229.75 1392.64,-293.14 1400.63,-319.21 1357.77,-367 1336.92,-390.25 1324.14,-388.76 1293.77,-396 1152.05,-429.79 783.11,-404.23 638.77,-424 620.83,-426.46 601.48,-430.53 584.24,-434.68"/>
402
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="583.9,-431.88 576.81,-436.51 585.24,-437.32 583.9,-431.88"/>
403
+ <text xml:space="preserve" text-anchor="middle" x="1436.22" y="-215.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">MEMORY block</text>
358
404
  </g>
359
405
  <!-- Fskl&#45;&gt;Prompt -->
360
- <g id="edge28" class="edge">
406
+ <g id="edge33" class="edge">
361
407
  <title>Fskl&#45;&gt;Prompt</title>
362
- <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1007.1,-43.55C1068.89,-61.81 1201.64,-111.12 1252.59,-208.75 1288.52,-277.58 1236.71,-315.52 1178.59,-367 1152.15,-390.42 1139.17,-388.76 1104.59,-396 795.06,-460.82 706.98,-381.61 393.59,-424 375.65,-426.43 356.3,-430.49 339.06,-434.65"/>
363
- <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="338.72,-431.84 331.63,-436.48 340.06,-437.28 338.72,-431.84"/>
364
- <text xml:space="preserve" text-anchor="middle" x="1288.2" y="-215.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">SKILLS block</text>
408
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M872.48,-52.69C882.15,-65.73 897.13,-82.63 914.77,-91.25 1088.18,-176.05 1162.52,-78.65 1346.77,-136.25 1415.39,-157.7 1495.16,-159.75 1478.77,-229.75 1457.69,-319.76 1443.23,-372.69 1353.77,-396 1199.89,-436.09 796.35,-402.7 638.77,-424 620.82,-426.43 601.48,-430.49 584.23,-434.64"/>
409
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="583.9,-431.84 576.8,-436.48 585.24,-437.28 583.9,-431.84"/>
410
+ <text xml:space="preserve" text-anchor="middle" x="1508.31" y="-215.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">SKILLS block</text>
365
411
  </g>
366
412
  <!-- Fext&#45;&gt;Prompt -->
367
- <g id="edge30" class="edge">
413
+ <g id="edge35" class="edge">
368
414
  <title>Fext&#45;&gt;Prompt</title>
369
- <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M382.38,-52.56C396.13,-65.71 416.81,-82.81 438.59,-91.25 663.41,-178.31 1570.24,4.82 1514.59,-229.75 1498.83,-296.18 1497.91,-323.13 1445.59,-367 1411.11,-395.91 1393.02,-388.84 1348.59,-396 929.38,-463.61 814.67,-369.2 393.59,-424 375.64,-426.34 356.29,-430.38 339.04,-434.54"/>
370
- <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="338.7,-431.74 331.61,-436.38 340.05,-437.17 338.7,-431.74"/>
371
- <text xml:space="preserve" text-anchor="middle" x="1544.42" y="-215.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">EXTRO block</text>
415
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M390.5,-52.69C404.23,-65.91 424.9,-83.05 446.77,-91.25 600.4,-148.86 1020.44,-120.56 1183.77,-136.25 1430.07,-159.92 1572.59,-22.74 1735.77,-208.75 1800.17,-282.17 1714.06,-367.09 1620.77,-396 1516.5,-428.31 747.02,-409.96 638.77,-424 620.81,-426.33 601.46,-430.37 584.22,-434.53"/>
416
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="583.88,-431.73 576.79,-436.37 585.22,-437.16 583.88,-431.73"/>
417
+ <text xml:space="preserve" text-anchor="middle" x="1777.24" y="-215.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">EXTRO block</text>
372
418
  </g>
373
419
  </g>
374
420
  </svg>