Skip to content

[Host Foundation] Define the shell input contract for product identity, bundled content, builtins, and policy #41

@ogyrec-o

Description

@ogyrec-o

Summary

Define the canonical contract between concrete product/app shells and the generic host foundation.

The shell must provide inputs and policy. The host foundation must own canonical load-plan construction. Concrete shells must not each invent their own resolver semantics.

Problem

Freven's long-term architecture is:

  • shared core
  • generic host foundation
  • concrete app shells

But the exact input boundary between "shell" and "host foundation" needs to be explicit before more packaging/product profiles are added.

Without this, product shells can drift into custom resolution behavior, hardcoded Vanilla assumptions, or duplicate load-plan truth.

Target model

Shells own:

  • app identity / branding / executable identity
  • default entry flow
  • bundled experiences / payload
  • builtin registry provider
  • packaging / distribution layout
  • player-facing boot behavior
  • instance/save/config namespace
  • whether extra mods / overlays are allowed
  • local trust / transport / mod policy envelope

Host foundation owns:

  • canonical experience resolution
  • canonical mod resolution
  • canonical load-plan construction
  • activation derivation
  • common host/runtime wiring
  • shared validation of shell-provided inputs

Core/runtime owns:

  • lower-level runtime activation semantics
  • guest/native/external/builtin attach semantics
  • transport/runtime behavior below the host foundation

Requirements

Define a stable shell input structure/model that can express:

  • product identity
  • default experience id
  • experience roots / visible experience universe
  • builtin mod registry provider
  • mod roots / overlay roots
  • unsafe native mod policy
  • external process mod policy
  • optional client-local policy envelope
  • packaging/profile identity
  • instance namespace expectations

Non-goals

  • Do not fully implement every shell.
  • Do not build the final launcher UI.
  • Do not add custom resolver algorithms per shell.
  • Do not make Vanilla mandatory in the contract.

Deliverables

  • Architecture doc update.
  • Proposed Rust-side/input model if implementation-ready.
  • Clear statement that shells provide inputs/policy, while host foundation builds the canonical load plan.
  • Follow-up implementation issue links where needed.

Metadata

Metadata

Assignees

Labels

area:installInstallation, setup, first-run flows, environment/bootstrap setup.area:mod-loadingMod discovery, resolution, manifests, negotiation, attach/load behavior.area:runtimeRuntime behavior, lifecycle, ticking, session behavior, execution flow.component:bootfreven-boot: launcher, instance bootstrap, boot flows, packaging entrypoints.component:devkitDevkit-level / cross-repo work: manifests, integration glue, release shell, repo-wide coordination.component:docsDocumentation, guides, READMEs, architecture docs, examples docs.component:enginefreven-engine: core engine/runtime/simulation/client-server internals.priority:p1High priority. Important and near-term.status:confirmedConfirmed bug/request. Reproduced, accepted, or clearly valid.transport:builtinSpecific to builtin/compile-time mod execution path.transport:cross-transportShared semantic work that must align across builtin/wasm/native/external.type:architectureLong-term structural / contract / system design work, not just isolated implementation.

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions