# Changelog

## Score

- CAI 68 → 62 (-5.3)

## Lenses

- Code Health 92 → 92 (+0.0)
- Architecture 93 → 92 (-1.3)
- Maturity 64 → 64 (-0.6)
- Readiness 59 → 48 (-11.1)
- Security 100 → 100 (+0.0)
- Event Sourcing 100 → 100 (+0.0)
- Performance 73 → 73 (+0.0)

## Resolved (6)

- Documentation: written for insiders (Examples/JSONLogging/README.md)
- Duplicate intent between `LambdaManagedRuntime` and `LambdaRuntime`. Both types expose an `init` accepting a `Handler` and a `run()` method. It is unclear why two separate entry points exist for the same core functionality (running a Lambda handler). This suggests a copy-paste error or an incomplete deprecation of one type.
- Inconsistent naming convention for encoding/decoding operations. `LambdaJSONEventDecoder` uses `decode(Type, from:)` while `LambdaJSONOutputEncoder` uses `encode(Output, into:)`. While this mirrors standard Swift `Codable` patterns, the class names `LambdaJSONEventDecoder` and `LambdaJSONOutputEncoder` are verbose and inconsistent with the simpler `LambdaEventDecoder` and `LambdaOutputEncoder` (which are empty types in the list, suggesting they might be protocols or placeholders). If `LambdaEventDecoder` and `LambdaOutputEncoder` are protocols, the concrete implementations should follow a consistent naming scheme (e.g., `JSONEventDecoder` vs `LambdaJSONEventDecoder`).
- Off-boarding risk: anonymized user #1
- Redundant initializers. The generic `Encoder`/`Decoder` version and the specific `JSONEncoder`/`JSONDecoder` version overlap significantly. Since `JSONEncoder` conforms to `Encoder`, the generic version covers the specific one. Providing both creates confusion about which to use and increases maintenance burden without adding distinct capability.
- Redundant overloads with inconsistent naming intent. 'waitUntilFunctionActiveV2' and 'waitUntilFunctionExists' appear to be semantically similar or identical operations (waiting for a function to be ready), but are split into two distinct method families. Furthermore, each family has duplicate overloads for GetFunctionRequest vs String/Qualifier, which is acceptable, but the existence of two top-level methods for the same lifecycle state is confusing.

## New (5)

- Off-boarding risk: anonymized user #1
- Orphaned file (Sources/AWSLambdaRuntime/HTTPClient/ControlPlaneRequest.swift)
- Orphaned file (Sources/AWSLambdaRuntime/HTTPClient/ControlPlaneRequestEncoder.swift)
- Orphaned file (Sources/AWSLambdaRuntime/LambdaRequestID.swift)
- Orphaned file (Sources/AWSLambdaRuntime/Runtime/LambdaRuntime+Codable.swift)
