{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "CORE_NO_CI", "name": "No CI/CD configuration found", "shortDescription": {"text": "No CI/CD configuration found"}, "fullDescription": {"text": "Add a CI/CD pipeline: create .github/workflows/ci.yml for GitHub Actions with steps to lint, test, and build on every push and pull request."}, "properties": {"scanner": "repobility-core", "category": "practices", "severity": "medium", "confidence": null, "cwe": "", "owasp": ""}}, {"id": "AIC003", "name": "Duplicated implementation block across source files", "shortDescription": {"text": "Duplicated implementation block across source files"}, "fullDescription": {"text": "Duplicated blocks are a common artifact when generated code is pasted or recreated instead of reused. They increase maintenance cost because every future bug fix must be found in multiple locations."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.86, "cwe": "", "owasp": ""}}]}}, "automationDetails": {"id": "repobility/450"}, "properties": {"repository": "leyu-data-collection-platform/leyu-mobile", "repoUrl": "https://github.com/leyu-data-collection-platform/leyu-mobile.git", "branch": "main"}, "results": [{"ruleId": "CORE_NO_CI", "level": "warning", "message": {"text": "No CI/CD configuration found"}, "properties": {"repobilityId": 23377, "scanner": "repobility-core", "fingerprint": "ca5da3551af97272c4f099fc472740148135a15816b81b90bd862e8f91ec66ce", "category": "practices", "severity": "medium", "confidence": null, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"rule_id": "CORE_NO_CI", "scanner": "repobility-core", "correlation_key": "repo|practices|core_no_ci"}}}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23399, "scanner": "repobility-ai-code-hygiene", "fingerprint": "3d211c3377d6b32b24f36b342173827414ea4e69f5ef34e225137907991aba73", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/profile/presentation/widgets/edit_profile_widget.dart", "duplicate_line": 51, "correlation_key": "fp|3d211c3377d6b32b24f36b342173827414ea4e69f5ef34e225137907991aba73"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/profile/presentation/widgets/profile_main_widget.dart"}, "region": {"startLine": 61}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23398, "scanner": "repobility-ai-code-hygiene", "fingerprint": "191bea3afde4b8a252df6106b3412196df4b0a593d44d39eb97866224cc703ba", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/profile/presentation/pages/main_profile_screen.dart", "duplicate_line": 27, "correlation_key": "fp|191bea3afde4b8a252df6106b3412196df4b0a593d44d39eb97866224cc703ba"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/profile/presentation/pages/profile_page.dart"}, "region": {"startLine": 30}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23397, "scanner": "repobility-ai-code-hygiene", "fingerprint": "a1904f1b8a3d46f3d0cc986418de0aea661196246a577584430e780e3a844a52", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/profile/presentation/pages/change_password_page.dart", "duplicate_line": 26, "correlation_key": "fp|a1904f1b8a3d46f3d0cc986418de0aea661196246a577584430e780e3a844a52"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/profile/presentation/pages/profile_page.dart"}, "region": {"startLine": 29}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23396, "scanner": "repobility-ai-code-hygiene", "fingerprint": "310962b2df0c1983f6f1447bb9e454d50fdaad4732f40135417395f2da67993b", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/profile/presentation/pages/change_password_page.dart", "duplicate_line": 26, "correlation_key": "fp|310962b2df0c1983f6f1447bb9e454d50fdaad4732f40135417395f2da67993b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/profile/presentation/pages/main_profile_screen.dart"}, "region": {"startLine": 26}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23395, "scanner": "repobility-ai-code-hygiene", "fingerprint": "5c103a11cf997f194cf0811cd28f55cc9f42f52e35fe148d6b213132023d5911", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/profile/presentation/pages/change_password_page.dart", "duplicate_line": 17, "correlation_key": "fp|5c103a11cf997f194cf0811cd28f55cc9f42f52e35fe148d6b213132023d5911"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/profile/presentation/pages/edit_profile_page.dart"}, "region": {"startLine": 17}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23394, "scanner": "repobility-ai-code-hygiene", "fingerprint": "2e0fbcd22da6f5f3909483150f300f4a9145bb43aa00519409c4caf856cccc8c", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/core/widgets/image_picker_widget.dart", "duplicate_line": 45, "correlation_key": "fp|2e0fbcd22da6f5f3909483150f300f4a9145bb43aa00519409c4caf856cccc8c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/profile/presentation/controllers/profile_controller.dart"}, "region": {"startLine": 130}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23393, "scanner": "repobility-ai-code-hygiene", "fingerprint": "50898e394da65e9c80075c8d7f4e43f13b55128a25233bd406a821913d07863a", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/home/presentation/widgets/speech_to_text_widget.dart", "duplicate_line": 84, "correlation_key": "fp|50898e394da65e9c80075c8d7f4e43f13b55128a25233bd406a821913d07863a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/home/presentation/widgets/text_to_text_widget.dart"}, "region": {"startLine": 70}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23392, "scanner": "repobility-ai-code-hygiene", "fingerprint": "adb548b4f92ec2f20870bab6acc8cb2c37cb27be0c6d88e9a3c176ca2c2219c7", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/home/presentation/widgets/image_to_text_widget.dart", "duplicate_line": 32, "correlation_key": "fp|adb548b4f92ec2f20870bab6acc8cb2c37cb27be0c6d88e9a3c176ca2c2219c7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/home/presentation/widgets/text_to_text_widget.dart"}, "region": {"startLine": 32}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23391, "scanner": "repobility-ai-code-hygiene", "fingerprint": "22b2c80e5bb7b3194166d163feb2f3f922683b88c0c31575f00ee39b15cf9dbd", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/home/presentation/widgets/task_card_widget.dart", "duplicate_line": 198, "correlation_key": "fp|22b2c80e5bb7b3194166d163feb2f3f922683b88c0c31575f00ee39b15cf9dbd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/home/presentation/widgets/task_instruction_widget.dart"}, "region": {"startLine": 782}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23390, "scanner": "repobility-ai-code-hygiene", "fingerprint": "6c096b53c29686117d985c693d9a93e29ba69b2ef7e6822227ad166a94de9f42", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/home/presentation/widgets/submission_history_bottom_sheet.dart", "duplicate_line": 19, "correlation_key": "fp|6c096b53c29686117d985c693d9a93e29ba69b2ef7e6822227ad166a94de9f42"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/home/presentation/widgets/task_instruction_widget.dart"}, "region": {"startLine": 117}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23389, "scanner": "repobility-ai-code-hygiene", "fingerprint": "2ceeb2915c23e7d522846e5e14309bb89ededf4a6fd5db7d08f639c1ec1b1340", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/home/presentation/pages/task_instruction_page.dart", "duplicate_line": 77, "correlation_key": "fp|2ceeb2915c23e7d522846e5e14309bb89ededf4a6fd5db7d08f639c1ec1b1340"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/home/presentation/widgets/task_instruction_widget.dart"}, "region": {"startLine": 69}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23388, "scanner": "repobility-ai-code-hygiene", "fingerprint": "3bd68922bad50bbbcfc1deb7046430e97d8816c2f28664cb255e5adac0c09c03", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/home/presentation/widgets/image_to_text_widget.dart", "duplicate_line": 32, "correlation_key": "fp|3bd68922bad50bbbcfc1deb7046430e97d8816c2f28664cb255e5adac0c09c03"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/home/presentation/widgets/speech_to_text_widget.dart"}, "region": {"startLine": 34}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23387, "scanner": "repobility-ai-code-hygiene", "fingerprint": "c99660b6112f751dd1648146dfe6562fbc42173e5bf83a76c7986d7e30228f52", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/chatbot/presentation/widgets/chat_bubble_widget.dart", "duplicate_line": 101, "correlation_key": "fp|c99660b6112f751dd1648146dfe6562fbc42173e5bf83a76c7986d7e30228f52"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/chatbot/presentation/widgets/typing_indicator_widget.dart"}, "region": {"startLine": 35}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23386, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1be1a599ab40e9f0dc94d395cdd6b9bcb5ee4b37f7ffecd68206d0bb5c179f05", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/auth/presentation/pages/activate_account_page.dart", "duplicate_line": 63, "correlation_key": "fp|1be1a599ab40e9f0dc94d395cdd6b9bcb5ee4b37f7ffecd68206d0bb5c179f05"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/auth/presentation/widgets/verify_otp_widget.dart"}, "region": {"startLine": 29}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23385, "scanner": "repobility-ai-code-hygiene", "fingerprint": "edb80479ac65bfa550b2dc7bc16614ea5d54645cf80c9f1c375dbdbf0f688ffc", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/auth/presentation/pages/register_page.dart", "duplicate_line": 42, "correlation_key": "fp|edb80479ac65bfa550b2dc7bc16614ea5d54645cf80c9f1c375dbdbf0f688ffc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/auth/presentation/widgets/register_user_info_widget.dart"}, "region": {"startLine": 59}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23384, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ece5ebe78367813b8f20c62bc36e091be4c00ce6f70f4e9ca07242c0e3efb1fd", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/auth/presentation/pages/login_page.dart", "duplicate_line": 42, "correlation_key": "fp|ece5ebe78367813b8f20c62bc36e091be4c00ce6f70f4e9ca07242c0e3efb1fd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/auth/presentation/widgets/register_user_info_widget.dart"}, "region": {"startLine": 58}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23383, "scanner": "repobility-ai-code-hygiene", "fingerprint": "466f09f80df7979925a369adb42debcb388622667a27dc72513de44fe8ecae3f", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/auth/presentation/widgets/register_additional_info.dart", "duplicate_line": 58, "correlation_key": "fp|466f09f80df7979925a369adb42debcb388622667a27dc72513de44fe8ecae3f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/auth/presentation/widgets/register_user_info_widget.dart"}, "region": {"startLine": 44}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23382, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1e57b30ee316ba90a269bb0f9c0fd14990966134cf65b80b95dc8afbaaeb0fc3", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/auth/presentation/pages/register_page.dart", "duplicate_line": 33, "correlation_key": "fp|1e57b30ee316ba90a269bb0f9c0fd14990966134cf65b80b95dc8afbaaeb0fc3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/auth/presentation/widgets/register_terms_conditions_widget.dart"}, "region": {"startLine": 34}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23381, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b3891686006ab003d612746a256f86384012170a85108bff3f617a816e99e753", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/auth/presentation/widgets/register_password_widget.dart", "duplicate_line": 28, "correlation_key": "fp|b3891686006ab003d612746a256f86384012170a85108bff3f617a816e99e753"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/auth/presentation/widgets/register_terms_conditions_widget.dart"}, "region": {"startLine": 31}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23380, "scanner": "repobility-ai-code-hygiene", "fingerprint": "350657889f32eaf22aaa39dbaf468f753128e0fdf731f2ced1aaaf313440f998", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/auth/presentation/pages/register_page.dart", "duplicate_line": 33, "correlation_key": "fp|350657889f32eaf22aaa39dbaf468f753128e0fdf731f2ced1aaaf313440f998"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/auth/presentation/widgets/register_password_widget.dart"}, "region": {"startLine": 31}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23379, "scanner": "repobility-ai-code-hygiene", "fingerprint": "d394ba6d466260ab4b38928d212edd53fcf4aa83088582880369ca8efd854e1c", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/features/auth/presentation/pages/login_page.dart", "duplicate_line": 38, "correlation_key": "fp|d394ba6d466260ab4b38928d212edd53fcf4aa83088582880369ca8efd854e1c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/features/auth/presentation/pages/register_page.dart"}, "region": {"startLine": 37}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23378, "scanner": "repobility-ai-code-hygiene", "fingerprint": "21e48944afa0a018a33a8f6f4d78db8d071d9c7dda0814809f6f2a7a65376fbf", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/core/widgets/date_picker.dart", "duplicate_line": 102, "correlation_key": "fp|21e48944afa0a018a33a8f6f4d78db8d071d9c7dda0814809f6f2a7a65376fbf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/core/widgets/dropdown.dart"}, "region": {"startLine": 132}}}]}]}]}