@rbxts/a-plant-generator - v0.2.0
    Preparing search index...

    Model specification

    ModelSpecification contains schemaVersion, id, metadata, grammar, turtle, geometry, organs, animation, LOD, and extension data. Static successors remain plain data. Dynamic production logic is referenced by operationId and resolved from caller-owned registries.

    const spec: ModelSpecification = {
    schemaVersion: 1,
    id: "my-stem",
    grammar: {
    alphabet: [{ id: "A" }, { id: "F" }],
    axiom: [symbol("A")],
    productions: [{ id: "grow", predecessor: "A", successor: [symbol("F"), symbol("A")] }],
    },
    };

    Use extendModelSpecification for immutable group-level deep overrides and migrateModelSpecification for schema 0 inputs. Never execute registry IDs from untrusted data without an allow-list.

    hashModelSpecification covers every declarative generation group, including turtle, geometry, organ, animation, LOD, version, and extension data. Inline callback bodies cannot be portably hashed across JavaScript and Luau, so compiled callback-backed models receive a process-local cache identity that prevents unsafe shared-cache aliasing. For network-reconstructible models, prefer static successors or versioned operationId/predicateId registry entries.