{
  "expectations": [
    {"text": "All three models (User, Post, Comment) are extracted into detected-entities.json as separate entries", "passed": true, "evidence": "detected-entities.json: 3 entities (User, Post, Comment). Unchanged from iter-7."},
    {"text": "Each entity's table_name matches the @@map(...) value in the fixture (e.g., User → 'users', Post → 'posts', Comment → 'comments')", "passed": true, "evidence": "Entity table_names match @@map values: User→users, Post→posts, Comment→comments. Unchanged from iter-7."},
    {"text": "Every @relation(fields: [...], references: [...]) field produces a relationship in detected-entities.json with a non-empty target_entity that names another extracted model — no blank target_entity strings", "passed": true, "evidence": "P1 VERIFIED. All @relation relationships now have populated target_entity: Post.author→User, Comment.post→Post. FLIPPED from iter-7 FAIL (all empty strings). Root: new prisma.yaml patterns with capture group `([A-Z]\\w*)` + extractor preference for relMatch[1] when uppercase."},
    {"text": "One-to-many sides (e.g., posts Post[]) produce relationships of type one_to_many; their corresponding many-to-one inverse (e.g., author User @relation(...)) produces type many_to_one, both with the correct target_entity", "passed": true, "evidence": "FLIPPED from iter-7 FAIL. Types now correct: User.posts→one_to_many(Post), Post.comments→one_to_many(Comment), Post.author→many_to_one(User), Comment.post→many_to_one(Post). Previous iter-7 got 'relationship' (generic) on the @relation side; now gets many_to_one because the many_to_one pattern is ordered first."},
    {"text": "Generated database-mapping.md frontmatter has type='entity' and orm_profile='prisma'", "passed": true, "evidence": "frontmatter-check.md: type=entity, orm_profile=prisma. Unchanged from iter-7."},
    {"text": "Mermaid erDiagram contains nodes named 'users', 'posts', 'comments' (the table names from @@map, not the model names) and at least one edge of cardinality ||--o{ linking users-posts AND another linking posts-comments", "passed": true, "evidence": "FLIPPED from iter-7 FAIL. Mermaid now: `users ||--o{ posts` and `posts ||--o{ comments`. Real table names, no synthetic _rel stubs. Downstream of A3 fix: once target_entity is populated, output.ts resolves to real table_name."},
    {"text": "mermaid_lint.js reports no issues on the generated page", "passed": true, "evidence": "mermaid-lint.txt = [] (exit 0). Unchanged from iter-7."}
  ],
  "summary": {"passed": 7, "failed": 0, "total": 7, "pass_rate": 1.0},
  "timing": {"executor_duration_seconds": 0, "total_duration_seconds": 0},
  "execution_metrics": {},
  "eval_feedback": {
    "overall": "7/7 PASS (up from 4/7 in iter-7). P1 fix lands: prisma.yaml capture-group patterns + extractor.ts relMatch[1] preference. Three assertions flipped (A3, A4, A6) from one upstream change — same leverage pattern as T3 (TypeORM). All 6 remaining ORM profiles (jpa, sqlalchemy, django, activerecord, entity_framework, typeorm) unaffected: they don't use capture groups, so the extractor falls through to the existing tail-based resolver path."
  }
}
