Context
As of April 23, 2026, the repo now has working coverage lanes for native C/C++, Python, Swift, and Android/Kotlin, but the broader program still has to move through three distinct phases in order.
Goal
Get Codecov as close as practical to the intended first-party local source surface, then use that corrected baseline to plan and close the real test gaps.
Three-Phase Program
Phase 1 — Representation / Codecov truth
Make Codecov reflect the intended first-party local source surface.
Finish line:
windows is not null on main
dsl is a real component on main
apple/Sources/** materializes on Codecov
android/app/src/main/kotlin/** materializes on Codecov
- the clearly known remaining "still not on Codecov" bucket is explicitly listed and tracked
- the durable status doc is rebaselined from the corrected
main surface
Phase 2 — Gap planning
Once the represented surface is trustworthy, rank the actual coverage gaps and turn them into an execution plan.
Finish line:
- counted components are ranked from the corrected
main baseline
- the major low-coverage files / components are grouped into tranche issues
- the remaining out-of-scope surfaces are either accepted for now or have explicit expansion issues
- the repo has an actionable issue / PR roadmap for closing measured gaps
Phase 3 — Gap closure
Implement the test work tranche by tranche until the measured gaps are in a good place.
Finish line:
- planned coverage tranches are implemented and merged
- target components move materially toward or to their configured thresholds
- exceptions / intentionally deferred surfaces are documented explicitly instead of silently omitted
Current status
- Active control-plane branch / PR:
#647
- Parked follow-on draft PRs after the truth fix:
#648, #649
- Draft split PR preserving useful
state / ship hardening tests: #666
- Durable in-repo status doc lives in
docs/reports/coverage-compliance-status.md
- Remote Android SSH provisioning is explicitly broken out as
#655 so it does not block the hosted Codecov truth work
Clearly Known Still Not On Codecov
These are the clearly known source buckets still outside the represented surface today. Raw LOC counts are approximate and are only used here to size the work, not as exact Codecov denominators.
- broader authored JavaScript: about
23.9k raw lines — tracked by #659
- broader Python outside the current tooling lane: about
5.2k raw lines — tracked by #658
- shell and PowerShell scripts: about
2.5k raw lines — tracked by #657
- optional bindings under
bindings/**: about 0.6k raw lines — tracked by #657
- Swift outside the currently surfaced package subset:
apple/Sources/PulpSwift/PulpAudioSession.swift
apple/Sources/PulpSwift/PulpBridge.cpp
apple/Sources/PulpSwift/PulpBridge.h
tools/local-ci/macos_window_probe.swift
tracked by #656
- mobile runtime coverage outside the current source-only lanes:
- Android emulator / device instrumentation coverage
- iOS simulator / runtime app coverage where we decide it belongs in the represented surface
tracked by #77
These are the known perimeter gaps to finish Phase 1 against. The rough remainder beyond this list is mostly metric mismatch between raw local LOC and Codecov executable-line accounting, not a clean backlog bucket.
Main Tracker Map
Control plane / Codecov truth
#639 Codecov control plane and dashboard truth
#647 active PR: control-plane branch to finish first
#655 provision Android SDK/NDK on ssh ubuntu and ssh windows validation hosts
Perimeter-expansion child issues
#656 expand Swift perimeter beyond the current apple/ package lane
#658 expand Python perimeter beyond the current tooling lane
#659 add a JavaScript source lane for authored repo assets
#657 classify optional bindings and shell/PowerShell surfaces in the true-source baseline
#77 mobile runtime coverage follow-up for Android instrumentation and iOS simulator/app paths
Existing related language / platform issues
#568 multi-language coverage expansion umbrella
#632 first Python widening (tools/scripts -> tools/deps / tools/local-ci)
#615 Apple Swift coverage lane
#633 Android/Kotlin JaCoCo lane
Parked coverage-lift issues after Phase 1
#640 audio/platform tranche
#642 events tranche
#643 CLI/tools tranche
#644 ship tranche
#645 midi/signal tranche
#646 render tranche
#493 host/format/view and other hardening gaps
Parked draft PRs after Phase 1
#648 draft events tranche
#649 draft CLI/tools tranche
#666 draft state/ship hardening split from #647
Execution order
- Finish and land
#647.
- Verify the representation targets on
main.
- Rebaseline the status doc and ranking from the corrected
main surface.
- Finish Phase 1 by driving the known perimeter-expansion issues as needed.
- Start Phase 2 only after the represented surface and explicit exclusions are stable.
- Execute Phase 3 tranche by tranche once the plan is ranked and tracked.
Acceptance
Context
As of April 23, 2026, the repo now has working coverage lanes for native C/C++, Python, Swift, and Android/Kotlin, but the broader program still has to move through three distinct phases in order.
Goal
Get Codecov as close as practical to the intended first-party local source surface, then use that corrected baseline to plan and close the real test gaps.
Three-Phase Program
Phase 1 — Representation / Codecov truth
Make Codecov reflect the intended first-party local source surface.
Finish line:
windowsis notnullonmaindslis a real component onmainapple/Sources/**materializes on Codecovandroid/app/src/main/kotlin/**materializes on CodecovmainsurfacePhase 2 — Gap planning
Once the represented surface is trustworthy, rank the actual coverage gaps and turn them into an execution plan.
Finish line:
mainbaselinePhase 3 — Gap closure
Implement the test work tranche by tranche until the measured gaps are in a good place.
Finish line:
Current status
#647#648,#649state/shiphardening tests:#666docs/reports/coverage-compliance-status.md#655so it does not block the hosted Codecov truth workClearly Known Still Not On Codecov
These are the clearly known source buckets still outside the represented surface today. Raw LOC counts are approximate and are only used here to size the work, not as exact Codecov denominators.
23.9kraw lines — tracked by#6595.2kraw lines — tracked by#6582.5kraw lines — tracked by#657bindings/**: about0.6kraw lines — tracked by#657apple/Sources/PulpSwift/PulpAudioSession.swiftapple/Sources/PulpSwift/PulpBridge.cppapple/Sources/PulpSwift/PulpBridge.htools/local-ci/macos_window_probe.swifttracked by
#656tracked by
#77These are the known perimeter gaps to finish Phase 1 against. The rough remainder beyond this list is mostly metric mismatch between raw local LOC and Codecov executable-line accounting, not a clean backlog bucket.
Main Tracker Map
Control plane / Codecov truth
#639Codecov control plane and dashboard truth#647active PR: control-plane branch to finish first#655provision Android SDK/NDK onssh ubuntuandssh windowsvalidation hostsPerimeter-expansion child issues
#656expand Swift perimeter beyond the currentapple/package lane#658expand Python perimeter beyond the current tooling lane#659add a JavaScript source lane for authored repo assets#657classify optional bindings and shell/PowerShell surfaces in the true-source baseline#77mobile runtime coverage follow-up for Android instrumentation and iOS simulator/app pathsExisting related language / platform issues
#568multi-language coverage expansion umbrella#632first Python widening (tools/scripts->tools/deps/tools/local-ci)#615Apple Swift coverage lane#633Android/Kotlin JaCoCo laneParked coverage-lift issues after Phase 1
#640audio/platform tranche#642events tranche#643CLI/tools tranche#644ship tranche#645midi/signal tranche#646render tranche#493host/format/view and other hardening gapsParked draft PRs after Phase 1
#648draft events tranche#649draft CLI/tools tranche#666draft state/ship hardening split from#647Execution order
#647.main.mainsurface.Acceptance
#641stays current as the authoritative state pointer for future sessions