{"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": "foundry_unresolved_feedback", "name": "Foundry mined unresolved feedback: rangminfather/chflow", "shortDescription": {"text": "Foundry mined unresolved feedback: rangminfather/chflow"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#1\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: rangminfather/chflow#1\nRepo: rangminfather/chflow\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 13\nEdges: 20\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_blueprint_gap", "name": "Foundry mined blueprint gap alignment: rangminfather/chflow", "shortDescription": {"text": "Foundry mined blueprint gap alignment: rangminfather/chflow"}, "fullDescription": {"text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: weak_supervision_needs_review\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#2\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#2\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: rangminfather/chflow#2\nRepo: rangminfather/chflow\nIssue/PR number: 2\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 42\nNode types: {'link_quality': 6, 'pr_file': 4, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2,"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: rangminfather/chflow", "shortDescription": {"text": "Foundry mined assumption checks: rangminfather/chflow"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#1\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: rangminfather/chflow#1\nRepo: rangminfather/chflow\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-5b319359019e1f18\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedbac"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: rangminfather/chflow", "shortDescription": {"text": "Foundry mined bad chains: rangminfather/chflow"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#2\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: rangminfather/chflow#2\nRepo: rangminfather/chflow\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 2\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 4\nLabels: {'api_integration_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'api_or_backend': 1, 'ui_or_frontend': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ee796b97c40430c4\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"p"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.84, "cwe": "", "owasp": ""}}, {"id": "foundry_fake_real_gap", "name": "Foundry mined mock as real or placeholder: rangminfather/chflow", "shortDescription": {"text": "Foundry mined mock as real or placeholder: rangminfather/chflow"}, "fullDescription": {"text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#2\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#2\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: rangminfather/chflow#2\nRepo: rangminfather/chflow\nIssue/PR number: 2\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 42\nNode types: {'link_quality': 6, 'pr_file': 4, 'comment': 2, 'comment_chain': 2, 'alignment': 2, "}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "critical", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42542bbac81dda5b", "name": "Stray `console.log` in TS/JS \u2014 chflow-app/scripts/generate-manual.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chflow-app/scripts/generate-manual.js:89"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09d7a16661faa0b7", "name": "Icon-only button without accessible name \u2014 chflow-app/components/MemberCardModal.tsx:233", "shortDescription": {"text": "Icon-only button without accessible name \u2014 chflow-app/components/MemberCardModal.tsx:233"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8a49979ffc198c7a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 chflow-app/app/layout.tsx:71", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 chflow-app/app/layout.tsx:71"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bd90f701bce68cf8", "name": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/talent/page.tsx:592", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/talent/page.tsx:592"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9679c4428512ac9d", "name": "Stray `console.log` in TS/JS \u2014 chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx:922", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx:922"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8278a0b95695c90", "name": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/review-problems/page.tsx:174", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/review-problems/page.tsx:174"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2d14a980ff0c624", "name": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/notices/board/page.tsx:132", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/notices/board/page.tsx:132"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8cb9dcb10a043fb", "name": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/notices/board/[noticeId]/page.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/notices/board/[noticeId]/page.tsx:313"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3111be5838cdfc19", "name": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/review-upload/page.tsx:226", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/review-upload/page.tsx:226"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c3a8f27182c5e01", "name": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/my-class-attendance/page.tsx:353", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/my-class-attendance/page.tsx:353"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74d857f6ec33407d", "name": "Icon-only button without accessible name \u2014 chflow-app/app/directory/page.tsx:593", "shortDescription": {"text": "Icon-only button without accessible name \u2014 chflow-app/app/directory/page.tsx:593"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ed52b81b392c1400", "name": "TODO/FIXME marker in shipping code \u2014 chflow-app/app/home/page.tsx:658", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 chflow-app/app/home/page.tsx:658"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fcf42c39e8e12d21", "name": "Stray `console.log` in TS/JS \u2014 chflow-app/lib/supabase.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chflow-app/lib/supabase.ts:64"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64093e077dbb5718", "name": "Stray `console.log` in TS/JS \u2014 chflow-app/public/userscripts/chflow-ums-auto.user.js:183", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chflow-app/public/userscripts/chflow-ums-auto.user.js:183"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b10eef02742d9d74", "name": "Insecure pattern 'node_child_process' in chflow-app/scripts/generate-manual.js:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in chflow-app/scripts/generate-manual.js:10"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-81b2cc3a46ed74d3", "name": "Insecure pattern 'direct_innerhtml_assignment' in chflow-app/components/PdfCanvasViewer.tsx:32", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in chflow-app/components/PdfCanvasViewer.tsx:32"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6d4a61d3fb9b212b", "name": "Insecure pattern 'dangerous_innerhtml' in chflow-app/app/layout.tsx:71", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in chflow-app/app/layout.tsx:71"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e61a1df3faa6654", "name": "Insecure pattern 'direct_innerhtml_assignment' in chflow-app/app/signup/page.tsx:264", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in chflow-app/app/signup/page.tsx:264"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa739fa0daf0d64e", "name": "Insecure pattern 'document_write' in chflow-app/app/admin/rearrange/page.tsx:267", "shortDescription": {"text": "Insecure pattern 'document_write' in chflow-app/app/admin/rearrange/page.tsx:267"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-670e422af3106464", "name": "Insecure pattern 'cors_wildcard' in chflow-app/public/cloudflare-worker-ums-probe.js:133", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in chflow-app/public/cloudflare-worker-ums-probe.js:133"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-31c52419440a9957", "name": "Insecure pattern 'cors_wildcard' in MS_AX/chflow-project/supabase/functions/ums-fetch/index.ts:34", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in MS_AX/chflow-project/supabase/functions/ums-fetch/index.ts:34"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e4c8bc607071a912", "name": "Insecure pattern 'cors_wildcard' in MS_AX/chflow-project/supabase/functions/ums-post-bulletin/index.ts:45", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in MS_AX/chflow-project/supabase/functions/ums-post-bulletin/index.ts:45"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9bd2efbeaa24d2f4", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eaa30f158dc93300", "name": "Very large file: chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx (3353 lines)", "shortDescription": {"text": "Very large file: chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx (3353 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f51a4dba89d090d", "name": "Very large file: chflow-app/app/dashboard/page.jsx (1385 lines)", "shortDescription": {"text": "Very large file: chflow-app/app/dashboard/page.jsx (1385 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-88a72d01b8cc58bc", "name": "Very large file: chflow-app/app/signup/page.tsx (1651 lines)", "shortDescription": {"text": "Very large file: chflow-app/app/signup/page.tsx (1651 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8df5ed9750e84315", "name": "Very large file: chflow-app/app/messenger/page.tsx (1503 lines)", "shortDescription": {"text": "Very large file: chflow-app/app/messenger/page.tsx (1503 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b31ca36d9806204", "name": "Very large file: chflow-app/app/admin/members/page.tsx (1191 lines)", "shortDescription": {"text": "Very large file: chflow-app/app/admin/members/page.tsx (1191 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67ac318b3c33bdf3", "name": "Very large file: MS_AX/chflow-project/chflow_wireframe.jsx (1142 lines)", "shortDescription": {"text": "Very large file: MS_AX/chflow-project/chflow_wireframe.jsx (1142 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "2 test file(s) for 132 source file(s) (ratio 0.02). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 173 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 163 placeholder/mock markers across 31 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-186f0d9636af9ec0", "name": "Legacy-named symbol `\uba85\uc131\uad50\ud68c_\ud68c\uc6d0DB_\uac80\uc218\uc6a9_v2` in scripts/build-directory-ocr-validation.py:950", "shortDescription": {"text": "Legacy-named symbol `\uba85\uc131\uad50\ud68c_\ud68c\uc6d0DB_\uac80\uc218\uc6a9_v2` in scripts/build-directory-ocr-validation.py:950"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-edaabc78e5ccd5df", "name": "Legacy-named symbol `directory_photo_crops_v2` in scripts/upload-directory-photo-crops.py:19", "shortDescription": {"text": "Legacy-named symbol `directory_photo_crops_v2` in scripts/upload-directory-photo-crops.py:19"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25c1f8f7594596e8", "name": "Commented-code block (5 lines) in chflow-app/next.config.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in chflow-app/next.config.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-428da66aa11e500e", "name": "Commented-code block (12 lines) in chflow-app/components/Layout.tsx:1", "shortDescription": {"text": "Commented-code block (12 lines) in chflow-app/components/Layout.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e695197794bba804", "name": "Commented-code block (5 lines) in chflow-app/app/departments/d/[id]/page.tsx:29", "shortDescription": {"text": "Commented-code block (5 lines) in chflow-app/app/departments/d/[id]/page.tsx:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f2f2044b0e83101", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/monthly-plan-upload/page.tsx:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/monthly-plan-upload/page.tsx:60"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d6acf1f27515509", "name": "Commented-code block (6 lines) in chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx:456", "shortDescription": {"text": "Commented-code block (6 lines) in chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx:456"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff920e155fefe776", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx:344", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx:344"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a8a6c674ace72a12", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/review-problems/page.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/review-problems/page.tsx:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-357b1cec51351a01", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/monthly-plan/page.tsx:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/monthly-plan/page.tsx:62"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-51625378d2c6525e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/bulletin/page.tsx:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/bulletin/page.tsx:52"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9406fc29b456d139", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/review-upload/page.tsx:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/review-upload/page.tsx:80"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a2b485f36bdf32bf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/my-class/page.tsx:193", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/my-class/page.tsx:193"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f647972cb7c616c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/login/page.tsx:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/login/page.tsx:47"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d2967687cf0309f4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/journal-prefill/route.ts:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/journal-prefill/route.ts:56"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ff326392a016d9a1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/bulletin/latest/route.ts:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/bulletin/latest/route.ts:74"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b929f2aee7d2b149", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/dept-bulletin/latest/route.ts:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/dept-bulletin/latest/route.ts:100"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d77f2e3af090b1d1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/dept-bulletin/pdf/route.ts:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/dept-bulletin/pdf/route.ts:40"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-14ae3824f5c7a9fa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/signup/page.tsx:402", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/signup/page.tsx:402"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cab39fa0a12ce4d3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/myinfo/page.tsx:163", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/myinfo/page.tsx:163"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d56aa601cb1850ef", "name": "Commented-code block (5 lines) in chflow-app/app/admin/members/page.tsx:555", "shortDescription": {"text": "Commented-code block (5 lines) in chflow-app/app/admin/members/page.tsx:555"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8e6bf3ae2bfad40", "name": "Legacy-named symbol `pdf_duplicate_legacy` in chflow-app/app/admin/ops-status/page.tsx:26", "shortDescription": {"text": "Legacy-named symbol `pdf_duplicate_legacy` in chflow-app/app/admin/ops-status/page.tsx:26"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9305d2de18a86e97", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/admin/password-reset/page.tsx:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/admin/password-reset/page.tsx:89"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0bf46cba514f76a7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/bulletin/page.tsx:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/bulletin/page.tsx:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4814c8bac696f565", "name": "Legacy-named symbol `get_messenger_messages_v2` in chflow-app/lib/messenger.ts:125", "shortDescription": {"text": "Legacy-named symbol `get_messenger_messages_v2` in chflow-app/lib/messenger.ts:125"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a856119254ac92bf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/lib/supabase.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/lib/supabase.ts:52"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3886064f4b0efc6c", "name": "Commented-code block (5 lines) in chflow-app/lib/roles.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in chflow-app/lib/roles.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aca39a3ed33784b6", "name": "Commented-code block (5 lines) in chflow-app/lib/bulletin/pdf-browser.ts:50", "shortDescription": {"text": "Commented-code block (5 lines) in chflow-app/lib/bulletin/pdf-browser.ts:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9efe3c62d2b91ee9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/lib/bulletin/pdf-browser.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/lib/bulletin/pdf-browser.ts:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f566f89debe362e", "name": "Commented-code block (5 lines) in chflow-app/lib/bulletin/ums-via-cf.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in chflow-app/lib/bulletin/ums-via-cf.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ada32ef2c9038c6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/lib/bulletin/jubo-sync.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/lib/bulletin/jubo-sync.ts:48"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-202831a280633073", "name": "Commented-code block (5 lines) in chflow-app/public/cloudflare-worker-ums-probe.js:12", "shortDescription": {"text": "Commented-code block (5 lines) in chflow-app/public/cloudflare-worker-ums-probe.js:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ae3c18e41936867", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/public/cloudflare-worker-ums-probe.js:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/public/cloudflare-worker-ums-probe.js:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d9dab6714b83502", "name": "Commented-code block (13 lines) in chflow-app/public/userscripts/chflow-ums-auto.user.js:1", "shortDescription": {"text": "Commented-code block (13 lines) in chflow-app/public/userscripts/chflow-ums-auto.user.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de6cab3622fbd23a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/public/userscripts/chflow-ums-auto.user.js:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/public/userscripts/chflow-ums-auto.user.js:112"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70f9a1992316b21c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 MS_AX/chflow-project/supabase/functions/ums-fetch/index.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 MS_AX/chflow-project/supabase/functions/ums-fetch/index.ts:48"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44566c2d830626c5", "name": "Commented-code block (6 lines) in MS_AX/chflow-project/supabase/functions/ums-post-bulletin/index.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in MS_AX/chflow-project/supabase/functions/ums-post-bulletin/index.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2a8ab7adca2461c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 MS_AX/chflow-project/supabase/functions/ums-post-bulletin/index.ts:179", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 MS_AX/chflow-project/supabase/functions/ums-post-bulletin/index.ts:179"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ae3883595aca3ef6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-expo/App.tsx:209", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-expo/App.tsx:209"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-030da566069872e9", "name": "15 env vars used in code but missing from .env.example", "shortDescription": {"text": "15 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `BULLETIN_CREDS_ENCRYPTION_KEY`, `CHROMIUM_EXECUTABLE_PATH`, `CHROMIUM_PACK_URL`, `MANUAL_BASE_URL`, `MANUAL_SKIP_GIT`, `MANUAL_TEST_PW`, `MIN_ANDROID_BUILD`, `NODE_ENV` + 7 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ngenerate_icons.py:make_icon, generate_icons.py:make_ico\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/17814"}, "properties": {"repository": "rangminfather/chflow", "repoUrl": "https://github.com/rangminfather/chflow", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: rangminfather/chflow"}, "properties": {"repobilityId": 369483, "scanner": "foundry_dataset", "fingerprint": "2a725e522fc3bc75e995739dac5471a914e6070d4ad548e20cfcd357f13e576d", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"ui_or_frontend": 1, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 20, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 2, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 13, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "rangminfather/chflow#1", "issue_number": "1", "quality_tiers": {"unresolved": 4}, "repo_full_name": "rangminfather/chflow", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-449c6f2a1e0690a6", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"ui_or_frontend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#1\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#1\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: rangminfather/chflow#1\nRepo: rangminfather/chflow\nIssue/PR number: 1\nGraph consistency label: needs_more_evidence\nNodes: 13\nEdges: 20\nNode types: {'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_touches_file': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'ui_or_frontend': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/rangminfather/chflow", "source_id": "graph-query-motif_query-531d90b7c88e34a3", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "rangminfather/chflow", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: rangminfather/chflow"}, "properties": {"repobilityId": 355157, "scanner": "foundry_dataset", "fingerprint": "d99063d945624ef4c9b1e01192ab9a82fe656cdfeb6800af9b35034e72ae26ef", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"api_or_backend": 1, "ui_or_frontend": 3, "deployment_env_gap": 1, "api_integration_gap": 1, "generated_provenance": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "self_attested_unverified": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"self_attested_unverified": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 42, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 4, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 23, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 4, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "rangminfather/chflow#2", "issue_number": "2", "quality_tiers": {"assumption_check": 2, "weak_supervision": 4}, "repo_full_name": "rangminfather/chflow", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-885a2b28097a3668", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 15}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: weak_supervision_needs_review\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#2\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#2\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: rangminfather/chflow#2\nRepo: rangminfather/chflow\nIssue/PR number: 2\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 42\nNode types: {'link_quality': 6, 'pr_file': 4, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 6, 'thread_touches_file': 4, 'issue_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'self_attested_unverified': 4, 'ui_or_frontend': 3, 'self_attested_or_generated_fix_unverified': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'generated_provenance': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'self_attested_unverified': 8}\nQuality tiers: {'weak_supervision': 4, 'assumption_check': 2}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/rangminfather/chflow", "source_id": "graph-query-motif_query-f87ff36e5578eea6", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "rangminfather/chflow", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: rangminfather/chflow"}, "properties": {"repobilityId": 311519, "scanner": "foundry_dataset", "fingerprint": "8f97255bba259d9073d611ad2a8ea03081acaa0aa54eefe77de76fa2a261c096", "category": "practices", "severity": "medium", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "assumption_checks", "synthetic": false, "thread_key": "rangminfather/chflow#1", "human_labels": ["deployment_env_gap", "human_feedback_general", "ui_or_frontend"], "issue_number": "1", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "rangminfather/chflow", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-8ebd73cf9a91dd53", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 1, "docs": 5, "schemas": 1, "architecture": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 1}, "linked_commit_count": 0, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 2}, "text": "Comment chain pattern product: assumption_checks\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#1\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: rangminfather/chflow#1\nRepo: rangminfather/chflow\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-5b319359019e1f18\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/rangminfather/chflow/pull/1\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: rangminfather/chflow\\nAuthor: rangminfather (User)\\nURL: https://github.com/rangminfather/chflow/pull/1\\nTitle: style(theme): \uc804\uc5ed \uc0c9 \ub9e4\ud551 (\uc544\uc774\ubcf4\ub9ac+\uc138\uc774\uc9c0)\\nBody:\\nglobals.css \ud55c \ud30c\uc77c\ub9cc \uc218\uc815. Tailwind \uc0c9 \ud074\ub798\uc2a4\ub97c \ud14c\ub9c8 \ud1a0\ud070\uc5d0 \uc7ac\uc5f0\uacb0(\uc2dc\uac01 \uc804\uc6a9, \ub85c\uc9c1 0). \ud504\ub9ac\ubdf0 \ud655\uc778\uc6a9 PR.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-0f9a90ba571ba02e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/rangminfather/chflow/pull/1#issuecomment-4583201105\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: rangminfather/chflow\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/rangminfather/chflow/pull/1#issuecomment-4583201105\\nTitle: \\nBody:\\n[vc]: #B51g+0fDXknLO5AejcNsbhSIp4adOk/P2YZvYVXsksc=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJjaGZsb3ctYXBwIiwicHJvamVjdElkIjoicHJqX3kyNlBubEJwVnR3UUxEM21WNFdSNHljeXVIWHYiLCJyb290RGlyZWN0b3J5IjoiY2hmbG93LWFwcCIsImxpdmVGZWVkYmFjayI6eyJyZXNvbHZlZCI6MCwidW5yZXNvbHZlZCI6MCwidG90YWwiOjAsImxpbmsiOiIifSwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL3JhbmdtaW5mYXRoZXJzLXByb2plY3RzL2NoZmxvdy1hcHAvOWpyM3Rtcjk1c1lIcTJwdVRuSzNORmUxUWtCciIsInByZXZpZXdVcmwiOiIiLCJuZXh0Q29tbWl0U3RhdHVzIjoiRkFJTEVEIn0seyJuYW1lIjoiY2hmbG93IiwicHJvamVjdElkIjoicHJqX1hWT1EwQm5KUmlGelVpdk9RTjRyY2lydUJCbXYiLCJyb290RGlyZWN0b3J5IjpudWxsLCJsaXZlRmVlZGJhY2siOnsicmVzb2x2ZWQiOjAsInVucmVzb2x2ZWQiOjAsInRvdGFsIjowLCJsaW5rIjoiY2hmbG93LWdpdC10aGVtZS1nbG9iYWwtY29sb3ItbWFwcGluZy1yYW5nbWluZmF0aGVycy1wcm9qZWN0cy52ZXJjZWwuYXBwIn0sImluc3BlY3RvclVybCI6Imh0dHBzOi8vdmVyY2VsLmNvbS9yYW5nbWluZmF0aGVycy1wcm9qZWN0cy9jaGZsb3cvR3RSRlBNMWdXRGJaRmhLU2Q1dnEzS01vSmhVeiIsInByZXZpZXdVcmwiOiJjaGZsb3ctZ2l0LXRoZW1\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-71c691bcb05e045e\",\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/rangminfather/chflow", "source_id": "comment-chain-pattern-assumption_checks-77f6ffa96a5be9ed", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/assumption_checks/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "rangminfather/chflow", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: rangminfather/chflow"}, "properties": {"repobilityId": 322305, "scanner": "foundry_dataset", "fingerprint": "89604d872b3d2a24fbd367a3ff93cffe34efb12c2d68277ea8d448f8661c8ab8", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "rangminfather/chflow#2", "human_labels": ["api_integration_gap", "api_or_backend", "deployment_env_gap", "ui_or_frontend"], "issue_number": "2", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.694, "repo_full_name": "rangminfather/chflow", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-20ccef10623e1478", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 1, "docs": 5, "schemas": 1, "architecture": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 4, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 3}, "linked_commit_count": 2, "helicopter_view_count": 2, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 2}, "text": "Comment chain pattern product: bad_chains\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#2\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: rangminfather/chflow#2\nRepo: rangminfather/chflow\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 2\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 4\nLabels: {'api_integration_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'api_or_backend': 1, 'ui_or_frontend': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ee796b97c40430c4\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/rangminfather/chflow/pull/2\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: rangminfather/chflow\\nAuthor: rangminfather (User)\\nURL: https://github.com/rangminfather/chflow/pull/2\\nTitle: feat(manual): \uc11c\ubc84\uc0ac\uc774\ub4dc PDF \ub2e4\uc6b4\ub85c\ub4dc \ubc84\ud2bc\\nBody:\\n## Summary\\n- `GET /api/manual/pdf` API \ub77c\uc6b0\ud2b8 \ucd94\uac00 (puppeteer-core + @sparticuz/chromium-min)\\n- \ub9e4\ub274\uc5bc \ud5e4\ub354\uc5d0 'PDF' \ubc84\ud2bc \ucd94\uac00 \u2014 \ubaa8\ubc14\uc77c\u00b7Expo WebView\uc5d0\uc11c PDF \ub2e4\uc6b4\ub85c\ub4dc \uac00\ub2a5\\n- print \ubbf8\ub514\uc5b4 \ud0c0\uc785 \uc120\uc801\uc6a9 \u2192 manifest \ub85c\ub4dc \u2192 \uc774\ubbf8\uc9c0 \uc644\ub8cc \ud6c4 A4 PDF \ubc18\ud658\\n\\n## \ubc30\ud3ec \ucc38\uace0\\n- `CHROMIUM_PACK_URL` \ud658\uacbd\ubcc0\uc218 \uc5c6\uc5b4\ub3c4 \uae30\ubcf8\uac12\uc73c\ub85c \ub3d9\uc791\\n- \ucf5c\ub4dc \uc2a4\ud0c0\ud2b8 \uccab \ud638\ucd9c ~20~30\ucd08 (Chromium \ub2e4\uc6b4\ub85c\ub4dc), \uc774\ud6c4 ~5~10\ucd08\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  },\n  {\n    \"id\": \"github-feedback-comment-56bac9049bc7efec\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/rangminfather/chflow/pull/2#issuecomment-4705624254\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: rangminfather/chflow\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/rangminfather/chflow/pull/2#issuecomment-4705624254\\nTitle: \\nBody:\\n[vc]: #W2uHalapnr1dS4DFLZMOVvi8/NT7e3zSyv64feOXe5g=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJjaGZsb3ctYXBwIiwicHJvamVjdElkIjoicHJqX3kyNlBubEJwVnR3UUxEM21WNFdSNHljeXVIWHYiLCJsaXZlRmVlZGJhY2siOnsicmVzb2x2ZWQiOjAsInVucmVzb2x2ZWQiOjAsInRvdGFsIjowLCJsaW5rIjoiIn0sImluc3BlY3RvclVybCI6Imh0dHBzOi8vdmVyY2VsLmNvbS9yYW5nbWluZmF0aGVycy1wcm9qZWN0cy9jaGZsb3ctYXBwL0FkVEptMmI3aXlUM0ttMVN4ZEdLekZKVEM0aUUiLCJwcmV2aWV3VXJsIjoiIiwibmV4dENvbW1pdFN0YXR1cyI6IkZBSUxFRCJ9XX0=\\nThe latest updates on your projects. Learn more about [Vercel for GitHub](https://vercel.link/github-learn-more).\\n\\n| Project | Deployment | Actions | Updated (UTC) |\\n| :--- | :----- | :------ | :------ |\\n| [chflow-app](https://vercel.com/rangminfathers-projects/chflow-app) | ![Error](https://vercel.com/sta\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/rangminfather/chflow", "source_id": "comment-chain-pattern-bad_chains-8425b90b1bffa0b9", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "rangminfather/chflow", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: rangminfather/chflow"}, "properties": {"repobilityId": 326989, "scanner": "foundry_dataset", "fingerprint": "febe576a1340d9b641cc6f8e334a4f29ff4d78c0244fdedfeed694c5e35a5f1d", "category": "practices", "severity": "critical", "confidence": 0.82, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Mock, sample, placeholder, or self-attested behavior treated as real", "intent": "Hard negatives for fake completeness and missing real data paths.", "labels": {"api_or_backend": 1, "ui_or_frontend": 3, "deployment_env_gap": 1, "api_integration_gap": 1, "generated_provenance": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "self_attested_unverified": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 8}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 42, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 4, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 23, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 4, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "rangminfather/chflow#2", "issue_number": "2", "quality_tiers": {"assumption_check": 2, "weak_supervision": 4}, "repo_full_name": "rangminfather/chflow", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-e6c7c8a609b24002", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 15}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#2\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: rangminfather/chflow\nThread: rangminfather/chflow#2\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: rangminfather/chflow#2\nRepo: rangminfather/chflow\nIssue/PR number: 2\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 42\nNode types: {'link_quality': 6, 'pr_file': 4, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 8, 'chain_has_link_quality': 6, 'thread_touches_file': 4, 'issue_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'self_attested_unverified': 4, 'ui_or_frontend': 3, 'self_attested_or_generated_fix_unverified': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'generated_provenance': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'self_attested_unverified': 8}\nQuality tiers: {'weak_supervision': 4, 'assumption_check': 2}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/rangminfather/chflow", "source_id": "graph-query-motif_query-7e71414292b4d9f0", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/mock_as_real_or_placeholder/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "rangminfather/chflow", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-42542bbac81dda5b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chflow-app/scripts/generate-manual.js:89"}, "properties": {"repobilityId": "eb5705fa5881855d", "scanner": "scanner-primary", "fingerprint": "42542bbac81dda5b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09d7a16661faa0b7", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 chflow-app/components/MemberCardModal.tsx:233"}, "properties": {"repobilityId": "5d11c34381ec0497", "scanner": "scanner-primary", "fingerprint": "09d7a16661faa0b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-8a49979ffc198c7a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 chflow-app/app/layout.tsx:71"}, "properties": {"repobilityId": "bb64322fac7d39e2", "scanner": "scanner-primary", "fingerprint": "8a49979ffc198c7a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bd90f701bce68cf8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/talent/page.tsx:592"}, "properties": {"repobilityId": "79564b9936a4ca4d", "scanner": "scanner-primary", "fingerprint": "bd90f701bce68cf8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9679c4428512ac9d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx:922"}, "properties": {"repobilityId": "8a2e8da25f482e27", "scanner": "scanner-primary", "fingerprint": "9679c4428512ac9d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8278a0b95695c90", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/review-problems/page.tsx:174"}, "properties": {"repobilityId": "85357cab4b4a8fab", "scanner": "scanner-primary", "fingerprint": "c8278a0b95695c90", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d2d14a980ff0c624", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/notices/board/page.tsx:132"}, "properties": {"repobilityId": "25a96857f0f3220c", "scanner": "scanner-primary", "fingerprint": "d2d14a980ff0c624", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a8cb9dcb10a043fb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/notices/board/[noticeId]/page.tsx:313"}, "properties": {"repobilityId": "f21804cfe1815b95", "scanner": "scanner-primary", "fingerprint": "a8cb9dcb10a043fb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3111be5838cdfc19", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/review-upload/page.tsx:226"}, "properties": {"repobilityId": "dbc5e96ded0fd789", "scanner": "scanner-primary", "fingerprint": "3111be5838cdfc19", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7c3a8f27182c5e01", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 chflow-app/app/departments/d/[id]/my-class-attendance/page.tsx:353"}, "properties": {"repobilityId": "9bed803c97d7bf80", "scanner": "scanner-primary", "fingerprint": "7c3a8f27182c5e01", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-74d857f6ec33407d", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 chflow-app/app/directory/page.tsx:593"}, "properties": {"repobilityId": "cfe0a4fd74140dc0", "scanner": "scanner-primary", "fingerprint": "74d857f6ec33407d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-ed52b81b392c1400", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 chflow-app/app/home/page.tsx:658"}, "properties": {"repobilityId": "9aefe12e48e0732d", "scanner": "scanner-primary", "fingerprint": "ed52b81b392c1400", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-fcf42c39e8e12d21", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chflow-app/lib/supabase.ts:64"}, "properties": {"repobilityId": "b0fa9bbf545111dc", "scanner": "scanner-primary", "fingerprint": "fcf42c39e8e12d21", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64093e077dbb5718", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chflow-app/public/userscripts/chflow-ums-auto.user.js:183"}, "properties": {"repobilityId": "5c6fc665b9cd1869", "scanner": "scanner-primary", "fingerprint": "64093e077dbb5718", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b10eef02742d9d74", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in chflow-app/scripts/generate-manual.js:10"}, "properties": {"repobilityId": "1e97dd1b23e6c994", "scanner": "scanner-primary", "fingerprint": "b10eef02742d9d74", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "chflow-app/scripts/generate-manual.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-81b2cc3a46ed74d3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in chflow-app/components/PdfCanvasViewer.tsx:32"}, "properties": {"repobilityId": "748b7e0e62d36823", "scanner": "scanner-primary", "fingerprint": "81b2cc3a46ed74d3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "chflow-app/components/PdfCanvasViewer.tsx"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-6d4a61d3fb9b212b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in chflow-app/app/layout.tsx:71"}, "properties": {"repobilityId": "2e2b56508af835db", "scanner": "scanner-primary", "fingerprint": "6d4a61d3fb9b212b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "chflow-app/app/layout.tsx"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-0e61a1df3faa6654", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in chflow-app/app/signup/page.tsx:264"}, "properties": {"repobilityId": "00cce33b60574dc8", "scanner": "scanner-primary", "fingerprint": "0e61a1df3faa6654", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "chflow-app/app/signup/page.tsx"}, "region": {"startLine": 264}}}]}, {"ruleId": "scanner-aa739fa0daf0d64e", "level": "note", "message": {"text": "Insecure pattern 'document_write' in chflow-app/app/admin/rearrange/page.tsx:267"}, "properties": {"repobilityId": "54d33bc204bbc6a3", "scanner": "scanner-primary", "fingerprint": "aa739fa0daf0d64e", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "chflow-app/app/admin/rearrange/page.tsx"}, "region": {"startLine": 267}}}]}, {"ruleId": "scanner-670e422af3106464", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in chflow-app/public/cloudflare-worker-ums-probe.js:133"}, "properties": {"repobilityId": "419a68a0d7c30d4f", "scanner": "scanner-primary", "fingerprint": "670e422af3106464", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "chflow-app/public/cloudflare-worker-ums-probe.js"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-31c52419440a9957", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in MS_AX/chflow-project/supabase/functions/ums-fetch/index.ts:34"}, "properties": {"repobilityId": "2e022e8d7189e7b5", "scanner": "scanner-primary", "fingerprint": "31c52419440a9957", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "MS_AX/chflow-project/supabase/functions/ums-fetch/index.ts"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-e4c8bc607071a912", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in MS_AX/chflow-project/supabase/functions/ums-post-bulletin/index.ts:45"}, "properties": {"repobilityId": "e23c3c9813068c17", "scanner": "scanner-primary", "fingerprint": "e4c8bc607071a912", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "MS_AX/chflow-project/supabase/functions/ums-post-bulletin/index.ts"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-9bd2efbeaa24d2f4", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "93a674172a122a58", "scanner": "scanner-primary", "fingerprint": "9bd2efbeaa24d2f4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "chflow-app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-eaa30f158dc93300", "level": "note", "message": {"text": "Very large file: chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx (3353 lines)"}, "properties": {"repobilityId": "30bb0cac59598a46", "scanner": "scanner-primary", "fingerprint": "eaa30f158dc93300", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f51a4dba89d090d", "level": "note", "message": {"text": "Very large file: chflow-app/app/dashboard/page.jsx (1385 lines)"}, "properties": {"repobilityId": "54bbab9d08dfd990", "scanner": "scanner-primary", "fingerprint": "1f51a4dba89d090d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-88a72d01b8cc58bc", "level": "note", "message": {"text": "Very large file: chflow-app/app/signup/page.tsx (1651 lines)"}, "properties": {"repobilityId": "a80bac3612f6133c", "scanner": "scanner-primary", "fingerprint": "88a72d01b8cc58bc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8df5ed9750e84315", "level": "note", "message": {"text": "Very large file: chflow-app/app/messenger/page.tsx (1503 lines)"}, "properties": {"repobilityId": "805c2c382b4be042", "scanner": "scanner-primary", "fingerprint": "8df5ed9750e84315", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4b31ca36d9806204", "level": "note", "message": {"text": "Very large file: chflow-app/app/admin/members/page.tsx (1191 lines)"}, "properties": {"repobilityId": "381194a991c7fec0", "scanner": "scanner-primary", "fingerprint": "4b31ca36d9806204", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-67ac318b3c33bdf3", "level": "note", "message": {"text": "Very large file: MS_AX/chflow-project/chflow_wireframe.jsx (1142 lines)"}, "properties": {"repobilityId": "98585c502b90545c", "scanner": "scanner-primary", "fingerprint": "67ac318b3c33bdf3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "61efbf8881eca2c0", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "28a8e6c37221edc9", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "6748b16d018998dc", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "260f1c9e6388baa3", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "eea983a7c4805f1e", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "40a971ecbeda4676", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "2879813d2ec4ed1a", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "e6184b0c8142c488", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "9f39ea158a6e31d5", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-186f0d9636af9ec0", "level": "note", "message": {"text": "Legacy-named symbol `\uba85\uc131\uad50\ud68c_\ud68c\uc6d0DB_\uac80\uc218\uc6a9_v2` in scripts/build-directory-ocr-validation.py:950"}, "properties": {"repobilityId": "c4cc6064900aca2f", "scanner": "scanner-primary", "fingerprint": "186f0d9636af9ec0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-edaabc78e5ccd5df", "level": "note", "message": {"text": "Legacy-named symbol `directory_photo_crops_v2` in scripts/upload-directory-photo-crops.py:19"}, "properties": {"repobilityId": "f3cd8250893c414d", "scanner": "scanner-primary", "fingerprint": "edaabc78e5ccd5df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-25c1f8f7594596e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in chflow-app/next.config.ts:3"}, "properties": {"repobilityId": "a4e2785872c800b0", "scanner": "scanner-primary", "fingerprint": "25c1f8f7594596e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-428da66aa11e500e", "level": "none", "message": {"text": "Commented-code block (12 lines) in chflow-app/components/Layout.tsx:1"}, "properties": {"repobilityId": "1969674e1829e092", "scanner": "scanner-primary", "fingerprint": "428da66aa11e500e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e695197794bba804", "level": "none", "message": {"text": "Commented-code block (5 lines) in chflow-app/app/departments/d/[id]/page.tsx:29"}, "properties": {"repobilityId": "8b114462ae24dc24", "scanner": "scanner-primary", "fingerprint": "e695197794bba804", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f2f2044b0e83101", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/monthly-plan-upload/page.tsx:60"}, "properties": {"repobilityId": "9f8950e188825ada", "scanner": "scanner-primary", "fingerprint": "8f2f2044b0e83101", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9d6acf1f27515509", "level": "none", "message": {"text": "Commented-code block (6 lines) in chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx:456"}, "properties": {"repobilityId": "48fd3f2af9381236", "scanner": "scanner-primary", "fingerprint": "9d6acf1f27515509", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff920e155fefe776", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/weekly-bulletin/page.tsx:344"}, "properties": {"repobilityId": "7e5b9ed019d160a2", "scanner": "scanner-primary", "fingerprint": "ff920e155fefe776", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a8a6c674ace72a12", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/review-problems/page.tsx:79"}, "properties": {"repobilityId": "f5447ab32062f916", "scanner": "scanner-primary", "fingerprint": "a8a6c674ace72a12", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-357b1cec51351a01", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/monthly-plan/page.tsx:62"}, "properties": {"repobilityId": "938837800f949856", "scanner": "scanner-primary", "fingerprint": "357b1cec51351a01", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-51625378d2c6525e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/bulletin/page.tsx:52"}, "properties": {"repobilityId": "67747d5f4b82012e", "scanner": "scanner-primary", "fingerprint": "51625378d2c6525e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9406fc29b456d139", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/review-upload/page.tsx:80"}, "properties": {"repobilityId": "18e80a199361f277", "scanner": "scanner-primary", "fingerprint": "9406fc29b456d139", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a2b485f36bdf32bf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/departments/d/[id]/my-class/page.tsx:193"}, "properties": {"repobilityId": "4341519bc1dcb178", "scanner": "scanner-primary", "fingerprint": "a2b485f36bdf32bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f647972cb7c616c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/login/page.tsx:47"}, "properties": {"repobilityId": "1e1d5e9c04fc2162", "scanner": "scanner-primary", "fingerprint": "5f647972cb7c616c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d2967687cf0309f4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/journal-prefill/route.ts:56"}, "properties": {"repobilityId": "233029d390080b13", "scanner": "scanner-primary", "fingerprint": "d2967687cf0309f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ff326392a016d9a1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/bulletin/latest/route.ts:74"}, "properties": {"repobilityId": "a4dc60404ef33b63", "scanner": "scanner-primary", "fingerprint": "ff326392a016d9a1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b929f2aee7d2b149", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/dept-bulletin/latest/route.ts:100"}, "properties": {"repobilityId": "36535c76a51baf57", "scanner": "scanner-primary", "fingerprint": "b929f2aee7d2b149", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d77f2e3af090b1d1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/api/dept-bulletin/pdf/route.ts:40"}, "properties": {"repobilityId": "e1a529ea8a3e048d", "scanner": "scanner-primary", "fingerprint": "d77f2e3af090b1d1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-14ae3824f5c7a9fa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/signup/page.tsx:402"}, "properties": {"repobilityId": "27208119cf0a9d95", "scanner": "scanner-primary", "fingerprint": "14ae3824f5c7a9fa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cab39fa0a12ce4d3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/myinfo/page.tsx:163"}, "properties": {"repobilityId": "3179805361d8d1d3", "scanner": "scanner-primary", "fingerprint": "cab39fa0a12ce4d3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d56aa601cb1850ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in chflow-app/app/admin/members/page.tsx:555"}, "properties": {"repobilityId": "057c30a267fb736e", "scanner": "scanner-primary", "fingerprint": "d56aa601cb1850ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8e6bf3ae2bfad40", "level": "note", "message": {"text": "Legacy-named symbol `pdf_duplicate_legacy` in chflow-app/app/admin/ops-status/page.tsx:26"}, "properties": {"repobilityId": "daaad55fcd9c1761", "scanner": "scanner-primary", "fingerprint": "a8e6bf3ae2bfad40", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9305d2de18a86e97", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/admin/password-reset/page.tsx:89"}, "properties": {"repobilityId": "c998394573c6350a", "scanner": "scanner-primary", "fingerprint": "9305d2de18a86e97", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0bf46cba514f76a7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/app/bulletin/page.tsx:51"}, "properties": {"repobilityId": "0eaa4fb14cff3ca7", "scanner": "scanner-primary", "fingerprint": "0bf46cba514f76a7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4814c8bac696f565", "level": "note", "message": {"text": "Legacy-named symbol `get_messenger_messages_v2` in chflow-app/lib/messenger.ts:125"}, "properties": {"repobilityId": "071c0275fd70b66a", "scanner": "scanner-primary", "fingerprint": "4814c8bac696f565", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a856119254ac92bf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/lib/supabase.ts:52"}, "properties": {"repobilityId": "22a8c6582f83e213", "scanner": "scanner-primary", "fingerprint": "a856119254ac92bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3886064f4b0efc6c", "level": "none", "message": {"text": "Commented-code block (5 lines) in chflow-app/lib/roles.ts:92"}, "properties": {"repobilityId": "5e5afd3ebeba9c5e", "scanner": "scanner-primary", "fingerprint": "3886064f4b0efc6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aca39a3ed33784b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in chflow-app/lib/bulletin/pdf-browser.ts:50"}, "properties": {"repobilityId": "6152dc47d38183de", "scanner": "scanner-primary", "fingerprint": "aca39a3ed33784b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9efe3c62d2b91ee9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/lib/bulletin/pdf-browser.ts:65"}, "properties": {"repobilityId": "68251ad9ee143823", "scanner": "scanner-primary", "fingerprint": "9efe3c62d2b91ee9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f566f89debe362e", "level": "none", "message": {"text": "Commented-code block (5 lines) in chflow-app/lib/bulletin/ums-via-cf.ts:4"}, "properties": {"repobilityId": "9eb80ba1404791f3", "scanner": "scanner-primary", "fingerprint": "5f566f89debe362e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ada32ef2c9038c6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/lib/bulletin/jubo-sync.ts:48"}, "properties": {"repobilityId": "c7ff738a4d397926", "scanner": "scanner-primary", "fingerprint": "0ada32ef2c9038c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-202831a280633073", "level": "none", "message": {"text": "Commented-code block (5 lines) in chflow-app/public/cloudflare-worker-ums-probe.js:12"}, "properties": {"repobilityId": "b90d8300f7f4a945", "scanner": "scanner-primary", "fingerprint": "202831a280633073", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ae3c18e41936867", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/public/cloudflare-worker-ums-probe.js:21"}, "properties": {"repobilityId": "2b07d1b28978daea", "scanner": "scanner-primary", "fingerprint": "2ae3c18e41936867", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9d9dab6714b83502", "level": "none", "message": {"text": "Commented-code block (13 lines) in chflow-app/public/userscripts/chflow-ums-auto.user.js:1"}, "properties": {"repobilityId": "04fa86b2aa3f97af", "scanner": "scanner-primary", "fingerprint": "9d9dab6714b83502", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de6cab3622fbd23a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-app/public/userscripts/chflow-ums-auto.user.js:112"}, "properties": {"repobilityId": "cd18486162794ad3", "scanner": "scanner-primary", "fingerprint": "de6cab3622fbd23a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-70f9a1992316b21c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 MS_AX/chflow-project/supabase/functions/ums-fetch/index.ts:48"}, "properties": {"repobilityId": "0f0d3be07c70718b", "scanner": "scanner-primary", "fingerprint": "70f9a1992316b21c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-44566c2d830626c5", "level": "none", "message": {"text": "Commented-code block (6 lines) in MS_AX/chflow-project/supabase/functions/ums-post-bulletin/index.ts:3"}, "properties": {"repobilityId": "73cc714ed9ecb592", "scanner": "scanner-primary", "fingerprint": "44566c2d830626c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2a8ab7adca2461c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 MS_AX/chflow-project/supabase/functions/ums-post-bulletin/index.ts:179"}, "properties": {"repobilityId": "195b6f153e019dae", "scanner": "scanner-primary", "fingerprint": "d2a8ab7adca2461c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ae3883595aca3ef6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 chflow-expo/App.tsx:209"}, "properties": {"repobilityId": "32cf0b7ac4cdd9e0", "scanner": "scanner-primary", "fingerprint": "ae3883595aca3ef6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-030da566069872e9", "level": "note", "message": {"text": "15 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "0519c1c0e8c1f8e4", "scanner": "scanner-primary", "fingerprint": "030da566069872e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "d558ad3c8f863e14", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "17d700f7b264ae94", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "ede3f5447f0c63d1", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "bd760f04904dc336", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "4bd4b0c865c34cb3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}