    rel=pg.get("path")
    if not isinstance(rel, str):
        continue
    fp=root / rel
    if not fp.exists():
        missing.append(str(fp))

print("root:", root)
print("missing_count:", len(missing))
for m in missing[:12]:
    print("MISSING:", m)
PY

set -euo pipefail
echo "=== Searching for index.md (shallow) ==="
for base in /Eden /Eden/WEB /Eden/WEB/eden-empire /Eden/SITES /Eden/SITE /Eden/CONTENT /Eden/CONTENT/eden-empire /Eden/REPOS /Eden/REPO /Eden/DATA; do   [ -d "$base" ] || continue;   hit="$(find "$base" -maxdepth 6 -type f -name index.md 2>/dev/null | head -n 5 || true)";   if [ -n "$hit" ]; then     echo "FOUND under: $base";     echo "$hit";   fi; done
echo
echo "=== Also search for pricing/index.md (shallow) ==="
for base in /Eden /Eden/WEB /Eden/SITES /Eden/CONTENT /Eden/REPOS; do   [ -d "$base" ] || continue;   hit="$(find "$base" -maxdepth 8 -type f -path '*/pricing/index.md' 2>/dev/null | head -n 5 || true)";   if [ -n "$hit" ]; then     echo "FOUND under: $base";     echo "$hit";   fi; done
set -euo pipefail
MANIFEST="/Eden/WEB/eden-empire/eden_empire_manifest.json"
STAMP="$(date +%Y%m%d-%H%M%S)"
cp -a "$MANIFEST" "/tmp/eden_empire_manifest.bak.$STAMP.json"
python3 - <<'PY'
import json
from pathlib import Path

p=Path("/Eden/WEB/eden-empire/eden_empire_manifest.json")
d=json.loads(p.read_text())
d["root"]="/Eden/WEB/eden-empire"
p.write_text(json.dumps(d, indent=2, sort_keys=True) + "\n")
print("OK root =", d["root"])
print("keys =", sorted(d.keys()))
PY

set -euo pipefail
python3 - <<'PY'
import json
from pathlib import Path

d=json.load(open("/Eden/WEB/eden-empire/eden_empire_manifest.json"))
root=Path(d["root"])
missing=[]

for pg in d.get("pages", []):
    rel=pg.get("path")
    if not isinstance(rel, str):
        continue
    fp = root / rel.lstrip("/")   # strips leading slash safely
    if not fp.exists():
        missing.append(str(fp))

print("root:", root)
print("missing_count:", len(missing))
for m in missing[:20]:
    print("MISSING:", m)
PY

set -euo pipefail
/usr/bin/python3 /Eden/CORE/eden_empire_site_loader.py
set -euo pipefail
# 1) Backup current loader
sudo cp -a /Eden/CORE/eden_empire_site_loader.py "/Eden/CORE/eden_empire_site_loader.py.bak.$(date +%Y%m%d-%H%M%S)"
# 2) Overwrite with a safer loader that supports both `path` and `md_path`
sudo tee /Eden/CORE/eden_empire_site_loader.py >/dev/null <<'PY'
#!/usr/bin/env python3
import json, sqlite3, re
from pathlib import Path
from datetime import datetime

MANIFEST = Path("/Eden/WEB/eden-empire/eden_empire_manifest.json")
DB = Path("/Eden/DATA/eden_empire_site.db")

FRONTMATTER_RE = re.compile(r"^---\s*\n(.*?)\n---\s*\n(.*)$", re.DOTALL)

def ensure_schema(conn: sqlite3.Connection):
    conn.execute("""
    CREATE TABLE IF NOT EXISTS pages (
      route TEXT PRIMARY KEY,
      title TEXT NOT NULL,
      md_path TEXT NOT NULL,
      body_md TEXT NOT NULL,
      updated_at TEXT NOT NULL
    )
    """)
    conn.execute("CREATE INDEX IF NOT EXISTS idx_pages_updated ON pages(updated_at)")
    conn.commit()

