π€ Generated by the Agentic Engineer
First child of #33, and the one that must land first β every other driver child is written against the contract this defines.
User story
As a controller developer, I want engine provisioning expressed behind one versioned Go interface so that adding an engine does not mean editing reconcile logic, and so native and cnpg-hybrid are two implementations of one contract rather than two code paths.
π΄ Resolve the architecture fork first
This child is where #33's overlap with #3 gets settled, because the interface shape is the decision:
Do not start the driver children until this is decided and recorded on #33. Closing or re-scoping #3 is part of that decision.
Acceptance criteria
Rough size: M, and it gates the rest.
First child of #33, and the one that must land first β every other driver child is written against the contract this defines.
User story
As a controller developer, I want engine provisioning expressed behind one versioned Go interface so that adding an engine does not mean editing reconcile logic, and so
nativeandcnpg-hybridare two implementations of one contract rather than two code paths.π΄ Resolve the architecture fork first
This child is where #33's overlap with #3 gets settled, because the interface shape is the decision:
storage.size.Do not start the driver children until this is decided and recorded on #33. Closing or re-scoping #3 is part of that decision.
Acceptance criteria
type(sql/document/graph) andprovider(native/cnpg-hybrid) resolving to exactly one implementation, and an unknown combination failing validation at admission rather than at reconcile.spec.id/outputs/inputs/uicontract; existingDataProductresources continue to reconcile unchanged.Rough size: M, and it gates the rest.