[
  {
    "fragmentId": "method:tz9mq3:buildtargetmodel__fragment",
    "ownerFileId": "file:1xzhi6b:20260503175906-finalnormalizedsubscriptionarchit",
    "ownerSymbolId": "method:tz9mq3:buildtargetmodel",
    "ownerSymbolName": "BuildTargetModel",
    "entryNodeId": "method:tz9mq3:buildtargetmodel__entry",
    "exitNodeIds": [
      "method:tz9mq3:buildtargetmodel__implicit_return"
    ],
    "nodes": [
      {
        "id": "method:tz9mq3:buildtargetmodel__entry",
        "kind": "entry",
        "label": "BuildTargetModel entry",
        "line": 20,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.99,
        "detail": "Populates the EF Core ModelBuilder with entity types, columns, keys, indices, relationships, Postgres/vector extensions and seed data for this migration snapshot."
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_23_annotation_23__linear",
        "kind": "statement",
        "label": "Sets model annotations",
        "line": 23,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "modelBuilder.HasAnnotation(\"ProductVersion\",\"10.0.7\").HasAnnotation(\"Relational:MaxIdentifierLength\",63)"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_27_external_call_27__linear",
        "kind": "http-call",
        "label": "Enables Postgres vector extension",
        "line": 27,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, \"vector\")"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_28_external_call_28__linear",
        "kind": "http-call",
        "label": "Configures identity column behavior",
        "line": 28,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder)"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_30_entity_configuration_30__linear",
        "kind": "statement",
        "label": "Microsoft.AspNetCore.Identity.IdentityRole",
        "line": 30,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "Defines Id, ConcurrencyStamp, Name, NormalizedName, primary key and unique index RoleNameIndex"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_162_entity_configuration_162__linear",
        "kind": "statement",
        "label": "NexusReader.Domain.Entities.Ebook",
        "line": 162,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "Defines Id, AddedDate, Author, FilePath, TenantId, Title, UserId; indices on TenantId and UserId; table Ebooks"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_209_entity_configuration_209__linear",
        "kind": "statement",
        "label": "NexusReader.Domain.Entities.KnowledgeUnit",
        "line": 209,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "Defines Id, Content, CreatedAt, SourceId, TenantId, Type, Vector (vector(768)), Version; indices on SourceId and TenantId"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_255_entity_configuration_255__linear",
        "kind": "statement",
        "label": "NexusReader.Domain.Entities.KnowledgeUnitLink",
        "line": 255,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "Defines Id (identity), RelationType, SourceUnitId, TargetUnitId; indices on SourceUnitId and TargetUnitId"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_287_entity_configuration_287__linear",
        "kind": "statement",
        "label": "NexusReader.Domain.Entities.NexusUser",
        "line": 287,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "Defines identity fields, subscription plan FK (SubscriptionPlanId default 1), indices on NormalizedEmail, NormalizedUserName, SubscriptionPlanId, TenantId"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_422_entity_configuration_422__linear",
        "kind": "statement",
        "label": "NexusReader.Domain.Entities.SemanticKnowledgeCache",
        "line": 422,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "Defines ContentHash PK, CreatedAt, JsonData, ModelId, OriginalText, PromptVersion, TenantId, Vector (vector(1536)); unique index on ContentHash"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_467_entity_configuration_467__linear",
        "kind": "statement",
        "label": "NexusReader.Domain.Entities.SubscriptionPlan",
        "line": 467,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "Defines Id (identity), AITokenLimit, MonthlyPrice, PlanName, StripeProductId; unique index on PlanName; seeds four plans via HasData"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_498_persistence_seed_498__linear",
        "kind": "statement",
        "label": "Seeds SubscriptionPlans",
        "line": 498,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "HasData inserts 4 subscription plan rows: Free, Basic, Pro, Enterprise with Ids 1..4 and token/price values"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_533_relationship_533__linear",
        "kind": "statement",
        "label": "Identity and domain relationships",
        "line": 533,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "Configures FK relations and cascade behaviors (e.g. IdentityRoleClaim->IdentityRole, User related FKs, Ebook.User, QuizResult.User, KnowledgeUnitLink.SourceUnit/TargetUnit, NexusUser.SubscriptionPlan with Restrict)"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_636_navigation_636__linear",
        "kind": "statement",
        "label": "Entity navigations enabled",
        "line": 636,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7,
        "detail": "Declares entity navigation properties to enable relationships (e.g. NexusUser.Ebooks, NexusUser.QuizResults, KnowledgeUnit.IncomingLinks/OutgoingLinks)"
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__implicit_return",
        "kind": "return",
        "label": "return",
        "line": 650,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.72,
        "detail": "Implicit method exit inferred from method boundary."
      }
    ],
    "edges": [
      {
        "id": "method:tz9mq3:buildtargetmodel__entry__method:tz9mq3:buildtargetmodel__action_23_annotation_23__linear",
        "from": "method:tz9mq3:buildtargetmodel__entry",
        "to": "method:tz9mq3:buildtargetmodel__action_23_annotation_23__linear",
        "kind": "next",
        "line": 23,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_23_annotation_23__linear__method:tz9mq3:buildtargetmodel__action_27_external_call_27__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_23_annotation_23__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_27_external_call_27__linear",
        "kind": "next",
        "line": 27,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_27_external_call_27__linear__method:tz9mq3:buildtargetmodel__action_28_external_call_28__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_27_external_call_27__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_28_external_call_28__linear",
        "kind": "next",
        "line": 28,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_28_external_call_28__linear__method:tz9mq3:buildtargetmodel__action_30_entity_configuration_30__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_28_external_call_28__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_30_entity_configuration_30__linear",
        "kind": "next",
        "line": 30,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_30_entity_configuration_30__linear__method:tz9mq3:buildtargetmodel__action_162_entity_configuration_162__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_30_entity_configuration_30__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_162_entity_configuration_162__linear",
        "kind": "next",
        "line": 162,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_162_entity_configuration_162__linear__method:tz9mq3:buildtargetmodel__action_209_entity_configuration_209__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_162_entity_configuration_162__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_209_entity_configuration_209__linear",
        "kind": "next",
        "line": 209,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_209_entity_configuration_209__linear__method:tz9mq3:buildtargetmodel__action_255_entity_configuration_255__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_209_entity_configuration_209__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_255_entity_configuration_255__linear",
        "kind": "next",
        "line": 255,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_255_entity_configuration_255__linear__method:tz9mq3:buildtargetmodel__action_287_entity_configuration_287__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_255_entity_configuration_255__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_287_entity_configuration_287__linear",
        "kind": "next",
        "line": 287,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_287_entity_configuration_287__linear__method:tz9mq3:buildtargetmodel__action_422_entity_configuration_422__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_287_entity_configuration_287__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_422_entity_configuration_422__linear",
        "kind": "next",
        "line": 422,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_422_entity_configuration_422__linear__method:tz9mq3:buildtargetmodel__action_467_entity_configuration_467__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_422_entity_configuration_422__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_467_entity_configuration_467__linear",
        "kind": "next",
        "line": 467,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_467_entity_configuration_467__linear__method:tz9mq3:buildtargetmodel__action_498_persistence_seed_498__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_467_entity_configuration_467__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_498_persistence_seed_498__linear",
        "kind": "next",
        "line": 498,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_498_persistence_seed_498__linear__method:tz9mq3:buildtargetmodel__action_533_relationship_533__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_498_persistence_seed_498__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_533_relationship_533__linear",
        "kind": "next",
        "line": 533,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_533_relationship_533__linear__method:tz9mq3:buildtargetmodel__action_636_navigation_636__linear",
        "from": "method:tz9mq3:buildtargetmodel__action_533_relationship_533__linear",
        "to": "method:tz9mq3:buildtargetmodel__action_636_navigation_636__linear",
        "kind": "next",
        "line": 636,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:tz9mq3:buildtargetmodel__action_636_navigation_636__linear__implicit_return",
        "from": "method:tz9mq3:buildtargetmodel__action_636_navigation_636__linear",
        "to": "method:tz9mq3:buildtargetmodel__implicit_return",
        "kind": "return",
        "line": 650,
        "sourcePath": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "confidence": 0.72
      }
    ],
    "jumpTargets": [],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [],
    "language": "csharp",
    "confidence": 0.98,
    "lineSpan": {
      "start": 20,
      "end": 650
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.Data/Migrations/20260503175906_FinalNormalizedSubscriptionArchitecture.Designer.cs",
        "line": 20,
        "summary": "Control-flow fragment extracted for method BuildTargetModel.",
        "kind": "file-summary"
      }
    ]
  }
]