Skip to content

chore: migrate videre and shepherd onto the tagged runtime #262

Description

@mfw78

Migrate videre and shepherd onto the tagged runtime in one pass.

Why

Both pin nexum-runtime at rev = d78a368, which is 134 commits and 31 breaking commits behind main. Neither compiles today: videre-host/src/registry.rs still imports host::actor::{ActorFault, ActorSlot, Liveness, SupervisedStore} and host::extension::{HostService, Installed, ProviderInstance, ProviderKind, downcast_service}, and kind = "venue-adapter" in the adapter manifests refuses at load since #250 retired [component].kind.

A runtime whose only two consumers cannot build against it is not production ready.

The freeze has landed

This issue was written to wait for the vocabulary and ABI freeze so the migration happened once rather than twice. That wait is over: M2, M3 and M4 all stand at zero open issues. The work is ready to start once there is a tag to migrate onto.

Known breaks to carry

The public Rust surface is now sealed behind a curated facade (#291) and split across twenty crates (ADR-0023). Concretely:

  • nexum_runtime::host no longer exists. host::actor, host::extension, host::component and host::state all move or vanish; what survives lives under nexum_runtime::{component, extension, supervisor, logs, event_loop}.
  • HostService, ServiceKind, ProviderKind, ProviderManifest, HostServices, Installed, ProviderInstance, downcast_service, build_provider_linker, MockChainProvider, [[services]] and the supervised actor are gone. Videre still imports all five of the never-shipped symbols an earlier audit found.
  • Extension loses service, provider and admit_provider; admit_worker loses its providers parameter.
  • nexum_runtime::engine_config is now private. SubmitQuota and WatchLimit no longer exist, since refactor(config)!: retire [limits.watch] and [limits.quota], move the dispatch deadline into [limits.dispatch] #248 retired [limits.watch] and [limits.quota]; use nexum_runtime::config.
  • nexum_runtime::preset is private; only CoreRuntime and Runtime are re-exported. Shepherd uses preset:: and sealed::SealedRuntime directly.
  • test_utils is behind the test-utils feature and now offers a TestRuntime harness rather than the old mocks.
  • [component].kind is retired. on-event becomes on-trigger, [[subscription]] becomes [[trigger]], and both repos still carry [[subscription]] in their module manifests. nexum:host stays at 0.1.0; the renames happened inside it, and the earlier claim that it goes to 0.2.0 was reverted.
  • Guest-to-guest calling is cut (feat(runtime)!: cut guest-to-guest calling and restore the single-store model #274) and a provides claim now needs authorizing in engine.toml (feat(runtime)!: verify a provides claim and authorize its implementer in engine.toml #251).
  • From M4: the SDK's LogSink trait method is now log_event, Fault gained unsupported, unavailable, denied, invalid_input and internal constructors, and the local store gained a list-entries verb.
  • Both repos will newly resolve nexum-primitives and eleven nexum-runtime-* crates absent from their current lockfiles.

Both repos vendor a stale wit/deps/nexum-host, eight files against the runtime's five. messaging.wit (#173), identity.wit and remote-store.wit (#300) and query-module.wit are all gone, event-module.wit is now trigger-module.wit, and neither copy has the M4 additions. Revendor both.

What stays broken

Videre's venue adapters are guest wasm driven by host Rust, which is the path #233 removed. That needs the plugin-engine seam tracked by #267, which sits in M7, after v1. This issue unblocks the build and leaves the adapters broken behind #267 by design. Say so up front rather than discovering it mid-migration.

Open decisions

Done when

Both repositories compile and test green against the v1 tag, or their remaining breakage is a named issue rather than a surprise.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions