{"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-dd3adbf11277be9c", "name": "Possibly dead Python function: task", "shortDescription": {"text": "Possibly dead Python function: task"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-34656014b59d7611", "name": "Possibly dead Python function: sketch_prompt", "shortDescription": {"text": "Possibly dead Python function: sketch_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6d89664977df251f", "name": "Possibly dead Python function: sketch_multi_prompt", "shortDescription": {"text": "Possibly dead Python function: sketch_multi_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44751794316477e5", "name": "Possibly dead Python function: rendering3d_prompt", "shortDescription": {"text": "Possibly dead Python function: rendering3d_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-888dc620132ddbd3", "name": "Possibly dead Python function: wearing_prompt", "shortDescription": {"text": "Possibly dead Python function: wearing_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0eda6697dde461ac", "name": "Possibly dead Python function: material_break_prompt", "shortDescription": {"text": "Possibly dead Python function: material_break_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c1234079da428cb8", "name": "Possibly dead Python function: moodboard_prompt", "shortDescription": {"text": "Possibly dead Python function: moodboard_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e579a2f7d951ac3", "name": "Possibly dead Python function: color_dna_prompt", "shortDescription": {"text": "Possibly dead Python function: color_dna_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be6fae757487068f", "name": "Possibly dead Python function: cad3d_prompt", "shortDescription": {"text": "Possibly dead Python function: cad3d_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c58784c69fdc411f", "name": "Possibly dead Python function: hero_prompt", "shortDescription": {"text": "Possibly dead Python function: hero_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-77b16adb5c73d160", "name": "Possibly dead Python function: wrist_neck_prompt", "shortDescription": {"text": "Possibly dead Python function: wrist_neck_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd538c1bc67da895", "name": "Possibly dead Python function: gem_cut_detail_prompt", "shortDescription": {"text": "Possibly dead Python function: gem_cut_detail_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ba7a1337d76ef2b", "name": "Possibly dead Python function: scene_style_wear_prompt", "shortDescription": {"text": "Possibly dead Python function: scene_style_wear_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f048aff9f4be041", "name": "Possibly dead Python function: flat_lay_editorial_prompt", "shortDescription": {"text": "Possibly dead Python function: flat_lay_editorial_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a8bd8dc927cc244", "name": "Possibly dead Python function: moodboard_prompt", "shortDescription": {"text": "Possibly dead Python function: moodboard_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df6c400bbe9094a2", "name": "Possibly dead Python function: wear_style_grid_prompt", "shortDescription": {"text": "Possibly dead Python function: wear_style_grid_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9256bfce6d41bb5d", "name": "Possibly dead Python function: gift_scene_prompt", "shortDescription": {"text": "Possibly dead Python function: gift_scene_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5cc4bb1a01828b4c", "name": "Possibly dead Python function: price_anchor_prompt", "shortDescription": {"text": "Possibly dead Python function: price_anchor_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a58b5125cc391a06", "name": "Possibly dead Python function: meaning_craft_poster_prompt", "shortDescription": {"text": "Possibly dead Python function: meaning_craft_poster_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44290ab35c61b23e", "name": "Possibly dead Python function: knowhow_avoid_prompt", "shortDescription": {"text": "Possibly dead Python function: knowhow_avoid_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0853cb3b3bd02027", "name": "Possibly dead Python function: star_testimonial_prompt", "shortDescription": {"text": "Possibly dead Python function: star_testimonial_prompt"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-66e495609b627f82", "name": "Possibly dead Python function: constellation_labels", "shortDescription": {"text": "Possibly dead Python function: constellation_labels"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cac9716610c7c59c", "name": "Possibly dead Python function: material_breakdown_labels", "shortDescription": {"text": "Possibly dead Python function: material_breakdown_labels"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-918b260cd4ff5c24", "name": "Possibly dead Python function: color_dna_swatches", "shortDescription": {"text": "Possibly dead Python function: color_dna_swatches"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dfcb6b44e89ee290", "name": "Possibly dead Python function: parse_key_color", "shortDescription": {"text": "Possibly dead Python function: parse_key_color"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb02859c79d1de80", "name": "Possibly dead Python function: alt_row", "shortDescription": {"text": "Possibly dead Python function: alt_row"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03095d821128904b", "name": "Possibly dead Python function: replace_src", "shortDescription": {"text": "Possibly dead Python function: replace_src"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c58ee6d98bf0f6d", "name": "Possibly dead Python function: wrap_img", "shortDescription": {"text": "Possibly dead Python function: wrap_img"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5fea2aef50012a55", "name": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/batch-gen.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/batch-gen.js:36"}, "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-98a9689a45a17cd9", "name": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/gen-images.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/gen-images.js:37"}, "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-cb0f3a09446c1b64", "name": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/gen-video.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/gen-video.js:26"}, "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-0447f14b7da8d014", "name": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/lib/api.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/lib/api.js:51"}, "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-53b3c08b82f0810d", "name": "Stray `console.log` in TS/JS \u2014 pet-forge/prompts/template.example.js:346", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/prompts/template.example.js:346"}, "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-997369bd0a257dbc", "name": "Stray `console.log` in TS/JS \u2014 pet-forge/prompts/template.ragdoll.example.js:359", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/prompts/template.ragdoll.example.js:359"}, "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-dfdf1df87e7380f1", "name": "Stray `console.log` in TS/JS \u2014 pet-forge/prompts/template.munchkin.example.js:359", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/prompts/template.munchkin.example.js:359"}, "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-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-acb76189dade412d", "name": "Insecure pattern 'direct_innerhtml_assignment' in game-script-creation/docs/ppt/index.html:1164", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in game-script-creation/docs/ppt/index.html:1164"}, "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-86736ff667e641b8", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/jewelry/index.html:867", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/jewelry/index.html:867"}, "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-40b27f544fe9625a", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/banxian/index.html:893", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/banxian/index.html:893"}, "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-c6aabb73539c11dd", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/game/index.html:1170", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/game/index.html:1170"}, "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-644095148d8e3c1a", "name": "Insecure pattern 'weak_hash' in proxy-node-setup/SKILL.md:193", "shortDescription": {"text": "Insecure pattern 'weak_hash' in proxy-node-setup/SKILL.md:193"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-67a4b6af0131c10c", "name": "Insecure pattern 'node_child_process' in pet-forge/tools/batch-gen.js:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in pet-forge/tools/batch-gen.js:24"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f5ee77f9b265bcea", "name": "Insecure pattern 'direct_innerhtml_assignment' in pet-forge/tools/preview.html:214", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pet-forge/tools/preview.html:214"}, "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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fd601f7627093558", "name": "Very large file: jewelry-marketing/prompts/marketing.py (1192 lines)", "shortDescription": {"text": "Very large file: jewelry-marketing/prompts/marketing.py (1192 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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "4 tests / 38 src (ratio 0.11)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5da6d34c9d681348", "name": "Node manifest has dependencies but no lockfile: pet-forge/tools/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: pet-forge/tools/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 195 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-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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: ci, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing ci, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fdb3fb784bb7a425", "name": "Agent authority lacks a verifier contract: gemini-image/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: gemini-image/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-900eb1c606aad78e", "name": "Agent authority lacks a verifier contract: narrative-research/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: narrative-research/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-b2d05d63f365f349", "name": "Agent instruction/config may expose a secret: proxy-node-setup/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: proxy-node-setup/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b793f080805a70bb", "name": "Agent instruction contains unpinned remote install: proxy-node-setup/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: proxy-node-setup/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6992a86c65c777f5", "name": "Agent instruction/config may expose a secret: gpt-image/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: gpt-image/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8359d99e39c9123c", "name": "Agent authority lacks a verifier contract: gpt-image/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: gpt-image/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-99f6afd081da6190", "name": "Agent authority lacks a verifier contract: jewelry-marketing/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: jewelry-marketing/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-aa5963007d149479", "name": "Agent instruction/config may expose a secret: pet-forge/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: pet-forge/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0779e5a6323132b3", "name": "Agent authority lacks a verifier contract: transcribe/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: transcribe/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-2c8780f4901e1c75", "name": "Agent authority lacks a verifier contract: pr-fix-loop/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: pr-fix-loop/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-15fde51b72020096", "name": "Agent authority lacks a verifier contract: apple-pdf/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: apple-pdf/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-4107930417695b92", "name": "Commented-code block (8 lines) in gpt-image/generate.py:48", "shortDescription": {"text": "Commented-code block (8 lines) in gpt-image/generate.py:48"}, "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-30eafcdd3ebf7301", "name": "Legacy-named symbol `parsed_copy` in jewelry-marketing/lookbook_renderer.py:936", "shortDescription": {"text": "Legacy-named symbol `parsed_copy` in jewelry-marketing/lookbook_renderer.py:936"}, "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-42dca27da7542594", "name": "Network/subprocess call without timeout or try/except \u2014 jewelry-marketing/lookbook_renderer.py:1010", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 jewelry-marketing/lookbook_renderer.py:1010"}, "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-3b2101275ca4750c", "name": "Network/subprocess call without timeout or try/except \u2014 jewelry-marketing/generate.py:185", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 jewelry-marketing/generate.py:185"}, "fullDescription": {"text": "`requests.post(...)` 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-553f1df89da97dfd", "name": "Legacy-named symbol `_suggest_poster_copy` in jewelry-marketing/prompts/marketing.py:705", "shortDescription": {"text": "Legacy-named symbol `_suggest_poster_copy` in jewelry-marketing/prompts/marketing.py:705"}, "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-b73492aa57b2a41d", "name": "Network/subprocess call without timeout or try/except \u2014 pet-forge/generate.py:186", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 pet-forge/generate.py:186"}, "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-d0e938d9484dfe4b", "name": "Commented-code block (5 lines) in pet-forge/tools/chroma_key.py:94", "shortDescription": {"text": "Commented-code block (5 lines) in pet-forge/tools/chroma_key.py:94"}, "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-0e41f3380c0afd33", "name": "Network/subprocess call without timeout or try/except \u2014 pet-forge/tools/chroma_key.py:212", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 pet-forge/tools/chroma_key.py:212"}, "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-41e6aafb4fd2cf88", "name": "Network/subprocess call without timeout or try/except \u2014 pet-forge/tools/rebuild_apng.py:71", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 pet-forge/tools/rebuild_apng.py:71"}, "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-d264b87b005e6c7e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 pet-forge/tools/lib/api.js:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pet-forge/tools/lib/api.js:35"}, "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-3b45a15b78a2625c", "name": "Commented-code block (8 lines) in pet-forge/prompts/template.example.js:54", "shortDescription": {"text": "Commented-code block (8 lines) in pet-forge/prompts/template.example.js:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5705959aa15f44da", "name": "Commented-code block (8 lines) in pet-forge/prompts/template.ragdoll.example.js:67", "shortDescription": {"text": "Commented-code block (8 lines) in pet-forge/prompts/template.ragdoll.example.js:67"}, "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-9a57d2676938f8bc", "name": "Commented-code block (8 lines) in pet-forge/prompts/template.munchkin.example.js:67", "shortDescription": {"text": "Commented-code block (8 lines) in pet-forge/prompts/template.munchkin.example.js:67"}, "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-c584122c6292f33d", "name": "Commented-code block (6 lines) in apple-pdf/apple_pdf.py:1", "shortDescription": {"text": "Commented-code block (6 lines) in apple-pdf/apple_pdf.py: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-f250cb9337fe5793", "name": "Network/subprocess call without timeout or try/except \u2014 banxian-skill/scripts/render_html.py:833", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 banxian-skill/scripts/render_html.py:833"}, "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-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\njewelry-marketing/generate.py:run_marketing_pipeline, jewelry-marketing/generate.py:run_design_pipeline\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23016"}, "properties": {"repository": "xingfanxia/AX-skills", "repoUrl": "https://github.com/xingfanxia/AX-skills", "branch": "main"}, "results": [{"ruleId": "scanner-dd3adbf11277be9c", "level": "note", "message": {"text": "Possibly dead Python function: task"}, "properties": {"repobilityId": "201fcc917f27bd31", "scanner": "scanner-primary", "fingerprint": "dd3adbf11277be9c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/generate.py:413"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-34656014b59d7611", "level": "note", "message": {"text": "Possibly dead Python function: sketch_prompt"}, "properties": {"repobilityId": "addec09379007314", "scanner": "scanner-primary", "fingerprint": "34656014b59d7611", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/design.py:49"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6d89664977df251f", "level": "note", "message": {"text": "Possibly dead Python function: sketch_multi_prompt"}, "properties": {"repobilityId": "6f3796c6e9596614", "scanner": "scanner-primary", "fingerprint": "6d89664977df251f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/design.py:74"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-44751794316477e5", "level": "note", "message": {"text": "Possibly dead Python function: rendering3d_prompt"}, "properties": {"repobilityId": "da572d02b1a9bd25", "scanner": "scanner-primary", "fingerprint": "44751794316477e5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/design.py:118"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-888dc620132ddbd3", "level": "note", "message": {"text": "Possibly dead Python function: wearing_prompt"}, "properties": {"repobilityId": "f56af088898b5356", "scanner": "scanner-primary", "fingerprint": "888dc620132ddbd3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/design.py:141"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0eda6697dde461ac", "level": "note", "message": {"text": "Possibly dead Python function: material_break_prompt"}, "properties": {"repobilityId": "d6de60272e9a42bb", "scanner": "scanner-primary", "fingerprint": "0eda6697dde461ac", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/design.py:167"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c1234079da428cb8", "level": "note", "message": {"text": "Possibly dead Python function: moodboard_prompt"}, "properties": {"repobilityId": "282b2b640f8cd7ac", "scanner": "scanner-primary", "fingerprint": "c1234079da428cb8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/design.py:194"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e579a2f7d951ac3", "level": "note", "message": {"text": "Possibly dead Python function: color_dna_prompt"}, "properties": {"repobilityId": "1e650d3122b05759", "scanner": "scanner-primary", "fingerprint": "8e579a2f7d951ac3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/design.py:219"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-be6fae757487068f", "level": "note", "message": {"text": "Possibly dead Python function: cad3d_prompt"}, "properties": {"repobilityId": "8e761303c77f5bfe", "scanner": "scanner-primary", "fingerprint": "be6fae757487068f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/design.py:249"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c58784c69fdc411f", "level": "note", "message": {"text": "Possibly dead Python function: hero_prompt"}, "properties": {"repobilityId": "60385a11dfdbbf38", "scanner": "scanner-primary", "fingerprint": "c58784c69fdc411f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:17"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-77b16adb5c73d160", "level": "note", "message": {"text": "Possibly dead Python function: wrist_neck_prompt"}, "properties": {"repobilityId": "05b63e31aa0d7e63", "scanner": "scanner-primary", "fingerprint": "77b16adb5c73d160", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:78"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bd538c1bc67da895", "level": "note", "message": {"text": "Possibly dead Python function: gem_cut_detail_prompt"}, "properties": {"repobilityId": "3aa6c88ee2346d64", "scanner": "scanner-primary", "fingerprint": "bd538c1bc67da895", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:138"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ba7a1337d76ef2b", "level": "note", "message": {"text": "Possibly dead Python function: scene_style_wear_prompt"}, "properties": {"repobilityId": "03e05782c8406644", "scanner": "scanner-primary", "fingerprint": "8ba7a1337d76ef2b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:226"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4f048aff9f4be041", "level": "note", "message": {"text": "Possibly dead Python function: flat_lay_editorial_prompt"}, "properties": {"repobilityId": "e461862bd9d3935d", "scanner": "scanner-primary", "fingerprint": "4f048aff9f4be041", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:282"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6a8bd8dc927cc244", "level": "note", "message": {"text": "Possibly dead Python function: moodboard_prompt"}, "properties": {"repobilityId": "282b2b640f8cd7ac", "scanner": "scanner-primary", "fingerprint": "6a8bd8dc927cc244", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:359"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-df6c400bbe9094a2", "level": "note", "message": {"text": "Possibly dead Python function: wear_style_grid_prompt"}, "properties": {"repobilityId": "141c2550e59405a8", "scanner": "scanner-primary", "fingerprint": "df6c400bbe9094a2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:446"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9256bfce6d41bb5d", "level": "note", "message": {"text": "Possibly dead Python function: gift_scene_prompt"}, "properties": {"repobilityId": "2d18112015e7f2dc", "scanner": "scanner-primary", "fingerprint": "9256bfce6d41bb5d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:543"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5cc4bb1a01828b4c", "level": "note", "message": {"text": "Possibly dead Python function: price_anchor_prompt"}, "properties": {"repobilityId": "1d55f1f378e5f622", "scanner": "scanner-primary", "fingerprint": "5cc4bb1a01828b4c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:642"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a58b5125cc391a06", "level": "note", "message": {"text": "Possibly dead Python function: meaning_craft_poster_prompt"}, "properties": {"repobilityId": "1acf6e9eca63cdb3", "scanner": "scanner-primary", "fingerprint": "a58b5125cc391a06", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:761"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-44290ab35c61b23e", "level": "note", "message": {"text": "Possibly dead Python function: knowhow_avoid_prompt"}, "properties": {"repobilityId": "5f5c105ac2e121da", "scanner": "scanner-primary", "fingerprint": "44290ab35c61b23e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:912"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0853cb3b3bd02027", "level": "note", "message": {"text": "Possibly dead Python function: star_testimonial_prompt"}, "properties": {"repobilityId": "32ab024423c2e601", "scanner": "scanner-primary", "fingerprint": "0853cb3b3bd02027", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/marketing.py:1047"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-66e495609b627f82", "level": "note", "message": {"text": "Possibly dead Python function: constellation_labels"}, "properties": {"repobilityId": "66f8bfef98610d37", "scanner": "scanner-primary", "fingerprint": "66e495609b627f82", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/helpers.py:84"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cac9716610c7c59c", "level": "note", "message": {"text": "Possibly dead Python function: material_breakdown_labels"}, "properties": {"repobilityId": "8d6255096000b35b", "scanner": "scanner-primary", "fingerprint": "cac9716610c7c59c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/helpers.py:102"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-918b260cd4ff5c24", "level": "note", "message": {"text": "Possibly dead Python function: color_dna_swatches"}, "properties": {"repobilityId": "00393cca8042a969", "scanner": "scanner-primary", "fingerprint": "918b260cd4ff5c24", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/prompts/helpers.py:114"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dfcb6b44e89ee290", "level": "note", "message": {"text": "Possibly dead Python function: parse_key_color"}, "properties": {"repobilityId": "4328c08a67c994b4", "scanner": "scanner-primary", "fingerprint": "dfcb6b44e89ee290", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pet-forge/tools/chroma_key.py:32"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fb02859c79d1de80", "level": "note", "message": {"text": "Possibly dead Python function: alt_row"}, "properties": {"repobilityId": "8657374c5111f2d9", "scanner": "scanner-primary", "fingerprint": "fb02859c79d1de80", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apple-pdf/apple_pdf.py:157"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-03095d821128904b", "level": "note", "message": {"text": "Possibly dead Python function: replace_src"}, "properties": {"repobilityId": "6fbf4387590e32cb", "scanner": "scanner-primary", "fingerprint": "03095d821128904b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apple-pdf/apple_pdf.py:176"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c58ee6d98bf0f6d", "level": "note", "message": {"text": "Possibly dead Python function: wrap_img"}, "properties": {"repobilityId": "2687ae1867fefea9", "scanner": "scanner-primary", "fingerprint": "0c58ee6d98bf0f6d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apple-pdf/apple_pdf.py:193"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5fea2aef50012a55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/batch-gen.js:36"}, "properties": {"repobilityId": "da081ad637eae078", "scanner": "scanner-primary", "fingerprint": "5fea2aef50012a55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98a9689a45a17cd9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/gen-images.js:37"}, "properties": {"repobilityId": "bbd94abf4f31694e", "scanner": "scanner-primary", "fingerprint": "98a9689a45a17cd9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb0f3a09446c1b64", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/gen-video.js:26"}, "properties": {"repobilityId": "e3bcb8a05255f25c", "scanner": "scanner-primary", "fingerprint": "cb0f3a09446c1b64", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0447f14b7da8d014", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/tools/lib/api.js:51"}, "properties": {"repobilityId": "17a96e7df4c61efd", "scanner": "scanner-primary", "fingerprint": "0447f14b7da8d014", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53b3c08b82f0810d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/prompts/template.example.js:346"}, "properties": {"repobilityId": "56ccc029e3b0c73d", "scanner": "scanner-primary", "fingerprint": "53b3c08b82f0810d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-997369bd0a257dbc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/prompts/template.ragdoll.example.js:359"}, "properties": {"repobilityId": "f6f7d09f811dd1d1", "scanner": "scanner-primary", "fingerprint": "997369bd0a257dbc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dfdf1df87e7380f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pet-forge/prompts/template.munchkin.example.js:359"}, "properties": {"repobilityId": "1217ffdd5d80484f", "scanner": "scanner-primary", "fingerprint": "dfdf1df87e7380f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-acb76189dade412d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in game-script-creation/docs/ppt/index.html:1164"}, "properties": {"repobilityId": "b36d9cfe7b9b13f3", "scanner": "scanner-primary", "fingerprint": "acb76189dade412d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "game-script-creation/docs/ppt/index.html"}, "region": {"startLine": 1164}}}]}, {"ruleId": "scanner-86736ff667e641b8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/jewelry/index.html:867"}, "properties": {"repobilityId": "97cd44881a83731c", "scanner": "scanner-primary", "fingerprint": "86736ff667e641b8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/jewelry/index.html"}, "region": {"startLine": 867}}}]}, {"ruleId": "scanner-40b27f544fe9625a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/banxian/index.html:893"}, "properties": {"repobilityId": "3c5eb5ece69359ed", "scanner": "scanner-primary", "fingerprint": "40b27f544fe9625a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/banxian/index.html"}, "region": {"startLine": 893}}}]}, {"ruleId": "scanner-c6aabb73539c11dd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/game/index.html:1170"}, "properties": {"repobilityId": "532c690f47843283", "scanner": "scanner-primary", "fingerprint": "c6aabb73539c11dd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/game/index.html"}, "region": {"startLine": 1170}}}]}, {"ruleId": "scanner-644095148d8e3c1a", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in proxy-node-setup/SKILL.md:193"}, "properties": {"repobilityId": "c1fbb98e5de4e22c", "scanner": "scanner-primary", "fingerprint": "644095148d8e3c1a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "proxy-node-setup/SKILL.md"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-67a4b6af0131c10c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in pet-forge/tools/batch-gen.js:24"}, "properties": {"repobilityId": "b5b9be1907b82d67", "scanner": "scanner-primary", "fingerprint": "67a4b6af0131c10c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pet-forge/tools/batch-gen.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-f5ee77f9b265bcea", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pet-forge/tools/preview.html:214"}, "properties": {"repobilityId": "5e6fd8d9c71aa4a4", "scanner": "scanner-primary", "fingerprint": "f5ee77f9b265bcea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pet-forge/tools/preview.html"}, "region": {"startLine": 214}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-fd601f7627093558", "level": "note", "message": {"text": "Very large file: jewelry-marketing/prompts/marketing.py (1192 lines)"}, "properties": {"repobilityId": "3ce7f83de11636ad", "scanner": "scanner-primary", "fingerprint": "fd601f7627093558", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-5da6d34c9d681348", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: pet-forge/tools/package.json"}, "properties": {"repobilityId": "ca2b5f96bec9311f", "scanner": "scanner-primary", "fingerprint": "5da6d34c9d681348", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pet-forge/tools/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "f6d8d1f2a90e0292", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "18b117cadb7dd145", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "4b3db99e0d79e0e3", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "970c196b7b8667eb", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "d6aa88befc5cc262", "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": "d7a8bbe5233b91e9", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-fdb3fb784bb7a425", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: gemini-image/SKILL.md"}, "properties": {"repobilityId": "a9d8a39cc3231a06", "scanner": "scanner-primary", "fingerprint": "fdb3fb784bb7a425", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gemini-image/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-900eb1c606aad78e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: narrative-research/SKILL.md"}, "properties": {"repobilityId": "9e5da43cf0a12aed", "scanner": "scanner-primary", "fingerprint": "900eb1c606aad78e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "narrative-research/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b2d05d63f365f349", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: proxy-node-setup/SKILL.md"}, "properties": {"repobilityId": "90c31e9b4d388885", "scanner": "scanner-primary", "fingerprint": "b2d05d63f365f349", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "proxy-node-setup/SKILL.md"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-b793f080805a70bb", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: proxy-node-setup/SKILL.md"}, "properties": {"repobilityId": "86a71eb02ffa3bef", "scanner": "scanner-primary", "fingerprint": "b793f080805a70bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "proxy-node-setup/SKILL.md"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-6992a86c65c777f5", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: gpt-image/SKILL.md"}, "properties": {"repobilityId": "80b1513d0ff7f6e6", "scanner": "scanner-primary", "fingerprint": "6992a86c65c777f5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gpt-image/SKILL.md"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-8359d99e39c9123c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: gpt-image/SKILL.md"}, "properties": {"repobilityId": "801671b1e2cf4ce9", "scanner": "scanner-primary", "fingerprint": "8359d99e39c9123c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gpt-image/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-99f6afd081da6190", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: jewelry-marketing/SKILL.md"}, "properties": {"repobilityId": "7b64505aad3f3f8a", "scanner": "scanner-primary", "fingerprint": "99f6afd081da6190", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jewelry-marketing/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5963007d149479", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: pet-forge/SKILL.md"}, "properties": {"repobilityId": "156269a539bc80bd", "scanner": "scanner-primary", "fingerprint": "aa5963007d149479", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pet-forge/SKILL.md"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-0779e5a6323132b3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: transcribe/SKILL.md"}, "properties": {"repobilityId": "c1f78e790e4c629c", "scanner": "scanner-primary", "fingerprint": "0779e5a6323132b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "transcribe/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2c8780f4901e1c75", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: pr-fix-loop/SKILL.md"}, "properties": {"repobilityId": "a55918d2390190cb", "scanner": "scanner-primary", "fingerprint": "2c8780f4901e1c75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pr-fix-loop/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-15fde51b72020096", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: apple-pdf/SKILL.md"}, "properties": {"repobilityId": "2742af52d8eb5ccb", "scanner": "scanner-primary", "fingerprint": "15fde51b72020096", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apple-pdf/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4107930417695b92", "level": "none", "message": {"text": "Commented-code block (8 lines) in gpt-image/generate.py:48"}, "properties": {"repobilityId": "3ebcf9a4cdad8a0a", "scanner": "scanner-primary", "fingerprint": "4107930417695b92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30eafcdd3ebf7301", "level": "note", "message": {"text": "Legacy-named symbol `parsed_copy` in jewelry-marketing/lookbook_renderer.py:936"}, "properties": {"repobilityId": "6ee3df7686cdab80", "scanner": "scanner-primary", "fingerprint": "30eafcdd3ebf7301", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-42dca27da7542594", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 jewelry-marketing/lookbook_renderer.py:1010"}, "properties": {"repobilityId": "84aa4c552d6406f8", "scanner": "scanner-primary", "fingerprint": "42dca27da7542594", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b2101275ca4750c", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 jewelry-marketing/generate.py:185"}, "properties": {"repobilityId": "3e30605c880c25c8", "scanner": "scanner-primary", "fingerprint": "3b2101275ca4750c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-553f1df89da97dfd", "level": "note", "message": {"text": "Legacy-named symbol `_suggest_poster_copy` in jewelry-marketing/prompts/marketing.py:705"}, "properties": {"repobilityId": "faafd9cb4390dd72", "scanner": "scanner-primary", "fingerprint": "553f1df89da97dfd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b73492aa57b2a41d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 pet-forge/generate.py:186"}, "properties": {"repobilityId": "b8f441dd6d6cf6f5", "scanner": "scanner-primary", "fingerprint": "b73492aa57b2a41d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d0e938d9484dfe4b", "level": "none", "message": {"text": "Commented-code block (5 lines) in pet-forge/tools/chroma_key.py:94"}, "properties": {"repobilityId": "4ff29d4e433ea0ed", "scanner": "scanner-primary", "fingerprint": "d0e938d9484dfe4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e41f3380c0afd33", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 pet-forge/tools/chroma_key.py:212"}, "properties": {"repobilityId": "78c7809ff2847cf8", "scanner": "scanner-primary", "fingerprint": "0e41f3380c0afd33", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-41e6aafb4fd2cf88", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 pet-forge/tools/rebuild_apng.py:71"}, "properties": {"repobilityId": "df6e1864e650b548", "scanner": "scanner-primary", "fingerprint": "41e6aafb4fd2cf88", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d264b87b005e6c7e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pet-forge/tools/lib/api.js:35"}, "properties": {"repobilityId": "148dde327e114236", "scanner": "scanner-primary", "fingerprint": "d264b87b005e6c7e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b45a15b78a2625c", "level": "none", "message": {"text": "Commented-code block (8 lines) in pet-forge/prompts/template.example.js:54"}, "properties": {"repobilityId": "6aac39357104b28d", "scanner": "scanner-primary", "fingerprint": "3b45a15b78a2625c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5705959aa15f44da", "level": "none", "message": {"text": "Commented-code block (8 lines) in pet-forge/prompts/template.ragdoll.example.js:67"}, "properties": {"repobilityId": "453faf586ca5137c", "scanner": "scanner-primary", "fingerprint": "5705959aa15f44da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a57d2676938f8bc", "level": "none", "message": {"text": "Commented-code block (8 lines) in pet-forge/prompts/template.munchkin.example.js:67"}, "properties": {"repobilityId": "bd5218e7e8004004", "scanner": "scanner-primary", "fingerprint": "9a57d2676938f8bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c584122c6292f33d", "level": "none", "message": {"text": "Commented-code block (6 lines) in apple-pdf/apple_pdf.py:1"}, "properties": {"repobilityId": "76e5f94dcb2d1069", "scanner": "scanner-primary", "fingerprint": "c584122c6292f33d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f250cb9337fe5793", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 banxian-skill/scripts/render_html.py:833"}, "properties": {"repobilityId": "20cb415ba3fd98ed", "scanner": "scanner-primary", "fingerprint": "f250cb9337fe5793", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "6995300eba2091e3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "db395d75742788a3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "bc9c9137913a33bb", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "b5442810b0618bbd", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}