pwn 0.5.618 → 0.5.621

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 (107) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/README.md +14 -6
  4. data/bin/pwn_gqrx_scanner +25 -5
  5. data/documentation/Agent-Tool-Registry.md +4 -4
  6. data/documentation/Cron.md +13 -0
  7. data/documentation/Diagrams.md +6 -2
  8. data/documentation/Extrospection.md +96 -11
  9. data/documentation/Home.md +5 -4
  10. data/documentation/How-PWN-Works.md +7 -4
  11. data/documentation/Mistakes.md +97 -0
  12. data/documentation/Persistence.md +4 -1
  13. data/documentation/SDR.md +23 -5
  14. data/documentation/Skills-Memory-Learning.md +16 -5
  15. data/documentation/Transparent-Browser.md +18 -1
  16. data/documentation/diagrams/agent-tool-registry.svg +103 -100
  17. data/documentation/diagrams/ai-integration-tool-calling.svg +24 -24
  18. data/documentation/diagrams/aws-cloud-security.svg +25 -25
  19. data/documentation/diagrams/burp-vs-zap-preference.svg +12 -12
  20. data/documentation/diagrams/code-scanning-sast.svg +25 -25
  21. data/documentation/diagrams/cron-scheduling.svg +23 -23
  22. data/documentation/diagrams/dot/agent-tool-registry.dot +3 -3
  23. data/documentation/diagrams/dot/extrospection-world-awareness.dot +33 -10
  24. data/documentation/diagrams/dot/memory-skills-detailed.dot +16 -5
  25. data/documentation/diagrams/dot/mistakes-negative-feedback.dot +93 -0
  26. data/documentation/diagrams/dot/overall-pwn-architecture.dot +7 -5
  27. data/documentation/diagrams/dot/persistence-filesystem.dot +4 -2
  28. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +25 -7
  29. data/documentation/diagrams/dot/sdr-radio-flow.dot +13 -11
  30. data/documentation/diagrams/driver-framework.svg +13 -13
  31. data/documentation/diagrams/extrospection-world-awareness.svg +241 -93
  32. data/documentation/diagrams/fuzzing-workflow.svg +24 -24
  33. data/documentation/diagrams/hardware-hacking.svg +18 -18
  34. data/documentation/diagrams/history-to-drivers.svg +18 -18
  35. data/documentation/diagrams/memory-skills-detailed.svg +169 -97
  36. data/documentation/diagrams/mistakes-negative-feedback.svg +266 -0
  37. data/documentation/diagrams/network-infra-testing.svg +27 -27
  38. data/documentation/diagrams/overall-pwn-architecture.svg +184 -173
  39. data/documentation/diagrams/penetration-testing-workflow.svg +30 -30
  40. data/documentation/diagrams/persistence-filesystem.svg +111 -87
  41. data/documentation/diagrams/plugin-ecosystem.svg +35 -35
  42. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +263 -149
  43. data/documentation/diagrams/pwn-repl-prototyping.svg +20 -20
  44. data/documentation/diagrams/reporting-pipeline.svg +18 -18
  45. data/documentation/diagrams/reverse-engineering-flow.svg +21 -21
  46. data/documentation/diagrams/sdr-radio-flow.svg +76 -56
  47. data/documentation/diagrams/sessions-cron-automation.svg +18 -18
  48. data/documentation/diagrams/swarm-multi-agent.svg +39 -39
  49. data/documentation/diagrams/web-application-testing.svg +26 -26
  50. data/documentation/diagrams/zero-day-research-flow.svg +25 -25
  51. data/documentation/pwn-ai-Agent.md +28 -15
  52. data/lib/pwn/ai/agent/extrospection.rb +494 -6
  53. data/lib/pwn/ai/agent/learning.rb +67 -7
  54. data/lib/pwn/ai/agent/loop.rb +72 -6
  55. data/lib/pwn/ai/agent/mistakes.rb +369 -0
  56. data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
  57. data/lib/pwn/ai/agent/tools/extrospection.rb +88 -3
  58. data/lib/pwn/ai/agent/tools/mistakes.rb +132 -0
  59. data/lib/pwn/ai/agent.rb +1 -0
  60. data/lib/pwn/plugins/jira_data_center.rb +2 -2
  61. data/lib/pwn/sdr/decoder/adsb.rb +82 -0
  62. data/lib/pwn/sdr/decoder/apt.rb +136 -0
  63. data/lib/pwn/sdr/decoder/base.rb +258 -171
  64. data/lib/pwn/sdr/decoder/bluetooth.rb +71 -0
  65. data/lib/pwn/sdr/decoder/dect.rb +70 -0
  66. data/lib/pwn/sdr/decoder/dsp.rb +396 -0
  67. data/lib/pwn/sdr/decoder/flex.rb +177 -210
  68. data/lib/pwn/sdr/decoder/gps.rb +74 -0
  69. data/lib/pwn/sdr/decoder/gsm.rb +31 -62
  70. data/lib/pwn/sdr/decoder/iridium.rb +66 -0
  71. data/lib/pwn/sdr/decoder/lora.rb +80 -0
  72. data/lib/pwn/sdr/decoder/lte.rb +67 -0
  73. data/lib/pwn/sdr/decoder/morse.rb +138 -0
  74. data/lib/pwn/sdr/decoder/p25.rb +74 -0
  75. data/lib/pwn/sdr/decoder/pager.rb +61 -0
  76. data/lib/pwn/sdr/decoder/pocsag.rb +176 -54
  77. data/lib/pwn/sdr/decoder/rfid.rb +79 -0
  78. data/lib/pwn/sdr/decoder/rtl433.rb +86 -0
  79. data/lib/pwn/sdr/decoder/rtty.rb +139 -0
  80. data/lib/pwn/sdr/decoder/wifi.rb +77 -0
  81. data/lib/pwn/sdr/decoder/zigbee.rb +74 -0
  82. data/lib/pwn/sdr/decoder.rb +75 -7
  83. data/lib/pwn/sdr/frequency_allocation.rb +82 -41
  84. data/lib/pwn/sdr/gqrx.rb +186 -95
  85. data/lib/pwn/version.rb +1 -1
  86. data/spec/lib/pwn/ai/agent/mistakes_spec.rb +36 -0
  87. data/spec/lib/pwn/ai/agent/tools/mistakes_spec.rb +12 -0
  88. data/spec/lib/pwn/sdr/decoder/adsb_spec.rb +15 -0
  89. data/spec/lib/pwn/sdr/decoder/apt_spec.rb +15 -0
  90. data/spec/lib/pwn/sdr/decoder/bluetooth_spec.rb +15 -0
  91. data/spec/lib/pwn/sdr/decoder/dect_spec.rb +15 -0
  92. data/spec/lib/pwn/sdr/decoder/dsp_spec.rb +15 -0
  93. data/spec/lib/pwn/sdr/decoder/gps_spec.rb +15 -0
  94. data/spec/lib/pwn/sdr/decoder/iridium_spec.rb +15 -0
  95. data/spec/lib/pwn/sdr/decoder/lora_spec.rb +15 -0
  96. data/spec/lib/pwn/sdr/decoder/lte_spec.rb +15 -0
  97. data/spec/lib/pwn/sdr/decoder/morse_spec.rb +15 -0
  98. data/spec/lib/pwn/sdr/decoder/p25_spec.rb +15 -0
  99. data/spec/lib/pwn/sdr/decoder/pager_spec.rb +15 -0
  100. data/spec/lib/pwn/sdr/decoder/rfid_spec.rb +15 -0
  101. data/spec/lib/pwn/sdr/decoder/rtl433_spec.rb +15 -0
  102. data/spec/lib/pwn/sdr/decoder/rtty_spec.rb +15 -0
  103. data/spec/lib/pwn/sdr/decoder/wifi_spec.rb +15 -0
  104. data/spec/lib/pwn/sdr/decoder/zigbee_spec.rb +15 -0
  105. data/third_party/pwn_rdoc.jsonl +115 -5
  106. metadata +46 -6
  107. data/README.md.bak +0 -200
