← back to Exo Helper

verification/e2e-proof.json

89 lines

{
  "ticket": "TK-11325",
  "intent": "Add a selectable compact DeepSeek option through existing Claude Code/Codex Exo helper; remove user-authorized unused local Qwen caches",
  "risk_tier": "R2 integration; R4 explicitly authorized cache deletion",
  "timestamp": "2026-09-09T18:29:31.077533+00:00",
  "environment": "macstudio3 M3Ultra96GiB; existing Exo localhost:52415; SDK1.29.0; existing Claude Code/Codex user registrations",
  "baseline": "One active local Qwen VL4B instance, no DeepSeek weights,25GiBfree. User expressly requested DeepSeek then removal of unused Qwen models. Existing jobs reference Heretic27B and Qwen2.5VL; llama-server used Qwen14B. All retained.",
  "build_identity": {
    "parent_commit": "a6a4aaf7a6d4c0af7f939a49261908a182de076f",
    "source_sha256": {
      "exo-client.mjs": "f3e3ef736d1a4266fe2c00b667f52e5a4a77742ed79fe75924ff9cd571c130c5",
      "server.mjs": "233fb73b14444b44bcb0937a0e85fc7ceb6b137dd43c38eedaf8a12ede64b3e9",
      "package.json": "f4b17e20f4b4d68489878fc7ed8cdcfb6dc7290fc2a213cc76a771e5b61bde02",
      "package-lock.json": "9f5cb2d55aead89736bc000ec23069754a6212029bf203aab8c37182657440c5"
    }
  },
  "commands": [
    "Fresh Exo state, lsof, static references and disk inventory",
    "Exo POST /models/add then POST /instance with explicit single-local-node preview",
    "Exo DELETE /download/<local-node>/<exact-model-id> for six guarded candidates",
    "npm test:12pass",
    "npm run verify:13pass",
    "codex mcp get exo-helper; claude mcp get exo-helper",
    "Actual codex exec with isolated matching MCP config:DeepSeek selection + returned answer",
    "Actual claude -p with strict matching MCP config:DeepSeek selection + returned answer",
    "SHA256 of downloaded safetensors compared with publisher HuggingFace LFS object digest",
    "git diff --check"
  ],
  "boundaries": [
    {
      "boundary": "Authorized cleanup -> each node-scoped Exo deletion receipt -> filesystem absence and retained model files",
      "verdict": "PASS",
      "evidence": "model-cleanup-TK11325.json",
      "removed_GiB": 78.13
    },
    {
      "boundary": "HuggingFace -> local weights -> matching size and SHA256",
      "verdict": "PASS",
      "evidence": "deepseek-weights.json"
    },
    {
      "boundary": "Exo local instance -> ready runner -> live DeepSeek inference",
      "verdict": "PASS",
      "instance_id": "53563c5b-9700-41da-8a9a-7c55bbaacec9"
    },
    {
      "boundary": "MCP selection -> DeepSeek and original default Qwen -> complete correct arithmetic; original extraction",
      "verdict": "PASS",
      "evidence": "integration.json"
    },
    {
      "boundary": "Actual Claude Code and Codex -> ask_exo model deepseek -> correct local model and complete answer",
      "verdict": "PASS",
      "evidence": "deepseek-client-proof.json"
    },
    {
      "boundary": "Error paths:unknown model,unready DeepSeek no Qwen fallback,missing model,unavailable backend,input limits,timeouts,model mismatch",
      "verdict": "PASS",
      "evidence": "integration.json and test/exo-client.test.mjs"
    }
  ],
  "runtime_memory_snapshot": {
    "ramTotal": {
      "inBytes": 103079215104
    },
    "ramAvailable": {
      "inBytes": 14706507776
    },
    "swapTotal": {
      "inBytes": 9663676416
    },
    "swapAvailable": {
      "inBytes": 360382464
    }
  },
  "cleanup": "Test client processes exited; both local Exo instances intentionally remain loaded. Six unused Exo Qwen caches removed. All Ollama-format model files and peer model files retained. No new daemon, schedule, credentials or primary provider changes.",
  "rollback": "Restore prior helper source from git to remove model selection. Unload/delete only new DeepSeek instance/model through Exo if desired. Removed Qwen weights require re-download from original model IDs recorded in cleanup report; no local archive was made.",
  "limitations": [
    "Compact DeepSeek R1-0528 distillation based on Qwen3-8B,not full DeepSeek.",
    "DeepSeek reasoning consumes output allowance. Complex tasks can exceed1024tokens or45seconds and return truncation/error; callers must treat these as incomplete.",
    "Initial system/prefixed instruction prompts exhausted reasoning budget. Native user-only template produced final answers in SDK and both CLIs.",
    "Model is on M3 alone; no distributed performance claim. Shared workloads and swap pressure prevent attributing total RAM changes to this task.",
    "Other callers may occupy Exo; readiness then reports false. No automatic load or provider fallback.",
    "Arithmetic and integration boundaries verified; no broad coding-quality benchmark.",
    "New session or MCP reconnect required for already-running clients to refresh schema."
  ],
  "verdict": "PASS"
}