feat: add a pipeline_id filter to End2EndTest#112
Conversation
The skill_id filter isolates one dispatch lifecycle from concurrent ones by context skill_id. That fails when two concurrent lifecycles share a skill_id — notably a targeted stop (OVOS-STOP-1 §3.1) interrupting a running skill: the stop dispatch carries the target's skill_id (so it can't be told apart from the skill's own messages), but only the stop dispatch carries the stop plugin's pipeline_id (OVOS-PIPELINE-1 §3.1, stamped on the dispatch context). Add a `pipeline_id` filter alongside `skill_id`, applied the same way (and composable with it). Tests: a skill that emits two lifecycles sharing a skill_id but differing in pipeline_id, isolated each way. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughAdds an optional ChangesPipeline ID Filtering
Estimated code review effort: 2 (Simple) | ~12 minutes Sequence Diagram(s)sequenceDiagram
participant Test as TestPipelineIdFilter
participant E2E as End2EndTest
participant Msgs as CapturedMessages
Test->>E2E: execute(pipeline_id="pipe.a")
E2E->>Msgs: filter by skill_id (if set)
E2E->>Msgs: filter by context.pipeline_id == "pipe.a"
E2E->>E2E: skip routing assertions (skill_id/pipeline_id set)
E2E-->>Test: filtered lifecycle messages
Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
Greetings! I've analyzed your changes and have some results to share. 🖖I've aggregated the results of the automated checks for this PR below. 🔍 LintAnother piece of the puzzle! 🧩 ❌ ruff: issues found — see job log 📋 Repo HealthEnsuring the codebase stays lean and mean. 💪 ✅ All required files present. Latest Version: ✅ ⚖️ License CheckEnsuring our licenses are consistent and clear. 📄 ✅ No license violations found. Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed. 🔒 Security (pip-audit)I've audited the packages. Safety first! 🦺 ✅ No known vulnerabilities found (78 packages scanned). 🏷️ Release PreviewI've checked the countdown clock for the next release. ⏰ Current:
✅ PR title follows conventional commit format. 🚀 Release Channel Compatibility Predicted next version:
🔨 Build TestsChecking if the code is properly tempered. ⚔️ ✅ All versions pass
📊 CoverageMapping the landscape of your tests. 🗺️ ❌ 53.3% total coverage Files below 80% coverage (17 files)
Full report: download the Final report submitted. Over and out. 📻 |
The
skill_idfilter isolates one dispatch lifecycle from concurrent ones bycontext
skill_id. That breaks when two concurrent lifecycles share askill_id — notably a targeted stop (OVOS-STOP-1 §3.1) interrupting a running
skill: the stop dispatch carries the target's skill_id (so it can't be told
apart from the skill's own messages), but only the stop dispatch carries the
stop plugin's
pipeline_id(OVOS-PIPELINE-1 §3.1, stamped on the dispatchcontext).
Adds a
pipeline_idfilter alongsideskill_id(applied the same way, andcomposable). 2 new tests via a skill that emits two lifecycles sharing a
skill_id but differing in pipeline_id.
🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Bug Fixes