# Product actions

A Product Build admits one UDL document. Its instruments, fields, parties and public actions come from that document.

Call `product.instruments.list` to read the instrument fields and lifecycle. Call `product.actions.list` to read public action names and typed inputs. Both return the Build digest. Call the returned action path with the Product identity, instance identity and declared input.

An action validates its input, checks its actor and requirements, and executes its moves in one transaction. A refusal commits none of those moves. A terminal transition requires every account owned by the instance to have zero balance and zero reservations.

Recomposition requires `expectedBuildDigest`. Refresh the Product before retrying a digest conflict.

Platform operation types are committed under `generated/sdk/`. They describe platform operations. Product action discovery happens at runtime through the API or MCP.
