Add channel-scoped excluded aliases - #26
Conversation
|
Thanks for this, and for the thorough write-up. The shape is right and the code The exclusion also removes the channel's own correct streamsBoth examples in the pull request return zero matches instead of blocking one Your description's example, Game Show Network with Game Show Central excluded: The lineup format example, REELZ with US-ReelzChannel excluded: The cause is that So the exclusion key built from Game Show Central is {'game show', 'gameshow'}, That needs a design decision rather than a small patch. Two Why the gates did not catch thisThe golden corpus records the current behaviour as correct, so it cannot fail on Looking at the pools those use: normalized_variant, quality_bypass_blocked and Whatever we settle on for the comparison, the corpus needs at least one case One scope questionThere are three What I checked and found correct
Note that main has moved since you branched: there are three commits from today Happy to take another look once you have decided how the comparison should work. |
c766a6b to
db4ebec
Compare
|
Thanks for highlighting the normalization issue. I’m updating excluded_aliases to compare against full stream names before positive-match normalization, using case-insensitive matching with whitespace trimmed and collapsed. Exclusions will not use fuzzy matching. |
|
Thank you for turning this around so quickly. I have run the new commit and The two worked examplesLoading Both returned an empty list before. Comparing the raw name was the right call. Gates on the merged treeYour branch merges onto current main with no textual conflict. On the merged
The new guard is not vacuous, and I checked that specificallyMy last comment said the corpus could not tell correct blocking apart from
Every one of the six real mutations was caught by Worth knowing if you were wondering why none of your work went into Validator and runtime agree on what is a valid patternI checked sixteen values against both the Two small things, neither blocking
DocumentationThe lineup format page now says exclusions do not affect guide matching, which I am happy with this. Mark it ready when your own testing is finished and I |
Summary
Adds an optional per-channel
excluded_aliasesfield to lineup JSON files. It prevents a known false-positive stream from attaching to that channel while leaving the stream eligible for other channels.A rejected high-scoring match can currently return through a positive alias, exact or fuzzy matching, callsign rescue, quality-aware matching, or a channel-number boost. Removing a positive alias alone does not reliably prevent that. This field gives lineup authors a durable way to record the rejected channel/stream pairing.
{ "name": "Game Show Network", "number": 184, "aliases": ["GSN"], "excluded_aliases": ["Game Show Central"] }Game Show Central is a separate service that resembles Game Show Network closely enough to be selected incorrectly. The exclusion blocks only that false-positive pairing.
Behavior
regex:,!, glob characters, and similar syntax have no executable meaning.excluded_aliasesis absent.Implementation
excluded_aliasesonce when the lineup is loaded.regex:coverage.Validation
python3 .github/scripts/validate_plugin.pygit diff --checkScope and limitations