incident: SFTPGo outage 2026-09-02 — CT299 tailscaled death + stale lxc-attach recovery

- New incident page documenting CT299 SFTPGo outage (02:18 AWST)
- Root cause: swap exhaustion (43Gi, 100%) killed tailscaled; 5 stale lxc-attach PIDs blocked pct start
- Resolution: killed PIDs 3037951/3334928/3352203/3402511/4004148, pct stop/start 299
- Updated current-state.md with Recent Changes (2026-09-02), bumped updated to 2026-09-04
- Updated log.md with incident entry
- Updated index.md last-updated date

No secrets written. Verified end-to-end: tailscale direct, SFTPGo WebAdmin HTTP 401, SFTP banner SSH-2.0-SFTPGo_2.7.0.
This commit is contained in:
Tony0410
2026-09-04 00:05:32 +08:00
parent 1d42c6bc83
commit 77250ea8c9
13 changed files with 746 additions and 507 deletions
+59
View File
@@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cron Jobs → Model Assignment — Agent Estate</title>
<style>
:root{--bg:#0e1116;--panel:#161b22;--panel2:#1c2129;--border:#2a313c;--text:#e6edf3;--muted:#9aa5b1;--accent:#4c9aff;--good:#3fb950;--warn:#d29922;--bad:#f85149;--smart:#a371f7;--paid:#58a6ff;--gpt:#f778ba;--flash:#f0883e;--none:#6b7684;}
*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:'Inter','Segoe UI',system-ui,sans-serif;line-height:1.45;padding:40px 20px}
.wrap{max-width:1050px;margin:0 auto}header{margin-bottom:24px}h1{font-size:1.7rem;font-weight:700}.sub{color:var(--muted);margin-top:6px;font-size:.92rem}
table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:10px;overflow:hidden;font-size:.85rem;margin-top:8px}
thead th{background:var(--panel2);text-align:left;padding:10px 12px;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}
tbody td{padding:9px 12px;border-bottom:1px solid var(--border);vertical-align:middle}tbody tr:last-child td{border-bottom:none}
.name{font-weight:600}.sched{font-family:monospace;font-size:.78rem;color:var(--muted)}
.badge{display:inline-flex;padding:3px 9px;border-radius:20px;font-size:.76rem;font-weight:600}
.b-smart{background:rgba(163,113,247,.15);color:#c9a7f9;border:1px solid rgba(163,113,247,.35)}
.b-paid{background:rgba(88,166,255,.14);color:#82c0ff;border:1px solid rgba(88,166,255,.35)}
.b-terra{background:rgba(247,120,184,.14);color:#f5a3cf;border:1px solid rgba(247,120,184,.35)}
.b-flash{background:rgba(240,136,62,.14);color:#ffc08a;border:1px solid rgba(240,136,62,.35)}
.b-none{background:rgba(107,118,132,.14);color:#b7c0cc;border:1px solid rgba(107,118,132,.35)}
.ok{color:var(--good)}.bad{color:var(--bad)}.paused{opacity:.55}
.note{background:rgba(210,153,34,.08);border:1px solid rgba(210,153,34,.35);border-radius:10px;padding:12px 16px;color:#e3c26a;font-size:.85rem;margin-top:16px}
footer{margin-top:22px;color:var(--muted);font-size:.78rem;text-align:center}
</style></head><body><div class="wrap">
<header><h1>⏱️ Cron Jobs → Model Assignment</h1>
<div class="sub">Live inventory of all 30 scheduled jobs and the model/provider each is pinned to · regenerated 2026-08-17</div></header>
<table><thead><tr><th>Job</th><th>Model</th><th>Schedule</th><th>Status</th></tr></thead><tbody>
<tr><td class="name">Daily Marketing Job Radar</td><td class="badge b-terra">gpt-5.6-terra</td><td class="sched">0 7 * * 1-5</td><td class="ok">ok</td></tr>
<tr><td class="name">Facebook Birthday Monthly Scrape</td><td class="badge b-flash">deepseek-v4-flash</td><td class="sched">0 9 1 * *</td><td class="ok">ok</td></tr>
<tr><td class="name">Facebook Birthday Weekly Sync</td><td class="badge b-flash">deepseek-v4-flash</td><td class="sched">0 3 * * 1</td><td class="ok">ok</td></tr>
<tr><td class="name">Mnemosyne Embedding Coverage</td><td class="badge b-paid">deepseek-paid-smart</td><td class="sched">0 */6 * * *</td><td class="ok">ok</td></tr>
<tr><td class="name">Wiki Audit — Nightly</td><td class="badge b-paid">deepseek-paid-smart</td><td class="sched">59 23 * * *</td><td class="ok">ok</td></tr>
<tr><td class="name">Tech &amp; AI Newsletter Digest</td><td class="badge b-smart">smart-route</td><td class="sched">0 7 * * *</td><td class="ok">ok</td></tr>
<tr><td class="name">FreshRSS Midday News Briefing</td><td class="badge b-smart">smart-route</td><td class="sched">0 12 * * *</td><td class="ok">ok</td></tr>
<tr><td class="name">Perth Restaurant &amp; Cafe Openings</td><td class="badge b-smart">smart-route</td><td class="sched">0 18 * * 4</td><td class="ok">ok</td></tr>
<tr><td class="name">AI Newsletter Curation (Patrick)</td><td class="badge b-smart">smart-route</td><td class="sched">0 10 * * 4</td><td class="ok">ok</td></tr>
<tr><td class="name">Weekend Adventure Planner</td><td class="badge b-smart">smart-route</td><td class="sched">0 8 * * 5</td><td class="ok">ok</td></tr>
<tr><td class="name">Uber Eats Monthly Spend Report</td><td class="badge b-smart">smart-route</td><td class="sched">0 2 1 * *</td><td class="ok">ok</td></tr>
<tr><td class="name">Important-mail monitor</td><td class="badge b-smart">smart-route</td><td class="sched">every 30m</td><td class="ok">ok</td></tr>
<tr><td class="name">Gmail Action Digest</td><td class="badge b-smart">smart-route</td><td class="sched">30 8 * * *</td><td class="ok">ok</td></tr>
<tr><td class="name">Mnemosyne Health Monitor</td><td class="badge b-smart">smart-route</td><td class="sched">0 */12 * * *</td><td class="ok">ok</td></tr>
<tr><td class="name">Political News Digest</td><td class="badge b-smart">smart-route</td><td class="sched">0 8 * * 1,4</td><td class="ok">ok</td></tr>
<tr><td class="name">GitHub Trending Radar</td><td class="badge b-smart">smart-route</td><td class="sched">0 9 * * 1</td><td class="ok">ok</td></tr>
<tr><td class="name">Weekly Review</td><td class="badge b-smart">smart-route</td><td class="sched">0 18 * * 0</td><td class="ok">ok</td></tr>
<tr><td class="name">Mosquito Tracker</td><td class="badge b-smart">smart-route</td><td class="sched">0 7,15,22 * * *</td><td class="ok">ok</td></tr>
<tr class="paused"><td class="name">AgentMail Rhino Inbox Poll</td><td class="badge b-smart">smart-route</td><td class="sched">* * * * *</td><td class="bad">paused</td></tr>
<tr><td class="name">Mnemosyne Auto-Consolidate</td><td class="badge b-none">no-agent script</td><td class="sched">every 30m</td><td class="ok">ok</td></tr>
<tr><td class="name">Mnemosyne DB Backup</td><td class="badge b-none">no model</td><td class="sched">0 3 * * 0</td><td class="ok">ok</td></tr>
<tr><td class="name">Mnemosyne Watchdog</td><td class="badge b-none">no-agent</td><td class="sched">*/15 * * * *</td><td class="ok">ok</td></tr>
<tr class="paused"><td class="name">Rhino AgentMail Inbox Watcher</td><td class="badge b-none">no-agent</td><td class="sched">every 5m</td><td class="bad">paused</td></tr>
<tr><td class="name">Daily Birthday Checker</td><td class="badge b-none">no model</td><td class="sched">30 7 * * *</td><td class="ok">ok</td></tr>
<tr><td class="name">Job Tracker Dashboard Refresh</td><td class="badge b-none">no-agent</td><td class="sched">0 */2 * * *</td><td class="ok">ok</td></tr>
<tr><td class="name">Evening Stand-Down Briefing</td><td class="badge b-none">no-agent</td><td class="sched">45 18 * * 1-5</td><td class="ok">ok</td></tr>
<tr><td class="name">🤚 Hermes Config Backup to Gitea</td><td class="badge b-none">no model</td><td class="sched">0 11 * * *</td><td class="ok">ok</td></tr>
<tr><td class="name">CT221 Miner Watchdog</td><td class="badge b-none">no-agent</td><td class="sched">every 15m</td><td class="ok">ok</td></tr>
<tr><td class="name">wiki-stocktake-maintenance</td><td class="badge b-none">no model</td><td class="sched">0 3 * * *</td><td class="ok">ok</td></tr>
<tr><td class="name">wiki-maintenance-0300</td><td class="badge b-none">no model (agent)</td><td class="sched">0 3 * * *</td><td class="ok">ok</td></tr>
</tbody></table>
<div class="note">⚠️ <b>Duplicate detected:</b> <code>wiki-stocktake-maintenance</code> and <code>wiki-maintenance-0300</code> both run at 03:00 daily — the maintenance fires twice. Consider pausing one.</div>
<footer>Agent Estate Wiki · regenerated 2026-08-17</footer>
</div></body></html>