def parse_frontmatter(md: str):
    title = ""
    route = ""
    body = md

    m = FRONTMATTER_RE.match(md)
    if not m:
        return title, route, body

    fm_block = m.group(1)
    body = m.group(2)

    for line in fm_block.splitlines():
        line = line.strip()
        if not line or line.startswith("#") or ":" not in line:
            continue
        k, v = line.split(":", 1)
        k = k.strip()
        v = v.strip().strip('"').strip("'")
        if k == "title":
            title = v
        elif k == "route":
            route = v

    return title, route, md  # keep full md (including frontmatter) in DB

def main():
    if not MANIFEST.exists():
        raise SystemExit(f"Manifest missing: {MANIFEST}")

    data = json.loads(MANIFEST.read_text(encoding="utf-8"))
    root_val = data.get("root")
    if not isinstance(root_val, str) or not root_val.strip():
        raise SystemExit("Manifest missing required string key: root")

    root = Path(root_val)
    pages = data.get("pages")
    if not isinstance(pages, list):
        raise SystemExit("Manifest key 'pages' must be a list")

    DB.parent.mkdir(parents=True, exist_ok=True)
    conn = sqlite3.connect(str(DB))
    try:
        ensure_schema(conn)
        now = datetime.now().isoformat(sep=" ", timespec="seconds")

        for p in pages:
            if not isinstance(p, dict):
                continue

            manifest_route = p.get("route")
            if not isinstance(manifest_route, str) or not manifest_route:
                continue

            rel = p.get("path")
            if not isinstance(rel, str) or not rel:
                rel = p.get("md_path")
            if not isinstance(rel, str) or not rel:
                raise SystemExit(f"Page missing path/md_path for route={manifest_route}")

            rel = rel.lstrip("/")  # CRITICAL FIX: prevent absolute-path override
            md_path = root / rel

            if not md_path.exists():
                raise SystemExit(f"Missing page file: {md_path}")

            raw = md_path.read_text(encoding="utf-8", errors="ignore")
            title, fm_route, full_md = parse_frontmatter(raw)

            if not title:
                title = p.get("title") if isinstance(p.get("title"), str) and p.get("title") else manifest_route

            conn.execute("""
              INSERT INTO pages(route, title, md_path, body_md, updated_at)
              VALUES(?,?,?,?,?)
              ON CONFLICT(route) DO UPDATE SET
                title=excluded.title,
                md_path=excluded.md_path,
                body_md=excluded.body_md,
                updated_at=excluded.updated_at
            """, (manifest_route, title, str(md_path), full_md, now))

        conn.commit()
        print(f"✅ Re-ingested {len([x for x in pages if isinstance(x, dict)])} pages into {DB}")
    finally:
        conn.close()

if __name__ == "__main__":
    main()
PY

# 3) Make sure it still parses
python3 -m py_compile /Eden/CORE/eden_empire_site_loader.py
echo "OK: loader patched + syntax clean"
set -euo pipefail
GOOD=""
for f in $(ls -1t /Eden/CORE/eden_empire_site_loader.py.bak.* 2>/dev/null); do   if python3 -m py_compile "$f" >/dev/null 2>&1; then     GOOD="$f";     break;   fi; done
[ -n "$GOOD" ] || { echo "No compiling backup found."; exit 1; }
sudo cp -a "$GOOD" /Eden/CORE/eden_empire_site_loader.py
echo "OK: restored from $GOOD"
python3 -m py_compile /Eden/CORE/eden_empire_site_loader.py
echo "OK: loader compiles"
set -euo pipefail
sudo python3 - <<'PY'
from pathlib import Path
import re

p = Path("/Eden/CORE/eden_empire_site_loader.py")
s = p.read_text(encoding="utf-8", errors="ignore")

# Patch the line that builds md_path so it supports both "path" and "md_path",
# and strips leading "/" so root joining works.
pattern = r'(^[ \t]*)md_path\s*=\s*root\s*/\s*p\["path"\]\s*$'
pattern2 = r'(^[ \t]*)md_path\s*=\s*root\s*/\s*p\["md_path"\]\s*$'
repl = r'\1rel = (p.get("path") or p.get("md_path") or "")\n\1md_path = root / rel.lstrip("/")'

