{"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-499b0ad8d15bd084", "name": "Possible secret in packages/bff/test/bff.test.ts", "shortDescription": {"text": "Possible secret in packages/bff/test/bff.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-62447fea299f9ce6", "name": "Possible secret in packages/bff/test/authoring.test.ts", "shortDescription": {"text": "Possible secret in packages/bff/test/authoring.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-0bed771d4534b28e", "name": "Insecure pattern 'direct_innerhtml_assignment' in packages/web/dev/main.ts:20", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/web/dev/main.ts:20"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28966a56dd614471", "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-bea4cdf7eab02eb5", "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-080c0114017c0a20", "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-fe6fddbe1d1fba34", "name": "Node manifest has dependencies but no lockfile: packages/bff/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/bff/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-a28850983a0b02d5", "name": "Node manifest has dependencies but no lockfile: packages/web/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/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-3e0c5b18b8dec2a1", "name": "Node manifest has dependencies but no lockfile: packages/contract/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/contract/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-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-cd00827240490868", "name": "Commented-code block (8 lines) in packages/bff/src/index.ts:59", "shortDescription": {"text": "Commented-code block (8 lines) in packages/bff/src/index.ts:59"}, "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-53348380a0242b71", "name": "Commented-code block (5 lines) in packages/bff/src/types.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in packages/bff/src/types.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-d70f83bf0b83c589", "name": "Commented-code block (6 lines) in packages/web/vite.config.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web/vite.config.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-3e826e9f564235c4", "name": "Commented-code block (10 lines) in packages/web/src/modelCatalog.ts:4", "shortDescription": {"text": "Commented-code block (10 lines) in packages/web/src/modelCatalog.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-24cb9407d2e51143", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web/src/api.ts:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web/src/api.ts:93"}, "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-dbf59d41a653d4b0", "name": "Commented-code block (5 lines) in packages/web/src/theme.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web/src/theme.ts: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-1cecaa394fac6c6f", "name": "Commented-code block (5 lines) in packages/web/src/detail.tsx:97", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web/src/detail.tsx:97"}, "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-7a1cf1613dd1cf42", "name": "Legacy-named symbol `sk_copy` in packages/web/test/component.test.tsx:149", "shortDescription": {"text": "Legacy-named symbol `sk_copy` in packages/web/test/component.test.tsx:149"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d13897be85ba3ee0", "name": "Commented-code block (6 lines) in packages/contract/src/skills.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in packages/contract/src/skills.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-dcbaaff448888ec3", "name": "Commented-code block (5 lines) in packages/contract/src/routes.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/contract/src/routes.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-7a3e1ca5440fe83a", "name": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:82)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:82)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:82` calls `GET /skills/sk_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9a731950e02af603", "name": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:98)", "shortDescription": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:98)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:98` calls `PATCH /skills/sk_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7ce907cfa963b70", "name": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:116)", "shortDescription": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:116)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:116` calls `PATCH /skills/sk_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-80a2f8db5f096f3a", "name": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:129)", "shortDescription": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:129)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:129` calls `PATCH /skills/sk_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f7d1dd4f491674a", "name": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:142)", "shortDescription": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:142)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:142` calls `PATCH /skills/sk_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e888fcc681b8a2c8", "name": "Dangling fetch: GET /skills/sk_9 (packages/bff/test/bff.test.ts:180)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_9 (packages/bff/test/bff.test.ts:180)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:180` calls `GET /skills/sk_9` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_9`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bb20f0e63e87716b", "name": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:197)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:197)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:197` calls `GET /skills/sk_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c33fc203abef8754", "name": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:226)", "shortDescription": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:226)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:226` calls `PATCH /skills/sk_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9b5e83444c50e74", "name": "Dangling fetch: GET /skills/sk_x (packages/bff/test/bff.test.ts:246)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_x (packages/bff/test/bff.test.ts:246)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:246` calls `GET /skills/sk_x` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_x`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4920749fd5f5263e", "name": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:270)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:270)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:270` calls `GET /skills/sk_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6915fa250b5cbe3a", "name": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:291)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:291)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:291` calls `GET /skills/sk_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-256052d69c19d9f5", "name": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:407)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:407)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:407` calls `GET /skills/sk_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf453cc4e69bbded", "name": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:408)", "shortDescription": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:408)"}, "fullDescription": {"text": "`packages/bff/test/bff.test.ts:408` calls `PATCH /skills/sk_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d1fae25ae40cb903", "name": "Dangling fetch: DELETE /skills/sk_parent/attached-skills/sk_child (packages/bff/test/authoring.test.ts:260)", "shortDescription": {"text": "Dangling fetch: DELETE /skills/sk_parent/attached-skills/sk_child (packages/bff/test/authoring.test.ts:260)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:260` calls `DELETE /skills/sk_parent/attached-skills/sk_child` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_parent/attached-skills/sk_child`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e2b54d2630da060", "name": "Dangling fetch: GET /skills/sk_parent/attached-skills (packages/bff/test/authoring.test.ts:271)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_parent/attached-skills (packages/bff/test/authoring.test.ts:271)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:271` calls `GET /skills/sk_parent/attached-skills` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_parent/attached-skills`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c569cbf322f95562", "name": "Dangling fetch: GET /skills/sk_1/tools (packages/bff/test/authoring.test.ts:282)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1/tools (packages/bff/test/authoring.test.ts:282)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:282` calls `GET /skills/sk_1/tools` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/tools`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bfa9482e3ecc0191", "name": "Dangling fetch: DELETE /skills/sk_1/tools/tl_x (packages/bff/test/authoring.test.ts:315)", "shortDescription": {"text": "Dangling fetch: DELETE /skills/sk_1/tools/tl_x (packages/bff/test/authoring.test.ts:315)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:315` calls `DELETE /skills/sk_1/tools/tl_x` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/tools/tl_x`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d4a18e29835cc77", "name": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:330)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:330)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:330` calls `GET /skills/sk_1/parameters` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/parameters`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1976947912ef8a7d", "name": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:338)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:338)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:338` calls `GET /skills/sk_1/parameters` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/parameters`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7189f7442495325e", "name": "Dangling fetch: DELETE /skills/sk_1/attached-skills/sk_2 (packages/bff/test/authoring.test.ts:400)", "shortDescription": {"text": "Dangling fetch: DELETE /skills/sk_1/attached-skills/sk_2 (packages/bff/test/authoring.test.ts:400)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:400` calls `DELETE /skills/sk_1/attached-skills/sk_2` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/attached-skills/sk_2`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ddbd51ddb2eabd1e", "name": "Dangling fetch: DELETE /skills/sk_1/tools/tl_1 (packages/bff/test/authoring.test.ts:402)", "shortDescription": {"text": "Dangling fetch: DELETE /skills/sk_1/tools/tl_1 (packages/bff/test/authoring.test.ts:402)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:402` calls `DELETE /skills/sk_1/tools/tl_1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/tools/tl_1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-806d5e3377f36b3e", "name": "Dangling fetch: GET /skills/sk_1/tools (packages/bff/test/authoring.test.ts:403)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1/tools (packages/bff/test/authoring.test.ts:403)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:403` calls `GET /skills/sk_1/tools` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/tools`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-76296c5b1fa92573", "name": "Dangling fetch: GET /skills/sk_1/attached-skills (packages/bff/test/authoring.test.ts:404)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1/attached-skills (packages/bff/test/authoring.test.ts:404)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:404` calls `GET /skills/sk_1/attached-skills` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/attached-skills`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-595c80300da5bce4", "name": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:405)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:405)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:405` calls `GET /skills/sk_1/parameters` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/parameters`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c0025ff2b6c99b7b", "name": "Dangling fetch: DELETE /skills/sk_p/attached-skills/sk_c (packages/bff/test/authoring.test.ts:414)", "shortDescription": {"text": "Dangling fetch: DELETE /skills/sk_p/attached-skills/sk_c (packages/bff/test/authoring.test.ts:414)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:414` calls `DELETE /skills/sk_p/attached-skills/sk_c` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_p/attached-skills/sk_c`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-46897f544c9df018", "name": "Dangling fetch: DELETE /skills/sk_p/tools/tl_c (packages/bff/test/authoring.test.ts:421)", "shortDescription": {"text": "Dangling fetch: DELETE /skills/sk_p/tools/tl_c (packages/bff/test/authoring.test.ts:421)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:421` calls `DELETE /skills/sk_p/tools/tl_c` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_p/tools/tl_c`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f2c1a3c7cf9bcff1", "name": "Dangling fetch: GET /skills/sk_1/attached-skills (packages/bff/test/authoring.test.ts:493)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1/attached-skills (packages/bff/test/authoring.test.ts:493)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:493` calls `GET /skills/sk_1/attached-skills` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/attached-skills`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ecc99193e95c77c", "name": "Dangling fetch: GET /skills/sk_1/tools (packages/bff/test/authoring.test.ts:494)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1/tools (packages/bff/test/authoring.test.ts:494)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:494` calls `GET /skills/sk_1/tools` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/tools`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0665f9ccc136ce98", "name": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:495)", "shortDescription": {"text": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:495)"}, "fullDescription": {"text": "`packages/bff/test/authoring.test.ts:495` calls `GET /skills/sk_1/parameters` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/sk_1/parameters`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24475"}, "properties": {"repository": "baobox-ai/baobox-skill-studio", "repoUrl": "https://github.com/baobox-ai/baobox-skill-studio", "branch": "main"}, "results": [{"ruleId": "scanner-499b0ad8d15bd084", "level": "error", "message": {"text": "Possible secret in packages/bff/test/bff.test.ts"}, "properties": {"repobilityId": "60d4aa03f3f2babc", "scanner": "scanner-primary", "fingerprint": "499b0ad8d15bd084", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/bff/test/bff.test.ts"}, "region": {"startLine": 278}}}]}, {"ruleId": "scanner-62447fea299f9ce6", "level": "error", "message": {"text": "Possible secret in packages/bff/test/authoring.test.ts"}, "properties": {"repobilityId": "2fd342f5b3bf1291", "scanner": "scanner-primary", "fingerprint": "62447fea299f9ce6", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/bff/test/authoring.test.ts"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-62447fea299f9ce6", "level": "error", "message": {"text": "Possible secret in packages/bff/test/authoring.test.ts"}, "properties": {"repobilityId": "2fd342f5b3bf1291", "scanner": "scanner-primary", "fingerprint": "62447fea299f9ce6", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/bff/test/authoring.test.ts"}, "region": {"startLine": 469}}}]}, {"ruleId": "scanner-0bed771d4534b28e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/web/dev/main.ts:20"}, "properties": {"repobilityId": "ec68f527afbc9682", "scanner": "scanner-primary", "fingerprint": "0bed771d4534b28e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web/dev/main.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-28966a56dd614471", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "55198ca9d8709f77", "scanner": "scanner-primary", "fingerprint": "28966a56dd614471", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish-bff.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bea4cdf7eab02eb5", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "48843bab82963604", "scanner": "scanner-primary", "fingerprint": "bea4cdf7eab02eb5", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish-web.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-080c0114017c0a20", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "d9976ca783ad1005", "scanner": "scanner-primary", "fingerprint": "080c0114017c0a20", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish-contract.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fe6fddbe1d1fba34", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/bff/package.json"}, "properties": {"repobilityId": "238be4dfa6f263f6", "scanner": "scanner-primary", "fingerprint": "fe6fddbe1d1fba34", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/bff/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a28850983a0b02d5", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/web/package.json"}, "properties": {"repobilityId": "8f313f0fe526a925", "scanner": "scanner-primary", "fingerprint": "a28850983a0b02d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3e0c5b18b8dec2a1", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/contract/package.json"}, "properties": {"repobilityId": "20bb5045777e7e1b", "scanner": "scanner-primary", "fingerprint": "3e0c5b18b8dec2a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/contract/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "503a647972444010", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-cd00827240490868", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/bff/src/index.ts:59"}, "properties": {"repobilityId": "4b367f289d65c6e0", "scanner": "scanner-primary", "fingerprint": "cd00827240490868", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53348380a0242b71", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/bff/src/types.ts:4"}, "properties": {"repobilityId": "75f7857845c4877c", "scanner": "scanner-primary", "fingerprint": "53348380a0242b71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d70f83bf0b83c589", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web/vite.config.ts:4"}, "properties": {"repobilityId": "59b32eaa96d78a2e", "scanner": "scanner-primary", "fingerprint": "d70f83bf0b83c589", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e826e9f564235c4", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/web/src/modelCatalog.ts:4"}, "properties": {"repobilityId": "6aaae634e765c55b", "scanner": "scanner-primary", "fingerprint": "3e826e9f564235c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24cb9407d2e51143", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web/src/api.ts:93"}, "properties": {"repobilityId": "5a975134b2c885d8", "scanner": "scanner-primary", "fingerprint": "24cb9407d2e51143", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dbf59d41a653d4b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web/src/theme.ts:7"}, "properties": {"repobilityId": "14fdde77b70decb5", "scanner": "scanner-primary", "fingerprint": "dbf59d41a653d4b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1cecaa394fac6c6f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web/src/detail.tsx:97"}, "properties": {"repobilityId": "808a45832370f0b6", "scanner": "scanner-primary", "fingerprint": "1cecaa394fac6c6f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a1cf1613dd1cf42", "level": "note", "message": {"text": "Legacy-named symbol `sk_copy` in packages/web/test/component.test.tsx:149"}, "properties": {"repobilityId": "20d4d7294c161e86", "scanner": "scanner-primary", "fingerprint": "7a1cf1613dd1cf42", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d13897be85ba3ee0", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/contract/src/skills.ts:4"}, "properties": {"repobilityId": "3815f6f759c265bd", "scanner": "scanner-primary", "fingerprint": "d13897be85ba3ee0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcbaaff448888ec3", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/contract/src/routes.ts:1"}, "properties": {"repobilityId": "80de886d2a5b7728", "scanner": "scanner-primary", "fingerprint": "dcbaaff448888ec3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a3e1ca5440fe83a", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:82)"}, "properties": {"repobilityId": "b31351de9114a679", "scanner": "scanner-primary", "fingerprint": "7a3e1ca5440fe83a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9a731950e02af603", "level": "error", "message": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:98)"}, "properties": {"repobilityId": "f397762ecb7b3175", "scanner": "scanner-primary", "fingerprint": "9a731950e02af603", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a7ce907cfa963b70", "level": "error", "message": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:116)"}, "properties": {"repobilityId": "9340182422110887", "scanner": "scanner-primary", "fingerprint": "a7ce907cfa963b70", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-80a2f8db5f096f3a", "level": "error", "message": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:129)"}, "properties": {"repobilityId": "826e213a83f8d4f0", "scanner": "scanner-primary", "fingerprint": "80a2f8db5f096f3a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7f7d1dd4f491674a", "level": "error", "message": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:142)"}, "properties": {"repobilityId": "6df8d127c76e6b28", "scanner": "scanner-primary", "fingerprint": "7f7d1dd4f491674a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e888fcc681b8a2c8", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_9 (packages/bff/test/bff.test.ts:180)"}, "properties": {"repobilityId": "150dceec9ba305c5", "scanner": "scanner-primary", "fingerprint": "e888fcc681b8a2c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bb20f0e63e87716b", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:197)"}, "properties": {"repobilityId": "d433ad6a90da932d", "scanner": "scanner-primary", "fingerprint": "bb20f0e63e87716b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c33fc203abef8754", "level": "error", "message": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:226)"}, "properties": {"repobilityId": "184f8bed40ad55f9", "scanner": "scanner-primary", "fingerprint": "c33fc203abef8754", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c9b5e83444c50e74", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_x (packages/bff/test/bff.test.ts:246)"}, "properties": {"repobilityId": "515ec49dcfb90df7", "scanner": "scanner-primary", "fingerprint": "c9b5e83444c50e74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4920749fd5f5263e", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:270)"}, "properties": {"repobilityId": "ed0b2fdab8dbbeaf", "scanner": "scanner-primary", "fingerprint": "4920749fd5f5263e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6915fa250b5cbe3a", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:291)"}, "properties": {"repobilityId": "ab043e699adfb468", "scanner": "scanner-primary", "fingerprint": "6915fa250b5cbe3a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-256052d69c19d9f5", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1 (packages/bff/test/bff.test.ts:407)"}, "properties": {"repobilityId": "80ffef1c151a4f24", "scanner": "scanner-primary", "fingerprint": "256052d69c19d9f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cf453cc4e69bbded", "level": "error", "message": {"text": "Dangling fetch: PATCH /skills/sk_1 (packages/bff/test/bff.test.ts:408)"}, "properties": {"repobilityId": "0150b03b58a5ce32", "scanner": "scanner-primary", "fingerprint": "cf453cc4e69bbded", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d1fae25ae40cb903", "level": "error", "message": {"text": "Dangling fetch: DELETE /skills/sk_parent/attached-skills/sk_child (packages/bff/test/authoring.test.ts:260)"}, "properties": {"repobilityId": "7d122812dcd00b82", "scanner": "scanner-primary", "fingerprint": "d1fae25ae40cb903", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9e2b54d2630da060", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_parent/attached-skills (packages/bff/test/authoring.test.ts:271)"}, "properties": {"repobilityId": "28b84678bd5c911a", "scanner": "scanner-primary", "fingerprint": "9e2b54d2630da060", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c569cbf322f95562", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1/tools (packages/bff/test/authoring.test.ts:282)"}, "properties": {"repobilityId": "cfed70b3fe035655", "scanner": "scanner-primary", "fingerprint": "c569cbf322f95562", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bfa9482e3ecc0191", "level": "error", "message": {"text": "Dangling fetch: DELETE /skills/sk_1/tools/tl_x (packages/bff/test/authoring.test.ts:315)"}, "properties": {"repobilityId": "9d11f0182c2f67e6", "scanner": "scanner-primary", "fingerprint": "bfa9482e3ecc0191", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2d4a18e29835cc77", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:330)"}, "properties": {"repobilityId": "fbb2211a7483682e", "scanner": "scanner-primary", "fingerprint": "2d4a18e29835cc77", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1976947912ef8a7d", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:338)"}, "properties": {"repobilityId": "dec16fe7fc45cc33", "scanner": "scanner-primary", "fingerprint": "1976947912ef8a7d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7189f7442495325e", "level": "error", "message": {"text": "Dangling fetch: DELETE /skills/sk_1/attached-skills/sk_2 (packages/bff/test/authoring.test.ts:400)"}, "properties": {"repobilityId": "66421ad81425f5f5", "scanner": "scanner-primary", "fingerprint": "7189f7442495325e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ddbd51ddb2eabd1e", "level": "error", "message": {"text": "Dangling fetch: DELETE /skills/sk_1/tools/tl_1 (packages/bff/test/authoring.test.ts:402)"}, "properties": {"repobilityId": "554034c351da4be1", "scanner": "scanner-primary", "fingerprint": "ddbd51ddb2eabd1e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-806d5e3377f36b3e", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1/tools (packages/bff/test/authoring.test.ts:403)"}, "properties": {"repobilityId": "658a49f6000f0b65", "scanner": "scanner-primary", "fingerprint": "806d5e3377f36b3e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-76296c5b1fa92573", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1/attached-skills (packages/bff/test/authoring.test.ts:404)"}, "properties": {"repobilityId": "7d87d915bbe714bf", "scanner": "scanner-primary", "fingerprint": "76296c5b1fa92573", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-595c80300da5bce4", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:405)"}, "properties": {"repobilityId": "3dce2063702ab632", "scanner": "scanner-primary", "fingerprint": "595c80300da5bce4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c0025ff2b6c99b7b", "level": "error", "message": {"text": "Dangling fetch: DELETE /skills/sk_p/attached-skills/sk_c (packages/bff/test/authoring.test.ts:414)"}, "properties": {"repobilityId": "0526272088023920", "scanner": "scanner-primary", "fingerprint": "c0025ff2b6c99b7b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-46897f544c9df018", "level": "error", "message": {"text": "Dangling fetch: DELETE /skills/sk_p/tools/tl_c (packages/bff/test/authoring.test.ts:421)"}, "properties": {"repobilityId": "1504ac47ba3e704f", "scanner": "scanner-primary", "fingerprint": "46897f544c9df018", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f2c1a3c7cf9bcff1", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1/attached-skills (packages/bff/test/authoring.test.ts:493)"}, "properties": {"repobilityId": "ad70d3fe3d8311f9", "scanner": "scanner-primary", "fingerprint": "f2c1a3c7cf9bcff1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4ecc99193e95c77c", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1/tools (packages/bff/test/authoring.test.ts:494)"}, "properties": {"repobilityId": "767e3a37ab72cb15", "scanner": "scanner-primary", "fingerprint": "4ecc99193e95c77c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0665f9ccc136ce98", "level": "error", "message": {"text": "Dangling fetch: GET /skills/sk_1/parameters (packages/bff/test/authoring.test.ts:495)"}, "properties": {"repobilityId": "1ccda33b38e07324", "scanner": "scanner-primary", "fingerprint": "0665f9ccc136ce98", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}]}]}