Issue Categories
VibeRails classifies every discovered issue into one of 17 categories. Each category has a distinct icon, colour, and typical severity range to help you prioritise at a glance.
Visual Overview
Issues appear with category icons and severity badges throughout the interface — in the issues table, triage mode, and export reports.
All Categories
The table below lists every category, its typical severity range, and an example finding.
| Category | Description | Severity Range | Example |
|---|---|---|---|
| Security | Vulnerabilities that could be exploited by attackers — injection, XSS, auth flaws, exposed secrets. | Critical – High | Unsanitised user input passed directly to eval(). |
| Performance | Code paths that cause unnecessary CPU, memory, or network usage. | High – Low | Database query executed inside a loop without batching. |
| Bug | Logic errors that produce incorrect behaviour at runtime. | Critical – Medium | Off-by-one error in array boundary check. |
| Error Handling | Missing or incorrect error/exception handling that can cause silent failures or crashes. | High – Low | Empty catch block that swallows exceptions without logging. |
| Type Safety | Mismatched or missing types that could lead to runtime type errors. | High – Low | Using any type where a specific interface exists. |
| Dead Code | Unreachable code, unused variables, or exports that are never imported. | Medium – Info | Function defined but never called from any module. |
| Maintainability | Code that is difficult to understand, modify, or extend — high complexity, deep nesting, magic numbers. | Medium – Low | Function with cyclomatic complexity above 20. |
| Code Quality | Style issues, naming inconsistencies, and violations of project conventions. | Low – Info | Inconsistent naming convention: getUserData vs fetch_user_data. |
| Documentation | Missing or outdated documentation, doc comments, or README instructions. | Low – Info | Public API method without a JSDoc comment. |
| Accessibility | UI elements that are inaccessible to assistive technologies or fail WCAG guidelines. | High – Low | Image without an alt attribute. |
| Testing | Missing test coverage, fragile tests, or test anti-patterns. | Medium – Low | Critical business logic with zero unit test coverage. |
| Configuration | Issues in config files, environment setup, or build configuration. | High – Low | Production build still using development API endpoint. |
| Dependencies | Outdated, vulnerable, or unnecessary dependencies in the project. | Critical – Low | Package with a known CVE still pinned to a vulnerable version. |
| Logging | Missing, excessive, or insecure logging that impacts observability or leaks data. | Medium – Low | Logging a full user object including password hash. |
| Concurrency | Race conditions, deadlocks, or unsafe shared-state access in concurrent code. | Critical – Medium | Shared mutable state accessed from multiple async handlers without a lock. |
| API Design | Inconsistent endpoints, missing versioning, or poor contract design in public APIs. | High – Low | REST endpoint returning different response shapes for the same resource. |
| Data Validation | Missing or insufficient input validation at system boundaries. | High – Medium | User-submitted email address accepted without format validation. |
Severity Levels
VibeRails uses five severity levels. The AI model assigns severity based on potential impact and likelihood:
| Level | Colour | Meaning |
|---|---|---|
| Critical | Red | Exploitable vulnerability or data-loss bug that should be fixed immediately. |
| High | Orange | Significant issue that is likely to cause problems in production. |
| Medium | Yellow | Moderate issue worth addressing in the current sprint. |
| Low | Blue | Minor improvement that can be scheduled for a future cleanup pass. |
| Info | Grey | Observation or suggestion with no immediate risk. |
Tip: Use the severity filter in the issues table to focus on Critical and High issues first, then work your way down.
Filtering by Category
You can filter the issues table by category using the category dropdown above the table. Multiple categories can be selected simultaneously. The active filter is preserved when you switch between triage mode and the table view.