runtime: build the videre-host crate and register the venue platform#447
Conversation
lgahdl
left a comment
There was a problem hiding this comment.
Faithful, well-executed move for a diff this size — the registry.rs relocation is 95% import/doc/logging churn with the actual submit() body, the quota-before-guard ordering (#435), and the liveness/sweep integration (#445) all untouched, and the new subscription/event seam correctly reproduces the old bespoke poll loop's cadence and gating (venue_count() == 0 / subscribed.contains(kind) double-gate, empty-filter-set vacuous match-all). Comments are unusually clean for a refactor this size — no stale references to the old paths found anywhere. A few smaller notes:
- The PR body says
HostState.pool_router is deleted, butpool_routerdoesn't appear anywhere in this diff — that field was already removed in an earlier PR (#443), so this line in the description is stale copy, not a functional claim to verify here. - The new subscription/event seam (
Extension::subscriptions/events,EventSources,ExtensionEvent) is mechanically generic, butvidere-hostis still its only real consumer — cow-api doesn't use it. "Proves the seam" is proven by construction, not by a second independent user, and nothing detects two extensions accidentally choosing the samekindstring (they'd silently merge into one vocabulary set). Worth landing or stubbing a second consumer before leaning on this as validated-general infrastructure. - Test coverage: I didn't find a platform-level regression test for quota-before-guard ordering or the watch-set cap/expiry (#438) in the new
videre-host/tests/platform.rs— the underlying unit tests moved intact insideregistry.rs, so behavior is covered, but the E2E-level platform suite doesn't re-exercise either. Worth confirming that's an accepted gap rather than an oversight.
f21855f to
1d291e0
Compare
…ough the seam Relocate the venue-adapter and client bindgens, the venue registry, the advisory egress guard, and the venue-adapter provider kind out of nexum-runtime into a new videre-host extension crate, registered whole via videre_host::platform(). The runtime grows two generic seams in exchange: extension-declared subscription kinds with attribute-filtered extension events through the event loop, and config-derived preset extensions. nexum-runtime now carries zero venue, intent, or cow symbols and the venue-agnostic check passes.
1b9074a to
a4e316f
Compare
|
Checked the three body notes against the end-of-train state. 1. Stale 2. Event/subscription seam (single consumer + no duplicate-kind detection) - still valid, tracked in #517. At the tip, subscription kinds still aggregate into a 3. Platform-level test coverage - accepted gap. The quota-before-guard (#435) and watch cap/expiry (#438) unit tests moved intact into |
The Rust symbol scan inherited the old charter (nexum:intent, nexum:adapter, PoolRouter) - names retired in #428/#447 that cannot reappear - while the live venue vocabulary went unchecked. A re-introduced videre_host::VenueRegistry in nexum-runtime/src would have passed. Switch to the post-rename set so the scan guards the names that actually signal a leak.
Closes #381
What
Adds the
videre-hostextension crate and moves the venue-adapter bindgens,VenueRegistry,EgressGuard, and the keeper-facingvidere:venue/clientinterface out ofnexum-runtimeinto it, registered as one extension viavidere_host::platform(&config). Grows the runtime'sExtensionseam with extension-declared subscription kinds and attribute-filtered event streams (Extension::subscriptions/Extension::events,EventSources,ExtensionEvent), and threads config intoRuntime::extensions.shepherdnow composes the videre platform alongside the cow-api extension.Why
Nothing owned the venue-adapter
ProviderKind, the un-privileged registry, the advisory guard, or the client bindgens as an installable extension. Landing them invidere-hostmakes venue support a plug-in rather than a welded-in host concern, and proves the seam by moving the intent-status poll source through it instead of a bespoke runtime loop.Closes #381
Testing
cargo fmt --all --checkcargo check --workspace --all-featurescargo clippy --workspace --all-targets --all-features -- -D warningscargo nextest run --workspace --all-features(includesvidere-host's platform integration suite: install/service/provider wiring, capability linking, status-poll dispatch)cargo test --docAI Assistance
Implemented with Claude Code end-to-end; human-reviewed before opening.