# Isis Generated Asset Binding

## Scope

V2 subscribes to `isis.asset.generated` through `@v2/oshun-adapter` for
generated assets tagged for V2 launch content. The subscription is intentionally
narrow:

- `v2.cosmetic.*`
- `v2.stage.*`
- `v2.decal.*`

Other Isis generated assets are acknowledged and ignored by V2.

## Bellona Cook Handoff

Accepted events become non-deterministic V2 reactions with
`reactionKind: "isis_generated_bellona_cook"` and a `bellona.cook.enqueue`
request for `@bellona/unreal`. The request carries:

- Isis asset id and job id
- source URI, source format, and source content hash
- selected cook profile: `v2.cosmetic`, `v2.stage`, or `v2.decal`
- target content root: `Content/Generated/Isis`
- target prefix: `Cosmetics`, `Stages`, or `Decals`
- original tags
- `provenanceRequired: true`
- `qualityGateRequired: true`
- a passed `v2.isis.generated-asset.shipping-quality-gate` attestation
- `rollbackSafe: true`

## Shipping Quality Gate

Every Isis-generated V2 shipping asset must pass the launch-blocking accept gate
before Bellona cook can accept it. The attestation content hash must match the
Isis source asset hash, and every package result must be `passed`:

- `@isis/anomaly-detection`
- `@themis/music-shield`
- `@themis/visual-shield`
- `@themis/text-shield`
- `@themis/video-shield`
- `@themis/design-shield`
- `@kuanyin/precognition`

The Themis Originality Shields family is wired for V2 through
`@v2/themis-originality-shields`. Any `planned_unavailable` result still blocks
V2 launch accept-gates instead of bypassing them. Malformed, missing, failed,
blocked, review, or hash-mismatched gate attestations are dead-lettered by
`@v2/oshun-adapter` and never produce a `bellona.cook.enqueue` command.

This route only schedules generated assets for cook after the quality gate has
passed. Cook completion still flows through `bellona.artifact.cooked`, where the
existing Bellona reimport and provenance gates validate generated `.uasset` /
`.umap` outputs under `Content/Generated/`.
