feat!: convert to copier-managed skeleton - #48
Merged
Conversation
…ints The readonly suite was a byte-for-byte copy of the functional suite, applying/destroying infra and invoking the function over HTTP instead of only performing read-only verification. Add TestComposableCompleteReadOnly (GetFunction checks only, no invoke), wire the readonly entrypoint to lib.RunNonDestructiveTest, and have TestComposableComplete build on the readonly impl before adding the invoke assertions. Also rename both entrypoints from TestLambdaLayerModule, a leftover scaffold name for a different Lambda resource type, to TestLambdaFunctionModule(ReadOnly).
bryce-lynn-nttd
approved these changes
Jul 21, 2026
bryce-lynn-nttd
left a comment
Contributor
There was a problem hiding this comment.
Clean copier-managed skeleton conversion — approving.
Verified against head (dcc96bcf3):
- Terraform interface untouched —
main.tf/variables.tf/outputs.tf/versions.tfaren't in the diff, so despite thefeat!/breaking changelabel the break is the CI/build-contract only; downstream consumers need no code change. - Copier pin —
_commit: 0.7.1, the current stable skeleton release. - Single-source workflow pins — every
launch-workflowsref isedddecd…, which exists inlaunch-workflowsand maps to real tag 0.15.4. - Readonly test correctly wired and genuinely read-only — functional
TestLambdaFunctionModule→RunSetupTestTeardown; readonlyTestLambdaFunctionModuleReadOnly→RunNonDestructiveTest; both onTestComposable*names.TestComposableCompleteReadOnlydoes onlyGetFunction+assert.Equalon ARN/Name (noInvoke), andTestComposableCompletecalls the read-only impl first, then layers the realInvokeassertions on top — functional as a strict superset of readonly. StaleTestLambdaLayerModulescaffold name fixed. - LCAF cleanup —
.lcafenvand legacypull-request-terraform-check-aws.ymlremoved for the unifiedpull-request-check-terraform.yml. - Legacy shim intact — combined status green including the branch-protection-required
Check AWS Terraform Code, alongsideTerraform Lint/Terraform Tests/Pre-Commit Checksand CodeQL.
Nice touch splitting the pre-existing readonly-test defect into its own well-documented fix: commit rather than burying it in the conversion.
Generated with Cursor Agent (Opus 4.8)
rakesh-gorige-nttd
approved these changes
Jul 21, 2026
rakesh-gorige-nttd
left a comment
There was a problem hiding this comment.
Clean copier-managed skeleton conversion — approving.
Verified at head (dcc96bc):
- Terraform interface untouched — root
main.tf/variables.tf/outputs.tf/versions.tfare not in the diff; thefeat!/breaking changelabel reflects CI/build-contract only, so downstream consumers need no code changes. - Copier pin —
_commit: 0.7.1. - Readonly test correctly wired and genuinely read-only — functional
TestLambdaFunctionModule→RunSetupTestTeardown+TestComposableComplete; readonlyTestLambdaFunctionModuleReadOnly→RunNonDestructiveTest+TestComposableCompleteReadOnly. The readonly impl does onlyGetFunction+ ARN/Name equality checks (no HTTP invoke). Functional builds on readonly first, then layers invoke assertions — functional is a strict superset of readonly. StaleTestLambdaLayerModulescaffold name fixed. - LCAF cleanup —
.lcafenvand legacypull-request-terraform-check-aws.ymlremoved; unified skeleton CI workflows in place. - Commit structure — good split between the
feat!:conversion and thefix:commit that addresses the pre-existing readonly-test defect surfaced by the newvalidate-readonly-test.shhook. - CI green — Pre-Commit, Terraform Lint/Tests, legacy status checks, and CodeQL all passing.
PR description is thorough and accurately documents both commits and the test plan.
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Converts this repository to the copier-managed skeleton layout, bringing its CI/CD tooling, linting configuration, and agent guidance in line with the rest of the Launch Terraform module library.
Jira: EN-3436
This PR contains two commits:
feat!: convert to copier-managed skeleton— the automated conversion viaupdater.sh, delivering updatedMakefile, GitHub workflows,.agents/reference docs,.tool-versions, and related tooling/config files. This is a breaking change for anyone relying on the previous hand-maintained CI setup. It intentionally does not touch anything undertests/.fix: implement real readonly test and rename copy-pasted test entrypoints— a required follow-up. The conversion delivered.github/scripts/validate-readonly-test.sh, a new pre-commit hook that enforces a testing convention this repo'stests/directory was already violating before this conversion — nobody was checking for it until now.tests/post_deploy_functional_readonly/main_test.gowas a byte-for-byte copy of the functional test: same entrypoint name, samelib.RunSetupTestTeardownrunner, same implementation function, including HTTP invocation of the Lambda function — none of which is valid for a read-only suite. This commit:TestComposableCompleteReadOnly(existence/attribute checks only, no invocation).TestComposableCompleteto call the read-only impl and layer the invoke assertions on top, so functional is a strict superset of readonly.lib.RunNonDestructiveTest.TestLambdaLayerModule(a different Lambda resource type) toTestLambdaFunctionModule/TestLambdaFunctionModuleReadOnly.It's a
fix:rather than folded into thefeat!:commit because it corrects a pre-existing test defect the conversion's own new tooling surfaced, not a change to the conversion itself.Test plan
make checkpasses locally (AWS_PROFILE=020127659860_AdministratorAccess AWS_REGION=us-east-2), including a real apply → assert → destroy cycle for the functional suite.validate-readonly-testhook passes.