@@ -4,199 +4,271 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
6
  <!-- Title: PWN_MemorySkills Pages: 1 -->
7
- <svg width="665pt" height="568pt"
8
- viewBox="0.00 0.00 665.00 568.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 524.45)">
7
+ <svg width="1022pt" height="600pt"
8
+ viewBox="0.00 0.00 1022.00 600.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 556.45)">
10
10
  <title>PWN_MemorySkills</title>
11
- <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-524.45 622.2,-524.45 622.2,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="46.5" y="-459.25" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Persistent Knowledge — Memory · Skills · Sessions</text>
13
- <text xml:space="preserve" text-anchor="start" x="164.25" y="-447.8" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">everything under ~/.pwn/ that shapes future prompts</text>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-556.45 979.06,-556.45 979.06,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="125.18" y="-491.25" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Persistent Knowledge — Memory · Skills · Learning · Mistakes · Sessions</text>
13
+ <text xml:space="preserve" text-anchor="start" x="342.68" y="-479.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">everything under ~/.pwn/ that shapes future prompts</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_write</title>
16
- <path fill="#022c22" stroke="#047857" d="M20,-351C20,-351 559,-351 559,-351 565,-351 571,-357 571,-363 571,-363 571,-422.25 571,-422.25 571,-428.25 565,-434.25 559,-434.25 559,-434.25 20,-434.25 20,-434.25 14,-434.25 8,-428.25 8,-422.25 8,-422.25 8,-363 8,-363 8,-357 14,-351 20,-351"/>
17
- <text xml:space="preserve" text-anchor="middle" x="289.5" y="-411.25" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Write&#45;Side Tools</text>
16
+ <path fill="#022c22" stroke="#047857" d="M20,-383C20,-383 691,-383 691,-383 697,-383 703,-389 703,-395 703,-395 703,-454.25 703,-454.25 703,-460.25 697,-466.25 691,-466.25 691,-466.25 20,-466.25 20,-466.25 14,-466.25 8,-460.25 8,-454.25 8,-454.25 8,-395 8,-395 8,-389 14,-383 20,-383"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="355.5" y="-443.25" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">Write&#45;Side Tools</text>
18
18
  </g>
19
19
  <g id="clust3" class="cluster">
20
20
  <title>cluster_files</title>
21
- <path fill="#422006" stroke="#a16207" d="M47,-215.25C47,-215.25 551,-215.25 551,-215.25 557,-215.25 563,-221.25 563,-227.25 563,-227.25 563,-294.5 563,-294.5 563,-300.5 557,-306.5 551,-306.5 551,-306.5 47,-306.5 47,-306.5 41,-306.5 35,-300.5 35,-294.5 35,-294.5 35,-227.25 35,-227.25 35,-221.25 41,-215.25 47,-215.25"/>
22
- <text xml:space="preserve" text-anchor="middle" x="299" y="-283.5" font-family="sans-Serif" font-size="20.00" fill="#fde68a">~/.pwn/</text>
21
+ <path fill="#422006" stroke="#a16207" d="M45,-232.75C45,-232.75 728,-232.75 728,-232.75 734,-232.75 740,-238.75 740,-244.75 740,-244.75 740,-312 740,-312 740,-318 734,-324 728,-324 728,-324 45,-324 45,-324 39,-324 33,-318 33,-312 33,-312 33,-244.75 33,-244.75 33,-238.75 39,-232.75 45,-232.75"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="386.5" y="-301" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fde68a">~/.pwn/</text>
23
23
  </g>
24
24
  <g id="clust5" class="cluster">
25
25
  <title>cluster_read</title>
26
- <path fill="#2e1065" stroke="#6d28d9" d="M77,-97C77,-97 537,-97 537,-97 543,-97 549,-103 549,-109 549,-109 549,-168.25 549,-168.25 549,-174.25 543,-180.25 537,-180.25 537,-180.25 77,-180.25 77,-180.25 71,-180.25 65,-174.25 65,-168.25 65,-168.25 65,-109 65,-109 65,-103 71,-97 77,-97"/>
27
- <text xml:space="preserve" text-anchor="middle" x="307" y="-157.25" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Read&#45;Side / Injection</text>
26
+ <path fill="#2e1065" stroke="#6d28d9" d="M51,-114.5C51,-114.5 631,-114.5 631,-114.5 637,-114.5 643,-120.5 643,-126.5 643,-126.5 643,-185.75 643,-185.75 643,-191.75 637,-197.75 631,-197.75 631,-197.75 51,-197.75 51,-197.75 45,-197.75 39,-191.75 39,-185.75 39,-185.75 39,-126.5 39,-126.5 39,-120.5 45,-114.5 51,-114.5"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="341" y="-174.75" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">Read&#45;Side / Injection</text>
28
28
  </g>
