Skip to content

coverage: drive repo to compliance after lane expansion #641

Description

@danielraffel

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

  1. Finish and land #647.
  2. Verify the representation targets on main.
  3. Rebaseline the status doc and ranking from the corrected main surface.
  4. Finish Phase 1 by driving the known perimeter-expansion issues as needed.
  5. Start Phase 2 only after the represented surface and explicit exclusions are stable.
  6. Execute Phase 3 tranche by tranche once the plan is ranked and tracked.

Acceptance

  • #641 stays current as the authoritative state pointer for future sessions
  • every major workstream rolls up to this tracker via a linked child issue or PR
  • the clearly known remaining perimeter gaps stay explicit and tracked
  • Phase 2 does not begin until the Phase 1 finish line is satisfied

Metadata

Metadata

Assignees

No one assigned

    Labels

    ciCI/CD, local CI, Namespace, GitHub Actionsclipulp CLI toolcodecovCodecov coverage tracking and coverage-compliance workdocsDocumentation, README, guidesenhancementNew feature or requestplatformCross-platform supportuiView system, widgets, layout, themes

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions