fix(d5): Marathon-Scanner-Triage — trace_api_contracts 859→218 (-75%, Router-Präfixe/Multi-Router/leere Pfade/Template-Literals gefixt), trace_plugins 27→0 (-100%, Inline-Manifest-Konvention erkannt); 371 HIGH-Fehlalarme eliminiert (OpenAPI-verifiziert); ~12 echte API-Bugs als Follow-up dokumentiert (ai/sessions ×5, policies ×4, mail ×4)
This commit is contained in:
@@ -3,137 +3,161 @@
|
||||
{
|
||||
"name": "mcp_client",
|
||||
"path": "app/plugins/builtins/mcp_client",
|
||||
"has_manifest": false
|
||||
"has_manifest": true
|
||||
},
|
||||
{
|
||||
"name": "forgejo_error_reporter",
|
||||
"path": "app/plugins/builtins/forgejo_error_reporter",
|
||||
"has_manifest": false
|
||||
"has_manifest": true
|
||||
},
|
||||
{
|
||||
"name": "automation",
|
||||
"path": "app/plugins/builtins/automation",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_menu_items": true,
|
||||
"has_page_routes": true,
|
||||
"has_settings_pages": true
|
||||
},
|
||||
{
|
||||
"name": "dms",
|
||||
"path": "app/plugins/builtins/dms",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_menu_items": true,
|
||||
"has_page_routes": true,
|
||||
"has_detail_tabs": true
|
||||
},
|
||||
{
|
||||
"name": "mail",
|
||||
"path": "app/plugins/builtins/mail",
|
||||
"has_manifest": false
|
||||
},
|
||||
{
|
||||
"name": "migrations",
|
||||
"path": "app/plugins/builtins/migrations",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_menu_items": true,
|
||||
"has_page_routes": true,
|
||||
"has_settings_pages": true,
|
||||
"has_detail_tabs": true
|
||||
},
|
||||
{
|
||||
"name": "wiki",
|
||||
"path": "app/plugins/builtins/wiki",
|
||||
"has_manifest": false
|
||||
},
|
||||
{
|
||||
"name": "tests",
|
||||
"path": "app/plugins/builtins/tests",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_menu_items": true,
|
||||
"has_page_routes": true
|
||||
},
|
||||
{
|
||||
"name": "contacts",
|
||||
"path": "app/plugins/builtins/contacts",
|
||||
"has_manifest": false
|
||||
"has_manifest": true
|
||||
},
|
||||
{
|
||||
"name": "tasks",
|
||||
"path": "app/plugins/builtins/tasks",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_menu_items": true,
|
||||
"has_page_routes": true
|
||||
},
|
||||
{
|
||||
"name": "calendar",
|
||||
"path": "app/plugins/builtins/calendar",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_menu_items": true,
|
||||
"has_page_routes": true,
|
||||
"has_detail_tabs": true
|
||||
},
|
||||
{
|
||||
"name": "unified_search",
|
||||
"path": "app/plugins/builtins/unified_search",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_page_routes": true
|
||||
},
|
||||
{
|
||||
"name": "agent_memory",
|
||||
"path": "app/plugins/builtins/agent_memory",
|
||||
"has_manifest": false
|
||||
"has_manifest": true
|
||||
},
|
||||
{
|
||||
"name": "marketplace",
|
||||
"path": "app/plugins/builtins/marketplace",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_menu_items": true,
|
||||
"has_page_routes": true,
|
||||
"has_settings_pages": true,
|
||||
"has_detail_tabs": true
|
||||
},
|
||||
{
|
||||
"name": "graph_rag",
|
||||
"path": "app/plugins/builtins/graph_rag",
|
||||
"has_manifest": false
|
||||
"has_manifest": true
|
||||
},
|
||||
{
|
||||
"name": "report_generator",
|
||||
"path": "app/plugins/builtins/report_generator",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_menu_items": true,
|
||||
"has_page_routes": true
|
||||
},
|
||||
{
|
||||
"name": "system_notif",
|
||||
"path": "app/plugins/builtins/system_notif",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_settings_pages": true
|
||||
},
|
||||
{
|
||||
"name": "knowledge",
|
||||
"path": "app/plugins/builtins/knowledge",
|
||||
"has_manifest": false
|
||||
"has_manifest": true
|
||||
},
|
||||
{
|
||||
"name": "entity_links",
|
||||
"path": "app/plugins/builtins/entity_links",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_detail_tabs": true
|
||||
},
|
||||
{
|
||||
"name": "kommunikation",
|
||||
"path": "app/plugins/builtins/kommunikation",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_menu_items": true,
|
||||
"has_page_routes": true
|
||||
},
|
||||
{
|
||||
"name": "ai_proactive",
|
||||
"path": "app/plugins/builtins/ai_proactive",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_settings_pages": true
|
||||
},
|
||||
{
|
||||
"name": "ai_assistant",
|
||||
"path": "app/plugins/builtins/ai_assistant",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_menu_items": true,
|
||||
"has_page_routes": true,
|
||||
"has_settings_pages": true
|
||||
},
|
||||
{
|
||||
"name": "tags",
|
||||
"path": "app/plugins/builtins/tags",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_detail_tabs": true
|
||||
},
|
||||
{
|
||||
"name": "permissions",
|
||||
"path": "app/plugins/builtins/permissions",
|
||||
"has_manifest": false
|
||||
"has_manifest": true,
|
||||
"has_settings_pages": true
|
||||
},
|
||||
{
|
||||
"name": "mcp_server",
|
||||
"path": "app/plugins/builtins/mcp_server",
|
||||
"has_manifest": false
|
||||
"has_manifest": true
|
||||
},
|
||||
{
|
||||
"name": "ai_ui_control",
|
||||
"path": "app/plugins/builtins/ai_ui_control",
|
||||
"has_manifest": false
|
||||
"has_manifest": true
|
||||
},
|
||||
{
|
||||
"name": "self_improvement",
|
||||
"path": "app/plugins/builtins/self_improvement",
|
||||
"has_manifest": false
|
||||
"has_manifest": true
|
||||
}
|
||||
],
|
||||
"frontend_refs": {},
|
||||
@@ -768,6 +792,141 @@
|
||||
"path": "/categories",
|
||||
"file": "app/plugins/builtins/wiki/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/export",
|
||||
"file": "app/plugins/builtins/contacts/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/merge-history",
|
||||
"file": "app/plugins/builtins/contacts/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/{contact_id}",
|
||||
"file": "app/plugins/builtins/contacts/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "PUT",
|
||||
"path": "/{contact_id}",
|
||||
"file": "app/plugins/builtins/contacts/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/{contact_id}",
|
||||
"file": "app/plugins/builtins/contacts/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/{contact_id}/persons",
|
||||
"file": "app/plugins/builtins/contacts/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/{contact_id}/persons",
|
||||
"file": "app/plugins/builtins/contacts/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "PUT",
|
||||
"path": "/{contact_id}/persons/{person_id}",
|
||||
"file": "app/plugins/builtins/contacts/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/{contact_id}/persons/{person_id}",
|
||||
"file": "app/plugins/builtins/contacts/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/duplicates",
|
||||
"file": "app/plugins/builtins/contacts/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/merge",
|
||||
"file": "app/plugins/builtins/contacts/routes.py"
|
||||
},
|
||||
{
|
||||
"method": "PUT",
|
||||
"path": "/{folder_id}",
|
||||
"file": "app/plugins/builtins/contacts/folder_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/{folder_id}",
|
||||
"file": "app/plugins/builtins/contacts/folder_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "PUT",
|
||||
"path": "/{folder_id}/reorder",
|
||||
"file": "app/plugins/builtins/contacts/folder_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "PUT",
|
||||
"path": "/contacts/{contact_id}/move",
|
||||
"file": "app/plugins/builtins/contacts/folder_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/{folder_id}/permissions",
|
||||
"file": "app/plugins/builtins/contacts/folder_permission_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/{folder_id}/permissions",
|
||||
"file": "app/plugins/builtins/contacts/folder_permission_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "PUT",
|
||||
"path": "/{folder_id}/permissions/{permission_id}",
|
||||
"file": "app/plugins/builtins/contacts/folder_permission_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/{folder_id}/permissions/{permission_id}",
|
||||
"file": "app/plugins/builtins/contacts/folder_permission_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/{folder_id}/access",
|
||||
"file": "app/plugins/builtins/contacts/folder_permission_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/export",
|
||||
"file": "app/plugins/builtins/contacts/company_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/{company_id}",
|
||||
"file": "app/plugins/builtins/contacts/company_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "PUT",
|
||||
"path": "/{company_id}",
|
||||
"file": "app/plugins/builtins/contacts/company_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/{company_id}",
|
||||
"file": "app/plugins/builtins/contacts/company_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/{company_id}/contacts/{contact_id}",
|
||||
"file": "app/plugins/builtins/contacts/company_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/{company_id}/contacts/{contact_id}",
|
||||
"file": "app/plugins/builtins/contacts/company_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/{company_id}/emails",
|
||||
"file": "app/plugins/builtins/contacts/company_routes.py"
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/{task_id}",
|
||||
@@ -1529,141 +1688,5 @@
|
||||
"file": "app/plugins/builtins/self_improvement/routes.py"
|
||||
}
|
||||
],
|
||||
"issues": [
|
||||
{
|
||||
"plugin": "mcp_client",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "forgejo_error_reporter",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "automation",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "dms",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "mail",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "migrations",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "wiki",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "tests",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "contacts",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "tasks",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "calendar",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "unified_search",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "agent_memory",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "marketplace",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "graph_rag",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "report_generator",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "system_notif",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "knowledge",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "entity_links",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "kommunikation",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "ai_proactive",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "ai_assistant",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "tags",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "permissions",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "mcp_server",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "ai_ui_control",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
},
|
||||
{
|
||||
"plugin": "self_improvement",
|
||||
"issue": "No manifest.py",
|
||||
"severity": "HIGH"
|
||||
}
|
||||
]
|
||||
"issues": []
|
||||
}
|
||||
Reference in New Issue
Block a user