29
29
  <!-- Rem -->
30
30
  <g id="node1" class="node">
31
31
  <title>Rem</title>
32
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M114.25,-395C114.25,-395 27.75,-395 27.75,-395 21.75,-395 15.75,-389 15.75,-383 15.75,-383 15.75,-371 15.75,-371 15.75,-365 21.75,-359 27.75,-359 27.75,-359 114.25,-359 114.25,-359 120.25,-359 126.25,-365 126.25,-371 126.25,-371 126.25,-383 126.25,-383 126.25,-389 120.25,-395 114.25,-395"/>
33
- <text xml:space="preserve" text-anchor="middle" x="71" y="-379.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory_remember</text>
34
- <text xml:space="preserve" text-anchor="middle" x="71" y="-367.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">key · value · category</text>
32
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M683.25,-427C683.25,-427 596.75,-427 596.75,-427 590.75,-427 584.75,-421 584.75,-415 584.75,-415 584.75,-403 584.75,-403 584.75,-397 590.75,-391 596.75,-391 596.75,-391 683.25,-391 683.25,-391 689.25,-391 695.25,-397 695.25,-403 695.25,-403 695.25,-415 695.25,-415 695.25,-421 689.25,-427 683.25,-427"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="640" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">memory_remember</text>
34
+ <text xml:space="preserve" text-anchor="middle" x="640" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">key · value · category</text>
35
35
  </g>
36
36
  <!-- Fmem -->
37
- <g id="node5" class="node">
37
+ <g id="node6" class="node">
38
38
  <title>Fmem</title>
39
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M163.12,-263.25C163.12,-265.46 136.18,-267.25 103,-267.25 69.82,-267.25 42.88,-265.46 42.88,-263.25 42.88,-263.25 42.88,-227.25 42.88,-227.25 42.88,-225.04 69.82,-223.25 103,-223.25 136.18,-223.25 163.12,-225.04 163.12,-227.25 163.12,-227.25 163.12,-263.25 163.12,-263.25"/>
40
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M163.12,-263.25C163.12,-261.04 136.18,-259.25 103,-259.25 69.82,-259.25 42.88,-261.04 42.88,-263.25"/>
41
- <text xml:space="preserve" text-anchor="middle" x="103" y="-247.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory.json</text>
42
- <text xml:space="preserve" text-anchor="middle" x="103" y="-235.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">fact · pref · lesson · env</text>
39
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M732.12,-280.75C732.12,-282.96 705.18,-284.75 672,-284.75 638.82,-284.75 611.88,-282.96 611.88,-280.75 611.88,-280.75 611.88,-244.75 611.88,-244.75 611.88,-242.54 638.82,-240.75 672,-240.75 705.18,-240.75 732.12,-242.54 732.12,-244.75 732.12,-244.75 732.12,-280.75 732.12,-280.75"/>
40
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M732.12,-280.75C732.12,-278.54 705.18,-276.75 672,-276.75 638.82,-276.75 611.88,-278.54 611.88,-280.75"/>
41
+ <text xml:space="preserve" text-anchor="middle" x="672" y="-265.25" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">memory.json</text>
42
+ <text xml:space="preserve" text-anchor="middle" x="672" y="-253.25" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">fact · pref · lesson · env</text>
43
43
  </g>
44
44
  <!-- Rem&#45;&gt;Fmem -->
45
45
  <g id="edge1" class="edge">
46
46
  <title>Rem&#45;&gt;Fmem</title>
47
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M75.32,-358.5C80.44,-337.74 89.07,-302.74 95.33,-277.34"/>
48
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="98.02,-278.13 97.22,-269.69 92.58,-276.79 98.02,-278.13"/>
47
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M643.86,-390.6C649.15,-366.77 658.72,-323.6 665.22,-294.31"/>
48
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="667.87,-295.29 666.87,-286.88 662.4,-294.08 667.87,-295.29"/>
49
49
  </g>
50
50
  <!-- Skc -->
51
51
  <g id="node2" class="node">
52
52
  <title>Skc</title>
53
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M411,-395C411,-395 335,-395 335,-395 329,-395 323,-389 323,-383 323,-383 323,-371 323,-371 323,-365 329,-359 335,-359 335,-359 411,-359 411,-359 417,-359 423,-365 423,-371 423,-371 423,-383 423,-383 423,-389 417,-395 411,-395"/>
54
- <text xml:space="preserve" text-anchor="middle" x="373" y="-379.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skill_create</text>
55
- <text xml:space="preserve" text-anchor="middle" x="373" y="-367.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skill_add_reference</text>
53
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M260,-427C260,-427 184,-427 184,-427 178,-427 172,-421 172,-415 172,-415 172,-403 172,-403 172,-397 178,-391 184,-391 184,-391 260,-391 260,-391 266,-391 272,-397 272,-403 272,-403 272,-415 272,-415 272,-421 266,-427 260,-427"/>
54
+ <text xml:space="preserve" text-anchor="middle" x="222" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">skill_create</text>
55
+ <text xml:space="preserve" text-anchor="middle" x="222" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">skill_add_reference</text>
56
56
  </g>
57
57
  <!-- Fskl -->
58
- <g id="node6" class="node">
58
+ <g id="node7" class="node">
59
59
  <title>Fskl</title>