if re.search(pattern, s, flags=re.M):
    s = re.sub(pattern, repl, s, count=1, flags=re.M)
elif re.search(pattern2, s, flags=re.M):
    s = re.sub(pattern2, repl, s, count=1, flags=re.M)
else:
    raise SystemExit("Did not find md_path assignment line to patch.")

p.write_text(s, encoding="utf-8")
print("OK: patched loader (path/md_path + lstrip)")
PY

python3 -m py_compile /Eden/CORE/eden_empire_site_loader.py
echo "OK: loader compiles after patch"
set -euo pipefail
# Run loader but capture output to a file (prevents terminal spam/crash)
python3 /Eden/CORE/eden_empire_site_loader.py >/tmp/eden_empire_ingest.log 2>&1 || true
echo "=== last 60 lines of loader log ==="
tail -n 60 /tmp/eden_empire_ingest.log
set -euo pipefail
DB="/Eden/DATA/eden_empire_site.db"
echo "=== perms: db + directory ==="
ls -lah "$DB" /Eden/DATA
echo
echo "=== mount flags for /Eden and /Eden/DATA ==="
findmnt -no TARGET,FSTYPE,OPTIONS /Eden /Eden/DATA 2>/dev/null || true
set -euo pipefail
DB="/Eden/DATA/eden_empire_site.db"
sudo chown james-whalen:james-whalen "$DB"
sudo chmod 664 "$DB"
ls -lah "$DB"
set -euo pipefail
DB="/Eden/DATA/eden_empire_site.db"
# show any sqlite sidecars
ls -lah /Eden/DATA | egrep -n "eden_empire_site\.db(\-|$)" || true
# fix ownership/perms on DB + any sidecars
sudo chown james-whalen:james-whalen "${DB}"* 2>/dev/null || true
sudo chmod 664 "${DB}"* 2>/dev/null || true
set -euo pipefail
touch /Eden/DATA/.write_test_$(date +%s)
ls -lah /Eden/DATA/.write_test_* | tail -n 1
rm -f /Eden/DATA/.write_test_*
echo "OK: /Eden/DATA is writable for james-whalen"
set -euo pipefail
echo "=== mount lines relevant to /Eden ==="
mount | egrep ' on /Eden($|/)| on /($| )' || true
echo
echo "=== df type for /Eden and /Eden/DATA ==="
df -hT /Eden /Eden/DATA 2>/dev/null || df -h /Eden /Eden/DATA
set -euo pipefail
DB="/Eden/DATA/eden_empire_site.db"
echo "=== quick sanity: who + perms ==="
whoami
ls -lah "$DB"
echo
echo "=== sqlite3 write test ==="
sqlite3 "$DB" "PRAGMA journal_mode;"
sqlite3 "$DB" "CREATE TABLE IF NOT EXISTS __write_test(x TEXT);
INSERT INTO __write_test VALUES(datetime('now'));
SELECT COUNT(*) FROM __write_test;"
echo "OK: sqlite3 can write to the DB as $(whoami)"
set -euo pipefail
LOADER="/Eden/CORE/eden_empire_site_loader.py"
echo "=== loader: db/open related lines ==="
nl -ba "$LOADER" | egrep -n "sqlite3\.connect|connect\(|file:|mode=|uri=|query_only|journal_mode|PRAGMA" | head -n 80
echo
echo "=== show the connect block (small window) ==="
# This tries to show ~35 lines around the first sqlite3.connect occurrence
LINE="$(nl -ba "$LOADER" | grep -m1 -n 'sqlite3\.connect' | cut -d: -f1 || true)"
if [ -n "${LINE:-}" ]; then   START=$((LINE-15)); [ "$START" -lt 1 ] && START=1;   END=$((LINE+20));   nl -ba "$LOADER" | sed -n "${START},${END}p"; else   echo "No sqlite3.connect found in loader."; fi
set -euo pipefail
DB="/Eden/DATA/eden_empire_site.db"
echo "=== attributes (immutable?) ==="
lsattr -a "$DB" 2>/dev/null || echo "(lsattr not available; skipping)"
echo
echo "=== run loader again (captured) ==="
python3 /Eden/CORE/eden_empire_site_loader.py >/tmp/eden_empire_ingest.log 2>&1 || true
echo "=== last 80 lines of loader log ==="
tail -n 80 /tmp/eden_empire_ingest.log
echo
echo "=== row count sanity ==="
sqlite3 "$DB" "SELECT COUNT(*) AS pages_count FROM pages;"
set -euo pipefail
sudo systemctl start eden-empire-site-ingest.service
echo "=== last 30 lines (ingest service) ==="
journalctl -u eden-empire-site-ingest.service --no-pager -n 30 || true
echo
echo "=== DB check: latest updated_at ==="
sqlite3 /Eden/DATA/eden_empire_site.db "
SELECT route, substr(updated_at,1,19) AS updated_at
FROM pages
ORDER BY updated_at DESC
LIMIT 12;"
sudo apt update
sudo apt update
sudo apt install -y tmux
james-whalen@james-whalen-MS-7E34:~$ sudo apt update
sudo apt install -y tmux
Hit:1 http://security.ubuntu.com/ubuntu questing-security InRelease
Hit:2 http://ca.archive.ubuntu.com/ubuntu questing InRelease        
Get:3 http://packages.ros.org/ros/ubuntu bionic InRelease [4,680 B] 
Err:3 http://packages.ros.org/ros/ubuntu bionic InRelease           
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654
Hit:4 https://dl.google.com/linux/chrome/deb stable InRelease
Hit:5 http://ca.archive.ubuntu.com/ubuntu questing-updates InRelease
Hit:6 http://ca.archive.ubuntu.com/ubuntu questing-backports InRelease
Warning: OpenPGP signature verification failed: http://packages.ros.org/ros/ubuntu bionic InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654
Error: The repository 'http://packages.ros.org/ros/ubuntu bionic InRelease' is not signed.
Notice: Updating from such a repository can't be done securely, and is therefore disabled by default.
Notice: See apt-secure(8) manpage for repository creation and user configuration details.
Notice: Some sources can be modernized. Run 'apt modernize-sources' to do so.
tmux is already the newest version (3.5a-3build1).
The following package was automatically installed and is no longer required:
  nvidia-firmware-580-580.82.07
