Skip to content

Fix/downgrade skills mk2#458

Merged
goldyfruit merged 5 commits intomainfrom
fix/downgrade_skills_mk2
Mar 1, 2026
Merged

Fix/downgrade skills mk2#458
goldyfruit merged 5 commits intomainfrom
fix/downgrade_skills_mk2

Conversation

@goldyfruit
Copy link
Collaborator

@goldyfruit goldyfruit commented Mar 1, 2026

Summary by CodeRabbit

  • New Features

    • Mark II virtualenv now installs pinned stable date-time and weather skills by default.
  • Configuration Changes

    • ipgeo PHAL plugin is disabled by default for Mark II when relevant hardware is present.
  • Improvements

    • Simplified listener service startup by removing the pre-start readiness check.
  • Tests

    • Expanded tests for Mark II config, pinned-skill installation, and updated listener startup behavior.

@goldyfruit goldyfruit added this to the Contra milestone Mar 1, 2026
@goldyfruit goldyfruit self-assigned this Mar 1, 2026
@goldyfruit goldyfruit added the bug Something isn't working label Mar 1, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 1, 2026

Warning

Rate limit exceeded

@goldyfruit has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 8 minutes and 12 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between dc54a70 and b3d4b08.

📒 Files selected for processing (4)
  • ansible/roles/ovos_config/defaults/main.yml
  • ansible/roles/ovos_config/templates/mycroft.conf.j2
  • ansible/roles/ovos_installer/defaults/main.yml
  • tests/bats/code_quality.bats
📝 Walkthrough

Walkthrough

Added a disabled PHAL plugin entry for ipgeo in mycroft.conf, removed the listener service ExecStartPre readiness check, introduced a consolidated Mark II skill-pin variable and an Ansible task to install those pins, and updated tests to cover these changes.

Changes

Cohort / File(s) Summary
Mark II PHAL Configuration
ansible/roles/ovos_config/templates/mycroft.conf.j2
Inserted a new ovos-phal-plugin-ipgeo entry (with "enabled": false) under the tas5806 i2c devices conditional in the admin PHAL section.
Systemd Unit
ansible/roles/ovos_services/templates/virtualenv/ovos-listener.service.j2
Removed the ExecStartPre pre-start readiness check (Python loop waiting for core intent); ExecStart, ExecReload, and ExecStop unchanged.
Virtualenv Defaults
ansible/roles/ovos_virtualenv/defaults/main.yml
Added ovos_virtualenv_mark2_skill_pins default list containing pinned packages for Mark II (date-time and weather).
Virtualenv Tasks
ansible/roles/ovos_virtualenv/tasks/venv.yml
Added a task to install each item from ovos_virtualenv_mark2_skill_pins into the OVOS venv with --no-deps, conditional on not cleaning and tas5806 being present; placed before numpy installation.
Tests
tests/bats/code_quality.bats
Added/modified tests: verify ipgeo PHAL plugin is present and disabled for Mark II, assert virtualenv pins and task structure, and update listener unit test to assert absence of ExecStartPre.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped through configs, neat and spry,
Pinned tidy skills and waved prestart bye,
A quiet ipgeo tucked away,
Tests hum softly — ready to play. 🥕✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Fix/downgrade skills mk2' is directly related to the main changes in the PR, which involve pinning Mark II skill versions and removing the listener service pre-start readiness check.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/downgrade_skills_mk2

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 and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
ansible/roles/ovos_virtualenv/tasks/venv.yml (1)

253-278: Optional DRY refactor: combine duplicated Mark II skill install tasks.

Both tasks are correct, but they can be merged into a single looped task to reduce maintenance overhead.

♻️ Proposed refactor
-- name: Install known-good date-time skill for Mark II
-  become: true
-  become_user: "{{ ovos_installer_user }}"
-  moreati.uv.pip:
-    name: "{{ ovos_virtualenv_mark2_datetime_package }}"
-    virtualenv: "{{ ovos_virtualenv_path }}"
-    extra_args: "--no-deps"
-    state: present
-  environment: "{{ ovos_virtualenv_uv_environment }}"
-  when:
-    - not (ovos_installer_cleaning | default(false) | bool)
-    - "'tas5806' in (ovos_installer_i2c_devices | default([]))"
-
-- name: Install stable weather skill for Mark II
+- name: Install pinned Mark II skills without dependency resolution
   become: true
   become_user: "{{ ovos_installer_user }}"
