Repository navigation
CI: publish frontend coverage to Codecov and show README badge #3032
Description
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.
Activity
mblua commentedon Oct 16, 2026
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.
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.
Merge pull request #3033 from mblua/feature/3032-codecov-frontend-cov…
mblua commentedon Oct 16, 2026
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.
mblua commentedon Oct 16, 2026
Publication blocked by reproduced frontend timeout
The single authorized repetition of run38847759720, attempt2, exact main SHA
b9f1ae598a60927d32924f4ba9487fb719ce4fcc, failed again insrc/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.
mblua commentedon Oct 16, 2026
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)
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 usesnpm test -- --coverageand 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.
mblua commentedon Oct 16, 2026
Authorized worker-limit correction and technical re-score
User explicitly authorized the architect's recommendation:
dale, hacelo. Correct only.github/workflows/coverage.ymlsuite command tonpm 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.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.
Merge pull request #3042 from mblua/fix/3032-coverage-single-worker