You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Phase 3 deletion of DOProvider.Apply (DO PR #124, v1.4.0) replaced the v1 wrapper body with a sentinel-error stub (ErrApplyV1Removed). This preserved the interfaces.IaCProvider contract per ADR 0024 but kept Apply as a runtime-only failure surface.
Adversarial-design-review reviewer flagged this as preserving 'the exact runtime-failure surface ADR 0024 mandates eliminating' (ADR 0024 mandates compile-time safety: 'a missing required method on the plugin side fails the plugin's go build').
Scope
Interface refactor: split Apply off IaCProvider into a deprecated LegacyApplier interface that v2-only plugins don't implement. Eliminates the runtime-failure stub entirely + makes 'v2 cutover' compile-time enforceable per ADR 0024.
Affects all 4 IaC plugins (aws/gcp/azure/DO) simultaneously — coordinated 5-repo cascade like Phase 2.
Why deferred from Phase 2.5+ Cleanup Bundle
Bundle scope was mechanical cleanup. Introducing an interface refactor mid-bundle violates scope discipline. DO is the first plugin to need this; the right refactor pattern emerges from observing aws/gcp/azure's wrappers (do they ALSO have post-loop hooks like deferred-flush? Phase 1 inventory said no, but worth re-verifying).
Approach
Full superpowers pipeline. Brainstorm should consider:
Does IaCProvider continue requiring Apply for v1 plugins, with a separate v2-only sub-interface for the engine to type-assert?
Or completely remove Apply from IaCProvider + introduce LegacyApplier opt-in?
Or version the IaCProvider interface itself (IaCProviderV1 + IaCProviderV2)?
Followup from Phase 2.5+ Cleanup Bundle adversarial-design-review cycle-1 (Critical finding C-5).
Context
Phase 3 deletion of DOProvider.Apply (DO PR #124, v1.4.0) replaced the v1 wrapper body with a sentinel-error stub (
ErrApplyV1Removed). This preserved theinterfaces.IaCProvidercontract per ADR 0024 but kept Apply as a runtime-only failure surface.Adversarial-design-review reviewer flagged this as preserving 'the exact runtime-failure surface ADR 0024 mandates eliminating' (ADR 0024 mandates compile-time safety: 'a missing required method on the plugin side fails the plugin's go build').
Scope
Interface refactor: split
ApplyoffIaCProviderinto a deprecatedLegacyApplierinterface that v2-only plugins don't implement. Eliminates the runtime-failure stub entirely + makes 'v2 cutover' compile-time enforceable per ADR 0024.Affects all 4 IaC plugins (aws/gcp/azure/DO) simultaneously — coordinated 5-repo cascade like Phase 2.
Why deferred from Phase 2.5+ Cleanup Bundle
Bundle scope was mechanical cleanup. Introducing an interface refactor mid-bundle violates scope discipline. DO is the first plugin to need this; the right refactor pattern emerges from observing aws/gcp/azure's wrappers (do they ALSO have post-loop hooks like deferred-flush? Phase 1 inventory said no, but worth re-verifying).
Approach
Full superpowers pipeline. Brainstorm should consider:
References