Product Mutation Intents¶
Objective¶
Define the human input patterns that should result in product-domain mutations, and the checks that should be applied before executing them through BFF.
Supported Mutation Classes¶
The current mutation scope includes:
- create property
- update property
- delete property
- create product
- update product
- delete product
- create product collection
- update product collection
- delete product collection
- set product collection membership
Human Input Pattern¶
The mutation layer should accept requests such as:
add a property definition Rack Pillar Type Aadd item Racking System Package A to C&I System 30/60update Racking System Package A BoP to include Pillar Type A
These are human operation intents. They must be translated into validated BFF mutations rather than treated as literal command strings.
Mutation Resolution Rule¶
The assistant should resolve a mutation request in this order:
- identify the target object
- property
- product
- product collection
- item or BoP line within a product
- identify the intended operation
- create
- update
- delete
- assign to collection
- update BoP/BoM structure
- retrieve current state if the request depends on existing objects
- run consistency and safety checks
- execute the smallest mutation set required
- re-read affected objects and report the resulting state
Safety and Consistency Checks¶
Before mutation, the assistant should check:
- whether the target object already exists under a matching or near-matching name
- whether the requested property vocabulary conflicts with an existing property
- whether the referenced product exists
- whether the referenced collection exists
- whether a requested BoP change is structurally valid for the target product
- whether the mutation should be blocked for ambiguity and clarified first
Current BFF Mutation Endpoints¶
Properties¶
createProperty(input)updateProperty(propertyKey, input)deleteProperty(propertyKey)
Products¶
createProduct(input)updateProduct(productKey, input)deleteProduct(productKey)
Product Collections¶
createProductCollection(input)updateProductCollection(collectionKey, input)deleteProductCollection(collectionKey)setProductCollections(productKey, collectionKeys)
Example Mutation Flows¶
Add a Property Definition¶
Human request:
add a property definition Rack Pillar Type A
Expected assistant behavior:
- search existing properties for close matches
- confirm no conflicting property already exists
- call
createProperty - re-read the created property
Add an Item to a Product¶
Human request:
add item Racking System Package A to C&I System 30/60
Expected assistant behavior:
- resolve the target product
- resolve whether
Racking System Package Ais a new product, a sub-item, or a BoP line - inspect current product structure
- apply the appropriate mutation path
- re-read the resulting product
Update BoP to Include a Property¶
Human request:
update Racking System Package A BoP to include Pillar Type A
Expected assistant behavior:
- resolve the product
- resolve
Pillar Type Ato the intended property definition - verify that the product structure supports the requested BoP change
- apply the mutation
- re-read and report the changed BoP state
Near-Term Gap¶
Some item-level and BoP-level operations may require a richer mutation contract than the currently verified product/property endpoints expose.
This document should therefore guide the assistant to:
- use currently available product/property mutations where possible
- identify when a requested write operation exceeds the current BFF contract
- stop short of unsafe inference when the write path is not yet explicit