[
  {
    "fragmentId": "method:4nawp0:buildtargetmodel__fragment",
    "ownerFileId": "file:yngxn0:20260428184727-initialpostgres-designer-cs",
    "ownerSymbolId": "method:4nawp0:buildtargetmodel",
    "ownerSymbolName": "BuildTargetModel",
    "entryNodeId": "method:4nawp0:buildtargetmodel__entry",
    "exitNodeIds": [
      "method:4nawp0:buildtargetmodel__implicit_return"
    ],
    "nodes": [
      {
        "id": "method:4nawp0:buildtargetmodel__entry",
        "kind": "entry",
        "label": "BuildTargetModel entry",
        "line": 19,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.99,
        "detail": "Constructs the EF Core model for the InitialPostgres migration (annotations, entities, properties, keys, indexes, relationships, and navigations)."
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_21_pragma_21__linear",
        "kind": "statement",
        "label": "Suppress obsolete warnings around the model building block",
        "line": 21,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "#pragma warning disable 612, 618 and restore at line 374"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_22_annotation_22__linear",
        "kind": "statement",
        "label": "Set product version and MaxIdentifierLength",
        "line": 22,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "modelBuilder.HasAnnotation(\"ProductVersion\",\"10.0.7\").HasAnnotation(\"Relational:MaxIdentifierLength\", 63)"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_26_provider_extension_26__linear",
        "kind": "statement",
        "label": "Configure Postgres identity column strategy",
        "line": 26,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder)"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_28_schema_definition_28__linear",
        "kind": "statement",
        "label": "Defines AspNetRoles entity",
        "line": 28,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "Properties: Id (text), ConcurrencyStamp (concurrency token), Name, NormalizedName; primary key on Id; unique index on NormalizedName; maps to AspNetRoles table"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_54_schema_definition_54__linear",
        "kind": "statement",
        "label": "Defines AspNetRoleClaims entity",
        "line": 54,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "Id integer identity, ClaimType/ClaimValue text, RoleId text required; PK Id; index on RoleId; maps to AspNetRoleClaims"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_79_schema_definition_79__linear",
        "kind": "statement",
        "label": "Defines AspNetUserClaims entity",
        "line": 79,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "Id integer identity, ClaimType/ClaimValue text, UserId text required; PK Id; index on UserId; maps to AspNetUserClaims"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_104_schema_definition_104__linear",
        "kind": "statement",
        "label": "Defines AspNetUserLogins entity",
        "line": 104,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "Composite PK (LoginProvider, ProviderKey); ProviderDisplayName, UserId required; index on UserId; maps to AspNetUserLogins"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_126_schema_definition_126__linear",
        "kind": "statement",
        "label": "Defines AspNetUserRoles entity",
        "line": 126,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "Composite PK (UserId, RoleId); index on RoleId; maps to AspNetUserRoles"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_141_schema_definition_141__linear",
        "kind": "statement",
        "label": "Defines AspNetUserTokens entity",
        "line": 141,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "Composite PK (UserId, LoginProvider, Name); Value text; maps to AspNetUserTokens"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_160_schema_definition_160__linear",
        "kind": "statement",
        "label": "Defines Ebooks table for NexusReader.Domain.Entities.Ebook",
        "line": 160,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "Id uuid identity PK, AddedDate timestamptz, Author text required max 255, CoverUrl text, FilePath text required, LastReadDate nullable timestamptz, Title text required max 255, UserId text required; index on UserId; maps to Ebooks"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_200_schema_definition_200__linear",
        "kind": "statement",
        "label": "Defines NexusUser (AspNetUsers) entity",
        "line": 200,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "User properties for identity + domain fields: AITokenLimit, AITokensUsed, CurrentPlan required, TenantId uuid, other identity columns; PK Id; indexes on NormalizedEmail and unique NormalizedUserName; maps to AspNetUsers"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_277_schema_definition_277__linear",
        "kind": "statement",
        "label": "Defines SemanticKnowledgeCache table",
        "line": 277,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "ContentHash (PK) varchar(64), CreatedAt timestamptz, JsonData text required, ModelId varchar(50) required, PromptVersion varchar(10) required; unique index on ContentHash; maps to SemanticKnowledgeCache"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_308_relationship_308__linear",
        "kind": "statement",
        "label": "Configure Identity relationships (role claims, user claims, logins, roles, tokens)",
        "line": 308,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "Sets HasOne/WithMany/HasForeignKey for Identity tables with cascade delete to their role/user parents (e.g., RoleClaim->IdentityRole, UserClaim->NexusUser, UserLogin->NexusUser, UserRole->IdentityRole & NexusUser, UserToken->NexusUser)"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_359_relationship_359__linear",
        "kind": "statement",
        "label": "Ebook -> NexusUser relationship and navigation",
        "line": 359,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "Ebook.HasOne(User).WithMany(Ebooks).HasForeignKey(UserId).OnDelete(DeleteBehavior.Cascade).IsRequired(); adds navigation 'User'"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_370_navigation_370__linear",
        "kind": "statement",
        "label": "Expose NexusUser.Ebooks navigation property",
        "line": 370,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7,
        "detail": "modelBuilder configures NexusUser to have a navigation collection 'Ebooks'"
      },
      {
        "id": "method:4nawp0:buildtargetmodel__implicit_return",
        "kind": "return",
        "label": "return",
        "line": 375,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.72,
        "detail": "Implicit method exit inferred from method boundary."
      }
    ],
    "edges": [
      {
        "id": "method:4nawp0:buildtargetmodel__entry__method:4nawp0:buildtargetmodel__action_21_pragma_21__linear",
        "from": "method:4nawp0:buildtargetmodel__entry",
        "to": "method:4nawp0:buildtargetmodel__action_21_pragma_21__linear",
        "kind": "next",
        "line": 21,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_21_pragma_21__linear__method:4nawp0:buildtargetmodel__action_22_annotation_22__linear",
        "from": "method:4nawp0:buildtargetmodel__action_21_pragma_21__linear",
        "to": "method:4nawp0:buildtargetmodel__action_22_annotation_22__linear",
        "kind": "next",
        "line": 22,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_22_annotation_22__linear__method:4nawp0:buildtargetmodel__action_26_provider_extension_26__linear",
        "from": "method:4nawp0:buildtargetmodel__action_22_annotation_22__linear",
        "to": "method:4nawp0:buildtargetmodel__action_26_provider_extension_26__linear",
        "kind": "next",
        "line": 26,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_26_provider_extension_26__linear__method:4nawp0:buildtargetmodel__action_28_schema_definition_28__linear",
        "from": "method:4nawp0:buildtargetmodel__action_26_provider_extension_26__linear",
        "to": "method:4nawp0:buildtargetmodel__action_28_schema_definition_28__linear",
        "kind": "next",
        "line": 28,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_28_schema_definition_28__linear__method:4nawp0:buildtargetmodel__action_54_schema_definition_54__linear",
        "from": "method:4nawp0:buildtargetmodel__action_28_schema_definition_28__linear",
        "to": "method:4nawp0:buildtargetmodel__action_54_schema_definition_54__linear",
        "kind": "next",
        "line": 54,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_54_schema_definition_54__linear__method:4nawp0:buildtargetmodel__action_79_schema_definition_79__linear",
        "from": "method:4nawp0:buildtargetmodel__action_54_schema_definition_54__linear",
        "to": "method:4nawp0:buildtargetmodel__action_79_schema_definition_79__linear",
        "kind": "next",
        "line": 79,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_79_schema_definition_79__linear__method:4nawp0:buildtargetmodel__action_104_schema_definition_104__linear",
        "from": "method:4nawp0:buildtargetmodel__action_79_schema_definition_79__linear",
        "to": "method:4nawp0:buildtargetmodel__action_104_schema_definition_104__linear",
        "kind": "next",
        "line": 104,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_104_schema_definition_104__linear__method:4nawp0:buildtargetmodel__action_126_schema_definition_126__linear",
        "from": "method:4nawp0:buildtargetmodel__action_104_schema_definition_104__linear",
        "to": "method:4nawp0:buildtargetmodel__action_126_schema_definition_126__linear",
        "kind": "next",
        "line": 126,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_126_schema_definition_126__linear__method:4nawp0:buildtargetmodel__action_141_schema_definition_141__linear",
        "from": "method:4nawp0:buildtargetmodel__action_126_schema_definition_126__linear",
        "to": "method:4nawp0:buildtargetmodel__action_141_schema_definition_141__linear",
        "kind": "next",
        "line": 141,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_141_schema_definition_141__linear__method:4nawp0:buildtargetmodel__action_160_schema_definition_160__linear",
        "from": "method:4nawp0:buildtargetmodel__action_141_schema_definition_141__linear",
        "to": "method:4nawp0:buildtargetmodel__action_160_schema_definition_160__linear",
        "kind": "next",
        "line": 160,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_160_schema_definition_160__linear__method:4nawp0:buildtargetmodel__action_200_schema_definition_200__linear",
        "from": "method:4nawp0:buildtargetmodel__action_160_schema_definition_160__linear",
        "to": "method:4nawp0:buildtargetmodel__action_200_schema_definition_200__linear",
        "kind": "next",
        "line": 200,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_200_schema_definition_200__linear__method:4nawp0:buildtargetmodel__action_277_schema_definition_277__linear",
        "from": "method:4nawp0:buildtargetmodel__action_200_schema_definition_200__linear",
        "to": "method:4nawp0:buildtargetmodel__action_277_schema_definition_277__linear",
        "kind": "next",
        "line": 277,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_277_schema_definition_277__linear__method:4nawp0:buildtargetmodel__action_308_relationship_308__linear",
        "from": "method:4nawp0:buildtargetmodel__action_277_schema_definition_277__linear",
        "to": "method:4nawp0:buildtargetmodel__action_308_relationship_308__linear",
        "kind": "next",
        "line": 308,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_308_relationship_308__linear__method:4nawp0:buildtargetmodel__action_359_relationship_359__linear",
        "from": "method:4nawp0:buildtargetmodel__action_308_relationship_308__linear",
        "to": "method:4nawp0:buildtargetmodel__action_359_relationship_359__linear",
        "kind": "next",
        "line": 359,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_359_relationship_359__linear__method:4nawp0:buildtargetmodel__action_370_navigation_370__linear",
        "from": "method:4nawp0:buildtargetmodel__action_359_relationship_359__linear",
        "to": "method:4nawp0:buildtargetmodel__action_370_navigation_370__linear",
        "kind": "next",
        "line": 370,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:4nawp0:buildtargetmodel__action_370_navigation_370__linear__implicit_return",
        "from": "method:4nawp0:buildtargetmodel__action_370_navigation_370__linear",
        "to": "method:4nawp0:buildtargetmodel__implicit_return",
        "kind": "return",
        "line": 375,
        "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "confidence": 0.72
      }
    ],
    "jumpTargets": [],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [],
    "language": "csharp",
    "confidence": 0.98,
    "lineSpan": {
      "start": 19,
      "end": 375
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs",
        "line": 19,
        "summary": "Control-flow fragment extracted for method BuildTargetModel.",
        "kind": "file-summary"
      }
    ]
  }
]