The advisory baseline check counts a KDoc as a fourth marked test, so it deviates on every PR #120
Closed
opened 2026-08-26 02:57:37 +00:00 by JMR-dev
·
1 comment
No Branch/Tag Specified
main
fix/102-picker-back-press-overshoot
fix/268-saf-picker-determinism
feat/ogg-vorbis-libvorbis
feat/expedited-conversion-work
fix/gate-cache-in-worktrees
chore/gate-runs-shellcheck
test/publish-delete-arm-real-provider
docs/e8-instrumented-coverage
docs/api37-carrier-count-drift
docs/e7-second-constraint
test/publish-to-a-real-saf-destination
fix/api37-report-match-line
fix/api37-task-snapshot-crash
test/join-failure-message-on-device
docs/e2e-read-findings-e7
test/cancelling-a-running-export
test/reattach-to-a-running-job
test/content-uri-reaches-ffmpeg
fix/launcher-wiring-waits-for-the-pick
fix/cancel-tests-need-a-slower-encode
test/cancelling-a-running-join
test/cancelling-a-running-session
test/notification-cancel-action
test/ffmpeg-progress-is-observed
test/fallback-asserts-the-path
test/flac-and-opus-assert-their-format
docs/e2e-read-findings
docs/wave4-coverage-numbers
fix/injectable-startup-sweep-scope
test/session-outcome-seam
test/launcher-callback-identity
test/theme-follows-system-dark
test/audio-drop-arm
fix/rotation-waits-for-recreation
fix/convert-guards-on-ready
test/retry-save-mime
test/hardware-progress-reaches-workmanager
test/ffprobe-mapping-seam
test/device-codec-enumeration-seam
test/unknown-container-row
test/null-message-fallbacks
test/cancel-reaches-workmanager
docs/coverage-wave3-recovery
test/concat-engine-seam
docs/coverage-wave3
test/mediaprobe-merge-seam
test/adaptive-shell-wiring
test/aac-audio-args
test/notification-progress-text
test/media3-muxer-guard
test/hardware-fallback-and-cancellation
test/unprobeable-join-clip
test/one-branch-outcomes
test/foreground-type-regimes
fix/bound-wedge-diagnostics
docs/coverage-wave2
test/screen-wiring
test/viewmodel-setters
test/join-state-mapping
test/conversion-state-mapping
test/dedupe-user-messages
fix/restore-stack-merges
test/refused-jobs
test/concatworker-failure-arms
test/container-capabilities-audio
test/readspec-enum-fallbacks
test/outputpublisher-seams
test/mediaprobe-track-seam
test/outputpublisher-partial-branches
test/fake-provider-scaffolding
docs/coverage-read-findings
chore/gitignore-kotlin
test/bound-the-hangs
docs/coverage-remeasure
ci/baseline-counter-precision
fix/invalid-suggestion-chip
ci/wedged-leg-report
fix/reattachment-overwrites-pick
test/theme-live-branches
fix/failed-save-retry
fix/empty-composition-crash
ci/advisory-failure-report
docs/seven-run-counts
test/release-permission-guard
ci/build-workflow-permissions
docs/api37-point-release
docs/benchmark-populate-path
fix/dead-assertion-probe-test
ci/actionlint
test/device-codecs-encode-consequence
fix/sdkmanager-pipefail
docs/readme-restart-claim
fix/saf-picker-root-discovery
fix/probe-dispatcher-seam
test/media3engine-mime-tables
test/mediaprobe-pure-helpers
fix/codec-vocabulary-drift
docs/robolectric-rationale-correction
docs/api37-advisory-counts
test/r38-8-saf-e2e
test/r38-7-join-states
test/r38-6-conversion-states
test/r38-5-state-seam
fix/jacoco-robolectric-coverage
docs/instrumented-tests-correction
test/r38-2-filecard
test/r38-4-advanced-picker
test/r38-3-pickers
tools/file-issue-script
tools/api-37-emulator
fix/review-app-gaps
docs/review-corrections
No results found.
Labels
Clear labels
above-cut
accessibility
backlog
bug
confirmed
documentation
duplicate
enhancement
good first issue
help wanted
invalid
plausible
question
sev:high
sev:low
sev:medium
wontfix
Worked autonomously overnight: local, JVM-verifiable, no product decision
Barrier affecting people with disabilities
Held for manual review: product/UX call, CI/workflow, hardware, or unverifiable here
Something isn't working
Reviewer demonstrated the defect
Improvements or additions to documentation
This issue or pull request already exists
New feature or request
Good for newcomers
Extra attention is needed
This doesn't seem right
Reviewer could not fully demonstrate it; treat as unproven
Further information is requested
High severity
Low severity
Medium severity
This will not be worked on
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: JMR-dev/LibreMediaConverter#120
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The advisory job's baseline check emits a false deviation on every PR, on
mainas of62040b2:There are three.
.github/scripts/e2e-report-shape.sh:186counts with:which matches the string anywhere, including inside a KDoc. The fourth "test" it
finds is a comment added by #113 saying the opposite:
Real annotations: 3.
FAILS_ON_EMULATOR_API37_BASELINE: 3. They agree; only thecounter disagrees with both.
Why this matters more than a wrong number. #83 added this so a new failure
could not be invisible. A deviation notice that is wrong on every PR trains
everyone to skim past deviation notices, which is exactly the signal it was built
to create. It also cannot be resolved by editing the baseline — setting it to 4
would make the real check wrong and would fire the moment someone adds or
removes a genuine marker.
Neither ingredient is at fault on its own: #111's counter and #113's KDoc are
both reasonable, and they were written days apart. This is the seam between them.
The trap in fixing it. The obvious repair — count only lines that are just
the annotation — must not also stop counting a legitimately-placed one. Kotlin
allows
@FailsOnEmulatorApi37 @Test fun x()on a single line, and an annotationindented inside a nested class still counts. Whatever the new matcher is, it
needs a case for each of those, not only for the comment it is trying to exclude.
Test:
e2e-report-shape.shis exercised against captured CI output ratherthan a live emulator — that is how #111 was verified and this host cannot run API
37 at all. The check is a pure function of the working tree, so it can also be
exercised directly against fixture files: a real annotation, a same-line
@FailsOnEmulatorApi37 @Test, a KDoc mentioning it, and an import.Nothing here should change any job's status or the pass/fail rules — the
advisory job is
continue-on-errorand stays red by design. This is aboutwhether its notices can be trusted.
Sequencing: #118 is being worked in this same script right now. This should
land after it to avoid a conflict.
A validated matcher, so this does not have to be guessed at
I built a fixture covering every shape the counter has to survive and ran three candidates against
it. Fixture (all five cases, three of which are real annotations):
grep -v import | grep -c FailsOn^[[:space:]]*@FailsOnEmulatorApi37[[:space:]]*$^[[:space:]]*@FailsOnEmulatorApi37([[:space:]]|$)The middle one is the trap I flagged when filing, and it is a real trap. "Only the annotation on
its own line" looks like the obvious repair and silently drops
@FailsOnEmulatorApi37 @Test— it would undercount the moment someone writes that, and undercountingis the direction that hides a genuine new marker. Anchoring at line-start and requiring whitespace or
end-of-line after the name keeps that case and still rejects the KDoc (
^\s*@does not match* Deliberately not \@...) and the commented-out form (^\s*@does not match// @...`).The last row is the one to implement. It gives 3 on the real tree, which matches
FAILS_ON_EMULATOR_API37_BASELINE = 3, so the false deviation goes away without touching thebaseline.
Two caveats on that recommendation, so it is not over-trusted:
grep -rnE '^\s*@[A-Za-z]+\s+@[A-Za-z]'finds no instance in
androidTestortest. It is legal Kotlin and cheap to keep working, notsomething currently relied on.
multi-line string or a
/* */block that begins mid-line. Neither exists here; if that evermatters the check wants a different tool, not a longer regex.
Fixture is at
scratchpad/baseline-matcher/fixtures.ktin my scratch dir — worth committingalongside the fix as the test the ticket asks for, since the check is a pure function of the tree.