Skip to content

CI: publish frontend coverage to Codecov and show README badge #3032

Open

Description

@mblua

Problem

AgentsCommander can measure frontend coverage locally (I2962), but its public README has no coverage badge and CI does not publish a browsable coverage report. The existing frontend regression job is conditional on the full CI tier and runs tests without coverage, so its success does not imply a current coverage measurement.

The user requested a Codecov badge/report, completed Codecov registration and GitHub App access for this repository, provided the repository upload token, and explicitly requested: "crea el issue y hacelo". Repository secret CODECOV_TOKEN is configured and its existence was verified; no secret value belongs in this issue, source, or logs.

Intended change

Implement the architect's minimal Codecov integration for frontend coverage: publish fresh full-suite coverage associated with its actual main commit, expose a clearly labeled frontend badge linked to the report, and keep publication informational. Preserve the existing Vitest source universe and coverage metrics. Reuse the existing V8 provider and configured repository secret.

Feasibility was independently confirmed by the architect and frontend owner. Current evidence base: main 9f87ec7; README already uses Shields badges; Vitest reporters currently include HTML, Istanbul JSON, summary JSON, and text, but not LCOV. Codecov supports LCOV and does not ingest HTML. The canonical implementation plan and review will determine the exact minimal changes.

Acceptance

  • README has a frontend-only coverage badge linking to Codecov for this repository/main.
  • Automated publication on updates to main uses a freshly generated full frontend suite report from the same SHA/run, with explicit report selection and frontend scope; stale files cannot be published as a new measurement.
  • Publish only after the complete suite succeeds; tolerated known-debt results from other jobs are not sufficient evidence.
  • A real successful upload is confirmed in Codecov against the published main SHA, with badge/report scope and source paths checked. Report any ingestion/normalization or stale-badge limitation honestly.
  • Existing include/exclude rules, opt-in local coverage, existing CI tier behavior, and other repositories' integration remain intact. No new coverage threshold or required/blocking coverage check.
  • Credentials are referenced via GitHub Actions secrets and are never committed, printed, or included in review artifacts.

Scope limits

Frontend publication only. Rust/backend measurement remains separate in #2963; do not publish its historical aggregate as product-only coverage or combine it into a misleading project total. The historical 89.18% frontend lines belong to a1a694b, not current main. No product behavior changes, dependency upgrades, release/version bump, app build/install, GitHub Pages, custom coverage service, or additional infrastructure.

References

