NAMEFRAME Commercial Preview Apply for Pilot
Documentation

The spawn manifest

The record of what the spawner decided, written per frame before anything is rendered. This is what makes a placement auditable months later, and it is the difference between a generator and a black box.

What it contains#

{
  "manifest_id": "spawn_manifest_30a7a4a2b05c",
  "frame_id": "plugin_000004",
  "seed": 67,
  "layers": [
    { "kind": "spawn_zone_shuffle", "name": "authored_barrels", "label": "barrel",
      "requested": 24, "accepted": 24, "rejected": 0, "rejection_reasons": {} }
  ],
  "candidates": [
    { "candidate_id": "spawn_candidate_88b61021122d", "label": "barrel",
      "status": "accepted", "instance_id": "StaticMeshActor_778",
      "transform": { "position_m": [-161.099, -73.472, -1.410] } }
  ],
  "summary": { "requested": 84, "accepted": 84, "rejected": 0 },
  "distribution_statistics": { "accepted_candidates": 84, "labels": {...} },
  "manifest_hash": "f0c3ecff…"
}

Abridged from a real manifest in the reference capture.

The chain it completes#

Every accepted candidate names the actor it became. That closes a loop:

a box in the exported labels
  → the instance id it was derived from
  → the spawn candidate that created that actor
  → the layer and rule that requested it
  → the seed that drove the decision

Which means a question like "why is there a crate on the runway in frame 812" has an answer that does not require guessing.

Refusals are recorded, not discarded#

A rejected placement stays in the manifest with its reason. A run that requested 3,360 placements and accepted 3,360 is reporting something; so is one that requested 3,360 and accepted 2,900, and the second is far more informative about your scene.

Counting a refusal as an acceptance, or dropping it silently, would make the manifest a record of intentions rather than events.

Reconciliation#

Manifests are hashed per frame and checked against the run index afterwards. The spawn-manifest-integrity verification confirms that the per-frame files and the index agree on counts, hashes and rejection reasons.

See quality for where that check sits among the others, and determinism for the other hashes in the chain.