Sprint 15 - Companion adoption examples¶
- Status:
Archived / Completed
- Branch:
sprint/15-companion-adoption
- Track:
Companion / Adoption
- Priority:
P1
- Goal:
Strengthen proof of value with concrete, readable, testable examples.
Scope¶
Audit the companion repository when available in the workspace.
Identify the strongest lifecycle comparison example.
Strengthen the comparative lifecycle example.
Cover active publication, inactive publication blocking, activation gating, deactivation gating, cleanup, and expected errors in runtime tests.
Explain why
lifecore_ros2helps compared with manualrclpylifecycle code.Add links from
README.mdandROADMAP.mdwhen the example is ready.
Non-goals¶
No new core abstraction just to make an example shorter.
No dependency-heavy showcase unless the scenario requires it.
Acceptance criteria¶
[x] A new user can understand the value by reading and running one example.
[x] The example does not require knowing the full internal architecture.
[x] The example demonstrates less boilerplate, cleaner transitions, clearer errors, safer activation/deactivation, and deterministic cleanup.
Delivered¶
Companion README and lifecycle comparison README now frame inactive runtime misuse as lifecycle gating behavior: configured-but-inactive or deactivated nodes drop incoming samples, block timer-driven status publication, and keep running without introducing a new exception policy.
The companion comparison also clarifies that
on_messageandon_tickremain explicit public application hooks while framework-managed lifecycle gates decide when those hooks run.Companion runtime tests cover active publication, inactive publication blocking, activation gating, deactivation gating, cleanup, and inactive runtime misuse.
Core README and ROADMAP keep short links to the companion comparison instead of duplicating the walkthrough.
Validation¶
From lifecore_ros2_examples on 2026-05-13:
uv run ruff check .
uv run pyright
uv run pytest
Result: passed, with 9 passed from pytest.