{
  "project": "CyberBrain26-v4",
  "generated": "2026-11-03T06:44:24Z",
  "git_head": "90a42e6cee27a6233c9b6e7255f35a772bd4f9a2",
  "git_subject": "chore: complete Audit B spaces and security tests",
  "working_tree_entries": 19,
  "phase": "F2",
  "model_gateway": {
    "providers": {
      "litellm": {
        "healthy": true,
        "models_available": 200
      },
      "ollama": {
        "healthy": true,
        "base_url": "http://127.0.0.1:11434",
        "models_available": 5,
        "models_running": 0
      },
      "llama.cpp": {
        "healthy": false,
        "error": "[Errno 111] Connection refused"
      }
    },
    "summary": {
      "total_models": 18,
      "active_models": 18,
      "local_models": 8,
      "free_models": 18,
      "circuit_breakers_active": 0,
      "total_routes": 0
    }
  },
  "security": {
    "audit_chain": {
      "hash_chained": true,
      "genesis_present": true,
      "verify_chain": "Verified or Broken enum",
      "tamper_evident": true,
      "tamper_proof": false,
      "notes": "SHA-256 previous_hash on each AuditEvent, append-only via SQLite record(), no secret key"
    },
    "execution_chain": {
      "authorized_execution_service": "Wired (lines 82-169 secure_gateway.py)",
      "egress_gate": "Per-provider classification (unknown/allowed/blocked/requires_approval)",
      "execution_refused": "Raised on missing approval, fail-closed",
      "orchestrator_authorizer": "TaskAuthorizer + DispatcherAuthorizer wired to InMemoryTaskDispatcher._authorize"
    }
  },
  "kilo_config": {
    "subagent_depth": 1,
    "default_agent": "promptmaster",
    "permission_bash": "deny",
    "permission_task_deny_all": true,
    "mcp_enabled": false,
    "agents_registered": 13
  },
  "test_results": {
    "pytest_overall": 591,
    "pytest_kilo_policy": 63,
    "pytest_skips_bubblewrap": 9,
    "ruff": "All checks passed",
    "mypy": "Success, 57 source files, no issues"
  },
  "open_security_gaps": [
    "Approval not cryptographically bound to executing code",
    "Prompt egress to remote providers neither evidenced nor blocked",
    "AIFirewall not wired into execution path or egress",
    "Missing cgroup-wide memory/PID limits and workspace disk/inode quotas",
    "chmod on SQLite files is best-effort only",
    "SQLiteDatabase.prune_expired is logical deletion, not secure erasure",
    "ACTION_SCOPE_MAP missing four actions"
  ],
  "blocking_items": [
    "Customer discovery not started (0 interviews, no contact list)",
    "Ubuntu 24.04 LTS packaging + CI (blocked on D1: OS target)",
    "plan --steps N ignores max_steps (PlannerAgent bug)",
    "plan durable task row stale on re-run with same --id",
    "--scopes applies only to coder role (security/evaluator trap)",
    "Library loggers print full stack traces on every refused step",
    "Legacy durable rows permanently non-retryable by design",
    "Approval timeout DB says cancelled but message says pending",
    "python3 -m cyberbrain26.cli silently exits 0 (no __main__ guard)"
  ],
  "authoritative_plan": {
    "path": ".kilo/plans/CyberBrain26cil-031026-v2.md",
    "approved": "2026-10-03",
    "superseded_docs": [
      "ROADMAP_V5.md",
      "ROADMAP_V6.md",
      "ROADMAP_V7.md"
    ]
  }
}