{"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_assumption_check", "name": "Foundry mined assumption checks: shyangyundong-dot/KBIMPORTER", "shortDescription": {"text": "Foundry mined assumption checks: shyangyundong-dot/KBIMPORTER"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: shyangyundong-dot/KBIMPORTER\nThread: shyangyundong-dot/KBIMPORTER#1\nOutcome: claimed_resolved_with_verification_signal\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: github_or_motif_graph_without_source_files\nReasons: link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: shyangyundong-dot/KBIMPORTER#1\nRepo: shyangyundong-dot/KBIMPORTER\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_verification_signal\nComment count: 2\nLinked commit count: 6\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'runtime_failure': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e999249f202fe502\",\n    \"kind\": \"issue_body\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/shyangyundong-dot/KBIMPORTER/issue"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "scanner-79eb8a3229404236", "name": "Possibly dead Python function: cmd_audio", "shortDescription": {"text": "Possibly dead Python function: cmd_audio"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df72862e5070295c", "name": "Possibly dead Python function: cmd_debug_biji", "shortDescription": {"text": "Possibly dead Python function: cmd_debug_biji"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad674be66601d524", "name": "Possibly dead Python function: cmd_schema_recipe", "shortDescription": {"text": "Possibly dead Python function: cmd_schema_recipe"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c85de1c824bfd5d", "name": "Possibly dead Python function: cmd_export_links", "shortDescription": {"text": "Possibly dead Python function: cmd_export_links"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "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-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-faccb9061e9b52a0", "name": "No README detected", "shortDescription": {"text": "No README detected"}, "fullDescription": {"text": "No README file was found. Generated repos without README context are hard to operate, validate, or safely hand off."}, "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 114 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, operator-readme. 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-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-319e66a630e14977", "name": "2 env vars used in code but missing from .env.example", "shortDescription": {"text": "2 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `BIJI_SKIP_TOPIC_FILTER`, `EDITOR`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "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:\nkbimporter/biji_api.py:iter_raw_notes, kbimporter/biji_api.py:iter_import_notes\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/19595"}, "properties": {"repository": "shyangyundong-dot/KBIMPORTER", "repoUrl": "https://github.com/shyangyundong-dot/KBIMPORTER", "branch": "main"}, "results": [{"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: shyangyundong-dot/KBIMPORTER"}, "properties": {"repobilityId": 312256, "scanner": "foundry_dataset", "fingerprint": "b73ffe66eb60f86a04758dbeec4c41d5a2673f98886f15586f723ce0359fa94a", "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": "shyangyundong-dot/KBIMPORTER#1", "human_labels": ["deployment_env_gap", "runtime_failure"], "issue_number": "1", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_verification_signal", "source_backed": false, "max_confidence": 0.65, "repo_full_name": "shyangyundong-dot/KBIMPORTER", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-20d5d7b4df51f255", "helicopter_views": {}, "artifact_families": {}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "github_or_motif_graph_without_source_files", "changed_file_labels": {}, "linked_commit_count": 6, "helicopter_view_count": 0, "source_artifact_count": 0, "classification_reasons": ["link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 0, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: shyangyundong-dot/KBIMPORTER\nThread: shyangyundong-dot/KBIMPORTER#1\nOutcome: claimed_resolved_with_verification_signal\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: github_or_motif_graph_without_source_files\nReasons: link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: shyangyundong-dot/KBIMPORTER#1\nRepo: shyangyundong-dot/KBIMPORTER\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_verification_signal\nComment count: 2\nLinked commit count: 6\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'runtime_failure': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e999249f202fe502\",\n    \"kind\": \"issue_body\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/shyangyundong-dot/KBIMPORTER/issues/1\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: issue_body\\nRepo: shyangyundong-dot/KBIMPORTER\\nAuthor: shyangyundong-dot (User)\\nURL: https://github.com/shyangyundong-dot/KBIMPORTER/issues/1\\nTitle: PRD: Architecture Improvements \u2014 KBImporter\\nBody:\\n# PRD: Architecture Improvements \u2014 KBImporter\\n\\n## Problem Statement\\n\\nDuring an architecture review of KBImporter, five defects were identified that affect reliability, performance, and operational clarity. The issues range from hard stops that block processing pipelines entirely, to silent failures that accumulate duplicate data in Notion without any warning. As the note volume grows, these defects become increasingly costly.\\n\\n## Solution\\n\\nA targeted set of fixes applied to the routing, import iteration, and audio card flow. Each fix addresses a specific failure mode without introducing new dependencies or changing the external CLI interface. All changes are backwards-compatible with existing state files and config.\\n\\n## User Stories\\n\\n1. As a user running `sync`, I want notes with unrecognised tags to be silently skipped (not block the pipeline), so that new or misconfigured notes in Get \u7b14\u8bb0 don't interrupt the entire run.\\n2. As a user r\"\n  },\n  {\n    \"id\": \"github-feedback-comment-514564253251bb27\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/shyangyundong-dot/KBIMPORTER/issues/1#issuecomment-4376730640\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: shyangyundong-dot/KBIMPORTER\\nAuthor: shyangyundong-dot (User)\\nURL: https://github.com/shyangyundong-dot/KBIMPORTER/issues/1#issuecomment-4376730640\\nTitle: \\nBody:\\n## \u5b9e\u73b0\u8fdb\u5ea6\u66f4\u65b0\\n\\n\u67b6\u6784\u6539\u8fdb\u5df2\u5168\u90e8\u5b8c\u6210\u5e76\u63a8\u9001\u81f3 `main`\uff0c\u5305\u542b\u4e24\u4e2a commit\uff1a\\n\\n### Commit 1 \u2014 \u4e94\u9879\u67b6\u6784\u4fee\u590d\\n\\n| # | \u4fee\u590d | \u6d89\u53ca\u6a21\u5757 |\\n|---|------|---------|\\n| 1 | `RouteError` \u6539\u4e3a\u9759\u9ed8\u8df3\u8fc7 + \u63a8\u8fdb\u6c34\u4f4d + \u672b\u5c3e\u6253\u5370\u672a\u5339\u914d\u6c47\u603b | `cli.py` |\\n| 2 | `iter_import_notes` \u4f20\u5165\u6c34\u4f4d `last_note_id`\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/shyangyundong-dot/KBIMPORTER", "source_id": "comment-chain-pattern-assumption_checks-e6e389c60b9071d0", "synthetic": false, "gold_label": "", "graph_label": "github_or_motif_graph_without_source_files", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/assumption_checks/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "shyangyundong-dot/KBIMPORTER", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "scanner-79eb8a3229404236", "level": "note", "message": {"text": "Possibly dead Python function: cmd_audio"}, "properties": {"repobilityId": "e804422af545b101", "scanner": "scanner-primary", "fingerprint": "79eb8a3229404236", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kbimporter/cli.py:255"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-df72862e5070295c", "level": "note", "message": {"text": "Possibly dead Python function: cmd_debug_biji"}, "properties": {"repobilityId": "cbe48608f9f28d71", "scanner": "scanner-primary", "fingerprint": "df72862e5070295c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kbimporter/cli.py:928"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ad674be66601d524", "level": "note", "message": {"text": "Possibly dead Python function: cmd_schema_recipe"}, "properties": {"repobilityId": "b75799228aaaebcf", "scanner": "scanner-primary", "fingerprint": "ad674be66601d524", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kbimporter/cli.py:965"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c85de1c824bfd5d", "level": "note", "message": {"text": "Possibly dead Python function: cmd_export_links"}, "properties": {"repobilityId": "c63fc1d7550264a1", "scanner": "scanner-primary", "fingerprint": "0c85de1c824bfd5d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kbimporter/cli.py:984"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"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-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "65f27aaf987f09f1", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-faccb9061e9b52a0", "level": "note", "message": {"text": "No README detected"}, "properties": {"repobilityId": "9a17446fdbae5d08", "scanner": "scanner-primary", "fingerprint": "faccb9061e9b52a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ceb027578f149f55", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "5bbeda9d5c450c9d", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "1a580eb6a8531582", "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": "1cb52d1dcceee19b", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-319e66a630e14977", "level": "none", "message": {"text": "2 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "d838d1fc5d8231c9", "scanner": "scanner-primary", "fingerprint": "319e66a630e14977", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "dd25df71af008e55", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}