# Task 3 — the activation matrix, and where each row's evidence comes from The plan's matrix is ten rows; the Compose contract is fifteen lanes; the in-process activation suite is nineteen classes. They are not three copies of one thing, so this records which artefact answers which row before anything is run. A row whose evidence is a passing unit test is recorded as that, not as a runtime lane. | # | Matrix row | Evidence | | --- | --- | --- | | 1 | five off | `off-local`, `off-dev`, `off-prod` lanes + `FiveAdapterOffInventoryTest` (bean/thread/endpoint inventory is in-process; a container cannot count beans) | | 2 | JPA only | `local-jpa` lane (db + app) | | 3 | Mongo only | `local-mongo` lane (mongo + rs-init + app) | | 4 | Messaging only | `local-messaging` lane; `local-messaging-outbox` additionally proves the relay's database dependency | | 5 | Notification + JPA, `INGEST_ONLY` | `local-notification-ingest`, and `local-notification-handoff` for the accept → restart → deliver-once half | | 6 | Notification + JPA, `SERVING` | `local-notification-serving` | | 7 | GraphQL only | `local-graphql` lane (keycloak + auth-smoke + graphql-smoke) | | 8 | relay on, dependency missing | **no lane** — a startup that must be *rejected* is an in-process contract: `DependencyErrorStartupContractTest`, `CapabilityDependencyValidatorTest`. The plan requires the *name* of the missing switch, not merely a failure. | | 9 | JPA + Mongo | `all-adapters` covers the both-on half; the two-implementations-of-one-port rejection is in-process (`CleanArchitectureTest` plus the composition tests), because it is a context-startup outcome | | 10 | five on | `all-adapters` lane | Rows 8 and 9 are deliberately not Compose lanes. Both are assertions that a context *refuses* to start for a stated reason, and a Compose lane can only observe that a container exited — which is the same observation for a missing switch, a bad password and a typo in a YAML key. Lanes with no matrix row of their own — `shared-infra-local`, `shared-infra-dev`, `prod-smoke` — carry Task 4's environment evidence rather than Task 3's activation evidence.