{"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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b74821fabb60f3df", "name": "Stray `console.log` in TS/JS \u2014 e2e/support/cli-reset.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/support/cli-reset.ts:5"}, "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-b4ffe923834e2f36", "name": "Stray `console.log` in TS/JS \u2014 e2e/support/reporter-discord.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/support/reporter-discord.ts:39"}, "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-7176e5d95d18d844", "name": "Runtime dotenv file present in repo: .env", "shortDescription": {"text": "Runtime dotenv file present in repo: .env"}, "fullDescription": {"text": "`.env` looks like a runtime dotenv file. It contains secret-looking assignments for DOTENV_PUBLIC_KEY, EXPO_PUBLIC_SUPABASE_ANON_KEY. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-9a6a67c7dfb8952c", "name": "Possible secret in e2e/factories/user.ts", "shortDescription": {"text": "Possible secret in e2e/factories/user.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-65c9bd56493a81d3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-181a21dfad5dc448", "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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "27 tests / 234 src (ratio 0.12)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 12 placeholder/mock markers across 10 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. 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-17d866d91a7c451e", "name": "Agent instruction/config may expose a secret: CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CLAUDE.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-25d5af3b9a8d43a9", "name": "Agent authority lacks a verifier contract: .claude/rules/test-id.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/rules/test-id.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-1291fdbb505c28db", "name": "Agent authority lacks a verifier contract: .claude/agents/twada.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/twada.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-e1a1b9ada5827812", "name": "Agent authority lacks a verifier contract: .claude/agents/reviewer/ui-consistency.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/ui-consistency.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-7476c41861db3e68", "name": "Agent authority lacks a verifier contract: .claude/agents/reviewer/architecture.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/architecture.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-3bdb468c72b910aa", "name": "Agent authority lacks a verifier contract: .claude/agents/reviewer/security.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/security.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-fd12ef638bec30f8", "name": "Agent authority lacks a verifier contract: .claude/agents/reviewer/db-migration.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/db-migration.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-f576d233c4e41269", "name": "Agent authority lacks a verifier contract: .claude/agents/reviewer/bug-hunter.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/bug-hunter.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-409df2c029614ee4", "name": "Agent authority lacks a verifier contract: .claude/agents/reviewer/performance.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/performance.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-85042da00f9846db", "name": "Agent authority lacks a verifier contract: .claude/agents/reviewer/code-quality.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/code-quality.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-6ac32cb9cf19e178", "name": "Agent authority lacks a verifier contract: .claude/skills/e2e-scenario/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/e2e-scenario/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-a2036baf594e392d", "name": "Agent authority lacks a verifier contract: .claude/skills/merge-pr/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/merge-pr/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-233e4875d6269226", "name": "Agent authority lacks a verifier contract: .claude/skills/create-pr/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/create-pr/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-4d636fa3b0762cbb", "name": "Agent authority lacks a verifier contract: .claude/skills/issue/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/issue/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-77848ae5cca45a71", "name": "Agent authority lacks a verifier contract: .claude/skills/review/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/review/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-7069c1e2f640a1c3", "name": "Agent authority lacks a verifier contract: .claude/skills/grill-me-ui/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/grill-me-ui/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-54383e411320ec5c", "name": "Agent authority lacks a verifier contract: .claude/skills/design-check/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/design-check/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-646a4f2b30d399a3", "name": "Agent authority lacks a verifier contract: .claude/skills/worktree/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/worktree/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-37cb0caf3f18e1f3", "name": "Agent authority lacks a verifier contract: .claude/skills/respond-to-pr-review/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/respond-to-pr-review/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-36c6ec79db29d70f", "name": "Commented-code block (7 lines) in components/DayTableSection.tsx:290", "shortDescription": {"text": "Commented-code block (7 lines) in components/DayTableSection.tsx:290"}, "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-dc24fb345f9b7c38", "name": "Commented-code block (5 lines) in components/PlanRoundMatrixEditor.tsx:150", "shortDescription": {"text": "Commented-code block (5 lines) in components/PlanRoundMatrixEditor.tsx:150"}, "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-1c1db57bdf77c85f", "name": "Commented-code block (6 lines) in components/StripedBackground.tsx:8", "shortDescription": {"text": "Commented-code block (6 lines) in components/StripedBackground.tsx:8"}, "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-d82d4ba5e5a49492", "name": "Commented-code block (5 lines) in app/(app)/home/confirm-regular.tsx:110", "shortDescription": {"text": "Commented-code block (5 lines) in app/(app)/home/confirm-regular.tsx:110"}, "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-e2fe3be590fa70f4", "name": "Commented-code block (5 lines) in app/(app)/(tabs)/index.tsx:58", "shortDescription": {"text": "Commented-code block (5 lines) in app/(app)/(tabs)/index.tsx:58"}, "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-517b1d283e44ff81", "name": "Commented-code block (5 lines) in lib/emoji-display.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/emoji-display.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-51c10b4c951fa4ae", "name": "Commented-code block (5 lines) in lib/theme-colors.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/theme-colors.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-a4044487f770e27b", "name": "Commented-code block (5 lines) in hooks/use-bulk-save-plan-round-slots.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in hooks/use-bulk-save-plan-round-slots.ts:24"}, "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-68f83b23c76713e9", "name": "Commented-code block (5 lines) in hooks/use-upsert-round-application.ts:89", "shortDescription": {"text": "Commented-code block (5 lines) in hooks/use-upsert-round-application.ts:89"}, "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-45567d6916f2eef4", "name": "Commented-code block (5 lines) in e2e/playwright.config.ts:65", "shortDescription": {"text": "Commented-code block (5 lines) in e2e/playwright.config.ts:65"}, "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-02e1f2721b596d52", "name": "Commented-code block (6 lines) in e2e/factories/release-setup.ts:27", "shortDescription": {"text": "Commented-code block (6 lines) in e2e/factories/release-setup.ts:27"}, "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-6519417b0980c2d4", "name": "Commented-code block (6 lines) in e2e/steps/talk-plan.steps.ts:10", "shortDescription": {"text": "Commented-code block (6 lines) in e2e/steps/talk-plan.steps.ts:10"}, "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-3a1eeb3d73e0feff", "name": "Commented-code block (7 lines) in e2e/steps/plan.steps.ts:138", "shortDescription": {"text": "Commented-code block (7 lines) in e2e/steps/plan.steps.ts:138"}, "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-28fd119a67320fbb", "name": "Commented-code block (5 lines) in e2e/support/reporter-discord.ts:50", "shortDescription": {"text": "Commented-code block (5 lines) in e2e/support/reporter-discord.ts:50"}, "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-af022f937dd5b7fd", "name": "9 env vars used in code but missing from .env.example", "shortDescription": {"text": "9 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `CI`, `DISCORD_WEBHOOK_URL`, `E2E_APP_PORT`, `GITHUB_REPOSITORY`, `GITHUB_RUN_ID`, `GITHUB_SERVER_URL`, `PLAYWRIGHT_DEMO_HOLD`, `PLAYWRIGHT_SLOW_MO` + 1 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/19212"}, "properties": {"repository": "sekai-nina/meet-greet-app", "repoUrl": "https://github.com/sekai-nina/meet-greet-app", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-b74821fabb60f3df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/support/cli-reset.ts:5"}, "properties": {"repobilityId": "ff2ac1fe12e01ceb", "scanner": "scanner-primary", "fingerprint": "b74821fabb60f3df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4ffe923834e2f36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/support/reporter-discord.ts:39"}, "properties": {"repobilityId": "14a9fba57a83d3ce", "scanner": "scanner-primary", "fingerprint": "b4ffe923834e2f36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7176e5d95d18d844", "level": "error", "message": {"text": "Runtime dotenv file present in repo: .env"}, "properties": {"repobilityId": "4b9c737a445874ba", "scanner": "scanner-primary", "fingerprint": "7176e5d95d18d844", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env", "env_file_with_secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".env"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9a6a67c7dfb8952c", "level": "error", "message": {"text": "Possible secret in e2e/factories/user.ts"}, "properties": {"repobilityId": "0249517d21e7c9b7", "scanner": "scanner-primary", "fingerprint": "9a6a67c7dfb8952c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "e2e/factories/user.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-65c9bd56493a81d3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3b3d8b8ee5da1f9b", "scanner": "scanner-primary", "fingerprint": "65c9bd56493a81d3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-65c9bd56493a81d3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8e879d8d5d310b9f", "scanner": "scanner-primary", "fingerprint": "65c9bd56493a81d3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e.yml"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-65c9bd56493a81d3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "75866f021a53bf66", "scanner": "scanner-primary", "fingerprint": "65c9bd56493a81d3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e.yml"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-65c9bd56493a81d3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4076dfd4e9ffead4", "scanner": "scanner-primary", "fingerprint": "65c9bd56493a81d3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e.yml"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-65c9bd56493a81d3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1cc3ec5d77c2c755", "scanner": "scanner-primary", "fingerprint": "65c9bd56493a81d3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e.yml"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-181a21dfad5dc448", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "69e3a2ff0fa29c8f", "scanner": "scanner-primary", "fingerprint": "181a21dfad5dc448", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e.yml"}, "region": {"startLine": 1}}}]}, {"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-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "3d4c1d20f05e6beb", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "59c38c7da09c1f37", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "d4e16022f0500250", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "7d23b5b11d9ae0ae", "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": "42f91e9d7455c14d", "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": "52095d5e7b7f8582", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-17d866d91a7c451e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "properties": {"repobilityId": "ccce5984e58a48f0", "scanner": "scanner-primary", "fingerprint": "17d866d91a7c451e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-25d5af3b9a8d43a9", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/rules/test-id.md"}, "properties": {"repobilityId": "aa0efc236a26718e", "scanner": "scanner-primary", "fingerprint": "25d5af3b9a8d43a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/rules/test-id.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1291fdbb505c28db", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/twada.md"}, "properties": {"repobilityId": "2855e70d893092a9", "scanner": "scanner-primary", "fingerprint": "1291fdbb505c28db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/twada.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e1a1b9ada5827812", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/ui-consistency.md"}, "properties": {"repobilityId": "2bfec23fee6a6703", "scanner": "scanner-primary", "fingerprint": "e1a1b9ada5827812", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/reviewer/ui-consistency.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7476c41861db3e68", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/architecture.md"}, "properties": {"repobilityId": "fedc6dfe00fa2ac7", "scanner": "scanner-primary", "fingerprint": "7476c41861db3e68", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/reviewer/architecture.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3bdb468c72b910aa", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/security.md"}, "properties": {"repobilityId": "707f6d706f686abe", "scanner": "scanner-primary", "fingerprint": "3bdb468c72b910aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/reviewer/security.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fd12ef638bec30f8", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/db-migration.md"}, "properties": {"repobilityId": "c6f0187c99338c5f", "scanner": "scanner-primary", "fingerprint": "fd12ef638bec30f8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/reviewer/db-migration.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f576d233c4e41269", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/bug-hunter.md"}, "properties": {"repobilityId": "7fb98f4d090727e1", "scanner": "scanner-primary", "fingerprint": "f576d233c4e41269", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/reviewer/bug-hunter.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-409df2c029614ee4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/performance.md"}, "properties": {"repobilityId": "735ce828d7753bbe", "scanner": "scanner-primary", "fingerprint": "409df2c029614ee4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/reviewer/performance.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-85042da00f9846db", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/reviewer/code-quality.md"}, "properties": {"repobilityId": "c5e3d28d317ffa11", "scanner": "scanner-primary", "fingerprint": "85042da00f9846db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/reviewer/code-quality.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6ac32cb9cf19e178", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/e2e-scenario/SKILL.md"}, "properties": {"repobilityId": "f3a043e26b7a92a6", "scanner": "scanner-primary", "fingerprint": "6ac32cb9cf19e178", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/e2e-scenario/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a2036baf594e392d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/merge-pr/SKILL.md"}, "properties": {"repobilityId": "a658cf7708417dbf", "scanner": "scanner-primary", "fingerprint": "a2036baf594e392d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/merge-pr/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-233e4875d6269226", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/create-pr/SKILL.md"}, "properties": {"repobilityId": "7dadc879565e226e", "scanner": "scanner-primary", "fingerprint": "233e4875d6269226", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/create-pr/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4d636fa3b0762cbb", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/issue/SKILL.md"}, "properties": {"repobilityId": "81526b62801d2fad", "scanner": "scanner-primary", "fingerprint": "4d636fa3b0762cbb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/issue/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-77848ae5cca45a71", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/review/SKILL.md"}, "properties": {"repobilityId": "741717230c10e151", "scanner": "scanner-primary", "fingerprint": "77848ae5cca45a71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/review/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7069c1e2f640a1c3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/grill-me-ui/SKILL.md"}, "properties": {"repobilityId": "0c6d11768a2c29d6", "scanner": "scanner-primary", "fingerprint": "7069c1e2f640a1c3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/grill-me-ui/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-54383e411320ec5c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/design-check/SKILL.md"}, "properties": {"repobilityId": "64c143e60d197b7c", "scanner": "scanner-primary", "fingerprint": "54383e411320ec5c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design-check/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-646a4f2b30d399a3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/worktree/SKILL.md"}, "properties": {"repobilityId": "75dfd5f82198a2ca", "scanner": "scanner-primary", "fingerprint": "646a4f2b30d399a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/worktree/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-37cb0caf3f18e1f3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/respond-to-pr-review/SKILL.md"}, "properties": {"repobilityId": "1515913fb7449460", "scanner": "scanner-primary", "fingerprint": "37cb0caf3f18e1f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/respond-to-pr-review/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-36c6ec79db29d70f", "level": "none", "message": {"text": "Commented-code block (7 lines) in components/DayTableSection.tsx:290"}, "properties": {"repobilityId": "6aa5eca513c6679d", "scanner": "scanner-primary", "fingerprint": "36c6ec79db29d70f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dc24fb345f9b7c38", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/PlanRoundMatrixEditor.tsx:150"}, "properties": {"repobilityId": "0891df6ce24b1101", "scanner": "scanner-primary", "fingerprint": "dc24fb345f9b7c38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c1db57bdf77c85f", "level": "none", "message": {"text": "Commented-code block (6 lines) in components/StripedBackground.tsx:8"}, "properties": {"repobilityId": "b491811d3c5666a5", "scanner": "scanner-primary", "fingerprint": "1c1db57bdf77c85f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d82d4ba5e5a49492", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/(app)/home/confirm-regular.tsx:110"}, "properties": {"repobilityId": "ea1f57d810e99bb7", "scanner": "scanner-primary", "fingerprint": "d82d4ba5e5a49492", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2fe3be590fa70f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/(app)/(tabs)/index.tsx:58"}, "properties": {"repobilityId": "7137fe07e88ed558", "scanner": "scanner-primary", "fingerprint": "e2fe3be590fa70f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-517b1d283e44ff81", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/emoji-display.ts:1"}, "properties": {"repobilityId": "72fe20dacef5e222", "scanner": "scanner-primary", "fingerprint": "517b1d283e44ff81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51c10b4c951fa4ae", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/theme-colors.ts:1"}, "properties": {"repobilityId": "fcca4b06cde44985", "scanner": "scanner-primary", "fingerprint": "51c10b4c951fa4ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4044487f770e27b", "level": "none", "message": {"text": "Commented-code block (5 lines) in hooks/use-bulk-save-plan-round-slots.ts:24"}, "properties": {"repobilityId": "d0ebd19ce0938df1", "scanner": "scanner-primary", "fingerprint": "a4044487f770e27b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68f83b23c76713e9", "level": "none", "message": {"text": "Commented-code block (5 lines) in hooks/use-upsert-round-application.ts:89"}, "properties": {"repobilityId": "a34f90bf33b3da12", "scanner": "scanner-primary", "fingerprint": "68f83b23c76713e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45567d6916f2eef4", "level": "none", "message": {"text": "Commented-code block (5 lines) in e2e/playwright.config.ts:65"}, "properties": {"repobilityId": "3960a13eb37b52db", "scanner": "scanner-primary", "fingerprint": "45567d6916f2eef4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02e1f2721b596d52", "level": "none", "message": {"text": "Commented-code block (6 lines) in e2e/factories/release-setup.ts:27"}, "properties": {"repobilityId": "b9f3b7ebbc5cce6c", "scanner": "scanner-primary", "fingerprint": "02e1f2721b596d52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6519417b0980c2d4", "level": "none", "message": {"text": "Commented-code block (6 lines) in e2e/steps/talk-plan.steps.ts:10"}, "properties": {"repobilityId": "9556a64e52462629", "scanner": "scanner-primary", "fingerprint": "6519417b0980c2d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a1eeb3d73e0feff", "level": "none", "message": {"text": "Commented-code block (7 lines) in e2e/steps/plan.steps.ts:138"}, "properties": {"repobilityId": "a308c9211fb2e747", "scanner": "scanner-primary", "fingerprint": "3a1eeb3d73e0feff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28fd119a67320fbb", "level": "none", "message": {"text": "Commented-code block (5 lines) in e2e/support/reporter-discord.ts:50"}, "properties": {"repobilityId": "22672c6dd3c6c68d", "scanner": "scanner-primary", "fingerprint": "28fd119a67320fbb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af022f937dd5b7fd", "level": "note", "message": {"text": "9 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "5597384795dea7a4", "scanner": "scanner-primary", "fingerprint": "af022f937dd5b7fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}