60
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M429.75,-263.25C429.75,-265.46 404.31,-267.25 373,-267.25 341.69,-267.25 316.25,-265.46 316.25,-263.25 316.25,-263.25 316.25,-227.25 316.25,-227.25 316.25,-225.04 341.69,-223.25 373,-223.25 404.31,-223.25 429.75,-225.04 429.75,-227.25 429.75,-227.25 429.75,-263.25 429.75,-263.25"/>
61
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M429.75,-263.25C429.75,-261.04 404.31,-259.25 373,-259.25 341.69,-259.25 316.25,-261.04 316.25,-263.25"/>
62
- <text xml:space="preserve" text-anchor="middle" x="373" y="-247.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skills/*.md</text>
63
- <text xml:space="preserve" text-anchor="middle" x="373" y="-235.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">YAML front&#45;matter refs</text>
60
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M267.75,-280.75C267.75,-282.96 242.31,-284.75 211,-284.75 179.69,-284.75 154.25,-282.96 154.25,-280.75 154.25,-280.75 154.25,-244.75 154.25,-244.75 154.25,-242.54 179.69,-240.75 211,-240.75 242.31,-240.75 267.75,-242.54 267.75,-244.75 267.75,-244.75 267.75,-280.75 267.75,-280.75"/>
61
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M267.75,-280.75C267.75,-278.54 242.31,-276.75 211,-276.75 179.69,-276.75 154.25,-278.54 154.25,-280.75"/>
62
+ <text xml:space="preserve" text-anchor="middle" x="211" y="-265.25" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">skills/*.md</text>
63
+ <text xml:space="preserve" text-anchor="middle" x="211" y="-253.25" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">YAML front&#45;matter refs</text>
64
64
  </g>
65
65
  <!-- Skc&#45;&gt;Fskl -->
66
66
  <g id="edge2" class="edge">
67
67
  <title>Skc&#45;&gt;Fskl</title>
68
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M373,-358.5C373,-337.83 373,-303.05 373,-277.67"/>
69
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="375.8,-277.75 373,-269.75 370.2,-277.75 375.8,-277.75"/>
68
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M220.67,-390.6C218.86,-366.87 215.59,-323.97 213.36,-294.69"/>
69
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="216.17,-294.68 212.77,-286.92 210.58,-295.11 216.17,-294.68"/>
70
70
  </g>
71
71
  <!-- Note -->
72
72
  <g id="node3" class="node">
73
73
  <title>Note</title>
74
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M271.25,-395C271.25,-395 178.75,-395 178.75,-395 172.75,-395 166.75,-389 166.75,-383 166.75,-383 166.75,-371 166.75,-371 166.75,-365 172.75,-359 178.75,-359 178.75,-359 271.25,-359 271.25,-359 277.25,-359 283.25,-365 283.25,-371 283.25,-371 283.25,-383 283.25,-383 283.25,-389 277.25,-395 271.25,-395"/>
75
- <text xml:space="preserve" text-anchor="middle" x="225" y="-379.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_note_outcome</text>
76
- <text xml:space="preserve" text-anchor="middle" x="225" y="-367.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_reflect</text>
74
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M120.25,-427C120.25,-427 27.75,-427 27.75,-427 21.75,-427 15.75,-421 15.75,-415 15.75,-415 15.75,-403 15.75,-403 15.75,-397 21.75,-391 27.75,-391 27.75,-391 120.25,-391 120.25,-391 126.25,-391 132.25,-397 132.25,-403 132.25,-403 132.25,-415 132.25,-415 132.25,-421 126.25,-427 120.25,-427"/>
75
+ <text xml:space="preserve" text-anchor="middle" x="74" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">learning_note_outcome</text>
76
+ <text xml:space="preserve" text-anchor="middle" x="74" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">learning_reflect</text>
77
77
  </g>
78
78
  <!-- Flrn -->
79
- <g id="node7" class="node">
79
+ <g id="node8" class="node">
80
80
  <title>Flrn</title>
81
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M276.5,-263.25C276.5,-265.46 260.14,-267.25 240,-267.25 219.86,-267.25 203.5,-265.46 203.5,-263.25 203.5,-263.25 203.5,-227.25 203.5,-227.25 203.5,-225.04 219.86,-223.25 240,-223.25 260.14,-223.25 276.5,-225.04 276.5,-227.25 276.5,-227.25 276.5,-263.25 276.5,-263.25"/>
82
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M276.5,-263.25C276.5,-261.04 260.14,-259.25 240,-259.25 219.86,-259.25 203.5,-261.04 203.5,-263.25"/>
83
- <text xml:space="preserve" text-anchor="middle" x="240" y="-247.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning.jsonl</text>
84
- <text xml:space="preserve" text-anchor="middle" x="240" y="-235.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">outcome log</text>
81
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M114.5,-280.75C114.5,-282.96 98.14,-284.75 78,-284.75 57.86,-284.75 41.5,-282.96 41.5,-280.75 41.5,-280.75 41.5,-244.75 41.5,-244.75 41.5,-242.54 57.86,-240.75 78,-240.75 98.14,-240.75 114.5,-242.54 114.5,-244.75 114.5,-244.75 114.5,-280.75 114.5,-280.75"/>
82
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M114.5,-280.75C114.5,-278.54 98.14,-276.75 78,-276.75 57.86,-276.75 41.5,-278.54 41.5,-280.75"/>
83
+ <text xml:space="preserve" text-anchor="middle" x="78" y="-265.25" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">learning.jsonl</text>
84
+ <text xml:space="preserve" text-anchor="middle" x="78" y="-253.25" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">outcome log</text>
85
85
  </g>
86
86
  <!-- Note&#45;&gt;Flrn -->
87
87
  <g id="edge3" class="edge">
88
88
  <title>Note&#45;&gt;Flrn</title>
89
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M227.02,-358.5C229.41,-337.83 233.43,-303.05 236.37,-277.67"/>
90
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="239.15,-278 237.28,-269.73 233.58,-277.36 239.15,-278"/>
89
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M74.48,-390.6C75.14,-366.87 76.33,-323.97 77.14,-294.69"/>
90
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="79.93,-295 77.36,-286.92 74.34,-294.84 79.93,-295"/>
91
91
  </g>
92
92
  <!-- Dist -->
93
93
  <g id="node4" class="node">
94
94
  <title>Dist</title>
