{"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-275b8360c2182b33", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-thread.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-thread.js:66"}, "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-fb888cbf89779667", "name": "Stray `console.log` in TS/JS \u2014 scripts/graph-client.js:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/graph-client.js:78"}, "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-33f452ce705f2243", "name": "Stray `console.log` in TS/JS \u2014 scripts/classify-emails.js:339", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-emails.js:339"}, "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-a7514484fc48f193", "name": "Stray `console.log` in TS/JS \u2014 scripts/save-draft.js:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/save-draft.js:79"}, "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-927e7170864fc8cf", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-proposals.js:134", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-proposals.js:134"}, "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-63e56f84bbaf45f8", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-correspondents.js:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-correspondents.js:103"}, "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-6f5db8bbb987d47f", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sent-emails.js:172", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sent-emails.js:172"}, "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-9e3e05cc582e8339", "name": "Stray `console.log` in TS/JS \u2014 scripts/record-deletions.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/record-deletions.js:47"}, "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-067bf39386858dea", "name": "Stray `console.log` in TS/JS \u2014 scripts/delete-emails.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/delete-emails.js:31"}, "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-1430bc9f837ef1ad", "name": "TODO/FIXME marker in shipping code \u2014 scripts/build-bundle.js:265", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 scripts/build-bundle.js:265"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b5e122e2b3a629c", "name": "Stray `console.log` in TS/JS \u2014 scripts/save-gmail-draft.js:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/save-gmail-draft.js:77"}, "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-b9ce6d37b90f0387", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-auth.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-auth.js:13"}, "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-93b5bf00b707021d", "name": "Stray `console.log` in TS/JS \u2014 scripts/delete-gmail-emails.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/delete-gmail-emails.js:38"}, "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-2d77290b60133243", "name": "Stray `console.log` in TS/JS \u2014 scripts/triage.js:440", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/triage.js:440"}, "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-f9d49d8432a9e168", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-emails.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-emails.js:53"}, "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-e73c0b3db598ad0a", "name": "Insecure pattern 'node_child_process' in scripts/mcp-server.js:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/mcp-server.js:27"}, "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-0088a19366df1d8f", "name": "Insecure pattern 'node_child_process' in scripts/morning-brief.js:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/morning-brief.js:16"}, "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-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 18 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. 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 license, ci. 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-2ad9ca2b110b30c4", "name": "Agent authority lacks a verifier contract: .claude/commands/reports/morning-brief.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/reports/morning-brief.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-a917a1e318966021", "name": "Agent authority lacks a verifier contract: .claude/commands/reports/daily-brief.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/reports/daily-brief.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-b0db3a95d6c9bb4c", "name": "Agent authority lacks a verifier contract: .claude/commands/email/email-draft.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/email/email-draft.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-ac7df8eb567cf7b4", "name": "Agent authority lacks a verifier contract: .claude/commands/email/voice-setup.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/email/voice-setup.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-f908585d78963858", "name": "Agent authority lacks a verifier contract: .claude/commands/email/email-triage.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/email/email-triage.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-d23e3575b6d552cc", "name": "Agent authority lacks a verifier contract: .claude/commands/orchestrators/triage.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/orchestrators/triage.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-cce5c487f4438489", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mcp-server.js:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mcp-server.js:98"}, "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-cc8eb52c861c7f4d", "name": "Legacy-named symbol `sawOld` in scripts/build-bundle.js:38", "shortDescription": {"text": "Legacy-named symbol `sawOld` in scripts/build-bundle.js:38"}, "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-98a43587806e4f0c", "name": "Commented-code block (6 lines) in scripts/morning-brief.js:24", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/morning-brief.js: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}}]}}, "automationDetails": {"id": "repobility/24555"}, "properties": {"repository": "bensardinas1/OfficeOS", "repoUrl": "https://github.com/bensardinas1/OfficeOS", "branch": "main"}, "results": [{"ruleId": "scanner-275b8360c2182b33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-thread.js:66"}, "properties": {"repobilityId": "51e892461f2bc8e6", "scanner": "scanner-primary", "fingerprint": "275b8360c2182b33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb888cbf89779667", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/graph-client.js:78"}, "properties": {"repobilityId": "0ff7a6ee501d7531", "scanner": "scanner-primary", "fingerprint": "fb888cbf89779667", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33f452ce705f2243", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-emails.js:339"}, "properties": {"repobilityId": "32557027f60e6442", "scanner": "scanner-primary", "fingerprint": "33f452ce705f2243", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a7514484fc48f193", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/save-draft.js:79"}, "properties": {"repobilityId": "3700ba9d18ab87d8", "scanner": "scanner-primary", "fingerprint": "a7514484fc48f193", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-927e7170864fc8cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-proposals.js:134"}, "properties": {"repobilityId": "4e3e537ee0c40cdd", "scanner": "scanner-primary", "fingerprint": "927e7170864fc8cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63e56f84bbaf45f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-correspondents.js:103"}, "properties": {"repobilityId": "ad976f7795696c11", "scanner": "scanner-primary", "fingerprint": "63e56f84bbaf45f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f5db8bbb987d47f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sent-emails.js:172"}, "properties": {"repobilityId": "2609d6fa2b60c71c", "scanner": "scanner-primary", "fingerprint": "6f5db8bbb987d47f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e3e05cc582e8339", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/record-deletions.js:47"}, "properties": {"repobilityId": "ef35cb2cb8394a8c", "scanner": "scanner-primary", "fingerprint": "9e3e05cc582e8339", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-067bf39386858dea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/delete-emails.js:31"}, "properties": {"repobilityId": "d40b10f8e2ebd603", "scanner": "scanner-primary", "fingerprint": "067bf39386858dea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1430bc9f837ef1ad", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 scripts/build-bundle.js:265"}, "properties": {"repobilityId": "54b8ce2a2b049d67", "scanner": "scanner-primary", "fingerprint": "1430bc9f837ef1ad", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4b5e122e2b3a629c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/save-gmail-draft.js:77"}, "properties": {"repobilityId": "a99d244164861699", "scanner": "scanner-primary", "fingerprint": "4b5e122e2b3a629c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9ce6d37b90f0387", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-auth.js:13"}, "properties": {"repobilityId": "481b6f920aaf53b7", "scanner": "scanner-primary", "fingerprint": "b9ce6d37b90f0387", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93b5bf00b707021d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/delete-gmail-emails.js:38"}, "properties": {"repobilityId": "5727531fa16bc862", "scanner": "scanner-primary", "fingerprint": "93b5bf00b707021d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d77290b60133243", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/triage.js:440"}, "properties": {"repobilityId": "0a1bbde4fc446542", "scanner": "scanner-primary", "fingerprint": "2d77290b60133243", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9d49d8432a9e168", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-emails.js:53"}, "properties": {"repobilityId": "63b9b11385e59584", "scanner": "scanner-primary", "fingerprint": "f9d49d8432a9e168", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e73c0b3db598ad0a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/mcp-server.js:27"}, "properties": {"repobilityId": "3fc2c8f0f8244ae1", "scanner": "scanner-primary", "fingerprint": "e73c0b3db598ad0a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mcp-server.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-0088a19366df1d8f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/morning-brief.js:16"}, "properties": {"repobilityId": "f3f25cec1b1a8a63", "scanner": "scanner-primary", "fingerprint": "0088a19366df1d8f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/morning-brief.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "503b48e64912c9f7", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "6bd83470be3c0d00", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "060efabef564e1c0", "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": "56563506b09e24b9", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2ad9ca2b110b30c4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/reports/morning-brief.md"}, "properties": {"repobilityId": "1e4895ef932f1eb1", "scanner": "scanner-primary", "fingerprint": "2ad9ca2b110b30c4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/reports/morning-brief.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a917a1e318966021", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/reports/daily-brief.md"}, "properties": {"repobilityId": "a09c3d4f2c0f833d", "scanner": "scanner-primary", "fingerprint": "a917a1e318966021", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/reports/daily-brief.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b0db3a95d6c9bb4c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/email/email-draft.md"}, "properties": {"repobilityId": "91faa8679744e1ea", "scanner": "scanner-primary", "fingerprint": "b0db3a95d6c9bb4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/email/email-draft.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ac7df8eb567cf7b4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/email/voice-setup.md"}, "properties": {"repobilityId": "ea4ee33e83020b17", "scanner": "scanner-primary", "fingerprint": "ac7df8eb567cf7b4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/email/voice-setup.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f908585d78963858", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/email/email-triage.md"}, "properties": {"repobilityId": "af46ca2476b4ce63", "scanner": "scanner-primary", "fingerprint": "f908585d78963858", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/email/email-triage.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d23e3575b6d552cc", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/orchestrators/triage.md"}, "properties": {"repobilityId": "ca5e2d0aaba2f42c", "scanner": "scanner-primary", "fingerprint": "d23e3575b6d552cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/orchestrators/triage.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cce5c487f4438489", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mcp-server.js:98"}, "properties": {"repobilityId": "250ba0379090e5b1", "scanner": "scanner-primary", "fingerprint": "cce5c487f4438489", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cc8eb52c861c7f4d", "level": "note", "message": {"text": "Legacy-named symbol `sawOld` in scripts/build-bundle.js:38"}, "properties": {"repobilityId": "942c69a2eb445b90", "scanner": "scanner-primary", "fingerprint": "cc8eb52c861c7f4d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-98a43587806e4f0c", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/morning-brief.js:24"}, "properties": {"repobilityId": "fac1dd12fbae6aff", "scanner": "scanner-primary", "fingerprint": "98a43587806e4f0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}