Files
acdl/schemas/tagging-standard.json
Jon Chery 51c3edf458 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---
2026-07-30 01:38:30 +00:00

50 lines
2.0 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://nova.dev/schemas/tagging-standard.json",
"title": "Nova Tagging Standard",
"description": "Required tags for all taggable AWS resources created by the platform. Enforced by a Checkov custom Python rule (adapters/terraform/policy/custom_rules/nova_tagging.py, D-109 hard mode in P3 — tag-key values are nova:*; legacy acdl:* tag keys are rejected by the hard-mode rule). The checkov adapter maps NOVA_TAG_NAMING as a real rule (D-054, D-043 closure; renamed from ACDL_TAG_NAMING in P2, REQ-158).",
"type": "object",
"properties": {
"required_tags": {
"type": "object",
"description": "The set of tags that must be present on every taggable AWS resource.",
"properties": {
"nova:owner": {
"type": "string",
"description": "The consumer repository name (e.g. 'consumer-repo'). Injected from the ABAC session."
},
"nova:contract": {
"type": "string",
"description": "The contract ID (UUID)."
},
"nova:environment": {
"type": "string",
"enum": ["dev", "qa", "prod", "dr"],
"description": "The environment name."
},
"nova:cost-center": {
"type": "string",
"description": "The cost center (consumer-provided or platform-default 'nova-default')."
},
"nova:ref": {
"type": "string",
"description": "Optional reference tag (e.g. a change-request ID or external tracker)."
}
},
"required": ["nova:owner", "nova:contract", "nova:environment", "nova:cost-center"],
"additionalProperties": false
},
"default_values": {
"type": "object",
"description": "Default values used when the consumer does not supply the tag.",
"properties": {
"nova:cost-center": {
"type": "string",
"default": "nova-default"
}
}
}
},
"required": ["required_tags"],
"additionalProperties": false
}