95
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M551,-395C551,-395 475,-395 475,-395 469,-395 463,-389 463,-383 463,-383 463,-371 463,-371 463,-365 469,-359 475,-359 475,-359 551,-359 551,-359 557,-359 563,-365 563,-371 563,-371 563,-383 563,-383 563,-389 557,-395 551,-395"/>
96
- <text xml:space="preserve" text-anchor="middle" x="513" y="-379.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_distill_skill</text>
97
- <text xml:space="preserve" text-anchor="middle" x="513" y="-367.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(session → skill)</text>
95
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M400,-427C400,-427 324,-427 324,-427 318,-427 312,-421 312,-415 312,-415 312,-403 312,-403 312,-397 318,-391 324,-391 324,-391 400,-391 400,-391 406,-391 412,-397 412,-403 412,-403 412,-415 412,-415 412,-421 406,-427 400,-427"/>
96
+ <text xml:space="preserve" text-anchor="middle" x="362" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">learning_distill_skill</text>
97
+ <text xml:space="preserve" text-anchor="middle" x="362" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">(session → skill)</text>
98
98
  </g>
99
99
  <!-- Dist&#45;&gt;Fskl -->
100
100
  <g id="edge4" class="edge">
101
101
  <title>Dist&#45;&gt;Fskl</title>
102
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M494.12,-358.5C470.82,-336.91 430.92,-299.93 403.32,-274.35"/>
103
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="405.45,-272.5 397.67,-269.12 401.64,-276.61 405.45,-272.5"/>
102
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M343.79,-390.6C318.15,-366.11 271.14,-321.2 240.49,-291.92"/>
103
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="242.59,-290.06 234.88,-286.56 238.73,-294.11 242.59,-290.06"/>
104
104
  </g>
105
105
  <!-- Fses -->
106
- <g id="node8" class="node">
106
+ <g id="node9" class="node">
107
107
  <title>Fses</title>
108
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M554.5,-263.25C554.5,-265.46 535.45,-267.25 512,-267.25 488.55,-267.25 469.5,-265.46 469.5,-263.25 469.5,-263.25 469.5,-227.25 469.5,-227.25 469.5,-225.04 488.55,-223.25 512,-223.25 535.45,-223.25 554.5,-225.04 554.5,-227.25 554.5,-227.25 554.5,-263.25 554.5,-263.25"/>
109
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M554.5,-263.25C554.5,-261.04 535.45,-259.25 512,-259.25 488.55,-259.25 469.5,-261.04 469.5,-263.25"/>
110
- <text xml:space="preserve" text-anchor="middle" x="512" y="-247.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions/*.jsonl</text>
111
- <text xml:space="preserve" text-anchor="middle" x="512" y="-235.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">transcripts</text>
108
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M392.5,-280.75C392.5,-282.96 373.45,-284.75 350,-284.75 326.55,-284.75 307.5,-282.96 307.5,-280.75 307.5,-280.75 307.5,-244.75 307.5,-244.75 307.5,-242.54 326.55,-240.75 350,-240.75 373.45,-240.75 392.5,-242.54 392.5,-244.75 392.5,-244.75 392.5,-280.75 392.5,-280.75"/>
109
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M392.5,-280.75C392.5,-278.54 373.45,-276.75 350,-276.75 326.55,-276.75 307.5,-278.54 307.5,-280.75"/>
110
+ <text xml:space="preserve" text-anchor="middle" x="350" y="-265.25" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">sessions/*.jsonl</text>
111
+ <text xml:space="preserve" text-anchor="middle" x="350" y="-253.25" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">transcripts</text>
112
112
  </g>
113
113
  <!-- Dist&#45;&gt;Fses -->
114
114
  <g id="edge5" class="edge">
115
115
  <title>Dist&#45;&gt;Fses</title>
116
- <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M512.79,-348.57C512.6,-324.48 512.34,-289.92 512.17,-267.78"/>
117
- <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="509.99,-348.56 512.85,-356.53 515.59,-348.51 509.99,-348.56"/>
118
- <text xml:space="preserve" text-anchor="middle" x="522.71" y="-316.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">mine</text>
116
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M359.73,-380.73C357.42,-352.92 353.88,-310.34 351.76,-284.96"/>
117
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="356.94,-380.9 360.39,-388.64 362.52,-380.43 356.94,-380.9"/>
118
+ <text xml:space="preserve" text-anchor="middle" x="367.2" y="-339.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">mine</text>
119
+ </g>
120
+ <!-- Mrec -->
121
+ <g id="node5" class="node">
122
+ <title>Mrec</title>
123
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M532.25,-427C532.25,-427 463.75,-427 463.75,-427 457.75,-427 451.75,-421 451.75,-415 451.75,-415 451.75,-403 451.75,-403 451.75,-397 457.75,-391 463.75,-391 463.75,-391 532.25,-391 532.25,-391 538.25,-391 544.25,-397 544.25,-403 544.25,-403 544.25,-415 544.25,-415 544.25,-421 538.25,-427 532.25,-427"/>
124
+ <text xml:space="preserve" text-anchor="middle" x="498" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">mistakes_record</text>
125
+ <text xml:space="preserve" text-anchor="middle" x="498" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">mistakes_resolve</text>
126
+ </g>
127
+ <!-- Mrec&#45;&gt;Fmem -->
128
+ <g id="edge7" class="edge">
129
+ <title>Mrec&#45;&gt;Fmem</title>
130
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M513.46,-390.57C528.59,-374.16 552.82,-349.56 577,-332 583.11,-327.56 585.63,-328.06 592,-324 607.56,-314.07 623.98,-302.02 637.86,-291.31"/>
131
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="639.57,-293.52 644.16,-286.39 636.13,-289.1 639.57,-293.52"/>
132
+ <text xml:space="preserve" text-anchor="middle" x="610" y="-339.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">resolve→lesson</text>
133
+ </g>
134
+ <!-- Fmis -->
135
+ <g id="node10" class="node">
136
+ <title>Fmis</title>
137
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M571.88,-280.75C571.88,-282.96 540.56,-284.75 502,-284.75 463.44,-284.75 432.12,-282.96 432.12,-280.75 432.12,-280.75 432.12,-244.75 432.12,-244.75 432.12,-242.54 463.44,-240.75 502,-240.75 540.56,-240.75 571.88,-242.54 571.88,-244.75 571.88,-244.75 571.88,-280.75 571.88,-280.75"/>
138
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M571.88,-280.75C571.88,-278.54 540.56,-276.75 502,-276.75 463.44,-276.75 432.12,-278.54 432.12,-280.75"/>
139
+ <text xml:space="preserve" text-anchor="middle" x="502" y="-265.25" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">mistakes.json</text>
140
+ <text xml:space="preserve" text-anchor="middle" x="502" y="-253.25" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">sig → count · fix · regressed</text>
141
+ </g>
142
+ <!-- Mrec&#45;&gt;Fmis -->
143
+ <g id="edge6" class="edge">
144
+ <title>Mrec&#45;&gt;Fmis</title>
145
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M498.48,-390.6C499.14,-366.87 500.33,-323.97 501.14,-294.69"/>
146
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="503.93,-295 501.36,-286.92 498.34,-294.84 503.93,-295"/>
119
147
  </g>
