pwn 0.5.639 → 0.5.643
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.
- checksums.yaml +4 -4
- data/Gemfile +3 -3
- data/README.md +1 -1
- data/documentation/Cron.md +10 -8
- data/documentation/Reinforcement-Learning.md +43 -21
- data/documentation/diagrams/cron-scheduling.svg +134 -93
- data/documentation/diagrams/dot/cron-scheduling.dot +9 -3
- data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +2 -2
- data/documentation/diagrams/dot/reinforcement-learning.dot +9 -3
- data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +103 -101
- data/documentation/diagrams/reinforcement-learning.svg +211 -166
- data/documentation/pwn-ai-Agent.md +12 -0
- data/lib/pwn/ai/agent/curriculum.rb +647 -56
- data/lib/pwn/ai/agent/learning.rb +87 -15
- data/lib/pwn/ai/agent/loop.rb +164 -13
- data/lib/pwn/ai/agent/metrics.rb +32 -13
- data/lib/pwn/ai/agent/mistakes.rb +139 -8
- data/lib/pwn/ai/agent/prompt_builder.rb +2 -2
- data/lib/pwn/ai/agent/registry.rb +13 -3
- data/lib/pwn/ai/agent/result.rb +19 -2
- data/lib/pwn/ai/agent/reward.rb +415 -42
- data/lib/pwn/ai/agent/tools/curriculum.rb +51 -0
- data/lib/pwn/ai/agent/tools/reward.rb +15 -4
- data/lib/pwn/ai/anthropic.rb +265 -4
- data/lib/pwn/ai/ollama.rb +274 -10
- data/lib/pwn/ai/open_ai.rb +307 -4
- data/lib/pwn/config.rb +137 -12
- data/lib/pwn/cron.rb +24 -2
- data/lib/pwn/memory.rb +13 -1
- data/lib/pwn/version.rb +1 -1
- data/spec/integration/persistence_roundtrip_spec.rb +6 -1
- data/spec/integration/reinforced_feedback_loop_spec.rb +144 -8
- data/spec/lib/pwn/ai/agent/mistakes_spec.rb +27 -0
- data/spec/lib/pwn/ai/agent/result_spec.rb +11 -0
- data/spec/lib/pwn/ai/agent/reward_spec.rb +89 -0
- data/spec/lib/pwn/ai/ollama_spec.rb +251 -0
- data/third_party/pwn_rdoc.jsonl +58 -7
- metadata +8 -8
|
@@ -4,204 +4,245 @@
|
|
|
4
4
|
<!-- Generated by graphviz version 14.1.2 (0)
|
|
5
5
|
-->
|
|
6
6
|
<!-- Title: PWN_Cron Pages: 1 -->
|
|
7
|
-
<svg width="
|
|
8
|
-
viewBox="0.00 0.00
|
|
9
|
-
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2
|
|
7
|
+
<svg width="1575pt" height="617pt"
|
|
8
|
+
viewBox="0.00 0.00 1575.00 617.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 574.2)">
|
|
10
10
|
<title>PWN_Cron</title>
|
|
11
|
-
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-
|
|
12
|
-
<text xml:space="preserve" text-anchor="start" x="
|
|
13
|
-
<text xml:space="preserve" text-anchor="start" x="
|
|
11
|
+
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-574.2 1531.7,-574.2 1531.7,43.2 -43.2,43.2"/>
|
|
12
|
+
<text xml:space="preserve" text-anchor="start" x="542.88" y="-509" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::Cron - Scheduled Autonomous Jobs</text>
|
|
13
|
+
<text xml:space="preserve" text-anchor="start" x="516.25" y="-497.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">prompt · ruby · script → jobs.yml → crontab → pwn-ai  ·  seeded self-improvement (Curriculum)</text>
|
|
14
14
|
<g id="clust2" class="cluster">
|
|
15
15
|
<title>cluster_kinds</title>
|
|
16
|
-
<path fill="#022c22" stroke="#047857" stroke-width="2" d="M844,-
|
|
17
|
-
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-
|
|
16
|
+
<path fill="#022c22" stroke="#047857" stroke-width="2" d="M844,-257C844,-257 998.25,-257 998.25,-257 1004.25,-257 1010.25,-263 1010.25,-269 1010.25,-269 1010.25,-472 1010.25,-472 1010.25,-478 1004.25,-484 998.25,-484 998.25,-484 844,-484 844,-484 838,-484 832,-478 832,-472 832,-472 832,-269 832,-269 832,-263 838,-257 844,-257"/>
|
|
17
|
+
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-461" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Job Kinds</text>
|
|
18
18
|
</g>
|
|
19
19
|
<g id="clust4" class="cluster">
|
|
20
20
|
<title>cluster_seed</title>
|
|
21
|
-
<path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M1101.25,-8C1101.25,-8
|
|
22
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
21
|
+
<path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M1101.25,-8C1101.25,-8 1476.5,-8 1476.5,-8 1482.5,-8 1488.5,-14 1488.5,-20 1488.5,-20 1488.5,-359 1488.5,-359 1488.5,-365 1482.5,-371 1476.5,-371 1476.5,-371 1101.25,-371 1101.25,-371 1095.25,-371 1089.25,-365 1089.25,-359 1089.25,-359 1089.25,-20 1089.25,-20 1089.25,-14 1095.25,-8 1101.25,-8"/>
|
|
22
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.88" y="-348" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Seeded Self-Improvement (install_defaults)</text>
|
|
23
23
|
</g>
|
|
24
24
|
<!-- Create -->
|
|
25
25
|
<g id="node1" class="node">
|
|
26
26
|
<title>Create</title>
|
|
27
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M118,-
|
|
28
|
-
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-
|
|
29
|
-
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-
|
|
30
|
-
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-
|
|
27
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M118,-413.25C118,-413.25 27.75,-413.25 27.75,-413.25 21.75,-413.25 15.75,-407.25 15.75,-401.25 15.75,-401.25 15.75,-376.75 15.75,-376.75 15.75,-370.75 21.75,-364.75 27.75,-364.75 27.75,-364.75 118,-364.75 118,-364.75 124,-364.75 130,-370.75 130,-376.75 130,-376.75 130,-401.25 130,-401.25 130,-407.25 124,-413.25 118,-413.25"/>
|
|
28
|
+
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-398.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">cron_create</text>
|
|
29
|
+
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-385.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">name · schedule</text>
|
|
30
|
+
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-371.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">prompt | ruby | script</text>
|
|
31
31
|
</g>
|
|
32
32
|
<!-- Jobs -->
|
|
33
33
|
<g id="node3" class="node">
|
|
34
34
|
<title>Jobs</title>
|
|
35
|
-
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M424.12,-
|
|
36
|
-
<path fill="none" stroke="#334155" stroke-width="1.4" d="M424.12,-
|
|
37
|
-
<text xml:space="preserve" text-anchor="middle" x="366.62" y="-
|
|
35
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M424.12,-321.73C424.12,-323.53 398.35,-325 366.62,-325 334.9,-325 309.12,-323.53 309.12,-321.73 309.12,-321.73 309.12,-292.27 309.12,-292.27 309.12,-290.47 334.9,-289 366.62,-289 398.35,-289 424.12,-290.47 424.12,-292.27 424.12,-292.27 424.12,-321.73 424.12,-321.73"/>
|
|
36
|
+
<path fill="none" stroke="#334155" stroke-width="1.4" d="M424.12,-321.73C424.12,-319.92 398.35,-318.45 366.62,-318.45 334.9,-318.45 309.12,-319.92 309.12,-321.73"/>
|
|
37
|
+
<text xml:space="preserve" text-anchor="middle" x="366.62" y="-303.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/cron/jobs.yml</text>
|
|
38
38
|
</g>
|
|
39
39
|
<!-- Create->Jobs -->
|
|
40
40
|
<g id="edge1" class="edge">
|
|
41
41
|
<title>Create->Jobs</title>
|
|
42
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M130.47,-
|
|
43
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="299.85,-
|
|
44
|
-
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-
|
|
42
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M130.47,-373.09C178.83,-359.5 248.46,-339.93 299.4,-325.61"/>
|
|
43
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="299.85,-328.4 306.79,-323.54 298.33,-323 299.85,-328.4"/>
|
|
44
|
+
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-357.29" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">write</text>
|
|
45
45
|
</g>
|
|
46
46
|
<!-- Crontab -->
|
|
47
47
|
<g id="node4" class="node">
|
|
48
48
|
<title>Crontab</title>
|
|
49
|
-
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M413.25,-
|
|
50
|
-
<text xml:space="preserve" text-anchor="middle" x="366.62" y="-
|
|
51
|
-
<text xml:space="preserve" text-anchor="middle" x="366.62" y="-
|
|
49
|
+
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M413.25,-420C413.25,-420 320,-420 320,-420 314,-420 308,-414 308,-408 308,-408 308,-396 308,-396 308,-390 314,-384 320,-384 320,-384 413.25,-384 413.25,-384 419.25,-384 425.25,-390 425.25,-396 425.25,-396 425.25,-408 425.25,-408 425.25,-414 419.25,-420 413.25,-420"/>
|
|
50
|
+
<text xml:space="preserve" text-anchor="middle" x="366.62" y="-405.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">system crontab</text>
|
|
51
|
+
<text xml:space="preserve" text-anchor="middle" x="366.62" y="-391.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(install_crontab: true)</text>
|
|
52
52
|
</g>
|
|
53
53
|
<!-- Create->Crontab -->
|
|
54
54
|
<g id="edge3" class="edge">
|
|
55
55
|
<title>Create->Crontab</title>
|
|
56
|
-
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M130.47,-
|
|
57
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="297.35,-
|
|
58
|
-
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-
|
|
56
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M130.47,-391.52C178.24,-393.65 246.77,-396.7 297.53,-398.97"/>
|
|
57
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="297.35,-401.76 305.47,-399.32 297.6,-396.17 297.35,-401.76"/>
|
|
58
|
+
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-399" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">append</text>
|
|
59
59
|
</g>
|
|
60
60
|
<!-- Seed -->
|
|
61
61
|
<g id="node2" class="node">
|
|
62
62
|
<title>Seed</title>
|
|
63
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M133.75,-
|
|
64
|
-
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-
|
|
65
|
-
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-
|
|
63
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M133.75,-316C133.75,-316 12,-316 12,-316 6,-316 0,-310 0,-304 0,-304 0,-292 0,-292 0,-286 6,-280 12,-280 12,-280 133.75,-280 133.75,-280 139.75,-280 145.75,-286 145.75,-292 145.75,-292 145.75,-304 145.75,-304 145.75,-310 139.75,-316 133.75,-316"/>
|
|
64
|
+
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-301.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">PWN::Cron.install_defaults</text>
|
|
65
|
+
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-287.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(pwn setup --migrate)</text>
|
|
66
66
|
</g>
|
|
67
67
|
<!-- Seed->Jobs -->
|
|
68
68
|
<g id="edge2" class="edge">
|
|
69
69
|
<title>Seed->Jobs</title>
|
|
70
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M146.33,-
|
|
71
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="298.5,-
|
|
72
|
-
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-
|
|
70
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M146.33,-296.19C181.04,-295.74 223.19,-295.79 261,-297.5 273.22,-298.05 286.22,-298.97 298.75,-300.02"/>
|
|
71
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="298.5,-302.81 306.71,-300.71 298.99,-297.23 298.5,-302.81"/>
|
|
72
|
+
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-299.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">idempotent seed</text>
|
|
73
73
|
</g>
|
|
74
74
|
<!-- Runner -->
|
|
75
75
|
<g id="node5" class="node">
|
|
76
76
|
<title>Runner</title>
|
|
77
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M679.25,-
|
|
78
|
-
<text xml:space="preserve" text-anchor="middle" x="637.88" y="-
|
|
77
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M679.25,-373C679.25,-373 596.5,-373 596.5,-373 590.5,-373 584.5,-367 584.5,-361 584.5,-361 584.5,-349 584.5,-349 584.5,-343 590.5,-337 596.5,-337 596.5,-337 679.25,-337 679.25,-337 685.25,-337 691.25,-343 691.25,-349 691.25,-349 691.25,-361 691.25,-361 691.25,-367 685.25,-373 679.25,-373"/>
|
|
78
|
+
<text xml:space="preserve" text-anchor="middle" x="637.88" y="-351.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">PWN::Cron.run(id)</text>
|
|
79
79
|
</g>
|
|
80
80
|
<!-- Jobs->Runner -->
|
|
81
81
|
<g id="edge5" class="edge">
|
|
82
82
|
<title>Jobs->Runner</title>
|
|
83
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M424.73,-
|
|
84
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="573.67,-
|
|
85
|
-
<text xml:space="preserve" text-anchor="middle" x="504.88" y="-
|
|
83
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M424.73,-317.18C468.59,-325 529.11,-335.79 574.29,-343.84"/>
|
|
84
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="573.67,-346.58 582.03,-345.22 574.65,-341.06 573.67,-346.58"/>
|
|
85
|
+
<text xml:space="preserve" text-anchor="middle" x="504.88" y="-338.66" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">load job</text>
|
|
86
86
|
</g>
|
|
87
87
|
<!-- Crontab->Runner -->
|
|
88
88
|
<g id="edge4" class="edge">
|
|
89
89
|
<title>Crontab->Runner</title>
|
|
90
|
-
<path fill="none" stroke="#fb7185" stroke-width="2" d="M425.72,-
|
|
91
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="573.53,-
|
|
92
|
-
<text xml:space="preserve" text-anchor="middle" x="504.88" y="-
|
|
90
|
+
<path fill="none" stroke="#fb7185" stroke-width="2" d="M425.72,-391.86C469.13,-384.28 528.45,-373.93 573.17,-366.12"/>
|
|
91
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="573.53,-368.9 580.93,-364.77 572.57,-363.38 573.53,-368.9"/>
|
|
92
|
+
<text xml:space="preserve" text-anchor="middle" x="504.88" y="-384.66" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">fire on schedule</text>
|
|
93
93
|
</g>
|
|
94
94
|
<!-- Prompt -->
|
|
95
95
|
<g id="node6" class="node">
|
|
96
96
|
<title>Prompt</title>
|
|
97
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M962.88,-
|
|
98
|
-
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-
|
|
99
|
-
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-
|
|
97
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M962.88,-373C962.88,-373 879.38,-373 879.38,-373 873.38,-373 867.38,-367 867.38,-361 867.38,-361 867.38,-349 867.38,-349 867.38,-343 873.38,-337 879.38,-337 879.38,-337 962.88,-337 962.88,-337 968.88,-337 974.88,-343 974.88,-349 974.88,-349 974.88,-361 974.88,-361 974.88,-367 968.88,-373 962.88,-373"/>
|
|
98
|
+
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-358.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">:prompt</text>
|
|
99
|
+
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-344.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">→ pwn-ai one-shot</text>
|
|
100
100
|
</g>
|
|
101
101
|
<!-- Runner->Prompt -->
|
|
102
102
|
<g id="edge6" class="edge">
|
|
103
103
|
<title>Runner->Prompt</title>
|
|
104
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M691.78,-
|
|
105
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="857.02,-
|
|
104
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M691.78,-355C738.77,-355 807.52,-355 857.29,-355"/>
|
|
105
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="857.02,-357.8 865.02,-355 857.02,-352.2 857.02,-357.8"/>
|
|
106
106
|
</g>
|
|
107
107
|
<!-- Ruby -->
|
|
108
108
|
<g id="node7" class="node">
|
|
109
109
|
<title>Ruby</title>
|
|
110
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M990.25,-
|
|
111
|
-
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-
|
|
112
|
-
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-
|
|
110
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M990.25,-301C990.25,-301 852,-301 852,-301 846,-301 840,-295 840,-289 840,-289 840,-277 840,-277 840,-271 846,-265 852,-265 852,-265 990.25,-265 990.25,-265 996.25,-265 1002.25,-271 1002.25,-277 1002.25,-277 1002.25,-289 1002.25,-289 1002.25,-295 996.25,-301 990.25,-301"/>
|
|
111
|
+
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-286.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">:ruby</text>
|
|
112
|
+
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-272.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">→ TOPLEVEL_BINDING.eval</text>
|
|
113
113
|
</g>
|
|
114
114
|
<!-- Runner->Ruby -->
|
|
115
115
|
<g id="edge7" class="edge">
|
|
116
116
|
<title>Runner->Ruby</title>
|
|
117
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M691.78,-
|
|
118
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="838.33,-
|
|
117
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M691.78,-341.46C732.86,-330.94 790.59,-316.16 837.72,-304.1"/>
|
|
118
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="838.33,-306.83 845.39,-302.13 836.95,-301.4 838.33,-306.83"/>
|
|
119
119
|
</g>
|
|
120
120
|
<!-- Script -->
|
|
121
121
|
<g id="node8" class="node">
|
|
122
122
|
<title>Script</title>
|
|
123
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M964.38,-
|
|
124
|
-
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-
|
|
125
|
-
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-
|
|
123
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M964.38,-445C964.38,-445 877.88,-445 877.88,-445 871.88,-445 865.88,-439 865.88,-433 865.88,-433 865.88,-421 865.88,-421 865.88,-415 871.88,-409 877.88,-409 877.88,-409 964.38,-409 964.38,-409 970.38,-409 976.38,-415 976.38,-421 976.38,-421 976.38,-433 976.38,-433 976.38,-439 970.38,-445 964.38,-445"/>
|
|
124
|
+
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-430.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">:script</text>
|
|
125
|
+
<text xml:space="preserve" text-anchor="middle" x="921.12" y="-416.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">→ exec external file</text>
|
|
126
126
|
</g>
|
|
127
127
|
<!-- Runner->Script -->
|
|
128
128
|
<g id="edge8" class="edge">
|
|
129
129
|
<title>Runner->Script</title>
|
|
130
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M691.9,-
|
|
131
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="855.13,-
|
|
130
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M691.9,-370.33C706.85,-374.55 723.16,-379.05 738.25,-383 777.17,-393.19 821.01,-403.82 855.89,-412.08"/>
|
|
131
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="855.13,-414.77 863.56,-413.89 856.42,-409.32 855.13,-414.77"/>
|
|
132
132
|
</g>
|
|
133
133
|
<!-- Log -->
|
|
134
|
-
<g id="
|
|
134
|
+
<g id="node13" class="node">
|
|
135
135
|
<title>Log</title>
|
|
136
|
-
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="
|
|
137
|
-
<path fill="none" stroke="#334155" stroke-width="1.4" d="
|
|
138
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
139
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
136
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1354.5,-446.69C1354.5,-449.1 1324.86,-451.06 1288.38,-451.06 1251.89,-451.06 1222.25,-449.1 1222.25,-446.69 1222.25,-446.69 1222.25,-407.31 1222.25,-407.31 1222.25,-404.9 1251.89,-402.94 1288.38,-402.94 1324.86,-402.94 1354.5,-404.9 1354.5,-407.31 1354.5,-407.31 1354.5,-446.69 1354.5,-446.69"/>
|
|
137
|
+
<path fill="none" stroke="#334155" stroke-width="1.4" d="M1354.5,-446.69C1354.5,-444.27 1324.86,-442.31 1288.38,-442.31 1251.89,-442.31 1222.25,-444.27 1222.25,-446.69"/>
|
|
138
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-430.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/cron/log/<id>.log</text>
|
|
139
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-416.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">last_run · last_status</text>
|
|
140
140
|
</g>
|
|
141
141
|
<!-- Prompt->Log -->
|
|
142
|
-
<g id="
|
|
142
|
+
<g id="edge13" class="edge">
|
|
143
143
|
<title>Prompt->Log</title>
|
|
144
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M975.
|
|
145
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
144
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M975.24,-365.47C1037.59,-377.76 1141.46,-398.24 1212.1,-412.16"/>
|
|
145
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1211.52,-414.9 1219.91,-413.7 1212.6,-409.41 1211.52,-414.9"/>
|
|
146
146
|
</g>
|
|
147
147
|
<!-- Practice -->
|
|
148
148
|
<g id="node9" class="node">
|
|
149
149
|
<title>Practice</title>
|
|
150
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
151
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
152
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
153
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
150
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1349.25,-331.25C1349.25,-331.25 1227.5,-331.25 1227.5,-331.25 1221.5,-331.25 1215.5,-325.25 1215.5,-319.25 1215.5,-319.25 1215.5,-294.75 1215.5,-294.75 1215.5,-288.75 1221.5,-282.75 1227.5,-282.75 1227.5,-282.75 1349.25,-282.75 1349.25,-282.75 1355.25,-282.75 1361.25,-288.75 1361.25,-294.75 1361.25,-294.75 1361.25,-319.25 1361.25,-319.25 1361.25,-325.25 1355.25,-331.25 1349.25,-331.25"/>
|
|
151
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-316.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">curriculum_practice_nightly</text>
|
|
152
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-303.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">0 3 * * *</text>
|
|
153
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-289.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Curriculum.practice(limit:3)</text>
|
|
154
154
|
</g>
|
|
155
155
|
<!-- Ruby->Practice -->
|
|
156
156
|
<g id="edge9" class="edge">
|
|
157
157
|
<title>Ruby->Practice</title>
|
|
158
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
159
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
158
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1002.73,-288.3C1062.83,-292.25 1144.63,-297.62 1205.12,-301.6"/>
|
|
159
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1204.89,-304.39 1213.06,-302.12 1205.26,-298.8 1204.89,-304.39"/>
|
|
160
160
|
</g>
|
|
161
|
-
<!--
|
|
161
|
+
<!-- Offline -->
|
|
162
162
|
<g id="node10" class="node">
|
|
163
|
+
<title>Offline</title>
|
|
164
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1342.5,-246.25C1342.5,-246.25 1234.25,-246.25 1234.25,-246.25 1228.25,-246.25 1222.25,-240.25 1222.25,-234.25 1222.25,-234.25 1222.25,-209.75 1222.25,-209.75 1222.25,-203.75 1228.25,-197.75 1234.25,-197.75 1234.25,-197.75 1342.5,-197.75 1342.5,-197.75 1348.5,-197.75 1354.5,-203.75 1354.5,-209.75 1354.5,-209.75 1354.5,-234.25 1354.5,-234.25 1354.5,-240.25 1348.5,-246.25 1342.5,-246.25"/>
|
|
165
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-231.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">curriculum_offline_judge</text>
|
|
166
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-218.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">30 3 * * *</text>
|
|
167
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-204.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Curriculum.offline_judge</text>
|
|
168
|
+
</g>
|
|
169
|
+
<!-- Ruby->Offline -->
|
|
170
|
+
<g id="edge10" class="edge">
|
|
171
|
+
<title>Ruby->Offline</title>
|
|
172
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1002.73,-269.54C1065.15,-259.11 1150.97,-244.78 1212.02,-234.58"/>
|
|
173
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1212.23,-237.39 1219.66,-233.31 1211.31,-231.86 1212.23,-237.39"/>
|
|
174
|
+
</g>
|
|
175
|
+
<!-- Train -->
|
|
176
|
+
<g id="node11" class="node">
|
|
163
177
|
<title>Train</title>
|
|
164
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
165
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
166
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
167
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
178
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1348.12,-162C1348.12,-162 1228.62,-162 1228.62,-162 1222.62,-162 1216.62,-156 1216.62,-150 1216.62,-150 1216.62,-112 1216.62,-112 1216.62,-106 1222.62,-100 1228.62,-100 1228.62,-100 1348.12,-100 1348.12,-100 1354.12,-100 1360.12,-106 1360.12,-112 1360.12,-112 1360.12,-150 1360.12,-150 1360.12,-156 1354.12,-162 1348.12,-162"/>
|
|
179
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-147.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">curriculum_train_weekly</text>
|
|
180
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-134.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">0 4 * * 0</text>
|
|
181
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-120.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Curriculum.train_and_gate</text>
|
|
182
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-107.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(dry_run / export_ready)</text>
|
|
168
183
|
</g>
|
|
169
184
|
<!-- Ruby->Train -->
|
|
170
|
-
<g id="
|
|
185
|
+
<g id="edge11" class="edge">
|
|
171
186
|
<title>Ruby->Train</title>
|
|
172
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
173
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
187
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M946.84,-264.34C978.33,-241.38 1035.2,-202.69 1089.25,-180 1126.44,-164.39 1169.73,-152.97 1206.34,-145.11"/>
|
|
188
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1206.8,-147.87 1214.06,-143.49 1205.65,-142.39 1206.8,-147.87"/>
|
|
189
|
+
</g>
|
|
190
|
+
<!-- MemGC -->
|
|
191
|
+
<g id="node12" class="node">
|
|
192
|
+
<title>MemGC</title>
|
|
193
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1351.88,-64.25C1351.88,-64.25 1224.88,-64.25 1224.88,-64.25 1218.88,-64.25 1212.88,-58.25 1212.88,-52.25 1212.88,-52.25 1212.88,-27.75 1212.88,-27.75 1212.88,-21.75 1218.88,-15.75 1224.88,-15.75 1224.88,-15.75 1351.88,-15.75 1351.88,-15.75 1357.88,-15.75 1363.88,-21.75 1363.88,-27.75 1363.88,-27.75 1363.88,-52.25 1363.88,-52.25 1363.88,-58.25 1357.88,-64.25 1351.88,-64.25"/>
|
|
194
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-49.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">learning_consolidate_nightly</text>
|
|
195
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-36.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">0 5 * * *</text>
|
|
196
|
+
<text xml:space="preserve" text-anchor="middle" x="1288.38" y="-22.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Learning.consolidate</text>
|
|
197
|
+
</g>
|
|
198
|
+
<!-- Ruby->MemGC -->
|
|
199
|
+
<g id="edge12" class="edge">
|
|
200
|
+
<title>Ruby->MemGC</title>
|
|
201
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M931.79,-264.48C953.83,-224.24 1011.93,-128.67 1089.25,-82 1123.24,-61.49 1165.79,-50.9 1202.73,-45.47"/>
|
|
202
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1203,-48.26 1210.54,-44.4 1202.24,-42.71 1203,-48.26"/>
|
|
174
203
|
</g>
|
|
175
204
|
<!-- Ruby->Log -->
|
|
176
|
-
<g id="
|
|
205
|
+
<g id="edge14" class="edge">
|
|
177
206
|
<title>Ruby->Log</title>
|
|
178
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
179
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
207
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M974.49,-301.68C986.54,-306.71 999.08,-312.56 1010.25,-319 1048.69,-341.14 1049.21,-360.9 1089.25,-380 1127.78,-398.39 1174.05,-409.88 1212.18,-416.9"/>
|
|
208
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1211.39,-419.6 1219.75,-418.25 1212.36,-414.09 1211.39,-419.6"/>
|
|
180
209
|
</g>
|
|
181
210
|
<!-- Script->Log -->
|
|
182
|
-
<g id="
|
|
211
|
+
<g id="edge15" class="edge">
|
|
183
212
|
<title>Script->Log</title>
|
|
184
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M976.
|
|
185
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
213
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M976.81,-427C1039.34,-427 1142.09,-427 1212.14,-427"/>
|
|
214
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1211.84,-429.8 1219.84,-427 1211.84,-424.2 1211.84,-429.8"/>
|
|
186
215
|
</g>
|
|
187
216
|
<!-- Practice->Log -->
|
|
188
|
-
<g id="
|
|
217
|
+
<g id="edge17" class="edge">
|
|
189
218
|
<title>Practice->Log</title>
|
|
190
|
-
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
191
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="
|
|
219
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1288.38,-331.84C1288.38,-352.07 1288.38,-372.31 1288.38,-392.54"/>
|
|
220
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="1285.58,-392.5 1288.38,-400.5 1291.18,-392.5 1285.58,-392.5"/>
|
|
221
|
+
</g>
|
|
222
|
+
<!-- Offline->Log -->
|
|
223
|
+
<g id="edge18" class="edge">
|
|
224
|
+
<title>Offline->Log</title>
|
|
225
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1221.6,-216.96C1164.23,-216.83 1085.32,-227.71 1049.75,-283 1030.76,-312.53 1030.76,-332.47 1049.75,-362 1083.44,-414.38 1155.55,-428.27 1211.74,-430.47"/>
|
|
226
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="1211.63,-433.27 1219.71,-430.69 1211.79,-427.67 1211.63,-433.27"/>
|
|
192
227
|
</g>
|
|
193
228
|
<!-- Train->Log -->
|
|
194
|
-
<g id="
|
|
229
|
+
<g id="edge19" class="edge">
|
|
195
230
|
<title>Train->Log</title>
|
|
196
|
-
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
197
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="
|
|
231
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1216.05,-128.08C1159.33,-130.27 1084.38,-144.17 1049.75,-198 1010.32,-259.3 1010.32,-300.7 1049.75,-362 1083.44,-414.38 1155.55,-428.27 1211.74,-430.47"/>
|
|
232
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="1211.63,-433.27 1219.71,-430.69 1211.79,-427.67 1211.63,-433.27"/>
|
|
233
|
+
</g>
|
|
234
|
+
<!-- MemGC->Log -->
|
|
235
|
+
<g id="edge20" class="edge">
|
|
236
|
+
<title>MemGC->Log</title>
|
|
237
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1212.46,-34.66C1156.11,-35.45 1083.43,-47.64 1049.75,-100 1018.25,-148.97 1018.25,-313.03 1049.75,-362 1083.44,-414.38 1155.55,-428.27 1211.74,-430.47"/>
|
|
238
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="1211.63,-433.27 1219.71,-430.69 1211.79,-427.67 1211.63,-433.27"/>
|
|
198
239
|
</g>
|
|
199
240
|
<!-- Log->Jobs -->
|
|
200
|
-
<g id="
|
|
241
|
+
<g id="edge16" class="edge">
|
|
201
242
|
<title>Log->Jobs</title>
|
|
202
|
-
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
203
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="434.99,-
|
|
204
|
-
<text xml:space="preserve" text-anchor="middle" x="765.62" y="-
|
|
243
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1221.77,-424.28C1180.35,-419.64 1127.61,-408.1 1089.25,-380 1034.09,-339.6 1069.73,-281.72 1010.25,-248 825.42,-143.21 748.48,-293.93 537.5,-319 503.58,-323.03 465.67,-320.98 434.28,-317.51"/>
|
|
244
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="434.99,-314.78 426.72,-316.63 434.34,-320.34 434.99,-314.78"/>
|
|
245
|
+
<text xml:space="preserve" text-anchor="middle" x="765.62" y="-256.44" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">update status</text>
|
|
205
246
|
</g>
|
|
206
247
|
</g>
|
|
207
248
|
</svg>
|
|
@@ -28,12 +28,14 @@ digraph "PWN_Cron" {
|
|
|
28
28
|
{rank=same; Prompt; Ruby; Script}
|
|
29
29
|
|
|
30
30
|
subgraph cluster_seed {
|
|
31
|
-
label="Seeded Self-Improvement"; fontcolor="#ddd6fe"; style=rounded;
|
|
31
|
+
label="Seeded Self-Improvement (install_defaults)"; fontcolor="#ddd6fe"; style=rounded;
|
|
32
32
|
color="#6d28d9"; bgcolor="#2e1065"; penwidth=2;
|
|
33
33
|
Practice [label="curriculum_practice_nightly\n0 3 * * *\nCurriculum.practice(limit:3)", fillcolor="#c4b5fd"];
|
|
34
|
-
|
|
34
|
+
Offline [label="curriculum_offline_judge\n30 3 * * *\nCurriculum.offline_judge", fillcolor="#c4b5fd"];
|
|
35
|
+
Train [label="curriculum_train_weekly\n0 4 * * 0\nCurriculum.train_and_gate\n(dry_run / export_ready)", fillcolor="#c4b5fd"];
|
|
36
|
+
MemGC [label="learning_consolidate_nightly\n0 5 * * *\nLearning.consolidate", fillcolor="#c4b5fd"];
|
|
35
37
|
}
|
|
36
|
-
{rank=same; Practice; Train}
|
|
38
|
+
{rank=same; Practice; Offline; Train; MemGC}
|
|
37
39
|
|
|
38
40
|
Log [label="~/.pwn/cron/log/<id>.log\nlast_run · last_status", shape=cylinder, fillcolor="#fcd34d"];
|
|
39
41
|
|
|
@@ -46,11 +48,15 @@ digraph "PWN_Cron" {
|
|
|
46
48
|
Runner -> Ruby [color="#34d399"];
|
|
47
49
|
Runner -> Script [color="#34d399"];
|
|
48
50
|
Ruby -> Practice [color="#a78bfa"];
|
|
51
|
+
Ruby -> Offline [color="#a78bfa"];
|
|
49
52
|
Ruby -> Train [color="#a78bfa"];
|
|
53
|
+
Ruby -> MemGC [color="#a78bfa"];
|
|
50
54
|
Prompt -> Log [color="#f59e0b"];
|
|
51
55
|
Ruby -> Log [color="#f59e0b"];
|
|
52
56
|
Script -> Log [color="#f59e0b"];
|
|
53
57
|
Log -> Jobs [label="update status", style=dashed, color="#fbbf24", constraint=false];
|
|
54
58
|
Practice -> Log [style=dashed, color="#fbbf24", constraint=false];
|
|
59
|
+
Offline -> Log [style=dashed, color="#fbbf24", constraint=false];
|
|
55
60
|
Train -> Log [style=dashed, color="#fbbf24", constraint=false];
|
|
61
|
+
MemGC -> Log [style=dashed, color="#fbbf24", constraint=false];
|
|
56
62
|
}
|
|
@@ -37,8 +37,8 @@ Escalate [label="escalate\n≥N fails → Swarm hint", fillcolor="#c4b5fd
|
|
|
37
37
|
Learning [label="Learning\nnote_outcome · reflect\nexemplars_for · export_finetune\nfact_check_local_final", fillcolor="#6ee7b7"];
|
|
38
38
|
Mistakes [label="Mistakes\nrecord · resolve\nguard · correction_hint\n[REPEATING] · [REGRESSED]", fillcolor="#6ee7b7", penwidth=2];
|
|
39
39
|
ReflectT [label="Reflect\nteacher-student\n(reflect_engine)", fillcolor="#6ee7b7", penwidth=2];
|
|
40
|
-
Reward [label="Reward\njudge (ORM) · prm (PRM)\nsentinel · semantic_ok", fillcolor="#6ee7b7", penwidth=2];
|
|
41
|
-
Curric [label="Curriculum\npractice ·
|
|
40
|
+
Reward [label="Reward\njudge (ORM) · prm (PRM)\nsentinel ring · semantic_ok\nexport_dpo ≤40%/src", fillcolor="#6ee7b7", penwidth=2];
|
|
41
|
+
Curric [label="Curriculum\npractice · offline_judge\ncounterfactual · critic\nhindsight · train_and_gate", fillcolor="#6ee7b7", penwidth=2];
|
|
42
42
|
}
|
|
43
43
|
subgraph cluster_extro {
|
|
44
44
|
label="EXTROSPECTION (world)"; fontcolor="#fde68a";
|
|
@@ -21,7 +21,7 @@ digraph "PWN_Reinforcement_Learning" {
|
|
|
21
21
|
style=rounded; color="#6d28d9"; bgcolor="#2e1065"; penwidth=2;
|
|
22
22
|
R1 [label="R1 judge (ORM)\nscore · verdict · rationale", fillcolor="#c4b5fd", penwidth=2];
|
|
23
23
|
R2 [label="R2 prm (PRM)\nper-step +1/0/−1", fillcolor="#c4b5fd"];
|
|
24
|
-
R3 [label="R3 sentinel\nproxy ≠ judge ≠ (1−corr)", fillcolor="#c4b5fd"];
|
|
24
|
+
R3 [label="R3 sentinel (ring N=40)\nproxy ≠ judge ≠ (1−corr)\n→ proxy_distrust haircut", fillcolor="#c4b5fd"];
|
|
25
25
|
R4 [label="R4 semantic_ok\ngrep exit 1 ≠ failure", fillcolor="#c4b5fd"];
|
|
26
26
|
E3 [label="E3 verify_as_reward\nextro_verify caps/floors judge", fillcolor="#c4b5fd"];
|
|
27
27
|
}
|
|
@@ -43,7 +43,7 @@ digraph "PWN_Reinforcement_Learning" {
|
|
|
43
43
|
subgraph cluster_weight {
|
|
44
44
|
label="Tier 5 · Weight Loop"; fontcolor="#fecaca";
|
|
45
45
|
style=rounded; color="#b91c1c"; bgcolor="#450a0a"; penwidth=2;
|
|
46
|
-
W1 [label="W1 preference ledger\n(prompt, rejected, chosen)\n5 free sources", fillcolor="#fda4af"];
|
|
46
|
+
W1 [label="W1 preference ledger\n(prompt, rejected, chosen)\n5 free sources\nexport_dpo ≤40%/source", fillcolor="#fda4af"];
|
|
47
47
|
W2 [label="W2 train_and_gate\nSFT+DPO → LoRA vN+1\nreplay Mistakes.top vN vs vN+1\npromote iff resolved(N+1) > (N)", fillcolor="#fda4af", penwidth=2];
|
|
48
48
|
W3 [label="W3 calibrate\np(success) vs actual → Brier", fillcolor="#fda4af"];
|
|
49
49
|
}
|
|
@@ -94,9 +94,15 @@ digraph "PWN_Reinforcement_Learning" {
|
|
|
94
94
|
W3 -> Loop [label="calibration", style=dashed, color="#fbbf24", constraint=false];
|
|
95
95
|
|
|
96
96
|
/* cron seeds */
|
|
97
|
-
Cron [label="⏱ PWN::Cron.install_defaults\
|
|
97
|
+
Cron [label="⏱ PWN::Cron.install_defaults\npractice · offline_judge\ntrain dry_run · consolidate", fillcolor="#7dd3fc"];
|
|
98
|
+
OJ [label="P3 offline_judge\nORM/PRM + W3 cal from PLAN", fillcolor="#6ee7b7"];
|
|
99
|
+
MemGC [label="M1/M3 Learning.consolidate\nnightly memory GC", fillcolor="#6ee7b7"];
|
|
98
100
|
Cron -> S1 [label="0 3 * * *", color="#38bdf8", constraint=false];
|
|
101
|
+
Cron -> OJ [label="30 3 * * *", color="#38bdf8", constraint=false];
|
|
99
102
|
Cron -> W2 [label="0 4 * * 0", color="#38bdf8", constraint=false];
|
|
103
|
+
Cron -> MemGC [label="0 5 * * *", color="#38bdf8", constraint=false];
|
|
104
|
+
OJ -> R1 [label="backfill", style=dashed, color="#a78bfa", constraint=false];
|
|
105
|
+
OJ -> W3 [label="p(success)", style=dashed, color="#fbbf24", constraint=false];
|
|
100
106
|
|
|
101
107
|
Ollama -> Loop [label="promoted vN+1\n(next session)", style=dashed, color="#fb7185", constraint=false, penwidth=2];
|
|
102
108
|
}
|