Generation modes and folder replacement

English · Русский

These modes are available in stable 1.6.0.

edge generates valid lower and upper numeric/decimal/date/time bounds, zero when in range, both allowed booleans, all declared categories and string length boundaries. Numeric bounds include the declared scale_factor, as in normal generation. Nullable fields with a positive null ratio include null cases. Identifiers remain synthetic; constraint solving preserves declared uniqueness, foreign keys, formulas and business rules, which can replace a field boundary when it conflicts with another invariant. Row count stays unchanged: small outputs cannot cover every boundary. Sensitive string fields retain safe synthetic providers rather than source values. No invalid values are intentional.

load_test multiplies each entity's requested row count by generation_settings.load_multiplier (default 10). Explicit CLI --count or Python bundle count supplies the exact row count without multiplication. Direct generate-from-csv and generate --profile require an explicit count and use it exactly. The generate-from-example folder shortcut permits an omitted count and then uses the inferred per-entity profile counts; use a reviewed DatasetSpec to select load_test for that staged workflow. Generation remains seeded and valid; all row, payload, disk and execution budgets apply before allocation. An oversized request fails rather than truncates. This mode produces data for load testing; it does not send traffic or run a benchmark.

valid, edge and load_test reject a nonzero --invalid-ratio. Omit --invalid-ratio for these modes (an explicit zero is also accepted), or select mixed/negative when invalid values are intentional. Rejected combinations exit 2 before publishing output; they do not modify the input specification.

DatasetSpec generate --overwrite replaces the entire destination folder, including obsolete files. Without the flag, nonempty folders are rejected. Generation, rules and validation finish before replacing existing output. A sibling staging directory and previous-folder backup permit rollback on publication failure. Directory replacement has a brief rename interval; it is not a concurrent-reader atomic exchange. Do not modify the destination concurrently. Symlinks and an output folder containing the input specification are rejected. An interruption or a failure removing the previous folder can leave a hidden .rollback folder; retain it until recovery is complete. Single-file generation keeps its existing bundle-replacement contract. Transformation permissions do not change.

The default load_multiplier is omitted from serialization to preserve existing specification fingerprints. Custom multipliers and materialized exact-count specs change fingerprints and require fresh plan review.

Replaying a seeded run

Keep the same seed, ordered specification, generation settings, business rules, package version and dependency environment when replaying a run. Reordering entities or fields can change ordinary values and null masks even with the same seed. Preserve the generated manifest and its fingerprints with the reviewed specification; a seed alone is not a complete replay record.

Synthetic identifier domains have a narrower order-independent namespace guarantee. That does not imply that every row or non-identifier field is order-independent. See the runnable business-rules example for a seeded CLI invocation.