# Node capability admission — planning index **Status:** ready for supervised Ralph execution. This P0 makes a Node prove it can serve its selected Model Artifact and Shard before the Tracker treats it as routable. It is deliberately model-agnostic: Qwen3.6 is only a development integration fixture, never a hardcoded runtime target. ## Locked decisions - A Node explicitly asked to serve a Model Preset fails closed when no validated recipe can execute it; it must not register as ready or accept paid inference. - **Assignment ownership:** startup/`--model` loads are **pinned**; tracker-managed demand placement (Qwen US-050) may use **spare capacity only** — [ADR-0026](../../docs/adr/0026-node-assignment-ownership-and-managed-placement.md). - Default validation covers the selected model/shard only. `meshnet-node doctor --all-recipes` is reserved for support and CI. - A Model Preset may have multiple named recipes. Each independently proves a real forward; the Tracker schedules only validated recipes while considering measured performance. - Compatibility schemas are generic. A future Tracker may publish signed, data-only Model Artifact Manifests, but executable recipes arrive only through signed Node releases. - P0 ships a local versioned recipe manifest and reports its version. It does **not** build a self-updater, download executable recipes, or install system dependencies. - Every story requires `pytest`; release CI additionally runs an `integration`-marked real-model doctor smoke test on each certified hardware lane. ## Ralph order 1. `NCA-001` generic capability/report contract 2. `NCA-002` generic doctor command and real-forward validation 3. `NCA-003` startup admission lifecycle and fail-closed behavior 4. `NCA-004` tracker registration/routing enforcement 5. `NCA-005` operator documentation and hardware-lane integration contract Run serially. Stories 3 and 4 both change registration/startup behavior and must not be executed in parallel. ## Quality gates - Targeted `pytest` tests named by the issue. - Full `pytest` before marking a story done, or record the unrelated blocker. - No default test downloads a model or requires a GPU. - `pytest -m integration` / the real-model doctor test remains explicit and environment-gated.