What happens
model-cli package --model test-model --model-path ./test-model --artifact test:v1 --registry oras --registry-url "" --accelerator cpu --non-interactive
model-cli validate manifest --manifest ./test-model/manifest.json --non-interactive
✗ Metadata contract validation FAILED
- Error: no metadata contract found in annotations. Expected annotation: ai.assets
- Missing required fields: ai.assets
Error: manifest validation failed: no metadata contract found in annotations. Expected annotation: ai.assets
The ai.assets metadata contract (internal/workflow/metadata_contract.go:92) is only ever written by map / enforce, so the output of the documented package → harden → sign flow never passes validate manifest.
The README lists validate manifest under "Validate – one command family" as "a manifest against the metadata contract (JSON Schema)" with no hint that package output is expected to fail.
Expected
Either
package writes an ai.assets contract from the information it already has (model name, type, runtime, …), so the packaged manifest is valid, or
validate manifest treats a missing ai.assets as a warning (fail only with --strict) and the README / --help state that map is the step that adds the contract.
What happens
The
ai.assetsmetadata contract (internal/workflow/metadata_contract.go:92) is only ever written bymap/enforce, so the output of the documented package → harden → sign flow never passesvalidate manifest.The README lists
validate manifestunder "Validate – one command family" as "a manifest against the metadata contract (JSON Schema)" with no hint thatpackageoutput is expected to fail.Expected
Either
packagewrites anai.assetscontract from the information it already has (model name, type, runtime, …), so the packaged manifest is valid, orvalidate manifesttreats a missingai.assetsas a warning (fail only with--strict) and the README /--helpstate thatmapis the step that adds the contract.