Repository navigation
Technical Debt Tracker
Open backlog for the qasight codebase. Items come from code reading and known contract gaps, not only inline TODO markers (there are none in qasight/, qasight_api/ or tests/).
Related: Deep Dive - Execution Logic, Troubleshooting and Error Codes, Architecture Overview.
Timeouts normalize to return code 124 (exit 3) and engine exceptions to exit 4, but other signal deaths (e.g. SIGKILL, rc 137) still classify as exit 1. This is locked as a known misclassification in tests/contract/qasight/test_exit_code_contract.py until a signal-aware classifier lands.
qasight/reporting/reporters/factory.py catches per-reporter exceptions, so a configured integration can be skipped silently after a green run. Fix: an opt-in reporters_required: true that maps a reporter failure to exit 3, plus a reporter_failed NDJSON event.
executor.py calls reader.join(timeout=2.0) after the subprocess exits, so a very large final stdout burst could be cut short. Fix: drain until EOF; add an integration test with a large burst.
-
Per-stage Allure wipe:
executor.pyremoves the stage'sallure-results/before each run to isolate stages. Retries must use separate stage names. -
LogBuffer.on_chunkcontains renderer errors (engine/log_buffer.py) so a broken renderer cannot crash a run; the first failure per stage is logged as a warning. -
Boundary catch-alls: the
except Exceptionsites left inqasight/andqasight_api/are deliberate boundaries (orchestrator, reporter factory, persistence backends, API routes, connection checks, third-party report generators). Each logs withexc_infoand has a one-line comment saying why it is broad. -
Orchestrator catch-all:
run_plan()turns an exception fromrun_stage()into an internal-failure stage result, which classifies the plan as exit 4 rather than crashing.
-
Sequential-only orchestrator: a cycle can set
max_parallel_stages(see Scale Runs and Stages - 2026-10-24); the API caps concurrent runs withTESTO_MAX_CONCURRENT_RUNS. -
Exit-code contract single-sourced in
engine/exit_codes.py; timeouts → 124 → exit 3, engine errors → exit 4. -
The second, Docker-based execution stack (
HeadlessEngineService,runners.py, pluggy plugins,/api/v1/executions, Streamlit UI) was removed in v1.1; every run goes throughCycleRunServiceand the engine. -
--ciforces a synchronous report archive; a required archive failure exits 3. -
qasight/persistence/(JsonBackend,DbBackend,composite_backend()) replaced the persistence stub. -
MinIO, the pre-v1.1 snapshot reads and the Docker-stack record shape in
history/were removed in v1.1. -
mypy qasight qasight_apireports 0 errors and blocks CI, as doesruff format --check. -
Silent-error audit: I/O paths (ReportPortal, Extent, metrics and Allure readers, doctor checks, persistence) catch specific exceptions (
OSError,ValueError,requests.RequestException,jinja2.TemplateError,SQLAlchemyError) and log withexc_infoinstead of passing silently. -
BehaveX runs without
--formatter, so it writes its own HTML report again; Allure results come from itsreport.jsonafter the stage. Export and HTML failures are logged, appended torun.logand setStageResult.error(exit code unchanged), so the stage panel andstage_finishedNDJSON show them. -
A failed Git trigger evaluation logs a warning and prefixes the snapshot fallback's
reasonwith the Git error, so the trigger panel andcycle_triggerNDJSON event show it.
On each release or large refactor, re-run rg 'TODO|FIXME|HACK' qasight qasight_api tests, look for new except Exception sites in qasight/engine/, and move fixed items to Resolved.
Generated from docs/Testing Workflows/Technical Debt Tracker.md. Edit it there; changes made in the wiki are overwritten.
Architecture
CLI Commands
Processes & Guides
- CI-CD Pipeline Setup
- E2E Harness Operations Guide
- GitLab Pages Demo
- Publishing Docker Images
- Publishing to Artifactory
- Publishing to PyPI
- Setup Snippets
- Shared Resource Pools
- Team Server
Prompts & Snippets
Roadmap & Strategy
- Feature Gaps and Quick Wins - 2026-10-31
- New User Journey Audit - 2026-11-01
- Paid Features to Offer Free - 2026-10-31
- Product Roadmap
Specs & ADRs
- Affected Test Selection - 2026-10-30
- Alerts Where Developers Look - 2026-10-22
- Architecture Consolidation - 2026-10-06
- Architecture Review - 2026-10-31
- BehaveX Reports - 2026-10-21
- Better Flaky Signal - 2026-11-01
- Command Adapter and JUnit Import - 2026-09-25
- Config JSON Schema - 2026-10-22
- Crash Detection - 2026-10-31
- Delta Comparison Policy
- Docs Site - 2026-10-19
- Docs Vault and Wiki Sync - 2026-10-07
- Easy Setup - 2026-11-01
- Engine Fixes - 2026-11-01
- Engineering Health Review - 2026-10-31
- Exporting Results - 2026-11-01
- Flaky Test Issues - 2026-11-01
- Flaky Test Quarantine - 2026-10-22
- Free Copies of Paid Features - 2026-11-01
- GitHub Action PR Comment - 2026-10-19
- Human-Run Resource Provider - 2026-10-30
- Importer and Integration Bug Hunt - 2026-10-31
- Ingest and Team Server - 2026-10-22
- Interview Readiness Fixes - 2026-10-07
- Library Packaging
- Lifecycle Fixes - 2026-11-02
- MCP Server - 2026-11-01
- New User Journey Automation - 2026-11-01
- Open Source Features - 2026-10-19
- OpenTelemetry Export - 2026-10-30
- Phase 3 Delta Comparison Engine Plan
- Phase 3 Unified Dashboard Plan
- Phase 4 BYOK and Failure Analysis
- Phase 5 UI Redesign - Cycles-First Navigation
- Playwright Adapter - 2026-10-19
- Playwright JSON Import - 2026-10-22
- Plugin API - 2026-10-19
- Product Roadmap Work - 2026-10-25
- Product to Ten - 2026-10-25
- Project Health - 2026-10-26
- QASight Logo - 2026-11-05
- Qualflare Follow-ups - 2026-10-26
- Quarantine From the UI - 2026-11-01
- Specs & ADRs
- Rename to QASight - 2026-11-04
- Repository Pattern - Database-Agnostic Refactor
- Resource Lifecycle Hooks - 2026-10-26
- Resource Pools and Leases - 2026-10-26
- Run Deletion and Stop - 2026-11-02
- Runner Coverage - 2026-10-26
- Scale Runs and Stages - 2026-10-24
- Security and Install Review - 2026-10-31
- Switchable Team Features - 2026-10-24
- Test Delivery Metrics - 2026-11-02
- Test Labels, Environments and Releases - 2026-11-02
- Test Source in AI Summaries - 2026-11-01
- Throwaway Stage Containers - 2026-10-24
- Tidy Cards and Demo Examples - 2026-11-05
- UI Design Review - 2026-10-31
- UI Polish - 2026-11-08
- UI Restyle - 2026-10-19
- UI Review Fixes - 2026-11-01
Testing Workflows
Vault