|
4 | 4 |
|
5 | 5 | Status: completed |
6 | 6 |
|
7 | | -Sub-state: LCOV parser regression repaired locally; remote workflow validation is the post-push verification path. |
| 7 | +Sub-state: LCOV `DA:` checksum regression repaired locally; remote workflow validation is the post-push verification path. |
8 | 8 |
|
9 | 9 | ## Requirements |
10 | 10 |
|
@@ -533,3 +533,70 @@ Artifact updates: |
533 | 533 | - SOW lifecycle: reopened from `done/` to `current/` for this parser |
534 | 534 | regression, then completed and moved back to `done/` with the repair. |
535 | 535 | - Specs/docs/skills: no protocol/API/operator behavior changes expected. |
| 536 | + |
| 537 | +## Regression - 2026-06-03 - Codacy LCOV DA Checksums |
| 538 | + |
| 539 | +What broke: |
| 540 | + |
| 541 | +- GitHub Actions run `26879604593`, job `79275935075`, passed coverage |
| 542 | + generation, artifact upload, and `CODACY_API_TOKEN` verification. |
| 543 | +- The first real upload step, `Upload C coverage to Codacy`, still failed. |
| 544 | +- Codacy reporter 14.1.3 again logged `Could not parse report, unrecognized |
| 545 | + report format (tried: LCOV)` for `coverage/codacy/c-lcov.info`. |
| 546 | + |
| 547 | +Evidence: |
| 548 | + |
| 549 | +- Downloaded artifact `codacy-coverage-reports` from run `26879604593`. |
| 550 | +- The repaired C LCOV artifact no longer contained `VER:` records. |
| 551 | +- C `DA:` line records still had the gcovr checksum extension shape: |
| 552 | + `DA:line,count,checksum`. |
| 553 | +- Rust `DA:` line records used the simpler shape `DA:line,count`. |
| 554 | +- A local reporter parse test using the downloaded C artifact reproduced the |
| 555 | + parser failure with the original file. |
| 556 | +- The same local reporter parse test accepted a copy of the C LCOV with only |
| 557 | + the third `DA:` checksum field removed; it generated a Codacy coverage JSON |
| 558 | + report before failing later because the local test intentionally used a dummy |
| 559 | + token. |
| 560 | + |
| 561 | +Why previous validation missed it: |
| 562 | + |
| 563 | +- The validation checked for unsupported record labels and missing |
| 564 | + `end_of_record` separators, but did not check whether Codacy accepts optional |
| 565 | + checksum fields inside otherwise standard `DA:` records. |
| 566 | + |
| 567 | +Repair plan: |
| 568 | + |
| 569 | +- Strip the optional third field from `DA:` records during the existing LCOV |
| 570 | + normalization step. |
| 571 | +- Keep line number and hit count coverage data unchanged. |
| 572 | +- Re-run script lint, SOW audit, local coverage generation, local reporter parse |
| 573 | + against the generated C report, and GitHub Actions `Codacy Coverage`. |
| 574 | + |
| 575 | +Validation: |
| 576 | + |
| 577 | +- `bash -n tests/generate-codacy-coverage.sh` passed. |
| 578 | +- `shellcheck --severity=error tests/generate-codacy-coverage.sh` passed. |
| 579 | +- `actionlint .github/workflows/codacy-coverage.yml` passed. |
| 580 | +- `git diff --check` passed. |
| 581 | +- `tests/generate-codacy-coverage.sh /tmp/plugin-ipc-codacy-coverage` passed |
| 582 | + end to end. |
| 583 | +- Generated C and Rust LCOV reports contain no `VER:` records. |
| 584 | +- Generated C and Rust LCOV `DA:` records all use two fields: |
| 585 | + `DA:line,count`. |
| 586 | +- Generated report path scan found no workstation absolute paths and no Go |
| 587 | + module-prefix paths. |
| 588 | +- Generated C LCOV syntax scan found no records outside the normalized LCOV |
| 589 | + shape needed by Codacy. |
| 590 | +- Local Codacy reporter 14.1.3 parse test against the generated C report used |
| 591 | + the LCOV parser and generated the Codacy coverage JSON payload. The test then |
| 592 | + failed at upload because it intentionally used a dummy token; that is outside |
| 593 | + the parser path being validated locally. |
| 594 | +- GitHub Actions `Codacy Coverage` will run again after this repair is pushed. |
| 595 | + If the remote reporter rejects another report format issue, this SOW will be |
| 596 | + reopened again as a regression with the new evidence. |
| 597 | + |
| 598 | +Artifact updates: |
| 599 | + |
| 600 | +- SOW lifecycle: reopened from `done/` to `current/` for this parser |
| 601 | + regression, then completed and moved back to `done/` with the repair. |
| 602 | +- Specs/docs/skills: no protocol/API/operator behavior changes expected. |
0 commit comments