{"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": "scanner-0805afd160c41c4a", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/dashboards/PanelCard.tsx:38", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/dashboards/PanelCard.tsx:38"}, "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-c0f28e973fb79404", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/discover/StreamView.tsx:131", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/discover/StreamView.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-172a326af516d64f", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/discover/RowDetailDrawer.tsx:27", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/discover/RowDetailDrawer.tsx:27"}, "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-7c02aacbe60add54", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/discover/FieldStats.tsx:46", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/discover/FieldStats.tsx:46"}, "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-e71111e920ba3b96", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/query/results/ResultsGrid.tsx:261", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/query/results/ResultsGrid.tsx:261"}, "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-a1bdd9ca58f69df6", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/explore/KymaExplore.tsx:467", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/explore/KymaExplore.tsx:467"}, "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-b1e9e49574b37418", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/LegendDock.tsx:212", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/LegendDock.tsx:212"}, "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-7329f432a6e712de", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/NodeDetailModal.tsx:41", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/NodeDetailModal.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-f2930dcdd630fdcf", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/CommandBar.tsx:125", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/CommandBar.tsx:125"}, "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-1c282bdfbc4c7e9c", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/InspectorPanel.tsx:58", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/InspectorPanel.tsx:58"}, "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-d60d6aa5a1737284", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/shell.tsx:104", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/shell.tsx:104"}, "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-ddb4490292be4337", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/Sidebar.tsx:101", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/Sidebar.tsx:101"}, "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-d92e10638fedf6de", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/DatabaseSwitcher.tsx:86", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/DatabaseSwitcher.tsx:86"}, "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-0d63b2ccea050bdd", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/routes/settings.tsx:164", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/routes/settings.tsx:164"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b15b31e349d7561e", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/routes/_app.dashboards.index.tsx:124", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/routes/_app.dashboards.index.tsx:124"}, "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-3c8e9aef2984e1e9", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/routes/setup.tsx:655", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/routes/setup.tsx:655"}, "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-279efe4b5b8d9181", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/settings/ApiTokensSettings.tsx:129", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/settings/ApiTokensSettings.tsx:129"}, "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-85e6136daa7be365", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/DataSourceCatalog.tsx:151", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/DataSourceCatalog.tsx:151"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-966d32f7dc300144", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/DataSourceDetail.tsx:90", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/DataSourceDetail.tsx:90"}, "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-098588835107c4f3", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/DataSourceRow.tsx:71", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/DataSourceRow.tsx:71"}, "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-5b059d1d3795f19f", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/LocalSyncRows.tsx:159", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/LocalSyncRows.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-a3127dbc52a01b1e", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/RepoPicker.tsx:153", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/RepoPicker.tsx:153"}, "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-920d77dd3c1a1eb7", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/dreaming/RunRow.tsx:78", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/dreaming/RunRow.tsx:78"}, "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-fd49bd6101ff40da", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/dreaming/DreamingPanel.tsx:73", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/dreaming/DreamingPanel.tsx:73"}, "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-3a4b1e77b14a7768", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/dreaming/NodesStrip.tsx:110", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/dreaming/NodesStrip.tsx:110"}, "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-bce8616041dcdec2", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/traces/TracesList.tsx:310", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/traces/TracesList.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-c23b788269005949", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/memory/DreamingStatusCard.tsx:106", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/memory/DreamingStatusCard.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-ba60f74fcaeb03b2", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/credentials/CredentialsList.tsx:57", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/credentials/CredentialsList.tsx:57"}, "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-3c0a707c0165b07f", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/credentials/AddCredentialDialog.tsx:89", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/credentials/AddCredentialDialog.tsx:89"}, "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-ca827592a887a632", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/tabs/TabBar.tsx:37", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/tabs/TabBar.tsx:37"}, "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-b0f420f09619e3aa", "name": "Stray `console.log` in TS/JS \u2014 examples/embed-demo/src/views/DiscoverView.tsx:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/embed-demo/src/views/DiscoverView.tsx:21"}, "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-b0e18f070d5f89ff", "name": "Stray `console.log` in TS/JS \u2014 examples/embed-demo/src/views/DashboardsView.tsx:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/embed-demo/src/views/DashboardsView.tsx:86"}, "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-a9ae5abe5e24e98e", "name": "Stray `console.log` in TS/JS \u2014 examples/embed-demo/src/views/AgentView.tsx:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/embed-demo/src/views/AgentView.tsx:44"}, "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-cb216fd95b84e46d", "name": "Privileged port 10 in use", "shortDescription": {"text": "Privileged port 10 in use"}, "fullDescription": {"text": "Port 10 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-986891c705f0affd", "name": "Privileged port 60 in use", "shortDescription": {"text": "Privileged port 60 in use"}, "fullDescription": {"text": "Port 60 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85aa5baeeb464309", "name": "Privileged port 2 in use", "shortDescription": {"text": "Privileged port 2 in use"}, "fullDescription": {"text": "Port 2 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-63096d90afbba468", "name": "Privileged port 9 in use", "shortDescription": {"text": "Privileged port 9 in use"}, "fullDescription": {"text": "Port 9 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2ad3e82a9670c636", "name": "Privileged port 11 in use", "shortDescription": {"text": "Privileged port 11 in use"}, "fullDescription": {"text": "Port 11 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-17920b41df183665", "name": "Privileged port 12 in use", "shortDescription": {"text": "Privileged port 12 in use"}, "fullDescription": {"text": "Port 12 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-772681171fbb869c", "name": "Privileged port 19 in use", "shortDescription": {"text": "Privileged port 19 in use"}, "fullDescription": {"text": "Port 19 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a81ba4c7f4b79206", "name": "Privileged port 1 in use", "shortDescription": {"text": "Privileged port 1 in use"}, "fullDescription": {"text": "Port 1 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c3a5ed30d6c1eb2c", "name": "Privileged port 30 in use", "shortDescription": {"text": "Privileged port 30 in use"}, "fullDescription": {"text": "Port 30 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f0a4fcde6b423105", "name": "Privileged port 59 in use", "shortDescription": {"text": "Privileged port 59 in use"}, "fullDescription": {"text": "Port 59 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c4e8fd59f24791fb", "name": "Privileged port 15 in use", "shortDescription": {"text": "Privileged port 15 in use"}, "fullDescription": {"text": "Port 15 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5efe36e497b0d1ff", "name": "Privileged port 3 in use", "shortDescription": {"text": "Privileged port 3 in use"}, "fullDescription": {"text": "Port 3 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3fad4f283eec7d6b", "name": "Docker base image is tag-pinned but not digest-pinned: node:24-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:24-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4718d944abc74f7d", "name": "Docker base image is tag-pinned but not digest-pinned: rust:1.84-bookworm", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: rust:1.84-bookworm"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30307771879d30e4", "name": "Docker base image is tag-pinned but not digest-pinned: debian:12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90f3fd630dc65e64", "name": "Possible secret in scripts/fresh-install-validate-k8s.sh", "shortDescription": {"text": "Possible secret in scripts/fresh-install-validate-k8s.sh"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-8e1fc5df05611529", "name": "Possible secret in scripts/validate-k8s-roles.sh", "shortDescription": {"text": "Possible secret in scripts/validate-k8s-roles.sh"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-1f71df5f71c017bf", "name": "Possible secret in crates/kyma-cli/src/deploy.rs", "shortDescription": {"text": "Possible secret in crates/kyma-cli/src/deploy.rs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-34680e2d7759cf7c", "name": "Possible secret in crates/kyma-redact/src/lib.rs", "shortDescription": {"text": "Possible secret in crates/kyma-redact/src/lib.rs"}, "fullDescription": {"text": "Detected pattern matching github_token. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-950f90c3acc90ae9", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f1c5be0ed8c605e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e39fb94ee0371cf", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "docker/setup-buildx-action@v3 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f8553517bc9a9ed7", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e4bee3726f4d0d46", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0763d85002569570", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/deploy-pages@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-14ce8614dd03f409", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-37c04da9d649c973", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "peter-evans/create-pull-request@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c117082744a56c2b", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6589a0e0fe36da29", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "changesets/action@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a94e65244d5be43", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-73b22d23d303a3a0", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46c644c6227e4d4a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "softprops/action-gh-release@v2 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1838a141491ce38c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a40419cb54386e5", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-461256c4f9cfd310", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "pnpm/action-setup@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-347b199f557032b0", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5257aeaa771d7036", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f1901f8b069fb9e4", "name": "Very large file: crates/kyma-cli/src/main.rs (1309 lines)", "shortDescription": {"text": "Very large file: crates/kyma-cli/src/main.rs (1309 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-144dea14ea469aba", "name": "Very large file: crates/kyma-cli/src/deploy.rs (3017 lines)", "shortDescription": {"text": "Very large file: crates/kyma-cli/src/deploy.rs (3017 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-45bee186192b7490", "name": "Very large file: crates/kyma-catalog/src/lib.rs (2632 lines)", "shortDescription": {"text": "Very large file: crates/kyma-catalog/src/lib.rs (2632 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-39a04e8047109103", "name": "Very large file: crates/kyma-datasources/src/github/transform.rs (1677 lines)", "shortDescription": {"text": "Very large file: crates/kyma-datasources/src/github/transform.rs (1677 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-ce0a531aec6ea4bf", "name": "Very large file: crates/kyma-server/src/lib.rs (1483 lines)", "shortDescription": {"text": "Very large file: crates/kyma-server/src/lib.rs (1483 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-792b94c968f925ca", "name": "Very large file: crates/kyma-server/src/graph_handler.rs (1370 lines)", "shortDescription": {"text": "Very large file: crates/kyma-server/src/graph_handler.rs (1370 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-46e2f6b943ea0113", "name": "Very large file: crates/kyma-server/src/agent/memory_tools.rs (1747 lines)", "shortDescription": {"text": "Very large file: crates/kyma-server/src/agent/memory_tools.rs (1747 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-f21a24b185f8b456", "name": "Very large file: crates/kyma-server/src/agent/routes.rs (1896 lines)", "shortDescription": {"text": "Very large file: crates/kyma-server/src/agent/routes.rs (1896 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-dad87b990ada0eda", "name": "Very large file: crates/kyma-server/src/agent/dreaming.rs (1719 lines)", "shortDescription": {"text": "Very large file: crates/kyma-server/src/agent/dreaming.rs (1719 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-1207301dc6b36185", "name": "Very large file: crates/kyma-catalog-sqlite/src/lib.rs (2968 lines)", "shortDescription": {"text": "Very large file: crates/kyma-catalog-sqlite/src/lib.rs (2968 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-7876489b61d50a34", "name": "Very large file: crates/kyma-bin/src/main.rs (1867 lines)", "shortDescription": {"text": "Very large file: crates/kyma-bin/src/main.rs (1867 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-5830adfe5b9bf30b", "name": "Very large file: crates/kyma-core/src/catalog.rs (1514 lines)", "shortDescription": {"text": "Very large file: crates/kyma-core/src/catalog.rs (1514 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-68015b553395f91f", "name": "Very large file: crates/kyma-kql/src/cypher.rs (3272 lines)", "shortDescription": {"text": "Very large file: crates/kyma-kql/src/cypher.rs (3272 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-36b3bdc01771ef29", "name": "Very large file: crates/kyma-kql/src/parser.rs (2597 lines)", "shortDescription": {"text": "Very large file: crates/kyma-kql/src/parser.rs (2597 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-7b88a89167e7312a", "name": "Very large file: crates/kyma-local/src/lib.rs (1204 lines)", "shortDescription": {"text": "Very large file: crates/kyma-local/src/lib.rs (1204 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-3ef1cdb51d8faafc", "name": "Very large file: third_party/arrow-arith-53-patch/src/temporal.rs (2088 lines)", "shortDescription": {"text": "Very large file: third_party/arrow-arith-53-patch/src/temporal.rs (2088 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-f4120d7b165a1f1a", "name": "Very large file: third_party/arrow-arith-53-patch/src/numeric.rs (1523 lines)", "shortDescription": {"text": "Very large file: third_party/arrow-arith-53-patch/src/numeric.rs (1523 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-c9a0774163c3bf8a", "name": "Very large file: third_party/arrow-arith-53-patch/src/aggregate.rs (1704 lines)", "shortDescription": {"text": "Very large file: third_party/arrow-arith-53-patch/src/aggregate.rs (1704 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-721d4b7a989df74a", "name": "Node manifest has dependencies but no lockfile: docs/site/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: docs/site/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1f0c52db7c97cef", "name": "Node manifest has dependencies but no lockfile: packages/client/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/client/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f75585e48a80a595", "name": "Node manifest has dependencies but no lockfile: packages/react/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/react/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f61e9dc22135856f", "name": "Node manifest has dependencies but no lockfile: web/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: web/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac9145b2d1de8e14", "name": "Node manifest has dependencies but no lockfile: examples/embed-demo/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: examples/embed-demo/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 65 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 156 placeholder/mock markers across 64 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-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-d831b9e8b83713f6", "name": "Agent authority lacks a verifier contract: integrations/claude-code/kyma-memory/skills/kyma-memory/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: integrations/claude-code/kyma-memory/skills/kyma-memory/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fee3ba6c875dd356", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/discover-live-smoke.mjs:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/discover-live-smoke.mjs:55"}, "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-5cdebc416a2e8767", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/seed-demo-graph.py:14", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/seed-demo-graph.py:14"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b11aea4e1dd92b40", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/auth.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/auth.ts:50"}, "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-ffb1675a0cce1961", "name": "Commented-code block (5 lines) in packages/client/src/capabilities.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/client/src/capabilities.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b402be8aa2c43a8d", "name": "Commented-code block (6 lines) in packages/client/src/search.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in packages/client/src/search.ts:5"}, "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-b4a114a720099a70", "name": "Commented-code block (5 lines) in packages/client/src/client.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in packages/client/src/client.ts:26"}, "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-c9a651e86390a999", "name": "Commented-code block (5 lines) in packages/client/src/graph-layout.ts:22", "shortDescription": {"text": "Commented-code block (5 lines) in packages/client/src/graph-layout.ts:22"}, "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-0991935beac6f4f4", "name": "Commented-code block (5 lines) in packages/client/src/setup.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/client/src/setup.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fcfb2ea6b4b92b25", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/setup.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/setup.ts:38"}, "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-182eff988ec7ee02", "name": "Commented-code block (6 lines) in packages/client/src/artifacts.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in packages/client/src/artifacts.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0552a547dbe16c19", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/artifacts.ts:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/artifacts.ts:1"}, "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-103e504cd55755a6", "name": "Commented-code block (5 lines) in packages/react/src/index.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in packages/react/src/index.ts:46"}, "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-8dcddb289b911941", "name": "Commented-code block (5 lines) in packages/react/src/internal/vendor-icons.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/react/src/internal/vendor-icons.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd010223fc13032e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/react/src/dashboards/KymaDashboard.stories.tsx:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/react/src/dashboards/KymaDashboard.stories.tsx:39"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a0a2817512fdd6b", "name": "Commented-code block (5 lines) in packages/react/src/discover/useDiscoverSearch.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in packages/react/src/discover/useDiscoverSearch.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b180dc43dee39a7", "name": "Commented-code block (5 lines) in packages/react/src/query/KymaQueryEditor.test.tsx:40", "shortDescription": {"text": "Commented-code block (5 lines) in packages/react/src/query/KymaQueryEditor.test.tsx:40"}, "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-bcd55a9cb6ca5c2e", "name": "Commented-code block (7 lines) in packages/react/src/explore/KymaExplore.tsx:152", "shortDescription": {"text": "Commented-code block (7 lines) in packages/react/src/explore/KymaExplore.tsx:152"}, "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-f38cd6dfcd3746cb", "name": "Commented-code block (7 lines) in packages/react/src/graph/sigma-graph-builder.ts:157", "shortDescription": {"text": "Commented-code block (7 lines) in packages/react/src/graph/sigma-graph-builder.ts:157"}, "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-6524571bbaf6e271", "name": "Commented-code block (8 lines) in packages/react/src/graph/SigmaCanvas.tsx:223", "shortDescription": {"text": "Commented-code block (8 lines) in packages/react/src/graph/SigmaCanvas.tsx:223"}, "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-4d8fa420b3e70f61", "name": "Commented-code block (5 lines) in packages/react/src/graph/GraphCanvas.tsx:218", "shortDescription": {"text": "Commented-code block (5 lines) in packages/react/src/graph/GraphCanvas.tsx:218"}, "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-3f877ebfcd1dd921", "name": "Commented-code block (5 lines) in web/src/routes/_app.data-sources.$id.tsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/routes/_app.data-sources.$id.tsx:7"}, "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-32a3e85de9b26b5b", "name": "Commented-code block (6 lines) in web/src/features/datasources/BrandIcon.tsx:22", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/features/datasources/BrandIcon.tsx:22"}, "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-e9c5c4fe7ecd31e3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/features/traces/useTraces.ts:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/features/traces/useTraces.ts:6"}, "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-0162c71a96fab7c6", "name": "Commented-code block (5 lines) in web/src/features/memory/useMemoryStream.ts:180", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/features/memory/useMemoryStream.ts:180"}, "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-2308841d08df1014", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/features/memory/useMemoryStream.ts:186", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/features/memory/useMemoryStream.ts:186"}, "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-ba3cbcfd50242d3b", "name": "Commented-code block (5 lines) in web/src/features/credentials/CredentialIcon.tsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/features/credentials/CredentialIcon.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-36752829343a1627", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/sdk/dreaming.ts:209", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/sdk/dreaming.ts:209"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f0d4b1ac577d8be3", "name": "Commented-code block (6 lines) in web/src/sdk/supabase.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/sdk/supabase.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ab75c8e0058ffb9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/sdk/review.ts:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/sdk/review.ts: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-a7344a15e493ba90", "name": "Commented-code block (5 lines) in web/e2e/local-mode.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/e2e/local-mode.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f9c33ac7a84adf98", "name": "`fetch()` without try/.catch or AbortSignal \u2014 examples/embed-demo/mint-token-server.mjs:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/embed-demo/mint-token-server.mjs: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-da6593c83ef14f4c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 examples/embed-demo/src/App.tsx:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/embed-demo/src/App.tsx:103"}, "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}}]}}, "automationDetails": {"id": "repobility/19380"}, "properties": {"repository": "shakedaskayo/kyma", "repoUrl": "https://github.com/shakedaskayo/kyma", "branch": "main"}, "results": [{"ruleId": "scanner-0805afd160c41c4a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/dashboards/PanelCard.tsx:38"}, "properties": {"repobilityId": "fe514b793ba299f4", "scanner": "scanner-primary", "fingerprint": "0805afd160c41c4a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c0f28e973fb79404", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/discover/StreamView.tsx:131"}, "properties": {"repobilityId": "9b50aed5547a8d88", "scanner": "scanner-primary", "fingerprint": "c0f28e973fb79404", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-172a326af516d64f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/discover/RowDetailDrawer.tsx:27"}, "properties": {"repobilityId": "3ff3c1a054c3d75e", "scanner": "scanner-primary", "fingerprint": "172a326af516d64f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7c02aacbe60add54", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/discover/FieldStats.tsx:46"}, "properties": {"repobilityId": "d7dedd7c621d2ba7", "scanner": "scanner-primary", "fingerprint": "7c02aacbe60add54", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e71111e920ba3b96", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/query/results/ResultsGrid.tsx:261"}, "properties": {"repobilityId": "92608b3d4dbf9a7c", "scanner": "scanner-primary", "fingerprint": "e71111e920ba3b96", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a1bdd9ca58f69df6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/explore/KymaExplore.tsx:467"}, "properties": {"repobilityId": "1ceb8837f0b31fba", "scanner": "scanner-primary", "fingerprint": "a1bdd9ca58f69df6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b1e9e49574b37418", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/LegendDock.tsx:212"}, "properties": {"repobilityId": "8d865e3f13ab9170", "scanner": "scanner-primary", "fingerprint": "b1e9e49574b37418", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7329f432a6e712de", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/NodeDetailModal.tsx:41"}, "properties": {"repobilityId": "d8ea473b63757f21", "scanner": "scanner-primary", "fingerprint": "7329f432a6e712de", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f2930dcdd630fdcf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/CommandBar.tsx:125"}, "properties": {"repobilityId": "ef588d04b0d98d2b", "scanner": "scanner-primary", "fingerprint": "f2930dcdd630fdcf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1c282bdfbc4c7e9c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/react/src/graph/InspectorPanel.tsx:58"}, "properties": {"repobilityId": "1719f5c739bfa17d", "scanner": "scanner-primary", "fingerprint": "1c282bdfbc4c7e9c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d60d6aa5a1737284", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/shell.tsx:104"}, "properties": {"repobilityId": "d1aa74fe277f2b5f", "scanner": "scanner-primary", "fingerprint": "d60d6aa5a1737284", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ddb4490292be4337", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/Sidebar.tsx:101"}, "properties": {"repobilityId": "d9cec3a80b151e49", "scanner": "scanner-primary", "fingerprint": "ddb4490292be4337", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d92e10638fedf6de", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/app/DatabaseSwitcher.tsx:86"}, "properties": {"repobilityId": "7c57437a49408601", "scanner": "scanner-primary", "fingerprint": "d92e10638fedf6de", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0d63b2ccea050bdd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/routes/settings.tsx:164"}, "properties": {"repobilityId": "31991e9e7d658c33", "scanner": "scanner-primary", "fingerprint": "0d63b2ccea050bdd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b15b31e349d7561e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/routes/_app.dashboards.index.tsx:124"}, "properties": {"repobilityId": "dd931c70491c89fb", "scanner": "scanner-primary", "fingerprint": "b15b31e349d7561e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3c8e9aef2984e1e9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/routes/setup.tsx:655"}, "properties": {"repobilityId": "2bd5a8d73ecdae52", "scanner": "scanner-primary", "fingerprint": "3c8e9aef2984e1e9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-279efe4b5b8d9181", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/settings/ApiTokensSettings.tsx:129"}, "properties": {"repobilityId": "4233cfd588c3c5b6", "scanner": "scanner-primary", "fingerprint": "279efe4b5b8d9181", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-85e6136daa7be365", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/DataSourceCatalog.tsx:151"}, "properties": {"repobilityId": "9fe65101bbb0d4d4", "scanner": "scanner-primary", "fingerprint": "85e6136daa7be365", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-966d32f7dc300144", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/DataSourceDetail.tsx:90"}, "properties": {"repobilityId": "79c7845f767ed61a", "scanner": "scanner-primary", "fingerprint": "966d32f7dc300144", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-098588835107c4f3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/DataSourceRow.tsx:71"}, "properties": {"repobilityId": "a2f8f1ea89cf5bf7", "scanner": "scanner-primary", "fingerprint": "098588835107c4f3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5b059d1d3795f19f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/LocalSyncRows.tsx:159"}, "properties": {"repobilityId": "f915321ccddf7490", "scanner": "scanner-primary", "fingerprint": "5b059d1d3795f19f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a3127dbc52a01b1e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/datasources/RepoPicker.tsx:153"}, "properties": {"repobilityId": "9e96191519ee5a89", "scanner": "scanner-primary", "fingerprint": "a3127dbc52a01b1e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-920d77dd3c1a1eb7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/dreaming/RunRow.tsx:78"}, "properties": {"repobilityId": "e8ec2bc1983ef45f", "scanner": "scanner-primary", "fingerprint": "920d77dd3c1a1eb7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fd49bd6101ff40da", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/dreaming/DreamingPanel.tsx:73"}, "properties": {"repobilityId": "c4551f7b0af3f4db", "scanner": "scanner-primary", "fingerprint": "fd49bd6101ff40da", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3a4b1e77b14a7768", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/dreaming/NodesStrip.tsx:110"}, "properties": {"repobilityId": "3cb9aa9fe0ee655f", "scanner": "scanner-primary", "fingerprint": "3a4b1e77b14a7768", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bce8616041dcdec2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/traces/TracesList.tsx:310"}, "properties": {"repobilityId": "e0d72e3df243f296", "scanner": "scanner-primary", "fingerprint": "bce8616041dcdec2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c23b788269005949", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/memory/DreamingStatusCard.tsx:106"}, "properties": {"repobilityId": "4754fe9605183a58", "scanner": "scanner-primary", "fingerprint": "c23b788269005949", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ba60f74fcaeb03b2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/credentials/CredentialsList.tsx:57"}, "properties": {"repobilityId": "e68f060a7dee91cf", "scanner": "scanner-primary", "fingerprint": "ba60f74fcaeb03b2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3c0a707c0165b07f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/credentials/AddCredentialDialog.tsx:89"}, "properties": {"repobilityId": "6eedd0ae28d6255b", "scanner": "scanner-primary", "fingerprint": "3c0a707c0165b07f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ca827592a887a632", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/features/tabs/TabBar.tsx:37"}, "properties": {"repobilityId": "7f5c3ef979e743fb", "scanner": "scanner-primary", "fingerprint": "ca827592a887a632", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b0f420f09619e3aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/embed-demo/src/views/DiscoverView.tsx:21"}, "properties": {"repobilityId": "8eb147c1e68d3f69", "scanner": "scanner-primary", "fingerprint": "b0f420f09619e3aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0e18f070d5f89ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/embed-demo/src/views/DashboardsView.tsx:86"}, "properties": {"repobilityId": "363f252378aa8467", "scanner": "scanner-primary", "fingerprint": "b0e18f070d5f89ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a9ae5abe5e24e98e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/embed-demo/src/views/AgentView.tsx:44"}, "properties": {"repobilityId": "f4388254dee7a6d1", "scanner": "scanner-primary", "fingerprint": "a9ae5abe5e24e98e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb216fd95b84e46d", "level": "warning", "message": {"text": "Privileged port 10 in use"}, "properties": {"repobilityId": "735372d6b5594915", "scanner": "scanner-primary", "fingerprint": "cb216fd95b84e46d", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-986891c705f0affd", "level": "warning", "message": {"text": "Privileged port 60 in use"}, "properties": {"repobilityId": "f4424efab727024f", "scanner": "scanner-primary", "fingerprint": "986891c705f0affd", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-85aa5baeeb464309", "level": "warning", "message": {"text": "Privileged port 2 in use"}, "properties": {"repobilityId": "755b04866010e843", "scanner": "scanner-primary", "fingerprint": "85aa5baeeb464309", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-63096d90afbba468", "level": "warning", "message": {"text": "Privileged port 9 in use"}, "properties": {"repobilityId": "31590a6ba3409390", "scanner": "scanner-primary", "fingerprint": "63096d90afbba468", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2ad3e82a9670c636", "level": "warning", "message": {"text": "Privileged port 11 in use"}, "properties": {"repobilityId": "5b3038c67fabb4c8", "scanner": "scanner-primary", "fingerprint": "2ad3e82a9670c636", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17920b41df183665", "level": "warning", "message": {"text": "Privileged port 12 in use"}, "properties": {"repobilityId": "65e7eefa33f2def4", "scanner": "scanner-primary", "fingerprint": "17920b41df183665", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-772681171fbb869c", "level": "warning", "message": {"text": "Privileged port 19 in use"}, "properties": {"repobilityId": "a6b5b06deac36eac", "scanner": "scanner-primary", "fingerprint": "772681171fbb869c", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a81ba4c7f4b79206", "level": "warning", "message": {"text": "Privileged port 1 in use"}, "properties": {"repobilityId": "ddf3fa6c29abb8d2", "scanner": "scanner-primary", "fingerprint": "a81ba4c7f4b79206", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/fresh-install-validate-k8s.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c3a5ed30d6c1eb2c", "level": "warning", "message": {"text": "Privileged port 30 in use"}, "properties": {"repobilityId": "54f172e7d16fc662", "scanner": "scanner-primary", "fingerprint": "c3a5ed30d6c1eb2c", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-pushdown.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f0a4fcde6b423105", "level": "warning", "message": {"text": "Privileged port 59 in use"}, "properties": {"repobilityId": "6c14a9dab4958e92", "scanner": "scanner-primary", "fingerprint": "f0a4fcde6b423105", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-pushdown.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c4e8fd59f24791fb", "level": "warning", "message": {"text": "Privileged port 15 in use"}, "properties": {"repobilityId": "3340f9a170f285cd", "scanner": "scanner-primary", "fingerprint": "c4e8fd59f24791fb", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-pushdown.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5efe36e497b0d1ff", "level": "warning", "message": {"text": "Privileged port 3 in use"}, "properties": {"repobilityId": "261b7b1c6a18d412", "scanner": "scanner-primary", "fingerprint": "5efe36e497b0d1ff", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-block-pruning.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3fad4f283eec7d6b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:24-alpine"}, "properties": {"repobilityId": "0f0cfe563751315c", "scanner": "scanner-primary", "fingerprint": "3fad4f283eec7d6b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-4718d944abc74f7d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: rust:1.84-bookworm"}, "properties": {"repobilityId": "97a12ab8e6eafd9d", "scanner": "scanner-primary", "fingerprint": "4718d944abc74f7d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-30307771879d30e4", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:12-slim"}, "properties": {"repobilityId": "d8b53bca60e6ab15", "scanner": "scanner-primary", "fingerprint": "30307771879d30e4", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-90f3fd630dc65e64", "level": "error", "message": {"text": "Possible secret in scripts/fresh-install-validate-k8s.sh"}, "properties": {"repobilityId": "5301ed44e35dad09", "scanner": "scanner-primary", "fingerprint": "90f3fd630dc65e64", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/fresh-install-validate-k8s.sh"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-8e1fc5df05611529", "level": "error", "message": {"text": "Possible secret in scripts/validate-k8s-roles.sh"}, "properties": {"repobilityId": "e2455ed29e272781", "scanner": "scanner-primary", "fingerprint": "8e1fc5df05611529", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/validate-k8s-roles.sh"}, "region": {"startLine": 171}}}]}, {"ruleId": "scanner-1f71df5f71c017bf", "level": "error", "message": {"text": "Possible secret in crates/kyma-cli/src/deploy.rs"}, "properties": {"repobilityId": "3d8ef83f0a328756", "scanner": "scanner-primary", "fingerprint": "1f71df5f71c017bf", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/kyma-cli/src/deploy.rs"}, "region": {"startLine": 2712}}}]}, {"ruleId": "scanner-34680e2d7759cf7c", "level": "error", "message": {"text": "Possible secret in crates/kyma-redact/src/lib.rs"}, "properties": {"repobilityId": "79d971938fa8a50a", "scanner": "scanner-primary", "fingerprint": "34680e2d7759cf7c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/kyma-redact/src/lib.rs"}, "region": {"startLine": 391}}}]}, {"ruleId": "scanner-950f90c3acc90ae9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "71b9e58c8162e1b9", "scanner": "scanner-primary", "fingerprint": "950f90c3acc90ae9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gauntlet-nightly.yml"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-2f1c5be0ed8c605e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8f88c558222e5ec8", "scanner": "scanner-primary", "fingerprint": "2f1c5be0ed8c605e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gauntlet-weekly.yml"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-0e39fb94ee0371cf", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b6176084b676b215", "scanner": "scanner-primary", "fingerprint": "0e39fb94ee0371cf", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-image.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-0e39fb94ee0371cf", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "03268bd7f2f941a3", "scanner": "scanner-primary", "fingerprint": "0e39fb94ee0371cf", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-image.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-0e39fb94ee0371cf", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "49c36eba9ef6c6ad", "scanner": "scanner-primary", "fingerprint": "0e39fb94ee0371cf", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-image.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-0e39fb94ee0371cf", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cd162d86c27de66b", "scanner": "scanner-primary", "fingerprint": "0e39fb94ee0371cf", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-image.yml"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-f8553517bc9a9ed7", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "d3d758c672103464", "scanner": "scanner-primary", "fingerprint": "f8553517bc9a9ed7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-image.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e4bee3726f4d0d46", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "5d47afdb9a081461", "scanner": "scanner-primary", "fingerprint": "e4bee3726f4d0d46", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/infra-plan.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0763d85002569570", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4289fb2fbaf82766", "scanner": "scanner-primary", "fingerprint": "0763d85002569570", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-14ce8614dd03f409", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "81c5c697653f94e8", "scanner": "scanner-primary", "fingerprint": "14ce8614dd03f409", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-37c04da9d649c973", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cfd21d4ea915f631", "scanner": "scanner-primary", "fingerprint": "37c04da9d649c973", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/perf-baseline-capture.yml"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-c117082744a56c2b", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "212452ae1e27d38d", "scanner": "scanner-primary", "fingerprint": "c117082744a56c2b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/perf-baseline-capture.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6589a0e0fe36da29", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1d6fbabfc6f66da4", "scanner": "scanner-primary", "fingerprint": "6589a0e0fe36da29", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/npm-release.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-1a94e65244d5be43", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "192b2aa5de893b57", "scanner": "scanner-primary", "fingerprint": "1a94e65244d5be43", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/npm-release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-73b22d23d303a3a0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8b9618c8de1f941a", "scanner": "scanner-primary", "fingerprint": "73b22d23d303a3a0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/web.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f0dc584a111ffc00", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8a40419cb54386e5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b9820fdb20a41742", "scanner": "scanner-primary", "fingerprint": "8a40419cb54386e5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gauntlet-pr.yml"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e9bb6654e31adad8", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "979070c49cb9afe8", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "84914cb97f88dd3a", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e9bb6654e31adad8", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "979070c49cb9afe8", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "84914cb97f88dd3a", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e467cf8f2ff75d00", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 161}}}]}, {"ruleId": "scanner-347b199f557032b0", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0010d41fe98dc5ef", "scanner": "scanner-primary", "fingerprint": "347b199f557032b0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5257aeaa771d7036", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "57cc82833c5f9b5d", "scanner": "scanner-primary", "fingerprint": "5257aeaa771d7036", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/infra-apply.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f1901f8b069fb9e4", "level": "note", "message": {"text": "Very large file: crates/kyma-cli/src/main.rs (1309 lines)"}, "properties": {"repobilityId": "7fec3d137d856561", "scanner": "scanner-primary", "fingerprint": "f1901f8b069fb9e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-144dea14ea469aba", "level": "note", "message": {"text": "Very large file: crates/kyma-cli/src/deploy.rs (3017 lines)"}, "properties": {"repobilityId": "696257613a3c49a9", "scanner": "scanner-primary", "fingerprint": "144dea14ea469aba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-45bee186192b7490", "level": "note", "message": {"text": "Very large file: crates/kyma-catalog/src/lib.rs (2632 lines)"}, "properties": {"repobilityId": "2f2811f03645a4ab", "scanner": "scanner-primary", "fingerprint": "45bee186192b7490", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-39a04e8047109103", "level": "note", "message": {"text": "Very large file: crates/kyma-datasources/src/github/transform.rs (1677 lines)"}, "properties": {"repobilityId": "7b81cbf0d20d56ea", "scanner": "scanner-primary", "fingerprint": "39a04e8047109103", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ce0a531aec6ea4bf", "level": "note", "message": {"text": "Very large file: crates/kyma-server/src/lib.rs (1483 lines)"}, "properties": {"repobilityId": "4e5248771bbab909", "scanner": "scanner-primary", "fingerprint": "ce0a531aec6ea4bf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-792b94c968f925ca", "level": "note", "message": {"text": "Very large file: crates/kyma-server/src/graph_handler.rs (1370 lines)"}, "properties": {"repobilityId": "8e164c36c5241afc", "scanner": "scanner-primary", "fingerprint": "792b94c968f925ca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-46e2f6b943ea0113", "level": "note", "message": {"text": "Very large file: crates/kyma-server/src/agent/memory_tools.rs (1747 lines)"}, "properties": {"repobilityId": "a968aeb10d2af70c", "scanner": "scanner-primary", "fingerprint": "46e2f6b943ea0113", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f21a24b185f8b456", "level": "note", "message": {"text": "Very large file: crates/kyma-server/src/agent/routes.rs (1896 lines)"}, "properties": {"repobilityId": "4ec09417407fdcd7", "scanner": "scanner-primary", "fingerprint": "f21a24b185f8b456", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dad87b990ada0eda", "level": "note", "message": {"text": "Very large file: crates/kyma-server/src/agent/dreaming.rs (1719 lines)"}, "properties": {"repobilityId": "9e1f0e2e31672e4f", "scanner": "scanner-primary", "fingerprint": "dad87b990ada0eda", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1207301dc6b36185", "level": "note", "message": {"text": "Very large file: crates/kyma-catalog-sqlite/src/lib.rs (2968 lines)"}, "properties": {"repobilityId": "eafc49d395c75bf2", "scanner": "scanner-primary", "fingerprint": "1207301dc6b36185", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7876489b61d50a34", "level": "note", "message": {"text": "Very large file: crates/kyma-bin/src/main.rs (1867 lines)"}, "properties": {"repobilityId": "a890d6a74370bbfa", "scanner": "scanner-primary", "fingerprint": "7876489b61d50a34", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5830adfe5b9bf30b", "level": "note", "message": {"text": "Very large file: crates/kyma-core/src/catalog.rs (1514 lines)"}, "properties": {"repobilityId": "ed7e7c79d5387e6f", "scanner": "scanner-primary", "fingerprint": "5830adfe5b9bf30b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-68015b553395f91f", "level": "note", "message": {"text": "Very large file: crates/kyma-kql/src/cypher.rs (3272 lines)"}, "properties": {"repobilityId": "6938b53f582cddb9", "scanner": "scanner-primary", "fingerprint": "68015b553395f91f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-36b3bdc01771ef29", "level": "note", "message": {"text": "Very large file: crates/kyma-kql/src/parser.rs (2597 lines)"}, "properties": {"repobilityId": "1cf26247a0c8e703", "scanner": "scanner-primary", "fingerprint": "36b3bdc01771ef29", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7b88a89167e7312a", "level": "note", "message": {"text": "Very large file: crates/kyma-local/src/lib.rs (1204 lines)"}, "properties": {"repobilityId": "677d0e7dd85b0e4b", "scanner": "scanner-primary", "fingerprint": "7b88a89167e7312a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ef1cdb51d8faafc", "level": "note", "message": {"text": "Very large file: third_party/arrow-arith-53-patch/src/temporal.rs (2088 lines)"}, "properties": {"repobilityId": "4c0f1f1c8c5c8849", "scanner": "scanner-primary", "fingerprint": "3ef1cdb51d8faafc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f4120d7b165a1f1a", "level": "note", "message": {"text": "Very large file: third_party/arrow-arith-53-patch/src/numeric.rs (1523 lines)"}, "properties": {"repobilityId": "5c2cbfc7e272a2f8", "scanner": "scanner-primary", "fingerprint": "f4120d7b165a1f1a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c9a0774163c3bf8a", "level": "note", "message": {"text": "Very large file: third_party/arrow-arith-53-patch/src/aggregate.rs (1704 lines)"}, "properties": {"repobilityId": "d8671e27aad27117", "scanner": "scanner-primary", "fingerprint": "c9a0774163c3bf8a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-721d4b7a989df74a", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: docs/site/package.json"}, "properties": {"repobilityId": "32b42a318be992d9", "scanner": "scanner-primary", "fingerprint": "721d4b7a989df74a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/site/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f1f0c52db7c97cef", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/client/package.json"}, "properties": {"repobilityId": "708197ec3b624f59", "scanner": "scanner-primary", "fingerprint": "f1f0c52db7c97cef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/client/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f75585e48a80a595", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/react/package.json"}, "properties": {"repobilityId": "280ebcdfd6337c69", "scanner": "scanner-primary", "fingerprint": "f75585e48a80a595", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/react/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f61e9dc22135856f", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: web/package.json"}, "properties": {"repobilityId": "dd661d63588916a7", "scanner": "scanner-primary", "fingerprint": "f61e9dc22135856f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ac9145b2d1de8e14", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: examples/embed-demo/package.json"}, "properties": {"repobilityId": "8b5b5ac0708e3e33", "scanner": "scanner-primary", "fingerprint": "ac9145b2d1de8e14", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/embed-demo/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "e447a20b7a74de09", "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": "b28e62b59e63407a", "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": "3160765073c40798", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "21688afc725376f6", "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": "22c7dbb6105f5560", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-d831b9e8b83713f6", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: integrations/claude-code/kyma-memory/skills/kyma-memory/SKILL.md"}, "properties": {"repobilityId": "e873f76eb8a62577", "scanner": "scanner-primary", "fingerprint": "d831b9e8b83713f6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "integrations/claude-code/kyma-memory/skills/kyma-memory/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fee3ba6c875dd356", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/discover-live-smoke.mjs:55"}, "properties": {"repobilityId": "1272ba9a8f41dc74", "scanner": "scanner-primary", "fingerprint": "fee3ba6c875dd356", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5cdebc416a2e8767", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/seed-demo-graph.py:14"}, "properties": {"repobilityId": "6da8ba67ebd73be6", "scanner": "scanner-primary", "fingerprint": "5cdebc416a2e8767", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b11aea4e1dd92b40", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/auth.ts:50"}, "properties": {"repobilityId": "b4689184daa72011", "scanner": "scanner-primary", "fingerprint": "b11aea4e1dd92b40", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ffb1675a0cce1961", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/client/src/capabilities.ts:3"}, "properties": {"repobilityId": "020bcd1428e3222f", "scanner": "scanner-primary", "fingerprint": "ffb1675a0cce1961", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b402be8aa2c43a8d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/client/src/search.ts:5"}, "properties": {"repobilityId": "b98651f8de9101db", "scanner": "scanner-primary", "fingerprint": "b402be8aa2c43a8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4a114a720099a70", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/client/src/client.ts:26"}, "properties": {"repobilityId": "1db3bff49b66242f", "scanner": "scanner-primary", "fingerprint": "b4a114a720099a70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9a651e86390a999", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/client/src/graph-layout.ts:22"}, "properties": {"repobilityId": "d5ef6296a0ca162a", "scanner": "scanner-primary", "fingerprint": "c9a651e86390a999", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0991935beac6f4f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/client/src/setup.ts:1"}, "properties": {"repobilityId": "d0b63c6d26f34554", "scanner": "scanner-primary", "fingerprint": "0991935beac6f4f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcfb2ea6b4b92b25", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/setup.ts:38"}, "properties": {"repobilityId": "cb8760fc57f523ca", "scanner": "scanner-primary", "fingerprint": "fcfb2ea6b4b92b25", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-182eff988ec7ee02", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/client/src/artifacts.ts:1"}, "properties": {"repobilityId": "ed6cd80b39071be3", "scanner": "scanner-primary", "fingerprint": "182eff988ec7ee02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0552a547dbe16c19", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/artifacts.ts:1"}, "properties": {"repobilityId": "01469b81bd2837d0", "scanner": "scanner-primary", "fingerprint": "0552a547dbe16c19", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-103e504cd55755a6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/react/src/index.ts:46"}, "properties": {"repobilityId": "eda5f6bb15e29943", "scanner": "scanner-primary", "fingerprint": "103e504cd55755a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8dcddb289b911941", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/react/src/internal/vendor-icons.tsx:1"}, "properties": {"repobilityId": "3e33b529bf4eedf3", "scanner": "scanner-primary", "fingerprint": "8dcddb289b911941", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd010223fc13032e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/react/src/dashboards/KymaDashboard.stories.tsx:39"}, "properties": {"repobilityId": "26573691f0d0f5fe", "scanner": "scanner-primary", "fingerprint": "fd010223fc13032e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8a0a2817512fdd6b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/react/src/discover/useDiscoverSearch.ts:4"}, "properties": {"repobilityId": "65b0f91e51d057f8", "scanner": "scanner-primary", "fingerprint": "8a0a2817512fdd6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b180dc43dee39a7", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/react/src/query/KymaQueryEditor.test.tsx:40"}, "properties": {"repobilityId": "308963d7c631474d", "scanner": "scanner-primary", "fingerprint": "5b180dc43dee39a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bcd55a9cb6ca5c2e", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/react/src/explore/KymaExplore.tsx:152"}, "properties": {"repobilityId": "b2c2ed37fec73849", "scanner": "scanner-primary", "fingerprint": "bcd55a9cb6ca5c2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f38cd6dfcd3746cb", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/react/src/graph/sigma-graph-builder.ts:157"}, "properties": {"repobilityId": "f14776ca0e6415f8", "scanner": "scanner-primary", "fingerprint": "f38cd6dfcd3746cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6524571bbaf6e271", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/react/src/graph/SigmaCanvas.tsx:223"}, "properties": {"repobilityId": "ae5021cb07a7c06b", "scanner": "scanner-primary", "fingerprint": "6524571bbaf6e271", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d8fa420b3e70f61", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/react/src/graph/GraphCanvas.tsx:218"}, "properties": {"repobilityId": "3575480cb4e5ba1e", "scanner": "scanner-primary", "fingerprint": "4d8fa420b3e70f61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f877ebfcd1dd921", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/routes/_app.data-sources.$id.tsx:7"}, "properties": {"repobilityId": "eb3f17e9030a2db8", "scanner": "scanner-primary", "fingerprint": "3f877ebfcd1dd921", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32a3e85de9b26b5b", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/features/datasources/BrandIcon.tsx:22"}, "properties": {"repobilityId": "9c1dfbc30d301bcb", "scanner": "scanner-primary", "fingerprint": "32a3e85de9b26b5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9c5c4fe7ecd31e3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/features/traces/useTraces.ts:6"}, "properties": {"repobilityId": "9ae210041d858b67", "scanner": "scanner-primary", "fingerprint": "e9c5c4fe7ecd31e3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0162c71a96fab7c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/features/memory/useMemoryStream.ts:180"}, "properties": {"repobilityId": "615efc69d08ca7ee", "scanner": "scanner-primary", "fingerprint": "0162c71a96fab7c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2308841d08df1014", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/features/memory/useMemoryStream.ts:186"}, "properties": {"repobilityId": "8c4eefa19dfed41d", "scanner": "scanner-primary", "fingerprint": "2308841d08df1014", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba3cbcfd50242d3b", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/features/credentials/CredentialIcon.tsx:4"}, "properties": {"repobilityId": "7a6bff66f50f2e87", "scanner": "scanner-primary", "fingerprint": "ba3cbcfd50242d3b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36752829343a1627", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/sdk/dreaming.ts:209"}, "properties": {"repobilityId": "574a45b66a189229", "scanner": "scanner-primary", "fingerprint": "36752829343a1627", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f0d4b1ac577d8be3", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/sdk/supabase.ts:3"}, "properties": {"repobilityId": "6c04ed7d55b2a6c7", "scanner": "scanner-primary", "fingerprint": "f0d4b1ac577d8be3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ab75c8e0058ffb9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/sdk/review.ts:90"}, "properties": {"repobilityId": "b44836d7e46df60b", "scanner": "scanner-primary", "fingerprint": "2ab75c8e0058ffb9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a7344a15e493ba90", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/e2e/local-mode.spec.ts:3"}, "properties": {"repobilityId": "ab261bab69e3065e", "scanner": "scanner-primary", "fingerprint": "a7344a15e493ba90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9c33ac7a84adf98", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/embed-demo/mint-token-server.mjs:57"}, "properties": {"repobilityId": "15f3b58de0bcb9d2", "scanner": "scanner-primary", "fingerprint": "f9c33ac7a84adf98", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da6593c83ef14f4c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/embed-demo/src/App.tsx:103"}, "properties": {"repobilityId": "9765c78b0b53b1f9", "scanner": "scanner-primary", "fingerprint": "da6593c83ef14f4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}