terradart_google 0.35.0
terradart_google: ^0.35.0 copied to clipboard
Curated factory wrappers for Google Cloud resources (Compute, BigQuery, Cloud Run, Cloud SQL, Pub/Sub, Monitoring, ...) for Dart-first Terraform stacks.
Changelog #
0.35.0 - 2026-10-03 #
- No API changes. Lockstep release with the
terradartcommand's--jsonoutput, fixed exit codes,--no-input,--dry-run,terradart help <topic>and bundled agent skill; no provider pin moves.
0.34.0 - 2026-10-03 #
- No API changes. Lockstep release with the
terradartcommand'sinit,validateandstate migrate; no provider pin moves.
0.33.0 - 2026-10-02 #
- No API changes. Lockstep release with the new
terradart_clipackage (theterradartcommand); no provider pin moves.
0.32.1 - 2026-10-02 #
- No API changes. Republishes the 0.32.0 workspace so
terradart_appwrite,terradart_cloudflare,terradart_awsandterradart_migratereach pub.dev; the 0.32.0 publish workflow stopped them at a wrapper-count check that also counted hand-written files, and now counts only generated wrappers (#877).
0.32.0 - 2026-10-02 #
- Breaking: attribute getters drop the
Refsuffix and pass straight into an argument:topic.nameinstead oftopic.nameRef,labels: other.labelsinstead of.ref(other.labels). A name that is a Dart reserved word or aResource/Datamember takes anAttrsuffix (kindAttr,defaultAttr). See MIGRATING.md. - Breaking: every Magic Modules
ResourceRefinput is typedRefTo<R>, and the reference ledger gained rules for the parents MM does not describe (Cloud SQL, Bigtable, Firestore, KMS key rings, DNS zones, Data Catalog, Dataplex, Private CA, Oracle Database, Tags, ...): typed reference slots go from 522 to 851. Writeinstance: primary.refinstead ofinstance: .ref(primary.nameRef). Synth output changes where the reference emits the attribute the provider expects instead of the one an example passed (Private CApool, Filestore snapshotinstance, Workload Identity providerworkload_identity_pool_id, the Logging bucket inputs). See MIGRATING.md. - Breaking: every
*IamMember/*IamBinding/*IamPolicyfactory takes its parent as oneRefTo<R>argument named after it (GoogleCloudRunV2ServiceIamMember(service: api.ref, ...)) instead ofname:pluslocation:/project:copied from the parent. Those keys stay optional and default to the parent's attribute, so synth output now carries the parent'sproject(andlocation/region/zone). CES resources absorblocationandprojectthe same way. See MIGRATING.md. - Breaking: IAM grant inputs —
member/memberson the IAM adjuncts, audit-configexemptedMembers,GoogleIamPolicybindings, Privileged Access Managerprincipals— are typedIamPrincipal:member: sa.principal,.user('a@example.com'),.serviceAccount(...),.group(...),.domain(...),.allUsers,.principalSet(...),.literal(...). Every block with a computedmemberhas anIamPrincipal get principal, which replacesGoogleServiceAccount.iamMember. Synth output is unchanged. See MIGRATING.md. enableApis(Apis.enablebefore this release) selects the only aliasedTimeProviderfor its propagationTimeSleep. Several time aliases and no default throwStateErrorbefore the stack changes.GoogleProviderandGoogleBetaProvidertakeuserProjectOverride(user_project_override).- Breaking:
Apis.enable(stack, barrels: [...])is theStackextension methodenableApis([...])(StackApis, exported fromproject.dart), so a Stack writesfinal apiDeps = enableApis([.cloudRun, .redis]);.Apis.requiredis unchanged. A sealed variant of a block with no fields takes no argument (format: .avroFormat()), and the 29 hand-written variants with one field take it positionally (nextHop: .gateway(.literal('default-internet-gateway')),source: .disk(disk.ref)). See MIGRATING.md. - Breaking: the
google_projectdata source isDataGoogleProject. Every barrel re-exportsterradart_core, and a data source is also exported from its service barrel (DataGoogleComputeNetworkfromcompute.dart). Helperencode()/blockKeyare@internal. See MIGRATING.md. - Breaking:
provider:on every factory and data source takes the registeredStackProvider(provider: eu, fromfinal eu = addProvider(GoogleProvider(alias: 'eu'))) instead of'google.eu';GoogleProjectServiceIdentityoverridesdefaultProviderand takesprovider:too. See MIGRATING.md. - Breaking: an argument the provider schema marks sensitive is
Sensitive<T>— a variable, an expression or an attribute getter, never.literal(...)(GoogleSqlUser(password: dbPassword)). See MIGRATING.md. - Breaking: every generated enum is an extension type implementing
TfArg<String>, so an enum slot takes a member bare —routingMode: .regionalinstead of.literal(.regional), and a list-of-enum slot is aList<E>of members..variable(...),.expression(...)and.arg(...)cover values not known at synth time;switch,.name,.indexand.terraformValueare gone. Synth output is unchanged. See MIGRATING.md. - Breaking: every factory takes its local name as the first positional argument:
GooglePubsubTopic('orders', name: .literal('orders')). See MIGRATING.md. - Breaking:
enableApis(Apis.enablebefore this release) returnsList<TfAddressed>, which spreads intodependsOn(dependsOn: [db, ...apiDeps]). See MIGRATING.md. - Every Dart example in a generated doc comment compiles (
tool/doc_snippets.dart):GoogleSqlUserpasses its password as a sensitive variable instead of a literal synth rejects,GoogleServiceAccountreads itsprincipal, and the Compute and Cloud SQL diagrams aretextfences. Doc comments only; the API and synth output are unchanged.
0.31.0 - 2026-10-01 #
-
Breaking — generated type names are short: a derived helper, enum or nested sealed type is named after its resource and its own block or attribute instead of the whole block path, a name two blocks would share takes the nearest parent that tells them apart, identical blocks share one helper, and no name repeats the words its resource stem ends with. 5,364 types are renamed (
CloudRunV2ServiceSecretKeyRef, notCloudRunV2ServiceTemplateContainersEnvValueSourceSecretKeyRef), and the hand-written override classes that said their resource twice drop the repeat (ComputeSecurityPolicySecurityPolicyRule<Block>→ComputeSecurityPolicyRules<Block>,FirestoreIndexIndex<Block>→FirestoreIndex<Block>, ...). Arguments, variant constructors and synth output are unchanged;dart analyzelists the old names. See MIGRATING.md. -
Breaking — the last
TfArg<Map>blocks take derived helper types:GoogleBiglakeIcebergTableschema/partitionSpec/sortOrder,GoogleClouddeployDeployPolicyselectors/rules,GoogleDataLossPreventionInspectTemplate.inspectConfig,GoogleLustreInstance's three option blocks,GoogleComputeOrganizationSecurityPolicy.advancedOptionsConfigandGoogleDataprocGdcServiceInstance.sparkServiceInstanceConfig.GoogleDataplexDatascan.scanSpecisDataplexDatascanScanSpec, sealed from the Magic Modules group, whose variants take the block helper (.dataProfileSpec(DataplexDatascanDataProfileSpec(...))). Noterradart_googleinput takes a map literal for a block any more. Synth output is unchanged. See MIGRATING.md. -
9,164 new
<name>Refgetters, one per input a resource or data source takes (TfRef<String> get scopeIdRef), so another argument, an output or a constant reads what the input is set to with.ref(...). -
Breaking — 1,047 value-list fields in helper classes take their element type:
TfArg<List<String>>/TfArg<List<num>>instead ofTfArg<List<Object?>>(StorageFtpServerExternalConfig.allowedCidrBlocksis a string list again). Synth output is unchanged. SeeMIGRATING.md. -
Breaking — the parent setting id of the seven Gemini setting bindings,
codeRepositoryIndex/repositoryGroupIdonGoogleGeminiRepositoryGroupand its IAM adjuncts, andGoogleObservabilityLink.buckettakeRefTo<R>(tool/reference_targets.yaml): passsetting.ref, or.literal('id')for a value outside the Stack. SeeMIGRATING.md. -
Breaking — Certificate Manager, Private CA, Secret Manager, IAM workload / workforce identity, Sensitive Data Protection (DLP), Cloud Monitoring, Cloud Logging, OS Config, Network Security TLS policy, Identity Platform, Access Context Manager and Chronicle factories derive their nested helper types from the provider schema instead of hand-written helpers and
TfArg<Map>blocks: helpers are named<Resource><BlockPath>(MonitoringAlertPolicyConditions,SecretManagerSecretReplicationUserManagedReplicas,IamWorkloadIdentityPoolProviderOidc), and sealed variants take the member's helper (definition: .regex(DataLossPreventionStoredInfoTypeRegex(...)),trustSource: .oidc(...)). A Magic Moduleswrite_onlyinput and its plaintext sibling are one sealed argument (password: .passwordWo(...),privateKey: .privateKeyWo(...)), andGoogleDataLossPreventionDeidentifyTemplate.deidentifyConfig,GoogleAccessContextManagerGcpUserAccessBinding.subjectand the SLO / alert-policy / TLS-policy / patch-schedule blocks gain sealed arguments. Inputs hidden by the hand-written overrides are exposed (Identity Platform sign-in and MFA, Private CA subordinate config, regional secret rotation and CMEK, ...). Amax_items = 1block synthesizes as an object instead of a one-element list. See MIGRATING.md. -
Breaking — Cloud Run v2, Cloud Functions, Cloud Build, Cloud Scheduler, Cloud Tasks, Pub/Sub, Eventarc, Artifact Registry, Cloud Deploy, App Engine, Colab, Discovery Engine, Apigee and Vertex AI factories derive their nested helper types from the provider schema instead of hand-written helpers and
TfArg<Map>blocks: helpers are named<Resource><BlockPath>(CloudRunV2ServiceTemplateContainers,CloudSchedulerJobRetryConfig,ClouddeployTargetRun), inputs naming a service account, topic, bucket or network takeRefTo<R>, and the exactly-one / at-most-one groups inside them are sealed arguments whose variants take the member's helper (target: .pubsubTarget(CloudSchedulerJobPubsubTarget(...)),event: .push(...),updatePolicy: .automaticUpdatePolicy(...)). A Cloud Run volume takes onesourceand an environment variable onesource(.value(...)/.valueSource(...)), a rule the Cloud Run API enforces. Inputs hidden by the hand-written overrides are exposed. See MIGRATING.md. -
Breaking — AlloyDB, BigQuery, Bigtable, Cloud SQL, Data Catalog, Dataplex, Dataproc Metastore, Filestore, Firestore, Healthcare and Cloud Storage factories derive their nested helper types from the provider schema instead of hand-written helpers and
TfArg<Map>blocks: helpers are named<Resource><BlockPath>(SqlDatabaseInstanceSettingsIpConfiguration,StorageBucketLifecycleRuleAction,FilestoreInstanceFileShares), inputs naming a network, KMS key, dataset, bucket or topic takeRefTo<R>, and the exactly-one / at-most-one groups inside them are sealed arguments (GoogleBigqueryJob(configuration: .query(...)),GoogleDataprocMetastoreService(capacity: .tier(...)),GoogleDatastreamConnectionProfile(endpoint: ...),GoogleDatabaseMigrationServiceConnectionProfile(engine: ...)). Inputs hidden by the hand-written overrides are exposed. Amax_items = 1block synthesizes as an object instead of a one-element list. See MIGRATING.md. -
Breaking — Compute Engine nested blocks use derived helper types:
GoogleComputeInstance,GoogleComputeInstanceTemplate,GoogleComputeRegionInstanceTemplate,GoogleComputeInstanceFromTemplate,GoogleComputeBackendService,GoogleComputeRegionBackendService,GoogleComputeUrlMap,GoogleComputeRegionUrlMapandGoogleComputeResourcePolicydrop their hand-written helpers andTfArg<Map>blocks, so their exactly-one groups are sealed and their network / subnetwork / KMS key / service account inputs takeRefTo<R>. Helpers lose the doubled resource segment (ComputeBackendServiceBackend), list-block parameters take the block name (backend,hostRule,pathMatcher,test),GoogleComputeResourcePolicy's policy blocks are one sealedkind, andGoogleComputeRouter'snetwork/nccGatewayare one sealednetwork. Disks, images, snapshots, storage pools, interconnect attachments, router NATs / peers and instances expose the blocks their overrides left out (encryption keys,params, NATrules, BGPbfd, ...). See MIGRATING.md. -
Breaking —
GoogleComputeRegionNetworkEndpointGroup'scloudRun,cloudFunctionandappEngineare one nullable sealed argument,serverless: .cloudRun(...). See MIGRATING.md. -
Every resource has a
refgetter returningRefTo<ItsClass>, and so does every data source that reads a resource of this package — the reference the arguments naming another resource take. -
Breaking — 318 arguments that name another resource (network, subnetwork, service account, KMS crypto key, bucket, Pub/Sub topic and BigQuery dataset) take a
RefTo<Target>instead of aTfArg<String>:GoogleComputeSubnetwork(network: vpc.ref),GooglePubsubSubscription(topic: topic.ref). The argument picks the attribute it emits;.literal(...),.variable(...),.expression(...)and.arg(...)take a value outside the Stack, and.pinned('attr')keeps emitting another attribute. SeeMIGRATING.md. -
Breaking — compute and networking input groups the Magic Modules YAML declares mutually exclusive are sealed types: 16 groups on 13 resources (
exactly_one_of→ a required sealed argument or helper field,conflicts→ a nullable one), e.g.GoogleComputeTargetHttpsProxy(certificates: .sslCertificates(...)). Every compute / network / DNS / service-networking / certificate-manager / VMware Engine / edge override setsderiveExactlyOne, so a later MM group seals on the weekly bump. See MIGRATING.md. -
Breaking — data, storage, database and observability input groups the Magic Modules YAML declares mutually exclusive are sealed types: 35 groups on 20 resources, e.g.
GooglePubsubSubscription(delivery: .pushConfig(...)), andGoogleBigqueryDatasetAccess's eight principal / target inputs become one required argument whoseview/dataset/routinevariants keep their helper classes. Every data, storage, database, analytics and observability override (391 of them, BigQuery through Pub/Sub, Spanner, Dataplex, Dataproc, Healthcare, Logging and Monitoring) setsderiveExactlyOne, so a later MM group seals on the weekly bump. See MIGRATING.md. -
Breaking — AI / ML, serverless, Firebase, container / GKE, CI/CD and API-platform input groups the Magic Modules YAML declares mutually exclusive are sealed types: 35 groups on 25 resources, e.g.
GoogleFirebaseAppHostingTraffic(routing: .target(...)).GoogleGkeBackupBackupPlan,GoogleClouddeployCustomTargetType,GoogleCloudRunV2WorkerPoolandGoogleVertexAiRagCorpusderive typed nested helpers (their groups sit in blocks that were map literals). 357 more overrides setderiveExactlyOne. See MIGRATING.md. -
Breaking — security, identity, billing and operations input groups the Magic Modules YAML declares mutually exclusive are sealed types: 13 groups on 8 resources, e.g.
GoogleAccessContextManagerAccessLevel(definition: .basic(...))andGooglePrivatecaCertificate(request: ...). Every resource override now setsderiveExactlyOne.GoogleChronicleFeed's 75-memberdetailsgroup seals too:ChronicleFeedDetails(source: .amazonS3Settings(...)). See MIGRATING.md. -
Breaking — requires Dart 3.10 (
sdk: ^3.10.0, was^3.6.0). The generated wrappers were already formatted in the Dart 3.7+ tall style, so the constraint now matches them (pub.dev static analysis no longer reports a formatter mismatch). -
Breaking — no sealed type name repeats a block segment. A block holding nothing but one sealed group is the sealed type itself (
amount: .lastPeriodAmount(...)onGoogleBillingBudget,data: .resource(...)onGoogleDataplexDatascan), several derived groups take clearer names (GoogleLoggingSavedQuery(definition: ...),DatastreamStreamSourceConfig(system: ...)), and the variants of five hand-written sealed types are renamed:StorageBucketObjectBody(+Source/Content),ColabNotebookExecutionIdentity*,ComputeImageSource{Disk,Image,Snapshot},ComputeRegionHealthCheck<Protocol>HealthCheckConfig,FirebaseAppHostingBuildSource*. See MIGRATING.md. -
Breaking —
GoogleStorageFtpServer'sconfigis the sealed argument derived from the Magic Modulesinternal_config/external_configgroup instead of a hand-writtenStorageFtpServerConfig:config: .internalConfig(StorageFtpServerInternalConfig(...)), and the consumer-list entries areStorageFtpServerInternalConfigConsumerAcceptList/...RejectList.GoogleStorageFtpServer,GoogleStorageFtpUser,GoogleBigqueryDataTransferDataSourceEnrollment,GoogleVertexAiRagCorpusandGoogleNetworkServicesAgentConnectivityTemplatetake their identity arguments first and expose their output attributes as getters. See MIGRATING.md. -
Breaking —
GoogleMonitoringSnooze'scriteria/intervalandGoogleGeminiGdaObservabilitySetting/GoogleGeminiGibqObservabilitySetting'sconversationalAnalyticsSettingtake derived helper types instead ofTfArg<Map>(MonitoringSnoozeCriteria,GeminiGdaObservabilitySettingConversationalAnalyticsSetting). The Observability, Monitoring snooze, Network Management monitoring provider and Gemini observability factories take their identity arguments first and expose their output attributes as getters;GoogleNetworkManagementNetworkMonitoringProviderreads its Magic Modules YAML. See MIGRATING.md. -
Generated wrappers encode optional inputs as null-aware map elements (
'k': ?x,'k': ?x?.toTfJson()) instead ofif (x != null) 'k': xguards, regenerated withterradart wrap. No API change; synth output is unchanged. -
Seven
hashicorp/googleresources that were never wrapped get factories:GoogleIamProjectAccessPolicy,GoogleIamFolderAccessPolicyandGoogleIamOrganizationAccessPolicy(IAM v3 access policies),GoogleMemorystoreAclPolicy,GoogleRedisClusterAclPolicy,GoogleVertexAiEvaluationMetricandGoogleFirestoreChangeStream, whose database / collection-group scope is one sealed argument (scope: .collectionGroupScope(...)).
0.30.0 - 2026-09-28 #
- Breaking — targets
hashicorp/google8.x: the wrap fixture moves from7.46.1to8.4.0andGoogleProviderpins~> 8.0, so an existing root module needsterraform init -upgrade. The Dart API follows the provider (secretDataWoVersion/secretAccessKeyWoVersionare strings,GoogleWorkflowsWorkflow.sourceContentsandGoogleIamWorkforcePoolProviderScimTenant.claimMappingare required, a handful of removed fields are gone). See MIGRATING.md for the upgrade steps and the defaults 8.0 changes without a Dart signal. - Breaking — the 22 factories for the types 8.0 removes are gone: 16 resources (
google_beyondcorp_app_*,google_iap_{brand,client},google_ml_engine_model,google_notebooks_*with their IAM factories,google_vertex_ai_schedule) and 6 data sources, with thenotebooksbarrel. Take those resources out of state before upgrading. - Breaking — write-only secret choices are sealed:
GoogleSecretManagerSecretVersion(payload:),BigqueryDataTransferConfigSensitiveParams(secretAccessKey:)andMonitoringUptimeCheckConfigHttpAuthInfo(password:)take a required sealed value with a write-only and a plaintext variant. - 16 types promoted from beta in 8.2 / 8.3 move here from
terradart_google_beta(google_biglake_hive_*+ IAM,google_observability_*_settings,google_compute_network_edge_security_service), without thegoogle-betaprovider pin. - New factories for the 21 GA types 8.1–8.4 add, and for 13 data sources that had none (8 new in 8.1–8.4, 5 older), scaffolded by the weekly bump and queued in
tool/curation_backlog.yaml. The catalog is now 1359 curated resource factories + 468 data sources (1827 entries).
0.29.0 - 2026-09-27 #
GoogleChronicleSoarNetwork(google_chronicle_soar_network), exercised by the gatedchronicle_quickstart. The catalog is now 1338 curated resource factories + 461 data sources (1799 entries).- Weekly schema bumps 2026-09-13 and 2026-09-20 (Magic Modules YAML;
hashicorp/googlestays at7.46.1) change generated doc comments only. - Breaking —
TimeProvider/TimeSleepmoved to the newterradart_timepackage;package:terradart_google/time.dartis gone.Apis.enablestill inserts the propagationTimeSleep(now through aterradart_timedependency) and still requiresconst TimeProvider()on the stack, imported frompackage:terradart_time/terradart_time.dart. See MIGRATING.md.
0.28.1 - 2026-09-13 #
Lockstep release with terradart_migrate 0.28.1 (passthrough emission fix — a bare Map / List parameter no longer comes out as TfArg.literal). No terradart_google API changes.
0.28.0 - 2026-09-13 #
GoogleProvider.alias(provider "google" { alias = "eu" }) and aprovider:parameter on every resource factory and data source, for Terraform'sprovidermeta-argument:provider: 'google.eu'selects an aliased configuration registered beside the default one,provider: 'google-beta'puts a GA type on the beta provider.TimeProvidertakesaliastoo (#666).
0.27.0 - 2026-08-30 #
Lockstep release with terradart_core 0.27.0 (TfVariable / Stack.addVariable and S3Backend). No terradart_google API changes.
0.26.0 - 2026-08-24 #
Lockstep release. Breaking for terradart_cloudflare — see MIGRATING.md. No terradart_google API changes — the filled catalog and the CloudflareZone.account type change ship in terradart_cloudflare. Wrap fixture pin is hashicorp/google 7.45.0; generated wrappers are unchanged.
0.25.3 - 2026-08-23 #
Lockstep release. No breaking changes vs 0.25.2. No terradart_google API changes — the new curated surface ships in terradart_appwrite.
0.25.2 - 2026-08-22 #
Lockstep release. No breaking changes vs 0.25.1. No terradart_google API changes — the new curated surface ships in terradart_cloudflare.
0.25.1 - 2026-08-19 #
Lockstep release. No breaking changes vs 0.25.0. No terradart_google API changes — the beta-only catalog fill ships in terradart_google_beta.
0.25.0 - 2026-08-15 #
Lockstep release. No breaking changes vs 0.24.0.
The GA HashiCorp google provider catalog is filled. google-beta is coming soon.
Added #
- Remaining GA
hashicorp/googleresources and data sources. Catalog: 1332 curated resource factories + 461 data sources (1793 catalog entries; 131 service barrels). - Leftover and data-source examples on the apply-excluded path (
deferred_leftover_quickstart,data_source_leftover_quickstart, and related skip-listed quickstarts).
0.24.0 - 2026-07-03 #
Lockstep release. Breaking — see MIGRATING.md.
Breaking #
- 19 resources' top-level nested blocks changed from
TfArg<Map<String, dynamic>>?to generated typed helper classes (deriveNestedTypes): the app_engine surface (flexible/standard app versions, domain mapping, service network settings / split traffic), access_context_manager (access_level, service_perimeter), os_config (patch_deployment, os_policy_assignment), dataplex (asset, datascan, entry_link, task, zone), binary_authorization policy, compute (router_nat, router_peer), network_management connectivity_test, and recaptcha_enterprise_key. 49 nested enum sites are now typedTerraformEnums. Serialized Terraform JSON is semantically unchanged (JSON key order may differ;map(string)attributes now require string values at compile time). - Intentionally frozen subtrees stay
TfArg<Map>vianestedTypeExcludes: os_policy_assignment's OS-policy resources DSL and datascan's scan-spec/profile subtrees.
0.23.0 - 2026-07-02 #
Lockstep release. Breaking — see MIGRATING.md.
Breaking #
- Six string fields became typed enums (serialized JSON unchanged):
GoogleAccessContextManagerServicePerimeter.perimeterType,GoogleComputeHaVpnGateway.gatewayIpVersion/.stackType,GoogleComputeNetworkPeering.stackType/.updateStrategy,GoogleComputeRouterPeer.advertiseMode. GoogleProvider.toTfJson()/TimeProvider.toTfJson()(mirrors of the removedStackProvidershim) are gone; readconfigArgs.
0.22.0 - 2026-06-30 #
Lockstep release. No breaking changes vs 0.21.0.
Added #
- Wave 76 — OS Config + Binary Authorization (5 factories): OS policy assignment, patch deployment, project policy, attestor, attestor IAM member. New
os_configandbinary_authorizationbarrels. - Wave 77 — API security (3 factories): API Keys key, reCAPTCHA Enterprise key, Network Management connectivity test. New
apikeysandrecaptchabarrels. Catalog: 380 curated resource factories + 1 data source (381 entries; 65 service barrels). vm_compliance_quickstartandapi_security_quickstart.
0.21.0 - 2026-06-28 #
Lockstep release. No breaking changes vs 0.20.0.
Added #
- Wave 74 — Dataplex lake operations (3 factories): zone, asset, zone IAM member. Catalog: 347 curated resource factories + 1 data source (348 entries; 60 service barrels).
dataplex_quickstartextended with zone + asset + zone IAM member.
0.20.0 - 2026-06-21 #
Lockstep release. No breaking changes vs 0.19.0.
Added #
- Wave 73 — Cloud Bigtable (10 factories): instance, table, app profile, GC policy, authorized/logical/materialized views, schema bundle, instance/table IAM members. New
bigtablebarrel. Catalog: 343 curated resource factories + 1 data source (344 entries; 60 service barrels). bigtable_quickstartexercises every Wave 73 factory.
0.19.0 - 2026-06-21 #
Lockstep release. No breaking changes vs 0.18.0.
Added #
- Wave 72 — IAP App Engine IAM (3
*_iam_memberfactories): service, version, and app-wide App Engine IAP access. Catalog: 333 curated resource factories + 1 data source (334 entries; 59 service barrels). iam_quickstartextended to exercise all three factories.
0.18.0 - 2026-06-21 #
Lockstep release. No breaking changes vs 0.17.1.
Added #
- Wave 71 — App Engine (8 factories): application, URL dispatch rules, domain mapping, firewall rule, flexible/standard app versions, service network settings, service split traffic. New
appbarrel. Catalog: 330 curated resource factories + 1 data source (331 entries; 59 service barrels). app_engine_quickstartexercises every Wave 71 factory.
0.17.1 - 2026-06-21 #
Lockstep release. No catalog or API changes vs 0.17.0.
0.17.0 - 2026-06-21 #
Lockstep release. No catalog or API changes vs 0.16.0.
0.16.0 - 2026-06-21 #
Lockstep release. No breaking changes vs 0.15.0.
Added #
- Catalog grows to 322 curated resource factories + 1 data source (323 entries; 58 service barrels).
- New service barrels and factories across Waves 42–70: Tags, Essential Contacts, Service Directory, Dataplex UC / glossary / lake, Workflows, Compute route / metadata / firewall policy / resource policy / disk attachment, Secret Manager / Parameter Manager, Document AI, Observability, Network Security lists, Healthcare (4 store types + IAM), GKE Hub, Cloud Deploy, BigLake, Gemini settings, Vertex AI dataset / Tensorboard / cache config, Network Connectivity hub, and BigQuery
dataset_access(sealed access variants). - Quickstarts and docs exercise every added catalog entry.
0.15.0 - 2026-06-20 #
Lockstep release. No breaking changes vs 0.14.0.
Added #
- Catalog grows to 256 curated resource factories + 1 data source (257 entries; 46 service barrels).
- BigQuery:
google_bigquery_routine_iam_memberplus authoritative routine IAM binding / policy adjuncts. - Compute: zonal disk, regional instant snapshot, and regional instant snapshot IAM member / binding / policy adjuncts.
- New and extended service coverage: Apigee data collector / datastore, Dataplex data product / IAM member, License Manager configuration, Discovery Engine data store / search engine / IAM member / binding / policy, Config Deployment, Contact Center Insights encryption spec, Dialogflow SIP trunk, Network Connectivity service connection token transport, Chronicle custom list / native dashboard / dashboard chart, Migration Center wave, and Network Security ULL mirroring wave.
- Oracle Database@Google Cloud Waves 36–40: GoldenGate deployment / connection / assignment, ODB network / subnet, Autonomous Database, Base Database DB System, and Exadata / ExaDB infrastructure factories.
- Wave 41 IAM binding/policy adjuncts for BigQuery routine, Compute regional instant snapshot, and Discovery Engine search engine.
Changed #
- Quickstarts and docs now exercise every added catalog entry; examples include Apigee, Dataplex, Config Deployment, Network Connectivity, Network Security ULL, Migration Center, Chronicle, Oracle, and IAM binding/policy adjunct coverage.
Fixed #
- Backfilled
GoogleFilestoreSnapshotincompute_quickstart. - Aligned the Contact Center Insights barrel output directory with the wrap-init anchor.
- Added Config Deployment Gate 6 thunks for blueprint source variants.
0.14.0 - 2026-06-16 #
- Provider 7.36.0:
google_compute_addressgains the computedaddress_idgetter. - Breaking:
google_compute_region_backend_service.connection_tracking_policyis now a typedComputeRegionBackendServiceRegionBackendServiceConnectionTrackingPolicy(withRegionBackendServiceConnectionPersistence/RegionBackendServiceTrackingModeenums) instead ofTfArg<Map>. See MIGRATING.md.
0.13.0 - 2026-06-14 #
Lockstep release. Folds in the unreleased 0.12.20 (Waves 33–35) plus the AI-autonomous-maintenance design pass and harness work. Breaking — see MIGRATING.md.
Breaking #
Apis.enable(stack, barrels: ...)replacesApisEnablement.enable(...).registerOn(stack)and theApiEnablementbundle — one call registers the services plus the propagationTimeSleepand returns the dependency list.TimeProvider/TimeSleepmoved here fromterradart_core— importpackage:terradart_google/time.dart.GoogleProvider.providerAliasremoved (a silent no-op: synth never emitted the alias).google_certificate_manager_certificate_map_entry—hostname/matcherreplaced by a required sealedmatch(CertificateManagerCertificateMapEntryMatch.hostname(...)/.matcher(...)).google_logging_saved_query—LoggingSavedQueryVisibility.privateVisibilityrenamed to.private(now derived from Magic Modules).
Added #
- Wave 33 AlloyDB:
google_alloydb_cluster/google_alloydb_instance/google_alloydb_user; newalloydbbarrel. - Wave 34 Cloud Filestore:
google_filestore_instance/google_filestore_backup/google_filestore_snapshot; newfilestorebarrel. - Wave 35:
google_alloydb_backup; Memorystore for Memcachedgoogle_memcache_instance(newmemcachebarrel); Spannergoogle_spanner_instance/google_spanner_database(newspannerbarrel). GoogleRedisInstance—authEnabled,transitEncryptionMode,replicaCount,readReplicasMode(+RedisInstanceTransitEncryptionMode/RedisInstanceReadReplicasMode/RedisInstancePersistenceMode/RedisInstanceMaintenanceStartTime),deletionProtection, and reachablemaintenancePolicy/persistenceConfig.GoogleComputeUrlMap/GoogleComputeRegionUrlMap—defaultRouteActionparameter.TimeSleep.id— typed ref to the completed-wait timestamp.- Extended quickstarts:
cloud_sql_quickstart(AlloyDB),cloud_run_quickstart(Redis cache +Apis.enablepropagation).
Fixed #
GoogleRedisInstance— the Wave 32maintenancePolicy/persistenceConfigcustomSlots were silently dropped (missing fromparamOrder); both now reach the constructor, are schema-complete (start_time,persistence_mode), and fully exported from theredisbarrel.secret_managerbarrel exports the sealed replication variants (SecretManagerSecretAutoReplication/SecretManagerSecretUserManagedReplication) the catalog already advertised.google_alloydb_cluster/google_memcache_instance—deletionProtectioninput wired (caught by the new parity gate).google_vpc_access_connector/google_storage_hmac_key/google_storage_managed_folder— class docs now carry the upstream Magic Modules descriptions (their MM fixtures were synced for the first time).cloud_run_quickstart— enablessecretmanager.googleapis.comviaBarrels.secretManagerand wiresREDIS_HOSTinto the service env from the cache's typedhostref.- pubspec description no longer hardcodes a resource count (was stale at 118).
Added (maintainer) #
- New machine gates: barrel completeness (
per_service_barrel_test),deletion_protectionparity invariant, dead-customSlotslint-overriderules, MM upstream fingerprint gate, the example API-enablement ratchet, pre-mergepub publish --dry-run, anddart analyze tool/. MM fixtures synced (73; zero enum drift). Catalog counts derived from_catalog.g.dart.
Catalog: 209 curated resource factories + 1 data source (210 entries; 35 service barrels).
0.12.19 - 2026-06-12 #
Added #
ApiEnablement/ApisEnablement.enable— wrapsApis.requiredwith optionalTimeSleeppropagation delay (requiresTimeProvideron the stack).- Wave 32 Memorystore:
google_redis_instance(RedisInstanceTier,RedisInstanceConnectMode); newredisbarrel. - Extended
cloud_run_quickstart— Redis cache +ApisEnablementwith 60s propagation sleep.
Catalog: 199 curated resource factories + 1 data source (200 entries; 31 service barrels).
0.12.18 - 2026-06-12 #
Added #
- Wave 31 Private CA (2):
google_privateca_certificate_template(identity constraints helpers),google_privateca_ca_pool_iam_member. - Extended
compute_lb_quickstart— ENTERPRISE pool tier, template + IAM member wired into CAS chain.
Catalog: 198 curated resource factories + 1 data source (199 entries).
0.12.17 - 2026-06-12 #
Added #
Apis.required(barrels: [...])— derives distinctGoogleProjectServiceresources from [Barrels] catalog names.Barrelsenum — typed barrel selectors aligned with per-servicepackage:terradart_google/<barrel>.dartimports.- Shared
requiredApiForTerraformTypemoved into the package (re-exported fortool/gates).
0.12.16 - 2026-06-12 #
Added #
- Wave 30 Private CA (1):
google_privateca_certificatewithPrivatecaCertificateConfig,PrivatecaCertificateX509Config.serverTls(), and CSR / inline-config issuance paths. - Extended
compute_lb_quickstart(CAS leaf cert after root CA).
Catalog: 196 curated resource factories + 1 data source (197 entries).
0.12.15 - 2026-06-12 #
Added #
- Wave 29 Private CA (1):
google_privateca_certificate_authoritywithPrivatecaCertificateAuthorityConfig,PrivatecaCertificateAuthorityKeySpec, and X.509 / key-algorithm enums. - Extended
compute_lb_quickstart(root CA → pool → issuance chain).
Catalog: 195 curated resource factories + 1 data source (196 entries).
0.12.14 - 2026-06-12 #
Added #
- Wave 28 Private CA (1):
google_privateca_ca_pool(PrivatecaCaPoolTier). - New barrel:
privateca.dart(30 service barrels total). - Extended
compute_lb_quickstart—GooglePrivatecaCaPoolreferenced by issuance config.
Catalog: 194 curated resource factories + 1 data source (195 entries).
0.12.13 - 2026-06-12 #
Added #
- Wave 27 Certificate Manager (2): trust config (
CertificateManagerTrustConfigTrustStorehelpers), certificate issuance config (CertificateManagerCertificateIssuanceConfigCertificateAuthorityConfigfor CASca_poolreferences). - Extended
compute_lb_quickstartandpubsub_quickstart(GoogleProjectdata source).
Catalog: 193 curated resource factories + 1 data source (194 entries).
0.12.12 - 2026-06-12 #
Breaking #
Seven existing factories now use required sealed virtual slots instead of
optional per-block constructor params, enforcing GCP exactly_one_of at compile
time:
| Factory | New required param | Sealed type |
|---|---|---|
GoogleComputeFirewall |
rulePolicy |
ComputeFirewallRulePolicy |
GoogleComputeHealthCheck |
protocol |
ComputeHealthCheckProtocol |
GoogleComputeRegionHealthCheck |
protocol |
ComputeRegionHealthCheckProtocol |
GoogleMonitoringUptimeCheckConfig |
target |
MonitoringUptimeCheckConfigTarget |
GoogleBigqueryJob |
jobConfiguration |
BigqueryJobConfiguration |
GoogleBigqueryConnection |
backend |
BigqueryConnectionBackend |
GoogleCloudbuildTrigger |
buildSpec |
CloudbuildTriggerBuildSpec |
Migration guide: MIGRATING.md (0.12.11 → 0.12.12).
Updated quickstarts: compute_lb_quickstart, monitoring_quickstart,
bigquery_quickstart, cloud_build_quickstart.
Catalog unchanged: 191 curated resource factories + 1 data source (192 entries).
0.12.11 - 2026-06-09 #
Added #
- Wave 25 Service Networking (1): VPC Access connector (
VpcAccessConnectorSubnethelper for subnet mode). - Wave 26 Certificate Manager (4): DNS authorization, certificate (
CertificateManagerCertificateProvisioningSourcesealed managed/self-managed), certificate map, certificate map entry.
New barrel: certificate_manager.dart (29 service barrels total).
Catalog: 191 curated resource factories + 1 data source (192 entries).
Changed #
GoogleArtifactRegistryRepository—remoteRepositoryConfignow exposes typeddockerRepository,mavenRepository, andnpmRepositoryblocks with public-registry enums (ArtifactRegistryDockerPublicRepository,ArtifactRegistryMavenPublicRepository,ArtifactRegistryNpmPublicRepository) and a shared deprecatedArtifactRegistryRepositoryArtifactRegistryRemoteCustomRepositoryhelper.advancedExtraremains forpython_repositoryand other rare upstreams.
0.12.10 - 2026-06-09 #
Breaking #
Finite schema fields across many existing factories now use typed enums and
nested helpers instead of TfArg<String> / raw maps. New Wave 23–24 factories
ship with enums from day one. Full migration table:
MIGRATING.md (0.12.9 → 0.12.10).
Highlights:
- Top-level enum conversions (e.g.
ServiceAttachmentConnectionPreference,RegionSecurityPolicyType,BigqueryDatapolicyDataPolicyType, …). - Nested helper conversions (Armor WAF/rate-limit blocks, URL map cache policy / metadata filters, DNS routing policy, Pub/Sub schema settings, GKE backup restore config, Cloud Run worker pool template, Artifact Registry APT/YUM remote bases, …).
GoogleComputeRegionSecurityPolicynow requires embeddedrules(standaloneGoogleComputeRegionSecurityPolicyRuleremains for additional rules).
Added #
- Wave 23 DNS (2): record set, project policy.
- Wave 23 Eventarc (1): Google channel config.
- Wave 23 Cloud Run (1): v2 worker pool.
- Wave 23 IAP (1): web backend service IAM member.
- Wave 24 DNS (2): response policy, response policy rule.
- Wave 24 Cloud Run (1): v2 worker pool IAM member.
- Wave 24 Compute (1): Cloud Router.
- Wave 24 BigQuery (1): datapolicy data policy IAM member.
Catalog: 186 curated resource factories + 1 data source (187 entries).
0.12.9 - 2026-06-09 #
Added #
- Wave 22 BigQuery (4): Analytics Hub data-exchange IAM member, listing IAM member, listing subscription, connection IAM member.
- Wave 22 Compute (1): regional security policy rule.
Catalog: 176 curated resource factories + 1 data source (177 entries). Additive; no breaking API changes vs 0.12.8.
0.12.8 - 2026-06-10 #
Added #
- Wave 17 Eventarc (5): channel, enrollment, google API source, message bus, pipeline.
- Wave 18 Compute LB internals (9): target SSL/TCP proxies, regional TCP proxy, service attachment, regional SSL/Armor policies, global/regional network endpoints, security policy rule.
- Wave 19 BigQuery governance (6): reservation assignment, row access policy, data policy, Analytics Hub exchange/listing, BI reservation.
- Wave 20 Storage + Cloud SQL (3): managed folder, SSL cert, source representation instance.
- Wave 21 Firebase App Check (1): reCAPTCHA v3 config.
Catalog: 171 curated resource factories + 1 data source (172 entries). Additive; no breaking API changes vs 0.12.7.
0.12.7 - 2026-06-10 #
ADDED — Waves 12–15:
- Wave 12 (Monitoring):
google_monitoring_slo,google_monitoring_group,google_monitoring_custom_service,google_monitoring_monitored_project;monitoring.dartextended (10 factories total). - Wave 13 (Compute LB):
google_compute_region_ssl_certificate,google_compute_network_endpoint. - Wave 14 (KMS):
google_kms_crypto_key_version. - Wave 15:
google_pubsub_schema_iam_member,google_storage_hmac_key. - Wave 16 (Logging analytics):
google_logging_log_scope,google_logging_linked_dataset;logging.dartextended (11 factories total).
Catalog: 147 curated resource factories + 1 data source (148 entries). Additive; no breaking API changes vs 0.12.6.
0.12.6 - 2026-06-09 #
ADDED — Wave 10 (GKE Backup):
google_gke_backup_backup_plan/google_gke_backup_restore_plangoogle_gke_backup_backup_channel/google_gke_backup_restore_channel- Plan-scoped IAM:
*_iam_member(×2; binding/policy stay uncurated — member-only IAM policy) - New
package:terradart_google/gke_backup.dartbarrel (28 service barrels total).
ADDED — Wave 11 (Logging project ops):
google_logging_project_bucket_config— project log bucket (retention, analytics).google_logging_log_view— filtered view into a log bucket.google_logging_log_view_iam_member— additive IAM on a log view (*_binding/*_policystay uncurated).google_logging_project_exclusion— project-wide log exclusion.google_logging_saved_query— saved Logs Explorer / Ops Analytics query.logging.dartbarrel extended (9 factories total).
Catalog: 136 curated resource factories + 1 data source (137 entries). Additive; no breaking API changes vs 0.12.5.
0.12.5 - 2026-06-09 #
ADDED — Wave 9 (GKE Hub):
google_gke_hub_fleet— project default fleet.google_gke_hub_membership— enroll a [GoogleContainerCluster] in the fleet.container.dartbarrel extended (4 factories total).
Catalog: 125 curated resource factories + 1 data source (126 entries). Additive; no breaking API changes vs 0.12.4.
0.12.4 - 2026-06-09 #
ADDED — Wave 8 (GKE core):
google_container_cluster— GKE cluster on an existing VPC / subnetwork.google_container_node_pool— node pool attached to a cluster.- New
package:terradart_google/container.dartbarrel.
Catalog: 123 curated resource factories + 1 data source (124 entries). Additive; no breaking API changes vs 0.12.3.
0.12.3 - 2026-06-09 #
CHANGED — breaking API fix for WIF provider oneof typing:
GoogleIamWorkloadIdentityPoolProvidernow takes requiredtrustSource: IamWorkloadIdentityPoolProviderTrustSource(sealed) instead of optionaloidc/aws/saml/x509constructor params.- Trust helper types renamed:
IamWorkloadIdentityPoolProviderOidcTrust,…AwsTrust,…SamlTrust,…X509Trust(+IamWorkloadIdentityPoolProviderTrustSource).
See root MIGRATING.md (0.12.2 → 0.12.3). Catalog size unchanged (122 entries).
0.12.2 - 2026-06-09 #
ADDED — two curated factories for external HTTPS LB + GitHub Actions federation paths:
google_iam_workload_identity_pool_provider— OIDC / AWS / SAML / X.509 trust bindings for [GoogleIamWorkloadIdentityPool].google_iap_web_backend_service_iam_binding— authoritative IAP access on external HTTPS load balancer backend services.- New
package:terradart_google/iap.dartbarrel.
Catalog: 121 curated resource factories + 1 data source (122 entries). Additive; no breaking API changes vs 0.12.1.
0.12.1 #
No user-facing changes. Lockstep version bump alongside the terradart_agent v0.12.1 fix. The generated catalog and public surface are unchanged from 0.12.0.
0.12.0 #
ADDED — ships a generated static catalog of the curated factory surface. Additive change; no breaking modifications to the v0.11.0 API and no resource additions or removals (still 118 curated GCP factories + 1 data source).
- Bumped
terradart_coreconstraint to^0.12.0(andterradart_codegendev-dep to^0.12.0). - New
package:terradart_google/catalog.dartbarrel — the introspection entry point, separate from the umbrella so existing consumers are unaffected. - New hand-written
CatalogEntry/CatalogKindtypes (lib/src/catalog_entry.dart) — the public catalog API.CatalogEntrydescribes one curated factory (tfType, Dart class name, per-service barrel, kind, summary, constructor params, nested helper types, sensitive fields, doc comment);CatalogKinddistinguishes a managedresourcefrom a read-onlydataSource. - New generated
terradartCatalog(lib/src/_catalog.g.dart) — aconst List<CatalogEntry>with one entry per curated resource and data source, regenerated byterradart wrap(verified underwrap --check; never hand-edited). Consumed byterradart-mcp(theterradart_agentpackage) to answer catalog queries without analyzing the wrapper source.
0.11.0 2026-MM-DD #
BREAKING — pre-1.0 polish wave consuming the terradart_core 0.11.0 / terradart_codegen 0.11.0 changes (ADR-0016, ADR-0017). v0.x permits breaking changes. See MIGRATING.md for before / after snippets.
- Bumped
terradart_coreconstraint to^0.11.0(andterradart_codegendev-dep to^0.11.0). - 118 curated GCP factories + 1 data source retained — no resource additions or removals in this release. The polish wave focuses on identifier-rename propagation and pubspec hygiene.
- All 118 wrappers regenerated with unprefixed identifiers. Every emitted wrapper now exposes
static const String tfType(was$tfType),Set<String> get sensitiveFields(was$sensitiveFields), andbool get supportsDeletionProtectionwhere applicable (was$supportsDeletionProtection). External code that read these by$-prefixed name must drop the prefix. The two getters are annotated@protected; non-subclass reads require an// ignore: invalid_use_of_protected_memberdirective with rationale. - All emitted enums implement
TerraformEnum. Every enum declaration emitted byterradart_codegen0.11.0 carries theimplements TerraformEnumclause and@override final String terraformValue;. Mostly invisible to direct users; matters when authoring custom hand-rolled enums (must add theimplementsclause to satisfyTfArg<MyEnum>.literal). - Hosted pubspec carets. Examples no longer carry
path:deps to sibling packages; they are workspace members of the monorepo and resolve against the published versions on pub.dev.
0.10.0 2026-MM-DD #
ADDED — small Firestore master-data IaC support. Additive change; no breaking modifications to v0.9.0 API.
google_firestore_documentcurated. Manages a single Firestore document as a Terraform resource. Intended for small fixed master-data sets (feature flags, pricing tiers, lookup tables, regional config).FirestoreFields.encode(Map<String, Object?>)static method added — converts a Dart map to the Firestore wire-format JSON string expected byfields. 11-type coverage:null,bool,int(string-encoded for 64-bit precision),double,String,DateTime(UTC-ISO-8601),Uint8List(base64),List(recursive),Map<String, Object?>(recursive),FirestoreReference,FirestoreGeoPoint. Unsupported types throwArgumentErrorat synth time.FirestoreReference(String path)sentinel forreferenceValue(document-path) Firestore values.FirestoreGeoPoint({latitude, longitude})sentinel forgeoPointValueFirestore values.
Supersedes 0.3.0-dev note #
The 0.3.0-dev CHANGELOG entry listed google_firestore_document as "intentionally not curated (IaC anti-pattern at production scale)". That assessment holds for production-scale datasets (1000s of documents with frequent app-side writes drifting from Terraform state). For small fixed master-data sets (feature flags, pricing tiers, lookup tables, regional config) the IaC pattern is appropriate and reproducible — v0.10.0 enables this case.
Use FirestoreFields.encode(...) for the fields argument; the helper handles the type-discriminated Firestore wire format automatically. See recipes/firestore-seeded-data/ in terradart-cookbook for a worked example.
0.9.0 - 2026-05-21 #
BREAKING — pre-1.0 polish wave. Coordinated rename pass + behaviour fixes consuming Plans 1-3 from terradart_core / terradart_codegen (0.9.x staging for the 1.0 surface; breaking changes still permitted within 0.9.x → 1.0):
- Bumped
terradart_coreconstraint to^0.9.0. - 118 curated GCP factories + 1 data source retained — no resource additions or removals in this release. The polish wave focuses on naming consistency, sensitive-field correctness, and Stack-level devMode.
- Service-prefixed nested helpers: every nested helper class is
<Service><Resource><HelperName>shape. Affects logging, bigquery, secret_manager, sql, cloud_run, monitoring, pubsub, and other barrels with formerly unprefixed helpers. See MIGRATING.md for the full table. TfArg<T>-wrapped nested-helper fields — uniform across all barrels. Monitoring uptime check's previously plainStringfields are nowTfArg<String>..iamMembergetter (was.member) onGoogleServiceAccountand analogous IAM-member-emitting resources..locationRefadded onGoogleCloudRunV2Service+GoogleCloudRunV2Job.- Enum values verbose-natural —
Comparison.lessThan(was.lt),Aligner.alignNextOlder(was.nextOlder), etc. See MIGRATING.md for the per-barrel table. deletion_protectionsynth-time devMode — whenStack(devMode: true), the 6 curated resources with adeletion_protectionschema attribute emitdeletion_protection: false. Production stacks leavedevMode: false(default).- Sensitive masking removed in favour of
SensitiveLiteralError— seeterradart_coreCHANGELOG entry.
See MIGRATING.md for the migration guide with find + sed recipes.
0.8.0-dev - 2026-05-19 #
Wave 7 — Data ops + observability + CI/CD (Plan 5.H, final wave before v1.0.0) #
Adds 23 GA resources covering Data operations + observability + CI/CD on Google Cloud. terradart_google now ships 118 curated resource factories + 1 data source across 27 per-service barrels.
Cloud Build CI/CD (4):
google_cloudbuild_triggergoogle_cloudbuild_worker_poolgoogle_cloudbuildv2_connection(SCM — GitHub App / Bitbucket / GitLab v2)google_cloudbuildv2_repository
Artifact Registry (2):
google_artifact_registry_repository(Docker / Maven / npm / Python / Apt / Yum / Go / Generic / KFP)google_artifact_registry_repository_iam_member
Logging (3):
google_logging_metric(corrected from the plan'sgoogle_logging_log_metric— the actual Terraform provider resource isgoogle_logging_metric)google_logging_folder_sinkgoogle_logging_organization_sink
(google_logging_project_sink was already curated since Wave 2 and is unchanged.)
Monitoring (5):
google_monitoring_notification_channelgoogle_monitoring_uptime_check_configgoogle_monitoring_dashboardgoogle_monitoring_metric_descriptorgoogle_monitoring_service(SLO — onlybasic_servicevariant is exposed by the provider schema; the other 8 SLO service-type variants listed in the original spec are not present and cannot be set via Terraform)
BigQuery Data ops (6):
google_bigquery_job(one-of:query/load/extract/copy; ephemeral — for scheduled work usedata_transfer_config)google_bigquery_routinegoogle_bigquery_data_transfer_configgoogle_bigquery_reservationgoogle_bigquery_capacity_commitmentgoogle_bigquery_connection(one-of with 7 schema-present variants:cloud_sql/cloud_spanner/aws/azure/cloud_resource/spark/configuration;vertex_aiandsalesforce_data_cloudlisted in the original spec are not in the GA provider schema)
Adjacent event-driven Data ops (3):
google_eventarc_trigger(destination one-of:cloud_run_service/cloud_function/workflow/http_endpoint/gke;gkeandretry_policyblock are schema-required additions not in the original spec)google_pubsub_schema(PROTOCOL_BUFFER/AVRO)google_storage_notification
New per-service barrels: cloud_build.dart, artifact_registry.dart, eventarc.dart (24 → 27 barrels).
Quickstart: examples/cloud_build_quickstart/ — full CI/CD pipeline end-to-end.
Constraint bump: terradart_core: ^0.8.0-dev (lockstep).
Note on Wave 7 final count vs original spec: the original Plan 5.H spec targeted 25 new resources (96 → 121). Schema-of-truth verification during execution removed 2 from scope: the plan's google_logging_log_metric was a misnaming (already covered by the existing google_logging_project_sink curation since Wave 2 means logging adds 3 not 4 new), and google_artifact_registry_vpcsc_config is beta-only and not in the GA schema. Final delivery: 23 new resources (96 → 119 = 118 factories + 1 data source).
0.7.0-dev - 2026-05-19 #
Wave 6 — Compute LB stack (Plan 5.G) #
Adds 25 GA resources covering the L7 Application Load Balancer stack on Google Cloud. terradart_google now ships 96 curated resources across 24 per-service barrels.
L7 Global Application LB core (8):
google_compute_global_forwarding_rulegoogle_compute_target_http_proxy,google_compute_target_https_proxygoogle_compute_url_mapgoogle_compute_backend_service(global)google_compute_managed_ssl_certificate,google_compute_ssl_certificategoogle_compute_backend_bucket
L7 Regional/Internal Application LB core (5):
google_compute_forwarding_rule(regional)google_compute_region_target_http_proxy,google_compute_region_target_https_proxygoogle_compute_region_url_mapgoogle_compute_region_backend_service
Health checks (2):
google_compute_health_check,google_compute_region_health_check(unified HTTP/HTTPS/TCP/SSL/HTTP2/GRPC)
MIG / Autoscaler (5):
google_compute_instance_templategoogle_compute_instance_group_manager,google_compute_region_instance_group_managergoogle_compute_autoscaler,google_compute_region_autoscaler
NEG (3):
google_compute_network_endpoint_group(zonal)google_compute_global_network_endpoint_group(Internet)google_compute_region_network_endpoint_group(Cloud Run / Cloud Functions Gen 2 / App Engine flex)
Cloud Armor + SSL Policy (2):
google_compute_security_policy(Cloud Armor; rules inline; CEL expressions as rawString)google_compute_ssl_policy(TLS profile + min_tls_version)
Quickstart: examples/compute_lb_quickstart/ — full L7 Global Application LB chain end-to-end.
Constraint bump: terradart_core: ^0.7.0-dev (lockstep).
0.6.0-dev - 2026-05-18 #
Wave 5: adds 22 new GA resources across IAM completion + Cloud SQL + *_iam_member fill. terradart_google now 71 resources, 24 per-service barrels.
Added — resources #
- IAM (5):
google_project_iam_member,google_project_iam_custom_role,google_service_account_iam_member,google_service_account_key,google_iam_workload_identity_pool. - Cloud SQL (3 + 2 network adjuncts):
google_sql_database_instance,google_sql_database,google_sql_user,google_service_networking_connection,google_compute_global_address. - Cloud Run v2 (1 + 2 IAM):
google_cloud_run_v2_job,google_cloud_run_v2_service_iam_member,google_cloud_run_v2_job_iam_member. *_iam_memberfill (9):google_bigquery_dataset_iam_member,google_bigquery_table_iam_member,google_storage_bucket_iam_member,google_kms_crypto_key_iam_member,google_kms_key_ring_iam_member,google_compute_instance_iam_member,google_compute_disk_iam_member,google_compute_subnetwork_iam_member,google_dns_managed_zone_iam_member.
Added — per-service barrels #
2 new barrels: cloud_sql.dart, service_networking.dart. The umbrella terradart_google.dart re-exports them transitively.
Added — quickstart examples #
1 new end-to-end stack: cloud_sql_quickstart (Cloud SQL instance + database + user with private-IP wiring through service_networking_connection + compute_global_address). 7 existing quickstarts (iam, cloud_run, bigquery, storage, kms, compute, dns) extended with *_iam_member showcases.
Notes #
- IAM-binding variants remain
*_iam_memberonly (additive / safe)._iam_binding(authoritative per role) and_iam_policy(authoritative for resource) are out of scope; demand-driven follow-up tracked under GitHub labelwave-5-followup. - WIF pool shipped without its provider sibling (
iam_workload_identity_pool_provider); the pool alone is meaningful for identity grouping. Provider deferred to a future wave. - Cloud SQL replicas / read pools deferred to a future wave;
sql_database_instancecovers the single-primary case which is the dominant deployment shape. - Spec originally targeted
google_compute_network_iam_member, but Google Cloud does not expose VPC-network-level IAM at that granularity. Substituted withgoogle_compute_disk_iam_member— same rationale (resource-scoped grants without project-wide compute admin) and a real production pattern (backup SAs scoped to specific data disks). - Plan 5.E weekly drift PR cron remained active during Wave 5 as the automation's first real-world evaluation vehicle. See
docs/superpowers/notes/2026-05-18-plan5e-vehicle-eval.md(local) for operational findings; Task 8 will produce that note.
0.5.0-dev #
BREAKING — Plan 5.X: schemantic removal.
- Dropped
package:schemanticruntime dep. - Dropped
package:terradart_annotationsruntime dep. - Deleted all 48
.schema.dart+ 48.schema.g.dartfiles underlib/src/generated/. - 96 wrapper files regenerated: no
_<Resource>SchemaInstancestub, noextends Resource<$<R>>(nowextends Resource), noschema:constructor arg, file-private_<resource>Sensitiveconst inline (previously imported as public const from.schema.dart). - Sensitive masking unchanged — IR-derived const Set → wrapper
$sensitiveFieldsgetter →JsonEncoder.encodeArgMapWithSensitive. - Dropped
build_runnerdev_dep (no more schemantic generation). - Dart SDK floor restored to
^3.6.0(was^3.10.0solely for schemantic). - See ADR-0013 for full rationale.
0.4.0-dev - 2026-05-17 #
Added #
BucketObjectContentsealed class (instorage/google_storage_bucket_object.dart) now exposes anencode()method for parity with other sealed-class encoders. No production behavior change — the parent factory still wiresblockKey + valuedirectly into the argMap.- Gate 6 (
test/synth/encode_round_trip_test.dart) — 34 sealed-class members across 11 sealed classes now exercise encode round-trip structural assertions (seeterradart_codegen0.4.0-dev for the gate's contract).
0.3.0-dev - 2026-05-16 #
Wave 4: adds 21 new GA resources across 6 Firebase / Cloud Functions / Firestore services. terradart_google now 49 resources, 22 per-service barrels.
Added — resources #
- Cloud Functions Gen 2 (2):
google_cloudfunctions2_function,google_cloudfunctions2_function_iam_member. - Firestore (5):
google_firestore_database,google_firestore_field,google_firestore_index,google_firestore_backup_schedule,google_firestore_user_creds. - Firebase App Hosting (5):
google_firebase_app_hosting_backend,_build,_default_domain,_domain,_traffic. - Firebase App Check (7):
_recaptcha_enterprise_config,_play_integrity_config,_app_attest_config,_device_check_config,_service_config,_debug_token,_resource_policy. - Firebase Data Connect (1):
google_firebase_data_connect_service. - Firebase Remote Config (1):
google_firebase_remote_config_remote_config.
Added — per-service barrels #
6 new barrels following Plan 5.B convention: cloud_functions.dart, firestore.dart, firebase_app_hosting.dart, firebase_app_check.dart, firebase_data_connect.dart, firebase_remote_config.dart. The umbrella terradart_google.dart re-exports them transitively — existing umbrella consumers see all new resources without code change.
Added — quickstart examples #
6 new end-to-end stacks under examples/: cloud_functions_quickstart, firestore_quickstart, firebase_app_hosting_quickstart, firebase_app_check_quickstart, firebase_data_connect_quickstart, firebase_remote_config_quickstart. Each validated by CI terraform_validate matrix.
Notes #
google-betaprovider integration intentionally out of scope; tracked at GitHub Issue withwave-4.5-candidatelabel for demand-driven promotion.google_firestore_documentintentionally not curated (IaC anti-pattern at production scale).- IAM pattern remains
*_iam_memberonly;_iam_binding/_iam_policydeferred to a future universal IAM spec. AppCheckEnforcementModeenum is declared once infirebase_app_check_service_configand re-imported byfirebase_app_check_resource_policy— single source of truth for the shared enum.
0.2.1-dev - 2026-05-16 #
No API change since the 0.2.0-dev attempt. Neither 0.1.0-dev nor 0.2.0-dev reached pub.dev for this package — 0.1.0-dev was blocked by an unrelated terradart_google job failure, and 0.2.0-dev was blocked by the upstream terradart_codegen failure in the parallel matrix. 0.2.1-dev ships through a re-ordered publish pipeline (publish-google now waits for publish-codegen instead of the parallel publish-leaves matrix) and is the first version of this package to land on pub.dev.
0.2.0-dev - 2026-05-16 #
No API change since the 0.1.0-dev attempt. The 0.1.0-dev publish run did not reach pub.dev for this package (the leaf packages succeeded but terradart_google did not); 0.2.0-dev is the first version to ship the full surface documented below.
0.1.0-dev - 2026-05-14 #
Adds 15 new GCP resource factories. Total surface: 28 resources + 1 data source.
Added — resources #
- Compute (5):
google_compute_network,google_compute_address,google_compute_subnetwork,google_compute_firewall,google_compute_instance. - BigQuery (2):
google_bigquery_dataset,google_bigquery_table. - KMS (2):
google_kms_key_ring,google_kms_crypto_key. - Cloud Storage (2):
google_storage_bucket,google_storage_bucket_object. - DNS (1):
google_dns_managed_zone. - Cloud Run v2 (1):
google_cloud_run_v2_service. - Logging (1):
google_logging_project_sink. - Monitoring (1):
google_monitoring_alert_policy.
Added — typed enums #
Each new resource ships typed Dart enums for every schema field with a fixed value set — TfArg<MyEnum>.literal(MyEnum.foo) encodes to the Terraform string via the new .terraformValue convention (see terradart_core 0.1.0-dev). Examples: RoutingMode, AddressType, NetworkTier, BucketStorageClass, LifecycleActionType, DatasetStorageBillingModel, KmsKeyPurpose, KmsProtectionLevel, DnsZoneVisibility, DnssecState, DnssecKeyAlgorithm, Ingress, LaunchStage, ScalingMode, ExecutionEnvironment, OnHostMaintenance, ProvisioningModel, AlertCombiner, AlertSeverity, Comparison, Aligner, Reducer.
Added — sealed types for exactly-one-of nested blocks #
Access(google_bigquery_dataset.access) — 8 variants:AccessUserByEmail,AccessGroupByEmail,AccessSpecialGroup,AccessDomain,AccessIamMember,AccessView,AccessDataset,AccessRoutine.BucketObjectContent(google_storage_bucket_object) —BucketObjectFromSource,BucketObjectFromContent.EnvVarSource(google_cloud_run_v2_service.template.containers.env) —EnvVarFromLiteral,EnvVarFromSecret.VolumeSource(google_cloud_run_v2_service.template.volumes) —VolumeSecret,CloudSqlVolume,EmptyDirVolume,GcsVolume,NfsVolume.
Added — nested-block helpers #
Each resource that has nested blocks exposes them as typed Dart classes (e.g. BootDisk, NetworkInterface, Scheduling, Versioning, LifecycleRule, LifecycleAction, LifecycleCondition, PrivateVisibilityConfig, DnssecConfig, Template, ServiceContainer, ContainerResources, ContainerPort, VolumeMount, AlertCondition, ConditionThreshold, Aggregation, AlertStrategy, Documentation, ...). All helpers carry toArgMap() and serialize via the standard TfArg.literal([...]) pattern.
Added — per-service barrels #
- Per-service barrels (
package:terradart_google/<service>.dart) for every curated service. Example:import 'package:terradart_google/pubsub.dart';re-exportsGooglePubsubTopic,GooglePubsubSubscription, both IAM bindings, and their nested helpers — and nothing else. package:terradart_google/provider.dartexportsGoogleProviderand the pinned-version constants for thehashicorp/googleprovider.package:terradart_google/data.dartexports theGoogleProjectdata source.
Changed #
package:terradart_google/terradart_google.dartumbrella now re-exports the per-service barrels instead of inlining every symbol export. Every previously-exported symbol is still available through the umbrella — zero migration required for existing consumers.
Quickstart examples #
9 new end-to-end stacks under examples/ showing every new resource: compute_quickstart, kms_quickstart, storage_quickstart, bigquery_quickstart, dns_quickstart, ops_quickstart, cloud_run_quickstart, monitoring_quickstart (+ extensions to existing ones). Total examples: 14.
Notes #
- Pre-alpha. Pin tightly.
- One cross-resource collision was resolved by renaming the helper class for cloud_run_v2_service's
template.vpc_access.network_interfacesentry toVpcNetworkInterface; the canonicalNetworkInterfacebelongs togoogle_compute_instance. - See
terradart_core0.1.0-dev for the underlying enum-serialization runtime change.
0.0.4-dev - 2026-05-11 #
- chore: the 13 wrapper files under
lib/src/{pubsub,cloud_tasks,secret_manager,cloud_scheduler,iam,project,data}/are now produced byterradart wrap(run frompackages/terradart_codegen/). Output is byte-identical with the Wave 0 handwritten_baseline goldens; no behavioural changes for consumers. - feat: new Layer 1 schema carrier at
lib/src/generated/data_google_project.schema.dart(reserved for future ResourceRef placeholder migration; not yet imported by Layer 2).
0.0.3-dev - 2026-05-09 #
- Fix: rename terradart_core main library file to match package name.
0.0.2-dev - 2026-05-09 #
- CI automated publishing via OIDC trusted publisher.
- Fix: prepare_publish.sh now syncs version from tag name.
0.0.1-dev - 2026-05-09 #
Added #
- Initial pre-alpha release of
terradart_googlecurated GCP factory wrappers. - 12 hand-written factories: Pub/Sub (4), Cloud Tasks (2), Secret Manager (3), Cloud Scheduler (1),
google_project_service,google_service_account. Plus thegoogle_projectdata source. - Schema carriers (
<resource>.schema.dart+.g.dart) generated and committed; consumers do not needbuild_runner. disableOnDestroy/ write-onlysecret_data_wo/IamMemberhelper patterns.
Notes #
- Pre-alpha — factory APIs and emitted Terraform JSON may change between 0.0.x releases. Pin tightly.