# jackin-manifest (https://jackin.tailrocks.com/reference/crates/jackin-manifest/)



{/* GENERATED from crates/jackin-manifest/README.md — edit the README, not this file */}

Role manifest (`jackin.role.toml`) loading, validation, and migration. Owns the contract a role repository declares and the code that turns a role repo into a validated, current-shape manifest.

## What this crate owns [#what-this-crate-owns]

* Manifest loading and parsing (`manifest`, `repo`, `repo_contract`).
* Validation against the role-manifest schema (`validate`).
* Versioned manifest migrations (`migrations`) so older role repos keep working.

## Architecture tier and allowed dependencies [#architecture-tier-and-allowed-dependencies]

**L0 domain.** Allowed workspace dependencies: `jackin-core`, `jackin-config`. No infrastructure or presentation dependencies — manifest handling stays a pure domain concern.

## Structure [#structure]

| Module                                                                                                                                                                                | Owns                        | Tests                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | ---------------------------------------------------------------------------------------- |
| <RepoFile path="crates/jackin-manifest/src/lib.rs">`lib.rs`</RepoFile>                                                                                                                | crate root, re-exports      | —                                                                                        |
| <RepoFile path="crates/jackin-manifest/src/manifest.rs">`manifest.rs`</RepoFile> · <RepoFile path="crates/jackin-manifest/src/manifest.rs">`manifest/`</RepoFile>                     | manifest types + loading    | <RepoFile path="crates/jackin-manifest/src/manifest/tests.rs">`tests.rs`</RepoFile>      |
| <RepoFile path="crates/jackin-manifest/src/repo.rs">`repo.rs`</RepoFile> · <RepoFile path="crates/jackin-manifest/src/repo.rs">`repo/`</RepoFile>                                     | role-repo contract + access | <RepoFile path="crates/jackin-manifest/src/repo/tests.rs">`tests.rs`</RepoFile>          |
| <RepoFile path="crates/jackin-manifest/src/repo_contract.rs">`repo_contract.rs`</RepoFile> · <RepoFile path="crates/jackin-manifest/src/repo_contract.rs">`repo_contract/`</RepoFile> | repo contract               | <RepoFile path="crates/jackin-manifest/src/repo_contract/tests.rs">`tests.rs`</RepoFile> |
| <RepoFile path="crates/jackin-manifest/src/validate.rs">`validate.rs`</RepoFile> · <RepoFile path="crates/jackin-manifest/src/validate.rs">`validate/`</RepoFile>                     | schema validation           | <RepoFile path="crates/jackin-manifest/src/validate/tests.rs">`tests.rs`</RepoFile>      |
| <RepoFile path="crates/jackin-manifest/src/migrations.rs">`migrations.rs`</RepoFile> · <RepoFile path="crates/jackin-manifest/src/migrations.rs">`migrations/`</RepoFile>             | versioned migrations        | <RepoFile path="crates/jackin-manifest/src/migrations/tests.rs">`tests.rs`</RepoFile>    |

## Public API [#public-api]

Validated manifest types and the load/validate/migrate entry points consumed by `jackin-runtime`, `jackin-image`, and `jackin-instance`. Migrations are idempotent and migrated manifests must re-validate.

## How to verify [#how-to-verify]

```sh
cargo nextest run -p jackin-manifest
cargo clippy -p jackin-manifest --all-targets -- -D warnings
```
