Skip to content

Specification Post-Implementation Review

Comparison of the specification against what was actually implemented.

Spec: Section 2.1 — ImageAssetBucket in BulkStoresStack. Section 2.2 — CDN + signing keys in PartitionImageCdnStack.

Actual: All three co-located in ImageStorageStack (PD-04). BulkStoresStack unchanged.

Reason: Cross-stack OAC circular dependency. Documented in PD-04. Specification updated post-implementation.

Spec: PartitionImageCdnStack / partition-image-cdn.ts.

Actual: ImageStorageStack / image-storage.ts.

Reason: Stack now contains bucket + CDN + signing keys — “ImageCdn” was too narrow. Renamed to reflect actual scope.

Spec: Section 4, file #13 — jest.config.ts.

Actual: jest.config.js (JavaScript).

Reason: Jest v30 cannot parse TypeScript config with moduleResolution: NodeNext in tsconfig.json.

Spec: Section 5 — snapshot tests for ImageStorageStack and BulkStoresStack.

Actual: Both removed/skipped.

  • ImageStorageStack: Lambda asset hashes differ between environments.
  • BulkStoresStack: serverAccessLogsBucket + BUCKET_OWNER_ENFORCED conflict.

Tracked in: infrastructure#433.

Spec: Section 1.3 — “inline Lambda in the construct file as a lambda_nodejs bundled function.”

Actual: Separate file constructs/inline-lambdas/generate-signing-key.ts bundled via NodejsFunction with entry pointing to the file. This follows the existing inline-lambdas/ pattern.

6. Presigning Role Assumption in Verification Script

Section titled “6. Presigning Role Assumption in Verification Script”

Spec: Section 3, Step 1 — sts:AssumeRole on presigning role.

Actual: --presign-role-arn made optional. The role’s trust policy restricts to EKS pod role only — admin credentials can’t assume it.

Spec: 22 files in section 4.

Actual: 22 files (matching), but partition-bulk-stores.ts was not modified (removed from scope) and generate-signing-key.ts was added. Net count unchanged.

SectionAccuracy
1.1 ImageAssetBucketHigh — construct implemented as specified
1.2 ImageAssetCdnHigh — minor fix needed for recordName
1.3 CloudFrontSigningKeyGroupMedium — handler pattern required rework
2.1 BulkStoresStackN/A — not modified (PD-04)
2.2 ImageStorageStackHigh — scope expanded to include bucket
2.3 partition.tsHigh — props adjusted for new stack scope
2.4 DNS FoundationHigh — ingress export fix needed
3 Verification ScriptHigh — presign-role-arn made optional
4 File SummaryHigh — matches with minor renames
5 Testing StrategyMedium — snapshots deferred, jest config format changed

Copyright: (c) Arda Systems 2025-2026, All rights reserved