Skip to content

fix!: INTENT-2 locale base names, deictic {query} guard, packaging modernization - #73

Open
JarbasAl wants to merge 1 commit into
devfrom
improve/en-us-intent-definitions
Open

fix!: INTENT-2 locale base names, deictic {query} guard, packaging modernization#73
JarbasAl wants to merge 1 commit into
devfrom
improve/en-us-intent-definitions

Conversation

@JarbasAl

@JarbasAl JarbasAl commented Jul 3, 2026

Copy link
Copy Markdown
Member

🤖 Auto-generated by Claude Sonnet 5 (claude-sonnet-5) via Claude Code — NOT human-reviewed. Verify before acting.

Summary

Reviews and improves the intent definitions of the wallpapers skill against
OVOS-INTENT-1/2. Scope is en-US content plus the cross-locale §2 base-name fix.

INTENT-2 §2 — resource base names (all locales)

Base names must be lowercase ASCII [a-z0-9_] with no dots. Renamed across
every locale and updated the skill's @intent_handler/speak_dialog refs:

  • picture.about.intentpicture_about.intent
  • picture.random.intentpicture_random.intent
  • wallpaper.about.intentwallpaper_about.intent
  • wallpaper.random.intentwallpaper_random.intent
  • wallpaper.changed.dialogwallpaper_changed.dialog
  • wallpaper.fail.dialogwallpaper_fail.dialog
  • no.more.pictures.dialogno_more_pictures.dialog
  • RandomKeyword.vocrandomkeyword.voc
  • da-DK's {forespørgsel} slot is renamed to {query}, matching every other
    locale
  • the duplicate fr-fr directory (136 files, mostly subreddit-name keyword
    .voc files referenced nowhere in __init__.py -- adapt only requires
    next/previous/set/wallpapers/picture -- plus a few templates that
    differ slightly from the canonical set) is dropped in favor of fr-FR
    (15 files), the correctly-cased BCP-47 directory for the same language
  • test/unittests/test_locale.py gets a tripwire asserting every
    .intent/.dialog base name under locale/*/ matches [a-z0-9_]+, so a
    future rename regression fails CI instead of silently reintroducing a
    dotted or mixed-case name

en-US intent quality

  • Coverage / consolidation via expansion: (change|switch|update|randomize),
    (new|different|random|fresh), (show|display|find), plus give me a / i want a.
  • Collision tightening: picture (GUI preview) and wallpaper (desktop background)
    intents kept on distinct verbs; no bare background (colour-picker skill);
    no take (camera skill). A negative-confusable e2e case pins "set the
    background to blue" as unclaimed.
  • {query} slot: added query.entity (example subjects) and query.blacklist
    (deictic it/that/this) per INTENT-2 §4.3 slot-value exclusion, so
    "set the wallpaper to that" leaves {query} unresolved instead of being
    routed as a nonsense wallhaven search. Two e2e suites fire real utterances
    through the bus to confirm this: one pins a padatious pipeline, where the
    blacklist unresolves the slot at match time, and the other pins a padacioso
    pipeline, where padacioso has no slot-blacklist support at all so the
    deictic word binds raw and the handler's own _resolve_query re-check is
    the only thing catching it -- both arms are needed for the guard to have
    any coverage. A real topic ("space") still routes normally under both.

Packaging

setup.py is replaced with pyproject.toml. The importable module keeps its
existing name, skill_ovos_wallpapers (derived the same way the old
setup.py derived it, from the skill-ovos-wallpapers repo name). The skill
entry-point group moves from the legacy ovos.plugin.skill to the current
opm.skill; the entry-point name itself, skill-ovos-wallpapers.openvoiceos,
is unchanged, so skill_id and any persisted settings survive the upgrade
from the currently published 1.0.16a1.

Test suite

Rebased onto the locale-loading/ovoscope test infrastructure added to dev
in the meantime; the golden-utterance corpus and the slideshow context-gate
suite are updated for the renamed intent base names above. The pinned test
extras (ovos-workshop, ovoscope, ovos-adapt-parser, ovos-padatious)
are floored to versions that resolve together under --prerelease=allow
instead of pulling in stale, API-incompatible releases.

Lint

ovos-spec-lint locale/en-US → 0 errors, 0 warnings.

@coderabbitai

coderabbitai Bot commented Jul 3, 2026

Copy link
Copy Markdown

Important

Review available on request

  • 🔍 Trigger review

Reviews should be triggered manually for repositories with fewer than 10 stars. Select Trigger review above or comment @coderabbitai review to review the latest changes. For a full review, comment @coderabbitai full review.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: d4bf843a-871b-4b5a-83c6-91466c25a0e4

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch improve/en-us-intent-definitions

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

The bots have finished their work. Take a look! 🤖

I've aggregated the results of the automated checks for this PR below.

🔒 Security (pip-audit)

The security scan is now complete. 🏁

✅ No known vulnerabilities found (75 packages scanned).

🔌 Skill Tests (ovoscope)

I've analyzed the semantic resonance of your dialogs. 🔊

49/52 passed

TestPictureAbout — 1/1
TestPictureRandom — 1/1
TestWallpaperAbout — 1/1
TestWallpaperRandom — 2/2
test_deictic_phrase_with_real_topic_is_claimed[padacioso] — 1/1
test_deictic_phrase_with_real_topic_is_claimed[padatious] — 1/1
test_deictic_query_is_not_claimed_as_topic[change the wallpaper to that one-padacioso] — 1/1
test_deictic_query_is_not_claimed_as_topic[change the wallpaper to that one-padatious] — 1/1
test_deictic_query_is_not_claimed_as_topic[change the wallpaper to the same-padacioso] — 1/1
test_deictic_query_is_not_claimed_as_topic[change the wallpaper to the same-padatious] — 1/1
test_deictic_query_is_not_claimed_as_topic[set the wallpaper to that-padacioso] — 1/1
test_deictic_query_is_not_claimed_as_topic[set the wallpaper to that-padatious] — 1/1
test_deictic_query_is_not_claimed_as_topic[set the wallpaper to this-padacioso] — 1/1
test_deictic_query_is_not_claimed_as_topic[set the wallpaper to this-padatious] — 1/1
test_deictic_query_is_not_claimed_as_topic[show me a picture of it-padacioso] — 1/1
test_deictic_query_is_not_claimed_as_topic[show me a picture of it-padatious] — 1/1

❌ **test_golden_utterance[after]** — 0/1
Test Result
test_golden_utterance[after] ❌ xfailed

test_golden_utterance[after] failure:

@pytest.mark.timeout(60)
    @pytest.mark.parametrize("row", GOLDEN_ROWS, ids=_golden_id)
    def test_golden_utterance(minicroft, row):
        session = _fresh_session(f"golden-{_golden_id(row)}")
        types = _fire(minicroft, session, row["utterance"])
>       assert any(_matches_intent(t, SKILL_ID, row["intent_label"]) for t in types), (
            f"{row['utterance']!r}: expected {SKILL_ID}:{row['intent_label']}, got {types!r}"
        )
E       AssertionError: 'after': expected skill-ovos-wallpapers.openvoiceos:NextPictureIntent, got ['recognizer_loop:utterance', 'ovos.intent.unmatched']
E       assert False
E        +  where False = any(<generator object test_golden_utterance.<locals>.<genexpr> at 0x7fcbcdb12640>)

test/end2end/test_golden_utterances.py:197: AssertionError
❌ **test_golden_utterance[before]** — 0/1
Test Result
test_golden_utterance[before] ❌ xfailed

test_golden_utterance[before] failure:

@pytest.mark.timeout(60)
    @pytest.mark.parametrize("row", GOLDEN_ROWS, ids=_golden_id)
    def test_golden_utterance(minicroft, row):
        session = _fresh_session(f"golden-{_golden_id(row)}")
        types = _fire(minicroft, session, row["utterance"])
>       assert any(_matches_intent(t, SKILL_ID, row["intent_label"]) for t in types), (
            f"{row['utterance']!r}: expected {SKILL_ID}:{row['intent_label']}, got {types!r}"
        )
E       AssertionError: 'before': expected skill-ovos-wallpapers.openvoiceos:PrevPictureIntent, got ['recognizer_loop:utterance', 'ovos.intent.unmatched']
E       assert False
E        +  where False = any(<generator object test_golden_utterance.<locals>.<genexpr> at 0x7fcbced65940>)

test/end2end/test_golden_utterances.py:197: AssertionError
✅ **test_golden_utterance[change current wall paper]** — 1/1 ✅ **test_golden_utterance[change current wallpaper]** — 1/1 ✅ **test_golden_utterance[change homescreen wall paper]** — 1/1 ✅ **test_golden_utterance[change homescreen wallpaper]** — 1/1 ✅ **test_golden_utterance[change the wall paper]** — 1/1 ✅ **test_golden_utterance[change wall paper about something]** — 1/1 ✅ **test_golden_utterance[change wall paper for something]** — 1/1 ✅ **test_golden_utterance[change wall paper to something]** — 1/1 ✅ **test_golden_utterance[change wall paper with something]** — 1/1 ✅ **test_golden_utterance[change wallpaper about something]** — 1/1 ✅ **test_golden_utterance[display another image about something]** — 1/1 ✅ **test_golden_utterance[display another image for something]** — 1/1 ✅ **test_golden_utterance[display another image with something]** — 1/1 ✅ **test_golden_utterance[display another image]** — 1/1 ✅ **test_golden_utterance[display another photo about something]** — 1/1 ✅ **test_golden_utterance[display another photo for something]** — 1/1 ✅ **test_golden_utterance[display another photo]** — 1/1 ✅ **test_golden_utterance[display another picture]** — 1/1 ✅ **test_golden_utterance[display new image]** — 1/1 ✅ **test_golden_utterance[display new photo]** — 1/1
❌ **test_golden_utterance[wall paper change]** — 0/1
Test Result
test_golden_utterance[wall paper change] ❌ xfailed

test_golden_utterance[wall paper change] failure:

mark.timeout(60)
    @pytest.mark.parametrize("row", GOLDEN_ROWS, ids=_golden_id)
    def test_golden_utterance(minicroft, row):
        session = _fresh_session(f"golden-{_golden_id(row)}")
        types = _fire(minicroft, session, row["utterance"])
>       assert any(_matches_intent(t, SKILL_ID, row["intent_label"]) for t in types), (
            f"{row['utterance']!r}: expected {SKILL_ID}:{row['intent_label']}, got {types!r}"
        )
E       AssertionError: 'wall paper change': expected skill-ovos-wallpapers.openvoiceos:MakeWallpaperIntent, got ['recognizer_loop:utterance', 'ovos.intent.unmatched']
E       assert False
E        +  where False = any(<generator object test_golden_utterance.<locals>.<genexpr> at 0x7fcbcd4c4740>)

test/end2end/test_golden_utterances.py:197: AssertionError
✅ **test_negative_confusable_not_claimed[ask wordnet about word]** — 1/1 ✅ **test_negative_confusable_not_claimed[can you find something on wikipedia]** — 1/1 ✅ **test_negative_confusable_not_claimed[can you spell word]** — 1/1 ✅ **test_negative_confusable_not_claimed[can you tell me the weather]** — 1/1 ✅ **test_negative_confusable_not_claimed[search wikihow for something]** — 1/1 ✅ **test_negative_confusable_not_claimed[set an alarm]** — 1/1 ✅ **test_negative_confusable_not_claimed[set the background to blue]** — 1/1 ✅ **test_negative_confusable_not_claimed[tell me the word of the day]** — 1/1 ✅ **test_next_picture_does_not_match_fresh_session** — 1/1 ✅ **test_next_picture_matches_after_priming_slideshow** — 1/1 ✅ **test_real_topic_query_is_claimed[padacioso]** — 1/1 ✅ **test_real_topic_query_is_claimed[padatious]** — 1/1

🚌 Bus Coverage

Ensuring our message-bus safety net is wide enough. 🕸️

🔴 Coverage Summary

Metric Status Coverage
Listeners ░░░░░░░░░░ 8.6% 12/140 handlers
Emitters ██████████ 100% 9/9 observed
Assertions ██████████ 100% 9/9 asserted

📊 Per-Skill Breakdown

Skill Listeners Observed Asserted
AdaptPipeline 0/14 (0.0%) 0/0 0/0
ConverseService 0/4 (0.0%) 0/0 0/0
DomainAdaptPipeline 0/14 (0.0%) 0/0 0/0
FallbackService 0/2 (0.0%) 0/0 0/0
HierarchicalAdaptPipeline 0/14 (0.0%) 0/0 0/0
IntentDispatcher 1/2 (50.0%) 0/0 0/0
IntentManifest 0/8 (0.0%) 0/0 0/0
IntentService 0/4 (0.0%) 0/0 0/0
PadaciosoPipeline 0/11 (0.0%) 0/0 0/0
PadatiousPipeline 0/15 (0.0%) 0/0 0/0
SkillManager 0/5 (0.0%) 0/0 0/0
_LegacyStopBridge 1/3 (33.3%) 0/0 0/0
__core__ 4/12 (33.3%) 1/1 1/1
skill-ovos-wallpapers.openvoiceos 4/28 (14.3%) 8/8 8/8
type 2/4 (50.0%) 0/0 0/0
🔍 Detailed Message Type Breakdown

AdaptPipeline

⚠️ Uncovered Listeners:

  • ovos.intent.deregister (Intent)
  • ovos.intent.disable (Intent)
  • ovos.intent.enable (Intent)
  • ovos.intent.register.keyword (Intent)
  • detach_intent
  • detach_skill
  • intent.service.adapt.get
  • intent.service.adapt.manifest.get
  • intent.service.adapt.vocab.manifest.get
  • ovos.entity.deregister
  • ovos.entity.register
  • ovos.skill.deregister
  • register_intent
  • register_vocab

ConverseService

⚠️ Uncovered Listeners:

  • converse:skill (Intent)
  • intent.service.active_skills.get
  • intent.service.skills.activate
  • intent.service.skills.deactivate

DomainAdaptPipeline

⚠️ Uncovered Listeners:

  • ovos.intent.deregister (Intent)
  • ovos.intent.disable (Intent)
  • ovos.intent.enable (Intent)
  • ovos.intent.register.keyword (Intent)
  • detach_intent
  • detach_skill
  • intent.service.adapt.get
  • intent.service.adapt.manifest.get
  • intent.service.adapt.vocab.manifest.get
  • ovos.entity.deregister
  • ovos.entity.register
  • ovos.skill.deregister
  • register_intent
  • register_vocab

FallbackService

⚠️ Uncovered Listeners:

  • ovos.skills.fallback.deregister
  • ovos.skills.fallback.register

HierarchicalAdaptPipeline

⚠️ Uncovered Listeners:

  • ovos.intent.deregister (Intent)
  • ovos.intent.disable (Intent)
  • ovos.intent.enable (Intent)
  • ovos.intent.register.keyword (Intent)
  • detach_intent
  • detach_skill
  • intent.service.adapt.get
  • intent.service.adapt.manifest.get
  • intent.service.adapt.vocab.manifest.get
  • ovos.entity.deregister
  • ovos.entity.register
  • ovos.skill.deregister
  • register_intent
  • register_vocab

IntentDispatcher

⚠️ Uncovered Listeners:

  • mycroft.skill.handler.error
    ✅ Covered Listeners:
  • mycroft.skill.handler.complete (5x)

IntentManifest

⚠️ Uncovered Listeners:

  • ovos.intent.deregister (Intent)
  • ovos.intent.describe (Intent)
  • ovos.intent.disable (Intent)
  • ovos.intent.enable (Intent)
  • ovos.intent.list (Intent)
  • ovos.intent.register.keyword (Intent)
  • ovos.intent.register.template (Intent)
  • ovos.skill.deregister

IntentService

⚠️ Uncovered Listeners:

  • intent.service.intent.get (Intent)
  • intent.service.pipelines.reload
  • intent.service.skills.deactivate
  • ovos.utterance.handle

PadaciosoPipeline

⚠️ Uncovered Listeners:

  • ovos.intent.deregister (Intent)
  • ovos.intent.disable (Intent)
  • ovos.intent.enable (Intent)
  • ovos.intent.register.template (Intent)
  • padatious:register_entity (Intent)
  • padatious:register_intent (Intent)
  • detach_intent
  • detach_skill
  • ovos.entity.deregister
  • ovos.entity.register
  • ovos.skill.deregister

PadatiousPipeline

⚠️ Uncovered Listeners:

  • ovos.intent.deregister (Intent)
  • ovos.intent.disable (Intent)
  • ovos.intent.enable (Intent)
  • ovos.intent.register.template (Intent)
  • padatious:register_entity (Intent)
  • padatious:register_intent (Intent)
  • detach_intent
  • detach_skill
  • intent.service.padatious.entities.manifest.get
  • intent.service.padatious.get
  • intent.service.padatious.manifest.get
  • mycroft.skills.train
  • ovos.entity.deregister
  • ovos.entity.register
  • ovos.skill.deregister

SkillManager

⚠️ Uncovered Listeners:

  • skill.converse.get_response.disable
  • skillmanager.activate
  • skillmanager.deactivate
  • skillmanager.keep
  • skillmanager.list

_LegacyStopBridge

⚠️ Uncovered Listeners:

  • stop:global (Intent)
  • stop:skill (Intent)
    ✅ Covered Listeners:
  • ovos.intent.matched (5x)

__core__

⚠️ Uncovered Listeners:

  • ovos-stop-pipeline-plugin:global_stop (Intent)
  • ovos.intent.unmatched (Intent)
  • clear_context
  • message
  • ovos.session.sync
  • ovos.session.update_default
  • remove_context
  • skill.converse.get_response.enable
    ✅ Covered Listeners:
  • add_context (5x)
  • mycroft.skill.handler.start (5x)
  • ovos.utterance.handled (4x)
  • ovos.utterance.speak (8x)

📤 Emitters:

  • recognizer_loop:utterance (Asserted ✅)

skill-ovos-wallpapers.openvoiceos

⚠️ Uncovered Listeners:

  • question:action (Intent)
  • question:action.skill-ovos-wallpapers.openvoiceos (Intent)
  • question:query (Intent)
  • skill-ovos-wallpapers.openvoiceos:MakeWallpaperIntent (Intent)
  • skill-ovos-wallpapers.openvoiceos:NextPictureIntent (Intent)
  • skill-ovos-wallpapers.openvoiceos:PrevPictureIntent (Intent)
  • homescreen.metadata.get
  • mycroft.skill-ovos-wallpapers.openvoiceos.all_loaded
  • mycroft.skill-ovos-wallpapers.openvoiceos.is_alive
  • mycroft.skill-ovos-wallpapers.openvoiceos.is_ready
  • mycroft.skill.disable_intent
  • mycroft.skill.enable_intent
  • mycroft.skill.remove_cross_context
  • mycroft.skill.set_cross_context
  • mycroft.skills.settings.changed
  • mycroft.stop
  • ovos.common_query.ping
  • ovos.skills.settings_changed
  • skill-ovos-wallpapers.openvoiceos.converse.get_response
  • skill-ovos-wallpapers.openvoiceos.get.new.wallpaper
  • skill-ovos-wallpapers.openvoiceos.get.wallpaper.collection
  • skill-ovos-wallpapers.openvoiceos.set
  • skill-ovos-wallpapers.openvoiceos.stop
  • skill-ovos-wallpapers.openvoiceos.stop.ping
    ✅ Covered Listeners:
  • skill-ovos-wallpapers.openvoiceos:picture_about (1x)
  • skill-ovos-wallpapers.openvoiceos:picture_random (1x)
  • skill-ovos-wallpapers.openvoiceos:wallpaper_about (1x)
  • skill-ovos-wallpapers.openvoiceos:wallpaper_random (2x)

📤 Emitters:

  • mycroft.skill.handler.complete (Asserted ✅)
  • mycroft.skill.handler.start (Asserted ✅)
  • ovos.utterance.handled (Asserted ✅)
  • skill-ovos-wallpapers.openvoiceos.activate (Asserted ✅)
  • skill-ovos-wallpapers.openvoiceos:picture_about (Asserted ✅)
  • skill-ovos-wallpapers.openvoiceos:picture_random (Asserted ✅)
  • skill-ovos-wallpapers.openvoiceos:wallpaper_about (Asserted ✅)
  • skill-ovos-wallpapers.openvoiceos:wallpaper_random (Asserted ✅)

type

⚠️ Uncovered Listeners:

  • recognizer_loop:record_begin (Intent)
  • recognizer_loop:record_end (Intent)
    ✅ Covered Listeners:
  • recognizer_loop:audio_output_end (2x)
  • recognizer_loop:audio_output_start (8x)

⚖️ License Check

Ensuring our licenses allow for commercial use. 🏢

✅ No license violations found.

Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed.

🎙️ Skill

Evaluating the skill's conversational prowess. 💬

ℹ️ Not an OVOS skill repo — check skipped.

📊 Coverage

A detailed breakdown of what's being tested. 📊

0.0% total coverage

Per-file coverage (2 files)
File Coverage Missing lines
__init__.py 0.0% 120
version.py 0.0% 7

Full report: download the coverage-report artifact.

🔍 Lint

Another day, another successful automated run. 🌅

ruff: issues found — see job log

📋 Repo Health

Scanning for any signs of 'comment' bad breath. 🌬️

✅ All required files present.

Latest Version: 1.0.16a1

version.py — Version file
README.md — README
LICENSE — License file
pyproject.toml — pyproject.toml
⚠️ setup.py — setup.py
🗑️ MANIFEST.in — legacy: pyproject.toml is present; this file is no longer needed
CHANGELOG.md — Changelog
version.py has valid version block markers

🏷️ Release Preview

Checking if we've included all the important changes. 📋

Caution

Breaking change — this PR will bump the MAJOR version (1.0.16a12.0.0a1).
Downstream dependents may break. Double-check compatibility before merging.

Current: 1.0.16a1Next: 2.0.0a1

Signal Value
Label fix, breaking
PR title fix!: INTENT-2 locale base names, deictic {query} guard, packaging modernization
Bump major

✅ PR title follows conventional commit format.


🚀 Release Channel Compatibility

Predicted next version: 2.0.0a1

Channel Status Note Current Constraint
Stable Too new (must be <1.1.0) ovos-skill-wallpapers>=1.0.9,<1.1.0
Testing Too new (must be <2.0.0) ovos-skill-wallpapers>=1.0.9,<2.0.0
Alpha Compatible ovos-skill-wallpapers>=1.0.16a1

🔨 Build Tests

Build test complete! Let's see if everything fits together. 🧩

✅ All versions pass

Python Build Install Tests
3.10
3.11
3.12
3.13
3.14

🧪 Spec Lint

Ensuring your contribution is moving forward. 🚀

122 error(s), 117 warning(s)

locale/de-DE/AVPorn.voc: error: base name 'AVPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/AVPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/AbandonedPorn.voc: error: base name 'AbandonedPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/AbandonedPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/AdPorn.voc: error: base name 'AdPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/AdPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/AdrenalinePorn.voc: error: base name 'AdrenalinePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/AdrenalinePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/AerialPorn.voc: error: base name 'AerialPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/AerialPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/AgriculturePorn.voc: error: base name 'AgriculturePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/AgriculturePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/AlbumArtPorn.voc: error: base name 'AlbumArtPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/AlbumArtPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/AmateurEarthPorn.voc: error: base name 'AmateurEarthPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/AmateurEarthPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/AmateurPhotography.voc: error: base name 'AmateurPhotography' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/AmateurPhotography.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/AnimalPorn.voc: error: base name 'AnimalPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/AnimalPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ApocalypsePorn.voc: error: base name 'ApocalypsePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ApocalypsePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ArchitecturePorn.voc: error: base name 'ArchitecturePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ArchitecturePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ArtPorn.voc: error: base name 'ArtPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ArtPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ArtefactPorn.voc: error: base name 'ArtefactPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ArtefactPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ArtistOfTheDay.voc: error: base name 'ArtistOfTheDay' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ArtistOfTheDay.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/AutumnPorn.voc: error: base name 'AutumnPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/AutumnPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/BackgroundArt.voc: error: base name 'BackgroundArt' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/BackgroundArt.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/BeachPorn.voc: error: base name 'BeachPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/BeachPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/BoatPorn.voc: error: base name 'BoatPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/BoatPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/BonsaiPorn.voc: error: base name 'BonsaiPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/BonsaiPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/BookPorn.voc: error: base name 'BookPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/BookPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/BotanicalPorn.voc: error: base name 'BotanicalPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/BotanicalPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/BridgePorn.voc: error: base name 'BridgePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/BridgePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/CabinPorn.voc: error: base name 'CabinPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/CabinPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/CarPorn.voc: error: base name 'CarPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/CarPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/CemeteryPorn.voc: error: base name 'CemeteryPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/CemeteryPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ChurchPorn.voc: error: base name 'ChurchPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ChurchPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/CityPorn.voc: error: base name 'CityPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/CityPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ClimbingPorn.voc: error: base name 'ClimbingPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ClimbingPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ComicBookPorn.voc: error: base name 'ComicBookPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ComicBookPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/Conservation.voc: error: base name 'Conservation' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/Conservation.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/CulinaryPorn.voc: error: base name 'CulinaryPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/CulinaryPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/DesertPorn.voc: error: base name 'DesertPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/DesertPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/DesignPorn.voc: error: base name 'DesignPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/DesignPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/DessertPorn.voc: error: base name 'DessertPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/DessertPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/DestructionPorn.voc: error: base name 'DestructionPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/DestructionPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/EarthPorn.voc: error: base name 'EarthPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/EarthPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/EarthPornVids.voc: error: base name 'EarthPornVids' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/EarthPornVids.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/EarthlingPorn.voc: error: base name 'EarthlingPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/EarthlingPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ExposurePorn.voc: error: base name 'ExposurePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ExposurePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/EyeCandy.voc: error: base name 'EyeCandy' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/EyeCandy.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/F1Porn.voc: error: base name 'F1Porn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/F1Porn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/FWEPP.voc: error: base name 'FWEPP' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/FWEPP.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/FashionPorn.voc: error: base name 'FashionPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/FashionPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/FirePorn.voc: error: base name 'FirePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/FirePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/FoodPorn.voc: error: base name 'FoodPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/FoodPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/FossilPorn.voc: error: base name 'FossilPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/FossilPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/FractalPorn.voc: error: base name 'FractalPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/FractalPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/FuturePorn.voc: error: base name 'FuturePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/FuturePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/GamerPorn.voc: error: base name 'GamerPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/GamerPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/GeekPorn.voc: error: base name 'GeekPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/GeekPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/GeologyPorn.voc: error: base name 'GeologyPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/GeologyPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/GunPorn.voc: error: base name 'GunPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/GunPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/HellscapePorn.voc: error: base name 'HellscapePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/HellscapePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/HistoryPorn.voc: error: base name 'HistoryPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/HistoryPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/HousePorn.voc: error: base name 'HousePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/HousePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/HumanPorn.voc: error: base name 'HumanPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/HumanPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ITookAPicture.voc: error: base name 'ITookAPicture' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ITookAPicture.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ImaginaryLandscapes.voc: error: base name 'ImaginaryLandscapes' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ImaginaryLandscapes.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ImaginaryWildlands.voc: error: base name 'ImaginaryWildlands' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ImaginaryWildlands.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/IncredibleIndia.voc: error: base name 'IncredibleIndia' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/IncredibleIndia.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/InfraredPorn.voc: error: base name 'InfraredPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/InfraredPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/InfrastructurePorn.voc: error: base name 'InfrastructurePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/InfrastructurePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/InstrumentPorn.voc: error: base name 'InstrumentPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/InstrumentPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/InterstellarArt.voc: error: base name 'InterstellarArt' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/InterstellarArt.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/JoshuaTree.voc: error: base name 'JoshuaTree' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/JoshuaTree.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/KnifePorn.voc: error: base name 'KnifePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/KnifePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/LakePorn.voc: error: base name 'LakePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/LakePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/LavaPorn.voc: error: base name 'LavaPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/LavaPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/MTGPorn.voc: error: base name 'MTGPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/MTGPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/MachinePorn.voc: error: base name 'MachinePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/MachinePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/MacroPorn.voc: error: base name 'MacroPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/MacroPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/MegalithPorn.voc: error: base name 'MegalithPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/MegalithPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/MetalPorn.voc: error: base name 'MetalPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/MetalPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/MicroPorn.voc: error: base name 'MicroPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/MicroPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/MilitaryPorn.voc: error: base name 'MilitaryPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/MilitaryPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/MotorcyclePorn.voc: error: base name 'MotorcyclePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/MotorcyclePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/MoviePosterPorn.voc: error: base name 'MoviePosterPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/MoviePosterPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/MushroomPorn.voc: error: base name 'MushroomPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/MushroomPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/NZPhotos.voc: error: base name 'NZPhotos' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/NZPhotos.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/NationalGeographic.voc: error: base name 'NationalGeographic' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/NationalGeographic.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/Nature.voc: error: base name 'Nature' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/Nature.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/NatureGifs.voc: error: base name 'NatureGifs' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/NatureGifs.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/NaturePics.voc: error: base name 'NaturePics' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/NaturePics.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/NewsPorn.voc: error: base name 'NewsPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/NewsPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/NotSafeForNature.voc: error: base name 'NotSafeForNature' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/NotSafeForNature.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/OrganizationPorn.voc: error: base name 'OrganizationPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/OrganizationPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/PolicePorn.voc: error: base name 'PolicePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/PolicePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/PowerWashingPorn.voc: error: base name 'PowerWashingPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/PowerWashingPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/QuotesPorn.voc: error: base name 'QuotesPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/QuotesPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/RetailPorn.voc: error: base name 'RetailPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/RetailPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/RidesPorn.voc: error: base name 'RidesPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/RidesPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/RoomPorn.voc: error: base name 'RoomPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/RoomPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/RuralPorn.voc: error: base name 'RuralPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/RuralPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/Schweiz.voc: error: base name 'Schweiz' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/Schweiz.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/SeaPorn.voc: error: base name 'SeaPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/SeaPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/SkyPorn.voc: error: base name 'SkyPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/SkyPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/SpaceFlightPorn.voc: error: base name 'SpaceFlightPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/SpaceFlightPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/SpacePorn.voc: error: base name 'SpacePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/SpacePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/SpecArt.voc: error: base name 'SpecArt' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/SpecArt.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/SportsPorn.voc: error: base name 'SportsPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/SportsPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/SpringPorn.voc: error: base name 'SpringPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/SpringPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/StarshipPorn.voc: error: base name 'StarshipPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/StarshipPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/SteamPorn.voc: error: base name 'SteamPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/SteamPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/StreetArtPorn.voc: error: base name 'StreetArtPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/StreetArtPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/SummerPorn.voc: error: base name 'SummerPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/SummerPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/TeaPorn.voc: error: base name 'TeaPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/TeaPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/TechnologyPorn.voc: error: base name 'TechnologyPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/TechnologyPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/TelevisionPosterPorn.voc: error: base name 'TelevisionPosterPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/TelevisionPosterPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ThingsCutInHalfPorn.voc: error: base name 'ThingsCutInHalfPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ThingsCutInHalfPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ToolPorn.voc: error: base name 'ToolPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ToolPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/UniformPorn.voc: error: base name 'UniformPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/UniformPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/ViewPorn.voc: error: base name 'ViewPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/ViewPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/VillagePorn.voc: error: base name 'VillagePorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/VillagePorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/WaterPorn.voc: error: base name 'WaterPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/WaterPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/WeatherPorn.voc: error: base name 'WeatherPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/WeatherPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/WinterPorn.voc: error: base name 'WinterPorn' must be lowercase ASCII letters, digits and underscores only (OVOS-INTENT-2 §2)
locale/de-DE/WinterPorn.voc: warning: file name should be lowercase (OVOS-INTENT-2 §2)
locale/de-DE/searching_random.dialog: error: single-branch group (Bildern): a group must offer a choice between at least two branches  [in: 'ok, ich suche nach (Bildern)']
locale/es-ES/picture_random.intent: error: single-branch group (otra): a group must offer a choice between at least two branches  [in: '(muestra|enseña|mostrar|enseñar) (otra) (imagen|foto)(aleatoria|nueva)']
locale/es-ES/picture_random.intent: error: single-branch group (una): a group must offer a choice between at least two branches  [in: '(muéstrame|enséñame|muestra|enseña|mostrar|enseñar) (una)(imagen|foto)(aleatoria|nueva)']
locale/gl-ES/picture_about.intent: error: single-branch group (outra): a group must offer a choice between at least two branches  [in: '(mostrar|ensinar) (outra) (foto|fotografía|imaxe) (aleatoria|nova|distinta) (sobre|para|con) {query}']

End of Line. ⬛

@JarbasAl
JarbasAl force-pushed the improve/en-us-intent-definitions branch from f0f38f8 to 64f176f Compare July 4, 2026 03:10
@JarbasAl
JarbasAl marked this pull request as ready for review July 16, 2026 07:21
@JarbasAl
JarbasAl force-pushed the improve/en-us-intent-definitions branch 3 times, most recently from 3360e1e to 7940171 Compare August 15, 2026 15:08
@JarbasAl JarbasAl changed the title Improve en-US wallpaper intent definitions + INTENT-2 §2 naming fix!: INTENT-2 locale base names, deictic {query} guard, packaging modernization Aug 15, 2026
…dernization

Adds a padacioso-pipeline arm to test_query_blacklist.py: the padatious-only
suite gave the handler's _resolve_query() guard zero coverage, because
padatious 2.0.7a1 unresolves blacklisted slots upstream before the handler
ever runs, so neutering the guard left all 7 tests green. padacioso has no
slot-blacklist support at all, so the deictic word binds raw to {query} and
_resolve_query is the only thing catching it -- the new arm exercises that
path directly. Fail-before: neutering _resolve_query flipped 5 of the new
padacioso-arm tests red (get_wallpapers(query='that'/'this'/'that one'/
'the same'/'it') instead of None); restoring the guard turned them green
again, with the padatious arm unaffected throughout.

Drops "include test/requirements.txt" from MANIFEST.in -- that file does not
exist anywhere in the repo's history, so the line was dead on arrival.

Strips PR-history narration ("used to also be", "was tried first", "see PR
description", "that diagnosis was wrong") from the golden-utterance and
slideshow-context-gate test docstrings, replacing it with a description of
what the suites assert and why, not how they got there.

Fail-before/after verified foreground; full suite green x2 (56 passed, 3
xfailed both runs).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@JarbasAl
JarbasAl force-pushed the improve/en-us-intent-definitions branch from 7940171 to eba6acd Compare August 17, 2026 19:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant