Skip to content

Commit 359a62b

Browse files
committed
Enforce uniform 75% coverage gate across all packages
Replace the observability-only threshold in the grouped test runner with a uniform 75% gate applied to every package. Drop the observability-specific --cov flags from pytest addopts since coverage is now enforced per package by run_tests_by_package.py. Completes coverage-parity-v1.
1 parent fcd475c commit 359a62b

3 files changed

Lines changed: 16 additions & 9 deletions

File tree

ROADMAP.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,21 @@ Tracked in GitHub via milestones. Each milestone has a small set of epic issues
1313

1414
**Why:** `llm_observability_analytics` ships with a 75% coverage gate enforced in CI. `llm_knowledge_ingestion` and `llm_dataset_foundry` do not. Today a regression in foundry coverage to 0% would pass CI. The goal of this milestone is to bring all three packages to the same gate and enforce it uniformly.
1515

16-
### Status (as of 2026-05-11)
16+
### Status (as of 2026-06-18)
1717

18-
Measured via `python -m scripts.run_tests_by_package`:
18+
Measured via `python -m scripts.run_tests_by_package`. A uniform 75% gate is now
19+
enforced for all three packages by the grouped test runner.
1920

2021
| Package | Coverage | Gate | Gap |
2122
| --- | --- | --- | --- |
2223
| `llm_observability_analytics` | 80% | 75% (enforced) ||
23-
| `llm_knowledge_ingestion` | 76% | none | parsers/base.py at 0% |
24-
| `llm_dataset_foundry` | 50% | none | 8 modules at 0%, 4 partially covered |
24+
| `llm_knowledge_ingestion` | 81% | 75% (enforced) ||
25+
| `llm_dataset_foundry` | 90% | 75% (enforced) ||
26+
27+
All three packages now clear the gate; coverage-parity-v1 is complete pending
28+
issue closure. The per-package gaps that motivated this milestone have been
29+
closed with in-process unit tests for the foundry config/orchestrator/CLI and an
30+
ingestion CLI test.
2531

2632
### Coverage epics
2733

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,6 @@ mypy_path = "src"
7575

7676
[tool.pytest.ini_options]
7777
minversion = "8.0"
78-
addopts = "-q --strict-markers --disable-warnings --cov=llm_observability_analytics --cov-report=term-missing --cov-fail-under=75"
78+
# Coverage is enforced per package by scripts/run_tests_by_package.py (uniform 75% gate).
79+
addopts = "-q --strict-markers --disable-warnings"
7980
testpaths = ["tests"]

scripts/run_tests_by_package.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from collections import defaultdict
99
from pathlib import Path
1010

11-
OBSERVABILITY_COVERAGE_MIN = 75
11+
COVERAGE_MIN = 75
1212

1313

1414
def collect_tests(tests_dir: Path):
@@ -40,9 +40,9 @@ def run_group(pkg: str, files: list[str], src_path: Path) -> int:
4040
"addopts=",
4141
]
4242
if pkg != "__root__":
43-
cmd.extend(["--cov", pkg, "--cov-report", "term-missing"])
44-
if pkg == "llm_observability_analytics":
45-
cmd.extend(["--cov-fail-under", str(OBSERVABILITY_COVERAGE_MIN)])
43+
cmd.extend(
44+
["--cov", pkg, "--cov-report", "term-missing", "--cov-fail-under", str(COVERAGE_MIN)]
45+
)
4646
cmd.extend(files)
4747
proc = subprocess.run(cmd, env=env)
4848
return proc.returncode

0 commit comments

Comments
 (0)