pwn 0.5.783 → 0.5.784
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/Rakefile +19 -1
- data/bin/pwn_setup +1 -1
- data/build_gem.sh +1 -1
- data/documentation/Backup-Retention.md +27 -0
- data/documentation/Cron.md +64 -35
- data/documentation/How-PWN-Works.md +1 -1
- data/documentation/Installation.md +247 -6
- data/documentation/Persistence.md +1 -1
- data/documentation/Reinforcement-Learning.md +5 -6
- data/documentation/diagrams/cron-scheduling.svg +130 -128
- data/documentation/diagrams/dot/cron-scheduling.dot +3 -3
- data/etc/default_cron/session_cleanup.rb +1217 -10
- data/lib/pwn/ai/agent/extrospection.rb +6 -7
- data/lib/pwn/ai/agent/learning.rb +48 -7
- data/lib/pwn/ai/agent/policy.rb +5 -0
- data/lib/pwn/ai/agent/swarm.rb +31 -16
- data/lib/pwn/ai/router.rb +45 -2
- data/lib/pwn/cron.rb +120 -49
- data/lib/pwn/migrate.rb +292 -15
- data/lib/pwn/plugins/binary_parser.rb +5 -4
- data/lib/pwn/plugins/ghidra.rb +4 -3
- data/lib/pwn/plugins/log.rb +18 -2
- data/lib/pwn/plugins/repl/ai.rb +12 -1
- data/lib/pwn/plugins/repl/ai_console.rb +6 -2
- data/lib/pwn/plugins/repl/ai_swarm.rb +4 -4
- data/lib/pwn/sessions.rb +58 -16
- data/lib/pwn/setup.rb +9 -17
- data/lib/pwn/version.rb +1 -1
- data/scripts/build_gate.rb +58 -0
- data/spec/integration/build_gate_spec.rb +73 -0
- data/spec/integration/persistence_roundtrip_spec.rb +1 -7
- data/spec/lib/pwn/ai/agent/policy_spec.rb +27 -0
- data/spec/lib/pwn/ai/router_spec.rb +30 -2
- data/spec/lib/pwn/cron_spec.rb +113 -6
- data/spec/lib/pwn/migrate_spec.rb +160 -5
- data/spec/lib/pwn/plugins/log_spec.rb +7 -0
- data/spec/lib/pwn/plugins/repl/ai_console_spec.rb +16 -4
- data/spec/lib/pwn/plugins/repl/ai_swarm_spec.rb +11 -0
- data/spec/lib/pwn/redaction_spec.rb +13 -10
- data/spec/lib/pwn/session_cleanup_concurrency_spec.rb +201 -0
- data/spec/lib/pwn/session_cleanup_default_spec.rb +165 -2
- data/spec/lib/pwn/session_cleanup_legacy_spec.rb +101 -0
- data/spec/lib/pwn/session_cleanup_payload_spec.rb +335 -2
- data/spec/lib/pwn/session_cleanup_recovery_spec.rb +389 -0
- data/spec/lib/pwn/sessions_spec.rb +112 -0
- data/spec/lib/pwn/setup_spec.rb +3 -1
- data/spec/support/gate_failure_formatter.rb +14 -0
- data/third_party/pwn_rdoc.jsonl +15 -1
- metadata +14 -7
|
@@ -4,308 +4,310 @@
|
|
|
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="2020pt" height="1168pt"
|
|
8
|
+
viewBox="0.00 0.00 2020.00 1168.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 1124.5)">
|
|
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,-1124.5 1977.2,-1124.5 1977.2,43.2 -43.2,43.2"/>
|
|
12
|
+
<text xml:space="preserve" text-anchor="start" x="765.62" y="-1059.3" font-family="Helvetica,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="761.88" y="-1047.85" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">prompt · ruby · script → jobs.yml → worker → pwn-ai  ·  hygiene on · curriculum opt-in</text>
|
|
14
14
|
<g id="clust2" class="cluster">
|
|
15
15
|
<title>cluster_kinds</title>
|
|
16
|
-
<path fill="#022c22" stroke="#047857" stroke-width="2" d="
|
|
17
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
16
|
+
<path fill="#022c22" stroke="#047857" stroke-width="2" d="M831.5,-464.36C831.5,-464.36 985.75,-464.36 985.75,-464.36 991.75,-464.36 997.75,-470.36 997.75,-476.36 997.75,-476.36 997.75,-679.36 997.75,-679.36 997.75,-685.36 991.75,-691.36 985.75,-691.36 985.75,-691.36 831.5,-691.36 831.5,-691.36 825.5,-691.36 819.5,-685.36 819.5,-679.36 819.5,-679.36 819.5,-476.36 819.5,-476.36 819.5,-470.36 825.5,-464.36 831.5,-464.36"/>
|
|
17
|
+
<text xml:space="preserve" text-anchor="middle" x="908.62" y="-668.36" font-family="Helvetica,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="
|
|
22
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
21
|
+
<path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M1096.75,-282.36C1096.75,-282.36 1694.75,-282.36 1694.75,-282.36 1700.75,-282.36 1706.75,-288.36 1706.75,-294.36 1706.75,-294.36 1706.75,-718.36 1706.75,-718.36 1706.75,-724.36 1700.75,-730.36 1694.75,-730.36 1694.75,-730.36 1096.75,-730.36 1096.75,-730.36 1090.75,-730.36 1084.75,-724.36 1084.75,-718.36 1084.75,-718.36 1084.75,-294.36 1084.75,-294.36 1084.75,-288.36 1090.75,-282.36 1096.75,-282.36"/>
|
|
22
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.75" y="-707.36" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">Optional curriculum templates / preserved legacy jobs (NOT seeded)</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,-647.61C118,-647.61 27.75,-647.61 27.75,-647.61 21.75,-647.61 15.75,-641.61 15.75,-635.61 15.75,-635.61 15.75,-611.11 15.75,-611.11 15.75,-605.11 21.75,-599.11 27.75,-599.11 27.75,-599.11 118,-599.11 118,-599.11 124,-599.11 130,-605.11 130,-611.11 130,-611.11 130,-635.61 130,-635.61 130,-641.61 124,-647.61 118,-647.61"/>
|
|
28
|
+
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-633.16" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">cron_create</text>
|
|
29
|
+
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-619.66" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">name · schedule</text>
|
|
30
|
+
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-606.16" font-family="Helvetica,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="
|
|
36
|
-
<path fill="none" stroke="#334155" stroke-width="1.4" d="
|
|
37
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
35
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M444.75,-600.08C444.75,-601.89 418.98,-603.36 387.25,-603.36 355.52,-603.36 329.75,-601.89 329.75,-600.08 329.75,-600.08 329.75,-570.63 329.75,-570.63 329.75,-568.82 355.52,-567.36 387.25,-567.36 418.98,-567.36 444.75,-568.82 444.75,-570.63 444.75,-570.63 444.75,-600.08 444.75,-600.08"/>
|
|
36
|
+
<path fill="none" stroke="#334155" stroke-width="1.4" d="M444.75,-600.08C444.75,-598.28 418.98,-596.81 387.25,-596.81 355.52,-596.81 329.75,-598.28 329.75,-600.08"/>
|
|
37
|
+
<text xml:space="preserve" text-anchor="middle" x="387.25" y="-581.66" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/cron/jobs.yml</text>
|
|
38
38
|
</g>
|
|
39
39
|
<!-- Create->Jobs -->
|
|
40
40
|
<g id="edge3" class="edge">
|
|
41
41
|
<title>Create->Jobs</title>
|
|
42
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M130.
|
|
43
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
44
|
-
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-
|
|
42
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M130.44,-616.47C183.6,-610.01 263.18,-600.33 319.44,-593.48"/>
|
|
43
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="319.75,-596.27 327.36,-592.52 319.08,-590.71 319.75,-596.27"/>
|
|
44
|
+
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-610.83" font-family="Helvetica,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="
|
|
50
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
51
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
49
|
+
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M433.88,-675.36C433.88,-675.36 340.62,-675.36 340.62,-675.36 334.62,-675.36 328.62,-669.36 328.62,-663.36 328.62,-663.36 328.62,-651.36 328.62,-651.36 328.62,-645.36 334.62,-639.36 340.62,-639.36 340.62,-639.36 433.88,-639.36 433.88,-639.36 439.88,-639.36 445.88,-645.36 445.88,-651.36 445.88,-651.36 445.88,-663.36 445.88,-663.36 445.88,-669.36 439.88,-675.36 433.88,-675.36"/>
|
|
50
|
+
<text xml:space="preserve" text-anchor="middle" x="387.25" y="-660.41" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">per-job crontab</text>
|
|
51
|
+
<text xml:space="preserve" text-anchor="middle" x="387.25" y="-646.91" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">(install_crontab: true)</text>
|
|
52
52
|
</g>
|
|
53
53
|
<!-- Create->Crontab -->
|
|
54
54
|
<g id="edge5" class="edge">
|
|
55
55
|
<title>Create->Crontab</title>
|
|
56
|
-
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M130.
|
|
57
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="
|
|
58
|
-
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-
|
|
56
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M130.44,-629.51C183.19,-635.25 261.94,-643.83 318.12,-649.94"/>
|
|
57
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="317.77,-652.72 326.03,-650.8 318.38,-647.15 317.77,-652.72"/>
|
|
58
|
+
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-645.35" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">optional per-job</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,-550.36C133.75,-550.36 12,-550.36 12,-550.36 6,-550.36 0,-544.36 0,-538.36 0,-538.36 0,-526.36 0,-526.36 0,-520.36 6,-514.36 12,-514.36 12,-514.36 133.75,-514.36 133.75,-514.36 139.75,-514.36 145.75,-520.36 145.75,-526.36 145.75,-526.36 145.75,-538.36 145.75,-538.36 145.75,-544.36 139.75,-550.36 133.75,-550.36"/>
|
|
64
|
+
<text xml:space="preserve" text-anchor="middle" x="72.88" y="-535.41" font-family="Helvetica,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="-521.91" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">(pwn setup --migrate)</text>
|
|
66
66
|
</g>
|
|
67
67
|
<!-- Seed->Jobs -->
|
|
68
68
|
<g id="edge4" class="edge">
|
|
69
69
|
<title>Seed->Jobs</title>
|
|
70
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M146.
|
|
71
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
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,-544.65C198.64,-553.53 268.76,-565.42 319.68,-574.06"/>
|
|
71
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="318.98,-576.78 327.33,-575.36 319.91,-571.26 318.98,-576.78"/>
|
|
72
|
+
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-565.55" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">idempotent seed</text>
|
|
73
73
|
</g>
|
|
74
74
|
<!-- Worker -->
|
|
75
75
|
<g id="node5" class="node">
|
|
76
76
|
<title>Worker</title>
|
|
77
|
-
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="
|
|
78
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
79
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
80
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
81
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
77
|
+
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M454.5,-531.36C454.5,-531.36 320,-531.36 320,-531.36 314,-531.36 308,-525.36 308,-519.36 308,-519.36 308,-481.36 308,-481.36 308,-475.36 314,-469.36 320,-469.36 320,-469.36 454.5,-469.36 454.5,-469.36 460.5,-469.36 466.5,-475.36 466.5,-481.36 466.5,-481.36 466.5,-519.36 466.5,-519.36 466.5,-525.36 460.5,-531.36 454.5,-531.36"/>
|
|
78
|
+
<text xml:space="preserve" text-anchor="middle" x="387.25" y="-516.91" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">background worker</text>
|
|
79
|
+
<text xml:space="preserve" text-anchor="middle" x="387.25" y="-503.41" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">pwn setup starts/reuses</text>
|
|
80
|
+
<text xml:space="preserve" text-anchor="middle" x="387.25" y="-489.91" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">portable internal scheduler</text>
|
|
81
|
+
<text xml:space="preserve" text-anchor="middle" x="387.25" y="-476.41" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">housekeeping: never systemd</text>
|
|
82
82
|
</g>
|
|
83
83
|
<!-- Seed->Worker -->
|
|
84
84
|
<g id="edge6" class="edge">
|
|
85
85
|
<title>Seed->Worker</title>
|
|
86
|
-
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M130.08,-
|
|
87
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="297.
|
|
88
|
-
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-
|
|
86
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M130.08,-513.69C149.68,-508.06 171.97,-502.65 192.75,-499.86 226.84,-495.28 264.62,-494.44 297.68,-495.09"/>
|
|
87
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="297.29,-497.88 305.35,-495.27 297.42,-492.28 297.29,-497.88"/>
|
|
88
|
+
<text xml:space="preserve" text-anchor="middle" x="226.88" y="-501.81" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">pwn setup</text>
|
|
89
89
|
</g>
|
|
90
90
|
<!-- Runner -->
|
|
91
91
|
<g id="node6" class="node">
|
|
92
92
|
<title>Runner</title>
|
|
93
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
94
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
93
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M720.5,-580.36C720.5,-580.36 637.75,-580.36 637.75,-580.36 631.75,-580.36 625.75,-574.36 625.75,-568.36 625.75,-568.36 625.75,-556.36 625.75,-556.36 625.75,-550.36 631.75,-544.36 637.75,-544.36 637.75,-544.36 720.5,-544.36 720.5,-544.36 726.5,-544.36 732.5,-550.36 732.5,-556.36 732.5,-556.36 732.5,-568.36 732.5,-568.36 732.5,-574.36 726.5,-580.36 720.5,-580.36"/>
|
|
94
|
+
<text xml:space="preserve" text-anchor="middle" x="679.12" y="-558.66" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">PWN::Cron.run(id)</text>
|
|
95
95
|
</g>
|
|
96
96
|
<!-- Jobs->Runner -->
|
|
97
97
|
<g id="edge9" class="edge">
|
|
98
98
|
<title>Jobs->Runner</title>
|
|
99
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
100
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
101
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
99
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M445.17,-580.84C494.17,-576.95 564.78,-571.35 615.39,-567.33"/>
|
|
100
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="615.52,-570.13 623.28,-566.71 615.08,-564.55 615.52,-570.13"/>
|
|
101
|
+
<text xml:space="preserve" text-anchor="middle" x="546.12" y="-577.18" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">load job</text>
|
|
102
102
|
</g>
|
|
103
103
|
<!-- Crontab->Runner -->
|
|
104
104
|
<g id="edge7" class="edge">
|
|
105
105
|
<title>Crontab->Runner</title>
|
|
106
|
-
<path fill="none" stroke="#fb7185" stroke-width="2" d="
|
|
107
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="
|
|
108
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
106
|
+
<path fill="none" stroke="#fb7185" stroke-width="2" d="M446.19,-649.79C484.6,-643.67 535.68,-633.38 578.75,-617.36 600.31,-609.33 622.86,-597.2 641.02,-586.37"/>
|
|
107
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="642.12,-588.98 647.5,-582.43 639.21,-584.19 642.12,-588.98"/>
|
|
108
|
+
<text xml:space="preserve" text-anchor="middle" x="546.12" y="-637.66" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">fire on schedule</text>
|
|
109
109
|
</g>
|
|
110
110
|
<!-- Worker->Runner -->
|
|
111
111
|
<g id="edge8" class="edge">
|
|
112
112
|
<title>Worker->Runner</title>
|
|
113
|
-
<path fill="none" stroke="#fb7185" stroke-width="2" d="
|
|
114
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="
|
|
115
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
113
|
+
<path fill="none" stroke="#fb7185" stroke-width="2" d="M467.08,-517.22C513.44,-527.13 571.3,-539.51 614.7,-548.79"/>
|
|
114
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="614.04,-551.51 622.45,-550.45 615.21,-546.04 614.04,-551.51"/>
|
|
115
|
+
<text xml:space="preserve" text-anchor="middle" x="546.12" y="-542.48" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">poll jobs.yml</text>
|
|
116
116
|
</g>
|
|
117
117
|
<!-- Prompt -->
|
|
118
118
|
<g id="node7" class="node">
|
|
119
119
|
<title>Prompt</title>
|
|
120
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="
|
|
121
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
122
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
120
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M950.38,-580.36C950.38,-580.36 866.88,-580.36 866.88,-580.36 860.88,-580.36 854.88,-574.36 854.88,-568.36 854.88,-568.36 854.88,-556.36 854.88,-556.36 854.88,-550.36 860.88,-544.36 866.88,-544.36 866.88,-544.36 950.38,-544.36 950.38,-544.36 956.38,-544.36 962.38,-550.36 962.38,-556.36 962.38,-556.36 962.38,-568.36 962.38,-568.36 962.38,-574.36 956.38,-580.36 950.38,-580.36"/>
|
|
121
|
+
<text xml:space="preserve" text-anchor="middle" x="908.62" y="-565.41" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">:prompt</text>
|
|
122
|
+
<text xml:space="preserve" text-anchor="middle" x="908.62" y="-551.91" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">→ pwn-ai one-shot</text>
|
|
123
123
|
</g>
|
|
124
124
|
<!-- Runner->Prompt -->
|
|
125
125
|
<g id="edge10" class="edge">
|
|
126
126
|
<title>Runner->Prompt</title>
|
|
127
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="
|
|
128
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="
|
|
127
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M733.18,-562.36C766.54,-562.36 809.76,-562.36 844.83,-562.36"/>
|
|
128
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="844.52,-565.16 852.52,-562.36 844.52,-559.56 844.52,-565.16"/>
|
|
129
129
|
</g>
|
|
130
130
|
<!-- Ruby -->
|
|
131
131
|
<g id="node8" class="node">
|
|
132
132
|
<title>Ruby</title>
|
|
133
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="
|
|
134
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
135
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
133
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M977.75,-508.36C977.75,-508.36 839.5,-508.36 839.5,-508.36 833.5,-508.36 827.5,-502.36 827.5,-496.36 827.5,-496.36 827.5,-484.36 827.5,-484.36 827.5,-478.36 833.5,-472.36 839.5,-472.36 839.5,-472.36 977.75,-472.36 977.75,-472.36 983.75,-472.36 989.75,-478.36 989.75,-484.36 989.75,-484.36 989.75,-496.36 989.75,-496.36 989.75,-502.36 983.75,-508.36 977.75,-508.36"/>
|
|
134
|
+
<text xml:space="preserve" text-anchor="middle" x="908.62" y="-493.41" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">:ruby</text>
|
|
135
|
+
<text xml:space="preserve" text-anchor="middle" x="908.62" y="-479.91" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">→ TOPLEVEL_BINDING.eval</text>
|
|
136
136
|
</g>
|
|
137
137
|
<!-- Runner->Ruby -->
|
|
138
138
|
<g id="edge11" class="edge">
|
|
139
139
|
<title>Runner->Ruby</title>
|
|
140
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="
|
|
141
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="
|
|
140
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M733.18,-545.57C764.86,-535.54 805.43,-522.7 839.47,-511.93"/>
|
|
141
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="840.23,-514.62 847.01,-509.54 838.54,-509.28 840.23,-514.62"/>
|
|
142
142
|
</g>
|
|
143
143
|
<!-- Script -->
|
|
144
144
|
<g id="node9" class="node">
|
|
145
145
|
<title>Script</title>
|
|
146
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="
|
|
147
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
148
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
146
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M951.88,-652.36C951.88,-652.36 865.38,-652.36 865.38,-652.36 859.38,-652.36 853.38,-646.36 853.38,-640.36 853.38,-640.36 853.38,-628.36 853.38,-628.36 853.38,-622.36 859.38,-616.36 865.38,-616.36 865.38,-616.36 951.88,-616.36 951.88,-616.36 957.88,-616.36 963.88,-622.36 963.88,-628.36 963.88,-628.36 963.88,-640.36 963.88,-640.36 963.88,-646.36 957.88,-652.36 951.88,-652.36"/>
|
|
147
|
+
<text xml:space="preserve" text-anchor="middle" x="908.62" y="-637.41" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">:script</text>
|
|
148
|
+
<text xml:space="preserve" text-anchor="middle" x="908.62" y="-623.91" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">→ exec external file</text>
|
|
149
149
|
</g>
|
|
150
150
|
<!-- Runner->Script -->
|
|
151
151
|
<g id="edge12" class="edge">
|
|
152
152
|
<title>Runner->Script</title>
|
|
153
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="
|
|
154
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="
|
|
153
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M733.18,-579.15C766.2,-589.6 808.88,-603.1 843.76,-614.14"/>
|
|
154
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="842.56,-616.7 851.03,-616.44 844.25,-611.36 842.56,-616.7"/>
|
|
155
155
|
</g>
|
|
156
156
|
<!-- Log -->
|
|
157
157
|
<g id="node16" class="node">
|
|
158
158
|
<title>Log</title>
|
|
159
|
-
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="
|
|
160
|
-
<path fill="none" stroke="#334155" stroke-width="1.4" d="
|
|
161
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
162
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
159
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1934,-641.04C1934,-643.46 1904.36,-645.42 1867.88,-645.42 1831.39,-645.42 1801.75,-643.46 1801.75,-641.04 1801.75,-641.04 1801.75,-601.67 1801.75,-601.67 1801.75,-599.25 1831.39,-597.29 1867.88,-597.29 1904.36,-597.29 1934,-599.25 1934,-601.67 1934,-601.67 1934,-641.04 1934,-641.04"/>
|
|
160
|
+
<path fill="none" stroke="#334155" stroke-width="1.4" d="M1934,-641.04C1934,-638.63 1904.36,-636.67 1867.88,-636.67 1831.39,-636.67 1801.75,-638.63 1801.75,-641.04"/>
|
|
161
|
+
<text xml:space="preserve" text-anchor="middle" x="1867.88" y="-624.41" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/cron/log/<id>.log</text>
|
|
162
|
+
<text xml:space="preserve" text-anchor="middle" x="1867.88" y="-610.91" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">last_run · last_status</text>
|
|
163
163
|
</g>
|
|
164
164
|
<!-- Prompt->Log -->
|
|
165
165
|
<g id="edge18" class="edge">
|
|
166
166
|
<title>Prompt->Log</title>
|
|
167
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
168
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
167
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M962.91,-578C975.18,-583.2 987.59,-589.89 997.75,-598.36 1052.87,-644.29 1021.81,-699.9 1084.75,-734.36 1206,-800.73 1575,-776.16 1706.75,-734.36 1756.98,-718.42 1805.04,-680.41 1835.17,-652.86"/>
|
|
168
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1837.04,-654.94 1840.99,-647.45 1833.23,-650.84 1837.04,-654.94"/>
|
|
169
169
|
</g>
|
|
170
170
|
<!-- Practice -->
|
|
171
171
|
<g id="node10" class="node">
|
|
172
172
|
<title>Practice</title>
|
|
173
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
174
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
175
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
176
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
173
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1456.12,-690.61C1456.12,-690.61 1334.38,-690.61 1334.38,-690.61 1328.38,-690.61 1322.38,-684.61 1322.38,-678.61 1322.38,-678.61 1322.38,-654.11 1322.38,-654.11 1322.38,-648.11 1328.38,-642.11 1334.38,-642.11 1334.38,-642.11 1456.12,-642.11 1456.12,-642.11 1462.12,-642.11 1468.12,-648.11 1468.12,-654.11 1468.12,-654.11 1468.12,-678.61 1468.12,-678.61 1468.12,-684.61 1462.12,-690.61 1456.12,-690.61"/>
|
|
174
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-676.16" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">curriculum_practice_nightly</text>
|
|
175
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-662.66" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">0 3 * * *  OFF</text>
|
|
176
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-649.16" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Curriculum.practice(limit:3)</text>
|
|
177
177
|
</g>
|
|
178
178
|
<!-- Ruby->Practice -->
|
|
179
179
|
<g id="edge13" class="edge">
|
|
180
180
|
<title>Ruby->Practice</title>
|
|
181
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
182
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
181
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M966.15,-509C977.11,-513.82 988.16,-519.6 997.75,-526.36 1045.09,-559.71 1033.62,-596.16 1084.75,-623.36 1155.13,-660.8 1246.7,-669.42 1311.94,-669.98"/>
|
|
182
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1311.79,-672.78 1319.8,-670 1311.81,-667.18 1311.79,-672.78"/>
|
|
183
183
|
</g>
|
|
184
184
|
<!-- Offline -->
|
|
185
185
|
<g id="node11" class="node">
|
|
186
186
|
<title>Offline</title>
|
|
187
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
188
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
189
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
190
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
187
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1449.38,-605.61C1449.38,-605.61 1341.12,-605.61 1341.12,-605.61 1335.12,-605.61 1329.12,-599.61 1329.12,-593.61 1329.12,-593.61 1329.12,-569.11 1329.12,-569.11 1329.12,-563.11 1335.12,-557.11 1341.12,-557.11 1341.12,-557.11 1449.38,-557.11 1449.38,-557.11 1455.38,-557.11 1461.38,-563.11 1461.38,-569.11 1461.38,-569.11 1461.38,-593.61 1461.38,-593.61 1461.38,-599.61 1455.38,-605.61 1449.38,-605.61"/>
|
|
188
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-591.16" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">curriculum_offline_judge</text>
|
|
189
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-577.66" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">30 3 * * *  OFF</text>
|
|
190
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-564.16" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Curriculum.offline_judge</text>
|
|
191
191
|
</g>
|
|
192
192
|
<!-- Ruby->Offline -->
|
|
193
193
|
<g id="edge14" class="edge">
|
|
194
194
|
<title>Ruby->Offline</title>
|
|
195
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
196
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
195
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M968.3,-508.96C1002.08,-519.12 1045.48,-531.24 1084.75,-539.36 1163.89,-555.72 1255.77,-567.26 1318.74,-574.05"/>
|
|
196
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1318.39,-576.83 1326.64,-574.89 1318.98,-571.26 1318.39,-576.83"/>
|
|
197
197
|
</g>
|
|
198
198
|
<!-- Train -->
|
|
199
199
|
<g id="node12" class="node">
|
|
200
200
|
<title>Train</title>
|
|
201
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
202
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
203
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
204
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
205
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
201
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1455,-521.36C1455,-521.36 1335.5,-521.36 1335.5,-521.36 1329.5,-521.36 1323.5,-515.36 1323.5,-509.36 1323.5,-509.36 1323.5,-471.36 1323.5,-471.36 1323.5,-465.36 1329.5,-459.36 1335.5,-459.36 1335.5,-459.36 1455,-459.36 1455,-459.36 1461,-459.36 1467,-465.36 1467,-471.36 1467,-471.36 1467,-509.36 1467,-509.36 1467,-515.36 1461,-521.36 1455,-521.36"/>
|
|
202
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-506.91" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">curriculum_train_weekly</text>
|
|
203
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-493.41" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">0 4 * * 0  OFF</text>
|
|
204
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-479.91" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Curriculum.train_and_gate</text>
|
|
205
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-466.41" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">(dry_run / export_ready)</text>
|
|
206
206
|
</g>
|
|
207
207
|
<!-- Ruby->Train -->
|
|
208
208
|
<g id="edge15" class="edge">
|
|
209
209
|
<title>Ruby->Train</title>
|
|
210
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
211
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
210
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M990.19,-490.36C1079.7,-490.36 1223.38,-490.36 1313.11,-490.36"/>
|
|
211
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1313,-493.16 1321,-490.36 1313,-487.56 1313,-493.16"/>
|
|
212
212
|
</g>
|
|
213
213
|
<!-- MemGC -->
|
|
214
214
|
<g id="node13" class="node">
|
|
215
215
|
<title>MemGC</title>
|
|
216
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
217
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
218
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
219
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
216
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1458.75,-423.61C1458.75,-423.61 1331.75,-423.61 1331.75,-423.61 1325.75,-423.61 1319.75,-417.61 1319.75,-411.61 1319.75,-411.61 1319.75,-387.11 1319.75,-387.11 1319.75,-381.11 1325.75,-375.11 1331.75,-375.11 1331.75,-375.11 1458.75,-375.11 1458.75,-375.11 1464.75,-375.11 1470.75,-381.11 1470.75,-387.11 1470.75,-387.11 1470.75,-411.61 1470.75,-411.61 1470.75,-417.61 1464.75,-423.61 1458.75,-423.61"/>
|
|
217
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-409.16" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">learning_consolidate_nightly</text>
|
|
218
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-395.66" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">0 5 * * *  ON</text>
|
|
219
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-382.16" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Learning.consolidate</text>
|
|
220
220
|
</g>
|
|
221
221
|
<!-- Ruby->MemGC -->
|
|
222
222
|
<g id="edge16" class="edge">
|
|
223
223
|
<title>Ruby->MemGC</title>
|
|
224
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
225
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
224
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M968.3,-471.75C1002.08,-461.6 1045.48,-449.47 1084.75,-441.36 1160.11,-425.78 1247.02,-414.56 1309.53,-407.66"/>
|
|
225
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1309.74,-410.46 1317.39,-406.81 1309.13,-404.89 1309.74,-410.46"/>
|
|
226
226
|
</g>
|
|
227
227
|
<!-- Lean -->
|
|
228
228
|
<g id="node14" class="node">
|
|
229
229
|
<title>Lean</title>
|
|
230
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
231
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
232
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
233
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
230
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1450.5,-338.61C1450.5,-338.61 1340,-338.61 1340,-338.61 1334,-338.61 1328,-332.61 1328,-326.61 1328,-326.61 1328,-302.11 1328,-302.11 1328,-296.11 1334,-290.11 1340,-290.11 1340,-290.11 1450.5,-290.11 1450.5,-290.11 1456.5,-290.11 1462.5,-296.11 1462.5,-302.11 1462.5,-302.11 1462.5,-326.61 1462.5,-326.61 1462.5,-332.61 1456.5,-338.61 1450.5,-338.61"/>
|
|
231
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-324.16" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">pwn_stores_lean_nightly</text>
|
|
232
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-310.66" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">15 5 * * *  ON</text>
|
|
233
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-297.16" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Learning.gc_stores!</text>
|
|
234
234
|
</g>
|
|
235
235
|
<!-- Ruby->Lean -->
|
|
236
236
|
<g id="edge17" class="edge">
|
|
237
237
|
<title>Ruby->Lean</title>
|
|
238
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
239
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
238
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M927.04,-472.07C956.44,-442.47 1019.17,-384.6 1084.75,-357.36 1159.92,-326.12 1253.3,-316.73 1317.71,-314.31"/>
|
|
239
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1317.53,-317.11 1325.43,-314.05 1317.35,-311.52 1317.53,-317.11"/>
|
|
240
240
|
</g>
|
|
241
241
|
<!-- Cleanup -->
|
|
242
242
|
<g id="node15" class="node">
|
|
243
243
|
<title>Cleanup</title>
|
|
244
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
245
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
246
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
247
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
244
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1488.38,-254.11C1488.38,-254.11 1302.12,-254.11 1302.12,-254.11 1296.12,-254.11 1290.12,-248.11 1290.12,-242.11 1290.12,-242.11 1290.12,-190.61 1290.12,-190.61 1290.12,-184.61 1296.12,-178.61 1302.12,-178.61 1302.12,-178.61 1488.38,-178.61 1488.38,-178.61 1494.38,-178.61 1500.38,-184.61 1500.38,-190.61 1500.38,-190.61 1500.38,-242.11 1500.38,-242.11 1500.38,-248.11 1494.38,-254.11 1488.38,-254.11"/>
|
|
245
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-239.66" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">ONLY fresh default: session_cleanup</text>
|
|
246
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-226.16" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">45 3 * * * ON (first-slot guard)</text>
|
|
247
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-212.66" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">evidence-first maintenance</text>
|
|
248
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-199.16" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">then memory consolidation</text>
|
|
249
|
+
<text xml:space="preserve" text-anchor="middle" x="1395.25" y="-185.66" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">then learning / mistakes / policy retention</text>
|
|
248
250
|
</g>
|
|
249
251
|
<!-- Ruby->Cleanup -->
|
|
250
252
|
<g id="edge1" class="edge">
|
|
251
253
|
<title>Ruby->Cleanup</title>
|
|
252
|
-
<path fill="none" stroke="#94a3b8" stroke-width="1.3" d="
|
|
253
|
-
<polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="
|
|
254
|
+
<path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M918.66,-471.82C940.56,-429.04 1000.93,-323.25 1084.75,-273.36 1143.35,-238.47 1218.39,-224.05 1279.9,-218.44"/>
|
|
255
|
+
<polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="1279.95,-221.24 1287.69,-217.78 1279.48,-215.66 1279.95,-221.24"/>
|
|
254
256
|
</g>
|
|
255
257
|
<!-- Ruby->Log -->
|
|
256
258
|
<g id="edge19" class="edge">
|
|
257
259
|
<title>Ruby->Log</title>
|
|
258
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
259
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
260
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M916.55,-471.8C940.93,-407.54 1024.58,-196.54 1084.75,-160.36 1203.2,-89.12 1594.11,-80.24 1706.75,-160.36 1848.87,-261.44 1865.97,-498.03 1867.21,-586.85"/>
|
|
261
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1864.41,-586.74 1867.27,-594.72 1870.01,-586.7 1864.41,-586.74"/>
|
|
260
262
|
</g>
|
|
261
263
|
<!-- Script->Log -->
|
|
262
264
|
<g id="edge20" class="edge">
|
|
263
265
|
<title>Script->Log</title>
|
|
264
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
265
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
266
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M919.89,-652.94C938.67,-685.14 981.76,-751.14 1036.75,-785.36 1315.82,-958.97 1488.52,-1155.07 1754.75,-962.36 1854.35,-890.26 1867.03,-726.75 1867.6,-655.55"/>
|
|
267
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1870.4,-655.71 1867.61,-647.71 1864.8,-655.7 1870.4,-655.71"/>
|
|
266
268
|
</g>
|
|
267
269
|
<!-- Practice->Log -->
|
|
268
270
|
<g id="edge22" class="edge">
|
|
269
271
|
<title>Practice->Log</title>
|
|
270
|
-
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
271
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="
|
|
272
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1409.88,-691.31C1457.01,-774.35 1617.66,-1030.87 1754.75,-934.36 1846.56,-869.72 1863.58,-722.6 1866.47,-655.66"/>
|
|
273
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="1869.25,-656.07 1866.74,-647.98 1863.66,-655.87 1869.25,-656.07"/>
|
|
272
274
|
</g>
|
|
273
275
|
<!-- Offline->Log -->
|
|
274
276
|
<g id="edge23" class="edge">
|
|
275
277
|
<title>Offline->Log</title>
|
|
276
|
-
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
277
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="
|
|
278
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1461.98,-570.02C1532.34,-561.98 1642.49,-561.84 1706.75,-624.36 1797.83,-712.96 1656.8,-824.23 1753.75,-906.36 1838.04,-977.76 1860.01,-746.16 1865.31,-655.85"/>
|
|
279
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="1868.09,-656.17 1865.74,-648.03 1862.5,-655.86 1868.09,-656.17"/>
|
|
278
280
|
</g>
|
|
279
281
|
<!-- Train->Log -->
|
|
280
282
|
<g id="edge24" class="edge">
|
|
281
283
|
<title>Train->Log</title>
|
|
282
|
-
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
283
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="
|
|
284
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1467.62,-479.74C1538.45,-473.59 1645.11,-476.94 1706.75,-539.36 1809,-642.88 1643.72,-768.14 1753.75,-863.36 1825.05,-925.06 1854.45,-736.13 1863.53,-655.74"/>
|
|
285
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="1866.29,-656.26 1864.37,-648 1860.72,-655.65 1866.29,-656.26"/>
|
|
284
286
|
</g>
|
|
285
287
|
<!-- MemGC->Log -->
|
|
286
288
|
<g id="edge25" class="edge">
|
|
287
289
|
<title>MemGC->Log</title>
|
|
288
|
-
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
289
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="
|
|
290
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1471.35,-386.24C1542.2,-378.57 1646.31,-380.25 1706.75,-441.36 1826.1,-562.04 1626.56,-707.96 1753.75,-820.36 1812.65,-872.4 1848.06,-725.26 1861.12,-655.63"/>
|
|
291
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="1863.85,-656.27 1862.53,-647.89 1858.34,-655.26 1863.85,-656.27"/>
|
|
290
292
|
</g>
|
|
291
293
|
<!-- Lean->Log -->
|
|
292
294
|
<g id="edge26" class="edge">
|
|
293
295
|
<title>Lean->Log</title>
|
|
294
|
-
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
295
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="
|
|
296
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1463.17,-307.81C1530.25,-304.65 1633.77,-309.37 1706.75,-357.36 1791.01,-412.75 1837.9,-529.29 1856.84,-587.2"/>
|
|
297
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="1854.16,-587.99 1859.25,-594.76 1859.49,-586.29 1854.16,-587.99"/>
|
|
296
298
|
</g>
|
|
297
299
|
<!-- Cleanup->Log -->
|
|
298
300
|
<g id="edge2" class="edge">
|
|
299
301
|
<title>Cleanup->Log</title>
|
|
300
|
-
<path fill="none" stroke="#94a3b8" stroke-width="1.3" d="
|
|
301
|
-
<polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="
|
|
302
|
+
<path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M1500.71,-212.14C1566.09,-214.74 1648.65,-228.21 1706.75,-273.36 1810.11,-353.67 1849.19,-516.19 1861.73,-587.04"/>
|
|
303
|
+
<polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="1858.96,-587.45 1863.06,-594.87 1864.48,-586.51 1858.96,-587.45"/>
|
|
302
304
|
</g>
|
|
303
305
|
<!-- Log->Jobs -->
|
|
304
306
|
<g id="edge21" class="edge">
|
|
305
307
|
<title>Log->Jobs</title>
|
|
306
|
-
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
307
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="
|
|
308
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
308
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1863.59,-596.68C1850.17,-500.11 1795.88,-150.44 1706.75,-94.36 1472.77,52.87 1341.72,7.55 1084.75,-94.36 824.34,-197.63 825.79,-330.23 625.75,-526.36 604.43,-547.26 605.93,-562 578.75,-574.36 540.41,-591.79 493.17,-594.62 455.32,-593.05"/>
|
|
309
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="455.51,-590.26 447.37,-592.64 455.22,-595.85 455.51,-590.26"/>
|
|
310
|
+
<text xml:space="preserve" text-anchor="middle" x="908.62" y="-293.88" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">update status</text>
|
|
309
311
|
</g>
|
|
310
312
|
</g>
|
|
311
313
|
</svg>
|