# Changelog

## Score

- CAI 51 → 58 (+7.1)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

## Lenses

- Code Health 86 → 86 (-0.1)
- Architecture 99 → 94 (-5.6)
- Maturity 53 → 53 (-0.1)
- Readiness 85 → 85 (+0.0)
- Security 27 → 42 (+15.3)
- Domain Modelling 92 → 91 (-1.4)
- Event Sourcing 100 → 100 (+0.0)
- Performance 100 (new)

## Resolved (14)

- Change coupling: delete.rs ↔ list.rs (implementations/rust/ockam/ockam_command/src/tcp/outlet/delete.rs)
- Change coupling: project.rs ↔ util.rs (implementations/rust/ockam/ockam_api/src/nodes/connection/project.rs)
- Change coupling: util.rs ↔ util.rs (implementations/rust/ockam/ockam_command/src/operation/util.rs)
- Change-coupling hub: enroll.rs → addon.rs, space.rs, subscription.rs (implementations/rust/ockam/ockam_api/src/orchestrator/enroll.rs)
- Documentation: written for insiders (implementations/rust/examples/mitm_node/README.md)
- Edited copy of a member (18 corresponding lines) (implementations/rust/ockam/ockam_api/src/multiaddr_resolver/local_resolver.rs)
- Edited copy of a member (22 corresponding lines) (implementations/rust/ockam/ockam_api/src/control_api/backend/entrypoint.rs)
- Members sharing a duplicated core (12 members, 50+ identical tokens) (implementations/rust/ockam/ockam_api/src/orchestrator/ai_platform/node_service_client.rs)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (implementations/rust/ockam/ockam_abac/src/policy/storage/resource_policy_repository_sql.rs)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (implementations/rust/ockam/ockam_api/src/authenticator/credential_issuer/credential_issuer_worker.rs)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (implementations/rust/ockam/ockam_command/src/secure_channel/listener/list.rs)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (implementations/rust/ockam/ockam_transport_ble/src/router/mod.rs)
- Members sharing a duplicated core (9 members, 50+ identical tokens) (implementations/rust/ockam/ockam_node/src/storage/database/migrations/node_migrations/rust/postgres/migration_20250407100000_sqlite_initialization.rs)
- Off-boarding risk: anonymized user #1

## New (60)

- Change coupling: addon.rs ↔ enroll.rs (implementations/rust/ockam/ockam_api/src/orchestrator/addon.rs)
- Change coupling: enroll.rs ↔ space.rs (implementations/rust/ockam/ockam_api/src/orchestrator/enroll.rs)
- Confusingly similar methods for retrieving identity information. `get_named_identity` vs `get_named_identity_or_default` vs `get_identity_by_optional_name` vs `get_identifier_by_optional_name`. It is unclear when to use 'optional' vs 'default' vs direct lookup, and whether the return type is the full Identity, just the Identifier, or a NamedIdentity struct.
- Duplicate functionality for creating relays. `Node` has `create_relay` and `create_static_relay`, while the `RemoteRelay` type also exposes `create` and `create_static` with nearly identical signatures (except `RemoteRelay` takes `Context` explicitly). This creates confusion about whether to use the Node method or the RemoteRelay static method.
- Duplicated block (10–11 lines × 3) (implementations/elixir/ockam/ockam_kafka/lib/interceptor/protocol/metadata/response/parser.ex)
- Duplicated block (12 lines × 2) (implementations/elixir/ockam/ockam_kafka/lib/interceptor/protocol/metadata/response/parser.ex)
- Duplicated block (13 lines × 2) (implementations/elixir/ockam/ockam_kafka/lib/interceptor/protocol/parser.ex)
- Duplicated block (13 lines × 3) (implementations/elixir/ockam/ockam/lib/ockam/examples/session/count_to.ex)
- Duplicated block (15 lines × 2) (implementations/elixir/ockam/ockam/lib/ockam/stream/client/consumer.ex)
- Duplicated block (16–17 lines × 2) (implementations/elixir/ockam/ockam_kafka/lib/interceptor/protocol/metadata/request/parser.ex)
- Duplicated block (24 lines × 2) (implementations/elixir/ockam/ockam/lib/ockam/examples/messaging/ordering.ex)
- Duplicated block (25 lines × 2) (implementations/elixir/ockam/ockam/lib/ockam/examples/messaging/reliable_deduplication.ex)
- Duplicated block (3–10 lines × 3) (implementations/elixir/ockam/ockam_kafka/lib/interceptor/protocol/metadata/response/parser.ex)
- Duplicated block (5 lines × 2) (implementations/elixir/ockam/ockam/lib/ockam/mini_cbor.ex)
- Duplicated block (5 lines × 2) (implementations/elixir/ockam/ockam_kafka/lib/interceptor/kafka_interceptor.ex)
- Duplicated block (5 lines × 2) (implementations/elixir/ockam/ockam_kafka/lib/interceptor/protocol/metadata/response/formatter.ex)
- Duplicated block (5 lines × 2) (implementations/elixir/ockam/ockam_kafka/lib/interceptor/protocol/metadata/response/parser.ex)
- Duplicated block (6 lines × 2) (implementations/elixir/ockam/ockam/lib/ockam/protocol/stream.ex)
- Duplicated block (6 lines × 2) (implementations/elixir/ockam/ockam_kafka/lib/interceptor/protocol/metadata/response/formatter.ex)
- Duplicated block (7 lines × 2) (implementations/elixir/ockam/ockam/lib/ockam/transport/tcp/address.ex)
- …and 40 more
