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
{{ message }}
Repository navigation
Cross-driver IaC ownership-tagging convention (phase 2 of gocodealone-dns import) #779
gocodealone-dns (private) now imports DigitalOcean DNS state via GH Action. To detect cross-repo IaC conflicts (e.g. one repo asserts ownership of a record another repo also manages), we need a uniform "who owns this resource" marker convention across IaC drivers.
DigitalOcean DNS records have no native tagging facility, so we adopted a TXT record convention:
_dns-managed-by.<domain>. IN TXT "<owner>"
This issue tracks generalizing the convention across all IaC drivers in the workflow plugin ecosystem.
Proposed convention by resource class
Resource class
Mechanism
Examples
DNS records
TXT _dns-managed-by.<zone>
digitalocean, hover, cloudflare, namecheap
Natively-taggable resources
Tag managed-by:<owner>
DO Droplets/Spaces/Volumes/K8s; AWS EC2/S3/EKS; GCP/Azure equivalents
Untagged + no TXT analogue
Naming prefix mgd-<owner>-<resource>
rare edge cases
Scope
Add OwnershipTagger interface to plugin/external/sdk (or extend existing IaC interfaces)
Verified against latest origin/main: there is no OwnershipTagger, GetOwner, SetOwner, enumerate-owners, or _dns-managed-by implementation in workflow core/wfctl/plugin SDK. The request still matches the repository direction because ownership checks belong at the IaC plugin/wfctl mutation boundary and require a multi-driver cascade.
Verified latest workflow main now has DNS ownership enforcement through wfctl dns-policy and the _workflow-dns-policy.<zone> TXT convention. That supersedes the older per-record _dns-managed-by.<domain> proposal for DNS.
Remaining scope is the generic cloud-resource side: natively taggable resources should converge on a provider-appropriate managed-by:<owner>/label convention, and wfctl/provider plugins still need a concrete ownership read/write/enumeration contract for those resources.
I am leaving this issue open until that generic tag/label ownership pass is implemented across the provider plugins.
The workflow release includes grpc-versions.txt, and the DigitalOcean release workflow passed contract validation, runtime capability truth-check, post-build manifest validation, and registry notification.
Leaving this issue open because the original scope is cross-driver. Remaining cascades still need evaluation/implementation for AWS, Azure, GCP, Hover, Cloudflare, and Namecheap ownership providers/conventions.
Registry cascade chore: sync aws to v2.2.0 workflow-registry#192 updated plugins/aws/manifest.json to v2.2.0 with SHA-256 checksums restored, passed registry validation/CodeQL/Copilot, and was admin-merged.
Remaining provider cascades for this issue still include Azure, GCP, Hover, Cloudflare, and Namecheap.
Released workflow-plugin-gcpv2.2.0. The release workflow failed only in the final draft-publish step after GoReleaser had uploaded assets; I published the draft release manually.
Hover, Cloudflare, and Namecheap were rechecked against latest origin/main.
All three expose infra.dns through strict-contract ResourceDriver implementations, and current workflow core routes DNS ownership through wfctl dns-policy / _workflow-dns-policy.<zone> via dns/gate.DriverReader.
cmd/wfctl/dns_policy.go and dns/gate/gate.go explicitly document support for DO / CF / NC / Hover through IaCProvider.ResourceDriver("infra.dns"); no per-provider IaCProviderOwnership implementation is needed for these DNS-only ownership semantics.
Cloudflare and Namecheap have registrar/domain-transfer surfaces, but they are not natively taggable cloud resources and do not fit the workflow-owner tag/label contract shipped for DO/AWS/Azure/GCP. Adding ownership providers there would duplicate the DNS policy mechanism or invent an unsupported owner side channel.
With DO, AWS, Azure, and GCP ownership providers released and registry-synced, and DNS providers covered by the shipped DNS policy mechanism, I consider this issue complete.
Activity
intel352 commentedon Jun 1, 2026
Audit result: still relevant.
Verified against latest
origin/main: there is noOwnershipTagger,GetOwner,SetOwner,enumerate-owners, or_dns-managed-byimplementation in workflow core/wfctl/plugin SDK. The request still matches the repository direction because ownership checks belong at the IaC plugin/wfctl mutation boundary and require a multi-driver cascade.intel352 commentedon Jun 1, 2026
Progress update while addressing this issue:
workflowmain now has DNS ownership enforcement throughwfctl dns-policyand the_workflow-dns-policy.<zone>TXT convention. That supersedes the older per-record_dns-managed-by.<domain>proposal for DNS.managed-by:<owner>/label convention, and wfctl/provider plugins still need a concrete ownership read/write/enumeration contract for those resources.I am leaving this issue open until that generic tag/label ownership pass is implemented across the provider plugins.
intel352 commentedon Jun 1, 2026
Progress update:
GoCodeAlone/[email protected].v2.1.8.grpc-versions.txt, and the DigitalOcean release workflow passed contract validation, runtime capability truth-check, post-build manifest validation, and registry notification.Leaving this issue open because the original scope is cross-driver. Remaining cascades still need evaluation/implementation for AWS, Azure, GCP, Hover, Cloudflare, and Namecheap ownership providers/conventions.
feat: add AWS ownership tagging
intel352 commentedon Jun 2, 2026
AWS cascade update for workflow#779:
IaCProviderOwnershipvia AWS Resource Groups Tagging API.workflow-ownertag key for ARN-backed resources.v0.69.7andminEngineVersionto0.69.1.iacServices.workflow-plugin-awsv2.2.0: https://github.com/GoCodeAlone/workflow-plugin-aws/releases/tag/v2.2.0plugins/aws/manifest.jsontov2.2.0with SHA-256 checksums restored, passed registry validation/CodeQL/Copilot, and was admin-merged.Remaining provider cascades for this issue still include Azure, GCP, Hover, Cloudflare, and Namecheap.
intel352 commentedon Jun 2, 2026
Azure ownership cascade for this issue is complete.
Completed:
workflow-plugin-azurePR feat: add ownership tagging workflow-plugin-azure#35 merged (42e5e5021bbaa0df4819832da0aa62983734a0e6).IaCProviderOwnershipbacked by Azure ARMworkflow-ownertags.ProviderIDso ownership works forinfra.storagetoo.workflow-plugin-azurev2.2.0: https://github.com/GoCodeAlone/workflow-plugin-azure/releases/tag/v2.2.05c49a6a4bef5a7082e46065c6a1b653a0660412e) with release SHA-256 checksums preserved.Verification:
GOWORK=off go test ./... -count=1,GOWORK=off go vet ./...,git diff --check.Remaining provider cascades still include GCP, Hover, Cloudflare, and Namecheap.
intel352 commentedon Jun 2, 2026
GCP cascade completed.
workflow-plugin-gcpPR Potential fix for code scanning alert no. 17: Database query built from user-controlled sources #31 merged: addedIaCProviderOwnershipsupport backed byworkflow-ownerlabels, with Cloud Asset owner lookup/listing and label updates across supported drivers.workflow-plugin-gcpv2.2.0. The release workflow failed only in the final draft-publish step after GoReleaser had uploaded assets; I published the draft release manually.workflow-registryPR feat: add step.s3_upload pipeline step for S3-compatible object storage #194 merged: registry now pointsgcpatv2.2.0with current capabilities, min engine0.69.1, asset URLs, and checksums.workflow-plugin-gcpPR Bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 in /example in the go_modules group across 1 directory #32 merged: release workflow now publishes drafts withgh release edit --draft=false, matching the AWS/Azure pattern and avoiding the draft lookup race.Follow-up release sweep from the GCP failure:
v2.2.0and Azurev2.2.0release workflows are green.workflow-plugin-computeFix 3 UI bugs found during exploratory testing #21,workflow-plugin-crypto[WIP] Upgrade Modular #4, andworkflow-plugin-volunteer-science[WIP] Upgrade Modular #4; post-merge CI is green for all three.main; no new PR needed.intel352 commentedon Jun 2, 2026
Final remaining-provider audit for workflow#779:
origin/main.infra.dnsthrough strict-contractResourceDriverimplementations, and current workflow core routes DNS ownership throughwfctl dns-policy/_workflow-dns-policy.<zone>viadns/gate.DriverReader.cmd/wfctl/dns_policy.goanddns/gate/gate.goexplicitly document support for DO / CF / NC / Hover throughIaCProvider.ResourceDriver("infra.dns"); no per-providerIaCProviderOwnershipimplementation is needed for these DNS-only ownership semantics.workflow-ownertag/label contract shipped for DO/AWS/Azure/GCP. Adding ownership providers there would duplicate the DNS policy mechanism or invent an unsupported owner side channel.With DO, AWS, Azure, and GCP ownership providers released and registry-synced, and DNS providers covered by the shipped DNS policy mechanism, I consider this issue complete.