{
  "recorded_at": "2026-10-28T21:34:12.308379+00:00",
  "scope": "S4 real Claude Code client acceptance against isolated loopback application fixture",
  "api_implementation_commit": "0271adc7896a09285d8a87438024f9ed2ddf8baf",
  "base_commit": "abb9e9354707766b1769890ce27f13b9ad5c554c",
  "fixture_source_sha256": "2cf52ffc08624bcbc05006fbdfd33d972b45e29709f61123ca4b9c828dd3da22",
  "claude": {
    "version": "2.1.312",
    "model": "claude-sonnet-5-5",
    "authentication": "existing local authenticated session; no credential copied or recorded",
    "exit_code": 0,
    "duration_ms": 15716,
    "permission_mode": "dontAsk",
    "connected_mcp_servers": [
      {
        "name": "brandproof",
        "status": "connected",
        "source": "dynamic"
      }
    ],
    "builtin_tools": [],
    "tool_calls": 4,
    "permission_denials": [],
    "cli_arguments": [
      "claude",
      "--print",
      "--restricted",
      "--strict-mcp-config",
      "--mcp-config",
      "/var/folders/hy/2pr7y9_s7c7g9tngxd04wzpm0000gn/T/framelane-brand-claude-qzwoqkvf/mcp.json",
      "--tools",
      "",
      "--allowedTools",
      "mcp__brandproof__get_brand_kit,mcp__brandproof__edit_brand_kit,mcp__brandproof__extract_brand_kit,mcp__brandproof__create_upload",
      "--permission-mode",
      "dontAsk",
      "--permission-prompts",
      "none",
      "--setting-sources",
      "",
      "--disable-slash-commands",
      "--no-chrome",
      "--no-session-persistence",
      "--output-format",
      "stream-json",
      "--verbose",
      "--settings",
      "{\"disableAllHooks\":true,\"autoMemoryEnabled\":false,\"enabledPlugins\":{}}"
    ],
    "trace_sha256": "f7d7874d96660348780f3cb198464c22d71b1d014a00381de7e8d01ed4c5995b"
  },
  "transport": {
    "url": "http://127.0.0.1:8039/mcp/",
    "server_log_observed": [
      "initialize client=claude-code 2.1.312 protocol=2025-11-25",
      "notifications/initialized",
      "tools/list",
      "tools/call x4"
    ],
    "missing_bearer_http_status": 401,
    "authentication": "normal API-key hash lookup, fixed disposable fixture key only"
  },
  "tool_round_trips": [
    {
      "tool": "get_brand_kit",
      "arguments": {
        "brand_kit_id": "workspace"
      },
      "result": {
        "id": "bk_01M626QG1HFY0RJ8SABQJ6MC32"
      },
      "is_error": false
    },
    {
      "tool": "edit_brand_kit",
      "arguments": {
        "brand_kit_id": "workspace",
        "name": "Claude Code local acceptance",
        "add_colors": [
          "#2468AC"
        ],
        "fonts": {
          "heading": "Claude Acceptance Sans"
        }
      },
      "result": {
        "id": "bk_01M626QG1HFY0RJ8SABQJ6MC32"
      },
      "is_error": false
    },
    {
      "tool": "extract_brand_kit",
      "arguments": {
        "brand_kit_id": "workspace",
        "url": "https://claude-acceptance.example"
      },
      "result": {
        "brand_kit_id": "bk_01M626QG1HFY0RJ8SABQJ6MC32",
        "task_id": "task_01M626TDCGRS42KZBTDWT2PZGR",
        "status": "extracting"
      },
      "is_error": false
    },
    {
      "tool": "create_upload",
      "arguments": {
        "brand_kit_id": "workspace",
        "content_type": "font/ttf",
        "filename": "claude-acceptance.ttf",
        "family": "Claude Acceptance Sans",
        "content_bytes": 752,
        "content_sha256": "7c88d47d8d8c0f0f0eba00a74a7fc6673aeecd0ff4a90ab6d07e8e9f02c49b18"
      },
      "result": {
        "uploaded": true,
        "brand_font_id": "font_01M626TM12QJ9VA0D307KXBVP1"
      },
      "is_error": false
    }
  ],
  "persisted": {
    "workspace_id": "ws_01M626QG1B2FN9NP0XSY9DV91H",
    "brand_kit_count": 1,
    "brand_kit_id": "bk_01M626QG1HFY0RJ8SABQJ6MC32",
    "name": "Claude Code local acceptance",
    "colors": [
      "#ff7a1a",
      "#0a0e1f",
      "#f2efe6",
      "#2468ac"
    ],
    "fonts": {
      "heading": "Claude Acceptance Sans",
      "body": "Example Text"
    },
    "extraction": {
      "status": "ready",
      "provider": "tastelabs",
      "error": null,
      "started_at": "2026-10-28T21:31:52.080351",
      "completed_at": "2026-10-28T21:32:07.565277",
      "task_id": "task_01M626TDCGRS42KZBTDWT2PZGR"
    },
    "extraction_job_count": 1,
    "extraction_job": {
      "id": "task_01M626TDCGRS42KZBTDWT2PZGR",
      "workspace_id": "ws_01M626QG1B2FN9NP0XSY9DV91H",
      "task_type": "BRAND_EXTRACT",
      "status": "COMPLETED",
      "error_code": null,
      "completed_at": "2026-10-28 21:32:07.565277"
    },
    "logo_suggestion_count": 1,
    "font": {
      "id": "font_01M626TM12QJ9VA0D307KXBVP1",
      "workspace_id": "ws_01M626QG1B2FN9NP0XSY9DV91H",
      "family": "Claude Acceptance Sans",
      "family_key": "claude acceptance sans",
      "status": "ready",
      "attempts": 1,
      "metadata_url": "http://127.0.0.1:8039/__fixtures/files/fonts/ws_01M626QG1B2FN9NP0XSY9DV91H/font_01M626TM12QJ9VA0D307KXBVP1/6e70e99e0f0047059887c844a4a512bf_metadata_v3.json"
    },
    "uploaded_bytes_match_input": true,
    "input_bytes": 752,
    "input_sha256": "7c88d47d8d8c0f0f0eba00a74a7fc6673aeecd0ff4a90ab6d07e8e9f02c49b18",
    "verified_via": [
      "real GET /v1/brand-kits/workspace",
      "read-only direct SQLite queries",
      "HTTP read of stored font source"
    ]
  },
  "simulated": [
    "storage",
    "font cooking",
    "website extraction",
    "website DNS resolution"
  ],
  "not_proven": [
    "Clerk OAuth flow",
    "deployed provider or paid extraction",
    "commercial embedding permission",
    "deployed storage or farm callbacks",
    "real cooked font output in this fixture",
    "CDN CORS",
    "rendered frame or exported video"
  ],
  "checks": {
    "mcp_schema_budget_tests": "16 passed",
    "ruff_fixture": "passed",
    "mcp_brand_library_tests": "2 passed"
  },
  "local_raw_artifact_directory": "/var/folders/hy/2pr7y9_s7c7g9tngxd04wzpm0000gn/T/framelane-brand-claude-qzwoqkvf",
  "notes": [
    "Original browser fixture on 8037 was not restarted or changed. This instance used port 8039 and a separate temporary SQLite database.",
    "The first launch used --safe-mode; CLI suppressed even explicit MCP servers, so zero calls ran. The successful launch omitted --safe-mode, retained --restricted and --strict-mcp-config, disabled built-in tools, ignored user/project/local settings, disabled hooks and auto-memory, and allowed only the four requested tools with permission-mode dontAsk.",
    "Other local-server tool schemas were discoverable, but only the four allowlisted tools were callable without a prompt; the trace contains exactly those four calls. No other MCP servers or built-in tools were exposed.",
    "Input font was generated by the existing fontTools test fixture and carried inline; Claude had no filesystem or shell tools."
  ]
}
