{"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_blueprint_gap", "name": "Foundry mined blueprint gap alignment: wombow-ai/tickwind", "shortDescription": {"text": "Foundry mined blueprint gap alignment: wombow-ai/tickwind"}, "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: wombow-ai/tickwind\nThread: wombow-ai/tickwind#5\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: wombow-ai/tickwind\nThread: wombow-ai/tickwind#5\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wombow-ai/tickwind#5\nRepo: wombow-ai/tickwind\nIssue/PR number: 5\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 34\nNode types: {'link_quality': 6, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: wombow-ai/tickwind", "shortDescription": {"text": "Foundry mined assumption checks: wombow-ai/tickwind"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#5\nOutcome: claimed_resolved_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: wombow-ai/tickwind#5\nRepo: wombow-ai/tickwind\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'test_ci_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e616fcec0fef5570\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\":"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "foundry_test_ci_gap", "name": "Foundry mined test ci gap after feedback: wombow-ai/tickwind", "shortDescription": {"text": "Foundry mined test ci gap after feedback: wombow-ai/tickwind"}, "fullDescription": {"text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#5\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#5\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wombow-ai/tickwind#5\nRepo: wombow-ai/tickwind\nIssue/PR number: 5\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 34\nNode types: {'link_quality': 6, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'commit': 1"}, "properties": {"scanner": "foundry_dataset", "category": "testing", "severity": "high", "confidence": 0.78, "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-dcb458e42c186733", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/FilingsCard.tsx:181", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/FilingsCard.tsx:181"}, "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-717e333548d5c0f6", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/MacroStrip.tsx:130", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/MacroStrip.tsx:130"}, "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-db531f193877a672", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/MovementCard.tsx:151", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/MovementCard.tsx:151"}, "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-47bc6af8a73ff5bf", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/OpportunityBoard.tsx:164", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/OpportunityBoard.tsx:164"}, "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-e42275c6dbd99bb1", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/CryptoStrip.tsx:146", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/CryptoStrip.tsx:146"}, "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-583536f4b5770824", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/not-found.tsx:15", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/not-found.tsx:15"}, "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-f9f12ce6a48e3dc6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/layout.tsx:31", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/layout.tsx:31"}, "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-e1228d0f5f4f0f1c", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/[locale]/designs/horizon/LiveDemo.tsx:120", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/[locale]/designs/horizon/LiveDemo.tsx:120"}, "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-a6c853b934b74ff9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/page.tsx:101", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/page.tsx:101"}, "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-5659ed1201b24556", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stocks/page.tsx:124", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stocks/page.tsx:124"}, "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-597d5ebc87154701", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stocks/[letter]/page.tsx:156", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stocks/[letter]/page.tsx:156"}, "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-d23562f6389fbe00", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stock/[ticker]/page.tsx:163", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stock/[ticker]/page.tsx:163"}, "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-85e7c7ffa1a6512e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stock/[ticker]/research/page.tsx:95", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stock/[ticker]/research/page.tsx:95"}, "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-a650ab02d385579a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/fund/[slug]/page.tsx:137", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/fund/[slug]/page.tsx:137"}, "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-77880cbc5720b7d4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/congress/member/[slug]/page.tsx:149", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/congress/member/[slug]/page.tsx:149"}, "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-11c5f3d3c3542238", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/topic/[key]/page.tsx:177", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/topic/[key]/page.tsx:177"}, "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-4405772eaec116c6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/screen/[preset]/page.tsx:130", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/screen/[preset]/page.tsx:130"}, "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-07a3b5711a978138", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/indicators/[id]/page.tsx:226", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/indicators/[id]/page.tsx:226"}, "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-b6af35f6fdd9d096", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/guide/[slug]/page.tsx:89", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/guide/[slug]/page.tsx:89"}, "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-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-34d41f64da56cd8b", "name": "Docker base image is tag-pinned but not digest-pinned: golang:1.26", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.26"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30307771879d30e4", "name": "Docker base image is tag-pinned but not digest-pinned: debian:12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8341716bc690254", "name": "Insecure pattern 'cors_wildcard' in internal/api/api.go:579", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in internal/api/api.go:579"}, "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-9a863455fbaaf1cc", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/not-found.tsx:15", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/not-found.tsx:15"}, "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-4bcd9a216c5d8ffc", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/layout.tsx:31", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/layout.tsx:31"}, "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-30305cd84299cb8d", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/page.tsx:101", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/page.tsx:101"}, "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-5423b407b3d8c2c1", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stocks/page.tsx:124", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stocks/page.tsx:124"}, "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-0dc1d55f24e564db", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stocks/[letter]/page.tsx:156", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stocks/[letter]/page.tsx:156"}, "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-b3319bc26e001e88", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stock/[ticker]/page.tsx:163", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stock/[ticker]/page.tsx:163"}, "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-e87cc9f4a76cd289", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stock/[ticker]/research/page.tsx:95", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stock/[ticker]/research/page.tsx:95"}, "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-bbee3e6d6109260e", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/fund/[slug]/page.tsx:137", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/fund/[slug]/page.tsx:137"}, "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-4f38e0c572c4f94c", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/congress/member/[slug]/page.tsx:149", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/congress/member/[slug]/page.tsx:149"}, "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-efeaf3a7d4138138", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/topic/[key]/page.tsx:177", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/topic/[key]/page.tsx:177"}, "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-ca40495ae0771f48", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/screen/[preset]/page.tsx:130", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/screen/[preset]/page.tsx:130"}, "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-f4bde737c1c682d4", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/indicators/[id]/page.tsx:226", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/indicators/[id]/page.tsx:226"}, "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-ac26e793d9a74c9e", "name": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/guide/[slug]/page.tsx:89", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/guide/[slug]/page.tsx:89"}, "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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "golang/govulncheck-action@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f1e4527e6fecffa", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "securego/gosec@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e35e00e080d2e527", "name": "Very large file: internal/api/api.go (4164 lines)", "shortDescription": {"text": "Very large file: internal/api/api.go (4164 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-8dcca2c6450d7293", "name": "Very large file: internal/indicators/technical_more.go (1827 lines)", "shortDescription": {"text": "Very large file: internal/indicators/technical_more.go (1827 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-48926fec590d1656", "name": "Very large file: web/src/lib/api.ts (2682 lines)", "shortDescription": {"text": "Very large file: web/src/lib/api.ts (2682 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-01e34506d4fb2f30", "name": "Very large file: web/src/lib/dict.ts (1498 lines)", "shortDescription": {"text": "Very large file: web/src/lib/dict.ts (1498 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-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-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 149 placeholder/mock markers across 45 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-11825279136b53a3", "name": "CI is configured but no tests are detected", "shortDescription": {"text": "CI is configured but no tests are detected"}, "fullDescription": {"text": "A CI pipeline exists, but the scan found no test files to gate. Opus labeled this generated-code pattern as config theater: release machinery exists, but it has little behavioral signal."}, "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, 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": "low", "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, 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-a0b99230a274b2eb", "name": "Commented-code block (5 lines) in web/src/proxy.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/proxy.ts:31"}, "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-57cb180334b1af4d", "name": "Commented-code block (5 lines) in web/src/components/SearchResults.tsx:43", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/components/SearchResults.tsx:43"}, "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-f6f96b1ad2843572", "name": "Commented-code block (5 lines) in web/src/components/KLineChart.tsx:54", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/components/KLineChart.tsx:54"}, "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-b0e43366164bc079", "name": "Commented-code block (6 lines) in web/src/components/StockView.tsx:307", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/components/StockView.tsx:307"}, "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-8c87d3169bc9598a", "name": "Commented-code block (5 lines) in web/src/components/IndicatorsPanel.tsx:91", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/components/IndicatorsPanel.tsx:91"}, "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-6bdf7f31612d073b", "name": "Commented-code block (5 lines) in web/src/components/StockCard.tsx:38", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/components/StockCard.tsx:38"}, "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-ff8ce0bc4a38544e", "name": "Commented-code block (6 lines) in web/src/app/not-found.tsx:4", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/app/not-found.tsx: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-240b595b5bf8feef", "name": "Commented-code block (5 lines) in web/src/app/sitemap.ts:21", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/app/sitemap.ts:21"}, "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-e81adfacccdb6d8a", "name": "Commented-code block (5 lines) in web/src/app/layout.tsx:44", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/app/layout.tsx:44"}, "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-78006338350ba9c2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/app/api/og/[kind]/route.tsx:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/app/api/og/[kind]/route.tsx:39"}, "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-a964d4a99ebe330a", "name": "Commented-code block (5 lines) in web/src/app/[locale]/not-found.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/app/[locale]/not-found.tsx: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-1f42ad89be14dfdc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/api.ts:229", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/api.ts:229"}, "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-3a6a254ce8c1e39b", "name": "Commented-code block (6 lines) in web/src/lib/eventTitle.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/lib/eventTitle.ts: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-b334d875f2339fa1", "name": "5 env vars used in code but missing from .env.example", "shortDescription": {"text": "5 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `NEXT_PUBLIC_API_BASE`, `NEXT_PUBLIC_GOOGLE_OAUTH`, `NEXT_PUBLIC_SITE_URL`, `NEXT_PUBLIC_SUPABASE_ANON_KEY`, `NEXT_PUBLIC_SUPABASE_URL`. 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}}]}}, "automationDetails": {"id": "repobility/22838"}, "properties": {"repository": "wombow-ai/tickwind", "repoUrl": "https://github.com/wombow-ai/tickwind", "branch": "main"}, "results": [{"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: wombow-ai/tickwind"}, "properties": {"repobilityId": 405498, "scanner": "foundry_dataset", "fingerprint": "9240c418841efef9a5df6e9122db705edd60688d462b021a8782189fcb5f7f66", "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": {"bug_fix": 1, "test_ci_gap": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "partial blueprint fit": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 34, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "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": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "wombow-ai/tickwind#5", "issue_number": "5", "quality_tiers": {"assumption_check": 2, "weak_supervision": 4}, "repo_full_name": "wombow-ai/tickwind", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-710c016afbb3a186", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"dependency_or_build": 10}}, "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: wombow-ai/tickwind\nThread: wombow-ai/tickwind#5\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: wombow-ai/tickwind\nThread: wombow-ai/tickwind#5\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wombow-ai/tickwind#5\nRepo: wombow-ai/tickwind\nIssue/PR number: 5\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 34\nNode types: {'link_quality': 6, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 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: {'claimed_resolved_unverified': 4, 'dependency_or_build': 2, 'human_reported_issue_then_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'bug_fix': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_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/wombow-ai/tickwind", "source_id": "graph-query-motif_query-51dc438d211c4ee2", "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": "wombow-ai/tickwind", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: wombow-ai/tickwind"}, "properties": {"repobilityId": 405497, "scanner": "foundry_dataset", "fingerprint": "b0e6fe65b90f7e3bcd2a3d891685de70bd262ebf1c73a09240f6b997ca060b1a", "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": {"test_ci_gap": 1, "ui_workflow": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "partial blueprint fit": 1, "verification_or_tests": 2, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 4, "human_reported_issue_then_verified_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_with_verification_signal": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 38, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "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": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 6, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 23, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "wombow-ai/tickwind#4", "issue_number": "4", "quality_tiers": {"assumption_check": 2, "weak_supervision": 4}, "repo_full_name": "wombow-ai/tickwind", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-9299f09139b55ad5", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 10}}, "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: supported_by_verification_signal\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#4\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: wombow-ai/tickwind\nThread: wombow-ai/tickwind#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wombow-ai/tickwind#4\nRepo: wombow-ai/tickwind\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 38\nNode types: {'link_quality': 6, 'commit': 3, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 6, 'chain_has_link_quality': 6, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 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: {'claimed_resolved_with_verification_signal': 4, 'dependency_or_build': 2, 'human_reported_issue_then_verified_fix_attempt': 2, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'ui_workflow': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 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/wombow-ai/tickwind", "source_id": "graph-query-motif_query-93a9f97f1d0c2a77", "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": "wombow-ai/tickwind", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: wombow-ai/tickwind"}, "properties": {"repobilityId": 405496, "scanner": "foundry_dataset", "fingerprint": "ee1ad747446ed65e82d0e633896b23863d8ce72c6c341c667f38ffa1b4d3d4e3", "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": {"bug_fix": 1, "test_ci_gap": 1, "ui_workflow": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 4, "human_reported_issue_then_verified_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_with_verification_signal": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 39, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "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": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 7, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "wombow-ai/tickwind#3", "issue_number": "3", "quality_tiers": {"high_confidence": 3, "assumption_check": 2, "weak_supervision": 1}, "repo_full_name": "wombow-ai/tickwind", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-e55aa585ea7d1a42", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 10}}, "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: supported_by_verification_signal\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#3\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: wombow-ai/tickwind\nThread: wombow-ai/tickwind#3\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wombow-ai/tickwind#3\nRepo: wombow-ai/tickwind\nIssue/PR number: 3\nGraph consistency label: supported_by_verification_signal\nNodes: 25\nEdges: 39\nNode types: {'link_quality': 6, 'commit': 5, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 7, 'chain_has_link_quality': 6, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 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: {'claimed_resolved_with_verification_signal': 4, 'verification_or_tests': 3, 'dependency_or_build': 2, 'human_reported_issue_then_verified_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'ui_workflow': 1, 'bug_fix': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 8}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 2, 'weak_supervision': 1}\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/wombow-ai/tickwind", "source_id": "graph-query-motif_query-eac65ece19b3c33b", "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": "wombow-ai/tickwind", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wombow-ai/tickwind"}, "properties": {"repobilityId": 384142, "scanner": "foundry_dataset", "fingerprint": "ad1319f0e7dfa7a39116389f08fa021e73c15a9e9cdf31bd52e23ab3be9cf732", "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": "wombow-ai/tickwind#5", "human_labels": ["dependency_or_build", "deployment_env_gap", "test_ci_gap"], "issue_number": "5", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.7, "repo_full_name": "wombow-ai/tickwind", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-6e8fe5da70f8746d", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 3, "docs": 4, "designs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"dependency_or_build": 2}, "linked_commit_count": 2, "helicopter_view_count": 4, "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": 3, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#5\nOutcome: claimed_resolved_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: wombow-ai/tickwind#5\nRepo: wombow-ai/tickwind\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'test_ci_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e616fcec0fef5570\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wombow-ai/tickwind/pull/5\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wombow-ai/tickwind\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/wombow-ai/tickwind/pull/5\\nTitle: chore(deps): bump react and @types/react in /web\\nBody:\\nBumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) and [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react). These dependencies needed to be updated together.\\nUpdates `react` from 19.2.4 to 19.2.7\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/facebook/react/releases\\\">react's releases</a>.</em></p>\\n<blockquote>\\n<h2>19.2.7 (June 1st, 2026)</h2>\\n<h2>React Server Components</h2>\\n<ul>\\n<li>Fixed missing <code>FormData</code> entries in Server Actions which regressed in 19.2.6\\n(<a href=\\\"https://redirect.github.com/facebook/react/pull/36566\\\">#36566</a> by <a href=\\\"https://github.com/unstubbable\\\"><code>@\u200bunstubbable</code></a>)</li>\\n</ul>\\n<h2>19.2.6 (May 6th, 2026)</h2>\\n<h2>React Server Components</h2>\\n<ul>\\n<li>Type hardening and performance improvements\\n(<a href=\\\"https://redirect.github.com/facebook/react/pull/36425\\\">#36425</a> by <a href=\\\"https://github.com\"\n  },\n  {\n    \"id\": \"github-feedback-comment-a5e2c368785dc499\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wombow-ai/tickwind/pull/5#issuecomment-4643323474\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wombow-ai/tickwind\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/wombow-ai/tickwind/pull/5#issuecomment-4643323474\\nTitle: \\nBody:\\n[vc]: #3PA8YONqChJYL9eNncubQIdcVBpBlbbp6UmZo9Ahlq4=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJ0aWNrd2luZCIsInByb2plY3RJZCI6InByal9HblB0blhSa3JCOVROWXpWNDBiVkxBRzdFWG1MIiwiaW5z\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wombow-ai/tickwind", "source_id": "comment-chain-pattern-assumption_checks-7fadd68bb06c52df", "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": "wombow-ai/tickwind", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wombow-ai/tickwind"}, "properties": {"repobilityId": 384141, "scanner": "foundry_dataset", "fingerprint": "c32bb0b7703c803effe5cd61aa93991c99129d725b90d124ce3fa33785ffcb34", "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": "wombow-ai/tickwind#2", "human_labels": ["dependency_or_build", "deployment_env_gap", "human_feedback_general"], "issue_number": "2", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.7, "repo_full_name": "wombow-ai/tickwind", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-1272b67fea72e9f3", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 3, "docs": 4, "designs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"dependency_or_build": 2}, "linked_commit_count": 4, "helicopter_view_count": 4, "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": 3, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#2\nOutcome: ambiguous_needs_more_evidence\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: wombow-ai/tickwind#2\nRepo: wombow-ai/tickwind\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d26dc49fe92e6286\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wombow-ai/tickwind/pull/2\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: wombow-ai/tickwind\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/wombow-ai/tickwind/pull/2\\nTitle: chore(deps): bump @types/node from 20.19.41 to 25.9.2 in /web\\nBody:\\nBumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.19.41 to 25.9.2.\\n<details>\\n<summary>Commits</summary>\\n<ul>\\n<li>See full diff in <a href=\\\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node\\\">compare view</a></li>\\n</ul>\\n</details>\\n<br />\\n\"\n  },\n  {\n    \"id\": \"github-feedback-comment-90f8cc9739fc4a05\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wombow-ai/tickwind/pull/2#issuecomment-4643322234\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wombow-ai/tickwind\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/wombow-ai/tickwind/pull/2#issuecomment-4643322234\\nTitle: \\nBody:\\n[vc]: #4NnJXlTGhNiCfUBp2qqbVhT0VEo699ItZXC30rfWhnY=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJ0aWNrd2luZCIsInByb2plY3RJZCI6InByal9HblB0blhSa3JCOVROWXpWNDBiVkxBRzdFWG1MIiwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL3dvbWJvdy1zLXByb2plY3RzL3RpY2t3aW5kL0Y2TDJQRFpac0FlQzVyd0h3SG1McXJBWVgxZTUiLCJwcmV2aWV3VXJsIjoidGlja3dpbmQtZ2l0LWRlcGVuZGFib3QtbnBtYW5keWFybndlYnQtZTUzYzk5LXdvbWJvdy1zLXByb2plY3RzLnZlcmNlbC5hcHAiLCJuZXh0Q29tbWl0U3RhdHVzIjoiREVQTE9ZRUQiLCJsaXZlRmVlZGJhY2siOnsicmVzb2x2ZWQiOjAsInVucmVzb2x2ZWQiOjAsInRvdGFsIjowLCJsaW5rIjoidGlja3dpbmQtZ2l0LWRlcGVuZGFib3QtbnBtYW5keWFybndlYnQtZTUzYzk5LXdvbWJvdy1zLXByb2plY3RzLnZlcmNlbC5hcHAifSwicm9vdERpcmVjdG9yeSI6IndlYiJ9XX0=\\nThe latest updates on your projects. Learn more about [Vercel for GitHub](https://vercel.link/githu\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wombow-ai/tickwind", "source_id": "comment-chain-pattern-assumption_checks-53e2dece51f31a66", "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": "wombow-ai/tickwind", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wombow-ai/tickwind"}, "properties": {"repobilityId": 384140, "scanner": "foundry_dataset", "fingerprint": "ef56ee6ed15261b4453a8d67006304b7865e7498d0997b962489415a93a939f6", "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": "wombow-ai/tickwind#1", "human_labels": ["dependency_or_build", "deployment_env_gap", "positive_human_signal"], "issue_number": "1", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.787, "repo_full_name": "wombow-ai/tickwind", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-2f37f95635fe75f4", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 3, "docs": 4, "designs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"dependency_or_build": 2}, "linked_commit_count": 4, "helicopter_view_count": 4, "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": 3, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#1\nOutcome: ambiguous_needs_more_evidence\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: wombow-ai/tickwind#1\nRepo: wombow-ai/tickwind\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'positive_human_signal': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'dependency_or_build': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-4c98e0da641a16cd\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"positive_human_signal\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wombow-ai/tickwind/pull/1\",\n    \"text\": \"GitHub feedback: positive_human_signal\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: wombow-ai/tickwind\\nAuthor: dependabot[bot] (Bot)\\nURL: https://github.com/wombow-ai/tickwind/pull/1\\nTitle: chore(deps): bump typescript from 5.9.3 to 6.0.3 in /web\\nBody:\\nBumps [typescript](https://github.com/microsoft/TypeScript) from 5.9.3 to 6.0.3.\\n<details>\\n<summary>Release notes</summary>\\n<p><em>Sourced from <a href=\\\"https://github.com/microsoft/TypeScript/releases\\\">typescript's releases</a>.</em></p>\\n<blockquote>\\n<h2>TypeScript 6.0.3</h2>\\n<p>For release notes, check out the <a href=\\\"https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/\\\">release announcement blog post</a>.</p>\\n<ul>\\n<li><a href=\\\"https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+6.0.0%22\\\">fixed issues query for TypeScript 6.0.0 (Beta)</a>.</li>\\n<li><a href=\\\"https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+6.0.1%22\\\">fixed issues query for TypeScript 6.0.1 (RC)</a>.</li>\\n<li><a href=\\\"https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+6.0.2%22\\\">fixed issues query for TypeScript 6.0.2 (St\"\n  },\n  {\n    \"id\": \"github-feedback-comment-83a945ce282145a9\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wombow-ai/tickwind/pull/1#issuecomment-4643322048\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wombow-ai/tickwind\\nAuthor: vercel[bot] (Bot)\\nURL: https://github.com/wombow-ai/tickwind/pull/1#issuecomment-4643322048\\nTitle: \\nBody:\\n[vc]: #EfTKtW1mgouV9oF9n04x47dzbAZ7zCq6sYh8aM6gb/c=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJ0aWNrd2luZCIsInByb2plY3RJZCI6InByal9HblB0blh\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wombow-ai/tickwind", "source_id": "comment-chain-pattern-assumption_checks-67ecb81c6aed0749", "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": "wombow-ai/tickwind", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: wombow-ai/tickwind"}, "properties": {"repobilityId": 420892, "scanner": "foundry_dataset", "fingerprint": "d4ec23a98a32c2f194ca53195b2bc89303aff07062b5238eeff1067067046aa9", "category": "testing", "severity": "high", "confidence": 0.78, "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": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_ci_gap": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "partial blueprint fit": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_unverified": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 34, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "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": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "wombow-ai/tickwind#5", "issue_number": "5", "quality_tiers": {"assumption_check": 2, "weak_supervision": 4}, "repo_full_name": "wombow-ai/tickwind", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-0890d7d9190c5add", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"dependency_or_build": 10}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#5\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#5\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wombow-ai/tickwind#5\nRepo: wombow-ai/tickwind\nIssue/PR number: 5\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 34\nNode types: {'link_quality': 6, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 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: {'claimed_resolved_unverified': 4, 'dependency_or_build': 2, 'human_reported_issue_then_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'bug_fix': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_unverified': 8}\nQuality tiers: {'weak_supervision': 4, 'assumption_check': 2}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wombow-ai/tickwind", "source_id": "graph-query-motif_query-b4666abddef8932d", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wombow-ai/tickwind", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: wombow-ai/tickwind"}, "properties": {"repobilityId": 420891, "scanner": "foundry_dataset", "fingerprint": "aa1ce5062c980954406b883bd01e0aafe81293ca8206e0f3f8a3f8ab2bdbd3c1", "category": "testing", "severity": "high", "confidence": 0.78, "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": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_ci_gap": 1, "ui_workflow": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "partial blueprint fit": 1, "verification_or_tests": 2, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 4, "human_reported_issue_then_verified_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 38, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "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": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 6, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 23, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "wombow-ai/tickwind#4", "issue_number": "4", "quality_tiers": {"assumption_check": 2, "weak_supervision": 4}, "repo_full_name": "wombow-ai/tickwind", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a070b71193386d90", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 10}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#4\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wombow-ai/tickwind#4\nRepo: wombow-ai/tickwind\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 23\nEdges: 38\nNode types: {'link_quality': 6, 'commit': 3, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 6, 'chain_has_link_quality': 6, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 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: {'claimed_resolved_with_verification_signal': 4, 'dependency_or_build': 2, 'human_reported_issue_then_verified_fix_attempt': 2, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'ui_workflow': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 8}\nQuality tiers: {'weak_supervision': 4, 'assumption_check': 2}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wombow-ai/tickwind", "source_id": "graph-query-motif_query-2e3c159367138c99", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wombow-ai/tickwind", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: wombow-ai/tickwind"}, "properties": {"repobilityId": 420890, "scanner": "foundry_dataset", "fingerprint": "b4f0d67fb4c125e1d4c84195433d5bfa9032d99fcde4c82289fe0f160918c3ae", "category": "testing", "severity": "high", "confidence": 0.78, "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": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 1, "test_ci_gap": 1, "ui_workflow": 1, "deployment_env_gap": 1, "dependency_or_build": 2, "partial blueprint fit": 1, "verification_or_tests": 3, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 4, "human_reported_issue_then_verified_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 8}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 39, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "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": 2, "thread_has_comment_chain": 2, "comment_chain_links_commit": 7, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 2, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "wombow-ai/tickwind#3", "issue_number": "3", "quality_tiers": {"high_confidence": 3, "assumption_check": 2, "weak_supervision": 1}, "repo_full_name": "wombow-ai/tickwind", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c148ad8fcf5c6eef", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"dependency_or_build": 10}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#3\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: wombow-ai/tickwind\nThread: wombow-ai/tickwind#3\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wombow-ai/tickwind#3\nRepo: wombow-ai/tickwind\nIssue/PR number: 3\nGraph consistency label: supported_by_verification_signal\nNodes: 25\nEdges: 39\nNode types: {'link_quality': 6, 'commit': 5, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 7, 'chain_has_link_quality': 6, 'comment_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_touches_file': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'issue_chain_touches_file': 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: {'claimed_resolved_with_verification_signal': 4, 'verification_or_tests': 3, 'dependency_or_build': 2, 'human_reported_issue_then_verified_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'deployment_env_gap': 1, 'ui_workflow': 1, 'bug_fix': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 8}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 2, 'weak_supervision': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wombow-ai/tickwind", "source_id": "graph-query-motif_query-44827bd78cdcf3bf", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wombow-ai/tickwind", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "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-dcb458e42c186733", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/FilingsCard.tsx:181"}, "properties": {"repobilityId": "825f3c814b3b0d4b", "scanner": "scanner-primary", "fingerprint": "dcb458e42c186733", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-717e333548d5c0f6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/MacroStrip.tsx:130"}, "properties": {"repobilityId": "d03453024f095fd5", "scanner": "scanner-primary", "fingerprint": "717e333548d5c0f6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-db531f193877a672", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/MovementCard.tsx:151"}, "properties": {"repobilityId": "86a8182a7236bb91", "scanner": "scanner-primary", "fingerprint": "db531f193877a672", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-47bc6af8a73ff5bf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/OpportunityBoard.tsx:164"}, "properties": {"repobilityId": "7210737374f923f5", "scanner": "scanner-primary", "fingerprint": "47bc6af8a73ff5bf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e42275c6dbd99bb1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/components/CryptoStrip.tsx:146"}, "properties": {"repobilityId": "44bef3efe6595307", "scanner": "scanner-primary", "fingerprint": "e42275c6dbd99bb1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-583536f4b5770824", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/not-found.tsx:15"}, "properties": {"repobilityId": "d426076b9522c285", "scanner": "scanner-primary", "fingerprint": "583536f4b5770824", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f9f12ce6a48e3dc6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/layout.tsx:31"}, "properties": {"repobilityId": "4e44359f78289139", "scanner": "scanner-primary", "fingerprint": "f9f12ce6a48e3dc6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e1228d0f5f4f0f1c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/[locale]/designs/horizon/LiveDemo.tsx:120"}, "properties": {"repobilityId": "ee00479c2d7227f3", "scanner": "scanner-primary", "fingerprint": "e1228d0f5f4f0f1c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a6c853b934b74ff9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/page.tsx:101"}, "properties": {"repobilityId": "7eadf0b7cecdfa8d", "scanner": "scanner-primary", "fingerprint": "a6c853b934b74ff9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5659ed1201b24556", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stocks/page.tsx:124"}, "properties": {"repobilityId": "ce699d83f4b2a5a5", "scanner": "scanner-primary", "fingerprint": "5659ed1201b24556", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-597d5ebc87154701", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stocks/[letter]/page.tsx:156"}, "properties": {"repobilityId": "6201da1f85162974", "scanner": "scanner-primary", "fingerprint": "597d5ebc87154701", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d23562f6389fbe00", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stock/[ticker]/page.tsx:163"}, "properties": {"repobilityId": "d8e8cbc4fcc97598", "scanner": "scanner-primary", "fingerprint": "d23562f6389fbe00", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-85e7c7ffa1a6512e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/stock/[ticker]/research/page.tsx:95"}, "properties": {"repobilityId": "58fc1ecba931d7f5", "scanner": "scanner-primary", "fingerprint": "85e7c7ffa1a6512e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a650ab02d385579a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/fund/[slug]/page.tsx:137"}, "properties": {"repobilityId": "11d88e44f167febc", "scanner": "scanner-primary", "fingerprint": "a650ab02d385579a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-77880cbc5720b7d4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/congress/member/[slug]/page.tsx:149"}, "properties": {"repobilityId": "bfa9c1ee9cfa0e79", "scanner": "scanner-primary", "fingerprint": "77880cbc5720b7d4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-11c5f3d3c3542238", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/topic/[key]/page.tsx:177"}, "properties": {"repobilityId": "05ab32a60b104042", "scanner": "scanner-primary", "fingerprint": "11c5f3d3c3542238", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4405772eaec116c6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/screen/[preset]/page.tsx:130"}, "properties": {"repobilityId": "da86a33d408745e0", "scanner": "scanner-primary", "fingerprint": "4405772eaec116c6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-07a3b5711a978138", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/indicators/[id]/page.tsx:226"}, "properties": {"repobilityId": "8cf496d11a36b699", "scanner": "scanner-primary", "fingerprint": "07a3b5711a978138", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b6af35f6fdd9d096", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/app/[locale]/(main)/guide/[slug]/page.tsx:89"}, "properties": {"repobilityId": "4f769b69ddbb823a", "scanner": "scanner-primary", "fingerprint": "b6af35f6fdd9d096", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-34d41f64da56cd8b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.26"}, "properties": {"repobilityId": "decc82bf14343809", "scanner": "scanner-primary", "fingerprint": "34d41f64da56cd8b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-30307771879d30e4", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:12-slim"}, "properties": {"repobilityId": "81ad98ae56e9430d", "scanner": "scanner-primary", "fingerprint": "30307771879d30e4", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-f8341716bc690254", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in internal/api/api.go:579"}, "properties": {"repobilityId": "cf92fb9ae3c9f3a0", "scanner": "scanner-primary", "fingerprint": "f8341716bc690254", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "internal/api/api.go"}, "region": {"startLine": 579}}}]}, {"ruleId": "scanner-9a863455fbaaf1cc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/not-found.tsx:15"}, "properties": {"repobilityId": "e9a11b43477ad26e", "scanner": "scanner-primary", "fingerprint": "9a863455fbaaf1cc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/not-found.tsx"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-4bcd9a216c5d8ffc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/layout.tsx:31"}, "properties": {"repobilityId": "79718c2c26b720fb", "scanner": "scanner-primary", "fingerprint": "4bcd9a216c5d8ffc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/layout.tsx"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-30305cd84299cb8d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/page.tsx:101"}, "properties": {"repobilityId": "b23a5886c311ee77", "scanner": "scanner-primary", "fingerprint": "30305cd84299cb8d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/(main)/page.tsx"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-5423b407b3d8c2c1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stocks/page.tsx:124"}, "properties": {"repobilityId": "ca40bd6ba94db8a8", "scanner": "scanner-primary", "fingerprint": "5423b407b3d8c2c1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/(main)/stocks/page.tsx"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-0dc1d55f24e564db", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stocks/[letter]/page.tsx:156"}, "properties": {"repobilityId": "36d36c78d50ec0b5", "scanner": "scanner-primary", "fingerprint": "0dc1d55f24e564db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/(main)/stocks/[letter]/page.tsx"}, "region": {"startLine": 156}}}]}, {"ruleId": "scanner-b3319bc26e001e88", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stock/[ticker]/page.tsx:163"}, "properties": {"repobilityId": "243f5f4e61e616f6", "scanner": "scanner-primary", "fingerprint": "b3319bc26e001e88", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/(main)/stock/[ticker]/page.tsx"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-e87cc9f4a76cd289", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/stock/[ticker]/research/page.tsx:95"}, "properties": {"repobilityId": "593e460fdaacdec3", "scanner": "scanner-primary", "fingerprint": "e87cc9f4a76cd289", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/(main)/stock/[ticker]/research/page.tsx"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-bbee3e6d6109260e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/fund/[slug]/page.tsx:137"}, "properties": {"repobilityId": "c65a3f25f7e61fd4", "scanner": "scanner-primary", "fingerprint": "bbee3e6d6109260e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/(main)/fund/[slug]/page.tsx"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-4f38e0c572c4f94c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/congress/member/[slug]/page.tsx:149"}, "properties": {"repobilityId": "70a68117232e3fe4", "scanner": "scanner-primary", "fingerprint": "4f38e0c572c4f94c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/(main)/congress/member/[slug]/page.tsx"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-efeaf3a7d4138138", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/topic/[key]/page.tsx:177"}, "properties": {"repobilityId": "79fba3afca7e9b8f", "scanner": "scanner-primary", "fingerprint": "efeaf3a7d4138138", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/(main)/topic/[key]/page.tsx"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-ca40495ae0771f48", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/screen/[preset]/page.tsx:130"}, "properties": {"repobilityId": "57d1dfc9fa794591", "scanner": "scanner-primary", "fingerprint": "ca40495ae0771f48", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/(main)/screen/[preset]/page.tsx"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-f4bde737c1c682d4", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/indicators/[id]/page.tsx:226"}, "properties": {"repobilityId": "6e37c22bc70b1ee0", "scanner": "scanner-primary", "fingerprint": "f4bde737c1c682d4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/(main)/indicators/[id]/page.tsx"}, "region": {"startLine": 226}}}]}, {"ruleId": "scanner-ac26e793d9a74c9e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/src/app/[locale]/(main)/guide/[slug]/page.tsx:89"}, "properties": {"repobilityId": "5d7a530a6c76889a", "scanner": "scanner-primary", "fingerprint": "ac26e793d9a74c9e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/app/[locale]/(main)/guide/[slug]/page.tsx"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2cbf93cce1d96a31", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-7f1e4527e6fecffa", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "1182de08fc7847e5", "scanner": "scanner-primary", "fingerprint": "7f1e4527e6fecffa", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-e35e00e080d2e527", "level": "note", "message": {"text": "Very large file: internal/api/api.go (4164 lines)"}, "properties": {"repobilityId": "17772e0955a6226c", "scanner": "scanner-primary", "fingerprint": "e35e00e080d2e527", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8dcca2c6450d7293", "level": "note", "message": {"text": "Very large file: internal/indicators/technical_more.go (1827 lines)"}, "properties": {"repobilityId": "e95b7c3fd2d75928", "scanner": "scanner-primary", "fingerprint": "8dcca2c6450d7293", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-48926fec590d1656", "level": "note", "message": {"text": "Very large file: web/src/lib/api.ts (2682 lines)"}, "properties": {"repobilityId": "1acbb1cb445b5ff9", "scanner": "scanner-primary", "fingerprint": "48926fec590d1656", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-01e34506d4fb2f30", "level": "note", "message": {"text": "Very large file: web/src/lib/dict.ts (1498 lines)"}, "properties": {"repobilityId": "5aae2e2624655da9", "scanner": "scanner-primary", "fingerprint": "01e34506d4fb2f30", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "0f62897cd8b7c3c5", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "fc2602445c1b1601", "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": "e36ebe269b1978c4", "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": "78e5eff17b4db405", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-11825279136b53a3", "level": "warning", "message": {"text": "CI is configured but no tests are detected"}, "properties": {"repobilityId": "336e11284be558da", "scanner": "scanner-primary", "fingerprint": "11825279136b53a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "ci", "config-theater", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "efb173f729e8d41a", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "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": "756daef32db6b207", "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": "3b6ae71a8d7a8d9f", "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": "455c6e6cbb653430", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-a0b99230a274b2eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/proxy.ts:31"}, "properties": {"repobilityId": "a9ac7308dd6e8dc5", "scanner": "scanner-primary", "fingerprint": "a0b99230a274b2eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57cb180334b1af4d", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/components/SearchResults.tsx:43"}, "properties": {"repobilityId": "9c3f8ce1ad397ac7", "scanner": "scanner-primary", "fingerprint": "57cb180334b1af4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6f96b1ad2843572", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/components/KLineChart.tsx:54"}, "properties": {"repobilityId": "146f90d3b0be4c7a", "scanner": "scanner-primary", "fingerprint": "f6f96b1ad2843572", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0e43366164bc079", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/components/StockView.tsx:307"}, "properties": {"repobilityId": "9452e81e9e4ba72e", "scanner": "scanner-primary", "fingerprint": "b0e43366164bc079", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c87d3169bc9598a", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/components/IndicatorsPanel.tsx:91"}, "properties": {"repobilityId": "065e32ceb88e7258", "scanner": "scanner-primary", "fingerprint": "8c87d3169bc9598a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6bdf7f31612d073b", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/components/StockCard.tsx:38"}, "properties": {"repobilityId": "65600a2d4b1f25ac", "scanner": "scanner-primary", "fingerprint": "6bdf7f31612d073b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff8ce0bc4a38544e", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/app/not-found.tsx:4"}, "properties": {"repobilityId": "e4b55f6f3ae43404", "scanner": "scanner-primary", "fingerprint": "ff8ce0bc4a38544e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-240b595b5bf8feef", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/app/sitemap.ts:21"}, "properties": {"repobilityId": "c078ed36a8d4abe7", "scanner": "scanner-primary", "fingerprint": "240b595b5bf8feef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e81adfacccdb6d8a", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/app/layout.tsx:44"}, "properties": {"repobilityId": "f1b25ed78035108d", "scanner": "scanner-primary", "fingerprint": "e81adfacccdb6d8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78006338350ba9c2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/app/api/og/[kind]/route.tsx:39"}, "properties": {"repobilityId": "88656c78470176cd", "scanner": "scanner-primary", "fingerprint": "78006338350ba9c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a964d4a99ebe330a", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/app/[locale]/not-found.tsx:3"}, "properties": {"repobilityId": "a2d20e89f7a26219", "scanner": "scanner-primary", "fingerprint": "a964d4a99ebe330a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f42ad89be14dfdc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/api.ts:229"}, "properties": {"repobilityId": "d3521baa4c762559", "scanner": "scanner-primary", "fingerprint": "1f42ad89be14dfdc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3a6a254ce8c1e39b", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/lib/eventTitle.ts:1"}, "properties": {"repobilityId": "0faed8d3261bb630", "scanner": "scanner-primary", "fingerprint": "3a6a254ce8c1e39b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b334d875f2339fa1", "level": "note", "message": {"text": "5 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "faa38682016f5d53", "scanner": "scanner-primary", "fingerprint": "b334d875f2339fa1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}