120
148
  <!-- Rec -->
121
- <g id="node9" class="node">
149
+ <g id="node11" class="node">
122
150
  <title>Rec</title>
123
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M140.88,-141C140.88,-141 85.12,-141 85.12,-141 79.12,-141 73.12,-135 73.12,-129 73.12,-129 73.12,-117 73.12,-117 73.12,-111 79.12,-105 85.12,-105 85.12,-105 140.88,-105 140.88,-105 146.88,-105 152.88,-111 152.88,-117 152.88,-117 152.88,-129 152.88,-129 152.88,-135 146.88,-141 140.88,-141"/>
124
- <text xml:space="preserve" text-anchor="middle" x="113" y="-119.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory_recall</text>
151
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M622.88,-158.5C622.88,-158.5 567.12,-158.5 567.12,-158.5 561.12,-158.5 555.12,-152.5 555.12,-146.5 555.12,-146.5 555.12,-134.5 555.12,-134.5 555.12,-128.5 561.12,-122.5 567.12,-122.5 567.12,-122.5 622.88,-122.5 622.88,-122.5 628.88,-122.5 634.88,-128.5 634.88,-134.5 634.88,-134.5 634.88,-146.5 634.88,-146.5 634.88,-152.5 628.88,-158.5 622.88,-158.5"/>
152
+ <text xml:space="preserve" text-anchor="middle" x="595" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">memory_recall</text>
125
153
  </g>
126
154
  <!-- Fmem&#45;&gt;Rec -->
127
- <g id="edge6" class="edge">
155
+ <g id="edge8" class="edge">
128
156
  <title>Fmem&#45;&gt;Rec</title>
129
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M104.79,-222.75C106.45,-202.78 108.93,-172.95 110.73,-151.3"/>
130
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="113.52,-151.58 111.39,-143.37 107.94,-151.11 113.52,-151.58"/>
157
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M658.23,-240.25C645.1,-219.74 625.3,-188.82 611.36,-167.05"/>
158
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="613.88,-165.8 607.21,-160.57 609.17,-168.82 613.88,-165.8"/>
159
+ </g>
160
+ <!-- ReVal -->
161
+ <g id="node17" class="node">
162
+ <title>ReVal</title>
163
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M903.12,-431C903.12,-431 800.88,-431 800.88,-431 794.88,-431 788.88,-425 788.88,-419 788.88,-419 788.88,-399 788.88,-399 788.88,-393 794.88,-387 800.88,-387 800.88,-387 903.12,-387 903.12,-387 909.12,-387 915.12,-393 915.12,-399 915.12,-399 915.12,-419 915.12,-419 915.12,-425 909.12,-431 903.12,-431"/>
164
+ <text xml:space="preserve" text-anchor="middle" x="852" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Extrospection.verify</text>
165
+ <text xml:space="preserve" text-anchor="middle" x="852" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">revalidate_memory (cron)</text>
166
+ <text xml:space="preserve" text-anchor="middle" x="852" y="-393.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">browser&#45;backed GC</text>
167
+ </g>
168
+ <!-- Fmem&#45;&gt;ReVal -->
169
+ <g id="edge19" class="edge">
170
+ <title>Fmem&#45;&gt;ReVal</title>
171
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" stroke-dasharray="5,2" d="M677,-285.21C682.68,-305.19 693.78,-334.58 713.25,-353 731.53,-370.29 755.91,-382.38 779.12,-390.72"/>
172
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="777.95,-393.28 786.43,-393.21 779.76,-387.98 777.95,-393.28"/>
173
+ <text xml:space="preserve" text-anchor="middle" x="755.62" y="-339.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">:fact w/ CVE|ver|URL</text>
131
174
  </g>
132
175
  <!-- Skv -->
133
- <g id="node10" class="node">
176
+ <g id="node12" class="node">
134
177
  <title>Skv</title>
135
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M399.25,-141C399.25,-141 342.75,-141 342.75,-141 336.75,-141 330.75,-135 330.75,-129 330.75,-129 330.75,-117 330.75,-117 330.75,-111 336.75,-105 342.75,-105 342.75,-105 399.25,-105 399.25,-105 405.25,-105 411.25,-111 411.25,-117 411.25,-117 411.25,-129 411.25,-129 411.25,-135 405.25,-141 399.25,-141"/>
136
- <text xml:space="preserve" text-anchor="middle" x="371" y="-119.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skill_list · view</text>
178
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M253.25,-158.5C253.25,-158.5 196.75,-158.5 196.75,-158.5 190.75,-158.5 184.75,-152.5 184.75,-146.5 184.75,-146.5 184.75,-134.5 184.75,-134.5 184.75,-128.5 190.75,-122.5 196.75,-122.5 196.75,-122.5 253.25,-122.5 253.25,-122.5 259.25,-122.5 265.25,-128.5 265.25,-134.5 265.25,-134.5 265.25,-146.5 265.25,-146.5 265.25,-152.5 259.25,-158.5 253.25,-158.5"/>
179
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">skill_list · view</text>
137
180
  </g>
138
181
  <!-- Fskl&#45;&gt;Skv -->
139
- <g id="edge7" class="edge">
182
+ <g id="edge9" class="edge">
140
183
  <title>Fskl&#45;&gt;Skv</title>
