Skip to content

META: 5 test failures from first public CI run — tracking #8

@hah23255

Description

@hah23255

META: 5 test failures from first public CI run — tracking dashboard

Status snapshot (2026-05-05)

Metric Value
CI infrastructure jobs ✅ All green (lint / typecheck / gitleaks / CodeQL / build)
Test matrix 🟡 304/309 (98.4 % pass rate)
Failing tests 5 named, all tracked below
Fork count 0 (re-fork window starts now)
Stars 1
Open Dependabot PRs 0 (closed as superseded)
Latest release v2.0.0

Tracked sub-issues

Issue Title Severity Class Effort Doctrine
#4 freq_to_channel 2.4 GHz off-by-one 🟠 High Real production bug ~15 min Hypothesis-caught (Pattern: property-based fuzzing)
#5 _shell argv-token mismatch (2 tests) 🟡 Medium Test/code coupling ~30 min Law 1 exception PR required
#6 Logcat unknown level letter 🟢 Low Parser strictness ~10 min Lesson: Adaptive Fault Tolerance
#7 PerformanceMonitor CPU probe mismatch 🟢 Low Mock setup nit ~30 min Pattern: contract constants
#8 This meta tracker

Total estimated effort: ~85 minutes to land all four fixes.

Doctrine policy table

Issue Modifies tests? Modifies production? Doctrine policy
#4 No Yes Standard PR; test-file-integrity gate passes
#5 Yes No Law 1 exception PR required — title prefix [doctrine-exception], reviewer sign-off
#6 No Yes Standard PR
#7 Yes (incidental) Yes (constant extraction) Standard PR; production change is the primary delta

Recommended sequencing

  1. bug(radio): freq_to_channel returns 15 for 2.4 GHz freq 2473-2483 — Hypothesis-caught off-by-one #4 (freq_to_channel) — clean production fix; demonstrates
    Hypothesis pattern paying off; lowest blast radius.
  2. bug(test_monitor): TestPerformanceMonitor.test_take_snapshot — cpu_usage probe path mismatch #7 (PerformanceMonitor) — clean refactor extracting probe
    commands as module-level constants; sets precedent for bug(controller): _shell joins shell command but tests register split argv tokens #5's
    pattern.
  3. bug(monitor): logcat parser regex rejects unknown level letters; test expects pass-through #6 (Logcat unknown level) — single regex character class
    change; fast.
  4. bug(controller): _shell joins shell command but tests register split argv tokens #5 (argv-mismatch) — last because it requires the Law 1
    exception process. Doing it last lets the project demonstrate
    that the gate is real and the exception process exists.

Stable state — what's NOT blocked

The following work can proceed in parallel with the four fixes
above; none of them depend on test-suite green:

Work Blocking?
PyPI publish (Phase 7 OIDC setup) Test-green strongly recommended but not strictly required (manual upload of v2.0.0 wheel works today)
pdoc API reference deployment to GitHub Pages No — pure docstring extraction
Awesome-list submissions Recommended to wait until tests-green for the badge story
Reddit / HN / X announcement Recommended to wait until tests-green
Branch protection setup No — orthogonal
Codecov token + first coverage report Yes for accurate numbers, but token can be set today
OG banner upload (Settings → Social preview) No — pure asset upload

Why these tests failed on first public CI

Three lessons emerged from the public-launch CI iteration:

1. CI never ran before public flip

Pre-public, no CI was triggered (private repo, no Actions enabled
or no push events to main). The 273-test suite was authored across
Phases 1.A–3 but never executed end-to-end. The first public push
exposed five accumulated test/code drift points.

Mitigation for the future: enable Actions on private repos, even
if just on a side branch, so the test suite runs at least once
before flipping public.

2. tests/conftest.py was 0 bytes since Phase 1.A

The Poison-Pill harness was written via the Write tool but
somehow never committed (likely a tooling artifact — the file got
touched before the Write call). Every test that imported
PoisonPillADB was technically broken from day one.

Mitigation: future projects should run pytest --collect-only
locally as part of the Phase 1 acceptance criteria.

3. Filter-repo --replace-text runs across # noqa: comments

The Lesson-redact filter-repo run replaced strings inside
# noqa: BLE001 — Lesson 41 graceful degradation with
# noqa: BLE001 — internal lesson (adaptive fault tolerance) graceful degradation. Functionally identical for ruff, but a reminder that
text-replacement passes touch comment content too.

Mitigation: when designing replacement strings, ensure they fit
within the same lint-rule context.

Issue lifecycle

This META issue stays open until all four sub-issues close as
fixed
. When sub-issues are landed:

When all four close, this META can close with comment:
Resolved by #N1, #N2, #N3, #N4 — test matrix back to 309/309.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    phase-3-followupTracked from the v2.0 first-public CI run — Phase 3 test work to land in dedicated PRstrackingMeta tracking issue

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions