test: the canonical fallback pong needs the spec-tools mapping floor - #624
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The automated inspectors have submitted their report. 🕵️♂️I've aggregated the results of the automated checks for this PR below. 📋 Repo HealthI've checked the repo's social skills (aka issue response time). 🗣️ ✅ All required files present. Latest Version: ✅ ⚖️ License CheckThe license check is now finished. 🏁 ✅ No license violations found. Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed. 📡 Channel Compat — testingI've checked the pulse of your pull request. 💓 🚧 Channel unresolvable with this checkout — the repo's dependency floors exceed what the channel pins (fleet finding; see the install log). Constraints: https://raw.githubusercontent.com/OpenVoiceOS/OpenVoiceOS/main/constraints-testing.txt 📡 Channel Compat — stableThe latest check report is officially filed. 📁 🚧 Channel unresolvable with this checkout — the repo's dependency floors exceed what the channel pins (fleet finding; see the install log). Constraints: https://raw.githubusercontent.com/OpenVoiceOS/OpenVoiceOS/main/constraints-stable.txt 🔒 Security (pip-audit)Checking for any potential security regressions. 🔄 ✅ No known vulnerabilities found (72 packages scanned). 🔍 LintEnsuring we're following our development process. 📏 ❌ ruff: issues found — see job log 🔨 Build TestsChecking the plumbing of your data flows. 🚰 ✅ All versions pass
The silent guardian of the dev branch. 🦇 |
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
e22f907 to
d9d1dcb
Compare
…mapped values - poll_topics() also counts SpecMessage.FALLBACK_PING and FALLBACK_PONG attribute uses as the canonical topics they carry. A switch written through SpecMessage no longer slips past the floor guard (it passed and skipped before, failing the guard now). - The floor-release test asserts that the legacy ping and pong map to ovos.fallback.ping and ovos.fallback.pong, values written from OVOS-FALLBACK-1 section 6.1, not only that a counterpart exists. A map pairing the pong with the wrong topic passed before and fails now. - declared_floor() documents that it reads the installed package metadata, so a local floor edit needs a reinstall before the test sees it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
While the fallback skill still names only ovos.skills.fallback.ping and ovos.skills.fallback.pong, the floor case skipped, so the pull request added one skip on every Python. It now asserts that the legacy pair is present, and it checks the spec-tools floor once a canonical spelling appears. The skip tally is the same as dev's again. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ovos-core#994 counts FALLBACK_PING/FALLBACK_PONG written as a string constant (SpecMessage["FALLBACK_PONG"], getattr(SpecMessage, "FALLBACK_PONG")) as the canonical topic they carry. The workshop guard from #624 counted the attribute form only, so the two guards differed (review-ovos-core-994.md note 2). Ported the branch; poll_topics takes an optional source for the mutant cases: attribute, subscript, getattr and a legacy-literal control. Without the branch the subscript and getattr cases fail; with it, 6 passed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ovos-core#994 counts FALLBACK_PING/FALLBACK_PONG written as a string constant (SpecMessage["FALLBACK_PONG"], getattr(SpecMessage, "FALLBACK_PONG")) as the canonical topic they carry. The workshop guard from #624 counted the attribute form only, so the two guards differed (review-ovos-core-994.md note 2). Ported the branch; poll_topics takes an optional source for the mutant cases: attribute, subscript, getattr and a legacy-literal control. Without the branch the subscript and getattr cases fail; with it, 6 passed. Co-authored-by: JarbasAi <jarbasai@mailfence.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
A test that fires at whoever switches the fallback pong to its spec spelling without
bumping the floor that makes the switch safe. No production code changes. Mirror of
OpenVoiceOS/ovos-core#972, which guards the ping on the other end of the same poll.
Why
OVOS-FALLBACK-1 §6.1 names the poll pair
ovos.fallback.ping/ovos.fallback.pong.ovos_workshop/skills/fallback.pysubscribes to the legacy ping and emits the legacypong, and the core counting those answers subscribes to the legacy pong.
The day a skill emits the canonical pong, the only thing reaching an older core is the
legacy twin ovos-bus-client puts on the wire. That twin is built from the migration map
in this process's own ovos-spec-tools — the core's map has no say in it. The four
FALLBACK-1 renames first appear in ovos-spec-tools
1.12.0a1; ovos-workshop declares>=1.11.0a1. Below the floor there is no twin: the poll times out, the skill is droppedfrom the pool, and nothing appears in the logs.
Measured against the published wheels:
migration_counterpart("ovos.skills.fallback.pong")Noneovos.fallback.pongWhat the test does
It parses the bus topics the fallback skill uses. While the poll keeps its legacy
spelling the first test skips. The moment a canonical poll topic appears in the source,
it asserts the declared
ovos-spec-toolsfloor is at or above1.12.0a1. A second testholds that constant to the installed release so it cannot rot into a number nobody
checks.
Verification
ovos.fallback.pong, floor left at 1.11.0a1The alarm fires only on the unsafe combination, and it is satisfiable.