141
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M372.64,-222.75C372.31,-202.78 371.81,-172.95 371.45,-151.3"/>
142
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="374.26,-151.33 371.32,-143.38 368.66,-151.43 374.26,-151.33"/>
184
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M213.5,-240.25C215.83,-220.28 219.3,-190.45 221.82,-168.8"/>
185
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="224.6,-169.14 222.75,-160.87 219.04,-168.49 224.6,-169.14"/>
143
186
  </g>
144
187
  <!-- Out -->
145
- <g id="node11" class="node">
188
+ <g id="node13" class="node">
146
189
  <title>Out</title>
147
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M278.88,-141C278.88,-141 205.12,-141 205.12,-141 199.12,-141 193.12,-135 193.12,-129 193.12,-129 193.12,-117 193.12,-117 193.12,-111 199.12,-105 205.12,-105 205.12,-105 278.88,-105 278.88,-105 284.88,-105 290.88,-111 290.88,-117 290.88,-117 290.88,-129 290.88,-129 290.88,-135 284.88,-141 278.88,-141"/>
148
- <text xml:space="preserve" text-anchor="middle" x="242" y="-125.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_outcomes</text>
149
- <text xml:space="preserve" text-anchor="middle" x="242" y="-113.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_stats</text>
190
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M132.88,-158.5C132.88,-158.5 59.12,-158.5 59.12,-158.5 53.12,-158.5 47.12,-152.5 47.12,-146.5 47.12,-146.5 47.12,-134.5 47.12,-134.5 47.12,-128.5 53.12,-122.5 59.12,-122.5 59.12,-122.5 132.88,-122.5 132.88,-122.5 138.88,-122.5 144.88,-128.5 144.88,-134.5 144.88,-134.5 144.88,-146.5 144.88,-146.5 144.88,-152.5 138.88,-158.5 132.88,-158.5"/>
191
+ <text xml:space="preserve" text-anchor="middle" x="96" y="-143" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">learning_outcomes</text>
192
+ <text xml:space="preserve" text-anchor="middle" x="96" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">learning_stats</text>
150
193
  </g>
151
194
  <!-- Flrn&#45;&gt;Out -->
152
- <g id="edge8" class="edge">
195
+ <g id="edge10" class="edge">
153
196
  <title>Flrn&#45;&gt;Out</title>
154
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M240.36,-222.75C240.69,-202.78 241.19,-172.95 241.55,-151.3"/>
155
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="244.34,-151.43 241.68,-143.38 238.74,-151.33 244.34,-151.43"/>
197
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M81.22,-240.25C84.22,-220.19 88.71,-190.18 91.96,-168.51"/>
198
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="94.69,-169.19 93.1,-160.86 89.15,-168.36 94.69,-169.19"/>
156
199
  </g>
157
200
  <!-- Sesv -->
158
- <g id="node12" class="node">
201
+ <g id="node14" class="node">
159
202
  <title>Sesv</title>
160
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M529.12,-141C529.12,-141 462.88,-141 462.88,-141 456.88,-141 450.88,-135 450.88,-129 450.88,-129 450.88,-117 450.88,-117 450.88,-111 456.88,-105 462.88,-105 462.88,-105 529.12,-105 529.12,-105 535.12,-105 541.12,-111 541.12,-117 541.12,-117 541.12,-129 541.12,-129 541.12,-135 535.12,-141 529.12,-141"/>
161
- <text xml:space="preserve" text-anchor="middle" x="496" y="-125.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions_view</text>
162
- <text xml:space="preserve" text-anchor="middle" x="496" y="-113.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions_current</text>
203
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M383.12,-158.5C383.12,-158.5 316.88,-158.5 316.88,-158.5 310.88,-158.5 304.88,-152.5 304.88,-146.5 304.88,-146.5 304.88,-134.5 304.88,-134.5 304.88,-128.5 310.88,-122.5 316.88,-122.5 316.88,-122.5 383.12,-122.5 383.12,-122.5 389.12,-122.5 395.12,-128.5 395.12,-134.5 395.12,-134.5 395.12,-146.5 395.12,-146.5 395.12,-152.5 389.12,-158.5 383.12,-158.5"/>
204
+ <text xml:space="preserve" text-anchor="middle" x="350" y="-143" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">sessions_view</text>
205
+ <text xml:space="preserve" text-anchor="middle" x="350" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">sessions_current</text>
163
206
  </g>
164
207
  <!-- Fses&#45;&gt;Sesv -->
165
- <g id="edge9" class="edge">
208
+ <g id="edge11" class="edge">
166
209
  <title>Fses&#45;&gt;Sesv</title>
167
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M509.14,-222.75C506.47,-202.69 502.48,-172.68 499.59,-151.01"/>
168
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="502.41,-150.92 498.58,-143.36 496.86,-151.66 502.41,-150.92"/>
210
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M350,-240.25C350,-220.28 350,-190.45 350,-168.8"/>
211
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="352.8,-168.88 350,-160.88 347.2,-168.88 352.8,-168.88"/>
212
+ </g>
213
+ <!-- Mlst -->
214
+ <g id="node15" class="node">
215
+ <title>Mlst</title>
216
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M502.88,-158.5C502.88,-158.5 447.12,-158.5 447.12,-158.5 441.12,-158.5 435.12,-152.5 435.12,-146.5 435.12,-146.5 435.12,-134.5 435.12,-134.5 435.12,-128.5 441.12,-122.5 447.12,-122.5 447.12,-122.5 502.88,-122.5 502.88,-122.5 508.88,-122.5 514.88,-128.5 514.88,-134.5 514.88,-134.5 514.88,-146.5 514.88,-146.5 514.88,-152.5 508.88,-158.5 502.88,-158.5"/>
217
+ <text xml:space="preserve" text-anchor="middle" x="475" y="-143" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">mistakes_list</text>
218
+ <text xml:space="preserve" text-anchor="middle" x="475" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">correction_hint</text>
219
+ </g>
220
+ <!-- Fmis&#45;&gt;Mlst -->
221
+ <g id="edge12" class="edge">
222
+ <title>Fmis&#45;&gt;Mlst</title>
223
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M497.17,-240.25C492.67,-220.19 485.93,-190.18 481.06,-168.51"/>
224
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="483.83,-168.03 479.34,-160.83 478.36,-169.25 483.83,-168.03"/>
169
225
  </g>
170
226
  <!-- Prompt -->
171
- <g id="node13" class="node">
227
+ <g id="node16" class="node">
172
228
  <title>Prompt</title>
173
- <path fill="#7dd3fc" stroke="#334155" stroke-width="2" d="M395,-36C395,-36 217,-36 217,-36 211,-36 205,-30 205,-24 205,-24 205,-12 205,-12 205,-6 211,0 217,0 217,0 395,0 395,0 401,0 407,-6 407,-12 407,-12 407,-24 407,-24 407,-30 401,-36 395,-36"/>
174
- <text xml:space="preserve" text-anchor="middle" x="306" y="-20.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PromptBuilder</text>
175
- <text xml:space="preserve" text-anchor="middle" x="306" y="-8.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">MEMORY + SKILLS + LEARNING blocks</text>
229
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="2" d="M436.75,-44C436.75,-44 263.25,-44 263.25,-44 257.25,-44 251.25,-38 251.25,-32 251.25,-32 251.25,-12 251.25,-12 251.25,-6 257.25,0 263.25,0 263.25,0 436.75,0 436.75,0 442.75,0 448.75,-6 448.75,-12 448.75,-12 448.75,-32 448.75,-32 448.75,-38 442.75,-44 436.75,-44"/>
230
+ <text xml:space="preserve" text-anchor="middle" x="350" y="-30.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">PromptBuilder</text>
231
+ <text xml:space="preserve" text-anchor="middle" x="350" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">MEMORY + SKILLS + LEARNING</text>
232
+ <text xml:space="preserve" text-anchor="middle" x="350" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">+ KNOWN MISTAKES / KNOWN FIXES</text>
176
233
  </g>
177
234
  <!-- Rec&#45;&gt;Prompt -->
178
- <g id="edge10" class="edge">
235
+ <g id="edge13" class="edge">
179
236
  <title>Rec&#45;&gt;Prompt</title>
180
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M145.74,-104.53C178.26,-87.17 228.26,-60.49 263.76,-41.54"/>
181
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="264.98,-44.07 270.72,-37.83 262.34,-39.13 264.98,-44.07"/>
237
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M568.01,-122.12C547.17,-109.09 517.37,-91.29 490,-78 468.01,-67.32 443.39,-57.1 420.99,-48.43"/>
238
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="422.18,-45.89 413.71,-45.64 420.18,-51.11 422.18,-45.89"/>
182
239
  </g>
183
240
  <!-- Skv&#45;&gt;Prompt -->
184
- <g id="edge11" class="edge">
241
+ <g id="edge14" class="edge">
185
242
  <title>Skv&#45;&gt;Prompt</title>
186
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M359.97,-104.53C349.72,-88.28 334.3,-63.84 322.56,-45.24"/>
187
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="324.99,-43.84 318.35,-38.57 320.25,-46.83 324.99,-43.84"/>
243
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M243.71,-122.06C263.71,-103.42 295.73,-73.58 319.4,-51.52"/>
244
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="321.08,-53.78 325.02,-46.28 317.26,-49.69 321.08,-53.78"/>
188
245
  </g>
189
246
  <!-- Out&#45;&gt;Prompt -->
190
- <g id="edge12" class="edge">
247
+ <g id="edge15" class="edge">
191
248
  <title>Out&#45;&gt;Prompt</title>
192
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M252.86,-104.53C262.95,-88.28 278.14,-63.84 289.69,-45.24"/>
193
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="291.99,-46.85 293.84,-38.58 287.24,-43.89 291.99,-46.85"/>
249
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M134.3,-121.93C176.57,-102.54 245.03,-71.15 293.47,-48.93"/>
250
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="294.38,-51.59 300.49,-45.71 292.05,-46.5 294.38,-51.59"/>
194
251
  </g>
195
252
  <!-- Sesv&#45;&gt;Prompt -->
196
- <g id="edge13" class="edge">
253
+ <g id="edge16" class="edge">
197
254
  <title>Sesv&#45;&gt;Prompt</title>
198
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M463.77,-104.53C431.76,-87.17 382.53,-60.49 347.58,-41.54"/>
199
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="349.12,-39.19 340.76,-37.84 346.46,-44.12 349.12,-39.19"/>
255
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M350,-122.06C350,-104.3 350,-76.39 350,-54.71"/>
256
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="352.8,-54.91 350,-46.91 347.2,-54.91 352.8,-54.91"/>
257
+ </g>
258
+ <!-- Mlst&#45;&gt;Prompt -->
259
+ <g id="edge17" class="edge">
260
+ <title>Mlst&#45;&gt;Prompt</title>
261
+ <path fill="none" stroke="#fb7185" stroke-width="2" d="M456.29,-122.06C436.55,-103.66 405.1,-74.35 381.52,-52.38"/>
262
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="383.52,-50.41 375.76,-47 379.7,-54.51 383.52,-50.41"/>
263
+ <text xml:space="preserve" text-anchor="middle" x="449.98" y="-79.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">do NOT repeat</text>
264
+ </g>
265
+ <!-- ReVal&#45;&gt;Fmem -->
266
+ <g id="edge18" class="edge">
267
+ <title>ReVal&#45;&gt;Fmem</title>
268
+ <path fill="none" stroke="#fb7185" stroke-width="2" stroke-dasharray="5,2" d="M843.58,-386.42C836.24,-369.84 824.2,-347.26 808,-332 788.4,-313.53 762.84,-298.95 739.18,-288.09"/>
269
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="740.4,-285.57 731.95,-284.89 738.13,-290.69 740.4,-285.57"/>
270
+ <text xml:space="preserve" text-anchor="middle" x="880.36" y="-344.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">[UNVERIFIED yyyy&#45;mm&#45;dd]</text>
271
+ <text xml:space="preserve" text-anchor="middle" x="880.36" y="-333.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">prefix stale :fact</text>
200
272
  </g>
201
273
  </g>
202
274
  </svg>