{
  "version": 1,
  "generatedAt": "2026-05-25T11:41:33.166Z",
  "fileId": "file:1y1rue2:20260506184227-updatesubscriptionplanisunlimited",
  "executableScope": true,
  "executableSymbolCount": 2,
  "fileNodeId": "file:1y1rue2:20260506184227-updatesubscriptionplanisunlimited",
  "symbolNodeIds": [
    "class:588td0:updatesubscriptionplanisunlimitedtokens",
    "method:1pxp1t3:up",
    "method:3zfaqn:down",
    "type:bqctk6:updatesubscriptionplanisunlimitedtokens"
  ],
  "containmentEdgeIds": [
    "edge:10ndl3q:contains",
    "edge:pu62ns:contains",
    "edge:1kl586f:contains",
    "edge:19wwi94:defines-type"
  ],
  "relationshipEdgeIds": [
    "edge:10ndl3q:contains",
    "edge:pu62ns:contains",
    "edge:1kl586f:contains",
    "edge:19wwi94:defines-type"
  ],
  "integrationEdgeIds": [],
  "controlFlowFragments": [
    {
      "fragmentId": "method:1pxp1t3:up__fragment",
      "ownerFileId": "file:1y1rue2:20260506184227-updatesubscriptionplanisunlimited",
      "ownerSymbolId": "method:1pxp1t3:up",
      "ownerSymbolName": "Up",
      "entryNodeId": "method:1pxp1t3:up__entry",
      "exitNodeIds": [
        "method:1pxp1t3:up__implicit_return"
      ],
      "nodes": [
        {
          "id": "method:1pxp1t3:up__entry",
          "kind": "entry",
          "label": "Up entry",
          "line": 11,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.99,
          "detail": "Apply the migration: add IsUnlimitedTokens column to SubscriptionPlans and update seeded data for multiple plan rows."
        },
        {
          "id": "method:1pxp1t3:up__action_13_schema_change_13__linear",
          "kind": "statement",
          "label": "AddColumn IsUnlimitedTokens on SubscriptionPlans",
          "line": 13,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.AddColumn<bool>(name: \"IsUnlimitedTokens\", table: \"SubscriptionPlans\", type: \"boolean\", nullable: false, defaultValue: false)"
        },
        {
          "id": "method:1pxp1t3:up__action_20_data_seed_20__linear",
          "kind": "statement",
          "label": "Update seed row Id=1",
          "line": 20,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7,
          "detail": "UpdateData on SubscriptionPlans Id=1: set AITokenLimit=5000, IsUnlimitedTokens=false, StripeProductId=\"prod_Free789\""
        },
        {
          "id": "method:1pxp1t3:up__action_27_data_seed_27__linear",
          "kind": "statement",
          "label": "Update seed row Id=2",
          "line": 27,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7,
          "detail": "UpdateData on SubscriptionPlans Id=2: set IsUnlimitedTokens=false"
        },
        {
          "id": "method:1pxp1t3:up__action_34_data_seed_34__linear",
          "kind": "statement",
          "label": "Update seed row Id=3",
          "line": 34,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7,
          "detail": "UpdateData on SubscriptionPlans Id=3: set IsUnlimitedTokens=false"
        },
        {
          "id": "method:1pxp1t3:up__action_41_data_seed_41__linear",
          "kind": "statement",
          "label": "Update seed row Id=4 (make unlimited)",
          "line": 41,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7,
          "detail": "UpdateData on SubscriptionPlans Id=4: set AITokenLimit=1000000000, IsUnlimitedTokens=true"
        },
        {
          "id": "method:1pxp1t3:up__implicit_return",
          "kind": "return",
          "label": "return",
          "line": 47,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.72,
          "detail": "Implicit method exit inferred from method boundary."
        }
      ],
      "edges": [
        {
          "id": "method:1pxp1t3:up__entry__method:1pxp1t3:up__action_13_schema_change_13__linear",
          "from": "method:1pxp1t3:up__entry",
          "to": "method:1pxp1t3:up__action_13_schema_change_13__linear",
          "kind": "next",
          "line": 13,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1pxp1t3:up__action_13_schema_change_13__linear__method:1pxp1t3:up__action_20_data_seed_20__linear",
          "from": "method:1pxp1t3:up__action_13_schema_change_13__linear",
          "to": "method:1pxp1t3:up__action_20_data_seed_20__linear",
          "kind": "next",
          "line": 20,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1pxp1t3:up__action_20_data_seed_20__linear__method:1pxp1t3:up__action_27_data_seed_27__linear",
          "from": "method:1pxp1t3:up__action_20_data_seed_20__linear",
          "to": "method:1pxp1t3:up__action_27_data_seed_27__linear",
          "kind": "next",
          "line": 27,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1pxp1t3:up__action_27_data_seed_27__linear__method:1pxp1t3:up__action_34_data_seed_34__linear",
          "from": "method:1pxp1t3:up__action_27_data_seed_27__linear",
          "to": "method:1pxp1t3:up__action_34_data_seed_34__linear",
          "kind": "next",
          "line": 34,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1pxp1t3:up__action_34_data_seed_34__linear__method:1pxp1t3:up__action_41_data_seed_41__linear",
          "from": "method:1pxp1t3:up__action_34_data_seed_34__linear",
          "to": "method:1pxp1t3:up__action_41_data_seed_41__linear",
          "kind": "next",
          "line": 41,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1pxp1t3:up__action_41_data_seed_41__linear__implicit_return",
          "from": "method:1pxp1t3:up__action_41_data_seed_41__linear",
          "to": "method:1pxp1t3:up__implicit_return",
          "kind": "return",
          "line": 47,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.72
        }
      ],
      "jumpTargets": [],
      "exceptionTargets": [],
      "loopBackEdges": [],
      "mergeNodeIds": [],
      "language": "csharp",
      "confidence": 0.8799999999999999,
      "lineSpan": {
        "start": 11,
        "end": 47
      },
      "unsupportedConstructs": [],
      "evidence": [
        {
          "path": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "line": 11,
          "summary": "Control-flow fragment extracted for method Up.",
          "kind": "file-summary"
        }
      ]
    },
    {
      "fragmentId": "method:3zfaqn:down__fragment",
      "ownerFileId": "file:1y1rue2:20260506184227-updatesubscriptionplanisunlimited",
      "ownerSymbolId": "method:3zfaqn:down",
      "ownerSymbolName": "Down",
      "entryNodeId": "method:3zfaqn:down__entry",
      "exitNodeIds": [
        "method:3zfaqn:down__implicit_return"
      ],
      "nodes": [
        {
          "id": "method:3zfaqn:down__entry",
          "kind": "entry",
          "label": "Down entry",
          "line": 50,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.99,
          "detail": "Revert the migration: remove IsUnlimitedTokens column and restore previous seeded SubscriptionPlans values."
        },
        {
          "id": "method:3zfaqn:down__action_52_schema_change_52__linear",
          "kind": "statement",
          "label": "DropColumn IsUnlimitedTokens on SubscriptionPlans",
          "line": 52,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.DropColumn(name: \"IsUnlimitedTokens\", table: \"SubscriptionPlans\")"
        },
        {
          "id": "method:3zfaqn:down__action_56_data_seed_56__linear",
          "kind": "statement",
          "label": "Revert seed row Id=1",
          "line": 56,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7,
          "detail": "UpdateData on SubscriptionPlans Id=1: set AITokenLimit=1000, StripeProductId=\"\""
        },
        {
          "id": "method:3zfaqn:down__action_63_data_seed_63__linear",
          "kind": "statement",
          "label": "Revert seed row Id=4",
          "line": 63,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7,
          "detail": "UpdateData on SubscriptionPlans Id=4: set AITokenLimit=500000"
        },
        {
          "id": "method:3zfaqn:down__implicit_return",
          "kind": "return",
          "label": "return",
          "line": 69,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.72,
          "detail": "Implicit method exit inferred from method boundary."
        }
      ],
      "edges": [
        {
          "id": "method:3zfaqn:down__entry__method:3zfaqn:down__action_52_schema_change_52__linear",
          "from": "method:3zfaqn:down__entry",
          "to": "method:3zfaqn:down__action_52_schema_change_52__linear",
          "kind": "next",
          "line": 52,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7
        },
        {
          "id": "method:3zfaqn:down__action_52_schema_change_52__linear__method:3zfaqn:down__action_56_data_seed_56__linear",
          "from": "method:3zfaqn:down__action_52_schema_change_52__linear",
          "to": "method:3zfaqn:down__action_56_data_seed_56__linear",
          "kind": "next",
          "line": 56,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7
        },
        {
          "id": "method:3zfaqn:down__action_56_data_seed_56__linear__method:3zfaqn:down__action_63_data_seed_63__linear",
          "from": "method:3zfaqn:down__action_56_data_seed_56__linear",
          "to": "method:3zfaqn:down__action_63_data_seed_63__linear",
          "kind": "next",
          "line": 63,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.7
        },
        {
          "id": "method:3zfaqn:down__action_63_data_seed_63__linear__implicit_return",
          "from": "method:3zfaqn:down__action_63_data_seed_63__linear",
          "to": "method:3zfaqn:down__implicit_return",
          "kind": "return",
          "line": 69,
          "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "confidence": 0.72
        }
      ],
      "jumpTargets": [],
      "exceptionTargets": [],
      "loopBackEdges": [],
      "mergeNodeIds": [],
      "language": "csharp",
      "confidence": 0.82,
      "lineSpan": {
        "start": 50,
        "end": 69
      },
      "unsupportedConstructs": [],
      "evidence": [
        {
          "path": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
          "line": 50,
          "summary": "Control-flow fragment extracted for method Down.",
          "kind": "file-summary"
        }
      ]
    }
  ],
  "unresolvedJumps": [],
  "diagrams": [
    {
      "id": "file_1y1rue2_20260506184227_updatesubscriptionplanisunlimited_neighborhood_view",
      "purpose": "neighborhood-view",
      "title": "20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens Neighborhood",
      "required": true,
      "diagram": {
        "id": "file_1y1rue2_20260506184227_updatesubscriptionplanisunlimited_neighborhood_view",
        "kind": "dependency-map",
        "title": "20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens Neighborhood",
        "direction": "LR",
        "nodes": [
          {
            "id": "file_1y1rue2_20260506184227_updatesubscriptionplanisunlimited",
            "kind": "service",
            "label": "20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs"
          },
          {
            "id": "class_588td0_updatesubscriptionplanisunlimitedtokens",
            "kind": "service",
            "label": "UpdateSubscriptionPlanIsUnlimitedTokens",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs"
          },
          {
            "id": "method_1pxp1t3_up",
            "kind": "method",
            "label": "Up()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
            "sourceLine": 11
          },
          {
            "id": "method_3zfaqn_down",
            "kind": "method",
            "label": "Down()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
            "sourceLine": 50
          },
          {
            "id": "type_bqctk6_updatesubscriptionplanisunlimitedtokens",
            "kind": "document",
            "label": "UpdateSubscriptionPlanIsUnlimitedTokens",
            "shape": "doc",
            "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
            "sourceLine": 8
          }
        ],
        "edges": [],
        "metadata": {
          "evidencePaths": [
            "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs"
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "flowchart LR\n    class_588td0_updatesubscriptionplanisunlimitedtokens(\"UpdateSubscriptionPlanIsUnlimitedTokens\")\n    file_1y1rue2_20260506184227_updatesubscriptionplanisunlimited(\"20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens\")\n    method_1pxp1t3_up[[\"Up()\"]]\n    method_3zfaqn_down[[\"Down()\"]]\n    type_bqctk6_updatesubscriptionplanisunlimitedtokens[/\"UpdateSubscriptionPlanIsUnlimitedTokens\"/]",
      "warnings": []
    },
    {
      "id": "file_1y1rue2_20260506184227_updatesubscriptionplanisunlimited_execution_view",
      "purpose": "execution-overview",
      "title": "20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens Execution Overview",
      "required": true,
      "diagram": {
        "id": "file_1y1rue2_20260506184227_updatesubscriptionplanisunlimited_execution_view",
        "kind": "method-flow",
        "title": "20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens Execution Overview",
        "direction": "TD",
        "nodes": [
          {
            "id": "class_588td0_updatesubscriptionplanisunlimitedtokens",
            "kind": "service",
            "label": "UpdateSubscriptionPlanIsUnlimitedTokens",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs"
          },
          {
            "id": "method_1pxp1t3_up",
            "kind": "method",
            "label": "Up()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
            "sourceLine": 11
          },
          {
            "id": "method_3zfaqn_down",
            "kind": "method",
            "label": "Down()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
            "sourceLine": 50
          }
        ],
        "edges": [
          {
            "id": "class_588td0_updatesubscriptionplanisunlimitedtokens_contains_method_1pxp1t3_up",
            "from": "class_588td0_updatesubscriptionplanisunlimitedtokens",
            "to": "method_1pxp1t3_up",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
            "sourceLine": 11
          },
          {
            "id": "class_588td0_updatesubscriptionplanisunlimitedtokens_contains_method_3zfaqn_down",
            "from": "class_588td0_updatesubscriptionplanisunlimitedtokens",
            "to": "method_3zfaqn_down",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs",
            "sourceLine": 50
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.cs"
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "flowchart TD\n    class_588td0_updatesubscriptionplanisunlimitedtokens(\"UpdateSubscriptionPlanIsUnlimitedTokens\")\n    method_1pxp1t3_up[[\"Up()\"]]\n    method_3zfaqn_down[[\"Down()\"]]\n    class_588td0_updatesubscriptionplanisunlimitedtokens -->|contains| method_1pxp1t3_up\n    class_588td0_updatesubscriptionplanisunlimitedtokens -->|contains| method_3zfaqn_down",
      "warnings": []
    }
  ],
  "renderHints": {
    "preferredSurface": "three-d",
    "defaultDiagramId": "file_1y1rue2_20260506184227_updatesubscriptionplanisunlimited_execution_view",
    "controlFlowDiagramIds": [],
    "defaultControlFlowDiagramIdsBySymbolId": {}
  }
}