Generations
One reproducible attempt to produce one Target from one immutable Definition Revision.
A Generation (gen_*) is one attempt to produce one Target. It records target_id, resolved generator, trigger, Definition Revision, status, files, warnings, limits, compatibility, delivery result, and the complete reproducibility envelope.
One Project action may create several Generations, one for each selected Target, but they remain independent. A failing MCP Generation does not hide a successful Go SDK Generation, and each destination receives only the files it owns.
Generations can be triggered manually, by a GitHub source change, by a scheduled URL refresh, or as an unmetered pull-request preview. Every successful linked Generation is reproducible from its definition_revision_id.
The Console presents Generations as a deployment-style timeline. Open one to browse its files, inspect warnings and coverage, copy identifiers, or download the exact artifact.
Reproducibility
Generation provenance records:
- the generator edition and engine build;
- resolved configuration and its hash;
- the selected public-surface plan and its hash;
- the endpoint entitlement; and
- the package version.
The Definition Revision identifies the resolved OpenAPI or GraphQL graph. Together, these values explain what produced an artifact even after the Target configuration changes.
The generated package does not receive private source provenance. Destination repositories get only the public package and .typeship/surface.json, the narrow baseline needed to compare the next release.
Releases
Feature pull requests do not change package versions. Unreleased Definition changes accumulate against the last surface merged in each destination.
The destination pull request owns the release decision. Typeship – release readiness verifies the bot-owned candidate head, cumulative API and package compatibility, and required version.
See Regeneration for the complete lifecycle and Preview Generations for source review.
POST /projects/{project_id}/generations returns one Generation per active Target. Each has one target_id, resolved generator, definition_revision_id, and provenance object. A Generation never represents a mixed Target list.