{
  "$schema": "https://verifymcp.io/schemas/changelog.json",
  "server": "donggyun112-codecanvas",
  "component": "codecanvas-mcp",
  "generated_at": "2026-11-05T21:23:34.959Z",
  "tracking_since": "2026-08-23",
  "counts": {
    "critical": 0,
    "security": 23,
    "functional": 0,
    "cosmetic": 0
  },
  "events": [
    {
      "id": "chg_01a1aa89-3ce8-74d6-9a37-5dba08d4edae",
      "kind": "check.reverified",
      "family": "supplychain-malware",
      "subject_kind": "check",
      "subject": "supplychain-malware",
      "subject_child": "",
      "from_code": "supplychain.malware_inconclusive",
      "to_code": "supplychain.malware_clean",
      "from_value": "unverified",
      "to_value": "pass",
      "materiality": "security",
      "direction": "improvement",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-11-05",
      "occurred_at": "2026-11-05 07:08:03.126851+00",
      "observed_since": "2026-11-04",
      "source": "scan",
      "summary": "Malware scan (unverified → pass)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a1aa89-3ce8-74d6-9a37-5dba08d4edae"
    },
    {
      "id": "chg_01a1a0df-dc97-7d6c-a074-fd5d7aac2a03",
      "kind": "check.verdict",
      "family": "stability",
      "subject_kind": "check",
      "subject": "stability",
      "subject_child": "",
      "from_code": "stability.building_history",
      "to_code": "stability.stable",
      "from_value": "0.97",
      "to_value": "pass",
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-11-03",
      "occurred_at": "2026-11-03 10:06:27.890825+00",
      "observed_since": "2026-11-02",
      "source": "scan",
      "summary": "Stability (0.97 → pass)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a1a0df-dc97-7d6c-a074-fd5d7aac2a03"
    },
    {
      "id": "chg_01a19bb7-b875-7e08-b00b-8dceba6c3760",
      "kind": "check.unverifiable",
      "family": "supplychain-malware",
      "subject_kind": "check",
      "subject": "supplychain-malware",
      "subject_child": "",
      "from_code": "supplychain.malware_clean",
      "to_code": "supplychain.malware_inconclusive",
      "from_value": "pass",
      "to_value": "unverified",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "reason": "vendor_no_verdict"
      },
      "occurred_on": "2026-11-02",
      "occurred_at": "2026-11-02 10:04:31.174759+00",
      "observed_since": "2026-11-01",
      "source": "scan",
      "summary": "Malware scan (pass → unverified)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a19bb7-b875-7e08-b00b-8dceba6c3760"
    },
    {
      "id": "chg_01a1914c-03d2-7076-bba9-5655ef870d34",
      "kind": "check.reverified",
      "family": "supplychain-malware",
      "subject_kind": "check",
      "subject": "supplychain-malware",
      "subject_child": "",
      "from_code": "supplychain.malware_inconclusive",
      "to_code": "supplychain.malware_clean",
      "from_value": "unverified",
      "to_value": "pass",
      "materiality": "security",
      "direction": "improvement",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-10-31",
      "occurred_at": "2026-10-31 09:30:40.411705+00",
      "observed_since": "2026-10-30",
      "source": "scan",
      "summary": "Malware scan (unverified → pass)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a1914c-03d2-7076-bba9-5655ef870d34"
    },
    {
      "id": "chg_01a18c5e-a2d3-7c0e-9540-26079f7c8b22",
      "kind": "check.unverifiable",
      "family": "supplychain-malware",
      "subject_kind": "check",
      "subject": "supplychain-malware",
      "subject_child": "",
      "from_code": "supplychain.malware_clean",
      "to_code": "supplychain.malware_inconclusive",
      "from_value": "pass",
      "to_value": "unverified",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "reason": "vendor_no_verdict"
      },
      "occurred_on": "2026-10-30",
      "occurred_at": "2026-10-30 10:32:54.686569+00",
      "observed_since": "2026-10-29",
      "source": "scan",
      "summary": "Malware scan (pass → unverified)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a18c5e-a2d3-7c0e-9540-26079f7c8b22"
    },
    {
      "id": "chg_01a17c8d-1623-799b-9dd9-05552fe00274",
      "kind": "check.reverified",
      "family": "build-provenance",
      "subject_kind": "check",
      "subject": "build-provenance",
      "subject_child": "",
      "from_code": "provenance.inconclusive",
      "to_code": "provenance.none",
      "from_value": "unverified",
      "to_value": "fail",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-10-27",
      "occurred_at": "2026-10-27 08:49:43.402828+00",
      "observed_since": "2026-10-26",
      "source": "scan",
      "summary": "Provenance (unverified → fail)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a17c8d-1623-799b-9dd9-05552fe00274"
    },
    {
      "id": "chg_01a17720-9b78-74e3-a809-b06244d73419",
      "kind": "check.unverifiable",
      "family": "build-provenance",
      "subject_kind": "check",
      "subject": "build-provenance",
      "subject_child": "",
      "from_code": "provenance.none",
      "to_code": "provenance.inconclusive",
      "from_value": "fail",
      "to_value": "unverified",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "reason": "attestation_fetch_failed"
      },
      "occurred_on": "2026-10-26",
      "occurred_at": "2026-10-26 07:33:08.054975+00",
      "observed_since": "2026-10-25",
      "source": "scan",
      "summary": "Provenance (fail → unverified)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a17720-9b78-74e3-a809-b06244d73419"
    },
    {
      "id": "chg_01a17720-9b79-7c5c-aba2-1c2dd0391c27",
      "kind": "check.verdict",
      "family": "stability",
      "subject_kind": "check",
      "subject": "stability",
      "subject_child": "",
      "from_code": "stability.building_history",
      "to_code": "stability.stable",
      "from_value": "0.97",
      "to_value": "pass",
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-10-26",
      "occurred_at": "2026-10-26 07:33:08.054975+00",
      "observed_since": "2026-10-25",
      "source": "scan",
      "summary": "Stability (0.97 → pass)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a17720-9b79-7c5c-aba2-1c2dd0391c27"
    },
    {
      "id": "chg_01a1530d-8980-7423-b5e2-8ea310cd4029",
      "kind": "check.verdict",
      "family": "stability",
      "subject_kind": "check",
      "subject": "stability",
      "subject_child": "",
      "from_code": "stability.building_history",
      "to_code": "stability.stable",
      "from_value": "0.97",
      "to_value": "pass",
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-10-19",
      "occurred_at": "2026-10-19 07:25:58.505922+00",
      "observed_since": "2026-10-18",
      "source": "scan",
      "summary": "Stability (0.97 → pass)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a1530d-8980-7423-b5e2-8ea310cd4029"
    },
    {
      "id": "chg_01a14e59-89f5-7e61-8076-332302164be4",
      "kind": "check.reverified",
      "family": "build-provenance",
      "subject_kind": "check",
      "subject": "build-provenance",
      "subject_child": "",
      "from_code": "provenance.inconclusive",
      "to_code": "provenance.none",
      "from_value": "unverified",
      "to_value": "fail",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-10-18",
      "occurred_at": "2026-10-18 09:30:53.183308+00",
      "observed_since": "2026-10-17",
      "source": "scan",
      "summary": "Provenance (unverified → fail)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a14e59-89f5-7e61-8076-332302164be4"
    },
    {
      "id": "chg_01a148c0-6084-78a9-a870-c162d91dc271",
      "kind": "check.unverifiable",
      "family": "build-provenance",
      "subject_kind": "check",
      "subject": "build-provenance",
      "subject_child": "",
      "from_code": "provenance.none",
      "to_code": "provenance.inconclusive",
      "from_value": "fail",
      "to_value": "unverified",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "reason": "attestation_fetch_failed"
      },
      "occurred_on": "2026-10-17",
      "occurred_at": "2026-10-17 07:25:29.57811+00",
      "observed_since": "2026-10-16",
      "source": "scan",
      "summary": "Provenance (fail → unverified)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a148c0-6084-78a9-a870-c162d91dc271"
    },
    {
      "id": "chg_01a13e76-d991-776f-9f06-41e4356c808a",
      "kind": "check.reverified",
      "family": "build-provenance",
      "subject_kind": "check",
      "subject": "build-provenance",
      "subject_child": "",
      "from_code": "provenance.inconclusive",
      "to_code": "provenance.none",
      "from_value": "unverified",
      "to_value": "fail",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-10-15",
      "occurred_at": "2026-10-15 07:28:56.972358+00",
      "observed_since": "2026-10-14",
      "source": "scan",
      "summary": "Provenance (unverified → fail)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a13e76-d991-776f-9f06-41e4356c808a"
    },
    {
      "id": "chg_01a13953-da0c-74b6-944d-c938d125f4fa",
      "kind": "check.unverifiable",
      "family": "build-provenance",
      "subject_kind": "check",
      "subject": "build-provenance",
      "subject_child": "",
      "from_code": "provenance.none",
      "to_code": "provenance.inconclusive",
      "from_value": "fail",
      "to_value": "unverified",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "reason": "attestation_fetch_failed"
      },
      "occurred_on": "2026-10-14",
      "occurred_at": "2026-10-14 07:32:38.951831+00",
      "observed_since": "2026-10-13",
      "source": "scan",
      "summary": "Provenance (fail → unverified)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a13953-da0c-74b6-944d-c938d125f4fa"
    },
    {
      "id": "chg_01a13189-bec4-7a26-82fb-742cb44bff36",
      "kind": "check.verdict",
      "family": "stability",
      "subject_kind": "check",
      "subject": "stability",
      "subject_child": "",
      "from_code": "stability.building_history",
      "to_code": "stability.stable",
      "from_value": "0.97",
      "to_value": "pass",
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-10-12",
      "occurred_at": "2026-10-12 19:14:33.251936+00",
      "observed_since": "2026-10-05",
      "source": "scan",
      "summary": "Stability (0.97 → pass)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a13189-bec4-7a26-82fb-742cb44bff36"
    },
    {
      "id": "chg_01a1009a-efa5-7c11-be56-309b99f91c2f",
      "kind": "check.reverified",
      "family": "provenance-repo",
      "subject_kind": "check",
      "subject": "provenance-repo",
      "subject_child": "",
      "from_code": "provenance.repo_inconclusive",
      "to_code": "provenance.repo_verified",
      "from_value": "unverified",
      "to_value": "pass",
      "materiality": "security",
      "direction": "improvement",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-10-03",
      "occurred_at": "2026-10-03 07:11:55.930474+00",
      "observed_since": "2026-10-02",
      "source": "scan",
      "summary": "Source repository (unverified → pass)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a1009a-efa5-7c11-be56-309b99f91c2f"
    },
    {
      "id": "chg_01a0fb7a-4ed6-7656-a4b2-947d8452c924",
      "kind": "check.unverifiable",
      "family": "provenance-repo",
      "subject_kind": "check",
      "subject": "provenance-repo",
      "subject_child": "",
      "from_code": "provenance.repo_verified",
      "to_code": "provenance.repo_inconclusive",
      "from_value": "pass",
      "to_value": "unverified",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "status": "504"
      },
      "occurred_on": "2026-10-02",
      "occurred_at": "2026-10-02 07:18:11.657348+00",
      "observed_since": "2026-10-01",
      "source": "scan",
      "summary": "Provenance (pass → unverified)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a0fb7a-4ed6-7656-a4b2-947d8452c924"
    },
    {
      "id": "chg_01a0f12b-9cbc-798f-bbfd-6a182af85790",
      "kind": "check.verdict",
      "family": "stability",
      "subject_kind": "check",
      "subject": "stability",
      "subject_child": "",
      "from_code": "stability.building_history",
      "to_code": "stability.stable",
      "from_value": "0.97",
      "to_value": "pass",
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-09-30",
      "occurred_at": "2026-09-30 07:16:02.21711+00",
      "observed_since": "2026-09-29",
      "source": "scan",
      "summary": "Stability (0.97 → pass)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a0f12b-9cbc-798f-bbfd-6a182af85790"
    },
    {
      "id": "chg_01a0c7f6-44f2-7a32-a84e-1b054fef4083",
      "kind": "check.verdict",
      "family": "stability",
      "subject_kind": "check",
      "subject": "stability",
      "subject_child": "",
      "from_code": "stability.building_history",
      "to_code": "stability.stable",
      "from_value": "0.97",
      "to_value": "pass",
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-09-22",
      "occurred_at": "2026-09-22 07:13:20.387726+00",
      "observed_since": "2026-09-21",
      "source": "scan",
      "summary": "Stability (0.97 → pass)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a0c7f6-44f2-7a32-a84e-1b054fef4083"
    },
    {
      "id": "chg_01a0999b-2da7-7ec7-9b5b-4bc12a0b1209",
      "kind": "check.reverified",
      "family": "tool-safety-injection",
      "subject_kind": "check",
      "subject": "tool-safety-injection",
      "subject_child": "",
      "from_code": "toolsafety.sandbox_pending",
      "to_code": "toolsafety.injection_clean",
      "from_value": "unverified",
      "to_value": "pass",
      "materiality": "security",
      "direction": "improvement",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-09-13",
      "occurred_at": "2026-09-13 07:11:18.734484+00",
      "observed_since": "2026-09-12",
      "source": "scan",
      "summary": "Injection markers (unverified → pass)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a0999b-2da7-7ec7-9b5b-4bc12a0b1209"
    },
    {
      "id": "chg_01a0954b-644f-7266-9a93-dfc8f30f23dc",
      "kind": "check.unverifiable",
      "family": "tool-safety-injection",
      "subject_kind": "check",
      "subject": "tool-safety-injection",
      "subject_child": "",
      "from_code": "toolsafety.injection_clean",
      "to_code": "toolsafety.sandbox_pending",
      "from_value": "pass",
      "to_value": "unverified",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "reason": "version_superseded"
      },
      "occurred_on": "2026-09-12",
      "occurred_at": "2026-09-12 11:05:41.165427+00",
      "observed_since": "2026-09-11",
      "source": "scan",
      "summary": "Tool safety (pass → unverified)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a0954b-644f-7266-9a93-dfc8f30f23dc"
    },
    {
      "id": "chg_01a0954b-6450-7803-9847-7367c27ff10f",
      "kind": "check.unverifiable",
      "family": "stability",
      "subject_kind": "check",
      "subject": "stability",
      "subject_child": "",
      "from_code": "stability.building_history",
      "to_code": "stability.sandbox_pending",
      "from_value": "0.63",
      "to_value": "unverified",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "reason": "version_superseded"
      },
      "occurred_on": "2026-09-12",
      "occurred_at": "2026-09-12 11:05:41.165427+00",
      "observed_since": "2026-09-11",
      "source": "scan",
      "summary": "Stability (0.63 → unverified)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a0954b-6450-7803-9847-7367c27ff10f"
    },
    {
      "id": "chg_01a04733-1587-7386-a0f1-42b02f1999e3",
      "kind": "check.reverified",
      "family": "supplychain-malware",
      "subject_kind": "check",
      "subject": "supplychain-malware",
      "subject_child": "",
      "from_code": "supplychain.malware_inconclusive",
      "to_code": "supplychain.malware_clean",
      "from_value": "unverified",
      "to_value": "pass",
      "materiality": "security",
      "direction": "improvement",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-08-28",
      "occurred_at": "2026-08-28 07:08:45.123441+00",
      "observed_since": "2026-08-27",
      "source": "scan",
      "summary": "Malware scan (unverified → pass)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a04733-1587-7386-a0f1-42b02f1999e3"
    },
    {
      "id": "chg_01a042b3-029d-7d4b-8c6c-31498b92b98f",
      "kind": "check.unverifiable",
      "family": "supplychain-malware",
      "subject_kind": "check",
      "subject": "supplychain-malware",
      "subject_child": "",
      "from_code": "supplychain.malware_clean",
      "to_code": "supplychain.malware_inconclusive",
      "from_value": "pass",
      "to_value": "unverified",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "reason": "vendor_no_verdict"
      },
      "occurred_on": "2026-08-27",
      "occurred_at": "2026-08-27 10:10:22.978325+00",
      "observed_since": "2026-08-26",
      "source": "scan",
      "summary": "Malware scan (pass → unverified)",
      "link": "https://verifymcp.io/servers/donggyun112-codecanvas/codecanvas-mcp#chg-chg_01a042b3-029d-7d4b-8c6c-31498b92b98f"
    }
  ],
  "days": [
    {
      "date": "2026-11-05",
      "total": 79,
      "delta": 15,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 1
    },
    {
      "date": "2026-11-03",
      "total": 64,
      "delta": 1,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 1
    },
    {
      "date": "2026-11-02",
      "total": 63,
      "delta": -15,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 1
    },
    {
      "date": "2026-11-01",
      "total": 78,
      "delta": -1,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 1
    },
    {
      "date": "2026-10-31",
      "total": 79,
      "delta": 15,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 1
    },
    {
      "date": "2026-10-30",
      "total": 64,
      "delta": -15,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 1
    },
    {
      "date": "2026-10-27",
      "total": 79,
      "delta": 0,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 1
    },
    {
      "date": "2026-10-26",
      "total": 79,
      "delta": 1,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 2
    }
  ]
}