OSS-first docs
These docs teach the open system first: contracts, generated surfaces, runtimes, governance, and incremental adoption. Studio shows up as the operating layer on top, not as the source of truth.
Three generic, reusable FormSpecs make form-like marketing/BillingOS UI contract-first. Each binds its action to an OperationSpec by `key`+`version`; hosts own copy, option catalogs, provider logic, and handlers.
•
`marketing.lead.capture.form` (`MarketingLeadCaptureFormSpec`) → action binds
to `marketing.lead.capture` (command).
•
`marketing.estimate.input.form` (`MarketingEstimateInputFormSpec`) → action
binds to `marketing.estimate.calculate` (query). Bundle options are illustrative defaults; hosts override them.
•
`billing.estimate.intake.form` (`BillingEstimateIntakeFormSpec`) → action binds
to `billing.estimate.prepare` (query, **side-effect-free**).
These specs are schema/layout/action metadata only. The design system renders fields and an operation/host-provided result; it never computes pricing, calls a provider, payment, CRM, or invoice path. Live billing execution stays host-owned.
Relationship to `marketing/forms.ts`: `MarketingStudioDemoRequestForm` + `marketingFormRegistry` are the Studio-specific demo-CTA form and its registry; the specs here are the generic, reusable lead/estimate/billing forms.