{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "foundry_unresolved_feedback", "name": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend", "shortDescription": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#9\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#9\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#9\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 9\nGraph consistency label: needs_more_evidence\nNodes: 15\nEdges: 28\nNode types: {'link_quality': 4, 'pr_file': 3, 'comment': 2, 'comment_chain': 2, '"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_blueprint_gap", "name": "Foundry mined blueprint gap alignment: vazzocomercio-wq/eclick-frontend", "shortDescription": {"text": "Foundry mined blueprint gap alignment: vazzocomercio-wq/eclick-frontend"}, "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: supported_by_verification_signal\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#8\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: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#8\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#8\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 8\nGraph consistency label: supported_by_verification_signal\nNodes: 44\nEdges: 72\nNode types: {'pr_file': 25, 'link_qual"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend", "shortDescription": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#9\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#9\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'ui_or_frontend': 2, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-eac7750f4a"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "foundry_schema_ui_api_gap", "name": "Foundry mined schema ui api mismatch: vazzocomercio-wq/eclick-frontend", "shortDescription": {"text": "Foundry mined schema ui api mismatch: vazzocomercio-wq/eclick-frontend"}, "fullDescription": {"text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#20\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#20\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#20\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 20\nGraph consistency label: needs_more_evidence\nNodes: 67\nEdges: 107\nNode types: {'pr_file': 55, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fi"}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: vazzocomercio-wq/eclick-frontend", "shortDescription": {"text": "Foundry mined bad chains: vazzocomercio-wq/eclick-frontend"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#7\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#7\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 6\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 3, 'ui_or_frontend': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-af5689ac8d9b0e3b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polar"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.84, "cwe": "", "owasp": ""}}, {"id": "foundry_auth_guardrail_gap", "name": "Foundry mined security auth guardrail gaps: vazzocomercio-wq/eclick-frontend", "shortDescription": {"text": "Foundry mined security auth guardrail gaps: vazzocomercio-wq/eclick-frontend"}, "fullDescription": {"text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#20\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#20\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#20\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 20\nGraph consistency label: needs_more_evidence\nNodes: 67\nEdges: 107\nNode types: {'pr_file': 55, 'link_quality': 4, 'comment': 2, 'comment"}, "properties": {"scanner": "foundry_dataset", "category": "auth", "severity": "critical", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "foundry_fake_real_gap", "name": "Foundry mined mock as real or placeholder: vazzocomercio-wq/eclick-frontend", "shortDescription": {"text": "Foundry mined mock as real or placeholder: vazzocomercio-wq/eclick-frontend"}, "fullDescription": {"text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#7\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#7\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 20\nEdges: 34\nNode types: {'pr_file': "}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "critical", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-72b60caace0754d2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/Header.tsx:108", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/Header.tsx:108"}, "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-51f3f837154b5313", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CatalogLinkBanner.tsx:75", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CatalogLinkBanner.tsx:75"}, "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-da140082df14fcaa", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CanvaButton.tsx:246", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CanvaButton.tsx:246"}, "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-8fcd3f5fb4aa4842", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeVideoCard.tsx:137", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeVideoCard.tsx:137"}, "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-5c97fdcbf7e3a997", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/ListingSeoPanel.tsx:100", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/ListingSeoPanel.tsx:100"}, "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-160260ed14175487", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/MLAttributesForm.tsx:61", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/MLAttributesForm.tsx:61"}, "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-3bb06259a615f2f2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/BriefingConfigurator.tsx:535", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/BriefingConfigurator.tsx:535"}, "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-30092f109c6ea234", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeImageCard.tsx:135", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeImageCard.tsx:135"}, "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-ea47c66d0fc4533d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/campanhas/SmartProductInput.tsx:310", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/campanhas/SmartProductInput.tsx:310"}, "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-078a74e7ae7e7f1f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/storefront-v3/StorefrontPixels.tsx:20", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/storefront-v3/StorefrontPixels.tsx:20"}, "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-59f9ad7e12b221ae", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/storefront-v3/StoreShell.tsx:51", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/storefront-v3/StoreShell.tsx:51"}, "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-f1e136ef0cc20558", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/storefront-v3/SectionRenderer.tsx:79", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/storefront-v3/SectionRenderer.tsx:79"}, "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-7e663665ea6f79b7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/intelligence/AlertToastListener.tsx:301", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/intelligence/AlertToastListener.tsx:301"}, "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-bb6f824eaaa20f03", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/animated-prompt-suggestions.tsx:167", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/animated-prompt-suggestions.tsx:167"}, "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-4bb1b49ff5f31d80", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/social/SocialChannelSelector.tsx:51", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/social/SocialChannelSelector.tsx:51"}, "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-521ce4cff9d1d59e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/social/SocialContentPreview.tsx:166", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/social/SocialContentPreview.tsx:166"}, "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-3dfe047563d08929", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/social/SocialContentPreview.tsx:369", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/social/SocialContentPreview.tsx:369"}, "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-4e051a7d49fc449a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/ai-visibility/GeoImpactPanel.tsx:42", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ai-visibility/GeoImpactPanel.tsx:42"}, "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-69681b83ae96c5cf", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/copilot/FloatingCopilot.tsx:514", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/copilot/FloatingCopilot.tsx:514"}, "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-8003097acc61b6e4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/premium/OrderResult.tsx:111", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/premium/OrderResult.tsx:111"}, "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-3978414f9acb1907", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/premium/SiteHeader.tsx:48", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/premium/SiteHeader.tsx:48"}, "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-f70fdbf927b2037d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/premium/CheckoutForm.tsx:360", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/premium/CheckoutForm.tsx:360"}, "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-07cd4c43054af8b0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer-hub/CustomerDetailDrawer.tsx:223", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer-hub/CustomerDetailDrawer.tsx:223"}, "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-0a70a64cdd0010d3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:26", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:26"}, "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-26c102db97aea806", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/layout.tsx:48", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/layout.tsx:48"}, "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-38ae5969e24d51a5", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/lib/schema-org.ts:123", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/lib/schema-org.ts:123"}, "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-c67701693850f572", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:107", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:107"}, "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-794a9ed7a76437b8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/coleta/page.tsx:88", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/coleta/page.tsx:88"}, "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-36cc839c73f9f52a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/picking/page.tsx:105", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/picking/page.tsx:105"}, "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-2785d04769e29144", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/painel/page.tsx:178", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/painel/page.tsx:178"}, "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-2768a31c11ff0001", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/packing/page.tsx:171", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/packing/page.tsx:171"}, "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-bd3085c7b6d3ff99", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/_components/CompaniesSheet.tsx:144", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/_components/CompaniesSheet.tsx:144"}, "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-dc286af0ba480596", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/_components/TeamSheet.tsx:123", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/_components/TeamSheet.tsx:123"}, "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-6cda9e7e45201bb3", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/ia/completar/route.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/ia/completar/route.ts:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-71ae25167792cad2", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/page.tsx:99", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/page.tsx:99"}, "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-3552517626d771e6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/_components/LoadingClient.tsx:86", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/_components/LoadingClient.tsx:86"}, "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-d3eb28d1181cc9af", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/_components/UnsubClient.tsx:33", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/_components/UnsubClient.tsx:33"}, "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-4bc944beb1ea518f", "name": "TODO/FIXME marker in shipping code \u2014 src/app/auditoria-gratis/_components/ResultClient.tsx:19", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/auditoria-gratis/_components/ResultClient.tsx:19"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e09837d0dd62d31d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/_components/ResultClient.tsx:300", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/_components/ResultClient.tsx:300"}, "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-6c3631832b439afd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/page.tsx:587", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/page.tsx:587"}, "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-def933d79010bdd9", "name": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/page.tsx:794", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/page.tsx:794"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dcfbd871a5b410ec", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/page.tsx:222", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/page.tsx:222"}, "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-7dfdd24bf585334e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/concorrentes/page.tsx:109", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/concorrentes/page.tsx:109"}, "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-f06d6773cd6f3aba", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/concorrentes/[productId]/page.tsx:122", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/concorrentes/[productId]/page.tsx:122"}, "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-8d61bafdde81c8bb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/[id]/page.tsx:214", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/[id]/page.tsx:214"}, "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-497486cc11be6d30", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/inteligencia/gestores/page.tsx:459", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/inteligencia/gestores/page.tsx:459"}, "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-961fb3636e5d32ed", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/inteligencia/relatorios/page.tsx:120", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/inteligencia/relatorios/page.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-bed0df46dd7d8b77", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/inteligencia/alertas/page.tsx:234", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/inteligencia/alertas/page.tsx:234"}, "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-24df6f432e37be35", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-quality/page.tsx:216", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-quality/page.tsx:216"}, "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-2575ce09048203df", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-quality/penalties/page.tsx:133", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-quality/penalties/page.tsx:133"}, "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-dc1103646cb1bcd5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/inteligencia/page.tsx:702", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/inteligencia/page.tsx:702"}, "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-2034f77e6d7012d1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/fornecedores/[id]/IcarusIntegrationTab.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/fornecedores/[id]/IcarusIntegrationTab.tsx:714"}, "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-891570f546752afb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/fornecedores/[id]/page.tsx:452", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/fornecedores/[id]/page.tsx:452"}, "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-b531cda2f302998d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/importacoes/page.tsx:140", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/importacoes/page.tsx:140"}, "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-174b78aa2500762a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/page.tsx:362", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/page.tsx:362"}, "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-5c6599d808342720", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/page.tsx:281", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/page.tsx:281"}, "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-f6b6f1060c8d8059", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/page.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/page.tsx:235"}, "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-25af832b99347eb9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/publish/", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/publish/shopee/page.tsx:197"}, "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-93907ca6e13dcd43", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/publish/", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/publish/ml/page.tsx:322"}, "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-ab0ec8eaf2ffbe18", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/publish/", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/publish/tiktok/page.tsx:177"}, "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-7ad237fdadd77ca2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/new/page.tsx:416", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/new/page.tsx:416"}, "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-1a02260fa434305b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/references/_components/UploadProgressLis", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/references/_components/UploadProgressList.tsx:41"}, "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-dc05d1019eaa7d85", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/references/_components/TaxonomySelect.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/references/_components/TaxonomySelect.tsx:314"}, "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-bceb3f5bae8e7e96", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/TemplatesList.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/TemplatesList.tsx:192"}, "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-97d73c566eaf2f72", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/ReferenceSelector.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/ReferenceSelector.tsx:88"}, "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-b3ae9d3b66dfa5ef", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/PositionCard.tsx:1", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/PositionCard.tsx:115"}, "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-63cee1e66b309fa2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/TemplatePreviewDra", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/TemplatePreviewDrawer.tsx:72"}, "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-5b59909de1c150be", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/SlotTestModal.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/SlotTestModal.tsx:83"}, "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-f3e80c478e61fd70", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/SlotReferencesPane", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/SlotReferencesPanel.tsx:171"}, "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-2283fcb3d7110d9a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/composicao/page.tsx:131", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/composicao/page.tsx:131"}, "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-b98827a4c94f3eb2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListin", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx:555"}, "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-d291a72759d3da1e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx:596", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx:596"}, "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-daa85ee2481ea391", "name": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx:1926", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx:1926"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99a54e4160c3b341", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/anuncios/tiktok/page.tsx:450", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/anuncios/tiktok/page.tsx:450"}, "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-7a54d23b762a458d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/vinculos/page.tsx:291", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/vinculos/page.tsx:291"}, "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-d74d35fc22eb76b3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/multiplicador/page.tsx:326", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/multiplicador/page.tsx:326"}, "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-f85df28e6c486557", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/estoque/page.tsx:398", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/estoque/page.tsx:398"}, "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-247b53946b63fd57", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/estoque/sincronizacoes/page.tsx:294", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/estoque/sincronizacoes/page.tsx:294"}, "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-88cd9024ec1419cc", "name": "Icon-only button without accessible name \u2014 src/app/dashboard/produtos/page.tsx:447", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/produtos/page.tsx:447"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1169548e70e7e5b9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/page.tsx:833", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/page.tsx:833"}, "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-ae1011c9dcbde9f1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/operacao-cadastro/page.tsx:514", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/operacao-cadastro/page.tsx:514"}, "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-66a8b3e36c8b1bc3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/[id]/editar/page.tsx:430", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/[id]/editar/page.tsx:430"}, "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-b01f2d759e6d7570", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/importar/page.tsx:355", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/importar/page.tsx:355"}, "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-cc70e1597434aea7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/recomendacoes-ia/page.tsx:182", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/recomendacoes-ia/page.tsx:182"}, "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-a92882f10ed6fca1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/_components/ProdutosTable.tsx:266", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/_components/ProdutosTable.tsx:266"}, "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-6f9ece3c0122f85b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/_components/VariantLinkerPanel.tsx:123", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/_components/VariantLinkerPanel.tsx:123"}, "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-22d970c26119e5d3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-afiliado/_components/LinkStudioModal.tsx:1", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-afiliado/_components/LinkStudioModal.tsx:159"}, "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-c42c44aa709c4a5a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-afiliado/_components/ShopeeAffiliateDiscov", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-afiliado/_components/ShopeeAffiliateDiscovery.tsx:238"}, "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-933e3df58afa5748", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-afiliado/_components/ContentStudioModal.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-afiliado/_components/ContentStudioModal.tsx:155"}, "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-185ab6734857f5e3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-campaigns/_components/ShopeeCampaignCenter", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-campaigns/_components/ShopeeCampaignCenter.tsx:263"}, "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-626c954cc164a12e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-campaigns/_components/PromoWizardModal.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-campaigns/_components/PromoWizardModal.tsx:404"}, "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-06a13a83a4fbe4c1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/campanhas/page.tsx:302", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/campanhas/page.tsx:302"}, "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-7fff9d5a655ff378", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/clientes/page.tsx:332", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/clientes/page.tsx:332"}, "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-0b1e3ee00cad0d70", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/analytics/page.tsx:267", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/analytics/page.tsx:267"}, "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-983bf523d2c5866f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/conhecimento/page.tsx:301", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/conhecimento/page.tsx:301"}, "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-47c98e2e896b7ddf", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/conversas/page.tsx:132", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/conversas/page.tsx:132"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c5040057fe5c139", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/agentes/page.tsx:613", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/agentes/page.tsx:613"}, "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-28768da2b896602a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/widget/page.tsx:178", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/widget/page.tsx:178"}, "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-e19d78dc12203ed3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/vendas-ao-vivo/page.tsx:191", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/vendas-ao-vivo/page.tsx:191"}, "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-08e1589f6cf676b6", "name": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/vendas-ao-vivo/page.tsx:262", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/vendas-ao-vivo/page.tsx:262"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54c909aca3dd573e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/analytics/_components/AnalyticsClient.tsx:224", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/analytics/_components/AnalyticsClient.tsx:224"}, "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-becd278d748df5f6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/producao/tarefas/page.tsx:161", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/producao/tarefas/page.tsx:161"}, "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-0989e47ccd608f82", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/producao/biblioteca/page.tsx:177", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/producao/biblioteca/page.tsx:177"}, "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-60740db90566bd3f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/producao/conteudo/page.tsx:103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/producao/conteudo/page.tsx:103"}, "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-30cde4a9a4565a76", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/relatorios/page.tsx:389", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/relatorios/page.tsx:389"}, "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-4984a15cc02f0c87", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/avaliacoes/page.tsx:313", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/avaliacoes/page.tsx:313"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-998c98fd305a064a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/perguntas/page.tsx:767", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/perguntas/page.tsx:767"}, "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-fdac2c97aecbebc4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/mensagens/page.tsx:276", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/mensagens/page.tsx:276"}, "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-495975385a779a10", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/mensagens/_components/ShopeeChatWorks", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/mensagens/_components/ShopeeChatWorkspace.tsx:228"}, "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-7cc96559409bf50f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/reclamacoes/page.tsx:1147", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/reclamacoes/page.tsx:1147"}, "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-44b74941473320c7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/page.tsx:266", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/page.tsx:266"}, "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-0fdbc1068ee2f450", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/bulk/page.tsx:224", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/bulk/page.tsx:224"}, "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-d451680c0f88c8be", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/seo-optimizer/page.tsx:283", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/seo-optimizer/page.tsx:283"}, "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-7004b475d25e684f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/items/[itemId]/page.tsx:174", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/items/[itemId]/page.tsx:174"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-850b3b19dbb5981a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads/inteligencia/page.tsx:210", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads/inteligencia/page.tsx:210"}, "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-2fe4727cbcf0be7d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads/mercadolivre/page.tsx:312", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads/mercadolivre/page.tsx:312"}, "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-e44494ac2f4aa1b9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads-campaigns/page.tsx:229", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads-campaigns/page.tsx:229"}, "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-0965a48f192134a2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads-campaigns/new/page.tsx:244", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads-campaigns/new/page.tsx:244"}, "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-d9774518b6d4c6f1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads-campaigns/[id]/page.tsx:311", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads-campaigns/[id]/page.tsx:311"}, "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-cc6e529d266cacff", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/insights/_components/InsightsClient.tsx:201", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/insights/_components/InsightsClient.tsx:201"}, "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-e4d983660433d5ed", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/comunicacao/_components/ModelosJornadasTab.tsx:25", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/comunicacao/_components/ModelosJornadasTab.tsx:251"}, "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-24d61401efeb2815", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/comunicacao/_components/TemplatesTab.tsx:372", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/comunicacao/_components/TemplatesTab.tsx:372"}, "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-3f335188ba2aa590", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-postsale/page.tsx:416", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-postsale/page.tsx:416"}, "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-bd749b22342e4849", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social-commerce/whatsapp/page.tsx:240", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social-commerce/whatsapp/page.tsx:240"}, "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-b71ae99e2716390f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social-commerce/instagram/page.tsx:420", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social-commerce/instagram/page.tsx:420"}, "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-31a5260590300f43", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social-commerce/instagram/posts/page.tsx:379", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social-commerce/instagram/posts/page.tsx:379"}, "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-a6a876126d85232f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-campaigns/config/page.tsx:415", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-campaigns/config/page.tsx:415"}, "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-3983442455e04c18", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-campaigns/anuncio/[productId]/page.tsx:138", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-campaigns/anuncio/[productId]/page.tsx:138"}, "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-a544a8ba32feee32", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-campaigns/[id]/page.tsx:618", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-campaigns/[id]/page.tsx:618"}, "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-8f7875f88a2943b8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/canais/page.tsx:103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/canais/page.tsx:103"}, "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-c0c35bcdd06fc7c5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/admin/roles/_components/RolesPanel.tsx:191", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/admin/roles/_components/RolesPanel.tsx:191"}, "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-61c705379b5aa6a2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/admin/access-requests/_components/AccessRequestsP", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/admin/access-requests/_components/AccessRequestsPanel.tsx:216"}, "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-a4516c8d687417da", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/fidelidade/page.tsx:274", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/fidelidade/page.tsx:274"}, "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-d7fba439d3bcb7e2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/blog/page.tsx:406", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/blog/page.tsx:406"}, "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-20b355fdd6c6112a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/blog/estudio/page.tsx:207", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/blog/estudio/page.tsx:207"}, "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-324fda08076b7f3e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/analytics/page.tsx:210", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/analytics/page.tsx:210"}, "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-bd348ef577314851", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/ambientador/page.tsx:245", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/ambientador/page.tsx:245"}, "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-1291cfe443aef449", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/leads/page.tsx:165", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/leads/page.tsx:165"}, "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-45c898465c62a482", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/recovery/page.tsx:381", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/recovery/page.tsx:381"}, "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-8289257d47c3f157", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/precos/page.tsx:193", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/precos/page.tsx:193"}, "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-fa2060437e17facf", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social/generate/page.tsx:296", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social/generate/page.tsx:296"}, "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-33dadec36f89a0e8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social/images/page.tsx:154", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social/images/page.tsx:154"}, "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-745fdd40e4eeb7bc", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/resultado/page.tsx:245", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/resultado/page.tsx:245"}, "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-6acfe61ade7aabe3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/contas-a-pagar/page.tsx:243", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/contas-a-pagar/page.tsx:243"}, "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-6f467a8eeec6255d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/contas-a-pagar/[id]/page.tsx:435", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/contas-a-pagar/[id]/page.tsx:435"}, "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-8c9b26aaa74ed2be", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/resumo/page.tsx:188", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/resumo/page.tsx:188"}, "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-0162b5521e31f66d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ai-visibility/score/_components/GeoScoreClient.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ai-visibility/score/_components/GeoScoreClient.tsx:231"}, "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-6c0f8d0fd1180f28", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ai-visibility/optimizer/_components/GeoOptimizerC", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ai-visibility/optimizer/_components/GeoOptimizerClient.tsx:351"}, "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-ef9b005b4cf7e3b2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ai-visibility/scores/_components/ScoresHistoryCli", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ai-visibility/scores/_components/ScoresHistoryClient.tsx:174"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aa62762fb9487e25", "name": "Icon-only button without accessible name \u2014 src/app/dashboard/messaging/_components/TemplatesTab.tsx:230", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/messaging/_components/TemplatesTab.tsx:230"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c5ff950b976c692", "name": "Icon-only button without accessible name \u2014 src/app/dashboard/messaging/_components/SendsTab.tsx:210", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/messaging/_components/SendsTab.tsx:210"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e02783ab7d6ff7fe", "name": "Icon-only button without accessible name \u2014 src/app/dashboard/messaging/_components/JourneysTab.tsx:283", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/messaging/_components/JourneysTab.tsx:283"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd89556f7a468628", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/messaging/_components/JourneysTab.tsx:169", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/messaging/_components/JourneysTab.tsx:169"}, "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-2596d3ec509b73a2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/enriquecimento/page.tsx:450", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/enriquecimento/page.tsx:450"}, "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-f2ca9d231b55b951", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-radar/_components/ShopeeRadar.tsx:190", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-radar/_components/ShopeeRadar.tsx:190"}, "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-34c9984c6c33417d", "name": "Icon-only button without accessible name \u2014 src/app/dashboard/crm/clientes/page.tsx:908", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/crm/clientes/page.tsx:908"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3dbc72f90047b41f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/clientes/page.tsx:619", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/clientes/page.tsx:619"}, "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-d4f9d03bf4c6bcf6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/pos-venda/page.tsx:141", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/pos-venda/page.tsx:141"}, "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-0f27093ab5a77c83", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/pipeline/page.tsx:106", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/pipeline/page.tsx:106"}, "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-96ed36b9a144478a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/AbcTab.tsx:146", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/AbcTab.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-2ee7dfe703376ec5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/RfmTab.tsx:211", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/RfmTab.tsx:211"}, "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-1d80f370b44a69fb", "name": "Icon-only button without accessible name \u2014 src/app/dashboard/crm/customer-hub/_components/SegmentsTab.tsx:262", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/crm/customer-hub/_components/SegmentsTab.tsx:262"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6bca3ca9da376847", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/SegmentsTab.tsx:136", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/SegmentsTab.tsx:136"}, "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-d21312ac2778d5cc", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/OverviewTab.tsx:149", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/OverviewTab.tsx:149"}, "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-3a3632aa717c4d82", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/ChurnRiskTab.tsx:136", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/ChurnRiskTab.tsx:136"}, "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-3ed0f47e1f3f5e2f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-matchmaker/_components/ShopeeMatchmaker.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-matchmaker/_components/ShopeeMatchmaker.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-0f9efde52d3562dc", "name": "Icon-only button without accessible name \u2014 src/app/dashboard/pedidos/page.tsx:645", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/pedidos/page.tsx:645"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f617739fda8e5345", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pedidos/page.tsx:677", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pedidos/page.tsx:677"}, "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-b10a790ceff2cfac", "name": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/pedidos/page.tsx:2585", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/pedidos/page.tsx:2585"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68eabc3a1ed7ccfd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pedidos/_components/PedidosTable.tsx:207", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pedidos/_components/PedidosTable.tsx:207"}, "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-2d70f65949519ff1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pedidos/_components/OrderDetailDrawer.tsx:373", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pedidos/_components/OrderDetailDrawer.tsx:373"}, "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-1a421885a3e76d3b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/store/config/page.tsx:525", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/store/config/page.tsx:525"}, "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-00cf70ae5ab3b375", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/store/designer/page.tsx:577", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/store/designer/page.tsx:577"}, "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-2683acabdea2ff56", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/store/designer/_components/PremiumEditor.tsx:182", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/store/designer/_components/PremiumEditor.tsx:182"}, "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-bcd7ea482224058e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/whatsapp-rotas/page.tsx:360", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/whatsapp-rotas/page.tsx:360"}, "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-49a8b26c3a1b1d60", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/equipe/page.tsx:294", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/equipe/page.tsx:294"}, "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-84debdc28e19159c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/equipe/_components/MemberAccountSco", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/equipe/_components/MemberAccountScope.tsx:210"}, "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-899c12fcbc0ab7a5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/preferencias/page.tsx:168", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/preferencias/page.tsx:168"}, "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-8685e9f4f53e941f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/integracoes/page.tsx:332", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/integracoes/page.tsx:332"}, "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-cc3fdb9b1e4f8500", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-boost/_components/ShopeeBoostCenter.tsx:29", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-boost/_components/ShopeeBoostCenter.tsx:296"}, "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-6475ae9c896624b6", "name": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/reputacao/page.tsx:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/reputacao/page.tsx:105"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a648cc43caa373d8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/kits/page.tsx:201", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/kits/page.tsx:201"}, "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-37814f568de777c9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/metas/page.tsx:244", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/metas/page.tsx:244"}, "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-15708e1af0e1b156", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/logistica/page.tsx:122", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/logistica/page.tsx:122"}, "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-6b91301698edc9ee", "name": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/integracoes/ml/callback/page.tsx:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/integracoes/ml/callback/page.tsx:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ffbe5d5883013b5a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/page.tsx:249", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/page.tsx:249"}, "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-ce06f6b827c51cbd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/partners/[id]/products/page.tsx:241", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/partners/[id]/products/page.tsx:241"}, "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-9b5aadd69d55ab0d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/orders/page.tsx:257", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/orders/page.tsx:257"}, "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-2ccd93b00315f3c7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/orders/today/page.tsx:155", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/orders/today/page.tsx:155"}, "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-194ff98006182217", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/oc/[id]/page.tsx:489", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/oc/[id]/page.tsx:489"}, "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-3a1860d72b8ead46", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/scores/page.tsx:189", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/scores/page.tsx:189"}, "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-8deb88897aacea88", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/disputes/page.tsx:174", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/disputes/page.tsx:174"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c306298dfc5ae5e", "name": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/analise/_components/SettingsModal.tsx:168", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/analise/_components/SettingsModal.tsx:168"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da5c046cb79f5bc4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/analise/_components/SettingsModal.tsx:582", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/analise/_components/SettingsModal.tsx:582"}, "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-e3a5ab2fbc857daf", "name": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/analise/_components/SignalDrawer.tsx:99", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/analise/_components/SignalDrawer.tsx:99"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad9b5cf3fe9438a5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/analise/_components/SignalDrawer.tsx:279", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/analise/_components/SignalDrawer.tsx:279"}, "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-d3065b3716b75929", "name": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/configuracao/_components/UntouchableSellersTab.tsx:", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/configuracao/_components/UntouchableSellersTab.tsx:160"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-324c3c5aa99d5ccf", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/configuracao/_components/UntouchableSelle", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/configuracao/_components/UntouchableSellersTab.tsx:88"}, "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-eb15dd90976d7253", "name": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/configuracao/_components/SeasonalTab.tsx:202", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/configuracao/_components/SeasonalTab.tsx:202"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0f14bb050c95f56", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/configuracao/_components/ConfidenceTab.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/configuracao/_components/ConfidenceTab.tsx:157"}, "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-405008f72aa51d00", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-quality/_components/ShopeeQualityCenter.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-quality/_components/ShopeeQualityCenter.tsx:134"}, "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-abb2ce7dd3b9a881", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/roadmap/page.tsx:249", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/roadmap/page.tsx:249"}, "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-ff4beeb8bbe9b770", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/loja/[slug]/page.tsx:58", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/loja/[slug]/page.tsx:58"}, "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-d1d10ce1e9e63011", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/loja/[slug]/blog/[postSlug]/page.tsx:76", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/loja/[slug]/blog/[postSlug]/page.tsx:76"}, "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-4538a1078cbe56bc", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/loja/[slug]/produto/[id]/page.tsx:60", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/loja/[slug]/produto/[id]/page.tsx:60"}, "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-b8f57fee67746cba", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/loja/[slug]/conta/ContaPageClient.tsx:282", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/loja/[slug]/conta/ContaPageClient.tsx:282"}, "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-0d24b0896236d707", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/oc/[token]/page.tsx:250", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/oc/[token]/page.tsx:250"}, "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-8eb6099615f23465", "name": "Stray `console.log` in TS/JS \u2014 src/lib/ai/client.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/ai/client.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fddd9e7376d33a00", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/storefront-v3/StoreShell.tsx:51", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/storefront-v3/StoreShell.tsx:51"}, "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-51ee00e0abc3f4c7", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/storefront-v3/SectionRenderer.tsx:79", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/storefront-v3/SectionRenderer.tsx:79"}, "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-9197cb695e3a2b4d", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/social/SocialContentPreview.tsx:369", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/social/SocialContentPreview.tsx:369"}, "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-6215343d2e1c181d", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/copilot/FloatingCopilot.tsx:514", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/copilot/FloatingCopilot.tsx:514"}, "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-ae35a26e7b1584cc", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:26", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:26"}, "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-f3f71690e2863ee1", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/layout.tsx:48", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/layout.tsx:48"}, "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-0fd502c7dab3c436", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:107", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:107"}, "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-fa816c46f9519e36", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/page.tsx:99", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/page.tsx:99"}, "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-92810957dae45727", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/_components/LoadingClient.tsx:86", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/_components/LoadingClient.tsx:86"}, "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-269164effde498bd", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/_components/UnsubClient.tsx:33", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/_components/UnsubClient.tsx:33"}, "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-ee174d6c80e64199", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/_components/ResultClient.tsx:300", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/_components/ResultClient.tsx:300"}, "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-b22eefb9eb21a838", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/loja/[slug]/page.tsx:58", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/loja/[slug]/page.tsx:58"}, "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-a9e359766bbec646", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/loja/[slug]/blog/[postSlug]/page.tsx:76", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/loja/[slug]/blog/[postSlug]/page.tsx:76"}, "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-d1145008e2305281", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/loja/[slug]/produto/[id]/page.tsx:60", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/loja/[slug]/produto/[id]/page.tsx:60"}, "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-98e7d7abe05fa235", "name": "Very large file: src/app/dashboard/page.tsx (2087 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/page.tsx (2087 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-9f9859ef85a4292e", "name": "Very large file: src/app/dashboard/compras/importacoes/page.tsx (1352 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/compras/importacoes/page.tsx (1352 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-5437134f1a73e1a3", "name": "Very large file: src/app/dashboard/creative/[productId]/page.tsx (1372 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/creative/[productId]/page.tsx (1372 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-c8dde25f9acafd06", "name": "Very large file: src/app/dashboard/creative/[productId]/listing/[listingId]/publish/ml/page.tsx (1087 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/creative/[productId]/listing/[listingId]/publish/ml/page.tsx (1087 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-e92e5b0cb4aace91", "name": "Very large file: src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx (1481 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx (1481 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-a29b8fb7de4fb5ea", "name": "Very large file: src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx (2577 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx (2577 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-e09ebc4b67fcd322", "name": "Very large file: src/app/dashboard/catalogo/vinculos/page.tsx (1998 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/catalogo/vinculos/page.tsx (1998 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-94da01249af94d7d", "name": "Very large file: src/app/dashboard/produtos/page.tsx (2488 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/produtos/page.tsx (2488 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-e3e376e4986800a0", "name": "Very large file: src/app/dashboard/produtos/operacao-cadastro/page.tsx (1405 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/produtos/operacao-cadastro/page.tsx (1405 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-6d5738ec78392751", "name": "Very large file: src/app/dashboard/atendimento/perguntas/page.tsx (1210 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/atendimento/perguntas/page.tsx (1210 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-4f1f655164a72a98", "name": "Very large file: src/app/dashboard/atendimento/reclamacoes/page.tsx (1455 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/atendimento/reclamacoes/page.tsx (1455 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-9c97ee8933b9d93b", "name": "Very large file: src/app/dashboard/ads/mercadolivre/page.tsx (1098 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/ads/mercadolivre/page.tsx (1098 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-507a7ba93aae2d7d", "name": "Very large file: src/app/dashboard/enriquecimento/page.tsx (1114 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/enriquecimento/page.tsx (1114 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-f2126eb43d719743", "name": "Very large file: src/app/dashboard/crm/clientes/page.tsx (1066 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/crm/clientes/page.tsx (1066 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-3199da599e521d7a", "name": "Very large file: src/app/dashboard/pedidos/page.tsx (3378 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/pedidos/page.tsx (3378 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-ea7d0573413aa1d6", "name": "Very large file: src/app/dashboard/store/designer-v3/_components/SectionInspector.tsx (1054 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/store/designer-v3/_components/SectionInspector.tsx (1054 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-615674995f393820", "name": "Very large file: src/app/dashboard/configuracoes/integracoes/page.tsx (2009 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/configuracoes/integracoes/page.tsx (2009 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "4 test file(s) for 669 source file(s) (ratio 0.01). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 42 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 839 placeholder/mock markers across 208 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-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-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-5fe8146c903523d0", "name": "Commented-code block (8 lines) in src/middleware.ts:80", "shortDescription": {"text": "Commented-code block (8 lines) in src/middleware.ts:80"}, "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-3406ea006595c6a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/inteligencia/OnboardingBanner.tsx:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/inteligencia/OnboardingBanner.tsx:22"}, "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-502dd504eceb3e4e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/inteligencia/HubSummaryCard.tsx:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/inteligencia/HubSummaryCard.tsx:31"}, "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-dc50f73b0d49f9f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/layout/Sidebar.tsx:701", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/layout/Sidebar.tsx:701"}, "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-b2cdbe8fd444646f", "name": "Commented-code block (5 lines) in src/components/creative/ListingEditor.tsx:444", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/creative/ListingEditor.tsx:444"}, "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-fb67c6cb800b68a9", "name": "Commented-code block (5 lines) in src/components/creative/MLAttributesForm.tsx:115", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/creative/MLAttributesForm.tsx:115"}, "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-f520391d645add3d", "name": "Commented-code block (5 lines) in src/components/creative/MarkupPanel.tsx:101", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/creative/MarkupPanel.tsx:101"}, "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-fbc02e77189c5a54", "name": "Commented-code block (5 lines) in src/components/creative/types.ts:523", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/creative/types.ts:523"}, "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-0cc238067dcfd55e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ai/AiModelSelector.tsx:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ai/AiModelSelector.tsx:78"}, "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-accf93786069c21e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ai/ApiKeysManager.tsx:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ai/ApiKeysManager.tsx:129"}, "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-c6eb1f8dc60aa59f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront-v3/sections/ProductKitsClient.tsx:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront-v3/sections/ProductKitsClient.tsx:86"}, "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-d1b3222c9a0223c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ads-ai/AdsAIChat.tsx:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ads-ai/AdsAIChat.tsx:62"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4c93c9f919535684", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ads-ai/InsightsBanner.tsx:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ads-ai/InsightsBanner.tsx:63"}, "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-e10c5ba7bf1a0a4e", "name": "Legacy-named symbol `description_old` in src/components/ai-visibility/optimizer-labels.ts:17", "shortDescription": {"text": "Legacy-named symbol `description_old` in src/components/ai-visibility/optimizer-labels.ts:17"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d478e2359c617cb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ai-visibility/GeoImpactPanel.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ai-visibility/GeoImpactPanel.tsx:71"}, "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-88a9c1a0c778417e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/BannerGeneratorModal.tsx:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/BannerGeneratorModal.tsx:91"}, "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-5a4dc83aef18965f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/ia/completar/route.ts:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/ia/completar/route.ts:81"}, "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-874a03e8536677ea", "name": "Commented-code block (5 lines) in src/app/dashboard/page.tsx:757", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/dashboard/page.tsx:757"}, "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-4cff3a6fcf710afd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/page.tsx:847", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/page.tsx:847"}, "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-e9efefd61128ebbc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/inteligencia/relatorios/page.tsx:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/inteligencia/relatorios/page.tsx:63"}, "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-1159304ebfb59aab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/inteligencia/alertas/page.tsx:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/inteligencia/alertas/page.tsx:75"}, "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-1a8b05dfff6bd74f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/inteligencia/page.tsx:467", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/inteligencia/page.tsx:467"}, "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-e4f0739532a6ae07", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/fornecedores/page.tsx:144", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/fornecedores/page.tsx:144"}, "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-7dc0de9520431ae6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/fornecedores/[id]/page.tsx:213", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/fornecedores/[id]/page.tsx:213"}, "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-7ac23e629fe6aafd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/importacoes/page.tsx:685", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/importacoes/page.tsx:685"}, "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-e453754da9a04eb2", "name": "Commented-code block (9 lines) in src/app/dashboard/creative/[productId]/listing/[listingId]/page.tsx:62", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/dashboard/creative/[productId]/listing/[listingId]/page.tsx:62"}, "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-b927d25e93784cea", "name": "Commented-code block (6 lines) in src/app/dashboard/creative/new/page.tsx:147", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/dashboard/creative/new/page.tsx:147"}, "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-435ba6ec37e9ffb3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/creative/references/page.tsx:453", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/creative/references/page.tsx:453"}, "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-9319d5a4ca5818b8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/page.tsx:522", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/page.tsx:522"}, "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-eb1e0d2e25256675", "name": "Legacy-named symbol `stock_info_v2` in src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx:1", "shortDescription": {"text": "Legacy-named symbol `stock_info_v2` in src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx:1159"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-96175581df0de85b", "name": "Commented-code block (6 lines) in src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx:459", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx:459"}, "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-b9f07a367b1f6ce8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCente", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx:162"}, "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-f0294bc467444b08", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx:1577", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx:1577"}, "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-c4acbd995471811c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/tiktok/page.tsx:635", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/tiktok/page.tsx:635"}, "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-1b8b9bba964f7b43", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/vinculos/page.tsx:472", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/vinculos/page.tsx:472"}, "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-a6bc1684b165e2d2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/multiplicador/page.tsx:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/multiplicador/page.tsx:129"}, "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-9b1a268dd3745d22", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/estoque/page.tsx:374", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/estoque/page.tsx:374"}, "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-97912f9146b89243", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/estoque/sincronizacoes/page.tsx:108", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/estoque/sincronizacoes/page.tsx:108"}, "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-28ed92cd6b4e125e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/page.tsx:766", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/page.tsx:766"}, "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-04fffd524edcdd47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/novo/_components/CategoryPicker.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/novo/_components/CategoryPicker.tsx:70"}, "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-709eef820eb98d08", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/operacao-cadastro/page.tsx:723", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/operacao-cadastro/page.tsx:723"}, "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-4622e0ad2af28050", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/[id]/editar/page.tsx:227", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/[id]/editar/page.tsx:227"}, "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-d1cb8c61a5938f98", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/categorias/page.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/categorias/page.tsx:66"}, "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-9f5d719448c896c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/_components/ProdutosTable.tsx:154", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/_components/ProdutosTable.tsx:154"}, "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-07db7521c22c0f17", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/_components/VariantLinkerPanel.tsx:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/_components/VariantLinkerPanel.tsx:43"}, "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-3fdc2d938fa9bbeb", "name": "Legacy-named symbol `campaign_copy` in src/app/dashboard/campanhas/page.tsx:467", "shortDescription": {"text": "Legacy-named symbol `campaign_copy` in src/app/dashboard/campanhas/page.tsx:467"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3d6e34c07fc8f64", "name": "Commented-code block (5 lines) in src/app/dashboard/campanhas/page.tsx:1037", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/dashboard/campanhas/page.tsx:1037"}, "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-4e25692edd89fe83", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/clientes/page.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/clientes/page.tsx:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79249870c988ee28", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/analytics/page.tsx:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/analytics/page.tsx:88"}, "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-e715f48a3e9eefd0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/conversas/page.tsx:511", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/conversas/page.tsx:511"}, "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-3b8f5634e8e1f859", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/agentes/page.tsx:204", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/agentes/page.tsx:204"}, "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-ca5180052fdd12de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/treinamento/page.tsx:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/treinamento/page.tsx:94"}, "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-ba487e225686f1bb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/widget/page.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/widget/page.tsx:70"}, "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-61d18eba55d0e608", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/vendas-ao-vivo/page.tsx:265", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/vendas-ao-vivo/page.tsx:265"}, "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-01bd6cc99bbaf33f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/producao/conteudo/page.tsx:254", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/producao/conteudo/page.tsx:254"}, "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-54038bd8077fbb7a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/relatorios/page.tsx:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/relatorios/page.tsx:62"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ddb1e528c3d96f13", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendimento/avaliacoes/page.tsx:121", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendimento/avaliacoes/page.tsx:121"}, "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-33e1a0b4d05b2248", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendimento/reclamacoes/page.tsx:543", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendimento/reclamacoes/page.tsx:543"}, "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-ef288211a7f6af8b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/page.tsx:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/page.tsx:138"}, "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-a98e92b4534bdf04", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/seo-optimizer/page.tsx:422", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/seo-optimizer/page.tsx:422"}, "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-802f046675afeae1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/fiscal/page.tsx:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/fiscal/page.tsx:56"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa95ad989de07add", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/scores/page.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/scores/page.tsx:66"}, "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-8e90e67cd86c6897", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/pricing/page.tsx:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/pricing/page.tsx:87"}, "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-f1c584bbcb1f95cf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ads/inteligencia/page.tsx:154", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ads/inteligencia/page.tsx:154"}, "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-fea66dd728c25ee1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ads/mercadolivre/page.tsx:268", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ads/mercadolivre/page.tsx:268"}, "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-4639ea1cd4bd5819", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/comunicacao/_components/PedidosEmCursoTab.tsx:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/comunicacao/_components/PedidosEmCursoTab.tsx:113"}, "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-65a5dc20827ce944", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/config/page.tsx:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/config/page.tsx:83"}, "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-7f53557d1d00d5e5", "name": "Commented-code block (6 lines) in src/app/dashboard/ml-campaigns/recommendations/[id]/page.tsx:240", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/dashboard/ml-campaigns/recommendations/[id]/page.tsx:240"}, "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-281f5922788e35e8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/analytics/page.tsx:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/analytics/page.tsx:64"}, "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-81040a7a859d35d4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/deadlines/page.tsx:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/deadlines/page.tsx:47"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-78723a382550ec33", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/[id]/page.tsx:114", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/[id]/page.tsx:114"}, "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-49cc7aee4443d9bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/audit/page.tsx:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/audit/page.tsx:57"}, "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-2833ff7a37cbaa2e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/apply/page.tsx:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/apply/page.tsx:69"}, "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-86b112581c800aa8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/executive/ads/page.tsx:230", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/executive/ads/page.tsx:230"}, "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-2d0d5020f4363ed2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/canais/page.tsx:335", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/canais/page.tsx:335"}, "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-5b4257f30b2449f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/admin/roles/_components/RolesPanel.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/admin/roles/_components/RolesPanel.tsx:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b508c06d7dd2610e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/page.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/page.tsx:70"}, "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-347991cac5799c1d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/fidelidade/page.tsx:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/fidelidade/page.tsx:90"}, "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-f31d258abb170203", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/frete/page.tsx:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/frete/page.tsx:75"}, "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-e6491b3f12a6521b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/recovery/page.tsx:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/recovery/page.tsx:119"}, "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-a7248ea8d88324ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/bonus/page.tsx:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/bonus/page.tsx:109"}, "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-d0f4c3abb4d97022", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/pagamentos/page.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/pagamentos/page.tsx:70"}, "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-f01dea9e7ac9f30d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/promocoes/page.tsx:108", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/promocoes/page.tsx:108"}, "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-f6704547acfb35e2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/cashback/page.tsx:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/cashback/page.tsx:73"}, "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-dab2e075311c0db1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/reviews/page.tsx:107", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/reviews/page.tsx:107"}, "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-dc3d2b4226f45978", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/cupons/page.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/cupons/page.tsx:71"}, "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-b2d002e89a5ab3a5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/precos/page.tsx:108", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/precos/page.tsx:108"}, "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-7d705c9cc27b2ba6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/resultado/page.tsx:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/resultado/page.tsx:90"}, "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-b8cc264390f64c4d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/contas-a-pagar/page.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/contas-a-pagar/page.tsx:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-911d5ad9993fde82", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/fluxo/page.tsx:150", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/fluxo/page.tsx:150"}, "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-ba195600f623234d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/reconciliacao/page.tsx:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/reconciliacao/page.tsx:96"}, "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-136a1447051576e4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ai-visibility/score/_components/GeoScoreClient.tsx:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ai-visibility/score/_components/GeoScoreClient.tsx:96"}, "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-92cd66cb409f2451", "name": "Legacy-named symbol `description_old` in src/app/dashboard/ai-visibility/optimizer/_components/GeoOptimizerClient.tsx:42", "shortDescription": {"text": "Legacy-named symbol `description_old` in src/app/dashboard/ai-visibility/optimizer/_components/GeoOptimizerClient.tsx:427"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a38ffa0c0d71a2da", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/enriquecimento/page.tsx:296", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/enriquecimento/page.tsx:296"}, "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-81d3abea60b4a420", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/crm/pos-venda/page.tsx:202", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/crm/pos-venda/page.tsx:202"}, "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-36888bd28e154242", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/shopee-matchmaker/_components/ShopeeMatchmaker.tsx:327", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/shopee-matchmaker/_components/ShopeeMatchmaker.tsx:327"}, "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-59e9a3b9418ee5ba", "name": "Commented-code block (5 lines) in src/app/dashboard/pedidos/page.tsx:2142", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/dashboard/pedidos/page.tsx:2142"}, "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-55d951eb9b579e74", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/pedidos/page.tsx:2221", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/pedidos/page.tsx:2221"}, "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-3b195818af589df6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/store/designer-v3/page.tsx:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/store/designer-v3/page.tsx:67"}, "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-269928fab22bdece", "name": "Commented-code block (5 lines) in src/app/dashboard/store/designer-v3/_components/SectionInspector.tsx:260", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/dashboard/store/designer-v3/_components/SectionInspector.tsx:260"}, "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-ef70974a652f696e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/configuracoes/ia/page.tsx:521", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/configuracoes/ia/page.tsx:521"}, "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-d9d5ba6975332344", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/configuracoes/integracoes/page.tsx:155", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/configuracoes/integracoes/page.tsx:155"}, "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-ac2043523e6684d6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/integracoes/page.tsx:367", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/integracoes/page.tsx:367"}, "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-2e3c0a906600ee47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/integracoes/ml/callback/page.tsx:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/integracoes/ml/callback/page.tsx:47"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f4564d01cde7a847", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/page.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/page.tsx:66"}, "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-2f22506e84a82b18", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/sync-logs/page.tsx:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/sync-logs/page.tsx:57"}, "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-c40a212503a05f71", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/partners/page.tsx:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/partners/page.tsx:110"}, "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-66065ac72fba9f73", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/partners/[id]/page.tsx:134", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/partners/[id]/page.tsx:134"}, "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-b90ab88a58c6f710", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/partners/[id]/products/page.tsx:108", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/partners/[id]/products/page.tsx:108"}, "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-5c3ff2f1090d12c4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/orders/page.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/orders/page.tsx:71"}, "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-9673ca469b4af4d5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/divergences/page.tsx:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/divergences/page.tsx:69"}, "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-3327ef5d4b543a57", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/returns/page.tsx:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/returns/page.tsx:86"}, "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-2130a02b4ae81b82", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/account-suppliers/page.tsx:104", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/account-suppliers/page.tsx:104"}, "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-bbb7d7d7d457d859", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/credits/page.tsx:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/credits/page.tsx:46"}, "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-2abdc282f5b6a136", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/disputes/page.tsx:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/disputes/page.tsx:68"}, "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-455be144662de262", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/roadmap/page.tsx:150", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/roadmap/page.tsx:150"}, "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-38ce43bdadf825c3", "name": "Commented-code block (5 lines) in src/app/loja/[slug]/page.tsx:39", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/loja/[slug]/page.tsx:39"}, "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-66afd03c334b4fab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/onboarding/page.tsx:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/onboarding/page.tsx:15"}, "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-dd84b8ed1dd36884", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/solicitar-acesso/page.tsx:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/solicitar-acesso/page.tsx:94"}, "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-044d1806738d9ef7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/rbac/permissions-context.tsx:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/rbac/permissions-context.tsx:75"}, "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-c8c878622834e80b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/storefront/customer-auth.ts:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/storefront/customer-auth.ts:119"}, "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-c675b9ad6f22d0bc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/storefront/affiliate-auth.ts:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/storefront/affiliate-auth.ts:125"}, "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-abbd2c784b80b09e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTodayOrders.ts:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTodayOrders.ts:44"}, "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-f2e3d9b1dcb5a73e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useMlLabels.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useMlLabels.ts:49"}, "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-87acb4066071a15a", "name": "19 env vars used in code but missing from .env.example", "shortDescription": {"text": "19 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ANTHROPIC_API_KEY`, `BLOG_REVALIDATE_SECRET`, `NEXT_PUBLIC_BACKEND_URL`, `NEXT_PUBLIC_ML_CLIENT_ID`, `NEXT_PUBLIC_ML_REDIRECT_URI`, `NEXT_PUBLIC_SANITY_DATASET`, `NEXT_PUBLIC_SANITY_PROJECT_ID`, `NEXT_PUBLIC_SENTRY_DSN` + 11 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/22105"}, "properties": {"repository": "vazzocomercio-wq/eclick-frontend", "repoUrl": "https://github.com/vazzocomercio-wq/eclick-frontend", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371206, "scanner": "foundry_dataset", "fingerprint": "b89153ef8a037ca31428bb870c0676583f874fef576924f6b9d340063627d3e5", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 2, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 3, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 2, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 15, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#9", "issue_number": "9", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-5ffb49fc5c9a9ca6", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 10}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#9\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#9\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#9\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 9\nGraph consistency label: needs_more_evidence\nNodes: 15\nEdges: 28\nNode types: {'link_quality': 4, 'pr_file': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 6, 'chain_has_link_quality': 4, 'thread_touches_file': 3, 'issue_chain_touches_file': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-78ba12d9b2c53aff", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371205, "scanner": "foundry_dataset", "fingerprint": "7e65cb6d6a635e91930a65078d21da72e15f8e7d38214cfdeed2cf2c6f7ad121", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 3, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 1, "comment_chain_touches_file": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 18, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 3, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#6", "issue_number": "6", "quality_tiers": {"unresolved": 3, "assumption_check": 2}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-855330b88760327f", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 4, "ui_or_frontend": 8}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: assumption_check\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#6\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#6\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#6\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 6\nGraph consistency label: assumption_check\nNodes: 18\nEdges: 28\nNode types: {'link_quality': 5, 'pr_file': 3, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 5, 'thread_touches_file': 3, 'comment_chain_touches_file': 3, 'issue_chain_touches_file': 3, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'api_or_backend': 1, 'human_reported_issue_no_linked_fix': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3, 'assumption_check': 2}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-0d773a9ee2932b1b", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371204, "scanner": "foundry_dataset", "fingerprint": "c91c9a6ce69644b9cdfad5108028aed6bd8f2f37dd3611919cae50268a38506c", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 1, "api_integration_gap": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 25, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 2, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 1, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 17, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 2, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#4", "issue_number": "4", "quality_tiers": {"unresolved": 3, "assumption_check": 2}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-6cad223cceaac04a", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 4, "ui_or_frontend": 4}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: assumption_check\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#4\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#4\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#4\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 4\nGraph consistency label: assumption_check\nNodes: 17\nEdges: 25\nNode types: {'link_quality': 5, 'pr_file': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 5, 'thread_touches_file': 2, 'comment_chain_touches_file': 2, 'issue_chain_touches_file': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'ui_or_frontend': 1, 'api_or_backend': 1, 'human_reported_issue_no_linked_fix': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3, 'assumption_check': 2}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-04725270bc37ed28", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371203, "scanner": "foundry_dataset", "fingerprint": "a6985234621ce5d57a9af9af1ca9501b299b74f8db7cbafd28ba7e371d32eeff", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 3, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 1, "comment_chain_touches_file": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 18, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 3, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#3", "issue_number": "3", "quality_tiers": {"unresolved": 3, "assumption_check": 2}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-37c8a3d3057a0de5", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 4, "ui_or_frontend": 8}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: assumption_check\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#3\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#3\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#3\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 3\nGraph consistency label: assumption_check\nNodes: 18\nEdges: 28\nNode types: {'link_quality': 5, 'pr_file': 3, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 5, 'thread_touches_file': 3, 'comment_chain_touches_file': 3, 'issue_chain_touches_file': 3, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'api_or_backend': 1, 'human_reported_issue_no_linked_fix': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3, 'assumption_check': 2}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-13154424b9664d11", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371202, "scanner": "foundry_dataset", "fingerprint": "ba3803b15e3f79e1e64bd06ae5163af943f4c6ec83c565f57c99a0e681d07a57", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 2, "docs_or_claims": 1, "schema_or_data": 12, "ui_or_frontend": 27, "source_or_other": 7, "deployment_env_gap": 1, "dependency_or_build": 6, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 107, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 55, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 67, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 55, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#20", "issue_number": "20", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-43eb121caebc0b3f", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 10, "docs_or_claims": 5, "schema_or_data": 60, "ui_or_frontend": 135, "source_or_other": 35, "dependency_or_build": 30}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#20\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#20\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#20\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 20\nGraph consistency label: needs_more_evidence\nNodes: 67\nEdges: 107\nNode types: {'pr_file': 55, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 55, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 27, 'schema_or_data': 12, 'source_or_other': 7, 'dependency_or_build': 6, 'not_resolved_or_not_observed': 4, 'api_or_backend': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-f384f704ba177349", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371201, "scanner": "foundry_dataset", "fingerprint": "b3111947279e8b96eb6ff0692fd2f7667220ca3b8656f4c0cf6676b565f6d76a", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 24, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 14, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#19", "issue_number": "19", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-2b34c2e05e1ff0e5", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#19\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#19\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#19\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 19\nGraph consistency label: needs_more_evidence\nNodes: 14\nEdges: 24\nNode types: {'link_quality': 4, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 4, 'chain_has_link_quality': 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, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'ui_or_frontend': 1, 'api_or_backend': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-805d22391ac427b7", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371200, "scanner": "foundry_dataset", "fingerprint": "8851c8b08eb18ce0fd24dc1c3779e62a8e30506fe9b8cb9d5c8f72ebe864d9d1", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "deployment_env_gap": 1, "api_integration_gap": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 1, "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": 1, "thread_has_comment_chain": 2, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 1, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#18", "issue_number": "18", "quality_tiers": {"unresolved": 4, "assumption_check": 2}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-17f6545ea78c6ec2", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: assumption_check\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#18\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#18\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#18\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 18\nGraph consistency label: assumption_check\nNodes: 19\nEdges: 28\nNode types: {'link_quality': 6, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_touches_file': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 2}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-b5b67fa986ed3ab4", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371199, "scanner": "foundry_dataset", "fingerprint": "34d2a1bd9b801e55fe9fcfaef308f508bb4b64d9aa82df274f03dbd74888e32e", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 1, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 24, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 14, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#17", "issue_number": "17", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-c5f8a7351f21bdab", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#17\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#17\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#17\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 17\nGraph consistency label: needs_more_evidence\nNodes: 14\nEdges: 24\nNode types: {'link_quality': 4, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 4, 'chain_has_link_quality': 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, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'ui_or_frontend': 1, 'api_or_backend': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-07ff797c31593c02", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371198, "scanner": "foundry_dataset", "fingerprint": "8b1158d841a9c5b691c47aa61301dbb207465e1546ac1cb87cb53642308d93bb", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 2, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 3, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 2, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 15, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#16", "issue_number": "16", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-af5c1b15b0873ec7", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 10}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#16\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#16\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#16\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 16\nGraph consistency label: needs_more_evidence\nNodes: 15\nEdges: 28\nNode types: {'link_quality': 4, 'pr_file': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 6, 'chain_has_link_quality': 4, 'thread_touches_file': 3, 'issue_chain_touches_file': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-3995cd7dcbdf5896", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371197, "scanner": "foundry_dataset", "fingerprint": "b424a3ffd45a46f0bb1f9a920e40f6c4445099dfc3e584b125d3814b4f2ee1bf", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"ui_or_frontend": 2, "deployment_env_gap": 1, "dependency_or_build": 2, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 32, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 4, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 2, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 16, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 4, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#15", "issue_number": "15", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-d94ea0806bf91160", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"ui_or_frontend": 10, "dependency_or_build": 10}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#15\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#15\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#15\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 15\nGraph consistency label: needs_more_evidence\nNodes: 16\nEdges: 32\nNode types: {'pr_file': 4, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 8, 'thread_touches_file': 4, 'chain_has_link_quality': 4, 'issue_chain_touches_file': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'dependency_or_build': 2, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-7fb49c3aac94df04", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371196, "scanner": "foundry_dataset", "fingerprint": "ba1b2bec009dd22bd1350def48a55ae1b3ebe92ea0621b166f7ca9e6df0ca894", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"ui_or_frontend": 2, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 24, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 2, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 14, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#14", "issue_number": "14", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-a032629d95aae586", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"ui_or_frontend": 10}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#14\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#14\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#14\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 14\nGraph consistency label: needs_more_evidence\nNodes: 14\nEdges: 24\nNode types: {'link_quality': 4, 'comment': 2, 'pr_file': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 4, 'chain_has_link_quality': 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, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-38e662427e63dae2", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371195, "scanner": "foundry_dataset", "fingerprint": "7bb131caab1ed375c80255f0050623257d1be7a2c9d4b662f6b3543b3afd3a1e", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 2, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 3, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 2, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 15, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#13", "issue_number": "13", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-f2619664a5f2c887", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 10}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#13\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#13\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#13\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 13\nGraph consistency label: needs_more_evidence\nNodes: 15\nEdges: 28\nNode types: {'link_quality': 4, 'pr_file': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 6, 'chain_has_link_quality': 4, 'thread_touches_file': 3, 'issue_chain_touches_file': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-e7fccfe9bbf1eba1", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371194, "scanner": "foundry_dataset", "fingerprint": "f1aa980d484cf9a1588e3f1db82ba76c8d02f3a75e2692064c5556f9ff4651bc", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 2, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 3, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 2, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 15, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#12", "issue_number": "12", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-5ce03fe0cd074749", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 10}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#12\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#12\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#12\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 12\nGraph consistency label: needs_more_evidence\nNodes: 15\nEdges: 28\nNode types: {'link_quality': 4, 'pr_file': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 6, 'chain_has_link_quality': 4, 'thread_touches_file': 3, 'issue_chain_touches_file': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-b042d01468f808eb", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371193, "scanner": "foundry_dataset", "fingerprint": "bf26ee14fbf67a6e295c9f2f772de390d631c078e4506d49f7eeef41b7d10d5e", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 2, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 3, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 2, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 15, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#11", "issue_number": "11", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-77feb756bf06a157", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 10}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#11\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#11\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#11\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 11\nGraph consistency label: needs_more_evidence\nNodes: 15\nEdges: 28\nNode types: {'link_quality': 4, 'pr_file': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 6, 'chain_has_link_quality': 4, 'thread_touches_file': 3, 'issue_chain_touches_file': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-21921a75ac4dc733", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371192, "scanner": "foundry_dataset", "fingerprint": "6f3ea3501342c6f5537b660e115a4b58b18ba28a7aa393ef1a63c7e827eab125", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 2, "deployment_env_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "ambiguous_needs_more_evidence": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 3, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 2, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 15, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 3, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#10", "issue_number": "10", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-b8b52ac508822b46", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 10}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#10\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#10\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#10\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 10\nGraph consistency label: needs_more_evidence\nNodes: 15\nEdges: 28\nNode types: {'link_quality': 4, 'pr_file': 3, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 6, 'chain_has_link_quality': 4, 'thread_touches_file': 3, 'issue_chain_touches_file': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'unlinked_human_feedback': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-88c2dca6e1ecae7f", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 371191, "scanner": "foundry_dataset", "fingerprint": "dfe062119337ddccab5dc079b989575f9cf56a4fde5ff80c594637001e60204a", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"api_or_backend": 1, "ui_or_frontend": 11, "source_or_other": 3, "deployment_env_gap": 1, "api_integration_gap": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 75, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 15, "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": 12, "thread_has_comment_chain": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 33, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 15, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#1", "issue_number": "1", "quality_tiers": {"unresolved": 4, "assumption_check": 2}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-3c5d19ec80ec2f04", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 55, "source_or_other": 15}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: assumption_check\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#1\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#1\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#1\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 1\nGraph consistency label: assumption_check\nNodes: 33\nEdges: 75\nNode types: {'pr_file': 15, 'link_quality': 6, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 15, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 11, 'not_resolved_or_not_observed': 4, 'source_or_other': 3, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4, 'assumption_check': 2}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-0265204a06d07666", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 357120, "scanner": "foundry_dataset", "fingerprint": "dd3df8e600e8f813f101e8935bdc388c637ade75e8797e46ef61a054b778a1e8", "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": {"ui_workflow": 3, "api_or_backend": 1, "ui_or_frontend": 18, "source_or_other": 6, "ui_workflow_gap": 1, "partial blueprint fit": 1, "verification_or_tests": 1, "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": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 72, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 25, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 4, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 44, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "pr_file": 25, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#8", "issue_number": "8", "quality_tiers": {"assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-b919d90041ea0aac", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 4, "ui_or_frontend": 72, "source_or_other": 24}}, "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: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#8\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: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#8\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#8\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 8\nGraph consistency label: supported_by_verification_signal\nNodes: 44\nEdges: 72\nNode types: {'pr_file': 25, 'link_quality': 5, 'commit': 4, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 25, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 5, 'comment_chain_links_commit': 4, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 18, 'source_or_other': 6, 'ui_workflow': 3, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'api_or_backend': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 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': 6}\nQuality tiers: {'weak_supervision': 3, '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/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-2ebd50a652e5c0c8", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 357119, "scanner": "foundry_dataset", "fingerprint": "51c4519a7a78313b9732afae6410c5d4d2bfcf253dd5f9f6a917949e4ed53889", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"api_or_backend": 1, "ui_or_frontend": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 3, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 1, "comment_chain_touches_file": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 18, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 3, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#6", "issue_number": "6", "quality_tiers": {"unresolved": 3, "assumption_check": 2}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-20a4ddc57f2d59c5", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 4, "ui_or_frontend": 8}}, "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: assumption_check\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#6\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: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#6\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#6\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 6\nGraph consistency label: assumption_check\nNodes: 18\nEdges: 28\nNode types: {'link_quality': 5, 'pr_file': 3, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 5, 'thread_touches_file': 3, 'comment_chain_touches_file': 3, 'issue_chain_touches_file': 3, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'api_or_backend': 1, 'human_reported_issue_no_linked_fix': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3, '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/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-59bd4651de6c4e6c", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 357118, "scanner": "foundry_dataset", "fingerprint": "537c8d3fbc3c3ad8fa1dbd1fb1905ffd32c241dbcf0cfde381240e9dbee82a24", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"api_or_backend": 1, "ui_or_frontend": 1, "api_integration_gap": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 25, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 2, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 1, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 17, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 2, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#4", "issue_number": "4", "quality_tiers": {"unresolved": 3, "assumption_check": 2}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-f54af804ef6112d2", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 4, "ui_or_frontend": 4}}, "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: assumption_check\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#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: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#4\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#4\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 4\nGraph consistency label: assumption_check\nNodes: 17\nEdges: 25\nNode types: {'link_quality': 5, 'pr_file': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 5, 'thread_touches_file': 2, 'comment_chain_touches_file': 2, 'issue_chain_touches_file': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'ui_or_frontend': 1, 'api_or_backend': 1, 'human_reported_issue_no_linked_fix': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3, '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/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-f4f6c6b95cc870b4", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 357117, "scanner": "foundry_dataset", "fingerprint": "2c8f2aa1a203132faebdc5199b9d5cccffa12e8f0e73c0dd73958ef7d916818f", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"api_or_backend": 1, "ui_or_frontend": 2, "api_integration_gap": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 3, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 1, "comment_chain_touches_file": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 18, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 3, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#3", "issue_number": "3", "quality_tiers": {"unresolved": 3, "assumption_check": 2}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-08214577cd0ac87f", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 4, "ui_or_frontend": 8}}, "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: assumption_check\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#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: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#3\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#3\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 3\nGraph consistency label: assumption_check\nNodes: 18\nEdges: 28\nNode types: {'link_quality': 5, 'pr_file': 3, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 5, 'thread_touches_file': 3, 'comment_chain_touches_file': 3, 'issue_chain_touches_file': 3, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'api_or_backend': 1, 'human_reported_issue_no_linked_fix': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3, '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/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-f0076d8165c13f9d", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 357116, "scanner": "foundry_dataset", "fingerprint": "486ee2f3a05eefcbca9b1be8c713c2524bcea59e002f9af4cb33e9168f45938b", "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": {"ui_workflow": 1, "api_or_backend": 1, "ui_or_frontend": 2, "ui_workflow_gap": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 29, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 3, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 1, "comment_chain_links_commit": 1, "comment_chain_touches_file": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 19, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "pr_file": 3, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#2", "issue_number": "2", "quality_tiers": {"assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-3166a8c19619d988", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 4, "ui_or_frontend": 8}}, "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: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#2\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#2\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#2\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 2\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 29\nNode types: {'link_quality': 5, 'pr_file': 3, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'commit': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 5, 'thread_touches_file': 3, 'comment_chain_touches_file': 3, 'issue_chain_touches_file': 3, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_links_commit': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_unverified': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'api_or_backend': 1, 'human_reported_issue_then_fix_attempt': 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_unverified': 6}\nQuality tiers: {'weak_supervision': 3, '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/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-32fe041cb546ed75", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 357115, "scanner": "foundry_dataset", "fingerprint": "50e19e4a75c3f79f405bd0a5fc59c918008b93118abb5a61fe0dd743570adc5e", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"api_or_backend": 1, "deployment_env_gap": 1, "api_integration_gap": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 1, "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": 1, "thread_has_comment_chain": 2, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 1, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#18", "issue_number": "18", "quality_tiers": {"unresolved": 4, "assumption_check": 2}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-254b819563d7d2a3", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 5}}, "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: assumption_check\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#18\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: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#18\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#18\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 18\nGraph consistency label: assumption_check\nNodes: 19\nEdges: 28\nNode types: {'link_quality': 6, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_touches_file': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'not_resolved_or_not_observed': 4, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 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/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-fcb63a7d5e7616bb", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 357114, "scanner": "foundry_dataset", "fingerprint": "f81ac7841b03b04c3887d229ca9e3aa108be074c84f1f1aa7542f43b86ca55cd", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"api_or_backend": 1, "ui_or_frontend": 11, "source_or_other": 3, "deployment_env_gap": 1, "api_integration_gap": 1, "partial blueprint fit": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "blueprint_human_gap_alignment": 1, "blueprint_human_gap_disagreement": 1, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 75, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 15, "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": 12, "thread_has_comment_chain": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 33, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 15, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#1", "issue_number": "1", "quality_tiers": {"unresolved": 4, "assumption_check": 2}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-7618f9e27c4ae62f", "graph_gold_label": "assumption_check", "changed_file_labels": {"api_or_backend": 5, "ui_or_frontend": 55, "source_or_other": 15}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: assumption_check\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#1\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: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#1\nGraph gold label: assumption_check\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#1\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 1\nGraph consistency label: assumption_check\nNodes: 33\nEdges: 75\nNode types: {'pr_file': 15, 'link_quality': 6, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 15, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 11, 'not_resolved_or_not_observed': 4, 'source_or_other': 3, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'api_or_backend': 1, 'blueprint_human_gap_alignment': 1, 'partial blueprint fit': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 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/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-98f122c1d45506c2", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 313481, "scanner": "foundry_dataset", "fingerprint": "e2603ef89ec3d30ebf3b151c6feb0b3562280e7a08414f2d9e6e33559f0d186e", "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": "vazzocomercio-wq/eclick-frontend#9", "human_labels": ["api_or_backend", "deployment_env_gap", "human_feedback_general", "ui_or_frontend"], "issue_number": "9", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-178e0851e68e93fd", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#9\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#9\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'ui_or_frontend': 2, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-eac7750f4af0b3a4\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/9\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/9\\nTitle: feat(f12): Onda A na UI \u2014 Empresas & Contas\\nBody:\\nTela Empresas & Contas (multi-CNPJ/multiconta) no hub do CD. TSC+lint 0.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-9d70b0e3528c37ff\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/9#issuecomment-4529876710\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/9#issuecomment-4529876710\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *eclick-frontend* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | 3f79bd563fc7eaca78e04198a36bb460c7b199c5 |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/eclick-frontend/deploys/6a135f54a3622e00082dc80f |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-9--eclick-frontend.netlify.app](https://deploy-preview-9--eclick-frontend.netlify.app) |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udcf1</span> Preview on mobile | <details><summary> Toggle QR Code... </summary><br /><br />![QR Code](https://app.netlify.com/qr-code/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RlcGxveS1wcmV2aWV3LTktLWVjbGljay1mcm9udGVuZC5uZXRsaWZ5LmFwcCJ9.1tRpQDeLUZmV35I7JBy5T2WbJgbsrjYlNJOCLmI9du0)<br /><br />_Use your smartphone camera t\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-assumption_checks-8fa8e18a17bbbe6f", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 313480, "scanner": "foundry_dataset", "fingerprint": "c0a57db358a6b9550452b51f9f0095557f5a2267427116ee1d8b53db8c7f04d4", "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": "vazzocomercio-wq/eclick-frontend#2", "human_labels": ["api_or_backend", "ui_or_frontend", "ui_workflow_gap"], "issue_number": "2", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-aa9eb862a1272cb3", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 2}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#2\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\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#2\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'ui_workflow_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 2, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-efc72ea5d04b6894\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/2\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/2\\nTitle: feat(f12): sprint 1 \u2014 painel de configura\u00e7\u00f5es (frontend)\\nBody:\\n## Summary\\nSprint 1 do F12 (frontend) \u2014 painel de **Configura\u00e7\u00f5es** no hub `/fulfillment` (supervisor). Empilhado sobre a Sprint 0.\\n\\n- Engrenagem no hub abre o `SettingsSheet` (bottom sheet, mobile-first, eclick-ui):\\n  - **Auto-ingest\u00e3o**: liga/desliga + origens (marketplace/loja/b2b) + CD padr\u00e3o\\n  - **IA**: 3 toggles (triagem de avaria, confer\u00eancia por foto, fila inteligente)\\n  - **Foto**: sempre exigir + limite em R$\\n- Usa `GET`/`PUT /fulfillment/settings`.\\n\\nDepende do backend (PR feat/f12 sprint 1).\\n\\n## Test plan\\n- [ ] Abrir /fulfillment \u2192 engrenagem \u2192 ligar auto-ingest\u00e3o + salvar \u2192 reabrir confirma persist\u00eancia\\n- [ ] Alternar toggles de IA e regra de foto\\n\\n> Base = `feat/f12-fulfillment-sprint0` (PR empilhado).\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-b8551bb4946c300b\",\n    \"filename\": \"src/app/fulfillment/_components/SettingsSheet.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"added\",\n    \"additions\": 153,\n    \"deletions\": 0,\n    \"changes\": 153,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/cd5b6e43cbe02458b5d2dced35ab3ce7d29f3ac4/src%2Fapp%2Ffulfillment%2F_components%2FSettingsSheet.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-b670fa47fcf13543\",\n    \"filename\": \"src/app/fulfillment/_lib/api.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 17,\n    \"deletions\": 0,\n    \"changes\": 17,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/cd5b6e43cbe02458b5d2dced35ab3ce7d29f3ac4/\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-assumption_checks-c135ee63d990e009", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 313479, "scanner": "foundry_dataset", "fingerprint": "3883af6b0cb5328443e9aea330d24a97a794b57682b183900255aca86c8e7c77", "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": "vazzocomercio-wq/eclick-frontend#19", "human_labels": ["api_or_backend", "deployment_env_gap", "human_feedback_general", "ui_or_frontend"], "issue_number": "19", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-a0356297de295a4f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 1}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#19\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#19\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'ui_or_frontend': 1, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-562ff3d114a4b49c\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/19\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/19\\nTitle: feat(fiscal): F2b-1 \u2014 bot\u00e3o Testar conex\u00e3o SEFAZ\\nBody:\\nBot\u00e3o Testar conex\u00e3o SEFAZ na Config fiscal. TSC+lint 0.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-25d477838f70e825\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/19#issuecomment-4533295964\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/19#issuecomment-4533295964\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *eclick-frontend* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | 8ac9856df062bb4468f4fd41ac8b023da933c158 |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/eclick-frontend/deploys/6a141b7ab5697600083e251d |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-19--eclick-frontend.netlify.app](https://deploy-preview-19--eclick-frontend.netlify.app) |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udcf1</span> Preview on mobile | <details><summary> Toggle QR Code... </summary><br /><br />![QR Code](https://app.netlify.com/qr-code/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RlcGxveS1wcmV2aWV3LTE5LS1lY2xpY2stZnJvbnRlbmQubmV0bGlmeS5hcHAifQ.jlocmmxAwk5u2m1Pj9Q9y3KxWlrpb3iq_q-RPRGjdOY)<br /><br />_Use your smartphone camera to\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-assumption_checks-dea5b2f482947c88", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 313478, "scanner": "foundry_dataset", "fingerprint": "daa8639594da90577cec018682d3d09ffb28fd01bcddf836134a3764144a4768", "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": "vazzocomercio-wq/eclick-frontend#17", "human_labels": ["api_or_backend", "deployment_env_gap", "human_feedback_general", "ui_or_frontend"], "issue_number": "17", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-1d705fc5714b9943", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 1}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#17\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#17\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'ui_or_frontend': 1, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-7dc0b91428630ac9\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/17\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/17\\nTitle: feat(fiscal): F2a na UI \u2014 upload do A1\\nBody:\\nUpload do certificado na Config fiscal. TSC+lint 0.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-d14c3f15643fa086\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/17#issuecomment-4533007879\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/17#issuecomment-4533007879\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *eclick-frontend* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | 72754049dd7a4a79c76fa6f3e5763672fc08005d |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/eclick-frontend/deploys/6a140fd0fd1b3a000883b028 |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-17--eclick-frontend.netlify.app](https://deploy-preview-17--eclick-frontend.netlify.app) |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udcf1</span> Preview on mobile | <details><summary> Toggle QR Code... </summary><br /><br />![QR Code](https://app.netlify.com/qr-code/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RlcGxveS1wcmV2aWV3LTE3LS1lY2xpY2stZnJvbnRlbmQubmV0bGlmeS5hcHAifQ.Wq3WP_Xw4luZz0iQHcRqoZyeepeXRDRgCeeJuEz1bpU)<br /><br />_Use your smartphone camera to open QR code l\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-assumption_checks-2bbaf0583c40ec43", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 313477, "scanner": "foundry_dataset", "fingerprint": "93af4f98b6f6dfb00750618d404e2575a67ebdd120d8bf173d7973398ec0f3c2", "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": "vazzocomercio-wq/eclick-frontend#16", "human_labels": ["api_or_backend", "deployment_env_gap", "human_feedback_general", "ui_or_frontend"], "issue_number": "16", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-aa42bd2ae796bb22", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#16\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#16\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'ui_or_frontend': 2, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a4ea142dd0890fc6\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/16\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/16\\nTitle: feat(fiscal): Faturador F1 na UI\\nBody:\\nConfig fiscal por empresa + % por conta na tela Empresas & Contas. TSC+lint 0.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-f348843da22a3754\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/16#issuecomment-4530589499\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/16#issuecomment-4530589499\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *eclick-frontend* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | c768d655e9df3bdb6bc9cf76e0c4f18084e69e25 |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/eclick-frontend/deploys/6a1391450d338900088921dd |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-16--eclick-frontend.netlify.app](https://deploy-preview-16--eclick-frontend.netlify.app) |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udcf1</span> Preview on mobile | <details><summary> Toggle QR Code... </summary><br /><br />![QR Code](https://app.netlify.com/qr-code/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RlcGxveS1wcmV2aWV3LTE2LS1lY2xpY2stZnJvbnRlbmQubmV0bGlmeS5hcHAifQ.jK6-_HGDWkhjVdz5iBdV3DjyFYqR_sCdzUB8zjq7HWg)<br /><br />_Use your smartphone cam\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-assumption_checks-b59cdf70c7dca3fb", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 313476, "scanner": "foundry_dataset", "fingerprint": "e1507553f66f7efdb26dfb00cbff9e294145188806ba1733746d6ce79da7d31d", "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": "vazzocomercio-wq/eclick-frontend#15", "human_labels": ["dependency_or_build", "deployment_env_gap", "human_feedback_general", "ui_or_frontend"], "issue_number": "15", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-eebfc03be78e3199", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 4, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 2, "dependency_or_build": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#15\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#15\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 4\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'dependency_or_build': 2, 'ui_or_frontend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b7044846ae7bc8e5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/15\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/15\\nTitle: feat(f12): leitura de c\u00f3digo de barras por c\u00e2mera\\nBody:\\nBot\u00e3o 'Ler com a c\u00e2mera' na bipagem (BarcodeDetector nativo + fallback @zxing/browser). TSC+lint+next build EXIT 0.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-715e25befa2e42a9\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/15#issuecomment-4530351930\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/15#issuecomment-4530351930\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *eclick-frontend* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | a3a1c464e0c896d81cc0716a8fe92214c6e1369e |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/eclick-frontend/deploys/6a137e30d62b0b0008d5ed8f |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-15--eclick-frontend.netlify.app](https://deploy-preview-15--eclick-frontend.netlify.app) |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udcf1</span> Preview on mobile | <details><summary> Toggle QR Code... </summary><br /><br />![QR Code](https://app.netlify.com/qr-code/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RlcGxveS1wcmV2aWV3LTE1LS1lY2xpY2stZnJvbnRlbmQubmV0bGlmeS5hcHAifQ.5qRwCpcY5S7wAH09-qahn\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-assumption_checks-3e51f112cbfe3dca", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 313475, "scanner": "foundry_dataset", "fingerprint": "bf6a2a4e20fd481fa15a48ef76c1c6b626eb886add9ee9a5a5ffd70024410f22", "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": "vazzocomercio-wq/eclick-frontend#14", "human_labels": ["deployment_env_gap", "human_feedback_general", "ui_or_frontend"], "issue_number": "14", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-7677b7da6f9840a5", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#14\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#14\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'ui_or_frontend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3519dbeb0b52ef71\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/14\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/14\\nTitle: feat(f12): modo TV no Painel + Aguardando coleta\\nBody:\\nModo tela cheia (TV/monitor) pro Painel ao vivo e Aguardando coleta. Frontend-only. TSC+lint 0.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-097fca7f27c40c47\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/14#issuecomment-4530135645\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/14#issuecomment-4530135645\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *eclick-frontend* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | 66dbf616444cc105e1497c047499b4277a3e7194 |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/eclick-frontend/deploys/6a137634f9f2e500086094d8 |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-14--eclick-frontend.netlify.app](https://deploy-preview-14--eclick-frontend.netlify.app) |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udcf1</span> Preview on mobile | <details><summary> Toggle QR Code... </summary><br /><br />![QR Code](https://app.netlify.com/qr-code/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RlcGxveS1wcmV2aWV3LTE0LS1lY2xpY2stZnJvbnRlbmQubmV0bGlmeS5hcHAifQ.xlDyYbi_L5SHb8OH_Udkc7tPWMxA19AOpVeJzMRftXI)<br /><br />_Use your sm\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-assumption_checks-4d2cb2b6bea78d25", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 313474, "scanner": "foundry_dataset", "fingerprint": "47b39209dd13358e606f6e05814dfa9d5c2ae9248b7d5e5d9403a759ed613bca", "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": "vazzocomercio-wq/eclick-frontend#13", "human_labels": ["api_or_backend", "deployment_env_gap", "human_feedback_general", "ui_or_frontend"], "issue_number": "13", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-11a2aaa8bc1ee4e2", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#13\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#13\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'ui_or_frontend': 2, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e2b4c089606c3f03\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/13\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/13\\nTitle: feat(f12): Onda E na UI \u2014 embalagens\\nBody:\\nPackagingSheet (tipos + kits). TSC+lint 0.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-53d9e7f5daf319d4\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/13#issuecomment-4530021805\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/13#issuecomment-4530021805\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *eclick-frontend* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | 88cc77d169814f7cdc5786eb7c1fe90fef1ff877 |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/eclick-frontend/deploys/6a136eecdd37fe0008e8f4ae |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-13--eclick-frontend.netlify.app](https://deploy-preview-13--eclick-frontend.netlify.app) |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udcf1</span> Preview on mobile | <details><summary> Toggle QR Code... </summary><br /><br />![QR Code](https://app.netlify.com/qr-code/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RlcGxveS1wcmV2aWV3LTEzLS1lY2xpY2stZnJvbnRlbmQubmV0bGlmeS5hcHAifQ.ITPlnaIRe3gV4kWn3Y1VGvTyYqgKDAeUyty5YIQb57M)<br /><br />_Use your smartphone camera to open QR code link._</deta\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-assumption_checks-1029abe55db1012d", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 313473, "scanner": "foundry_dataset", "fingerprint": "1b93550681de9518aab7afe9c6c35885c1aff5c735309436f6c9427bba678372", "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": "vazzocomercio-wq/eclick-frontend#12", "human_labels": ["api_or_backend", "deployment_env_gap", "human_feedback_general", "ui_or_frontend"], "issue_number": "12", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-3c12006c89dcdd2e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#12\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#12\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'ui_or_frontend': 2, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-f657d85b46780ee1\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/12\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/12\\nTitle: feat(f12): Onda D na UI \u2014 NF-e + valida\u00e7\u00e3o fiscal\\nBody:\\nInvoiceSheet na tela de coleta. TSC+lint 0.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-ef2403ae64a3dab9\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/12#issuecomment-4529991403\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/12#issuecomment-4529991403\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *eclick-frontend* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | 092c0868df66a273408fbe57ac7d0b11e9b376eb |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/eclick-frontend/deploys/6a136b8c8c9b8700087e55f1 |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-12--eclick-frontend.netlify.app](https://deploy-preview-12--eclick-frontend.netlify.app) |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udcf1</span> Preview on mobile | <details><summary> Toggle QR Code... </summary><br /><br />![QR Code](https://app.netlify.com/qr-code/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RlcGxveS1wcmV2aWV3LTEyLS1lY2xpY2stZnJvbnRlbmQubmV0bGlmeS5hcHAifQ.qwXLr9XXpZ9vD58oX-LfmFG57sZqlFP-juu0prpglYo)<br /><br />_Use your smartphone camera to open QR cod\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-assumption_checks-98b2d61d17b89237", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 313472, "scanner": "foundry_dataset", "fingerprint": "2c141ea0e8d99199c42984cdc529597b9bd237c7f5a0189d5a29f8d9df0be909", "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": "vazzocomercio-wq/eclick-frontend#11", "human_labels": ["api_or_backend", "deployment_env_gap", "human_feedback_general", "ui_or_frontend"], "issue_number": "11", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-a4dc89e900ba0946", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#11\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#11\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'api_or_backend': 1, 'ui_or_frontend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d31810437fcbb98b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/11\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/11\\nTitle: feat(f12): Onda C na UI \u2014 aguardando coleta\\nBody:\\n/fulfillment/coleta: \u00e1rvore empresa\u2192conta\u2192pedidos. TSC+lint 0.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-61c3378ee1336e88\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/11#issuecomment-4529950005\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/11#issuecomment-4529950005\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *eclick-frontend* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | 6bd5559c8907bc4faafca010f6131862bec1de9c |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/eclick-frontend/deploys/6a13671828fc970008096163 |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-11--eclick-frontend.netlify.app](https://deploy-preview-11--eclick-frontend.netlify.app) |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udcf1</span> Preview on mobile | <details><summary> Toggle QR Code... </summary><br /><br />![QR Code](https://app.netlify.com/qr-code/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RlcGxveS1wcmV2aWV3LTExLS1lY2xpY2stZnJvbnRlbmQubmV0bGlmeS5hcHAifQ.8hmKu9THYGi7qgQqhoN_VFtiLoYj1E8cZC4KmzB9iwk)<br /><br />_Use your smartphone camera t\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-assumption_checks-1c9b19bca7073179", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 313471, "scanner": "foundry_dataset", "fingerprint": "17d6cd20da304d34841e13c2ddc18ab1f1cda7e75d983ab6bedee1440506faaf", "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": "vazzocomercio-wq/eclick-frontend#10", "human_labels": ["api_or_backend", "deployment_env_gap", "human_feedback_general", "ui_or_frontend"], "issue_number": "10", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-cea0ca0944211eec", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#10\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#10\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'human_feedback_general': 1, 'deployment_env_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {'api_or_backend': 1, 'ui_or_frontend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-096b696e226441a4\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/10\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/10\\nTitle: feat(f12): Onda B na UI \u2014 painel tempo real\\nBody:\\n/fulfillment/painel: board KDS realtime, cards por urg\u00eancia, alertas. TSC+lint 0.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-f1927f15f136f869\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/10#issuecomment-4529918676\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/10#issuecomment-4529918676\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *eclick-frontend* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | b8c715cb2bae11fbf536dcbe77da188df949474b |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/eclick-frontend/deploys/6a1363b4e77af50008d8dd46 |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-10--eclick-frontend.netlify.app](https://deploy-preview-10--eclick-frontend.netlify.app) |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udcf1</span> Preview on mobile | <details><summary> Toggle QR Code... </summary><br /><br />![QR Code](https://app.netlify.com/qr-code/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RlcGxveS1wcmV2aWV3LTEwLS1lY2xpY2stZnJvbnRlbmQubmV0bGlmeS5hcHAifQ.zEdXRPOObiXjhK_uE3ohW9ewcMQfUp_rHYXSzMPdeJM)<br /><br />_Use your\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-assumption_checks-972c92e9306e5ff2", "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": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 331132, "scanner": "foundry_dataset", "fingerprint": "9bc9415fc8bc6718f3e523771d842b29fdc6c15edf98113999e5d936057e9b17", "category": "quality", "severity": "high", "confidence": 0.76, "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": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"api_or_backend": 2, "docs_or_claims": 1, "schema_or_data": 12, "ui_or_frontend": 27, "source_or_other": 7, "deployment_env_gap": 1, "dependency_or_build": 6, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 107, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 55, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 67, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 55, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#20", "issue_number": "20", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-bc93f7b40a490efb", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 10, "docs_or_claims": 5, "schema_or_data": 60, "ui_or_frontend": 135, "source_or_other": 35, "dependency_or_build": 30}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#20\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#20\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#20\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 20\nGraph consistency label: needs_more_evidence\nNodes: 67\nEdges: 107\nNode types: {'pr_file': 55, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 55, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 27, 'schema_or_data': 12, 'source_or_other': 7, 'dependency_or_build': 6, 'not_resolved_or_not_observed': 4, 'api_or_backend': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-8821d30f094d6b32", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/schema_ui_api_mismatch/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 323700, "scanner": "foundry_dataset", "fingerprint": "cc7ffa0e9a182adf626a6388ea44662fc4acb602fe2c79d4720685a6c27de016", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "vazzocomercio-wq/eclick-frontend#7", "human_labels": ["agent_instruction_gap", "source_or_other", "ui_or_frontend"], "issue_number": "7", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.607, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-f6c232cb66f58999", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 6, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 3, "source_or_other": 3}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#7\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#7\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 6\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 3, 'ui_or_frontend': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-af5689ac8d9b0e3b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/7\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/7\\nTitle: feat(f12): sprint 7 \u2014 fulfillment como m\u00f3dulo gate\u00e1vel (frontend)\\nBody:\\n## Summary\\nSprint 7 \u2014 registra o Fulfillment no sistema de m\u00f3dulos do SaaS (liberar/bloquear por cliente).\\n\\n- `lib/modules.ts`: m\u00f3dulo **`fulfillment` (Separa\u00e7\u00e3o / CD)** no `MODULE_CATALOG` \u2192 toggle por org no painel admin. Rota `/fulfillment` no map de gating.\\n- `middleware.ts`: gating estendido pra `/fulfillment` (org sem o m\u00f3dulo \u2192 redirect).\\n- `Sidebar.tsx`: se\u00e7\u00e3o **\\\"SEPARA\u00c7\u00c3O / CD\\\"** com link pro app.\\n- i18n pt/en/zh. Vazzo (null) v\u00ea tudo; clientes s\u00f3 com o m\u00f3dulo liberado.\\n\\n## Test plan\\n- [ ] Admin liga/desliga \\\"Separa\u00e7\u00e3o / CD\\\" por org\\n- [ ] Org sem o m\u00f3dulo bloqueada em /fulfillment\\n- [ ] Sidebar mostra a se\u00e7\u00e3o quando liberado\\n\\n> Base = `feat/f12-fulfillment-sprint5` (frontend sprint6 foi s\u00f3 rebuild de branch, sem mudan\u00e7as de front).\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-a58eba409b8d5b41\",\n    \"filename\": \"messages/en.json\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 2,\n    \"deletions\": 0,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/4554d814e15a573130e6a8264515266b5252cac8/messages%2Fen.json\"\n  },\n  {\n    \"id\": \"github-pr-file-file-bc8df06ea7d9aebc\",\n    \"filename\": \"messages/pt.json\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 2,\n    \"deletions\": 0,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/4554d814e15a573130e6a8264515266b5252cac8/messages%2Fpt.json\"\n  },\n  {\n    \"id\": \"githu\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-bad_chains-1ecf7e7b54f8d47f", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 323699, "scanner": "foundry_dataset", "fingerprint": "2873fe0dd02d83126dfffbbea3de087a2eb94d34ae40d56154228a866771e867", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "vazzocomercio-wq/eclick-frontend#6", "human_labels": ["api_integration_gap", "api_or_backend", "ui_or_frontend"], "issue_number": "6", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-5cd4244b22acdf99", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#6\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#6\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'api_or_backend': 1, 'ui_or_frontend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a9a34df8fcbb12c1\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/6\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/6\\nTitle: feat(f12): sprint 5 \u2014 tela de devolu\u00e7\u00f5es (frontend)\\nBody:\\n## Summary\\nSprint 5 do F12 (frontend) \u2014 empilhado sobre a Sprint 4.\\n\\n- Rota **`/fulfillment/returns`**: lista de devolu\u00e7\u00f5es + **registrar** (refer\u00eancia/motivo/cliente/itens SKU+qtd) + **conferir item a item** (Reestocar / Avariado / Descartar).\\n- Link \\\"Devolu\u00e7\u00f5es\\\" no hub.\\n- API: returns / registerReturn / resolveReturn.\\n\\nDepende do backend (PR feat/f12 sprint 5).\\n\\n## Test plan\\n- [ ] Hub \u2192 Devolu\u00e7\u00f5es \u2192 Registrar (itens) \u2192 aparece na lista\\n- [ ] Abrir devolu\u00e7\u00e3o \u2192 marcar condi\u00e7\u00f5es \u2192 Confirmar \u2192 status resolvido\\n- [ ] Item marcado Reestocar com produto vinculado volta ao estoque\\n\\n> Base = `feat/f12-fulfillment-sprint4` (stacked).\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-fe499cbe4d9c295f\",\n    \"filename\": \"src/app/fulfillment/_lib/api.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 18,\n    \"deletions\": 0,\n    \"changes\": 18,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/e27bb1f4767a38513c2e10566879448a09cf5317/src%2Fapp%2Ffulfillment%2F_lib%2Fapi.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-f11103bb98e729a2\",\n    \"filename\": \"src/app/fulfillment/page.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 11,\n    \"deletions\": 1,\n    \"changes\": 12,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/e27bb1f4767a38513c2e10566879448a09cf5317/src%2Fapp%2Ffulfillment%2Fpage.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-672693545c947582\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-bad_chains-6e7feaa31557a64e", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 323698, "scanner": "foundry_dataset", "fingerprint": "afcfd852d6907a530d30d082e78b42204666acb021fba49816b89a1e1e2bbc83", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "vazzocomercio-wq/eclick-frontend#5", "human_labels": ["agent_instruction_gap", "api_or_backend", "ui_or_frontend"], "issue_number": "5", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "self_attested_unverified", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-5bb5d99335e13647", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 4, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 3}, "linked_commit_count": 3, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#5\nOutcome: self_attested_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#5\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_and_fix_context\nOutcome: self_attested_unverified\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 4\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 3, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-cf9466b92af7980a\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/5\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/5\\nTitle: feat(f12): sprint 4 \u2014 SLA & atrasados na UI (frontend)\\nBody:\\n## Summary\\nSprint 4 do F12 (frontend) \u2014 empilhado sobre a Sprint 3.\\n\\n- **Hub**: banner + KPI de pedidos **ATRASADOS** (SLA vencido) + \\\"vencendo (2h)\\\".\\n- **Separa\u00e7\u00e3o**: selo ATRASADO + borda vermelha no pedido com prazo vencido.\\n- **Configura\u00e7\u00f5es**: campo \\\"Prazo de despacho (SLA)\\\" em horas.\\n\\nDepende do backend (PR feat/f12 sprint 4).\\n\\n## Test plan\\n- [ ] Hub mostra atrasados quando h\u00e1 SLA vencido\\n- [ ] Configura\u00e7\u00f5es \u2192 ajustar prazo salva\\n- [ ] Fila de separa\u00e7\u00e3o destaca pedido atrasado\\n\\n> Base = `feat/f12-fulfillment-sprint3` (stacked).\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-fad425e813dce376\",\n    \"filename\": \"src/app/fulfillment/_components/SettingsSheet.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 11,\n    \"deletions\": 0,\n    \"changes\": 11,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/473aed8404c81209913e1af900d40d2dbac32ce6/src%2Fapp%2Ffulfillment%2F_components%2FSettingsSheet.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-cbff9e32c0c2d65f\",\n    \"filename\": \"src/app/fulfillment/_lib/api.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 3,\n    \"deletions\": 0,\n    \"changes\": 3,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/473aed8404c81209913e1af900d40d2dbac32ce6/src%2Fapp%2Ffulfillment%2F_lib%2Fapi.ts\"\n  },\n  {\n    \"id\": \"github-pr-file-file-a116017bbf16794f\",\n    \"filename\": \"src/app/fulfillment/page.tsx\",\n    \"label\": \"ui_or_frontend\",\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-bad_chains-06ef9ac6631c8caa", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 323697, "scanner": "foundry_dataset", "fingerprint": "99ef8bf503e9989521748050e806fbeb351f982b763b120798c5dc6626b61218", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "vazzocomercio-wq/eclick-frontend#4", "human_labels": ["api_integration_gap", "api_or_backend", "ui_or_frontend"], "issue_number": "4", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-8493a1a357025835", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 1}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#4\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#4\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 1, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-60a0a0d44a8a84ca\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/4\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/4\\nTitle: feat(f12): sprint 3 \u2014 bot\u00e3o reconciliar (frontend)\\nBody:\\n## Summary\\nSprint 3 do F12 (frontend) \u2014 empilhado sobre a Sprint 2.\\n\\n- No `SettingsSheet` (se\u00e7\u00e3o auto-ingest\u00e3o): bot\u00e3o **\\\"Reconciliar pedidos pagos agora\\\"** \u2192 `POST /fulfillment/reconcile`, mostra quantos foram reconciliados (loja/ML).\\n- API: `reconcile()`.\\n\\nDepende do backend (PR feat/f12 sprint 3).\\n\\n## Test plan\\n- [ ] Hub \u2192 Configura\u00e7\u00f5es \u2192 (auto-ingest\u00e3o ON) \u2192 \\\"Reconciliar agora\\\" \u2192 mostra contagem\\n\\n> Base = `feat/f12-fulfillment-sprint2` (stacked).\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-c1694b7931be9688\",\n    \"filename\": \"src/app/fulfillment/_components/SettingsSheet.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 16,\n    \"deletions\": 1,\n    \"changes\": 17,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/178243a9ef6378e18d03eb879c4f6c938051500e/src%2Fapp%2Ffulfillment%2F_components%2FSettingsSheet.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-e6997026daf6ae4c\",\n    \"filename\": \"src/app/fulfillment/_lib/api.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 0,\n    \"changes\": 1,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/178243a9ef6378e18d03eb879c4f6c938051500e/src%2Fapp%2Ffulfillment%2F_lib%2Fapi.ts\"\n  }\n]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-164a3af7bec309db\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: vazzocomercio-wq/eclick-frontend\nGraph label: source_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-bad_chains-a03f5a4dee867668", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 323696, "scanner": "foundry_dataset", "fingerprint": "d3d630dc26f177923e07c1d1f6554674ba467c638f3eb13b2938ad808af66653", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "vazzocomercio-wq/eclick-frontend#3", "human_labels": ["api_integration_gap", "api_or_backend", "ui_or_frontend"], "issue_number": "3", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-ca459e48e002cbf8", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 2}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#3\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#3\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 2, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-29838b6e241ae04e\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/3\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/3\\nTitle: feat(f12): sprint 2 \u2014 equipe + produtividade (frontend)\\nBody:\\n## Summary\\nSprint 2 do F12 (frontend) \u2014 empilhado sobre a Sprint 1.\\n\\n- Bot\u00e3o **\\\"Equipe\\\"** no hub `/fulfillment` abre o `TeamSheet` (supervisor):\\n  - **Operadores**: adicionar membro da org + papel (separador/conferente/supervisor/admin), trocar papel, remover; toggle \\\"exigir papel pra operar\\\".\\n  - **Produtividade**: itens, itens/h, pedidos, erros por operador (7 dias).\\n- API: `org-members`, operators CRUD, `productivity`, `enforce_roles`.\\n\\nDepende do backend (PR feat/f12 sprint 2).\\n\\n## Test plan\\n- [ ] Hub \u2192 Equipe \u2192 adicionar operador + trocar papel + remover\\n- [ ] Ligar \\\"exigir papel\\\" e validar bloqueio na pr\u00e1tica\\n- [ ] Aba Produtividade mostra os n\u00fameros\\n\\n> Base = `feat/f12-fulfillment-sprint1` (stacked).\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-878d9f7ae4123919\",\n    \"filename\": \"src/app/fulfillment/_components/TeamSheet.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"added\",\n    \"additions\": 171,\n    \"deletions\": 0,\n    \"changes\": 171,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/b49408243a45cdc83ceaea779a7ad89a089fb5ca/src%2Fapp%2Ffulfillment%2F_components%2FTeamSheet.tsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-2791d204469ba169\",\n    \"filename\": \"src/app/fulfillment/_lib/api.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 17,\n    \"deletions\": 0,\n    \"changes\": 17,\n    \"blob_url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/blob/b49408243a4\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-bad_chains-c589a06e25c2bd4f", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 323695, "scanner": "foundry_dataset", "fingerprint": "9002cbb567ec329d2d548235f706971f12b178cdb02882b79d4114e3c9c1d35b", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "vazzocomercio-wq/eclick-frontend#20", "human_labels": ["api_or_backend", "dependency_or_build", "deployment_env_gap", "docs_or_claims", "schema_or_data", "security_auth_secret", "source_or_other", "ui_or_frontend"], "issue_number": "20", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-5dd8b24b6721d00f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 55, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 2, "docs_or_claims": 1, "schema_or_data": 12, "ui_or_frontend": 27, "source_or_other": 7, "dependency_or_build": 6}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#20\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#20\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 55\nLabels: {'security_auth_secret': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'source_or_other': 7, 'dependency_or_build': 6, 'ui_or_frontend': 27, 'schema_or_data': 12, 'api_or_backend': 2, 'docs_or_claims': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d2dac27cd5a8e799\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/20\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/20\\nTitle: Blog GEO (Sprint 1): Sanity Studio + blog p\u00fablico em /blog\\nBody:\\n## Sprint 1 \u2014 Funda\u00e7\u00e3o do Blog GEO\\n\\nBlog p\u00fablico em **eclick.app.br/blog** (est\u00e9tica dark Profound + marca e-Click), ao lado da landing `/auditoria-gratis`. Conte\u00fado vive no **Sanity** (`studio/`), single source of truth.\\n\\n### O que entra\\n- **Sanity Studio** (`studio/`): schemas `post`/`author`/`category`/`tag`/`series` + blocks (`callout`, `paperQuote`, `stat`, `comparison`, `ctaInline`) + seed (7 categorias, autor Silvio, 5 tags, 3 posts iniciais com conte\u00fado real e fontes citadas).\\n- **Blog Next.js** (`src/app/blog`): home, `[slug]`, `categoria/[slug]`, `autor/[slug]`, `tag/[slug]` + layout/loading + 15 componentes (PortableText com todos os blocks, TOC, FAQ, TL;DR, AuthorBio E-E-A-T, etc.).\\n- **GEO/SEO**: JSON-LD por post (BlogPosting + FAQPage + BreadcrumbList), `sitemap.ts` (inclui posts/categorias/autores), `rss.xml`, `robots.ts`, se\u00e7\u00e3o de blog no `llms.txt`.\\n- **Fix middleware**: libera `/blog`,\"\n  },\n  {\n    \"id\": \"github-feedback-comment-93e324405ab96af2\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/20#issuecomment-4545673929\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/20#issuecomment-4545673929\\\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-bad_chains-853e841d19cca8ab", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 323694, "scanner": "foundry_dataset", "fingerprint": "07f8ad22c24bbf8f23917bfa2b6c3795f1daa4458e93daa1e80b1f88a46cf66e", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "vazzocomercio-wq/eclick-frontend#18", "human_labels": ["api_integration_gap", "api_or_backend", "deployment_env_gap"], "issue_number": "18", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-2548f63fea312921", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#18\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#18\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'api_integration_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2ab5c5c04ba954b5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/18\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/18\\nTitle: fix(f12): trata resposta vazia no helper de API\\nBody:\\nGET config fiscal sem config retorna null/vazio \u2192 res.json() quebrava. TSC+lint 0.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-478ddbda7da39ffb\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/18#issuecomment-4533112981\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/18#issuecomment-4533112981\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Preview for *eclick-frontend* ready!\\n\\n\\n|  Name | Link |\\n|:-:|------------------------|\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd28</span> Latest commit | f18a3071b6c06e2a4c92ef5f9c6f48b35098114c |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udd0d</span> Latest deploy log | https://app.netlify.com/projects/eclick-frontend/deploys/6a14145a6b16fa0008608395 |\\n|<span aria-hidden=\\\"true\\\">\ud83d\ude0e</span> Deploy Preview | [https://deploy-preview-18--eclick-frontend.netlify.app](https://deploy-preview-18--eclick-frontend.netlify.app) |\\n|<span aria-hidden=\\\"true\\\">\ud83d\udcf1</span> Preview on mobile | <details><summary> Toggle QR Code... </summary><br /><br />![QR Code](https://app.netlify.com/qr-code/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RlcGxveS1wcmV2aWV3LTE4LS1lY2xpY2stZnJvbnRlbmQubmV0bGlmeS5hcHAifQ.ygjoRTtuiJHNhX_xtPeNbXsKZ392nK_L65yIhUQrPr8)<br /><br />_Use your smartphone camera to open QR code link._</details> |\\n|<\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-bad_chains-c278995dbb70d826", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 323693, "scanner": "foundry_dataset", "fingerprint": "93a58ae88de8aa4be2898874f82962d725d69dcbca16404584c9fa1f1144a590", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "vazzocomercio-wq/eclick-frontend#1", "human_labels": ["api_integration_gap", "api_or_backend", "deployment_env_gap", "source_or_other", "ui_or_frontend"], "issue_number": "1", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-9424da13d185110f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 15, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 11, "source_or_other": 3}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 2, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#1\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: vazzocomercio-wq/eclick-frontend#1\nRepo: vazzocomercio-wq/eclick-frontend\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 2\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 15\nLabels: {'api_integration_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'source_or_other': 3, 'ui_or_frontend': 11, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8c1e7efdc2152f50\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/1\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: vazzocomercio-wq (User)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/1\\nTitle: feat(f12): sprint 0 fulfillment foundation (frontend)\\nBody:\\n## Summary\\nF12 Fulfillment \u2014 Sprint 0: PWA do operador do centro de distribui\u00e7\u00e3o.\\n\\n- App mobile-first em **`/fulfillment`** (rota standalone, full-screen, instal\u00e1vel):\\n  - **hub** com dashboard simples (filas pick/pack, erros 24h, avarias do dia)\\n  - **/picking**: item em foco + scanner (SKU/EAN/QR) com bip+vibra\u00e7\u00e3o, mismatch bloqueado, avan\u00e7ar autom\u00e1tico, avaria por foto, bloqueio\\n  - **/packing**: bipa o pedido \u2192 confere itens \u2192 foto (gate quando exigida, com confer\u00eancia por IA opcional) \u2192 fecha \u2192 imprime etiqueta\\n- Scanner BT (autofocus+refocus), c\u00e2mera `getUserMedia`, camada de API tipada\\n- **PWA offline-first**: manifest + service worker (app-shell) + fila offline (outbox) que sincroniza ao reconectar\\n- README de opera\u00e7\u00e3o (PT-BR) em `src/app/fulfillment/README-OPERACAO.md`\\n- Design system e-Click (dark #09090b, cyan #00E5FF, green #4ADE50)\\n\\nDepende do backend (PR feat/f12 em eclick-backend) deployado.\\n\\n##\"\n  },\n  {\n    \"id\": \"github-feedback-comment-d6db19651ef23c9a\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/vazzocomercio-wq/eclick-frontend/pull/1#issuecomment-4525420684\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: vazzocomercio-wq/eclick-frontend\\nAuthor: netlify[bot] (Bot)\\nURL: https://github.com/vazzocomercio-wq/eclick-frontend/pull/1#issuecomment-4525420684\\nTitle: \\nBody:\\n### <span aria-hidden=\\\"true\\\">\u2705</span> Deploy Previe\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "comment-chain-pattern-bad_chains-66ec05d6807c15dc", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 335222, "scanner": "foundry_dataset", "fingerprint": "6fa2cb46f41e2f1a618e1abf06e798ad3a5a30f952a4fbc039794435e95d2983", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"api_or_backend": 2, "docs_or_claims": 1, "schema_or_data": 12, "ui_or_frontend": 27, "source_or_other": 7, "deployment_env_gap": 1, "dependency_or_build": 6, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 4, "human_reported_issue_no_linked_fix": 2, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"not_resolved_or_not_observed": 8}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 107, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 55, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 67, "node_types": {"repo": 1, "thread": 1, "comment": 2, "pr_file": 55, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#20", "issue_number": "20", "quality_tiers": {"unresolved": 4}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-41ddee3e59338181", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"api_or_backend": 10, "docs_or_claims": 5, "schema_or_data": 60, "ui_or_frontend": 135, "source_or_other": 35, "dependency_or_build": 30}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: needs_more_evidence\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#20\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#20\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#20\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 20\nGraph consistency label: needs_more_evidence\nNodes: 67\nEdges: 107\nNode types: {'pr_file': 55, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 55, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 27, 'schema_or_data': 12, 'source_or_other': 7, 'dependency_or_build': 6, 'not_resolved_or_not_observed': 4, 'api_or_backend': 2, 'human_reported_issue_no_linked_fix': 2, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'deployment_env_gap': 1, 'docs_or_claims': 1}\nOutcomes: {'not_resolved_or_not_observed': 8}\nQuality tiers: {'unresolved': 4}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-2a24b63b1604d0d2", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 327375, "scanner": "foundry_dataset", "fingerprint": "f715ea36d7124e891202f15af2ae75989af26e3c9ee8f1be2e4c78f34c5691ec", "category": "practices", "severity": "critical", "confidence": 0.82, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Mock, sample, placeholder, or self-attested behavior treated as real", "intent": "Hard negatives for fake completeness and missing real data paths.", "labels": {"ui_or_frontend": 3, "source_or_other": 3, "generated_provenance": 5, "agent_instruction_gap": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 34, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 6, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 20, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#7", "issue_number": "7", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-3c1cc537f5843170", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"ui_or_frontend": 12, "source_or_other": 12}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#7\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#7\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 20\nEdges: 34\nNode types: {'pr_file': 6, 'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 6, 'comment_chain_touches_file': 6, 'issue_chain_touches_file': 6, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'generated_provenance': 5, 'source_or_other': 3, 'ui_or_frontend': 3, 'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'self_attested_or_generated_fix_unverified': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-02d2b0a6327e32dd", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/mock_as_real_or_placeholder/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: vazzocomercio-wq/eclick-frontend"}, "properties": {"repobilityId": 327374, "scanner": "foundry_dataset", "fingerprint": "4f27d24e603ae6da200c001a735d94f7e78313546fc9c9046372f1891a4e06c4", "category": "practices", "severity": "critical", "confidence": 0.82, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Mock, sample, placeholder, or self-attested behavior treated as real", "intent": "Hard negatives for fake completeness and missing real data paths.", "labels": {"api_or_backend": 1, "ui_or_frontend": 3, "generated_provenance": 3, "agent_instruction_gap": 1, "self_attested_unverified": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "self_attested_or_generated_fix_unverified": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"self_attested_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 4, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 16, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "pr_file": 4, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "vazzocomercio-wq/eclick-frontend#5", "issue_number": "5", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-3e37e3c685bab165", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"api_or_backend": 4, "ui_or_frontend": 12}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#5\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: vazzocomercio-wq/eclick-frontend\nThread: vazzocomercio-wq/eclick-frontend#5\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: vazzocomercio-wq/eclick-frontend#5\nRepo: vazzocomercio-wq/eclick-frontend\nIssue/PR number: 5\nGraph consistency label: weak_supervision_needs_review\nNodes: 16\nEdges: 26\nNode types: {'pr_file': 4, 'commit': 3, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 4, 'comment_chain_touches_file': 4, 'issue_chain_touches_file': 4, 'comment_chain_links_commit': 3, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 3, 'generated_provenance': 3, 'self_attested_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_or_backend': 1, 'self_attested_or_generated_fix_unverified': 1}\nOutcomes: {'self_attested_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/vazzocomercio-wq/eclick-frontend", "source_id": "graph-query-motif_query-5a931b5380a19b14", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/mock_as_real_or_placeholder/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "vazzocomercio-wq/eclick-frontend", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-72b60caace0754d2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/Header.tsx:108"}, "properties": {"repobilityId": "c848c722ce61f0cc", "scanner": "scanner-primary", "fingerprint": "72b60caace0754d2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-51f3f837154b5313", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CatalogLinkBanner.tsx:75"}, "properties": {"repobilityId": "0395c20d5f78a601", "scanner": "scanner-primary", "fingerprint": "51f3f837154b5313", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-da140082df14fcaa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CanvaButton.tsx:246"}, "properties": {"repobilityId": "86ebd2e1aa8cc368", "scanner": "scanner-primary", "fingerprint": "da140082df14fcaa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8fcd3f5fb4aa4842", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeVideoCard.tsx:137"}, "properties": {"repobilityId": "12733a7721bb115b", "scanner": "scanner-primary", "fingerprint": "8fcd3f5fb4aa4842", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5c97fdcbf7e3a997", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/ListingSeoPanel.tsx:100"}, "properties": {"repobilityId": "d262ce8376890159", "scanner": "scanner-primary", "fingerprint": "5c97fdcbf7e3a997", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-160260ed14175487", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/MLAttributesForm.tsx:61"}, "properties": {"repobilityId": "84d1ecef704e2251", "scanner": "scanner-primary", "fingerprint": "160260ed14175487", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3bb06259a615f2f2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/BriefingConfigurator.tsx:535"}, "properties": {"repobilityId": "864371e3f83bf59c", "scanner": "scanner-primary", "fingerprint": "3bb06259a615f2f2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-30092f109c6ea234", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeImageCard.tsx:135"}, "properties": {"repobilityId": "28e5a27ffc8d474f", "scanner": "scanner-primary", "fingerprint": "30092f109c6ea234", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ea47c66d0fc4533d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/campanhas/SmartProductInput.tsx:310"}, "properties": {"repobilityId": "ad238a2510022857", "scanner": "scanner-primary", "fingerprint": "ea47c66d0fc4533d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-078a74e7ae7e7f1f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/storefront-v3/StorefrontPixels.tsx:20"}, "properties": {"repobilityId": "fa561d4312281e80", "scanner": "scanner-primary", "fingerprint": "078a74e7ae7e7f1f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-59f9ad7e12b221ae", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/storefront-v3/StoreShell.tsx:51"}, "properties": {"repobilityId": "22755100e8355823", "scanner": "scanner-primary", "fingerprint": "59f9ad7e12b221ae", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f1e136ef0cc20558", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/storefront-v3/SectionRenderer.tsx:79"}, "properties": {"repobilityId": "519d768398be3048", "scanner": "scanner-primary", "fingerprint": "f1e136ef0cc20558", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7e663665ea6f79b7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/intelligence/AlertToastListener.tsx:301"}, "properties": {"repobilityId": "3885ab2bf41dedad", "scanner": "scanner-primary", "fingerprint": "7e663665ea6f79b7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bb6f824eaaa20f03", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/animated-prompt-suggestions.tsx:167"}, "properties": {"repobilityId": "c10ff6be8538e817", "scanner": "scanner-primary", "fingerprint": "bb6f824eaaa20f03", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4bb1b49ff5f31d80", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/social/SocialChannelSelector.tsx:51"}, "properties": {"repobilityId": "61902f70d1b4785a", "scanner": "scanner-primary", "fingerprint": "4bb1b49ff5f31d80", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-521ce4cff9d1d59e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/social/SocialContentPreview.tsx:166"}, "properties": {"repobilityId": "4bee7322bba8c19b", "scanner": "scanner-primary", "fingerprint": "521ce4cff9d1d59e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3dfe047563d08929", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/social/SocialContentPreview.tsx:369"}, "properties": {"repobilityId": "f4e9e0ea6633ed94", "scanner": "scanner-primary", "fingerprint": "3dfe047563d08929", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4e051a7d49fc449a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ai-visibility/GeoImpactPanel.tsx:42"}, "properties": {"repobilityId": "7540465501845e06", "scanner": "scanner-primary", "fingerprint": "4e051a7d49fc449a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-69681b83ae96c5cf", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/copilot/FloatingCopilot.tsx:514"}, "properties": {"repobilityId": "48178abce57d82b1", "scanner": "scanner-primary", "fingerprint": "69681b83ae96c5cf", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8003097acc61b6e4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/premium/OrderResult.tsx:111"}, "properties": {"repobilityId": "462928a41036f95c", "scanner": "scanner-primary", "fingerprint": "8003097acc61b6e4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3978414f9acb1907", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/premium/SiteHeader.tsx:48"}, "properties": {"repobilityId": "aa219dc030bed9fd", "scanner": "scanner-primary", "fingerprint": "3978414f9acb1907", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f70fdbf927b2037d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/premium/CheckoutForm.tsx:360"}, "properties": {"repobilityId": "30a9343f2be69c4a", "scanner": "scanner-primary", "fingerprint": "f70fdbf927b2037d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-07cd4c43054af8b0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer-hub/CustomerDetailDrawer.tsx:223"}, "properties": {"repobilityId": "f8e8be88ce66596a", "scanner": "scanner-primary", "fingerprint": "07cd4c43054af8b0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0a70a64cdd0010d3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:26"}, "properties": {"repobilityId": "0d72350965068f5b", "scanner": "scanner-primary", "fingerprint": "0a70a64cdd0010d3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-26c102db97aea806", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/layout.tsx:48"}, "properties": {"repobilityId": "9e54c4e9e2fe1452", "scanner": "scanner-primary", "fingerprint": "26c102db97aea806", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-38ae5969e24d51a5", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/lib/schema-org.ts:123"}, "properties": {"repobilityId": "9227396950c0b8e6", "scanner": "scanner-primary", "fingerprint": "38ae5969e24d51a5", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c67701693850f572", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:107"}, "properties": {"repobilityId": "edc166468e8868e7", "scanner": "scanner-primary", "fingerprint": "c67701693850f572", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-794a9ed7a76437b8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/coleta/page.tsx:88"}, "properties": {"repobilityId": "f4738a1f64550bd3", "scanner": "scanner-primary", "fingerprint": "794a9ed7a76437b8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-36cc839c73f9f52a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/picking/page.tsx:105"}, "properties": {"repobilityId": "d4a8a6e6d07e07fb", "scanner": "scanner-primary", "fingerprint": "36cc839c73f9f52a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2785d04769e29144", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/painel/page.tsx:178"}, "properties": {"repobilityId": "911c55c8a1242715", "scanner": "scanner-primary", "fingerprint": "2785d04769e29144", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2768a31c11ff0001", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/packing/page.tsx:171"}, "properties": {"repobilityId": "1239b2cf0b17bb1a", "scanner": "scanner-primary", "fingerprint": "2768a31c11ff0001", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bd3085c7b6d3ff99", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/_components/CompaniesSheet.tsx:144"}, "properties": {"repobilityId": "d6dde36467cea1f4", "scanner": "scanner-primary", "fingerprint": "bd3085c7b6d3ff99", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dc286af0ba480596", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fulfillment/_components/TeamSheet.tsx:123"}, "properties": {"repobilityId": "4c1f5378a27a65da", "scanner": "scanner-primary", "fingerprint": "dc286af0ba480596", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6cda9e7e45201bb3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/ia/completar/route.ts:73"}, "properties": {"repobilityId": "8e9b00603665cad3", "scanner": "scanner-primary", "fingerprint": "6cda9e7e45201bb3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71ae25167792cad2", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/page.tsx:99"}, "properties": {"repobilityId": "2c3e114198aaf1f0", "scanner": "scanner-primary", "fingerprint": "71ae25167792cad2", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-3552517626d771e6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/_components/LoadingClient.tsx:86"}, "properties": {"repobilityId": "bc8ae0202cb5ac51", "scanner": "scanner-primary", "fingerprint": "3552517626d771e6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d3eb28d1181cc9af", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/_components/UnsubClient.tsx:33"}, "properties": {"repobilityId": "f77efba2abc36de4", "scanner": "scanner-primary", "fingerprint": "d3eb28d1181cc9af", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4bc944beb1ea518f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/auditoria-gratis/_components/ResultClient.tsx:19"}, "properties": {"repobilityId": "c010c8d571053d25", "scanner": "scanner-primary", "fingerprint": "4bc944beb1ea518f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e09837d0dd62d31d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/auditoria-gratis/_components/ResultClient.tsx:300"}, "properties": {"repobilityId": "2e04770a203af93c", "scanner": "scanner-primary", "fingerprint": "e09837d0dd62d31d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6c3631832b439afd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/page.tsx:587"}, "properties": {"repobilityId": "4ba209c1bd3eacfd", "scanner": "scanner-primary", "fingerprint": "6c3631832b439afd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-def933d79010bdd9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/page.tsx:794"}, "properties": {"repobilityId": "1db33a7f545992e9", "scanner": "scanner-primary", "fingerprint": "def933d79010bdd9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dcfbd871a5b410ec", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/page.tsx:222"}, "properties": {"repobilityId": "55fe72f95474ed63", "scanner": "scanner-primary", "fingerprint": "dcfbd871a5b410ec", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7dfdd24bf585334e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/concorrentes/page.tsx:109"}, "properties": {"repobilityId": "a761fb4ffa446c94", "scanner": "scanner-primary", "fingerprint": "7dfdd24bf585334e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f06d6773cd6f3aba", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/concorrentes/[productId]/page.tsx:122"}, "properties": {"repobilityId": "b8d0339166f0ff0d", "scanner": "scanner-primary", "fingerprint": "f06d6773cd6f3aba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8d61bafdde81c8bb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/radar/[id]/page.tsx:214"}, "properties": {"repobilityId": "2be47b6a98480631", "scanner": "scanner-primary", "fingerprint": "8d61bafdde81c8bb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-497486cc11be6d30", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/inteligencia/gestores/page.tsx:459"}, "properties": {"repobilityId": "f04d3208d0b0e92c", "scanner": "scanner-primary", "fingerprint": "497486cc11be6d30", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-961fb3636e5d32ed", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/inteligencia/relatorios/page.tsx:120"}, "properties": {"repobilityId": "f5fda8dd01b6435f", "scanner": "scanner-primary", "fingerprint": "961fb3636e5d32ed", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bed0df46dd7d8b77", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/inteligencia/alertas/page.tsx:234"}, "properties": {"repobilityId": "425a76aca213ad06", "scanner": "scanner-primary", "fingerprint": "bed0df46dd7d8b77", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-24df6f432e37be35", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-quality/page.tsx:216"}, "properties": {"repobilityId": "6354de66996e7552", "scanner": "scanner-primary", "fingerprint": "24df6f432e37be35", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2575ce09048203df", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-quality/penalties/page.tsx:133"}, "properties": {"repobilityId": "869a07f1c198f920", "scanner": "scanner-primary", "fingerprint": "2575ce09048203df", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dc1103646cb1bcd5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/inteligencia/page.tsx:702"}, "properties": {"repobilityId": "d28f8f943246364b", "scanner": "scanner-primary", "fingerprint": "dc1103646cb1bcd5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2034f77e6d7012d1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/fornecedores/[id]/IcarusIntegrationTab.tsx:714"}, "properties": {"repobilityId": "ce4692de66735a15", "scanner": "scanner-primary", "fingerprint": "2034f77e6d7012d1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-891570f546752afb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/fornecedores/[id]/page.tsx:452"}, "properties": {"repobilityId": "3406e85ce45e078f", "scanner": "scanner-primary", "fingerprint": "891570f546752afb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b531cda2f302998d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/compras/importacoes/page.tsx:140"}, "properties": {"repobilityId": "8e99a583d664c71f", "scanner": "scanner-primary", "fingerprint": "b531cda2f302998d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-174b78aa2500762a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/page.tsx:362"}, "properties": {"repobilityId": "c16bea1923704ec0", "scanner": "scanner-primary", "fingerprint": "174b78aa2500762a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5c6599d808342720", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/page.tsx:281"}, "properties": {"repobilityId": "06fc10b7562fd66b", "scanner": "scanner-primary", "fingerprint": "5c6599d808342720", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f6b6f1060c8d8059", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/page.tsx:235"}, "properties": {"repobilityId": "26301148d714217c", "scanner": "scanner-primary", "fingerprint": "f6b6f1060c8d8059", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-25af832b99347eb9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/publish/shopee/page.tsx:197"}, "properties": {"repobilityId": "b7f9c939fda218b9", "scanner": "scanner-primary", "fingerprint": "25af832b99347eb9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-93907ca6e13dcd43", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/publish/ml/page.tsx:322"}, "properties": {"repobilityId": "fbea079594e6ffb9", "scanner": "scanner-primary", "fingerprint": "93907ca6e13dcd43", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ab0ec8eaf2ffbe18", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/[productId]/listing/[listingId]/publish/tiktok/page.tsx:177"}, "properties": {"repobilityId": "7ec640dd34325369", "scanner": "scanner-primary", "fingerprint": "ab0ec8eaf2ffbe18", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7ad237fdadd77ca2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/new/page.tsx:416"}, "properties": {"repobilityId": "a0bf9be27ad7964e", "scanner": "scanner-primary", "fingerprint": "7ad237fdadd77ca2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1a02260fa434305b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/references/_components/UploadProgressList.tsx:41"}, "properties": {"repobilityId": "940b2f839e291c0a", "scanner": "scanner-primary", "fingerprint": "1a02260fa434305b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dc05d1019eaa7d85", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/references/_components/TaxonomySelect.tsx:314"}, "properties": {"repobilityId": "27b33486263c2a30", "scanner": "scanner-primary", "fingerprint": "dc05d1019eaa7d85", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bceb3f5bae8e7e96", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/TemplatesList.tsx:192"}, "properties": {"repobilityId": "5e98036a5283486a", "scanner": "scanner-primary", "fingerprint": "bceb3f5bae8e7e96", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-97d73c566eaf2f72", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/ReferenceSelector.tsx:88"}, "properties": {"repobilityId": "5d70a09258c39d97", "scanner": "scanner-primary", "fingerprint": "97d73c566eaf2f72", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b3ae9d3b66dfa5ef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/PositionCard.tsx:115"}, "properties": {"repobilityId": "6ce9f3e74cfd016c", "scanner": "scanner-primary", "fingerprint": "b3ae9d3b66dfa5ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-63cee1e66b309fa2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/TemplatePreviewDrawer.tsx:72"}, "properties": {"repobilityId": "1b8397c90ff28114", "scanner": "scanner-primary", "fingerprint": "63cee1e66b309fa2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5b59909de1c150be", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/SlotTestModal.tsx:83"}, "properties": {"repobilityId": "f755ff04b9082675", "scanner": "scanner-primary", "fingerprint": "5b59909de1c150be", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f3e80c478e61fd70", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/creative/templates/_components/SlotReferencesPanel.tsx:171"}, "properties": {"repobilityId": "70c8540db1c5cf61", "scanner": "scanner-primary", "fingerprint": "f3e80c478e61fd70", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2283fcb3d7110d9a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/composicao/page.tsx:131"}, "properties": {"repobilityId": "e4eacd33fe2a90bb", "scanner": "scanner-primary", "fingerprint": "2283fcb3d7110d9a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b98827a4c94f3eb2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx:555"}, "properties": {"repobilityId": "dcb7b60f7c68bd95", "scanner": "scanner-primary", "fingerprint": "b98827a4c94f3eb2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d291a72759d3da1e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx:596"}, "properties": {"repobilityId": "28ada6757b7b45dc", "scanner": "scanner-primary", "fingerprint": "d291a72759d3da1e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-daa85ee2481ea391", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx:1926"}, "properties": {"repobilityId": "ce1533c312e08f3b", "scanner": "scanner-primary", "fingerprint": "daa85ee2481ea391", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99a54e4160c3b341", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/anuncios/tiktok/page.tsx:450"}, "properties": {"repobilityId": "69396fb87c9077db", "scanner": "scanner-primary", "fingerprint": "99a54e4160c3b341", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7a54d23b762a458d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/vinculos/page.tsx:291"}, "properties": {"repobilityId": "909b934d4e6046e1", "scanner": "scanner-primary", "fingerprint": "7a54d23b762a458d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d74d35fc22eb76b3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/multiplicador/page.tsx:326"}, "properties": {"repobilityId": "e5e0392771a6b9e2", "scanner": "scanner-primary", "fingerprint": "d74d35fc22eb76b3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f85df28e6c486557", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/estoque/page.tsx:398"}, "properties": {"repobilityId": "5f7f46726c0b6654", "scanner": "scanner-primary", "fingerprint": "f85df28e6c486557", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-247b53946b63fd57", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/catalogo/estoque/sincronizacoes/page.tsx:294"}, "properties": {"repobilityId": "7cbf439ec712aad5", "scanner": "scanner-primary", "fingerprint": "247b53946b63fd57", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-88cd9024ec1419cc", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/produtos/page.tsx:447"}, "properties": {"repobilityId": "a4a5e871f65af10e", "scanner": "scanner-primary", "fingerprint": "88cd9024ec1419cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-1169548e70e7e5b9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/page.tsx:833"}, "properties": {"repobilityId": "98afc067607d6ba7", "scanner": "scanner-primary", "fingerprint": "1169548e70e7e5b9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ae1011c9dcbde9f1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/operacao-cadastro/page.tsx:514"}, "properties": {"repobilityId": "d0da6081c5311873", "scanner": "scanner-primary", "fingerprint": "ae1011c9dcbde9f1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-66a8b3e36c8b1bc3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/[id]/editar/page.tsx:430"}, "properties": {"repobilityId": "25c665f6ba801858", "scanner": "scanner-primary", "fingerprint": "66a8b3e36c8b1bc3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b01f2d759e6d7570", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/importar/page.tsx:355"}, "properties": {"repobilityId": "b9499a57b0fbdc5a", "scanner": "scanner-primary", "fingerprint": "b01f2d759e6d7570", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cc70e1597434aea7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/recomendacoes-ia/page.tsx:182"}, "properties": {"repobilityId": "bf6953dce6445c1a", "scanner": "scanner-primary", "fingerprint": "cc70e1597434aea7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a92882f10ed6fca1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/_components/ProdutosTable.tsx:266"}, "properties": {"repobilityId": "38a4aeb360f5e226", "scanner": "scanner-primary", "fingerprint": "a92882f10ed6fca1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6f9ece3c0122f85b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/produtos/_components/VariantLinkerPanel.tsx:123"}, "properties": {"repobilityId": "1d49554affa02aa2", "scanner": "scanner-primary", "fingerprint": "6f9ece3c0122f85b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-22d970c26119e5d3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-afiliado/_components/LinkStudioModal.tsx:159"}, "properties": {"repobilityId": "99863f080511c69e", "scanner": "scanner-primary", "fingerprint": "22d970c26119e5d3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c42c44aa709c4a5a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-afiliado/_components/ShopeeAffiliateDiscovery.tsx:238"}, "properties": {"repobilityId": "770f85aaf3b0cd5c", "scanner": "scanner-primary", "fingerprint": "c42c44aa709c4a5a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-933e3df58afa5748", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-afiliado/_components/ContentStudioModal.tsx:155"}, "properties": {"repobilityId": "de91730957d102dc", "scanner": "scanner-primary", "fingerprint": "933e3df58afa5748", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-185ab6734857f5e3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-campaigns/_components/ShopeeCampaignCenter.tsx:263"}, "properties": {"repobilityId": "c45827c024b95cf5", "scanner": "scanner-primary", "fingerprint": "185ab6734857f5e3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-626c954cc164a12e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-campaigns/_components/PromoWizardModal.tsx:404"}, "properties": {"repobilityId": "b32061bfbd455c18", "scanner": "scanner-primary", "fingerprint": "626c954cc164a12e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-06a13a83a4fbe4c1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/campanhas/page.tsx:302"}, "properties": {"repobilityId": "157f081f73446b45", "scanner": "scanner-primary", "fingerprint": "06a13a83a4fbe4c1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7fff9d5a655ff378", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/clientes/page.tsx:332"}, "properties": {"repobilityId": "f9a2442cdfc8e645", "scanner": "scanner-primary", "fingerprint": "7fff9d5a655ff378", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0b1e3ee00cad0d70", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/analytics/page.tsx:267"}, "properties": {"repobilityId": "846756d1aa6eaa92", "scanner": "scanner-primary", "fingerprint": "0b1e3ee00cad0d70", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-983bf523d2c5866f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/conhecimento/page.tsx:301"}, "properties": {"repobilityId": "b43783e5500fa8d1", "scanner": "scanner-primary", "fingerprint": "983bf523d2c5866f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-47c98e2e896b7ddf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/conversas/page.tsx:132"}, "properties": {"repobilityId": "b6cfc8b939d5869c", "scanner": "scanner-primary", "fingerprint": "47c98e2e896b7ddf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5c5040057fe5c139", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/agentes/page.tsx:613"}, "properties": {"repobilityId": "70c1c47f2ef61958", "scanner": "scanner-primary", "fingerprint": "5c5040057fe5c139", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-28768da2b896602a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendente-ia/widget/page.tsx:178"}, "properties": {"repobilityId": "d2d926b34d13b1f3", "scanner": "scanner-primary", "fingerprint": "28768da2b896602a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e19d78dc12203ed3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/vendas-ao-vivo/page.tsx:191"}, "properties": {"repobilityId": "e57c5c6ffaf8b35c", "scanner": "scanner-primary", "fingerprint": "e19d78dc12203ed3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-08e1589f6cf676b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/vendas-ao-vivo/page.tsx:262"}, "properties": {"repobilityId": "e7f89e254541ec96", "scanner": "scanner-primary", "fingerprint": "08e1589f6cf676b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54c909aca3dd573e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/analytics/_components/AnalyticsClient.tsx:224"}, "properties": {"repobilityId": "4bb9a0b74dbb3d42", "scanner": "scanner-primary", "fingerprint": "54c909aca3dd573e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-becd278d748df5f6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/producao/tarefas/page.tsx:161"}, "properties": {"repobilityId": "6024c9c3bb082f76", "scanner": "scanner-primary", "fingerprint": "becd278d748df5f6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0989e47ccd608f82", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/producao/biblioteca/page.tsx:177"}, "properties": {"repobilityId": "d9a14c8e3e29957d", "scanner": "scanner-primary", "fingerprint": "0989e47ccd608f82", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-60740db90566bd3f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/producao/conteudo/page.tsx:103"}, "properties": {"repobilityId": "6742bac1ba0ddc23", "scanner": "scanner-primary", "fingerprint": "60740db90566bd3f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-30cde4a9a4565a76", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/relatorios/page.tsx:389"}, "properties": {"repobilityId": "e8ca0d765c98d1ce", "scanner": "scanner-primary", "fingerprint": "30cde4a9a4565a76", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4984a15cc02f0c87", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/avaliacoes/page.tsx:313"}, "properties": {"repobilityId": "0a924508a991f9f1", "scanner": "scanner-primary", "fingerprint": "4984a15cc02f0c87", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-998c98fd305a064a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/perguntas/page.tsx:767"}, "properties": {"repobilityId": "5662da299da5517b", "scanner": "scanner-primary", "fingerprint": "998c98fd305a064a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fdac2c97aecbebc4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/mensagens/page.tsx:276"}, "properties": {"repobilityId": "16d8cd9301081c8a", "scanner": "scanner-primary", "fingerprint": "fdac2c97aecbebc4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-495975385a779a10", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/mensagens/_components/ShopeeChatWorkspace.tsx:228"}, "properties": {"repobilityId": "4f889ecbb054a909", "scanner": "scanner-primary", "fingerprint": "495975385a779a10", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7cc96559409bf50f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/atendimento/reclamacoes/page.tsx:1147"}, "properties": {"repobilityId": "dc3739dd39863a0c", "scanner": "scanner-primary", "fingerprint": "7cc96559409bf50f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-44b74941473320c7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/page.tsx:266"}, "properties": {"repobilityId": "949e1dc4796a5d40", "scanner": "scanner-primary", "fingerprint": "44b74941473320c7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0fdbc1068ee2f450", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/bulk/page.tsx:224"}, "properties": {"repobilityId": "b53a406f836f3588", "scanner": "scanner-primary", "fingerprint": "0fdbc1068ee2f450", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d451680c0f88c8be", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/seo-optimizer/page.tsx:283"}, "properties": {"repobilityId": "68dc33424bc228db", "scanner": "scanner-primary", "fingerprint": "d451680c0f88c8be", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7004b475d25e684f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/listings/items/[itemId]/page.tsx:174"}, "properties": {"repobilityId": "b0c132f1c872c8c4", "scanner": "scanner-primary", "fingerprint": "7004b475d25e684f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-850b3b19dbb5981a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads/inteligencia/page.tsx:210"}, "properties": {"repobilityId": "f8930a60082bc476", "scanner": "scanner-primary", "fingerprint": "850b3b19dbb5981a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2fe4727cbcf0be7d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads/mercadolivre/page.tsx:312"}, "properties": {"repobilityId": "e52b550fe6a8aa13", "scanner": "scanner-primary", "fingerprint": "2fe4727cbcf0be7d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e44494ac2f4aa1b9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads-campaigns/page.tsx:229"}, "properties": {"repobilityId": "396407620e449da7", "scanner": "scanner-primary", "fingerprint": "e44494ac2f4aa1b9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0965a48f192134a2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads-campaigns/new/page.tsx:244"}, "properties": {"repobilityId": "f32bfff01e4ed546", "scanner": "scanner-primary", "fingerprint": "0965a48f192134a2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d9774518b6d4c6f1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ads-campaigns/[id]/page.tsx:311"}, "properties": {"repobilityId": "8667586e0e41c4b4", "scanner": "scanner-primary", "fingerprint": "d9774518b6d4c6f1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cc6e529d266cacff", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/insights/_components/InsightsClient.tsx:201"}, "properties": {"repobilityId": "68bbe5d5a873351a", "scanner": "scanner-primary", "fingerprint": "cc6e529d266cacff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e4d983660433d5ed", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/comunicacao/_components/ModelosJornadasTab.tsx:251"}, "properties": {"repobilityId": "98c121e0e8df57a3", "scanner": "scanner-primary", "fingerprint": "e4d983660433d5ed", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-24d61401efeb2815", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/comunicacao/_components/TemplatesTab.tsx:372"}, "properties": {"repobilityId": "7302015b17c92861", "scanner": "scanner-primary", "fingerprint": "24d61401efeb2815", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3f335188ba2aa590", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-postsale/page.tsx:416"}, "properties": {"repobilityId": "d253361502b5dbbe", "scanner": "scanner-primary", "fingerprint": "3f335188ba2aa590", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bd749b22342e4849", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social-commerce/whatsapp/page.tsx:240"}, "properties": {"repobilityId": "c3316dda12b6933b", "scanner": "scanner-primary", "fingerprint": "bd749b22342e4849", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b71ae99e2716390f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social-commerce/instagram/page.tsx:420"}, "properties": {"repobilityId": "f2cfb645fa330804", "scanner": "scanner-primary", "fingerprint": "b71ae99e2716390f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-31a5260590300f43", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social-commerce/instagram/posts/page.tsx:379"}, "properties": {"repobilityId": "60ddf37a9abd6c23", "scanner": "scanner-primary", "fingerprint": "31a5260590300f43", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a6a876126d85232f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-campaigns/config/page.tsx:415"}, "properties": {"repobilityId": "2c055e5ce2f5b20e", "scanner": "scanner-primary", "fingerprint": "a6a876126d85232f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3983442455e04c18", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-campaigns/anuncio/[productId]/page.tsx:138"}, "properties": {"repobilityId": "0a482c25bac1839c", "scanner": "scanner-primary", "fingerprint": "3983442455e04c18", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a544a8ba32feee32", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ml-campaigns/[id]/page.tsx:618"}, "properties": {"repobilityId": "69276c3376eb0826", "scanner": "scanner-primary", "fingerprint": "a544a8ba32feee32", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8f7875f88a2943b8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/canais/page.tsx:103"}, "properties": {"repobilityId": "59dbc2bba239361f", "scanner": "scanner-primary", "fingerprint": "8f7875f88a2943b8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c0c35bcdd06fc7c5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/admin/roles/_components/RolesPanel.tsx:191"}, "properties": {"repobilityId": "c4993e1ea9aad919", "scanner": "scanner-primary", "fingerprint": "c0c35bcdd06fc7c5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-61c705379b5aa6a2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/admin/access-requests/_components/AccessRequestsPanel.tsx:216"}, "properties": {"repobilityId": "987ffcf9fbccba32", "scanner": "scanner-primary", "fingerprint": "61c705379b5aa6a2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a4516c8d687417da", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/fidelidade/page.tsx:274"}, "properties": {"repobilityId": "2b3fd21aee3c63ba", "scanner": "scanner-primary", "fingerprint": "a4516c8d687417da", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d7fba439d3bcb7e2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/blog/page.tsx:406"}, "properties": {"repobilityId": "51fe32adea95ce47", "scanner": "scanner-primary", "fingerprint": "d7fba439d3bcb7e2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-20b355fdd6c6112a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/blog/estudio/page.tsx:207"}, "properties": {"repobilityId": "8dda964867b593d2", "scanner": "scanner-primary", "fingerprint": "20b355fdd6c6112a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-324fda08076b7f3e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/analytics/page.tsx:210"}, "properties": {"repobilityId": "dc5d1ebf9da5e968", "scanner": "scanner-primary", "fingerprint": "324fda08076b7f3e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bd348ef577314851", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/ambientador/page.tsx:245"}, "properties": {"repobilityId": "27c401698cf57822", "scanner": "scanner-primary", "fingerprint": "bd348ef577314851", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1291cfe443aef449", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/leads/page.tsx:165"}, "properties": {"repobilityId": "0f02b84c9bc4657e", "scanner": "scanner-primary", "fingerprint": "1291cfe443aef449", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-45c898465c62a482", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/loja/recovery/page.tsx:381"}, "properties": {"repobilityId": "f77096df99f2ae02", "scanner": "scanner-primary", "fingerprint": "45c898465c62a482", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8289257d47c3f157", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/precos/page.tsx:193"}, "properties": {"repobilityId": "e458da9e7e78f05c", "scanner": "scanner-primary", "fingerprint": "8289257d47c3f157", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fa2060437e17facf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social/generate/page.tsx:296"}, "properties": {"repobilityId": "e63d142d8b158ffa", "scanner": "scanner-primary", "fingerprint": "fa2060437e17facf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-33dadec36f89a0e8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/social/images/page.tsx:154"}, "properties": {"repobilityId": "1eb23a29582d6a71", "scanner": "scanner-primary", "fingerprint": "33dadec36f89a0e8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-745fdd40e4eeb7bc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/resultado/page.tsx:245"}, "properties": {"repobilityId": "557a207be0d077e4", "scanner": "scanner-primary", "fingerprint": "745fdd40e4eeb7bc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6acfe61ade7aabe3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/contas-a-pagar/page.tsx:243"}, "properties": {"repobilityId": "9a3f03525a962b66", "scanner": "scanner-primary", "fingerprint": "6acfe61ade7aabe3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6f467a8eeec6255d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/contas-a-pagar/[id]/page.tsx:435"}, "properties": {"repobilityId": "1a05c10d8b74c584", "scanner": "scanner-primary", "fingerprint": "6f467a8eeec6255d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8c9b26aaa74ed2be", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/financeiro/resumo/page.tsx:188"}, "properties": {"repobilityId": "d3b82438f354e98a", "scanner": "scanner-primary", "fingerprint": "8c9b26aaa74ed2be", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0162b5521e31f66d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ai-visibility/score/_components/GeoScoreClient.tsx:231"}, "properties": {"repobilityId": "a1a3147d0ca2b636", "scanner": "scanner-primary", "fingerprint": "0162b5521e31f66d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6c0f8d0fd1180f28", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ai-visibility/optimizer/_components/GeoOptimizerClient.tsx:351"}, "properties": {"repobilityId": "a96d112b9f799b4f", "scanner": "scanner-primary", "fingerprint": "6c0f8d0fd1180f28", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ef9b005b4cf7e3b2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/ai-visibility/scores/_components/ScoresHistoryClient.tsx:174"}, "properties": {"repobilityId": "594ce8c218f5df1e", "scanner": "scanner-primary", "fingerprint": "ef9b005b4cf7e3b2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aa62762fb9487e25", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/messaging/_components/TemplatesTab.tsx:230"}, "properties": {"repobilityId": "cc010824f9c77e32", "scanner": "scanner-primary", "fingerprint": "aa62762fb9487e25", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3c5ff950b976c692", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/messaging/_components/SendsTab.tsx:210"}, "properties": {"repobilityId": "75ecfabd103bb014", "scanner": "scanner-primary", "fingerprint": "3c5ff950b976c692", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-e02783ab7d6ff7fe", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/messaging/_components/JourneysTab.tsx:283"}, "properties": {"repobilityId": "634c47fd8e5e581a", "scanner": "scanner-primary", "fingerprint": "e02783ab7d6ff7fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-bd89556f7a468628", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/messaging/_components/JourneysTab.tsx:169"}, "properties": {"repobilityId": "89f3831b67a59da4", "scanner": "scanner-primary", "fingerprint": "bd89556f7a468628", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2596d3ec509b73a2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/enriquecimento/page.tsx:450"}, "properties": {"repobilityId": "08456b0b654b97af", "scanner": "scanner-primary", "fingerprint": "2596d3ec509b73a2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f2ca9d231b55b951", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-radar/_components/ShopeeRadar.tsx:190"}, "properties": {"repobilityId": "9bda5ee38706e3be", "scanner": "scanner-primary", "fingerprint": "f2ca9d231b55b951", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-34c9984c6c33417d", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/crm/clientes/page.tsx:908"}, "properties": {"repobilityId": "0e921507cc2dc3df", "scanner": "scanner-primary", "fingerprint": "34c9984c6c33417d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3dbc72f90047b41f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/clientes/page.tsx:619"}, "properties": {"repobilityId": "c402b51d00976a10", "scanner": "scanner-primary", "fingerprint": "3dbc72f90047b41f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d4f9d03bf4c6bcf6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/pos-venda/page.tsx:141"}, "properties": {"repobilityId": "38b7f6e435f228c1", "scanner": "scanner-primary", "fingerprint": "d4f9d03bf4c6bcf6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0f27093ab5a77c83", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/pipeline/page.tsx:106"}, "properties": {"repobilityId": "378fa6a8014663f2", "scanner": "scanner-primary", "fingerprint": "0f27093ab5a77c83", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-96ed36b9a144478a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/AbcTab.tsx:146"}, "properties": {"repobilityId": "4b54269bde78b213", "scanner": "scanner-primary", "fingerprint": "96ed36b9a144478a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2ee7dfe703376ec5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/RfmTab.tsx:211"}, "properties": {"repobilityId": "ea588d83833d14bc", "scanner": "scanner-primary", "fingerprint": "2ee7dfe703376ec5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1d80f370b44a69fb", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/crm/customer-hub/_components/SegmentsTab.tsx:262"}, "properties": {"repobilityId": "20d6387ba9155f0e", "scanner": "scanner-primary", "fingerprint": "1d80f370b44a69fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-6bca3ca9da376847", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/SegmentsTab.tsx:136"}, "properties": {"repobilityId": "79dfda7b5932c23d", "scanner": "scanner-primary", "fingerprint": "6bca3ca9da376847", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d21312ac2778d5cc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/OverviewTab.tsx:149"}, "properties": {"repobilityId": "189c8eac0ec968c1", "scanner": "scanner-primary", "fingerprint": "d21312ac2778d5cc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3a3632aa717c4d82", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/crm/customer-hub/_components/ChurnRiskTab.tsx:136"}, "properties": {"repobilityId": "b7ef236baf1d48ff", "scanner": "scanner-primary", "fingerprint": "3a3632aa717c4d82", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3ed0f47e1f3f5e2f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-matchmaker/_components/ShopeeMatchmaker.tsx:120"}, "properties": {"repobilityId": "4344cc75465b4fcd", "scanner": "scanner-primary", "fingerprint": "3ed0f47e1f3f5e2f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0f9efde52d3562dc", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/pedidos/page.tsx:645"}, "properties": {"repobilityId": "8b596c9860c592db", "scanner": "scanner-primary", "fingerprint": "0f9efde52d3562dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-f617739fda8e5345", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pedidos/page.tsx:677"}, "properties": {"repobilityId": "8c747fc51df10a65", "scanner": "scanner-primary", "fingerprint": "f617739fda8e5345", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b10a790ceff2cfac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/pedidos/page.tsx:2585"}, "properties": {"repobilityId": "c953c62c4cf9fcb9", "scanner": "scanner-primary", "fingerprint": "b10a790ceff2cfac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68eabc3a1ed7ccfd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pedidos/_components/PedidosTable.tsx:207"}, "properties": {"repobilityId": "2a4de35dba802ba8", "scanner": "scanner-primary", "fingerprint": "68eabc3a1ed7ccfd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2d70f65949519ff1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pedidos/_components/OrderDetailDrawer.tsx:373"}, "properties": {"repobilityId": "21dbe6e920c798f2", "scanner": "scanner-primary", "fingerprint": "2d70f65949519ff1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1a421885a3e76d3b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/store/config/page.tsx:525"}, "properties": {"repobilityId": "c1008b057e592ee3", "scanner": "scanner-primary", "fingerprint": "1a421885a3e76d3b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-00cf70ae5ab3b375", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/store/designer/page.tsx:577"}, "properties": {"repobilityId": "9e50d51db47b011e", "scanner": "scanner-primary", "fingerprint": "00cf70ae5ab3b375", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2683acabdea2ff56", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/store/designer/_components/PremiumEditor.tsx:182"}, "properties": {"repobilityId": "a2203a28d857d7e8", "scanner": "scanner-primary", "fingerprint": "2683acabdea2ff56", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bcd7ea482224058e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/whatsapp-rotas/page.tsx:360"}, "properties": {"repobilityId": "4ce48e5d28e206f9", "scanner": "scanner-primary", "fingerprint": "bcd7ea482224058e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-49a8b26c3a1b1d60", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/equipe/page.tsx:294"}, "properties": {"repobilityId": "bafe36e1ed3ceb7f", "scanner": "scanner-primary", "fingerprint": "49a8b26c3a1b1d60", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-84debdc28e19159c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/equipe/_components/MemberAccountScope.tsx:210"}, "properties": {"repobilityId": "26695a759b34d0de", "scanner": "scanner-primary", "fingerprint": "84debdc28e19159c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-899c12fcbc0ab7a5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/preferencias/page.tsx:168"}, "properties": {"repobilityId": "624474e3e2fe2c73", "scanner": "scanner-primary", "fingerprint": "899c12fcbc0ab7a5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8685e9f4f53e941f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/configuracoes/integracoes/page.tsx:332"}, "properties": {"repobilityId": "8dea112e6e81eb4d", "scanner": "scanner-primary", "fingerprint": "8685e9f4f53e941f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cc3fdb9b1e4f8500", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-boost/_components/ShopeeBoostCenter.tsx:296"}, "properties": {"repobilityId": "e68a1b0d2046f2f2", "scanner": "scanner-primary", "fingerprint": "cc3fdb9b1e4f8500", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6475ae9c896624b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/reputacao/page.tsx:105"}, "properties": {"repobilityId": "2da108e9759e8aea", "scanner": "scanner-primary", "fingerprint": "6475ae9c896624b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a648cc43caa373d8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/kits/page.tsx:201"}, "properties": {"repobilityId": "549b4497ed20f790", "scanner": "scanner-primary", "fingerprint": "a648cc43caa373d8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-37814f568de777c9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/metas/page.tsx:244"}, "properties": {"repobilityId": "670d0a722a6304d6", "scanner": "scanner-primary", "fingerprint": "37814f568de777c9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-15708e1af0e1b156", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/logistica/page.tsx:122"}, "properties": {"repobilityId": "f02c5bec894d9797", "scanner": "scanner-primary", "fingerprint": "15708e1af0e1b156", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6b91301698edc9ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dashboard/integracoes/ml/callback/page.tsx:35"}, "properties": {"repobilityId": "7638cbc59cf09798", "scanner": "scanner-primary", "fingerprint": "6b91301698edc9ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ffbe5d5883013b5a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/page.tsx:249"}, "properties": {"repobilityId": "a7c85c009b7604d0", "scanner": "scanner-primary", "fingerprint": "ffbe5d5883013b5a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ce06f6b827c51cbd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/partners/[id]/products/page.tsx:241"}, "properties": {"repobilityId": "28d144c9981cedbb", "scanner": "scanner-primary", "fingerprint": "ce06f6b827c51cbd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9b5aadd69d55ab0d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/orders/page.tsx:257"}, "properties": {"repobilityId": "e0564c23f8912e11", "scanner": "scanner-primary", "fingerprint": "9b5aadd69d55ab0d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2ccd93b00315f3c7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/orders/today/page.tsx:155"}, "properties": {"repobilityId": "ebdf64d419882d64", "scanner": "scanner-primary", "fingerprint": "2ccd93b00315f3c7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-194ff98006182217", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/oc/[id]/page.tsx:489"}, "properties": {"repobilityId": "1d453cab2704a4d6", "scanner": "scanner-primary", "fingerprint": "194ff98006182217", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3a1860d72b8ead46", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/scores/page.tsx:189"}, "properties": {"repobilityId": "24e78affa1a13862", "scanner": "scanner-primary", "fingerprint": "3a1860d72b8ead46", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8deb88897aacea88", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/dropship/disputes/page.tsx:174"}, "properties": {"repobilityId": "21b07c6ed2d4db57", "scanner": "scanner-primary", "fingerprint": "8deb88897aacea88", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2c306298dfc5ae5e", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/analise/_components/SettingsModal.tsx:168"}, "properties": {"repobilityId": "0841eed798b427ba", "scanner": "scanner-primary", "fingerprint": "2c306298dfc5ae5e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-da5c046cb79f5bc4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/analise/_components/SettingsModal.tsx:582"}, "properties": {"repobilityId": "696d0752c47c08cc", "scanner": "scanner-primary", "fingerprint": "da5c046cb79f5bc4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e3a5ab2fbc857daf", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/analise/_components/SignalDrawer.tsx:99"}, "properties": {"repobilityId": "4a19adf5856d0541", "scanner": "scanner-primary", "fingerprint": "e3a5ab2fbc857daf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-ad9b5cf3fe9438a5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/analise/_components/SignalDrawer.tsx:279"}, "properties": {"repobilityId": "20d97088c369de12", "scanner": "scanner-primary", "fingerprint": "ad9b5cf3fe9438a5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d3065b3716b75929", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/configuracao/_components/UntouchableSellersTab.tsx:160"}, "properties": {"repobilityId": "67cc6b123e23294d", "scanner": "scanner-primary", "fingerprint": "d3065b3716b75929", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-324c3c5aa99d5ccf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/configuracao/_components/UntouchableSellersTab.tsx:88"}, "properties": {"repobilityId": "ff0e1df340563be5", "scanner": "scanner-primary", "fingerprint": "324c3c5aa99d5ccf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eb15dd90976d7253", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/dashboard/pricing/configuracao/_components/SeasonalTab.tsx:202"}, "properties": {"repobilityId": "823dcc3747d8d7a4", "scanner": "scanner-primary", "fingerprint": "eb15dd90976d7253", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-c0f14bb050c95f56", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/pricing/configuracao/_components/ConfidenceTab.tsx:157"}, "properties": {"repobilityId": "9ba6a3e57e429dc0", "scanner": "scanner-primary", "fingerprint": "c0f14bb050c95f56", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-405008f72aa51d00", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/shopee-quality/_components/ShopeeQualityCenter.tsx:134"}, "properties": {"repobilityId": "d00b19f810b05f31", "scanner": "scanner-primary", "fingerprint": "405008f72aa51d00", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-abb2ce7dd3b9a881", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/roadmap/page.tsx:249"}, "properties": {"repobilityId": "e2d080bc141d0073", "scanner": "scanner-primary", "fingerprint": "abb2ce7dd3b9a881", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ff4beeb8bbe9b770", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/loja/[slug]/page.tsx:58"}, "properties": {"repobilityId": "81a482a97c9639a3", "scanner": "scanner-primary", "fingerprint": "ff4beeb8bbe9b770", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d1d10ce1e9e63011", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/loja/[slug]/blog/[postSlug]/page.tsx:76"}, "properties": {"repobilityId": "03c986b766f5df13", "scanner": "scanner-primary", "fingerprint": "d1d10ce1e9e63011", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4538a1078cbe56bc", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/loja/[slug]/produto/[id]/page.tsx:60"}, "properties": {"repobilityId": "20f4e86454e6a0b9", "scanner": "scanner-primary", "fingerprint": "4538a1078cbe56bc", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b8f57fee67746cba", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/loja/[slug]/conta/ContaPageClient.tsx:282"}, "properties": {"repobilityId": "917544f2cbeaf002", "scanner": "scanner-primary", "fingerprint": "b8f57fee67746cba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0d24b0896236d707", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/oc/[token]/page.tsx:250"}, "properties": {"repobilityId": "549a7569e8e5d187", "scanner": "scanner-primary", "fingerprint": "0d24b0896236d707", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8eb6099615f23465", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/ai/client.ts:20"}, "properties": {"repobilityId": "2542dab792dde111", "scanner": "scanner-primary", "fingerprint": "8eb6099615f23465", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fddd9e7376d33a00", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/storefront-v3/StoreShell.tsx:51"}, "properties": {"repobilityId": "f2408be60ac986b6", "scanner": "scanner-primary", "fingerprint": "fddd9e7376d33a00", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/storefront-v3/StoreShell.tsx"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-51ee00e0abc3f4c7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/storefront-v3/SectionRenderer.tsx:79"}, "properties": {"repobilityId": "70224b60eecae98f", "scanner": "scanner-primary", "fingerprint": "51ee00e0abc3f4c7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/storefront-v3/SectionRenderer.tsx"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-9197cb695e3a2b4d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/social/SocialContentPreview.tsx:369"}, "properties": {"repobilityId": "0c969a3a9d68789f", "scanner": "scanner-primary", "fingerprint": "9197cb695e3a2b4d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/social/SocialContentPreview.tsx"}, "region": {"startLine": 369}}}]}, {"ruleId": "scanner-6215343d2e1c181d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/copilot/FloatingCopilot.tsx:514"}, "properties": {"repobilityId": "79818337c441d0f1", "scanner": "scanner-primary", "fingerprint": "6215343d2e1c181d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/copilot/FloatingCopilot.tsx"}, "region": {"startLine": 514}}}]}, {"ruleId": "scanner-ae35a26e7b1584cc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:26"}, "properties": {"repobilityId": "0bca654fa2052eb0", "scanner": "scanner-primary", "fingerprint": "ae35a26e7b1584cc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/layout.tsx"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-f3f71690e2863ee1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/layout.tsx:48"}, "properties": {"repobilityId": "c9a8077327b2aaaf", "scanner": "scanner-primary", "fingerprint": "f3f71690e2863ee1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/layout.tsx"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-0fd502c7dab3c436", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:107"}, "properties": {"repobilityId": "df5a2a4c38f975f6", "scanner": "scanner-primary", "fingerprint": "0fd502c7dab3c436", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/[slug]/page.tsx"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-fa816c46f9519e36", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/page.tsx:99"}, "properties": {"repobilityId": "c6905e4e8091ba5f", "scanner": "scanner-primary", "fingerprint": "fa816c46f9519e36", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/auditoria-gratis/page.tsx"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-92810957dae45727", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/_components/LoadingClient.tsx:86"}, "properties": {"repobilityId": "7fd81b7759aae8f9", "scanner": "scanner-primary", "fingerprint": "92810957dae45727", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/auditoria-gratis/_components/LoadingClient.tsx"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-269164effde498bd", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/_components/UnsubClient.tsx:33"}, "properties": {"repobilityId": "d8bf595e753d9176", "scanner": "scanner-primary", "fingerprint": "269164effde498bd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/auditoria-gratis/_components/UnsubClient.tsx"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-ee174d6c80e64199", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/auditoria-gratis/_components/ResultClient.tsx:300"}, "properties": {"repobilityId": "a70b80af6742528a", "scanner": "scanner-primary", "fingerprint": "ee174d6c80e64199", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/auditoria-gratis/_components/ResultClient.tsx"}, "region": {"startLine": 300}}}]}, {"ruleId": "scanner-b22eefb9eb21a838", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/loja/[slug]/page.tsx:58"}, "properties": {"repobilityId": "7848b9c3d0ded48c", "scanner": "scanner-primary", "fingerprint": "b22eefb9eb21a838", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/loja/[slug]/page.tsx"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-a9e359766bbec646", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/loja/[slug]/blog/[postSlug]/page.tsx:76"}, "properties": {"repobilityId": "f597ab957897cfe1", "scanner": "scanner-primary", "fingerprint": "a9e359766bbec646", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/loja/[slug]/blog/[postSlug]/page.tsx"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-d1145008e2305281", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/loja/[slug]/produto/[id]/page.tsx:60"}, "properties": {"repobilityId": "23cec4490654989f", "scanner": "scanner-primary", "fingerprint": "d1145008e2305281", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/loja/[slug]/produto/[id]/page.tsx"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-98e7d7abe05fa235", "level": "note", "message": {"text": "Very large file: src/app/dashboard/page.tsx (2087 lines)"}, "properties": {"repobilityId": "d1018ecc2e88ff7e", "scanner": "scanner-primary", "fingerprint": "98e7d7abe05fa235", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f9859ef85a4292e", "level": "note", "message": {"text": "Very large file: src/app/dashboard/compras/importacoes/page.tsx (1352 lines)"}, "properties": {"repobilityId": "f1420fb7740527ce", "scanner": "scanner-primary", "fingerprint": "9f9859ef85a4292e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5437134f1a73e1a3", "level": "note", "message": {"text": "Very large file: src/app/dashboard/creative/[productId]/page.tsx (1372 lines)"}, "properties": {"repobilityId": "c80eb2318be128f3", "scanner": "scanner-primary", "fingerprint": "5437134f1a73e1a3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c8dde25f9acafd06", "level": "note", "message": {"text": "Very large file: src/app/dashboard/creative/[productId]/listing/[listingId]/publish/ml/page.tsx (1087 lines)"}, "properties": {"repobilityId": "98cbb308f479a37a", "scanner": "scanner-primary", "fingerprint": "c8dde25f9acafd06", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e92e5b0cb4aace91", "level": "note", "message": {"text": "Very large file: src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx (1481 lines)"}, "properties": {"repobilityId": "841b534e820b3a79", "scanner": "scanner-primary", "fingerprint": "e92e5b0cb4aace91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a29b8fb7de4fb5ea", "level": "note", "message": {"text": "Very large file: src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx (2577 lines)"}, "properties": {"repobilityId": "44a73aee6c755408", "scanner": "scanner-primary", "fingerprint": "a29b8fb7de4fb5ea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e09ebc4b67fcd322", "level": "note", "message": {"text": "Very large file: src/app/dashboard/catalogo/vinculos/page.tsx (1998 lines)"}, "properties": {"repobilityId": "5a47eacc090f8b98", "scanner": "scanner-primary", "fingerprint": "e09ebc4b67fcd322", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-94da01249af94d7d", "level": "note", "message": {"text": "Very large file: src/app/dashboard/produtos/page.tsx (2488 lines)"}, "properties": {"repobilityId": "41cac8eb16d411b7", "scanner": "scanner-primary", "fingerprint": "94da01249af94d7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e3e376e4986800a0", "level": "note", "message": {"text": "Very large file: src/app/dashboard/produtos/operacao-cadastro/page.tsx (1405 lines)"}, "properties": {"repobilityId": "0c025d424ee1d52a", "scanner": "scanner-primary", "fingerprint": "e3e376e4986800a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6d5738ec78392751", "level": "note", "message": {"text": "Very large file: src/app/dashboard/atendimento/perguntas/page.tsx (1210 lines)"}, "properties": {"repobilityId": "964a5b5cbac61bde", "scanner": "scanner-primary", "fingerprint": "6d5738ec78392751", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4f1f655164a72a98", "level": "note", "message": {"text": "Very large file: src/app/dashboard/atendimento/reclamacoes/page.tsx (1455 lines)"}, "properties": {"repobilityId": "dcc64460636aaa06", "scanner": "scanner-primary", "fingerprint": "4f1f655164a72a98", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9c97ee8933b9d93b", "level": "note", "message": {"text": "Very large file: src/app/dashboard/ads/mercadolivre/page.tsx (1098 lines)"}, "properties": {"repobilityId": "07982becd7e23fc9", "scanner": "scanner-primary", "fingerprint": "9c97ee8933b9d93b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-507a7ba93aae2d7d", "level": "note", "message": {"text": "Very large file: src/app/dashboard/enriquecimento/page.tsx (1114 lines)"}, "properties": {"repobilityId": "1db6a496038f014e", "scanner": "scanner-primary", "fingerprint": "507a7ba93aae2d7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f2126eb43d719743", "level": "note", "message": {"text": "Very large file: src/app/dashboard/crm/clientes/page.tsx (1066 lines)"}, "properties": {"repobilityId": "e5e96cbd7c0470b9", "scanner": "scanner-primary", "fingerprint": "f2126eb43d719743", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3199da599e521d7a", "level": "note", "message": {"text": "Very large file: src/app/dashboard/pedidos/page.tsx (3378 lines)"}, "properties": {"repobilityId": "82c50208c73425ec", "scanner": "scanner-primary", "fingerprint": "3199da599e521d7a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea7d0573413aa1d6", "level": "note", "message": {"text": "Very large file: src/app/dashboard/store/designer-v3/_components/SectionInspector.tsx (1054 lines)"}, "properties": {"repobilityId": "d7ef2f0fb20b0b97", "scanner": "scanner-primary", "fingerprint": "ea7d0573413aa1d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-615674995f393820", "level": "note", "message": {"text": "Very large file: src/app/dashboard/configuracoes/integracoes/page.tsx (2009 lines)"}, "properties": {"repobilityId": "d06fd1f25bc16c06", "scanner": "scanner-primary", "fingerprint": "615674995f393820", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "6a57532e812700a3", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ca15e9bef51bc1b2", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "1a9b908716fa1f18", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "ef70e25fef316bba", "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": "91ca71fd013cf63e", "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": "cf6ce73a0e871c69", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "2a38c6b163050d75", "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": "9fdee813598bda53", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-5fe8146c903523d0", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/middleware.ts:80"}, "properties": {"repobilityId": "e360ee8e48256407", "scanner": "scanner-primary", "fingerprint": "5fe8146c903523d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3406ea006595c6a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/inteligencia/OnboardingBanner.tsx:22"}, "properties": {"repobilityId": "a97098dbb8da7ba5", "scanner": "scanner-primary", "fingerprint": "3406ea006595c6a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-502dd504eceb3e4e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/inteligencia/HubSummaryCard.tsx:31"}, "properties": {"repobilityId": "6dd651667e2c851e", "scanner": "scanner-primary", "fingerprint": "502dd504eceb3e4e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc50f73b0d49f9f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/layout/Sidebar.tsx:701"}, "properties": {"repobilityId": "f55886a9525990e5", "scanner": "scanner-primary", "fingerprint": "dc50f73b0d49f9f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b2cdbe8fd444646f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/creative/ListingEditor.tsx:444"}, "properties": {"repobilityId": "8ce90d038ed1cf3a", "scanner": "scanner-primary", "fingerprint": "b2cdbe8fd444646f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb67c6cb800b68a9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/creative/MLAttributesForm.tsx:115"}, "properties": {"repobilityId": "017b3b00f0d0ca5e", "scanner": "scanner-primary", "fingerprint": "fb67c6cb800b68a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f520391d645add3d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/creative/MarkupPanel.tsx:101"}, "properties": {"repobilityId": "0d6649478e5cb394", "scanner": "scanner-primary", "fingerprint": "f520391d645add3d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbc02e77189c5a54", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/creative/types.ts:523"}, "properties": {"repobilityId": "3640424d8ad885fb", "scanner": "scanner-primary", "fingerprint": "fbc02e77189c5a54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0cc238067dcfd55e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ai/AiModelSelector.tsx:78"}, "properties": {"repobilityId": "6ee58e06b5484458", "scanner": "scanner-primary", "fingerprint": "0cc238067dcfd55e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-accf93786069c21e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ai/ApiKeysManager.tsx:129"}, "properties": {"repobilityId": "288909e8bd71bbe1", "scanner": "scanner-primary", "fingerprint": "accf93786069c21e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c6eb1f8dc60aa59f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront-v3/sections/ProductKitsClient.tsx:86"}, "properties": {"repobilityId": "0fdd4c95a91c4dcd", "scanner": "scanner-primary", "fingerprint": "c6eb1f8dc60aa59f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d1b3222c9a0223c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ads-ai/AdsAIChat.tsx:62"}, "properties": {"repobilityId": "bc0429561b6659da", "scanner": "scanner-primary", "fingerprint": "d1b3222c9a0223c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4c93c9f919535684", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ads-ai/InsightsBanner.tsx:63"}, "properties": {"repobilityId": "aa84744d0061611f", "scanner": "scanner-primary", "fingerprint": "4c93c9f919535684", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e10c5ba7bf1a0a4e", "level": "note", "message": {"text": "Legacy-named symbol `description_old` in src/components/ai-visibility/optimizer-labels.ts:17"}, "properties": {"repobilityId": "1aff490a4e8e6670", "scanner": "scanner-primary", "fingerprint": "e10c5ba7bf1a0a4e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8d478e2359c617cb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ai-visibility/GeoImpactPanel.tsx:71"}, "properties": {"repobilityId": "1550ab06c535acf4", "scanner": "scanner-primary", "fingerprint": "8d478e2359c617cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-88a9c1a0c778417e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/BannerGeneratorModal.tsx:91"}, "properties": {"repobilityId": "1fa5c4f6c262d7d6", "scanner": "scanner-primary", "fingerprint": "88a9c1a0c778417e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5a4dc83aef18965f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/ia/completar/route.ts:81"}, "properties": {"repobilityId": "923f8e2258cf8416", "scanner": "scanner-primary", "fingerprint": "5a4dc83aef18965f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-874a03e8536677ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/dashboard/page.tsx:757"}, "properties": {"repobilityId": "742afc96368eb95f", "scanner": "scanner-primary", "fingerprint": "874a03e8536677ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4cff3a6fcf710afd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/page.tsx:847"}, "properties": {"repobilityId": "0ddda48af1f55fbc", "scanner": "scanner-primary", "fingerprint": "4cff3a6fcf710afd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e9efefd61128ebbc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/inteligencia/relatorios/page.tsx:63"}, "properties": {"repobilityId": "d5d53897de9e3a6a", "scanner": "scanner-primary", "fingerprint": "e9efefd61128ebbc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1159304ebfb59aab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/inteligencia/alertas/page.tsx:75"}, "properties": {"repobilityId": "4a1b8d3d9f75cd43", "scanner": "scanner-primary", "fingerprint": "1159304ebfb59aab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1a8b05dfff6bd74f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/inteligencia/page.tsx:467"}, "properties": {"repobilityId": "c0af37d85ee1b1c2", "scanner": "scanner-primary", "fingerprint": "1a8b05dfff6bd74f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e4f0739532a6ae07", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/fornecedores/page.tsx:144"}, "properties": {"repobilityId": "57403da46f213df2", "scanner": "scanner-primary", "fingerprint": "e4f0739532a6ae07", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7dc0de9520431ae6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/fornecedores/[id]/page.tsx:213"}, "properties": {"repobilityId": "612eb4f05413906a", "scanner": "scanner-primary", "fingerprint": "7dc0de9520431ae6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7ac23e629fe6aafd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/compras/importacoes/page.tsx:685"}, "properties": {"repobilityId": "e7a2415dcafe8d52", "scanner": "scanner-primary", "fingerprint": "7ac23e629fe6aafd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e453754da9a04eb2", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/dashboard/creative/[productId]/listing/[listingId]/page.tsx:62"}, "properties": {"repobilityId": "6aea50308de0faf3", "scanner": "scanner-primary", "fingerprint": "e453754da9a04eb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b927d25e93784cea", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/dashboard/creative/new/page.tsx:147"}, "properties": {"repobilityId": "e0a76046a2c308b7", "scanner": "scanner-primary", "fingerprint": "b927d25e93784cea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-435ba6ec37e9ffb3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/creative/references/page.tsx:453"}, "properties": {"repobilityId": "018c949e2d6b6581", "scanner": "scanner-primary", "fingerprint": "435ba6ec37e9ffb3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9319d5a4ca5818b8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/page.tsx:522"}, "properties": {"repobilityId": "4e37f2bc4901d69b", "scanner": "scanner-primary", "fingerprint": "9319d5a4ca5818b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb1e0d2e25256675", "level": "note", "message": {"text": "Legacy-named symbol `stock_info_v2` in src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx:1159"}, "properties": {"repobilityId": "ee2c8028125fcfa0", "scanner": "scanner-primary", "fingerprint": "eb1e0d2e25256675", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-96175581df0de85b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx:459"}, "properties": {"repobilityId": "ae3c8ed8ef82f8d5", "scanner": "scanner-primary", "fingerprint": "96175581df0de85b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9f07a367b1f6ce8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/shopee/_components/ShopeeListingsCenter.tsx:162"}, "properties": {"repobilityId": "ee00337ea965e953", "scanner": "scanner-primary", "fingerprint": "b9f07a367b1f6ce8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f0294bc467444b08", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/mercadolivre/page.tsx:1577"}, "properties": {"repobilityId": "5619b3bd25687058", "scanner": "scanner-primary", "fingerprint": "f0294bc467444b08", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c4acbd995471811c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/anuncios/tiktok/page.tsx:635"}, "properties": {"repobilityId": "41fb79deaaeff00d", "scanner": "scanner-primary", "fingerprint": "c4acbd995471811c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1b8b9bba964f7b43", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/vinculos/page.tsx:472"}, "properties": {"repobilityId": "9a72dc7fcff57894", "scanner": "scanner-primary", "fingerprint": "1b8b9bba964f7b43", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a6bc1684b165e2d2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/multiplicador/page.tsx:129"}, "properties": {"repobilityId": "abe7fb423c283b92", "scanner": "scanner-primary", "fingerprint": "a6bc1684b165e2d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9b1a268dd3745d22", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/estoque/page.tsx:374"}, "properties": {"repobilityId": "c26d320fb29983ab", "scanner": "scanner-primary", "fingerprint": "9b1a268dd3745d22", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-97912f9146b89243", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/catalogo/estoque/sincronizacoes/page.tsx:108"}, "properties": {"repobilityId": "b2e823dc34449d30", "scanner": "scanner-primary", "fingerprint": "97912f9146b89243", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-28ed92cd6b4e125e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/page.tsx:766"}, "properties": {"repobilityId": "a79a44df3892a3b7", "scanner": "scanner-primary", "fingerprint": "28ed92cd6b4e125e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-04fffd524edcdd47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/novo/_components/CategoryPicker.tsx:70"}, "properties": {"repobilityId": "41336d786b44cdb1", "scanner": "scanner-primary", "fingerprint": "04fffd524edcdd47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-709eef820eb98d08", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/operacao-cadastro/page.tsx:723"}, "properties": {"repobilityId": "bc86b0d48cafc1df", "scanner": "scanner-primary", "fingerprint": "709eef820eb98d08", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4622e0ad2af28050", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/[id]/editar/page.tsx:227"}, "properties": {"repobilityId": "cc4e55ade429cec6", "scanner": "scanner-primary", "fingerprint": "4622e0ad2af28050", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d1cb8c61a5938f98", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/categorias/page.tsx:66"}, "properties": {"repobilityId": "85c230c52ad4b89d", "scanner": "scanner-primary", "fingerprint": "d1cb8c61a5938f98", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9f5d719448c896c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/_components/ProdutosTable.tsx:154"}, "properties": {"repobilityId": "2344f336b17dee38", "scanner": "scanner-primary", "fingerprint": "9f5d719448c896c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-07db7521c22c0f17", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/produtos/_components/VariantLinkerPanel.tsx:43"}, "properties": {"repobilityId": "d39817b777573be3", "scanner": "scanner-primary", "fingerprint": "07db7521c22c0f17", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3fdc2d938fa9bbeb", "level": "note", "message": {"text": "Legacy-named symbol `campaign_copy` in src/app/dashboard/campanhas/page.tsx:467"}, "properties": {"repobilityId": "5b0996c4a860e588", "scanner": "scanner-primary", "fingerprint": "3fdc2d938fa9bbeb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b3d6e34c07fc8f64", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/dashboard/campanhas/page.tsx:1037"}, "properties": {"repobilityId": "a9d38c931d28b389", "scanner": "scanner-primary", "fingerprint": "b3d6e34c07fc8f64", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e25692edd89fe83", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/clientes/page.tsx:79"}, "properties": {"repobilityId": "ffa90ffa197c97fb", "scanner": "scanner-primary", "fingerprint": "4e25692edd89fe83", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79249870c988ee28", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/analytics/page.tsx:88"}, "properties": {"repobilityId": "a37996921440f351", "scanner": "scanner-primary", "fingerprint": "79249870c988ee28", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e715f48a3e9eefd0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/conversas/page.tsx:511"}, "properties": {"repobilityId": "9735b830901925f8", "scanner": "scanner-primary", "fingerprint": "e715f48a3e9eefd0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b8f5634e8e1f859", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/agentes/page.tsx:204"}, "properties": {"repobilityId": "32d4090b32f41803", "scanner": "scanner-primary", "fingerprint": "3b8f5634e8e1f859", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ca5180052fdd12de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/treinamento/page.tsx:94"}, "properties": {"repobilityId": "d1b13742757ac1e3", "scanner": "scanner-primary", "fingerprint": "ca5180052fdd12de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba487e225686f1bb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendente-ia/widget/page.tsx:70"}, "properties": {"repobilityId": "54b8530ba2645508", "scanner": "scanner-primary", "fingerprint": "ba487e225686f1bb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-61d18eba55d0e608", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/vendas-ao-vivo/page.tsx:265"}, "properties": {"repobilityId": "fd929577043f6ea9", "scanner": "scanner-primary", "fingerprint": "61d18eba55d0e608", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-01bd6cc99bbaf33f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/producao/conteudo/page.tsx:254"}, "properties": {"repobilityId": "2e3a5f185ea52afb", "scanner": "scanner-primary", "fingerprint": "01bd6cc99bbaf33f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-54038bd8077fbb7a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/relatorios/page.tsx:62"}, "properties": {"repobilityId": "9c5836a030ef294b", "scanner": "scanner-primary", "fingerprint": "54038bd8077fbb7a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ddb1e528c3d96f13", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendimento/avaliacoes/page.tsx:121"}, "properties": {"repobilityId": "426a86412e2a5751", "scanner": "scanner-primary", "fingerprint": "ddb1e528c3d96f13", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33e1a0b4d05b2248", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/atendimento/reclamacoes/page.tsx:543"}, "properties": {"repobilityId": "d525009076670e90", "scanner": "scanner-primary", "fingerprint": "33e1a0b4d05b2248", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ef288211a7f6af8b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/page.tsx:138"}, "properties": {"repobilityId": "36c0b616345e308f", "scanner": "scanner-primary", "fingerprint": "ef288211a7f6af8b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a98e92b4534bdf04", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/seo-optimizer/page.tsx:422"}, "properties": {"repobilityId": "6fbb64e2b916d66c", "scanner": "scanner-primary", "fingerprint": "a98e92b4534bdf04", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-802f046675afeae1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/fiscal/page.tsx:56"}, "properties": {"repobilityId": "14e18a79ccdd56aa", "scanner": "scanner-primary", "fingerprint": "802f046675afeae1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa95ad989de07add", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/scores/page.tsx:66"}, "properties": {"repobilityId": "a603b18ad461120c", "scanner": "scanner-primary", "fingerprint": "fa95ad989de07add", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e90e67cd86c6897", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/listings/pricing/page.tsx:87"}, "properties": {"repobilityId": "212d3b8625f77b89", "scanner": "scanner-primary", "fingerprint": "8e90e67cd86c6897", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1c584bbcb1f95cf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ads/inteligencia/page.tsx:154"}, "properties": {"repobilityId": "5fda8824db0bedaf", "scanner": "scanner-primary", "fingerprint": "f1c584bbcb1f95cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fea66dd728c25ee1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ads/mercadolivre/page.tsx:268"}, "properties": {"repobilityId": "d57c8705834083cb", "scanner": "scanner-primary", "fingerprint": "fea66dd728c25ee1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4639ea1cd4bd5819", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/comunicacao/_components/PedidosEmCursoTab.tsx:113"}, "properties": {"repobilityId": "37550eb413a21246", "scanner": "scanner-primary", "fingerprint": "4639ea1cd4bd5819", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-65a5dc20827ce944", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/config/page.tsx:83"}, "properties": {"repobilityId": "d8d3b084e8e86f95", "scanner": "scanner-primary", "fingerprint": "65a5dc20827ce944", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f53557d1d00d5e5", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/dashboard/ml-campaigns/recommendations/[id]/page.tsx:240"}, "properties": {"repobilityId": "c7a48ef36d3eb9df", "scanner": "scanner-primary", "fingerprint": "7f53557d1d00d5e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-281f5922788e35e8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/analytics/page.tsx:64"}, "properties": {"repobilityId": "8f5b3b353f5e8f3f", "scanner": "scanner-primary", "fingerprint": "281f5922788e35e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-81040a7a859d35d4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/deadlines/page.tsx:47"}, "properties": {"repobilityId": "484015ed9f32d1b9", "scanner": "scanner-primary", "fingerprint": "81040a7a859d35d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-78723a382550ec33", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/[id]/page.tsx:114"}, "properties": {"repobilityId": "bc0f017f918ea77a", "scanner": "scanner-primary", "fingerprint": "78723a382550ec33", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-49cc7aee4443d9bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/audit/page.tsx:57"}, "properties": {"repobilityId": "d8c3db624e0b26ad", "scanner": "scanner-primary", "fingerprint": "49cc7aee4443d9bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2833ff7a37cbaa2e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ml-campaigns/apply/page.tsx:69"}, "properties": {"repobilityId": "7289e0de07daeef9", "scanner": "scanner-primary", "fingerprint": "2833ff7a37cbaa2e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-86b112581c800aa8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/executive/ads/page.tsx:230"}, "properties": {"repobilityId": "ec648dad722c9ff7", "scanner": "scanner-primary", "fingerprint": "86b112581c800aa8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2d0d5020f4363ed2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/canais/page.tsx:335"}, "properties": {"repobilityId": "840d1d588a8ceb75", "scanner": "scanner-primary", "fingerprint": "2d0d5020f4363ed2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5b4257f30b2449f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/admin/roles/_components/RolesPanel.tsx:79"}, "properties": {"repobilityId": "e375c15cf6254e2d", "scanner": "scanner-primary", "fingerprint": "5b4257f30b2449f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b508c06d7dd2610e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/page.tsx:70"}, "properties": {"repobilityId": "be76e787124309ed", "scanner": "scanner-primary", "fingerprint": "b508c06d7dd2610e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-347991cac5799c1d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/fidelidade/page.tsx:90"}, "properties": {"repobilityId": "34d14c4aca0ce92d", "scanner": "scanner-primary", "fingerprint": "347991cac5799c1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f31d258abb170203", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/frete/page.tsx:75"}, "properties": {"repobilityId": "a2ad6d16dc5818a7", "scanner": "scanner-primary", "fingerprint": "f31d258abb170203", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e6491b3f12a6521b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/recovery/page.tsx:119"}, "properties": {"repobilityId": "ab0084489d286067", "scanner": "scanner-primary", "fingerprint": "e6491b3f12a6521b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a7248ea8d88324ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/bonus/page.tsx:109"}, "properties": {"repobilityId": "c06c543380e6c150", "scanner": "scanner-primary", "fingerprint": "a7248ea8d88324ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d0f4c3abb4d97022", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/pagamentos/page.tsx:70"}, "properties": {"repobilityId": "6ce790f2f1ead9f2", "scanner": "scanner-primary", "fingerprint": "d0f4c3abb4d97022", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f01dea9e7ac9f30d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/promocoes/page.tsx:108"}, "properties": {"repobilityId": "d828e80fb853c894", "scanner": "scanner-primary", "fingerprint": "f01dea9e7ac9f30d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f6704547acfb35e2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/cashback/page.tsx:73"}, "properties": {"repobilityId": "f025e6af27517415", "scanner": "scanner-primary", "fingerprint": "f6704547acfb35e2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dab2e075311c0db1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/reviews/page.tsx:107"}, "properties": {"repobilityId": "17915b4395a70bd2", "scanner": "scanner-primary", "fingerprint": "dab2e075311c0db1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc3d2b4226f45978", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/loja/cupons/page.tsx:71"}, "properties": {"repobilityId": "8ee8c835c19b457f", "scanner": "scanner-primary", "fingerprint": "dc3d2b4226f45978", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b2d002e89a5ab3a5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/precos/page.tsx:108"}, "properties": {"repobilityId": "8dc0b2a0df69dbf7", "scanner": "scanner-primary", "fingerprint": "b2d002e89a5ab3a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7d705c9cc27b2ba6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/resultado/page.tsx:90"}, "properties": {"repobilityId": "0509855e0eb86610", "scanner": "scanner-primary", "fingerprint": "7d705c9cc27b2ba6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8cc264390f64c4d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/contas-a-pagar/page.tsx:79"}, "properties": {"repobilityId": "3624add35c2e1f55", "scanner": "scanner-primary", "fingerprint": "b8cc264390f64c4d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-911d5ad9993fde82", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/fluxo/page.tsx:150"}, "properties": {"repobilityId": "6daad3719a934769", "scanner": "scanner-primary", "fingerprint": "911d5ad9993fde82", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba195600f623234d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/financeiro/reconciliacao/page.tsx:96"}, "properties": {"repobilityId": "efa851df8e6c4665", "scanner": "scanner-primary", "fingerprint": "ba195600f623234d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-136a1447051576e4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/ai-visibility/score/_components/GeoScoreClient.tsx:96"}, "properties": {"repobilityId": "b9aa6ff259649e25", "scanner": "scanner-primary", "fingerprint": "136a1447051576e4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-92cd66cb409f2451", "level": "note", "message": {"text": "Legacy-named symbol `description_old` in src/app/dashboard/ai-visibility/optimizer/_components/GeoOptimizerClient.tsx:427"}, "properties": {"repobilityId": "0e28667e197d1661", "scanner": "scanner-primary", "fingerprint": "92cd66cb409f2451", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a38ffa0c0d71a2da", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/enriquecimento/page.tsx:296"}, "properties": {"repobilityId": "839aecb5a44134d5", "scanner": "scanner-primary", "fingerprint": "a38ffa0c0d71a2da", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-81d3abea60b4a420", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/crm/pos-venda/page.tsx:202"}, "properties": {"repobilityId": "9313bce6a194df77", "scanner": "scanner-primary", "fingerprint": "81d3abea60b4a420", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-36888bd28e154242", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/shopee-matchmaker/_components/ShopeeMatchmaker.tsx:327"}, "properties": {"repobilityId": "69c4b6d08492eac6", "scanner": "scanner-primary", "fingerprint": "36888bd28e154242", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59e9a3b9418ee5ba", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/dashboard/pedidos/page.tsx:2142"}, "properties": {"repobilityId": "dc65fe0fa31d5a84", "scanner": "scanner-primary", "fingerprint": "59e9a3b9418ee5ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55d951eb9b579e74", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/pedidos/page.tsx:2221"}, "properties": {"repobilityId": "e435d817225fe4bb", "scanner": "scanner-primary", "fingerprint": "55d951eb9b579e74", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b195818af589df6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/store/designer-v3/page.tsx:67"}, "properties": {"repobilityId": "61f5976cfa019443", "scanner": "scanner-primary", "fingerprint": "3b195818af589df6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-269928fab22bdece", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/dashboard/store/designer-v3/_components/SectionInspector.tsx:260"}, "properties": {"repobilityId": "d564167926ad2f5a", "scanner": "scanner-primary", "fingerprint": "269928fab22bdece", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef70974a652f696e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/configuracoes/ia/page.tsx:521"}, "properties": {"repobilityId": "573345476f94c9a7", "scanner": "scanner-primary", "fingerprint": "ef70974a652f696e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d9d5ba6975332344", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/configuracoes/integracoes/page.tsx:155"}, "properties": {"repobilityId": "55dae4faa1b6ace4", "scanner": "scanner-primary", "fingerprint": "d9d5ba6975332344", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ac2043523e6684d6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/integracoes/page.tsx:367"}, "properties": {"repobilityId": "e48f911f2a639038", "scanner": "scanner-primary", "fingerprint": "ac2043523e6684d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2e3c0a906600ee47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/integracoes/ml/callback/page.tsx:47"}, "properties": {"repobilityId": "26d1d068f8d1b8b8", "scanner": "scanner-primary", "fingerprint": "2e3c0a906600ee47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f4564d01cde7a847", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/page.tsx:66"}, "properties": {"repobilityId": "ec02f13d016fb366", "scanner": "scanner-primary", "fingerprint": "f4564d01cde7a847", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f22506e84a82b18", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/sync-logs/page.tsx:57"}, "properties": {"repobilityId": "8bf62dd3a1f410f7", "scanner": "scanner-primary", "fingerprint": "2f22506e84a82b18", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c40a212503a05f71", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/partners/page.tsx:110"}, "properties": {"repobilityId": "6c3b962610fdc1c9", "scanner": "scanner-primary", "fingerprint": "c40a212503a05f71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-66065ac72fba9f73", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/partners/[id]/page.tsx:134"}, "properties": {"repobilityId": "075fb9767bec7629", "scanner": "scanner-primary", "fingerprint": "66065ac72fba9f73", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b90ab88a58c6f710", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/partners/[id]/products/page.tsx:108"}, "properties": {"repobilityId": "5e7e8f68ade7bdf7", "scanner": "scanner-primary", "fingerprint": "b90ab88a58c6f710", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5c3ff2f1090d12c4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/orders/page.tsx:71"}, "properties": {"repobilityId": "93db20b478e937d6", "scanner": "scanner-primary", "fingerprint": "5c3ff2f1090d12c4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9673ca469b4af4d5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/divergences/page.tsx:69"}, "properties": {"repobilityId": "7b1061c93924920c", "scanner": "scanner-primary", "fingerprint": "9673ca469b4af4d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3327ef5d4b543a57", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/returns/page.tsx:86"}, "properties": {"repobilityId": "1324861bc4c86202", "scanner": "scanner-primary", "fingerprint": "3327ef5d4b543a57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2130a02b4ae81b82", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/account-suppliers/page.tsx:104"}, "properties": {"repobilityId": "074e07496c63d79d", "scanner": "scanner-primary", "fingerprint": "2130a02b4ae81b82", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bbb7d7d7d457d859", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/credits/page.tsx:46"}, "properties": {"repobilityId": "f3187e97f56beab8", "scanner": "scanner-primary", "fingerprint": "bbb7d7d7d457d859", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2abdc282f5b6a136", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/dropship/disputes/page.tsx:68"}, "properties": {"repobilityId": "36c5d52bd55eb58b", "scanner": "scanner-primary", "fingerprint": "2abdc282f5b6a136", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-455be144662de262", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/dashboard/roadmap/page.tsx:150"}, "properties": {"repobilityId": "045ccf291f37742c", "scanner": "scanner-primary", "fingerprint": "455be144662de262", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-38ce43bdadf825c3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/loja/[slug]/page.tsx:39"}, "properties": {"repobilityId": "3221a34f26ad3617", "scanner": "scanner-primary", "fingerprint": "38ce43bdadf825c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66afd03c334b4fab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/onboarding/page.tsx:15"}, "properties": {"repobilityId": "394b11b206286ab6", "scanner": "scanner-primary", "fingerprint": "66afd03c334b4fab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dd84b8ed1dd36884", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/solicitar-acesso/page.tsx:94"}, "properties": {"repobilityId": "4931fce77f71a2b0", "scanner": "scanner-primary", "fingerprint": "dd84b8ed1dd36884", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-044d1806738d9ef7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/rbac/permissions-context.tsx:75"}, "properties": {"repobilityId": "1a793bccc5e1ba38", "scanner": "scanner-primary", "fingerprint": "044d1806738d9ef7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c8c878622834e80b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/storefront/customer-auth.ts:119"}, "properties": {"repobilityId": "689a5d0e1c571020", "scanner": "scanner-primary", "fingerprint": "c8c878622834e80b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c675b9ad6f22d0bc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/storefront/affiliate-auth.ts:125"}, "properties": {"repobilityId": "392481925cd0500a", "scanner": "scanner-primary", "fingerprint": "c675b9ad6f22d0bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-abbd2c784b80b09e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useTodayOrders.ts:44"}, "properties": {"repobilityId": "cda0fd2e48a70d48", "scanner": "scanner-primary", "fingerprint": "abbd2c784b80b09e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f2e3d9b1dcb5a73e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/useMlLabels.ts:49"}, "properties": {"repobilityId": "d3a2836c90fd09f6", "scanner": "scanner-primary", "fingerprint": "f2e3d9b1dcb5a73e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87acb4066071a15a", "level": "note", "message": {"text": "19 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "b1f30c58de7ffb20", "scanner": "scanner-primary", "fingerprint": "87acb4066071a15a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}