{"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-3664536691feaa0b", "name": "Possibly dead Python function: master_key", "shortDescription": {"text": "Possibly dead Python function: master_key"}, "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-687387c88d1eb591", "name": "Possibly dead Python function: entity_count", "shortDescription": {"text": "Possibly dead Python function: entity_count"}, "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-297e65cc79a88d0e", "name": "Possibly dead Python function: field_weights", "shortDescription": {"text": "Possibly dead Python function: field_weights"}, "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-a28c25cb4689d2a5", "name": "Possibly dead Python function: leq", "shortDescription": {"text": "Possibly dead Python function: leq"}, "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-a21cd4714db9db1f", "name": "Possibly dead Python function: object_concept", "shortDescription": {"text": "Possibly dead Python function: object_concept"}, "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-3158e34864042047", "name": "Possibly dead Python function: roots", "shortDescription": {"text": "Possibly dead Python function: roots"}, "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-bf9bf3efe7ba537b", "name": "Possibly dead Python function: t0_weak_concept_rule", "shortDescription": {"text": "Possibly dead Python function: t0_weak_concept_rule"}, "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-754a534af6ac9fa8", "name": "Possibly dead Python function: intersect", "shortDescription": {"text": "Possibly dead Python function: intersect"}, "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-abfeb6119d6e188f", "name": "Possibly dead Python function: set_profile", "shortDescription": {"text": "Possibly dead Python function: set_profile"}, "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-5294c3edd493b663", "name": "Possibly dead Python function: leaves", "shortDescription": {"text": "Possibly dead Python function: leaves"}, "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-6437a1b2c72d5237", "name": "Possibly dead Python function: in_range", "shortDescription": {"text": "Possibly dead Python function: in_range"}, "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-131327887992e05c", "name": "Possibly dead Python function: unit_ok", "shortDescription": {"text": "Possibly dead Python function: unit_ok"}, "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-29a4294a51c30169", "name": "Possibly dead Python function: rewrite_whole", "shortDescription": {"text": "Possibly dead Python function: rewrite_whole"}, "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-fe1d59071f970ebd", "name": "Possibly dead Python function: add_all", "shortDescription": {"text": "Possibly dead Python function: add_all"}, "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-08eb4839eb6164f3", "name": "Possibly dead Python function: entity_label", "shortDescription": {"text": "Possibly dead Python function: entity_label"}, "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-4f46a2ac320909ca", "name": "Possibly dead Python function: set_profile", "shortDescription": {"text": "Possibly dead Python function: set_profile"}, "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-c09328db5cbcf7ae", "name": "Possibly dead Python function: sort_key", "shortDescription": {"text": "Possibly dead Python function: sort_key"}, "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-a14a0259f3cf6ed3", "name": "Possibly dead Python function: repl", "shortDescription": {"text": "Possibly dead Python function: repl"}, "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-2d145b2b971a2363", "name": "Possibly dead Python function: link_props", "shortDescription": {"text": "Possibly dead Python function: link_props"}, "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-ef986bc0b13dbe31", "name": "Possibly dead Python function: cancel", "shortDescription": {"text": "Possibly dead Python function: cancel"}, "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-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de3c1f217d72a063", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-05115d08bcc21cdf", "name": "Very large file: scripts/build_aviation_fixtures.py (1814 lines)", "shortDescription": {"text": "Very large file: scripts/build_aviation_fixtures.py (1814 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-bb31e8c18a3cb255", "name": "Very large file: src/ontoforge/estates/meridian_gen.py (1731 lines)", "shortDescription": {"text": "Very large file: src/ontoforge/estates/meridian_gen.py (1731 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-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 13 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 15 placeholder/mock markers across 11 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-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-bea357a6497a2d5d", "name": "Agent authority lacks a verifier contract: CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: CLAUDE.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-a2f898aeb57884dc", "name": "Legacy-named symbol `q_old` in tests/m10/test_views.py:43", "shortDescription": {"text": "Legacy-named symbol `q_old` in tests/m10/test_views.py:43"}, "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-45e741eaf2dc8be0", "name": "Legacy-named symbol `reuse_old` in scripts/build_aviation_fixtures.py:1045", "shortDescription": {"text": "Legacy-named symbol `reuse_old` in scripts/build_aviation_fixtures.py:1045"}, "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-137bb1751883d95f", "name": "Commented-code block (5 lines) in src/ontoforge/engineer/operators.py:561", "shortDescription": {"text": "Commented-code block (5 lines) in src/ontoforge/engineer/operators.py:561"}, "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-f30fd2b784b350c3", "name": "Stub function `invert` (body is just `pass`/`return`) \u2014 src/ontoforge/temper/ops.py:245", "shortDescription": {"text": "Stub function `invert` (body is just `pass`/`return`) \u2014 src/ontoforge/temper/ops.py:245"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8639509e20e9cefc", "name": "Commented-code block (5 lines) in src/ontoforge/server/world.py:769", "shortDescription": {"text": "Commented-code block (5 lines) in src/ontoforge/server/world.py:769"}, "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-39e554c737fc6d76", "name": "Commented-code block (6 lines) in src/ontoforge/server/static/js/apps/inspector.js:61", "shortDescription": {"text": "Commented-code block (6 lines) in src/ontoforge/server/static/js/apps/inspector.js:61"}, "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-0c1fc9472eb6af90", "name": "Commented-code block (5 lines) in src/ontoforge/pipeline/discover.py:66", "shortDescription": {"text": "Commented-code block (5 lines) in src/ontoforge/pipeline/discover.py:66"}, "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-42d04e06cf23a7f4", "name": "Commented-code block (5 lines) in src/ontoforge/pipeline/variants.py:161", "shortDescription": {"text": "Commented-code block (5 lines) in src/ontoforge/pipeline/variants.py:161"}, "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-72c8164aac30f1ae", "name": "Commented-code block (7 lines) in src/ontoforge/lodestone/grounding.py:186", "shortDescription": {"text": "Commented-code block (7 lines) in src/ontoforge/lodestone/grounding.py:186"}, "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-de92a3073c2d683f", "name": "Commented-code block (7 lines) in src/ontoforge/lodestone/__init__.py:105", "shortDescription": {"text": "Commented-code block (7 lines) in src/ontoforge/lodestone/__init__.py:105"}, "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-2610f33052c6ebec", "name": "Commented-code block (6 lines) in src/ontoforge/lodestone/candidates.py:341", "shortDescription": {"text": "Commented-code block (6 lines) in src/ontoforge/lodestone/candidates.py:341"}, "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-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:\nscripts/build_aviation_fixtures.py:pad, scripts/build_aviation_fixtures.py:p\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}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/ontoforge/anvil/detectors.py:rewrite, src/ontoforge/anvil/detectors.py:rewrite, src/ontoforge/anvil/detectors.py:rewrite, src/ontoforge/anvil/detectors.py:rewrite\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}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/ontoforge/temper/views.py:rw, src/ontoforge/temper/views.py:rw, src/ontoforge/temper/views.py:rw, src/ontoforge/temper/views.py:rw\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}}, {"id": "scanner-959dc775c4241ad4", "name": "Near-duplicate function bodies in 18 places", "shortDescription": {"text": "Near-duplicate function bodies in 18 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/ontoforge/temper/ops.py:precondition, src/ontoforge/temper/ops.py:precondition, src/ontoforge/temper/ops.py:precondition, src/ontoforge/temper/ops.py:precondition\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}}, {"id": "scanner-0027e313ade46c8f", "name": "Near-duplicate function bodies in 7 places", "shortDescription": {"text": "Near-duplicate function bodies in 7 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/ontoforge/temper/ops.py:migrate, src/ontoforge/temper/ops.py:migrate, src/ontoforge/temper/ops.py:migrate, src/ontoforge/temper/ops.py:migrate\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}}, {"id": "scanner-c54c6fb8e364daaa", "name": "Near-duplicate function bodies in 16 places", "shortDescription": {"text": "Near-duplicate function bodies in 16 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/ontoforge/temper/ops.py:invert, src/ontoforge/temper/ops.py:invert, src/ontoforge/temper/ops.py:invert, src/ontoforge/temper/ops.py:invert\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}}, {"id": "scanner-9608638e3fa52082", "name": "FastAPI POST `api_reload` without auth dependency \u2014 src/ontoforge/server/app.py:260", "shortDescription": {"text": "FastAPI POST `api_reload` without auth dependency \u2014 src/ontoforge/server/app.py:260"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-baeeb953a07a33db", "name": "FastAPI PUT `api_workspace_put` without auth dependency \u2014 src/ontoforge/server/app.py:394", "shortDescription": {"text": "FastAPI PUT `api_workspace_put` without auth dependency \u2014 src/ontoforge/server/app.py:394"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6087cd2097a5ccbd", "name": "FastAPI POST `api_export` without auth dependency \u2014 src/ontoforge/server/app.py:406", "shortDescription": {"text": "FastAPI POST `api_export` without auth dependency \u2014 src/ontoforge/server/app.py:406"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2eebbc1eb91b3e1", "name": "FastAPI POST `api_ask` without auth dependency \u2014 src/ontoforge/server/app.py:427", "shortDescription": {"text": "FastAPI POST `api_ask` without auth dependency \u2014 src/ontoforge/server/app.py:427"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bcf4f3c0b8fc3771", "name": "FastAPI POST `api_ask_clarify` without auth dependency \u2014 src/ontoforge/server/app.py:435", "shortDescription": {"text": "FastAPI POST `api_ask_clarify` without auth dependency \u2014 src/ontoforge/server/app.py:435"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f628b0f64e84122c", "name": "FastAPI POST `api_review_verdict` without auth dependency \u2014 src/ontoforge/server/app.py:593", "shortDescription": {"text": "FastAPI POST `api_review_verdict` without auth dependency \u2014 src/ontoforge/server/app.py:593"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-020aeb9417ff1498", "name": "FastAPI POST `api_dashboards` without auth dependency \u2014 src/ontoforge/server/app.py:707", "shortDescription": {"text": "FastAPI POST `api_dashboards` without auth dependency \u2014 src/ontoforge/server/app.py:707"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e444713475a867b", "name": "FastAPI POST `api_workspace_build` without auth dependency \u2014 src/ontoforge/server/app.py:790", "shortDescription": {"text": "FastAPI POST `api_workspace_build` without auth dependency \u2014 src/ontoforge/server/app.py:790"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5efecb1689b6113b", "name": "FastAPI POST `api_engineer_interpret` without auth dependency \u2014 src/ontoforge/server/app.py:812", "shortDescription": {"text": "FastAPI POST `api_engineer_interpret` without auth dependency \u2014 src/ontoforge/server/app.py:812"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8d58d131f6d7cf1e", "name": "FastAPI POST `api_engineer_apply` without auth dependency \u2014 src/ontoforge/server/app.py:835", "shortDescription": {"text": "FastAPI POST `api_engineer_apply` without auth dependency \u2014 src/ontoforge/server/app.py:835"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7aac2b2b3782ac1a", "name": "FastAPI POST `api_engineer_undo` without auth dependency \u2014 src/ontoforge/server/app.py:855", "shortDescription": {"text": "FastAPI POST `api_engineer_undo` without auth dependency \u2014 src/ontoforge/server/app.py:855"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-538f5695e8454ed8", "name": "FastAPI POST `api_extract` without auth dependency \u2014 src/ontoforge/server/app.py:880", "shortDescription": {"text": "FastAPI POST `api_extract` without auth dependency \u2014 src/ontoforge/server/app.py:880"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-963710f42a2c8219", "name": "Unused endpoint: GET /api/status", "shortDescription": {"text": "Unused endpoint: GET /api/status"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8251fb58f5e23401", "name": "Unused endpoint: POST /api/reload", "shortDescription": {"text": "Unused endpoint: POST /api/reload"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `POST /api/reload` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec1f1db9b92600fe", "name": "Unused endpoint: GET /api/ontology", "shortDescription": {"text": "Unused endpoint: GET /api/ontology"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/ontology` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9cbb243dfcbc90f5", "name": "Unused endpoint: GET /api/ontology/class/{uri:path}", "shortDescription": {"text": "Unused endpoint: GET /api/ontology/class/{uri:path}"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/ontology/class/{uri:path}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-34e8a3fdd58dfbbb", "name": "Unused endpoint: GET /api/atlas", "shortDescription": {"text": "Unused endpoint: GET /api/atlas"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/atlas` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-420eae08af758987", "name": "Unused endpoint: GET /api/atlas/link", "shortDescription": {"text": "Unused endpoint: GET /api/atlas/link"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/atlas/link` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69a4b6b0704273d4", "name": "Unused endpoint: GET /api/workspace", "shortDescription": {"text": "Unused endpoint: GET /api/workspace"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/workspace` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25904d8303f57590", "name": "Unused endpoint: PUT /api/workspace", "shortDescription": {"text": "Unused endpoint: PUT /api/workspace"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `PUT /api/workspace` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6fade9d72cd7b1df", "name": "Unused endpoint: POST /api/export", "shortDescription": {"text": "Unused endpoint: POST /api/export"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `POST /api/export` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e76389e045220c08", "name": "Unused endpoint: GET /api/exports", "shortDescription": {"text": "Unused endpoint: GET /api/exports"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/exports` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8fc7c3b9f2c75416", "name": "Unused endpoint: POST /api/ask", "shortDescription": {"text": "Unused endpoint: POST /api/ask"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `POST /api/ask` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22c4222755543f97", "name": "Unused endpoint: POST /api/ask/clarify", "shortDescription": {"text": "Unused endpoint: POST /api/ask/clarify"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `POST /api/ask/clarify` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-78e66035e7574d6e", "name": "Unused endpoint: GET /api/entities/{uri:path}/neighbors", "shortDescription": {"text": "Unused endpoint: GET /api/entities/{uri:path}/neighbors"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/entities/{uri:path}/neighbors` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff5f81c59b81c500", "name": "Unused endpoint: GET /api/entities/{uri:path}", "shortDescription": {"text": "Unused endpoint: GET /api/entities/{uri:path}"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/entities/{uri:path}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2483f4833d20f7d", "name": "Unused endpoint: GET /api/atoms/{atom_id}", "shortDescription": {"text": "Unused endpoint: GET /api/atoms/{atom_id}"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/atoms/{atom_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd62b5d786ff5d6e", "name": "Unused endpoint: GET /api/provenance/{prov_ref}", "shortDescription": {"text": "Unused endpoint: GET /api/provenance/{prov_ref}"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/provenance/{prov_ref}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8824ff446a3500af", "name": "Unused endpoint: GET /api/review", "shortDescription": {"text": "Unused endpoint: GET /api/review"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/review` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d898ba61b9cc37de", "name": "Unused endpoint: POST /api/review/{decision_id:path}", "shortDescription": {"text": "Unused endpoint: POST /api/review/{decision_id:path}"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `POST /api/review/{decision_id:path}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de7869e8b771ce01", "name": "Unused endpoint: POST /api/dashboards", "shortDescription": {"text": "Unused endpoint: POST /api/dashboards"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `POST /api/dashboards` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f62bb145b7a9bf24", "name": "Unused endpoint: GET /api/dashboards", "shortDescription": {"text": "Unused endpoint: GET /api/dashboards"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/dashboards` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e9c21c7292ee8388", "name": "Unused endpoint: GET /api/catalog", "shortDescription": {"text": "Unused endpoint: GET /api/catalog"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/catalog` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a5dcc403c902407", "name": "Unused endpoint: GET /api/workspace/state", "shortDescription": {"text": "Unused endpoint: GET /api/workspace/state"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /api/workspace/state` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c4b442367e1a58e", "name": "Unused endpoint: POST /api/workspace/build", "shortDescription": {"text": "Unused endpoint: POST /api/workspace/build"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `POST /api/workspace/build` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c461aa4cda923ea2", "name": "Unused endpoint: POST /api/engineer/interpret", "shortDescription": {"text": "Unused endpoint: POST /api/engineer/interpret"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `POST /api/engineer/interpret` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2cee462b24daf53", "name": "Unused endpoint: POST /api/engineer/apply", "shortDescription": {"text": "Unused endpoint: POST /api/engineer/apply"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `POST /api/engineer/apply` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e23f829d1bf3c0a", "name": "Unused endpoint: POST /api/engineer/undo", "shortDescription": {"text": "Unused endpoint: POST /api/engineer/undo"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `POST /api/engineer/undo` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`src/ontoforge/server/app.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24913"}, "properties": {"repository": "cheesesteakfanatic/autology", "repoUrl": "https://github.com/cheesesteakfanatic/autology", "branch": "main"}, "results": [{"ruleId": "scanner-3664536691feaa0b", "level": "note", "message": {"text": "Possibly dead Python function: master_key"}, "properties": {"repobilityId": "54da4c5538e99b65", "scanner": "scanner-primary", "fingerprint": "3664536691feaa0b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/build_aviation_fixtures.py:1448"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-687387c88d1eb591", "level": "note", "message": {"text": "Possibly dead Python function: entity_count"}, "properties": {"repobilityId": "4120268b6dcec214", "scanner": "scanner-primary", "fingerprint": "687387c88d1eb591", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/er/incremental.py:169"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-297e65cc79a88d0e", "level": "note", "message": {"text": "Possibly dead Python function: field_weights"}, "properties": {"repobilityId": "27089eb5f113e8ee", "scanner": "scanner-primary", "fingerprint": "297e65cc79a88d0e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/er/fs.py:344"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a28c25cb4689d2a5", "level": "note", "message": {"text": "Possibly dead Python function: leq"}, "properties": {"repobilityId": "6e36a353880f4bad", "scanner": "scanner-primary", "fingerprint": "a28c25cb4689d2a5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/strata/lattice.py:50"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a21cd4714db9db1f", "level": "note", "message": {"text": "Possibly dead Python function: object_concept"}, "properties": {"repobilityId": "4992ebe386e04b07", "scanner": "scanner-primary", "fingerprint": "a21cd4714db9db1f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/strata/lattice.py:72"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3158e34864042047", "level": "note", "message": {"text": "Possibly dead Python function: roots"}, "properties": {"repobilityId": "4de3b5d506cf8a7d", "scanner": "scanner-primary", "fingerprint": "3158e34864042047", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/strata/lattice.py:87"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bf9bf3efe7ba537b", "level": "note", "message": {"text": "Possibly dead Python function: t0_weak_concept_rule"}, "properties": {"repobilityId": "1103f25f3120a7d0", "scanner": "scanner-primary", "fingerprint": "bf9bf3efe7ba537b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/strata/admission.py:140"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-754a534af6ac9fa8", "level": "note", "message": {"text": "Possibly dead Python function: intersect"}, "properties": {"repobilityId": "d8b6672063ba76a1", "scanner": "scanner-primary", "fingerprint": "754a534af6ac9fa8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/contracts/temporal.py:61"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-abfeb6119d6e188f", "level": "note", "message": {"text": "Possibly dead Python function: set_profile"}, "properties": {"repobilityId": "e6a49343e59ab298", "scanner": "scanner-primary", "fingerprint": "abfeb6119d6e188f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/contracts/decisions.py:89"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5294c3edd493b663", "level": "note", "message": {"text": "Possibly dead Python function: leaves"}, "properties": {"repobilityId": "75232eb7dcff3c61", "scanner": "scanner-primary", "fingerprint": "5294c3edd493b663", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/contracts/provenance.py:173"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6437a1b2c72d5237", "level": "note", "message": {"text": "Possibly dead Python function: in_range"}, "properties": {"repobilityId": "09360fb8b225a205", "scanner": "scanner-primary", "fingerprint": "6437a1b2c72d5237", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/warden/expectations.py:323"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-131327887992e05c", "level": "note", "message": {"text": "Possibly dead Python function: unit_ok"}, "properties": {"repobilityId": "3eb867727e1c7879", "scanner": "scanner-primary", "fingerprint": "131327887992e05c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/warden/expectations.py:332"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-29a4294a51c30169", "level": "note", "message": {"text": "Possibly dead Python function: rewrite_whole"}, "properties": {"repobilityId": "f02c95327890b1cd", "scanner": "scanner-primary", "fingerprint": "29a4294a51c30169", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/anvil/detectors.py:351"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fe1d59071f970ebd", "level": "note", "message": {"text": "Possibly dead Python function: add_all"}, "properties": {"repobilityId": "c41277eda7d824b0", "scanner": "scanner-primary", "fingerprint": "fe1d59071f970ebd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/profiling/sketches.py:228"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08eb4839eb6164f3", "level": "note", "message": {"text": "Possibly dead Python function: entity_label"}, "properties": {"repobilityId": "88a394114a057118", "scanner": "scanner-primary", "fingerprint": "08eb4839eb6164f3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/world.py:339"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4f46a2ac320909ca", "level": "note", "message": {"text": "Possibly dead Python function: set_profile"}, "properties": {"repobilityId": "e6a49343e59ab298", "scanner": "scanner-primary", "fingerprint": "4f46a2ac320909ca", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/spine/spine.py:75"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c09328db5cbcf7ae", "level": "note", "message": {"text": "Possibly dead Python function: sort_key"}, "properties": {"repobilityId": "ac2a4181eae38738", "scanner": "scanner-primary", "fingerprint": "c09328db5cbcf7ae", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/aimodels/context.py:195"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a14a0259f3cf6ed3", "level": "note", "message": {"text": "Possibly dead Python function: repl"}, "properties": {"repobilityId": "6f5d3779bbb8be8b", "scanner": "scanner-primary", "fingerprint": "a14a0259f3cf6ed3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/aimodels/secure.py:68"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d145b2b971a2363", "level": "note", "message": {"text": "Possibly dead Python function: link_props"}, "properties": {"repobilityId": "c284342e7ca3799a", "scanner": "scanner-primary", "fingerprint": "2d145b2b971a2363", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/pipeline/mapping.py:158"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ef986bc0b13dbe31", "level": "note", "message": {"text": "Possibly dead Python function: cancel"}, "properties": {"repobilityId": "dd964844068540fe", "scanner": "scanner-primary", "fingerprint": "ef986bc0b13dbe31", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/pipeline/playground.py:402"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-de3c1f217d72a063", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "1e804384f128dccb", "scanner": "scanner-primary", "fingerprint": "de3c1f217d72a063", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-de3c1f217d72a063", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "2f59c2831070d7be", "scanner": "scanner-primary", "fingerprint": "de3c1f217d72a063", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 30}}}]}, {"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-05115d08bcc21cdf", "level": "note", "message": {"text": "Very large file: scripts/build_aviation_fixtures.py (1814 lines)"}, "properties": {"repobilityId": "5945bb63f9f5c73a", "scanner": "scanner-primary", "fingerprint": "05115d08bcc21cdf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bb31e8c18a3cb255", "level": "note", "message": {"text": "Very large file: src/ontoforge/estates/meridian_gen.py (1731 lines)"}, "properties": {"repobilityId": "cf391a4c8f2681e2", "scanner": "scanner-primary", "fingerprint": "bb31e8c18a3cb255", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "ae62dd669ceeee1d", "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": "be9fec9b6412074f", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "9d634698c878ca55", "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": "b824fe7634cf5bbb", "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": "2553b11e9b323950", "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": "74d32d9024f37a00", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-bea357a6497a2d5d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: CLAUDE.md"}, "properties": {"repobilityId": "aae72df3934829ac", "scanner": "scanner-primary", "fingerprint": "bea357a6497a2d5d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a2f898aeb57884dc", "level": "note", "message": {"text": "Legacy-named symbol `q_old` in tests/m10/test_views.py:43"}, "properties": {"repobilityId": "7f6c21dd0b3bfe43", "scanner": "scanner-primary", "fingerprint": "a2f898aeb57884dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-45e741eaf2dc8be0", "level": "note", "message": {"text": "Legacy-named symbol `reuse_old` in scripts/build_aviation_fixtures.py:1045"}, "properties": {"repobilityId": "11ccef92a2d25b74", "scanner": "scanner-primary", "fingerprint": "45e741eaf2dc8be0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-137bb1751883d95f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ontoforge/engineer/operators.py:561"}, "properties": {"repobilityId": "5ead737fbb29f0d0", "scanner": "scanner-primary", "fingerprint": "137bb1751883d95f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f30fd2b784b350c3", "level": "note", "message": {"text": "Stub function `invert` (body is just `pass`/`return`) \u2014 src/ontoforge/temper/ops.py:245"}, "properties": {"repobilityId": "40da949b0b50f073", "scanner": "scanner-primary", "fingerprint": "f30fd2b784b350c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-8639509e20e9cefc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ontoforge/server/world.py:769"}, "properties": {"repobilityId": "fa444bc0b068758c", "scanner": "scanner-primary", "fingerprint": "8639509e20e9cefc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39e554c737fc6d76", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ontoforge/server/static/js/apps/inspector.js:61"}, "properties": {"repobilityId": "292e119a8b294020", "scanner": "scanner-primary", "fingerprint": "39e554c737fc6d76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c1fc9472eb6af90", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ontoforge/pipeline/discover.py:66"}, "properties": {"repobilityId": "3680667277a83cdf", "scanner": "scanner-primary", "fingerprint": "0c1fc9472eb6af90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42d04e06cf23a7f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ontoforge/pipeline/variants.py:161"}, "properties": {"repobilityId": "a4b1db2601247fb6", "scanner": "scanner-primary", "fingerprint": "42d04e06cf23a7f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72c8164aac30f1ae", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/ontoforge/lodestone/grounding.py:186"}, "properties": {"repobilityId": "fb3bc3979cbd79e0", "scanner": "scanner-primary", "fingerprint": "72c8164aac30f1ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de92a3073c2d683f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/ontoforge/lodestone/__init__.py:105"}, "properties": {"repobilityId": "80cfc6fdf6f549f6", "scanner": "scanner-primary", "fingerprint": "de92a3073c2d683f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2610f33052c6ebec", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ontoforge/lodestone/candidates.py:341"}, "properties": {"repobilityId": "0984329f78d7234a", "scanner": "scanner-primary", "fingerprint": "2610f33052c6ebec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "adccdc9cd1557c73", "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": "f0412b3255c76897", "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": "476d014c522a1871", "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": "c252062ea0245f95", "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": "4528b3d5563602bc", "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": "94e1c1bb5a6b78ed", "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": "5ce0fd9769042aa4", "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": "b998046cdedbf4a5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "99f011725ba44d4c", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "87164991e2b9fb0e", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "e9cb135be1c1a616", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-959dc775c4241ad4", "level": "note", "message": {"text": "Near-duplicate function bodies in 18 places"}, "properties": {"repobilityId": "39bd235ba649350c", "scanner": "scanner-primary", "fingerprint": "959dc775c4241ad4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-959dc775c4241ad4", "level": "note", "message": {"text": "Near-duplicate function bodies in 18 places"}, "properties": {"repobilityId": "08f97a4b0e7beb8f", "scanner": "scanner-primary", "fingerprint": "959dc775c4241ad4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-0027e313ade46c8f", "level": "note", "message": {"text": "Near-duplicate function bodies in 7 places"}, "properties": {"repobilityId": "bc25b591d1193fdc", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-c54c6fb8e364daaa", "level": "note", "message": {"text": "Near-duplicate function bodies in 16 places"}, "properties": {"repobilityId": "812e0ce55adca2be", "scanner": "scanner-primary", "fingerprint": "c54c6fb8e364daaa", "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": "76474336fa55c4ad", "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": "f9c2bb847d35cf73", "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": "b3e842988bf3c014", "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": "bedb0b725f3c0d75", "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": "8e4bd7a4072289eb", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-9608638e3fa52082", "level": "error", "message": {"text": "FastAPI POST `api_reload` without auth dependency \u2014 src/ontoforge/server/app.py:260"}, "properties": {"repobilityId": "ef67a3a77303340b", "scanner": "scanner-primary", "fingerprint": "9608638e3fa52082", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 260}}}]}, {"ruleId": "scanner-baeeb953a07a33db", "level": "error", "message": {"text": "FastAPI PUT `api_workspace_put` without auth dependency \u2014 src/ontoforge/server/app.py:394"}, "properties": {"repobilityId": "bf8673337b901a9f", "scanner": "scanner-primary", "fingerprint": "baeeb953a07a33db", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 394}}}]}, {"ruleId": "scanner-6087cd2097a5ccbd", "level": "error", "message": {"text": "FastAPI POST `api_export` without auth dependency \u2014 src/ontoforge/server/app.py:406"}, "properties": {"repobilityId": "545453c2e7ad1fcd", "scanner": "scanner-primary", "fingerprint": "6087cd2097a5ccbd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 406}}}]}, {"ruleId": "scanner-d2eebbc1eb91b3e1", "level": "error", "message": {"text": "FastAPI POST `api_ask` without auth dependency \u2014 src/ontoforge/server/app.py:427"}, "properties": {"repobilityId": "9033030f17697570", "scanner": "scanner-primary", "fingerprint": "d2eebbc1eb91b3e1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 427}}}]}, {"ruleId": "scanner-bcf4f3c0b8fc3771", "level": "error", "message": {"text": "FastAPI POST `api_ask_clarify` without auth dependency \u2014 src/ontoforge/server/app.py:435"}, "properties": {"repobilityId": "a0040c7096cfd1f3", "scanner": "scanner-primary", "fingerprint": "bcf4f3c0b8fc3771", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 435}}}]}, {"ruleId": "scanner-f628b0f64e84122c", "level": "error", "message": {"text": "FastAPI POST `api_review_verdict` without auth dependency \u2014 src/ontoforge/server/app.py:593"}, "properties": {"repobilityId": "e0816e2470e7625b", "scanner": "scanner-primary", "fingerprint": "f628b0f64e84122c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 593}}}]}, {"ruleId": "scanner-020aeb9417ff1498", "level": "error", "message": {"text": "FastAPI POST `api_dashboards` without auth dependency \u2014 src/ontoforge/server/app.py:707"}, "properties": {"repobilityId": "f917806b43f71a4e", "scanner": "scanner-primary", "fingerprint": "020aeb9417ff1498", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 707}}}]}, {"ruleId": "scanner-4e444713475a867b", "level": "error", "message": {"text": "FastAPI POST `api_workspace_build` without auth dependency \u2014 src/ontoforge/server/app.py:790"}, "properties": {"repobilityId": "046492115938cb75", "scanner": "scanner-primary", "fingerprint": "4e444713475a867b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 790}}}]}, {"ruleId": "scanner-5efecb1689b6113b", "level": "error", "message": {"text": "FastAPI POST `api_engineer_interpret` without auth dependency \u2014 src/ontoforge/server/app.py:812"}, "properties": {"repobilityId": "3bf8772e4cc72af1", "scanner": "scanner-primary", "fingerprint": "5efecb1689b6113b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 812}}}]}, {"ruleId": "scanner-8d58d131f6d7cf1e", "level": "error", "message": {"text": "FastAPI POST `api_engineer_apply` without auth dependency \u2014 src/ontoforge/server/app.py:835"}, "properties": {"repobilityId": "a2603061be812817", "scanner": "scanner-primary", "fingerprint": "8d58d131f6d7cf1e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 835}}}]}, {"ruleId": "scanner-7aac2b2b3782ac1a", "level": "error", "message": {"text": "FastAPI POST `api_engineer_undo` without auth dependency \u2014 src/ontoforge/server/app.py:855"}, "properties": {"repobilityId": "b36640fa78d6bd1f", "scanner": "scanner-primary", "fingerprint": "7aac2b2b3782ac1a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 855}}}]}, {"ruleId": "scanner-538f5695e8454ed8", "level": "error", "message": {"text": "FastAPI POST `api_extract` without auth dependency \u2014 src/ontoforge/server/app.py:880"}, "properties": {"repobilityId": "31a3edfba688e30f", "scanner": "scanner-primary", "fingerprint": "538f5695e8454ed8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ontoforge/server/app.py"}, "region": {"startLine": 880}}}]}, {"ruleId": "scanner-963710f42a2c8219", "level": "note", "message": {"text": "Unused endpoint: GET /api/status"}, "properties": {"repobilityId": "cce53b765b7e2a20", "scanner": "scanner-primary", "fingerprint": "963710f42a2c8219", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8251fb58f5e23401", "level": "note", "message": {"text": "Unused endpoint: POST /api/reload"}, "properties": {"repobilityId": "af12d5cc555bd599", "scanner": "scanner-primary", "fingerprint": "8251fb58f5e23401", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ec1f1db9b92600fe", "level": "note", "message": {"text": "Unused endpoint: GET /api/ontology"}, "properties": {"repobilityId": "4d408c13627c62ef", "scanner": "scanner-primary", "fingerprint": "ec1f1db9b92600fe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9cbb243dfcbc90f5", "level": "note", "message": {"text": "Unused endpoint: GET /api/ontology/class/{uri:path}"}, "properties": {"repobilityId": "603c76aa714da0d4", "scanner": "scanner-primary", "fingerprint": "9cbb243dfcbc90f5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-34e8a3fdd58dfbbb", "level": "note", "message": {"text": "Unused endpoint: GET /api/atlas"}, "properties": {"repobilityId": "5865b4d3de52e3ec", "scanner": "scanner-primary", "fingerprint": "34e8a3fdd58dfbbb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-420eae08af758987", "level": "note", "message": {"text": "Unused endpoint: GET /api/atlas/link"}, "properties": {"repobilityId": "a6620f3098c1a739", "scanner": "scanner-primary", "fingerprint": "420eae08af758987", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69a4b6b0704273d4", "level": "note", "message": {"text": "Unused endpoint: GET /api/workspace"}, "properties": {"repobilityId": "50e59ad6d8db0aac", "scanner": "scanner-primary", "fingerprint": "69a4b6b0704273d4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-25904d8303f57590", "level": "note", "message": {"text": "Unused endpoint: PUT /api/workspace"}, "properties": {"repobilityId": "27e0d3640a9b9d0d", "scanner": "scanner-primary", "fingerprint": "25904d8303f57590", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6fade9d72cd7b1df", "level": "note", "message": {"text": "Unused endpoint: POST /api/export"}, "properties": {"repobilityId": "90ebebfaac1f1309", "scanner": "scanner-primary", "fingerprint": "6fade9d72cd7b1df", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e76389e045220c08", "level": "note", "message": {"text": "Unused endpoint: GET /api/exports"}, "properties": {"repobilityId": "793c0a5f6da0e46f", "scanner": "scanner-primary", "fingerprint": "e76389e045220c08", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8fc7c3b9f2c75416", "level": "note", "message": {"text": "Unused endpoint: POST /api/ask"}, "properties": {"repobilityId": "ed0ac688a14b0049", "scanner": "scanner-primary", "fingerprint": "8fc7c3b9f2c75416", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-22c4222755543f97", "level": "note", "message": {"text": "Unused endpoint: POST /api/ask/clarify"}, "properties": {"repobilityId": "9c18d93061e70af2", "scanner": "scanner-primary", "fingerprint": "22c4222755543f97", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-78e66035e7574d6e", "level": "note", "message": {"text": "Unused endpoint: GET /api/entities/{uri:path}/neighbors"}, "properties": {"repobilityId": "7c06c7c6ad843586", "scanner": "scanner-primary", "fingerprint": "78e66035e7574d6e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ff5f81c59b81c500", "level": "note", "message": {"text": "Unused endpoint: GET /api/entities/{uri:path}"}, "properties": {"repobilityId": "ba8309e894daf94f", "scanner": "scanner-primary", "fingerprint": "ff5f81c59b81c500", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f2483f4833d20f7d", "level": "note", "message": {"text": "Unused endpoint: GET /api/atoms/{atom_id}"}, "properties": {"repobilityId": "bd3ec63ed2d56c23", "scanner": "scanner-primary", "fingerprint": "f2483f4833d20f7d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd62b5d786ff5d6e", "level": "note", "message": {"text": "Unused endpoint: GET /api/provenance/{prov_ref}"}, "properties": {"repobilityId": "da85dd4d9e202cea", "scanner": "scanner-primary", "fingerprint": "fd62b5d786ff5d6e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8824ff446a3500af", "level": "note", "message": {"text": "Unused endpoint: GET /api/review"}, "properties": {"repobilityId": "94a7de4849cda175", "scanner": "scanner-primary", "fingerprint": "8824ff446a3500af", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d898ba61b9cc37de", "level": "note", "message": {"text": "Unused endpoint: POST /api/review/{decision_id:path}"}, "properties": {"repobilityId": "a559cacdcc007540", "scanner": "scanner-primary", "fingerprint": "d898ba61b9cc37de", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-de7869e8b771ce01", "level": "note", "message": {"text": "Unused endpoint: POST /api/dashboards"}, "properties": {"repobilityId": "031302bf722bb614", "scanner": "scanner-primary", "fingerprint": "de7869e8b771ce01", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f62bb145b7a9bf24", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboards"}, "properties": {"repobilityId": "679d40e9aa8234aa", "scanner": "scanner-primary", "fingerprint": "f62bb145b7a9bf24", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e9c21c7292ee8388", "level": "note", "message": {"text": "Unused endpoint: GET /api/catalog"}, "properties": {"repobilityId": "8f004f74cf7e7ac9", "scanner": "scanner-primary", "fingerprint": "e9c21c7292ee8388", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1a5dcc403c902407", "level": "note", "message": {"text": "Unused endpoint: GET /api/workspace/state"}, "properties": {"repobilityId": "ae1ef08ff7b94844", "scanner": "scanner-primary", "fingerprint": "1a5dcc403c902407", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2c4b442367e1a58e", "level": "note", "message": {"text": "Unused endpoint: POST /api/workspace/build"}, "properties": {"repobilityId": "ca0fdaf4393117bd", "scanner": "scanner-primary", "fingerprint": "2c4b442367e1a58e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c461aa4cda923ea2", "level": "note", "message": {"text": "Unused endpoint: POST /api/engineer/interpret"}, "properties": {"repobilityId": "65166a0e31f53249", "scanner": "scanner-primary", "fingerprint": "c461aa4cda923ea2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e2cee462b24daf53", "level": "note", "message": {"text": "Unused endpoint: POST /api/engineer/apply"}, "properties": {"repobilityId": "9958b9757e4b76f0", "scanner": "scanner-primary", "fingerprint": "e2cee462b24daf53", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2e23f829d1bf3c0a", "level": "note", "message": {"text": "Unused endpoint: POST /api/engineer/undo"}, "properties": {"repobilityId": "228ec89edb4ce3a0", "scanner": "scanner-primary", "fingerprint": "2e23f829d1bf3c0a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "bf4b1eb1facd9c33", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}