Skip to content

Route Mother child manifests through SDK contract - #134

Merged
nicabarnimble merged 7 commits into
mainfrom
mother-sdk-manifest-runtime
Jun 30, 2026
Merged

Route Mother child manifests through SDK contract#134
nicabarnimble merged 7 commits into
mainfrom
mother-sdk-manifest-runtime

Conversation

@nicabarnimble

Copy link
Copy Markdown
Owner

Summary

  • Routes Mother runtime child manifest parsing through the SDK-owned patina_sdk::manifest::ChildManifest for canonical identity, ingress, contract, and needs.toys fields.
  • Routes patina child install default artifact resolution through patina_sdk::manifest::ChildPackage, removing local target-directory WASM inference.
  • Updates in-repo child manifests and test fixtures to satisfy SDK-required child identity fields.
  • Hardens the Mother git toy against ambient Git environment variables exposed by hook/test contexts.

Why / Design

  • The SDK is now the source of truth for child.toml contract rules; Mother should project SDK facts into its richer runtime model instead of duplicating those rules locally.
  • Mother-only extension sections (capabilities, needs.scopes, provides, schemas, metrics, connections) remain parsed from raw TOML because they are runtime policy/config extensions not yet owned by the SDK model.
  • Package installs now require the manifest-declared [child.artifact].wasm path unless the operator explicitly passes --wasm; implicit search through target directories is removed.
  • Invalid child manifests without SDK-required identity fields now fail closed rather than being normalized by Mother defaults.

Changes

  • src/child/internal/mod.rs
    • uses patina_sdk::manifest::ChildManifest for canonical manifest fields
    • keeps raw TOML parsing only for Mother-specific extension fields
  • src/main_dispatch/child.rs
    • uses patina_sdk::manifest::ChildPackage for default package artifact resolution
    • adds tests for declared artifact selection and missing artifact declaration failure
  • children/*/child.toml
    • adds missing child.version fields to in-repo child manifests
  • tests/fixtures
    • updates Mother/child/Slate test manifests to be SDK-valid
  • mother/src/toys/git.rs
    • clears ambient Git env (GIT_DIR, GIT_WORK_TREE, GIT_INDEX_FILE, GIT_PREFIX) before running git in a selected repo

Validation

  • cargo test child::internal::tests --lib
  • cargo test commands::mother::loader::tests --lib
  • cargo test registry::tests -p mother
  • cargo test child_install_tests
  • cargo test --test mother_typed_fixture_conformance
  • cargo test --test child_init_typed_default
  • cargo test commands::slate::tests::slate_project_preopen --lib
  • cargo test commands::mother::daemon::tests::installed_children_use_manifest_name_not_wasm_stem --lib
  • cargo test toys::git::tests -p mother
  • cargo check -q

Compatibility / Operations

  • Existing installed children must have SDK-valid child.name, child.version, and child.kind to load under Mother runtime parsing.
  • Package installs without --wasm must declare [child.artifact].wasm in child.toml and the file must exist inside the package.
  • Explicit --wasm remains available for operator-provided artifact overrides.

Follow-ups

  • Publish/version patina-sdk manifest support when ready so external consumers do not need to rely on source-tree path/git integration.
  • Full Slate execution in MCT remains blocked on concrete WIT/WASI/toy host adapters; this PR only completes the old Mother SDK manifest consumption slice.

@nicabarnimble
nicabarnimble merged commit 9b4a62d into main Jun 30, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant