feat(P3): Nova rebrand — SSM path + tag keys (REQ-161/162)
SSM path /acdl/{env}/{contractId}/{output} → /nova/... across
core/output_publisher + contract resolver + consumer docs. New
scripts/migrate_ssm_paths.py (copy/verify/delete, dry-run default).
AWS tag keys acdl:owner|environment|contract|cost-center|ref → nova:*
across terraform tagging + ABAC session policies (iam:ResourceTag/acdl:*
→ iam:ResourceTag/nova:*). nova_tagging.py hard mode (D-109 warn→hard).
tagging-standard.json tag-key values → nova:*. New
scripts/untag_acdl_keys.py (remove old acdl:* tags, dry-run default).
Test fixtures updated; pytest + run_ci.sh PASS.
---ci---
project: acdl
phase: 3
milestone: v1.15
status: execute
---/ci---
This commit is contained in:
@@ -33,8 +33,8 @@ resource "aws_vpc" "ci" {
|
||||
cidr_block = "10.1.0.0/16"
|
||||
tags = {
|
||||
Name = "acdl-ci-vpc"
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:environment" = "ci"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:environment" = "ci"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,8 +45,8 @@ resource "aws_subnet" "ci" {
|
||||
availability_zone = data.aws_availability_zones.available.names[count.index]
|
||||
tags = {
|
||||
Name = "acdl-ci-subnet-${count.index}"
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:environment" = "ci"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:environment" = "ci"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ flow:
|
||||
applies [`consumer_invoke_policy.json`](./consumer_invoke_policy.json)
|
||||
to the consumer's deploy role. The policy grants
|
||||
`lambda:InvokeFunctionUrl` on the Lambda ARN, scoped via ABAC — the
|
||||
condition `aws:PrincipalTag/acdl:owner == ${consumerRepo}` ensures a
|
||||
condition `aws:PrincipalTag/nova:owner == ${consumerRepo}` ensures a
|
||||
repo can only invoke when it is the owner it claims to be.
|
||||
2. **Runtime.** The consumer's deploy workflow (running in the consumer
|
||||
AWS account under the consumer's deploy role) signs the Function URL
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"Resource": "arn:aws:lambda:${region}:${account_id}:function:acdl-contract-ingestor",
|
||||
"Condition": {
|
||||
"StringEquals": {
|
||||
"aws:PrincipalTag/acdl:owner": "${consumerRepo}"
|
||||
"aws:PrincipalTag/nova:owner": "${consumerRepo}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+40
-40
@@ -75,10 +75,10 @@ resource "aws_dynamodb_table" "acdl_contracts" {
|
||||
}
|
||||
|
||||
tags = {
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:contract" = "platform"
|
||||
"acdl:environment" = "prod"
|
||||
"acdl:cost-center" = "acdl-default"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:contract" = "platform"
|
||||
"nova:environment" = "prod"
|
||||
"nova:cost-center" = "nova-default"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,10 +89,10 @@ resource "aws_secretsmanager_secret" "github_token" {
|
||||
kms_key_id = aws_kms_key.acdl_platform.arn
|
||||
|
||||
tags = {
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:contract" = "platform"
|
||||
"acdl:environment" = "prod"
|
||||
"acdl:cost-center" = "acdl-default"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:contract" = "platform"
|
||||
"nova:environment" = "prod"
|
||||
"nova:cost-center" = "nova-default"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,10 +168,10 @@ resource "aws_lambda_function" "contract_ingestor" {
|
||||
}
|
||||
|
||||
tags = {
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:contract" = "platform"
|
||||
"acdl:environment" = "prod"
|
||||
"acdl:cost-center" = "acdl-default"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:contract" = "platform"
|
||||
"nova:environment" = "prod"
|
||||
"nova:cost-center" = "nova-default"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,10 +230,10 @@ resource "aws_dynamodb_table" "acdl_change_requests" {
|
||||
}
|
||||
|
||||
tags = {
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:contract" = "platform"
|
||||
"acdl:environment" = "prod"
|
||||
"acdl:cost-center" = "acdl-default"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:contract" = "platform"
|
||||
"nova:environment" = "prod"
|
||||
"nova:cost-center" = "nova-default"
|
||||
}
|
||||
}
|
||||
# REQ-107: SNS topic for separation-of-duties halt artifacts.
|
||||
@@ -242,10 +242,10 @@ resource "aws_sns_topic" "acdl_sod_halt" {
|
||||
name = "acdl-sod-halt"
|
||||
kms_master_key_id = aws_kms_key.acdl_platform.id
|
||||
tags = {
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:contract" = "platform"
|
||||
"acdl:environment" = "prod"
|
||||
"acdl:cost-center" = "acdl-default"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:contract" = "platform"
|
||||
"nova:environment" = "prod"
|
||||
"nova:cost-center" = "nova-default"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -262,10 +262,10 @@ resource "aws_vpc" "acdl_shared" {
|
||||
cidr_block = var.vpc_cidr
|
||||
tags = {
|
||||
Name = "acdl-shared"
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:contract" = "platform"
|
||||
"acdl:environment" = "shared"
|
||||
"acdl:cost-center" = "acdl-default"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:contract" = "platform"
|
||||
"nova:environment" = "shared"
|
||||
"nova:cost-center" = "nova-default"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -276,10 +276,10 @@ resource "aws_subnet" "acdl_shared" {
|
||||
availability_zone = data.aws_availability_zones.available.names[count.index]
|
||||
tags = {
|
||||
Name = "acdl-shared-subnet-${count.index}"
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:contract" = "platform"
|
||||
"acdl:environment" = "shared"
|
||||
"acdl:cost-center" = "acdl-default"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:contract" = "platform"
|
||||
"nova:environment" = "shared"
|
||||
"nova:cost-center" = "nova-default"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -291,10 +291,10 @@ resource "aws_internet_gateway" "acdl_shared" {
|
||||
vpc_id = aws_vpc.acdl_shared.id
|
||||
tags = {
|
||||
Name = "acdl-shared-igw"
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:contract" = "platform"
|
||||
"acdl:environment" = "shared"
|
||||
"acdl:cost-center" = "acdl-default"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:contract" = "platform"
|
||||
"nova:environment" = "shared"
|
||||
"nova:cost-center" = "nova-default"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -306,10 +306,10 @@ resource "aws_route_table" "acdl_shared" {
|
||||
}
|
||||
tags = {
|
||||
Name = "acdl-shared-rt"
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:contract" = "platform"
|
||||
"acdl:environment" = "shared"
|
||||
"acdl:cost-center" = "acdl-default"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:contract" = "platform"
|
||||
"nova:environment" = "shared"
|
||||
"nova:cost-center" = "nova-default"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -344,10 +344,10 @@ resource "aws_security_group" "ecs" {
|
||||
|
||||
tags = {
|
||||
Name = "acdl-ecs-sg"
|
||||
"acdl:owner" = "acdl"
|
||||
"acdl:contract" = "platform"
|
||||
"acdl:environment" = "shared"
|
||||
"acdl:cost-center" = "acdl-default"
|
||||
"nova:owner" = "acdl"
|
||||
"nova:contract" = "platform"
|
||||
"nova:environment" = "shared"
|
||||
"nova:cost-center" = "nova-default"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user