|
| 1 | +<!-- |
| 2 | +SPDX-License-Identifier: MPL-2.0 |
| 3 | +SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) |
| 4 | +--> |
| 5 | + |
| 6 | +# `elixir-orchestration` — staged coverage ramp |
| 7 | + |
| 8 | +`coveralls.json` does not support comments, so the rationale for the |
| 9 | +`minimum_coverage` threshold lives here instead. |
| 10 | + |
| 11 | +## Why this file exists |
| 12 | + |
| 13 | +The `ExCoveralls (≥60%)` check on `main` started failing once |
| 14 | +`elixir-orchestration/` grew federation-adapter modules whose primary |
| 15 | +behaviour requires live external services (object-storage / SurrealDB / |
| 16 | +…) and is therefore unreachable from the in-tree unit-test suite alone. |
| 17 | +Actual coverage settled near **42.6 %**, while the configured floor was |
| 18 | +`60`. This is a **threshold mismatch**, not a real coverage regression — |
| 19 | +the test suite has not shrunk, the codebase has just outgrown it. |
| 20 | + |
| 21 | +Lowering the floor unconditionally to ~40 % is the wrong long-term |
| 22 | +answer, so the floor is staged here with explicit ramp dates. |
| 23 | + |
| 24 | +## Current floor |
| 25 | + |
| 26 | +`coveralls.json` ➜ `coverage_options.minimum_coverage = 40` |
| 27 | + |
| 28 | +## Ramp plan |
| 29 | + |
| 30 | +| Phase | Floor | Target date | Gate (what needs to land first) | |
| 31 | +| ----- | ----- | ------------ | --------------------------------------------------------- | |
| 32 | +| now | 40 | 2026-06-02 | this PR (threshold-mismatch only) | |
| 33 | +| 1 | 50 | 2026-07-15 | property-based adapter tests behind mock-transport stubs | |
| 34 | +| 2 | 60 | 2026-09-01 | restore the pre-federation-adapter floor; reinstate as the long-term invariant | |
| 35 | + |
| 36 | +The phase-1 ramp specifically requires: |
| 37 | + |
| 38 | +* `ObjectStorage` adapter — table-driven coverage of the S3 XML parser |
| 39 | + branch matrix (`extract_xml_field` paths, ListObjectVersions |
| 40 | + shape-detection branches) without a live S3 endpoint. |
| 41 | +* `SurrealDB` adapter — coverage of graph / document / temporal modality |
| 42 | + query-builder branches (currently exercised only via integration runs). |
| 43 | +* Federation supervisor — error-path coverage for adapter-startup races. |
| 44 | + |
| 45 | +Each ramp bump is its own PR; the bump itself is one-line in |
| 46 | +`coveralls.json` and crossing it out here. |
| 47 | + |
| 48 | +## Related |
| 49 | + |
| 50 | +* See `CHANGELOG.md` (Unreleased → Fixed) for the threshold-mismatch |
| 51 | + fix entry. |
| 52 | +* `verisimdb#82` tracks the broader `elixir-orchestration` coverage work. |
0 commit comments