Activity

  1. self-assigned this
    on Oct 16, 2026
  2. mblua commented on Oct 16, 2026

    @mblua
    OwnerAuthor

    Technical score and delivery contract

    Confirmed scope: frontend Codecov publication and README badge; four config/documentation paths, no runtime product change. Evidence: issue body and architect/frontend feasibility reports, checked against main 9f87ec7.

    Category Score Anchor and evidence
    Scope footprint 5 Below coherent-module anchor 10: four small config/README files moving together.
    Diagnosis difficulty 1 Floor: missing publication and LCOV reporter are already identified.
    Domain knowledge required 6 Below subsystem anchor 10: coverage formats, Vitest and Actions conventions.
    Solution-space ambiguity 3 Near determined-change anchor 1: architect proposal independently confirmed by frontend owner.
    Blast radius and reversibility 4 Near local/reversible anchor 1: informational CI/reporting; revert has no data migration.
    Dependency and integration load 9 Near external-service anchor 10: Codecov App/token and upload contract.
    Verification difficulty 8 Below new-harness-test anchor 10: prove real ingestion for exact main SHA, correct file paths and scope, rather than accept upload exit alone.
    State, data and compatibility 2 Near stateless anchor 1: coverage history only, no application persisted data changes.
    Concurrency and timing 3 Near sequential anchor 1: run-isolated output, asynchronous report processing and badge caching.
    Environment and tooling 7 Below toolchain anchor 10: existing Node/npm/Vitest pattern plus pinned official uploader.

    Raw = 48. Final = round((48 - 10) / 190 * 99) + 1 = 21/100.

    Excluded ceremony: issue/branch/PR creation, review rounds, coordination, CI waiting, merge, cleanup and version/release administration. Understanding and changing the coverage workflow itself is included.

    Delivery path: Lite, low-band dev-authored plan, reviewed revision without digest. Precedents: existing frontend-regression Node22/npm11.6.2 install/test pattern, existing Vitest reporters/output override, existing README badges, and official Codecov Action integration. One localized coverage-publication component; no new application abstraction, dependency, API/schema/protocol or architectural restructuring; no Full criterion identified. Existing architect proposal is reused, not redesigned.

    Applicable veto: Verification difficulty >=8 extends Grinch review to the proof (successful real ingestion tied to main SHA, selected frontend LCOV and paths, or equivalent direct evidence). No architect or environment veto applies. Author/owner: ac-dev-webpage-ui-v4. Required reviewer: ac-dev-rust-grinch-v4. Planning round 1 will start cold. Implementation remains gated by reviewed exact plan revision and explicit human approval at Step 7.5.

  3. added a commit that references this issue on Oct 16, 2026
  4. reopened this on Oct 16, 2026
  5. mblua commented on Oct 16, 2026

    @mblua
    OwnerAuthor

    Post-merge acceptance remains blocked

    The first main publication run38847759720, push SHA b9f1ae598a60927d32924f4ba9487fb719ce4fcc, failed in Run complete frontend suite with coverage, before LCOV validation or upload.

    270 files:269passed/1failed. 4018tests:4017passed/1failed. src/sidebar/watchdog/context-menu-import-boundary.test.ts:183: ContextMenuSurface importer assertion timed out at5000ms. Same test previously timed out once locally, then passed the single authorized local repetition; that prior result does not establish reliability on Ubuntu/main or diagnose this new run. No Codecov authentication/ingestion is proven because the upload step was never reached.

    Applying git-ci-scope-guard: exactly one bounded repetition of this main run's failed job on the same SHA/workflow/runner options; no code/config/environment/timeouts/workers changes. Preserve original failure, no automatic further attempts. If repeated, stop and present separate concrete remediation scope; do not waive fullsuite exit0 or publish stale coverage.

    Reopen I3032 until actual main-SHA publication/report/badge proof and independent Grinch review complete. The merge remains delivered; final acceptance is incomplete. Backend I2963 stays separate. Existing approved immutable plan v1/r1 unchanged.

  6. mblua commented on Oct 16, 2026

    @mblua
    OwnerAuthor

    Publication blocked by reproduced frontend timeout

    The single authorized repetition of run38847759720, attempt2, exact main SHA b9f1ae598a60927d32924f4ba9487fb719ce4fcc, failed again in src/sidebar/watchdog/context-menu-import-boundary.test.ts:183, at the same5000ms timeout. LCOV validation and Codecov upload were skipped. Both original and repeated failures are retained in room-shared/3032-main-38847759720-failed.log and3032-main-attempt2-failed.log.

    On the user's explicit current-status request, latest run38864836770 was inspected: completed failure for SHA fccd10f29bdf0a8cbe51b7b030c6c3bac330a802,4069passed/1failed of4070tests, same test/timeout; upload skipped. This was a later automatic push-main run, not another manual retry. Earlier automatic main runs listed failures too; no assertion about their exact causes without reading them.

    Integration remains merged in PR3033; issue3032 remains OPEN and final acceptance incomplete. No authentication or processed ingestion has been proven; no Codecov-side fault established. The workflow correctly stops before publication when the suite fails.

    Scopeguard disposition: reproduction confirmed; stop manual retries. No test source, timeout, worker, environment, workflow or threshold change, extra harness or new issue is authorized by this status request. The failing test's rootcause and causal relationship to coverage remain undiagnosed. Proposal for user scope decision: investigate and correct this timeout as a separately reviewed change, retaining fullsuite exit0 as publication requirement; no technical design is prescribed by coordinator. Any approved follow-on design belongs to architect/owner under the applicable workflow, not unilateral root implementation.

  7. mblua commented on Oct 16, 2026

    @mblua
    OwnerAuthor

    I3032 — Verified test arrival and execution difference

    User explicitly authorized test/history analysis. Coordinator verified actual source history and GitHub metadata; frontend owner supplied concrete source analysis3032-ui-test-history-analysis-20261016.md, read and accepted. Read-only, no tests or product changes.

    Dates in America/Argentina/Buenos_Aires (UTC-03)

    • Original file0bf4febf and parser reworkcfb6e7b4 both associated by GitHub commit/pulls API with PR1886. Merged to main2026-09-09T03:33:25Z =9Sep00:33:25ART, merge2b3660bfe0fafadc8eec770861d94e3888f1150e. Original commit authored8Sep22:42; do not confuse that with main arrival.
    • Current two-importer allowlist/name changed in e7fc051 Sep24; its main arrival not separately asserted.
    • Last file editbd7384fa belongs PR3025 refs2962, merged main2026-10-15T22:15:57Z =15Oct19:15:57ART, mergea1a694b5962f30f265c1a07b5b91eace18fb683a. Replaced eager Vite raw loading with fs.readFileSync/glob keys; parser, assertion and timeout unchanged.
    • Codecov integration PR3033 merged2026-10-16T03:53:17Z =16Oct00:53:17ART. It did not introduce the guard or change its assertion.

    Exact guard and limitation

    context-menu-import-boundary.test.ts:183 requires exactly SelectionCopyMenu and SessionRowMenu as importers of ContextMenuSurface. It parses every matched TS/TSX source except itself. Static current inventory467candidates/466parserinputs/270tests/~6.17MB; this count is a filesystem inventory, not an executed transformed glob. TS AST construction/traversal occurs in test body; source fs reads occur earlier during module initialization. Logs show5000ms timeout, not an assertion mismatch or detected forbidden importer.

    PR3025 body records successful full coverage with npm test -- --coverage --maxWorkers=1. Current new workflow uses npm test -- --coverage and config has no worker/testTimeout override. That execution difference is verified. Broad parser cost, parallel contention, coverage overhead, growth and loading change remain hypotheses; no causal timing experiment was run and first-ever timeout is not dated.

    References: #1886 and #3025 . Clone is shallow; boundary blame atf7575320 does not prove introduction. No repair or extra retry assigned. Main clean/syncedfccd10f2 during analysis.

  8. mblua commented on Oct 16, 2026

    @mblua
    OwnerAuthor

    Authorized worker-limit correction and technical re-score

    User explicitly authorized the architect's recommendation: dale, hacelo. Correct only .github/workflows/coverage.yml suite command to npm test -- --coverage --maxWorkers=1; retain guard/assertions/5000ms timeout, all tests, denominator/reporters, fresh-output rules and fail-fast upload. Reuse OPEN #3032; no duplicate issue. Architect recommendation and frontend FEASIBLE reports are in room-shared/3032-architect-recommendation-20261016.md and3032-ui-proposal-feasibility-20261016.md. Base main synced/cleanfccd10f29bdf0a8cbe51b7b030c6c3bac330a802.

    Category Score Anchor and evidence
    Scope footprint 1 Floor: one existing workflow line.
    Diagnosis difficulty 4 Near stated-location floor1: failure and execution difference known; contention cause remains a hypothesis to test, no new broad diagnosis assigned.
    Domain knowledge 4 Below subsystem anchor10: existing Vitest CLI worker option and Actions convention.
    Solution-space ambiguity 2 Near determined-change floor1: architect selected exact command and owner verified support; no design choice left.
    Blast radius/reversibility 2 Near local/reversible floor1: informational publication scheduling, one-line revert, no product data.
    Dependency/integration load 3 Near self-contained floor1: locked installed Vitest option; existing Actions/Codecov contracts unchanged.
    Verification difficulty 8 Below new-harness anchor10: complete Ubuntu run and actual processed main-SHA report prove behavior; a green upload exit alone is insufficient.
    State/data/compatibility 1 Stateless floor; no application shape/migration change.
    Concurrency/timing 7 Below clear-ownership async anchor10: reduce test-worker concurrency, retain assertion timing; no shared-state algorithm/lock/cancellation change.
    Environment/tooling 9 Near platform/toolchain anchor10: actual Ubuntu CI timing needed, Windows cannot prove it; existing main workflow is the runner.

    Raw41. Final=round((41-10)/190*99)+1=17/100. Previous initial integration score21; remaining delta is now localized one-line correction, not full integration again.

    Excluded ceremony: issue/branch/PR, planning/review rounds, coordination, CI waiting, merge/cleanup/version administration. Actual CLI/Actions/Ubuntu proof work included.

    Path Lite, low-band developer-authored immutable reviewed revision/no digest. Precedent: PR3025 documented exact successful one-worker coverage command; current workflow already owns the suite/upload. Express excluded by real concurrency/CI execution behavior change and uncertain deciding runtime result. No Full criterion or architect-author veto: no architecture/schema/API/persistence change; prior Narrow architect recommendation is reused, user did not request a Full delivery review.

    Vetoes: Verification8 means Grinch reviews proof; Environment9 means owning developer must state Ubuntu risk in writing before code. Author/owner ac-dev-webpage-ui-v4; initial required consensus participants remain frontend author and ac-dev-rust-grinch-v4 for each new version. No new dependency or test infrastructure warranted.

    Prepare complete immutable v2 in existing canonical issue directory, preserving v1 and reviewed-r1. Human exact-version gate Step7.5 remains; current user authorization permits preparing the concrete correction plan, not skipping its review/approval. Main-only coverage workflow runs the bounded actual Ubuntu test after reviewed delivery; premerge exact applicable PR checks still must pass. No extra Linux setup/harness or duplicate Windows fullsuite needed for this one-line workflow delta.

  9. added a commit that references this issue on Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions