{"id":50472439,"url":"https://github.com/semcod/regix","last_synced_at":"2026-06-01T11:03:35.027Z","repository":{"id":348256703,"uuid":"1197164691","full_name":"semcod/regix","owner":"semcod","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-27T16:04:09.000Z","size":6890,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T17:09:56.701Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/semcod.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-31T11:30:25.000Z","updated_at":"2026-05-27T16:04:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/semcod/regix","commit_stats":null,"previous_names":["semcod/regix"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/semcod/regix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fregix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fregix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fregix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fregix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/semcod","download_url":"https://codeload.github.com/semcod/regix/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fregix/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33771630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-01T11:03:34.946Z","updated_at":"2026-06-01T11:03:35.015Z","avatar_url":"https://github.com/semcod.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## AI Cost Tracking\n\n![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.1.29-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)\n![AI Cost](https://img.shields.io/badge/AI%20Cost-$2.93-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-15.7h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)\n\n- 🤖 **LLM usage:** $2.9316 (38 commits)\n- 👤 **Human dev:** ~$1567 (15.7h @ $100/h, 30min dedup)\n\nGenerated on 2026-05-31 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)\n\n---\n\n**Regix** is a Python library for detecting, measuring, and reporting code quality regressions between versions of a codebase. It compares static analysis metrics across git commits, branches, or local snapshots and pinpoints exactly which functions, classes, or lines have regressed — and by how much.\n\n\u003e Inspired by operational experience with [pyqual](https://github.com/semcod/pyqual): iterative quality-gate pipelines revealed that without structured regression tracking, metric changes across refactoring cycles are invisible until a gate breaks.\n\n\u003e **Why \"Regix\"?** From **reg**ression + **ix** (like fix/matrix vibe). Short, technical, memorable.\n\n---\n\n## Problem statement\n\nWhen refactoring code over multiple iterations:\n\n- A function's cyclomatic complexity improves in one commit, then regresses two commits later.\n- Test coverage drops by 3 % after a merge — but no single file is obviously responsible.\n- Maintainability index worsens across three files simultaneously; the cause is spread over dozens of small changes.\n- A CI pipeline fails a quality gate without explaining *what changed* since the last passing run.\n\nStandard linters and quality tools report the **current state**. They do not answer: *\"Is this better or worse than before, and where exactly did it change?\"*\n\n**Regix answers that question.**\n\n---\n\n## What Regix does\n\n```\ngit commit A  ──►  snapshot_A  ─┐\n                                ├──► compare ──► regression report\ngit commit B  ──►  snapshot_B  ─┘\n```\n\nFor every function, class, and module it tracks:\n\n| Metric | Unit | Regression when |\n|---|---|---|\n| Cyclomatic complexity (CC) | integer | increases |\n| Maintainability index (MI) | 0–100 | decreases |\n| Test coverage | % | decreases |\n| Function length | lines | increases beyond threshold |\n| Docstring coverage | % | decreases |\n| LLM validation score | 0–1 | decreases (via vallm) |\n| Import count | integer | increases |\n| Fan-out (delegation depth) | integer | decreases (shell/stub regression) |\n| Call count | integer | decreases (hollowing out) |\n| Symbol count | integer | decreases (monolith collapse) |\n| Parameter count | integer | increases (interface bloat) |\n| Node type diversity | integer | decreases (structural uniformity) |\n| Logic density | ratio | decreases (empty body regression) |\n\nIn addition to per-metric regressions, Regix detects **architectural smells** — cross-symbol patterns that indicate structural degradation even when individual metrics look acceptable:\n\n| Smell | Pattern |\n|---|---|\n| `god_function` | One function absorbed CC from several that were deleted |\n| `stub_regression` | `fan_out` and `call_count` drop to near-zero (mock/stub replacing real logic) |\n| `monolith_collapse` | `symbol_count` drops while total file length grows |\n| `shell_cluster` | Multiple functions simultaneously lose delegation depth |\n| `logic_drain` | `logic_density` drops across ≥ 3 functions in a file |\n\nRegressions are reported at **three granularity levels**:\n\n1. **Line** — the exact line range that changed and caused the metric shift.\n2. **Symbol** — the function or class whose metric crossed a threshold.\n3. **Module** — the file-level aggregate delta.\n\n---\n\n## Key features\n\n- **Git-native**: compares any two refs (`HEAD~1`, branch names, tags, commit SHAs).\n- **Local-snapshot mode**: compare a dirty working tree against any historical ref without committing.\n- **Multi-version history**: compute a regression timeline across N commits to see trends.\n- **Configurable thresholds**: per-metric, per-file, or per-symbol severity rules.\n- **Multiple backends**: lizard (CC), radon (MI), pytest-cov (coverage), vallm (LLM quality), structure (AST fan-out/call analysis), architecture (cross-symbol smell detection).\n- **Machine-readable output**: JSON, YAML, or TOON format for CI integration.\n- **Human-readable output**: rich terminal tables and diff-style reports.\n- **Zero false-positives mode**: only report regressions that cross a configured threshold delta.\n- **LLM patch gate (`review`)**: detect regressions only in changed hunks/symbols to reduce noisy failures.\n- **Dependency-aware impact**: selective tests from changed files + transitive import dependents.\n\n---\n\n## Installation\n\n```bash\npip install regix\n```\n\nWith optional analysis backends:\n\n```bash\npip install \"regix[full]\"      # lizard + radon + vallm + pytest-cov\npip install \"regix[lizard]\"    # CC + length analysis only\npip install \"regix[coverage]\"  # pytest-cov integration only\npip install \"regix[vallm]\"     # LLM-based quality scoring\n```\n\nPython requirement: **\u003e= 3.10**\n\n---\n\n### Compare HEAD against previous commit\n\n```bash\nregix compare HEAD~1 HEAD\n```\n\n```\nRegression Report: HEAD~1 → HEAD\n════════════════════════════════════════════════════════════\n  pyqual/cli.py\n    ▲ bulk_run_cmd        CC  14 → 19  (+5)   ⚠ WARNING\n    ▲ _build_run_summary  CC  12 → 18  (+6)   ✗ ERROR\n    ▼ run                 MI  45 → 38  (-7)   ⚠ WARNING\n\n  pyqual/validation.py\n    ▲ validate_config     CC  18 → 26  (+8)   ✗ ERROR\n    ▲ validate_config     len 92 → 110 (+18)  ⚠ WARNING\n\nSummary: 2 errors, 3 warnings, 0 improvements across 2 files\nGates: ✗ FAIL  (cc_max=15 violated in 4 symbols)\n```\n\n### Compare two branches\n\n```bash\nregix compare main feature/refactor --format json \u003e regression.json\n```\n\n### Track regression over last 10 commits\n\n```bash\nregix history --depth 10 --metric cc --metric coverage\n```\n\n```\nCommit    cc_avg  cc_max  coverage  mi_avg\n────────  ──────  ──────  ────────  ──────\nabc1234   6.2     19      59.9 %    38.4     ← current HEAD\ndef5678   6.0     18      61.2 %    39.1\nghi9012   5.8     16      63.0 %    41.2     ← coverage regression starts here\njkl3456   5.7     15      65.1 %    42.0\n...\n```\n\n### Use from Python\n\n```python\nfrom regix import Regix, RegressionConfig\n\ncfg = RegressionConfig(\n    cc_max=15,\n    mi_min=20,\n    coverage_min=80,\n)\n\nrx = Regix(config=cfg, workdir=\".\")\nreport = rx.compare(\"HEAD~1\", \"HEAD\")\n\nfor regression in report.regressions:\n    print(f\"{regression.file}::{regression.symbol}  \"\n          f\"{regression.metric} {regression.before} → {regression.after}  \"\n          f\"({regression.severity})\")\n\nif report.has_errors:\n    raise SystemExit(1)\n```\n\n---\n\n### Snapshot\n\nA `Snapshot` is an immutable record of all tracked metrics for a codebase at a specific point in time. It is identified by a git ref (commit SHA, branch, tag) or the special value `\"local\"` for the current working tree.\n\n```python\nfrom regix import Snapshot\n\nsnap = Snapshot.from_ref(\"HEAD\", workdir=\".\")\nprint(snap.metrics[\"pyqual/cli.py\"][\"bulk_run_cmd\"][\"cc\"])  # 19\n```\n\nSnapshots are cached by content hash so repeated comparisons are fast.\n\n### Regression\n\nA `Regression` is a detected worsening of a metric between two snapshots, at symbol, module, or project level.\n\n```python\n@dataclass\nclass Regression:\n    file: str            # relative path\n    symbol: str | None   # function or class name, None = module-level\n    line: int | None     # approximate line in the target ref\n    metric: str          # \"cc\", \"mi\", \"coverage\", \"length\", ...\n    before: float\n    after: float\n    delta: float         # after - before (positive = worse for cc/length)\n    severity: str        # \"error\" | \"warning\" | \"info\"\n    threshold: float     # the configured limit that was crossed\n```\n\n### Improvement\n\nAn `Improvement` is the mirror of a `Regression` — a metric that got *better*. Regix tracks both so you get a complete picture of a refactoring.\n\n### Report\n\nA `RegressionReport` aggregates all `Regression` and `Improvement` objects from a comparison, plus summary statistics, gate pass/fail status, and the two snapshot refs.\n\n---\n\n## CLI reference\n\n```\nregix [OPTIONS] COMMAND [ARGS]\n\nCommands:\n  compare   Compare metrics between two git refs or local state.\n  review    Compare diff scope only (LLM/pre-commit regression gate).\n  history   Show metric timeline across N historical commits.\n  snapshot  Capture and store a snapshot without comparing.\n  diff      Show symbol-level metric diff (like git diff but for metrics).\n  gates     Check current state against configured quality gates.\n  report    Re-render a stored comparison as a different format.\n  impact    Analyze git changes and print or execute targeted selective test suites.\n```\n\n### `regix compare` \n\n```\nregix compare [REF_A] [REF_B] [OPTIONS]\n\n  REF_A    Base ref (default: HEAD~1)\n  REF_B    Target ref (default: HEAD or local if --local)\n\nOptions:\n  --local              Compare REF_A against the current working tree\n  --config FILE        Path to regix.yaml (default: regix.yaml or .regix/config.yaml)\n  --format             Output format: rich | json | yaml | toon  [default: rich]\n  --output FILE        Write report to file instead of stdout\n  --metric TEXT        Only report on specific metric(s), repeatable\n  --file TEXT          Only report on specific file(s), repeatable\n  --symbol TEXT        Only report on specific function/class, repeatable\n  --errors-only        Suppress warnings, show errors only\n  --fail-on warning    Exit code 1 on warnings too (default: errors only)\n  --no-improvements    Suppress improvement entries from output\n  --depth INTEGER      For history mode: number of commits to scan\n  --planfile           Generate planfile tickets for detected regressions\n```\n\n### `regix history` \n\n```\nregix history [OPTIONS]\n\nOptions:\n  --depth INTEGER      Number of commits to include  [default: 20]\n  --ref TEXT           Starting ref  [default: HEAD]\n  --metric TEXT        Metrics to include, repeatable\n  --file TEXT          Filter to specific file(s)\n  --symbol TEXT        Filter to specific symbol\n  --format             rich | json | yaml | csv  [default: rich]\n  --output FILE\n```\n\n### `regix review`\n\n```\nregix review [BASE] [TARGET] [OPTIONS]\n\n  Reviews working-tree/staged changes and reports only regressions overlapping\n  changed hunks/symbols. Useful for LLM patch validation and pre-commit gates.\n\nOptions:\n  --staged             Review staged diff against BASE\n  --patch FILE         Review unified-diff patch file\n  --config FILE        Path to regix.yaml\n  --format             rich | json | yaml | toon  [default: rich]\n  --errors-only        Suppress warnings\n  --fail-on warning    Exit code 1 on warnings too\n```\n\n### `regix diff` \n\n```\nregix diff [REF_A] [REF_B] [OPTIONS]\n\n  Shows a symbol-by-symbol metric diff, similar to `git diff` but for\n  static analysis data instead of source lines.\n\nOptions:\n  --threshold FLOAT    Only show symbols with delta \u003e= threshold\n  --metric TEXT        Filter to specific metric(s)\n```\n\n### `regix impact` \n\n```\nregix impact [OPTIONS]\n\n  Analyzes git modified files and dynamically determines which test suites are affected\n  by the changes (including PyTest, TestQL scenarios, and visual Playwright routes).\n  Supports automatic selective test suite execution.\n\nOptions:\n  --run                Automatically run the selective targeted test suites\n  --dry-run            Dry run the selective targeted test suites\n  --config FILE        Path to regix.yaml\n  --workdir TEXT       Specify the project root directory [default: .]\n```\n\n---\n\n## Configuration\n\nCreate a `regix.yaml` at the project root:\n\n```yaml\nregix:\n  workdir: .\n\n  metrics:\n    cc_max: 15              # cyclomatic complexity per function\n    mi_min: 20              # maintainability index (radon)\n    coverage_min: 80        # test coverage (%)\n    length_max: 100         # function length in lines\n    docstring_min: 60       # docstring coverage (%)\n\n  thresholds:\n    delta_warn: 2           # minimum delta to emit a warning\n    delta_error: 5          # minimum delta to emit an error\n\n  backends:\n    cc: lizard              # lizard | radon | both\n    mi: radon\n    coverage: pytest-cov\n    quality: vallm          # optional LLM-based score\n\n  impact:\n    include_prefixes: []    # optional, empty = whole repo\n    ignore_globs:\n      - \"**/.venv/**\"\n      - \"**/.tox/**\"\n      - \"**/dist/**\"\n    test_patterns:\n      - \"tests/test_{stem}.py\"\n      - \"tests/**/test_{stem}.py\"\n      - \"{dir}/tests/test_{stem}.py\"\n    enable_import_graph: true\n    transitive_depth: 2\n\n  exclude:\n    - \"tests/**\"\n    - \"examples/**\"\n    - \"docs/**\"\n    - \"**/migrations/**\"\n\n  include:\n    - \"src/**\"\n    - \"mypackage/**\"\n\n  output:\n    format: rich            # rich | json | yaml | toon\n    show_improvements: true\n    max_symbols: 50         # truncate long reports\n\n  gates:\n    on_regression: warn     # warn | error | block\n    fail_exit_code: 1\n```\n\nSee [configuration.md](configuration.md) for the full reference.\n\n---\n\n### GitHub Actions\n\n```yaml\n- name: Check for regressions\n  run: |\n    pip install \"regix[full]\"\n    regix compare ${{ github.event.pull_request.base.sha }} HEAD \\\n      --format json --output .regix/report.json\n    regix gates --fail-on error\n```\n\n# .pre-commit-config.yaml\nrepos:\n  - repo: local\n    hooks:\n      - id: regix\n        name: Regression check\n        entry: regix compare HEAD --local --errors-only\n        language: python\n        pass_filenames: false\n```\n\n### pyqual integration\n\nRegix ships a pyqual-compatible stage preset and gate collector:\n\n```yaml\n# pyqual.yaml\nstages:\n  - name: regression-check\n    tool: regix\n    when: metrics_fail\n\nmetrics:\n  regression_errors_max: 0\n  regression_warnings_max: 5\n```\n\nThe `regix` preset runs `regix compare HEAD~1 HEAD --format toon --output .regix/` and the gate collector reads `.regix/report.toon.yaml` for `regression_errors` and `regression_warnings` metrics.\n\n### Planfile integration\n\nRegix features first-class integration with the **Planfile** SDLC ticket standard. When comparing refs, passing the `--planfile` flag will automatically generate highly detailed task tickets for any detected regressions and sync them straight into `TODO.md`:\n\n```bash\nregix compare HEAD~1 HEAD --planfile\n```\n\nEach generated ticket contains:\n- **Title**: Symbol and metric that regressed (e.g. `[Regression] CC worsened in bulk_run_cmd`).\n- **Description**: Detailed metrics delta, before/after values, and the violated threshold.\n- **Priority**: Dynamic mapping based on severity (`high` for errors, `normal` for warnings).\n- **Labels**: Auto-labeled with `bug`, `regression`, `regix`, and the metric key (e.g. `cc`, `mi`, `coverage`).\n- **Associated Files**: Linked directly to the regressed source file.\n\nAfter ticket generation, Regix triggers `planfile sync markdown --direction to` to seamlessly update your local `TODO.md`.\n\n---\n\n## Design principles (lessons from pyqual)\n\nThese principles were derived from running iterative quality pipelines and observing failure modes:\n\n1. **Fix the measurement before fixing the code.** If the tool counts unsupported files in the pass-rate denominator, the metric is misleading. Regix measures only what it can actually analyse.\n\n2. **Report at symbol granularity, not file granularity.** A file-level CC average of 6.4 masks individual functions with CC 19+. Regix always links a regression to the smallest attributable unit.\n\n3. **Distinguish regression from absolute violation.** A function with CC=18 that was CC=18 last week is not a *new* regression — it is an existing issue. A function that went CC=10 → CC=18 in this PR *is* a regression. Both should be reportable, but separately.\n\n4. **Stagnation is a signal.** If a fix pass runs twice and produces identical metric values, continuing to iterate wastes time. Regix exposes `report.stagnated` so callers can exit early.\n\n5. **Make the improvement visible too.** Refactoring that improves CC from 22 → 14 in three functions while worsening one from 12 → 16 still net-positive. Hiding improvements creates a discouraging feedback loop.\n\n6. **Historical depth is essential.** A single before/after comparison misses the *trend*. The `history` command lets you see that coverage has been falling 1 % per week for six weeks, not just that it is below the gate today.\n\n7. **Output must be machine-readable.** Every report format (JSON, YAML, TOON) is stable and versioned so downstream tools (dashboards, ticket systems, fix agents) can consume regression data programmatically.\n\n---\n\n### Running tests with tox\n\nRegix uses `tox` for testing across multiple Python versions:\n\n```bash\n# Run with coverage, linting, and type checking\ntox -e py313-full,lint,type\n```\n\nSupported environments: `py39`, `py310`, `py311`, `py312`, `py313`, `lint` (ruff), `type` (mypy).\n\n### Automated quality pipeline (pyqual)\n\nThe project includes a `pyqual` pipeline configured in `pyqual.yaml` that automates:\n\n1. **Baseline analysis** — code2llm extraction\n2. **Validation** — vallm batch validation\n3. **Testing** — pytest with coverage\n4. **Regression fixing** — prefact + llx auto-fix\n5. **Version bump** — automatic patch version increment\n6. **Publishing** — build and upload to PyPI\n\nRun the full pipeline:\n\n```bash\npyqual run -c pyqual.yaml\n```\n\nThe pipeline loops up to 5 iterations, automatically fixing issues until all quality gates pass:\n- CC ≤ 10 per function\n- vallm pass rate ≥ 50%\n- Test coverage ≥ 80%\n\n---\n\n## Architecture\n\n```\nregix/\n├── __init__.py          # Public API: Regix, Snapshot, RegressionReport, ...\n├── cli.py               # Typer-based CLI (compare, history, diff, gates, ...)\n├── config.py            # RegressionConfig dataclass + YAML loader\n├── snapshot.py          # Snapshot capture, caching, git checkout logic\n├── compare.py           # Core comparison engine: metric deltas + ArchSmell detection\n├── history.py           # Multi-commit timeline builder\n├── report.py            # Rendering: rich tables, JSON/YAML/TOON serialisation\n├── gates.py             # Gate evaluation (pass/fail) from RegressionReport\n├── backends/\n│   ├── __init__.py\n│   ├── lizard_backend.py        # CC + function length via lizard\n│   ├── radon_backend.py         # MI + raw metrics via radon\n│   ├── coverage_backend.py      # Coverage via pytest-cov / .coverage file\n│   ├── docstring_backend.py     # Docstring coverage (AST, built-in)\n│   ├── structure_backend.py     # fan_out, call_count, symbol_count (AST, built-in)\n│   ├── architecture_backend.py  # Cross-symbol ArchSmell detection\n│   └── vallm_backend.py         # LLM quality score via vallm batch\n├── git.py               # Git helpers: checkout, worktree, diff, log\n├── cache.py             # Content-addressed snapshot cache (~/.cache/regix/)\n└── integrations/\n    ├── pyqual.py        # pyqual preset + gate collector\n    └── github.py        # GitHub Actions annotations formatter\n```\n\nSee [architecture.md](architecture.md) for a detailed description of each module.\n\n---\n\n## Comparison with related tools\n\n| Tool | What it measures | Regression detection | Git-aware | Symbol-level |\n|------|-----------------|---------------------|-----------|--------------|\n| **Regix** | CC, MI, coverage, length, quality | ✅ first-class | ✅ | ✅ |\n| pylint | Style, errors | ❌ | ❌ | ❌ |\n| radon | CC, MI raw | ❌ | ❌ | ✅ |\n| lizard | CC, length | ❌ | ❌ | ✅ |\n| pytest-cov | Coverage | ❌ | ❌ | ❌ |\n| pyqual | Quality gates (pipeline) | partial (gate-level) | ❌ | ❌ |\n| diff-cover | Coverage diff | partial (line-level) | ✅ | ❌ |\n| xenon | CC thresholds | ❌ | ❌ | ❌ |\n\nRegix is designed to sit **above** analysis tools (lizard, radon, vallm) as the comparison and regression-detection layer, and **alongside** gate tools (pyqual) as a complementary data source.\n\n---\n\n## Roadmap\n\n- [x] `v0.1` — Core compare/history CLI, lizard + radon backends, JSON/rich output\n- [x] `v0.2` — pytest-cov backend, configuration file, CI presets\n- [x] `v0.3` — vallm backend, pyqual integration preset\n- [x] `v0.4` — Symbol-level caching, incremental snapshots for large repos\n- [ ] `v0.5` — Web dashboard (static HTML report), trend charts\n- [ ] `v1.0` — Stable API, full docs, PyPI release\n\n---\n\n## License\n\nLicensed under Apache-2.0.\n## Status\n\n_Last updated by [taskill](https://github.com/oqlos/taskill) at 2026-05-27 19:04 UTC_\n\n| Metric | Value |\n|---|---|\n| HEAD | `d469837` |\n| Coverage | — |\n| Failing tests | — |\n| Commits in last cycle | 34 |\n\n\u003e Refactors and docs updates across the project: CLI/test refactoring and configuration handling were improved, a configuration-management feature was added, and documentation/TODOs were refreshed. CI/test infra was updated (tox, pyqual) and multiple version bumps and lint auto-fix iterations were applied.\n\n\u003c!-- taskill:status:end --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Fregix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemcod%2Fregix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Fregix/lists"}