+  vars:
+    _ovos_mark2_skill_pins:
+      - "{{ ovos_virtualenv_mark2_datetime_package }}"
+      - "{{ ovos_virtualenv_mark2_weather_package }}"
   moreati.uv.pip:
-    name: "{{ ovos_virtualenv_mark2_weather_package }}"
+    name: "{{ item }}"
     virtualenv: "{{ ovos_virtualenv_path }}"
     extra_args: "--no-deps"
     state: present
+  loop: "{{ _ovos_mark2_skill_pins }}"
+  loop_control:
+    label: "{{ item }}"
   environment: "{{ ovos_virtualenv_uv_environment }}"
   when:
     - not (ovos_installer_cleaning | default(false) | bool)
     - "'tas5806' in (ovos_installer_i2c_devices | default([]))"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ansible/roles/ovos_virtualenv/tasks/venv.yml` around lines 253 - 278, Two
nearly identical tasks using the moreati.uv.pip module (installing
ovos_virtualenv_mark2_datetime_package and
ovos_virtualenv_mark2_weather_package) should be combined into a single looped
task to avoid duplication: replace the two tasks with one task that iterates
over a list of packages (e.g., [ovos_virtualenv_mark2_datetime_package,
ovos_virtualenv_mark2_weather_package]), keeps become/become_user set to
ovos_installer_user, uses virtualenv ovos_virtualenv_path, extra_args
"--no-deps", environment ovos_virtualenv_uv_environment, and preserves the same
when condition (not (ovos_installer_cleaning | default(false) | bool) and
"'tas5806' in (ovos_installer_i2c_devices | default([]))") so each package is
installed in the same context.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@ansible/roles/ovos_virtualenv/tasks/venv.yml`:
- Around line 253-278: Two nearly identical tasks using the moreati.uv.pip
module (installing ovos_virtualenv_mark2_datetime_package and
ovos_virtualenv_mark2_weather_package) should be combined into a single looped
task to avoid duplication: replace the two tasks with one task that iterates
over a list of packages (e.g., [ovos_virtualenv_mark2_datetime_package,
ovos_virtualenv_mark2_weather_package]), keeps become/become_user set to
ovos_installer_user, uses virtualenv ovos_virtualenv_path, extra_args
"--no-deps", environment ovos_virtualenv_uv_environment, and preserves the same
when condition (not (ovos_installer_cleaning | default(false) | bool) and
"'tas5806' in (ovos_installer_i2c_devices | default([]))") so each package is
installed in the same context.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6a5f401 and 8bc6543.

📒 Files selected for processing (5)
  • ansible/roles/ovos_config/templates/mycroft.conf.j2
  • ansible/roles/ovos_services/templates/virtualenv/ovos-listener.service.j2
  • ansible/roles/ovos_virtualenv/defaults/main.yml
  • ansible/roles/ovos_virtualenv/tasks/venv.yml
  • tests/bats/code_quality.bats
💤 Files with no reviewable changes (1)
  • ansible/roles/ovos_services/templates/virtualenv/ovos-listener.service.j2

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@tests/bats/code_quality.bats`:
- Around line 268-279: The test
mycroft_conf_disables_ipgeo_phal_plugin_for_mark2 currently runs independent
greps so a Mark II conditional and the ipgeo "enabled": false assertion can
match unrelated parts of the file; change the test to scope the ipgeo assertion
inside the Mark II conditional by extracting the block between the "{% if
'tas5806' in ovos_installer_i2c_devices %}" and its corresponding "{% endif %}"
(or otherwise search only after the if and before the endif) from conf_file and
then assert that this scoped text contains the "\"ovos-phal-plugin-ipgeo\": {"
line and the "\"enabled\": false" line; update the grep/assert sequence in the
test (mycroft_conf_disables_ipgeo_phal_plugin_for_mark2) to perform that scoped
check rather than three independent greps.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8bc6543 and dc54a70.

📒 Files selected for processing (3)
  • ansible/roles/ovos_virtualenv/defaults/main.yml
  • ansible/roles/ovos_virtualenv/tasks/venv.yml
  • tests/bats/code_quality.bats
🚧 Files skipped from review as they are similar to previous changes (2)
  • ansible/roles/ovos_virtualenv/defaults/main.yml
  • ansible/roles/ovos_virtualenv/tasks/venv.yml

@goldyfruit goldyfruit merged commit 21add71 into main Mar 1, 2026
15 checks passed
@goldyfruit goldyfruit deleted the fix/downgrade_skills_mk2 branch March 1, 2026 19:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant