# NK49 phase B: isolated KeyCape and restored OpenBao on one internal network
NK-WP-0049-T43. Drafted 2026-10-24. **Preparation only. This grants no authority,
starts nothing and is not T18 acceptance.** Every number marked *proposed* is a
suggestion for the owners, not a fact.
## Purpose
T18 needs a live consumer login against restored dependencies. The consumer is
secrets-engine's `secrets-engine-openbao` workload (SECRETS-WP-0015-T04): it obtains
a token from KeyCape, then logs in to OpenBao with the JWT role. Today the two
recovered pieces cannot meet:
| Piece | State | Network today |
| --- | --- | --- |
| Isolated original KeyCape (NK49 T18 attempt) | Verified 2026-10-23, receipt `16d72f7c…1651`, then destroyed | `--network none`; TLS served on its own loopback |
| Restored original OpenBao (RPF-WP-0064-T07) | Verified 2026-10-24, receipt `4e048dee…579d`, then destroyed | `--network none`; listener on `127.0.0.1:8200` only |
OpenBao's `keycape-services` JWT auth validates against `https://kc.coulomb.social/jwks`.
A networkless OpenBao proves configuration but cannot perform the login. Phase B is the
shared network that lets it.
## Proposed topology
```
docker network create --internal (no gateway, no published ports)
no other attachment · egress shown refused before admission
```
## Who owns what
| Step | Owner | Notes |
| --- | --- | --- |
| Create and tear down the internal network | *Proposed:* railiance-platform | Its design stub already says phase B is "a single `docker network create --internal` network". One creator avoids a double teardown. |
| Restore and unseal original OpenBao, keep it up for the window | railiance-platform | Adapter runs phase A, then does **not** tear down when phase B is admitted in the same window (its doc). Needs a listener on the internal address, not loopback only. |
| Start the isolated original KeyCape on that network | NetKingdom (this plan) | Needs a new variant of the T18 machinery; see below. |
## Decisions (answered 2026-10-27; decision `e4db6c9f`) and remaining owner items
Founder answers: 1 railiance-platform creates the network; 2 reissue via `letsencrypt-prod` once railiance-cluster confirms the duplicate count (no self-signed, no retained key); 5 one workload consumer suffices, no Authelia. Item 3 (secret custody) is secrets-engine's to propose and item 4 (ISRG trust) is confirmed in the owner rehearsal. The answers authorize nothing; windows and signatures stay separate.