Skip to content

RFC-015: Bloom — generative recipe + audio variant generator #107

Description

@chipi

Summary

Generative gesture that takes a seed (YAML stub or reference recipe) and produces N full recipe variants — "one button, five blooms." Collapses the authoring cost of starting a recipe from twenty parameter decisions to picking from a contact sheet.

RFC

RFC-015 — Bloom

Scope

  • Seed format: YAML stub with required fields, optional `pins:` for locked values, optional `sampling:` hints
  • Reference recipes work as seeds (every field as a pin)
  • Anchored sampling per parameter type: numeric (uniform / normal-with-mean), enum (uniform random), envelope (sample from archetype library: `slow_bloom` / `plateau` / `swell_decay` / `subtle_breath` with breakpoint jitter)
  • Diversity rejection: weighted Euclidean distance between candidates, attempt budget 50 per bloom
  • Coherence rules (advisory; pins always win): `data_source → palette_family`, `audio_identity → atmosphere_range`, `region_size → particle_density`
  • Deterministic seeding: `master_seed = sha256(seed_content + --seed + N)`; per-bloom seeds derived
  • Output: `recipes/blooms/-/bloom_NNN.yaml` + seed + manifest for provenance
  • CLI: `oceancanvas bloom --n 5 [--seed N] [--scope audio|visual|all] [--diversity 0.15]`
  • Promotion: `oceancanvas promote --name ` copies to `recipes/` + indexes
  • UI: Bloom button in Recipe Editor → 5-up contact sheet with previews + Promote per tile
  • TS ↔ Py cross-validation (~20 fixtures)

Dependencies

Requires RFC-012 + RFC-013 parameter space; RFC-014 for envelope archetype sampling; benefits from RFC-016 clock sampling and RFC-017 macro sampling once those land.

Closes into

  • ADR-037 — Bloom: seed format + sampling strategy
  • ADR-038 — Coherence rules + envelope archetype library

Implementation task

`RFC-015 (later): Bloom — generative recipe + audio variant generator` in the task list.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions