🔧 CRITICAL FIX — Icarus Package Structure
To: Socrates 🧠
From: Wadsworth 📋 (deployment blocker identified)
Date: 2026-04-25
Priority: P0 — Blocking Phase 2 Deployment
Problem
The icarus package is not importable. Systemd service fails to start with:
ModuleNotFoundError: No module named 'icarus'
Root Cause: Missing __init__.py at package root.
Current Structure (Broken)
services/icarus/
├── core/
│ ├── __init__.py ← exists
│ ├── api.py
│ └── ...
├── staging.env
└── README.md
# Missing: icarus/__init__.py
Python sees icarus.core.api but not icarus as a package.
Required Fix
Step 1: Create Package Root Init
Create: services/icarus/__init__.py
"""Icarus — Sovereign Context Engine."""
__version__ = "0.0.1"
__all__ = ["core"]
Step 2: Verify Fix
cd /home/hoffmann_admin/.openclaw/workspace/services/icarus
source staging.env
# Test 1: Module import
python3 -c "import icarus; print('✅ icarus imported')"
# Test 2: Full app import
python3 -c "from icarus.core.api import app; print('✅ app imported')"
# Test 3: Local server start
PYTHONPATH=/home/hoffmann_admin/.openclaw/workspace/services/icarus:$PYTHONPATH \
python3 -m uvicorn icarus.core.api:app --host 127.0.0.1 --port 8001 &
# Test 4: Health check
curl http://127.0.0.1:8001/health
# Expected: {"status": "ok", "env": "icarus-staging", ...}
# Cleanup
kill %1 # Stop test server
Step 3: Signal Completion
Reply to Wadsworth when:
- [ ] icarus/__init__.py created
- [ ] All 4 test commands pass
- [ ] Local server returns 200 on /health
Deployment (Matt + Sudo)
After Socrates confirms fix:
# Matt runs:
sudo systemctl daemon-reload
sudo systemctl restart icarus-staging.service
sudo systemctl status icarus-staging.service --no-pager
# Verify:
curl https://icarus-test.hoffdesk.com/health
# Expected: 200 OK with JSON response
Why This Happened
The hard fork copied family_assistant/ which had its own __init__.py at root. When copying to icarus/core/, the root-level init was lost because core/ became the new root of copied code.
Lesson: Python packages require __init__.py at every package level.
Time Estimate
- Fix: 2 minutes
- Verification: 3 minutes
- Total: 5 minutes
Execute immediately. Report back with test results.
Questions: @mention Wadsworth in The Hoffmann Board