Use 'sudo apt autoremove' to remove it.

Summary:
  Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 59
james-whalen@james-whalen-MS-7E34:~$ 


tmux new -s eden
tmux set -g mouse off
echo "═══ EDEN FULL STATUS ═══"
systemctl status eden-empire-site-ingest.service --no-pager 2>&1 | head -5
echo ""
curl -s localhost:5017/api/health 2>/dev/null || curl -s localhost:5017/ 2>/dev/null | head -3
echo ""
sqlite3 /Eden/DATA/eden_empire_site.db "SELECT COUNT(*) || ' pages' FROM pages;" 2>/dev/null
echo ""
pgrep -fa "eden_business" | head -5
echo ""
echo "═══ DONE ═══"
echo "═══ END-TO-END REVENUE FLOW CHECK ═══"
echo ""
echo "1. INTAKE POINTS"
echo "----------------"
# Web form endpoint
curl -s localhost:8787/health 2>/dev/null && echo "✅ Leads API (8787) - UP" || echo "❌ Leads API (8787) - DOWN"
# Check if request page exists
grep -l "form" /Eden/WEB/eden-empire/request/index.md 2>/dev/null && echo "✅ Request form page exists" || echo "❌ No request form"
echo ""
echo "2. LEAD STORAGE"
echo "---------------"
ls -la /Eden/DATA/*.db 2>/dev/null | grep -E "(lead|sales|client)" | head -5
ls -la /Eden/SALES/*.pkl 2>/dev/null | head -3
echo ""
echo "3. BUSINESS PROCESSORS"
echo "----------------------"
pgrep -fa "eden_business" 
pgrep -fa "responder"
echo ""
echo "4. COMMUNICATION CHANNELS"
echo "-------------------------"
ls -la /Eden/CORE/*intake*.py 2>/dev/null | head -3
ls -la /Eden/CORE/*sales*.py 2>/dev/null | head -3
ls -la /Eden/CORE/*outreach*.py 2>/dev/null | head -3
echo ""
echo "5. EDEN API (analysis engine)"
echo "-----------------------------"
curl -s -X POST localhost:5017/api/chat -H "Content-Type: application/json" -d '{"message":"status"}' 2>/dev/null | head -c 200
echo ""
echo ""
echo "═══ FLOW SUMMARY ═══"
echo "Lead comes in → 8787 API → DB → Business Brain processes → Eden analyzes → Response out"
echo ""
echo "═══ DONE ═══"
# Find what should run on 8787
grep -r "8787" /Eden/CORE/*.py 2>/dev/null | head -5
# Check if there's a service for it
systemctl list-units --all | grep -i lead
systemctl --user list-units --all | grep -i lead
# Or find the script directly
ls -la /Eden/CORE/*lead*.py 2>/dev/null
sudo systemctl start eden-empire-leads-api.service
sudo systemctl status eden-empire-leads-api.service --no-pager
curl -s localhost:8787/health && echo "✅ Leads API UP"
set -euo pipefail
ps auxww | grep -E 'eden_|python3 /Eden' | grep -v grep | tee /Eden/LOGS/deep_scan/process_snapshot.txt
systemctl list-units 'eden-*' --all --no-pager | tee /Eden/LOGS/deep_scan/systemd_units.txt
echo "OK: systemd unit state captured"
tee: /Eden/LOGS/deep_scan/systemd_units.txt: No such file or directory
set -euo pipefail
mkdir -p /Eden/LOGS/deep_scan
echo "OK: /Eden/LOGS/deep_scan exists"
systemctl list-units 'eden-*' --all --no-pager | tee /Eden/LOGS/deep_scan/systemd_units.txt
echo "OK: systemd unit state captured"
set -euo pipefail
OUT="/Eden/LOGS/deep_scan/scan_$(date +%Y%m%d-%H%M%S)"
mkdir -p "$OUT"
echo "== Deep scan starting: $OUT =="
# 0) Snapshot basics
{   echo "=== DATE ==="; date;   echo "=== HOST ==="; hostnamectl || true;   echo "=== KERNEL ==="; uname -a;   echo "=== UPTIME ==="; uptime;   echo "=== WHO ==="; whoami; } | tee "$OUT/00_basics.txt" >/dev/null
# 1) System resource state
{   echo "=== DISK ==="; df -hT || df -h;   echo; echo "=== MEMORY ==="; free -h || true;   echo; echo "=== TOP (brief) ==="; ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head -n 30; } | tee "$OUT/01_resources.txt" >/dev/null
# 2) Eden units full list (you already did, but we re-stamp inside this bundle)
systemctl list-units 'eden-*' --all --no-pager | tee "$OUT/02_systemd_units.txt" >/dev/null
# 3) Show ONLY problems: failed + activating(auto-restart) + dead-but-enabled
{   echo "=== FAILED UNITS ===";   systemctl list-units 'eden-*' --all --no-pager --state=failed || true;   echo;   echo "=== ACTIVATING (often auto-restart loops) ===";   systemctl list-units 'eden-*' --all --no-pager --state=activating || true;   echo;   echo "=== ENABLED UNIT FILES (to spot enabled-but-dead) ===";   systemctl list-unit-files 'eden-*' --no-pager | egrep -E 'enabled|static|masked' || true; } | tee "$OUT/03_eden_problems.txt" >/dev/null
# 4) Deep dive the failing unit (your biggest signal)
UNIT="eden-email-monitor.service"
{   echo "=== systemctl status $UNIT ===";   systemctl status "$UNIT" --no-pager || true;   echo;   echo "=== journal (last 300 lines) $UNIT ===";   journalctl -u "$UNIT" --no-pager -n 300 || true; } | tee "$OUT/04_${UNIT}.txt" >/dev/null
# 5) Deep dive the "activating auto-restart" units (common culprits)
for u in eden-asi-search.service eden-asi-search.service eden-autonomous-sales.service eden-asi-search.service eden-consciousness.service eden-core.service eden-darkweb-monitor.service; do   {     echo "=== systemctl status $u ===";     systemctl status "$u" --no-pager || true;     echo;     echo "=== journal (last 120 lines) $u ===";     journalctl -u "$u" --no-pager -n 120 || true;   } | tee "$OUT/05_${u}.txt" >/dev/null; done
# 6) SQLite sanity (read-only checks)
{   echo "=== DB LIST (Eden/DATA) ===";   ls -lah /Eden/DATA | head -n 200;   echo;   echo "=== Quick sqlite integrity checks (best-effort) ===";   for db in /Eden/DATA/*.db; do     [ -f "$db" ] || continue;     echo "-- $db";     sqlite3 "$db" "PRAGMA quick_check;" 2>/dev/null | head -n 5 || echo "  (skip/locked)";   done; } | tee "$OUT/06_db_sanity.txt" >/dev/null
# 7) Security-ish signals (non-destructive)
{   echo "=== LAST LOGINS ===";   last -n 20 || true;   echo;   echo "=== RECENT AUTH EVENTS ===";   journalctl -n 200 --no-pager | egrep -i 'sudo|polkit|authentication|failed password|sshd|pam' || true; } | tee "$OUT/07_security_signals.txt" >/dev/null
echo "== Deep scan complete =="
echo "Bundle: $OUT"
ls -lah "$OUT"
set -euo pipefail
RUN_ID="$(date +%Y%m%d-%H%M%S)"
OUT="/Eden/LOGS/deep_scan/$RUN_ID"
mkdir -p "$OUT"
echo "=== EDEN DEEP SCAN RUN: $RUN_ID ===" | tee "$OUT/README.txt"
echo "Output folder: $OUT" | tee -a "$OUT/README.txt"
echo
# 0) Baseline system fingerprint
{   echo "=== DATE ==="; date;   echo;   echo "=== HOST / KERNEL ==="; hostnamectl 2>/dev/null || true; uname -a;   echo;   echo "=== UPTIME ==="; uptime;   echo;   echo "=== CPU / MEM ==="; lscpu 2>/dev/null | sed -n '1,30p' || true; free -h || true;   echo;   echo "=== DISK / FS ==="; df -hT / /Eden /Eden/DATA 2>/dev/null || df -h / /Eden /Eden/DATA;   echo;   echo "=== MOUNTS (eden related) ==="; mount | egrep ' on /Eden($|/)| on /($| )' || true;   echo;   echo "=== NETWORK (brief) ==="; ip -br a || true; ip route || true;   echo;   echo "=== LISTENING PORTS ==="; ss -lntup || true; } >"$OUT/system_fingerprint.txt" 2>&1
# 1) Systemd: full Eden unit view + failed
systemctl list-units 'eden-*' --all --no-pager >"$OUT/systemd_units_full.txt" 2>&1 || true
systemctl --failed --no-pager >"$OUT/systemd_failed.txt" 2>&1 || true
systemctl list-unit-files 'eden-*' --no-pager >"$OUT/systemd_unit_files.txt" 2>&1 || true
systemctl list-timers 'eden-*' --all --no-pager >"$OUT/systemd_timers.txt" 2>&1 || true
# 2) Kernel + journal errors (system-wide)
journalctl -p warning..alert --since "24 hours ago" --no-pager >"$OUT/journal_24h_warnplus.txt" 2>&1 || true
journalctl -k -p warning..alert --since "24 hours ago" --no-pager >"$OUT/kernel_24h_warnplus.txt" 2>&1 || true
# 3) Eden-focused logs (24h)
journalctl -u 'eden-*' --since "24 hours ago" --no-pager >"$OUT/eden_journal_24h.txt" 2>&1 || true
# 4) Auto-extract “interesting” Eden units: failed OR auto-restart-ish
# (We’ll grab status + last 300 log lines per unit.)
INTERESTING="$OUT/interesting_units.txt"
{   echo "=== FAILED UNITS ===";   systemctl --failed --no-pager | awk 'NR>1 && $1 ~ /^eden-/ {print $1}' || true;   echo;   echo "=== AUTO-RESTART / ACTIVATING (from unit list) ===";   systemctl list-units 'eden-*' --all --no-pager | awk '$1 ~ /^eden-/ && ($4 ~ /auto-restart/ || $3 ~ /activating/ || $2 ~ /not-found/ ) {print $1}' || true; } | awk 'NF' | sort -u >"$INTERESTING" 2>/dev/null || true
while read -r U; do   [ -n "${U:-}" ] || continue;   systemctl status "$U" --no-pager >"$OUT/status_${U}.txt" 2>&1 || true;   journalctl -u "$U" -n 300 --no-pager >"$OUT/journal_${U}.txt" 2>&1 || true; done <"$INTERESTING"
# 5) Eden directory integrity snapshot (safe, fast)
{   echo "=== /Eden top ===";   ls -lah /Eden || true;   echo;   echo "=== /Eden/CORE (top) ===";   ls -lah /Eden/CORE 2>/dev/null | head -n 200 || true;   echo;   echo "=== /Eden/DATA (db focus) ===";   ls -lah /Eden/DATA | egrep -i '\.db$|eden_empire|leads|sales|agent_longterm|emotions|salience|consciousness' || true;   echo;   echo "=== permissions: key DBs ===";   for f in /Eden/DATA/*.db; do     [ -e "$f" ] || continue;     ls -lah "$f";   done; } >"$OUT/eden_fs_snapshot.txt" 2>&1
# 6) Summarize (quick human-readable)
{   echo "=== SUMMARY ===";   echo "Run: $RUN_ID";   echo "Folder: $OUT";   echo;   echo "FAILED (systemctl --failed):";   cat "$OUT/systemd_failed.txt" 2>/dev/null || true;   echo;   echo "Interesting Eden units captured:";   cat "$INTERESTING" 2>/dev/null || true;   echo;   echo "Top recent Eden errors (grep):";   grep -R --line-number -iE "Traceback|ERROR|FATAL|FAIL|Exception|permission denied|readonly" "$OUT" 2>/dev/null | head -n 120 || true; } | tee "$OUT/SUMMARY.txt" >/dev/null
echo
echo "✅ Deep scan complete."
echo "📁 $OUT"
echo "Open: $OUT/SUMMARY.txt"
ps -eo pid,comm,%mem,%cpu --sort=-%mem | head -n 15
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 25
set -euo pipefail
PIDS="1012848 1052170 1013018 64858"
for p in $PIDS; do   echo "==============================";   echo "PID: $p";   ps -p "$p" -o pid,ppid,cmd,%cpu,%mem --no-headers || true;   echo;   echo "--- systemd unit (if any) ---";   systemctl status --no-pager "$p" 2>/dev/null | sed -n '1,25p' || echo "(not a systemd-managed pid)";   echo; done
# 1. Cap the CPU hogs (reversible, runtime only)
sudo systemctl set-property --runtime ollama.service CPUQuota=180%
sudo systemctl set-property --runtime eden-recursive.service CPUQuota=120%
# 2. Confirm caps applied
systemctl show ollama.service eden-recursive.service -p CPUQuotaUSec --no-pager
# 3. Who's hammering Ollama?
echo ""
echo "=== Connections to Ollama (11434) ==="
sudo ss -tnp | awk '$4 ~ /127\.0\.0\.1:11434/ {print}'
# 4. What's Ollama working on right now?
echo ""
echo "=== Ollama active workloads ==="
curl -s http://127.0.0.1:11434/api/ps 2>/dev/null | head -50
# 5. Install btop for live monitoring
sudo apt install -y btop
# Show client processes connecting TO Ollama
sudo ss -tnp | grep ":11434" | grep -v "11434 " | awk '{print $5, $6}' | sort -u
set -euo pipefail
RUN_ID="$(date +%Y%m%d-%H%M%S)"
OUT="/Eden/LOGS/deep_scan/$RUN_ID"
mkdir -p "$OUT"
echo "=== EDEN DEEP SCAN RUN: $RUN_ID ===" | tee "$OUT/README.txt"
echo "Output folder: $OUT" | tee -a "$OUT/README.txt"
# 0) System fingerprint (short + safe)
{   echo "=== DATE ==="; date;   echo;   echo "=== HOST / KERNEL ==="; hostnamectl 2>/dev/null || true; uname -a;   echo;   echo "=== UPTIME ==="; uptime;   echo;   echo "=== CPU / MEM ==="; lscpu 2>/dev/null | sed -n '1,30p' || true; free -h || true;   echo;   echo "=== DISK / FS ==="; df -hT / /Eden /Eden/DATA 2>/dev/null || df -h / /Eden /Eden/DATA;   echo;   echo "=== MOUNTS (eden relevant) ==="; mount | egrep ' on /Eden($|/)| on /($| )' || true;   echo;   echo "=== LISTENING PORTS ==="; ss -lntup || true; } >"$OUT/system_fingerprint.txt" 2>&1
# 1) Systemd snapshots
systemctl list-units 'eden-*' --all --no-pager >"$OUT/systemd_units_full.txt" 2>&1 || true
systemctl --failed --no-pager >"$OUT/systemd_failed.txt" 2>&1 || true
systemctl list-unit-files 'eden-*' --no-pager >"$OUT/systemd_unit_files.txt" 2>&1 || true
systemctl list-timers 'eden-*' --all --no-pager >"$OUT/systemd_timers.txt" 2>&1 || true
# 2) Journals (24h)
journalctl -p warning..alert --since "24 hours ago" --no-pager >"$OUT/journal_24h_warnplus.txt" 2>&1 || true
journalctl -k -p warning..alert --since "24 hours ago" --no-pager >"$OUT/kernel_24h_warnplus.txt" 2>&1 || true
journalctl -u 'eden-*' --since "24 hours ago" --no-pager >"$OUT/eden_journal_24h.txt" 2>&1 || true
# 3) Build a *clean* list of interesting Eden units (ONLY valid unit names)
INTERESTING="$OUT/interesting_units.txt"
{
  systemctl --failed --no-pager 2>/dev/null | awk '$1 ~ /^eden-[A-Za-z0-9_.@-]+\.(service|timer|path|socket)$/ {print $1}' || true; 
  systemctl list-units 'eden-*' --all --no-pager 2>/dev/null     | awk '$1 ~ /^eden-[A-Za-z0-9_.@-]+\.(service|timer|path|socket)$/ && ($3=="activating" || $4=="auto-restart") {print $1}' || true; } | sort -u >"$INTERESTING"
# 4) Capture status + recent logs for interesting units
while read -r U; do   [ -n "${U:-}" ] || continue;   systemctl status "$U" --no-pager >"$OUT/status_${U}.txt" 2>&1 || true;   journalctl -u "$U" -n 300 --no-pager >"$OUT/journal_${U}.txt" 2>&1 || true; done <"$INTERESTING"
# 5) Filesystem snapshot (quick)
{   echo "=== /Eden top ==="; ls -lah /Eden || true;   echo;   echo "=== /Eden/CORE (top 200) ==="; ls -lah /Eden/CORE 2>/dev/null | head -n 200 || true;   echo;   echo "=== /Eden/DATA (db highlights) ===";   ls -lah /Eden/DATA | egrep -i '\.db$|eden_empire|leads|sales|agent_longterm|emotions|salience|consciousness' || true; } >"$OUT/eden_fs_snapshot.txt" 2>&1
# 6) Summary
{   echo "=== SUMMARY ===";   echo "Run: $RUN_ID";   echo "Folder: $OUT";   echo;   echo "Interesting units:";   cat "$INTERESTING" || true;   echo;   echo "Failed units (systemctl --failed):";   cat "$OUT/systemd_failed.txt" || true;   echo;   echo "Top errors in captured outputs:";   grep -R --line-number -iE "Traceback|ERROR|FATAL|FAIL|Exception|permission denied|readonly" "$OUT" 2>/dev/null | head -n 200 || true; } | tee "$OUT/SUMMARY.txt" >/dev/null
echo "✅ Deep scan complete."
echo "📁 $OUT"
echo "Open: $OUT/SUMMARY.txt"
cat /Eden/LOGS/deep_scan/*/SUMMARY.txt | tail -n 220
