probe(756): DO NOT MERGE — measure a dropped step on the BUILD lane #765
Closed
timothy
wants to merge 2 commits from
probe756/dropped-step-build-lane into main
pull from: probe756/dropped-step-build-lane
merge into: :main
:main
:renovate/meziantou.analyzer-3.x
:renovate/nuget-sixlabors.imagesharp-vulnerability
:913-scripted-playout-401
:929-vuln-pkcs-imagesharp-v4
:renovate/dotnet-monorepo
:release/v26.15.0-notes
:renovate/lucene.net
:renovate/cliwrap-3.x
:issue-806-guard-populations
:scratch/767b-poisoned
:scratch/767b-control
:release/v26.14.0-notes
:release/v26.14.0
:renovate/sqlitepclraw.bundle_e_sqlite3-3.x
:docs/510-skill-logo-bug-policy
:fix/510-watermark-resolution-policy
:fix/629-verdict-classifier-falseopens
:fix/609-decisions-edit-token-scope
:issue-135-clear-to-none
:release/v26.12.0-notes
:fix/409b-lastscan-api-parity
:fix/401-updatechannel-mirror-422
:fix/327-playlist-rename-validation
:fix/410-scancancel-log-level
:fix/409-447-librariesscreen-neverscanned
:fix/338-zap-exit-code
:fix/367-plex-budget-message
:fix/310-debom-legacy-cs
:ci/604-lane-rebalance
:feat/388-design-mirror
:feat/247-test-ownership
:feat/247-primary-action
:feat/357-player-owned-playback
:feat/357-jellyfin-plugin-poc
:fix/289-mcp-hardening
:issue58-mcp
:feat/244-channels-extract
:ci/auto-bump-prod-compose
:feat/multi-rerun-collections-api
:feat/collections-api
:feat/quick-wins
:feat/185-docs-part2
:feat/140-collections-screen
:feat/146-channel-edit
:feat/147-classic-ui-link
:issue22-renovate-dashboard
:feat/91-cutover
:feat/63-composite-create
:feat/65-library-browse
:feat/85-epg
:feat/86-schedule-editor
:feat/109-dashboard-data
:feat/99-session-tracking
:fix/dockerfile-node-tag
:feat/59-spa-foundation
:docs/59-ui-redesign-brief
:feat/102-json-guide
:feat/111-schedule-durations
:feat/104-artwork-upload
:feat/103-media-sources-api
:feat/playouts-read-api
:feat/108-health-api
:feat/105-picker-list-endpoints
:issue-97-channel-state-api
:issue42-jellyfin-musicvideos
:issue46-rest-api-error-contract
:dependabot/nuget/ErsatzTV.FFmpeg.Tests/multi-d307a2e06f
:qsv-improvements
:hdr-vulkan-cuda-test
No Reviewers
Labels
Clear labels
ad-hoc
api
bug
ci-cd
content
dependencies
enhancement
frontend
in-progress
jellyfin
parked
priority: high
priority: low
priority: medium
review
security
One-off / ad-hoc work not tracked by a dedicated issue
REST API / HTTP endpoints
Something isn't working
Build, test, deploy pipeline
Channel content / schedules / playlists
Dependency updates (Renovate)
New feature or improvement
ChicoryTV React SPA frontend
Claimed by an active session — do not pick up
Jellyfin tuner / IPTV integration
Excluded from automatic queue pickup; work only when explicitly selected
Adversarial review finding
Security / vulnerability fix
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: timothy/ersatztv#765
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.
Scratch probe for ersatztv#756. DO NOT MERGE — it will be closed unmerged.
Reintroduces the exact #751 defect (an invalid expression payload inside a shell comment) in the
testjob'srevalidatestep, on top of the #756 guard.What this measures
#751 established on the
smalllane that the runner still executes a LATER step after dropping an earlier one. The #756 guard stands entirely on that premise holding on the build lane, where these two required jobs run in acontainer:onubuntu-latest— a different lane, so it is measured rather than assumed.Expected:
revalidateis dropped, every later step still runs, the trailing guard runs and reportsrevalidatemissing, andBuild & test (.NET)concludes failure instead of the green it would have reported before this change.script-testsis expected RED here too — the newtest_the_required_jobs_have_NO_expression_delimiter_in_any_run_bodyrejects the probe payload at review time, which is the other half of the fix working.Probe result — the premise HOLDS on the build lane
Job
test, run 1910, 20:03:49→20:13:31Z (a full 9m42s heavy run, soBuild/Testreally executed).Unable to interpolate expression 'format('# PROBE ONLY … {0}\n…', pr number)': Failed to parse: unexpected token "IDENT"at 20:04:06.detect, restore, npm-ci, check-api, lint, typecheck, web-test, web-build, strip-scanner, build, dotnet-test, with onlyrevalidateabsent. This is the property #751 could only measure on thesmalllane.Assert every expected step executed). Every other step succeeded — so without the guard this run concludessuccesshaving never executedrevalidate. That is the fail-open #756 exists to close, reproduced and then caught.Two incidental confirmations kept in the docs:
RUNNER_TEMPis/tmpon the build lane too (marker at/tmp/etv-ci-steps-ran-test-1910-1), so the run-keying is load-bearing here as well, not just onsmall.ETV_REVALIDATE_SKIP:empty, notfalse. The guard reads anything that is not exactlytrueas "widen what is required" — had it read empty as a skip, the one drop that disables the detect step would also have disabled the guard for everything downstream.Script tests (pytest)is red here as designed: the newtest_the_required_jobs_have_NO_expression_delimiter_in_any_run_bodyrejects this payload at review time, which is the static half of the fix working.Closing unmerged — scratch probe, its purpose is served.
Pull request closed