Skip to content

test: full-pipeline e2e persona test (ovoscope)#4

Open
JarbasAl wants to merge 6 commits into
devfrom
test/e2e-persona-pipeline
Open

test: full-pipeline e2e persona test (ovoscope)#4
JarbasAl wants to merge 6 commits into
devfrom
test/e2e-persona-pipeline

Conversation

@JarbasAl

Copy link
Copy Markdown
Member

Adds test/test_e2e_persona_pipeline.py: full e2e via ovoscope MiniCroft. Loop brain monkeypatched for determinism. 6 tests: speak through pipeline + memory.

Adds test/test_e2e_persona_pipeline.py exercising the complete
recognizer_loop:utterance → persona pipeline plugin → ovos-chain-of-thought-loop
path using MiniCroft (ovoscope). The loop's inner brain is monkeypatched at
module level so CI runs fully deterministically without any model download or
network call. Also adds pyproject [e2e] extras group.

Tests:
  - TestLooperPersonaSpeaks::test_pipeline_produces_speak
  - TestLooperPersonaSpeaks::test_speak_contains_loop_reply
  - TestLooperMemory::test_user_turn_recorded_in_memory
  - TestLooperMemory::test_assistant_response_recorded_in_memory
  - TestLooperMemory::test_unknown_session_has_empty_history
  - TestLooperMemory::test_same_session_accumulates_turns

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 13, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@JarbasAl, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 59 minutes and 16 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more credits in the billing tab to continue.

⌛ How to resolve this issue?

After more reviews become available, 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 include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d370998b-cdbe-4b32-b7fe-2201cb6481ed

📥 Commits

Reviewing files that changed from the base of the PR and between b08d677 and 37a606e.

📒 Files selected for processing (6)
  • .github/workflows/coverage.yml
  • .github/workflows/opm-check.yml
  • .github/workflows/ovoscope.yml
  • pyproject.toml
  • test/end2end/__init__.py
  • test/end2end/test_e2e_persona_pipeline.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch test/e2e-persona-pipeline

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.

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown

Look what I found! The automated check results are in. 🔍

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

🏷️ Release Preview

The draft for the big day is ready for review. 📝

Current: 0.1.1a1Next: 0.1.1a2

Signal Value
Label (none)
PR title test: full-pipeline e2e persona test (ovoscope)
Bump alpha

✅ PR title follows conventional commit format.


🚀 Release Channel Compatibility

Predicted next version: 0.1.1a2

Channel Status Note Current Constraint
Stable Not in channel -
Testing Not in channel -
Alpha Compatible ovos-agentic-loop>=0.1.1a1

📋 Repo Health

Ensuring the repo isn't allergic to new features. 🤧

⚠️ Some required files are missing.

Latest Version: 0.1.1a1

ovos_agentic_loop/version.py — Version file
README.md — README
LICENSE — License file
pyproject.toml — pyproject.toml
⚠️ setup.py — setup.py
CHANGELOG.md — Changelog
ovos_agentic_loop/version.py has valid version block markers

🔒 Security (pip-audit)

Ensuring our digital fortress remains impenetrable. 🏰

✅ No known vulnerabilities found (65 packages scanned).

🔍 Lint

I've finished the analysis you requested. 💡

ruff: issues found — see job log

⚖️ License Check

Double-checking the fine print for any surprises. 🔍

✅ No license violations found (46 packages).

License distribution: 11× MIT License, 9× MIT, 6× Apache Software License, 6× Apache-2.0, 2× BSD-3-Clause, 2× ISC License (ISCL), 2× PSF-2.0, 2× Python Software Foundation License, +6 more

Full breakdown — 46 packages
Package Version License URL
annotated-types 0.7.0 MIT License link
audioop-lts 0.2.2 PSF-2.0 link
build 1.5.0 MIT link
certifi 2026.5.20 Mozilla Public License 2.0 (MPL 2.0) link
charset-normalizer 3.4.7 MIT link
click 8.4.1 BSD-3-Clause link
combo_lock 0.3.1 Apache-2.0 link
filelock 3.29.4 MIT link
idna 3.18 BSD-3-Clause link
importlib_metadata 9.0.0 Apache-2.0 link
json-database 0.10.1 MIT link
kthread 0.2.3 MIT License link
langcodes 3.5.1 MIT License link
markdown-it-py 4.2.0 MIT License link
mdurl 0.1.2 MIT License link
memory-tempfile 2.2.3 MIT License link
ovos-agentic-loop 0.1.1a1 Apache-2.0 link
ovos-config 2.1.1 Apache-2.0 link
ovos-plugin-manager 2.6.1a1 Apache-2.0 link
ovos-spec-tools 0.8.0a2 Apache Software License link
ovos-utils 0.8.5 Apache-2.0 link
ovos_bus_client 1.5.0 Apache Software License link
packaging 26.2 Apache-2.0 OR BSD-2-Clause link
pexpect 4.9.0 ISC License (ISCL) link
ptyprocess 0.7.0 ISC License (ISCL) link
pydantic 2.13.4 MIT link
pydantic_core 2.46.4 MIT link
pyee 12.1.1 MIT License link
Pygments 2.20.0 BSD-2-Clause link
pyproject_hooks 1.2.0 MIT License link
python-dateutil 2.9.0.post0 Apache Software License; BSD License link
PyYAML 6.0.3 MIT License link
quebra-frases 0.3.7 Apache Software License link
regex 2026.5.9 Apache-2.0 AND CNRI-Python link
requests 2.34.2 Apache Software License link
rich 13.9.4 MIT License link
rich-click 1.9.8 MIT License

