---ci--- project: nova-platform milestone: v1.0 status: complete requirements: covered: [REQ-01,REQ-02,REQ-03,REQ-04,REQ-05,REQ-06,REQ-07,REQ-08,REQ-09,REQ-10,REQ-11,REQ-12,REQ-13,REQ-14,REQ-15,REQ-16,REQ-17,REQ-18,REQ-19,REQ-20,REQ-21,REQ-22,REQ-23,REQ-24,REQ-25,REQ-26,REQ-27,REQ-28,REQ-29,REQ-30,REQ-31,REQ-32,REQ-33,REQ-34,REQ-35,REQ-36,REQ-37,REQ-38] partial: [] ---/ci--- v1.0 milestone complete: simplified infrastructure-delivery platform derived from Nova (acdl). 6 phases (P0-P5 + P6 final). 38 REQ-IDs. 38 decisions (D-001..D-038). 76 tests pass. Engine boundary holds. Happy paths green (check-only + CI). 13 L1 + 2 L2 modules. 5 terraform roots. Shell reproducibility. Zero OOS files. Tags: v0.1.0 (P0) → v0.1.1..v0.1.5 (P1..P5) → v0.1.6 (P6 = milestone release on v0.1 patch line).
3.6 KiB
Module: <name>
Copy this template into
modules/l1/<name>/README.mdormodules/l2/<name>/README.mdand fill in the placeholders. Sections marked DROP are intentionally omitted from nova modules (D-029): do not addNFRsorCompliancesections.
Overview
One-paragraph description of what this module provisions, the stack type(s) it exposes, and when to reach for it. Mention whether it is L1 (single primitive) or L2 (composition of L1s), and whether it is multi-resource.
- Stack type:
aws:<service>:<resource> - Kind:
l1(orl2) - Version:
1.0.0
Resources
List the concrete cloud resources the Terraform adapter creates. For L1
single-resource modules this is one row; for multi-resource L1s mirror
the resources[] array in interface.json.
| Stack type | Terraform resource | Notes |
|---|---|---|
aws:s3:bucket |
aws_s3_bucket |
The bucket itself |
aws:s3:bucket |
aws_s3_bucket_versioning |
Versioning sibling |
aws:s3:bucket |
aws_s3_bucket_server_side_encryption_configuration |
SSE config sibling |
For L2 modules, list the L1 modules composed via module blocks in
terraform/main.tf instead.
Inputs
Mirror interface.json → inputs. Mark required inputs with yes.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
bucket_name |
string | yes | — | Globally-unique S3 bucket name |
region |
string | yes | — | AWS region |
kms_key_arn |
string | no | null |
CMK ARN for SSE-KMS |
enabled |
boolean | no | true |
Feature flag |
tags |
map | no | {} |
Tags merged with module defaults |
Outputs
Mirror interface.json → outputs.
| Name | Type | Description |
|---|---|---|
bucket_arn |
arn | The S3 bucket ARN |
bucket_name |
string | The bucket name |
bucket_regional_domain_name |
string | The bucket regional domain name |
Usage
module "bucket" {
source = "modules/l1/s3/terraform"
bucket_name = "nova-prod-assets"
region = "us-east-1"
tags = {
"nova:owner" = "team-platform"
"nova:environment" = "prod"
}
}
Or as a flat-stack contract entry:
{
"module": "s3",
"version": "1.0.0",
"inputs": {
"bucket_name": "nova-prod-assets",
"region": "us-east-1"
}
}
Versioning
This module follows the registry semver contract: bump the patch/minor
version in interface.json and modules/registry.json for any
input/output/behavior change. Breaking changes (renamed inputs,
removed outputs, changed defaults) require a major bump and a new
registry entry; the previous version is marked deprecated: true and
remains selectable by pinned contracts. See modules/README.md for
the registry format and the resolver's version-selection rules.