Copyright (c) 2022 Phil Ewels

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
| link |
| six | 1.17.0 | MIT License | link |
| standard-aifc | 3.13.0 | Python Software Foundation License | link |
| standard-chunk | 3.13.0 | Python Software Foundation License | link |
| typing-inspection | 0.4.2 | MIT | link |
| typing_extensions | 4.15.0 | PSF-2.0 | link |
| urllib3 | 2.7.0 | MIT | link |
| watchdog | 6.0.0 | Apache Software License | link |
| websocket-client | 1.9.0 | Apache Software License | link |
| zipp | 4.1.0 | MIT | link |

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

🔨 Build Tests

The blueprints match the build! 📐

✅ All versions pass

Python Build Install Tests
3.10
3.11
3.12
3.13
3.14

📊 Coverage

A bird's eye view of your test coverage landscape. 🦅

94.3% total coverage

Full report: download the coverage-report artifact.

🔌 Plugin Detection

Ensuring the plugin is 'future-proof'. 🔮

Plugin Status: ERRORS (4)

Plugin Info:

  • Name: ovos-agentic-loop
  • Description: AgenticLoopEngine base and ReAct implementation for OVOS, with SKILL.md and AGENTS.md runtime consumption

Plugin Types: agents.chat, agents.toolbox, agents.memory

OPM Detection:

Plugin Type Wheel Editable
agents.chat
agents.memory
agents.toolbox

Entry Point Validation:

Entry Point Type Import Interface
ovos-agents-md-context-plugin agents.memory
ovos-chain-of-thought-loop agents.chat
ovos-clock-tools agents.toolbox
ovos-critic-loop agents.chat
ovos-filesystem-tools agents.toolbox ✅ 27ms
ovos-math-tools agents.toolbox
ovos-plan-execute-loop agents.chat
ovos-react-loop agents.chat ✅ 2081ms
ovos-reflexion-loop agents.chat
ovos-self-ask-loop agents.chat
ovos-shell-tools agents.toolbox
ovos-skill-md-toolbox agents.toolbox ✅ 79ms
ovos-tree-of-thoughts-loop agents.chat
ovos-web-search-tools agents.toolbox

⊘ No settingsmeta.json
requires-python >=3.10 — running Python 3.11

Issues:

  • ❌ OPM could not detect opm.agents.chat
  • ❌ OPM could not detect opm.agents.toolbox
  • ❌ OPM could not detect opm.agents.memory
  • ❌ Import time for ovos-react-loop exceeds 500ms (2081ms)
  • ⚠️ No settingsmeta.json found

🔌 Skill Tests (ovoscope)

Checking that intents fire, dialogs speak, and handlers complete cleanly. ✅

6/6 passed

TestLooperMemory — 4/4
TestLooperPersonaSpeaks — 2/2

🚌 Bus Coverage

Checking for any 'silent' handlers that never get called. 🤫

⚠️ Bus coverage report unavailable — check the job log.


Automating the boring stuff so you don't have to! 🚀

JarbasAl added 4 commits June 14, 2026 14:43
…heck

Scope ChainOfThoughtEngine._load_brain monkeypatch to the e2e module via
an autouse module-scoped fixture; the previous module-level assignment leaked
into other test files and caused 3 failures (test_coverage, test_new_loops2).

Merge e2e optional-dependencies into test (pin ovos-persona@dev for
persona.memory support). Drop the entry_point / opm_require_found:true from
opm-check.yml: opm.agents.* groups are not yet in PLUGIN_TYPE_FINDERS so the
legacy skill lookup always returned not-found; set opm_require_found:false so
the check is informational until the opm-check script gains agents support.

Co-Authored-By: JarbasAi <jarbasai@mailfence.com>
Move the full-pipeline persona e2e test into test/end2end/ and add a
dedicated ovoscope workflow for it. A session conftest repairs the
missing ovos_persona/locale directory (absent from published wheels)
so the real persona pipeline plugin loads and the loop is exercised
end to end without network or LLM access.

Point coverage at the test extra so the e2e module is collected, and
align project metadata and test pins with the shared CI contract.
@JarbasAl JarbasAl marked this pull request as ready for review June 15, 2026 17:26
Replace the pytest.importorskip guard with a hard import and assert on
pipeline availability so a missing dependency fails loudly. Remove the
conftest locale-shim now that ovos-persona>=0.9.0a3 ships its locale
resources, and pin that version and pytest<9.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant