Brac POC — consolidated demo plan

Single consolidated demo plan for BRAC Bank — merged requirements from the original 9-section email and the v2 demo-scope PDF, with delivery, sequencing, and the live demo flow.

This page consolidates the two BRAC source documents into one plan: the requirements, the architecture, what we reuse vs build, the per-item delivery, the phase sequencing, and the live demo flow.

Operating principle:

  • Demo apps run on OpenShift (spoke-dc-v6). Not on the docker-runtime-vm we built earlier for the broader app-dev path.
  • dc-lab platform VMs are reused as-is. SigNoz, DefectDojo, Kafka KRaft, Redis Sentinel, WSO2 APIM/IS, Jenkins, GitLab, Nexus, Trivy — no Helm/operator rebuild of services that already run on lab VMs.
  • New work is OCP-side: the demo apps + Service Mesh + OTel collector + integration glue (ESO bindings, Routes, NetworkPolicies, mesh canary, the few new operators).
  • The live demo is browser-driven. A single-page app (“BRAC POC Demo Dashboard”) served by the MFE Router has one panel per demo requirement. Each panel triggers the actual backend action (canary calls, mTLS verify, Redis primary kill, trace storm, Nexus pull) and renders the result inline. Native admin UIs (Kiali, SigNoz, WSO2 Publisher, DefectDojo, RHACS) are linked or iframed from the SPA; no terminal walls during the demo.

The two source documents (preserved verbatim for the audit trail):

  • Requirements email — the 9-section tender qualifying scope.
  • v2 Demo-Scope PDF (received 2026-05-11) — 8-item live-demo subset, adds Service Mesh + mesh canary, includes the MFE/BFF reference architecture image.

Merged requirements

The union of both documents, deduplicated, priority-ordered for the live demo. Live-demo priorities come from the v2 PDF; the rest are tender-qualifying scope from the original email.

#ComponentSourcePriority
1API Gateway (WSO2 APIM, distributed CP/DP split, HA, external DBs, policies, IS as Identity Key Manager)bothDemo
2IAM (WSO2 IS, SAML + OIDC SSO, Identity Federation, hardening)bothDemo
3Service Mesh + mTLS (“Comply MTLS” — strict mTLS between services)v2 PDF only — NEWDemo
4Canary deployment via service mesh (replaces the original email’s NGINX header-canary)v2 PDF (replaces email §8)Demo
5Observability + Kafka (HIGH PRIORITY) — OTel SDK + non-SDK, OTel→Kafka→SigNoz, trace sampling + log filtering + metrics routing, ClickHouse hot/cold, 4 dashboards (app perf, .NET runtime, system, tracing)bothDemo (HIGH)
6Redis HA (Sentinel topology, hard-kill failover with mock client reconnect — reused from the existing dc-lab VM Sentinel cluster; mock client runs on OCP)bothDemo
7SigNoz (the existing observability backend; explicitly named in v2)bothDemo
8Nexus OSS (multi-format repos — Maven, PyPI, npm, Docker — three-endpoint split with HA + Backup)bothDemo
9MFE Router + BFF Router + layered TLS (per the v2 architecture diagram: User → MFE Router → WSO2 API GW → BFF Router → Mesh → Identity → Product, with two TLS-terminate hops)v2 PDF only — NEWDemo (architectural)
10Open Liberty demo workloads (in-mesh services with MicroProfile health + metrics)email §8 (NGINX canary removed, mesh canary replaces)Demo
11OpenShift Platform foundation (Terraform 3-node cluster, ODF Block + Object)email §1Tender
12Compliance Operator + PCI-DSS scan + remediation reportemail §1Tender
13RHACS Critical-vuln deployment-block policyemail §1Tender
14Prometheus/Grafana custom alerts + Loki log forwarding (System + Infrastructure + Audit to external)email §1Tender
15Trivy SCA + SBOM single dashboardemail §5Tender
16GitLab + Jenkins + ArgoCD chain (HA + DC-DR, monorepo conditional builds, hybrid CD)email §4Tender
17Kafka Schema Registry + Connect + DLQ (the Kafka cluster itself is item 5)email §7Tender
18JBoss EAP managed domainemail §9Tender

Original email also mentions “Support Service for 13 Products” but the PDF is truncated at section 9 — sections 10-13 are not captured. Open question to BRAC.

Architecture (consolidated)

The v2 PDF’s reference image translated to OCP + dc-lab terms:

User (browser)
  │ HTTPS (TLS terminate #1 — OCP Route + cert-manager)

MFE Router  ── serves ── ► BRAC POC Demo Dashboard (SPA)
  │                          │   one panel per demo req
  │ HTTP                     │   (canary control, redis kill,
  ▼                          │   mTLS verify, trace storm, etc.)
WSO2 API GW              ◀──┘
  │ HTTPS (TLS terminate #2 — existing WSO2 VM, lab CA)

BFF Router  ── exposes ── ► /demo/* endpoints (canary, mtls-check,
  │                          redis-kill, trigger-traces, nexus-pull)
  │ HTTP

Mesh boundary ─────┐
  │ mTLS strict    │
  ▼                │
Identity ◀────── WSO2 IAM (lateral, token introspection / authz callout — existing WSO2 IS VM)
  │ mTLS           │
  ▼                │
Product            │
  │                │
  └─[mesh observability sidecars → OTel Collector → existing Kafka VMs → existing SigNoz VM + ClickHouse]

Pieces and their hosts:

LayerComponentHost
Edge TLSOCP Route + cert-manager + lab CAspoke-dc-v6
MFE RouterNGINX Deployment (serves the SPA static bundle + reverse-proxies API calls)brac-demo-frontend ns on spoke-dc-v6
Demo Dashboard SPAStatic React app (or Astro static build) with one panel per demo reqbrac-demo-frontend ns — served by the MFE Router
API GatewayWSO2 APIM (existing distributed CP/DP setup)dc-lab WSO2 VMs
BFF RouterNode or Liberty Deployment exposing /demo/* endpoints for the SPAbrac-demo-frontend ns
Mesh data planeOSSM 3 ambientbrac-demo-services ns (label istio.io/dataplane-mode=ambient)
Identity serviceOpen Liberty OpenLibertyApplication v1+v2 (canary’d)brac-demo-services ns
Product serviceOpen Liberty OpenLibertyApplicationbrac-demo-services ns
IAM (authz callouts)WSO2 IS (existing)dc-lab WSO2 IS VM
Trace + log pipelineOTel Collector (Gateway) → Kafka → SigNozCollector on brac-demo-otel ns; Kafka + SigNoz on existing dc-lab VMs

The BRAC POC Demo Dashboard (SPA)

A single browser app is the demo cockpit. The evaluator opens one URL and clicks through eight tabs. Each tab triggers real backend calls against the actual demo stack and renders the result inline. Native admin UIs (Kiali, SigNoz, WSO2 Publisher, DefectDojo, RHACS, OCP console) are either iframed inside a panel or opened in a new tab via a button — so the SPA stays the orchestrating surface, not the only surface.

Stack: React 18 (or static Astro build for parity with the zahid blog) + Tailwind. Diagrams reuse @xyflow/react (Whiteboard) for the mesh request graph. Live charts via Recharts. WebSocket or Server-Sent Events for live updates (Redis primary changes, request streams).

Served by: MFE Router (NGINX) as a static bundle at /. API calls go through the MFE Router’s reverse-proxy to the BFF Router’s /demo/* endpoints.

Panels (one per v2 demo requirement):

TabWhat you see in the browserWhat it actually doesBackend it touches
1. API Gateway”Try the sample API” button → response viewer with status, latency, full request/response. Inline link “Open WSO2 Publisher” button.Calls a published API on the WSO2 API GW with a demo key.dc-lab WSO2 APIM.
2. IAMCurrent-user panel: name, claims, token expiry, federated source. Buttons: Logout, Re-login (SAML), Re-login (OIDC), Switch IdP.OIDC + SAML SP flows against WSO2 IS. Token introspection on every render.dc-lab WSO2 IS.
3. Service Mesh + mTLSLive request graph (React Flow) of the mesh — identity → product nodes with green edges when mTLS verified, red when not. “Verify mTLS now” button.BFF calls a backend helper that runs the equivalent of istioctl authn tls-check via Istiod’s API and returns MUTUAL / PERMISSIVE / NONE per edge.OSSM control plane on spoke-dc-v6.
4. Canary via meshSlider 0-100% to set v1/v2 split. “Send 100 requests” button. Live bar chart counting v1 hits vs v2 hits as they arrive. Header toggle “x-canary: beta” for sticky-to-v2.SPA fires 100 parallel fetch() calls to identity-svc. The Istio VirtualService routes per the slider’s setting (BFF dynamically updates the VS via Kubernetes API, or the slider just maps to the canary header).identity-svc v1 + v2 + Istio VirtualService.
5. Observability + Kafka (HIGH PRIORITY)“Trigger 50 traces” button → fires varied requests (some error, some slow, some OK). Inline iframe of the SigNoz “service map” view scoped to the BRAC services. Buttons: open .NET runtime dashboard, app perf, system, tracing — each in a new tab.SPA fires requests through BFF → mesh → identity → product. Traces propagate through Istio→OTel Collector→Kafka topics→SigNoz. ClickHouse queries surface in the SigNoz iframe.OTel Collector + existing Kafka + existing SigNoz.
6. Redis HAStatus panel: current primary host (live, polling), replica health. Live read/write rate counter (driven by a background trickle of dummy ops). Big red button “Hard-kill primary”. Watch primary swap, counter dip, recovery.BFF exposes POST /demo/redis/kill-primary that runs redis-cli -h <primary> DEBUG SEGFAULT over the lab /24. Background polling via Sentinel +switch-master topic detects the swap.existing Redis Sentinel VMs.
7. SigNozIframe of the SigNoz dashboards (4 tabs) or four large “Open dashboard” cards.SigNoz itself, browser-native.existing SigNoz VM.
8. Nexus OSSList of demo artifacts across Maven/PyPI/npm/Docker. “Pull this” buttons → backend performs the pull from Nexus, returns digest + size + format-specific metadata. Inline iframe of the Nexus browse UI.BFF calls Nexus REST API (and shells out to mvn/npm/docker pull in a sandbox pod for the real-format demo).existing Nexus three-endpoint split.

Tender-item tour (bottom of the SPA): smaller cards linking out to the native UIs — Compliance scan results (OCP console), RHACS policy violations (RHACS UI), DefectDojo SBOM view, the BRAC monorepo + Jenkins build page (GitLab + Jenkins UIs), JBoss admin console (port 9990).

Why one SPA, not one app per panel: the evaluator gets a single mental model — open the URL, walk top-to-bottom. The story is the SPA itself, not the cobbled tooling underneath. Every panel renders live data, so the demo is always real-time, not pre-recorded.

Target environment

PlaneHostStatus
OpenShift demo plane (new namespaces)spoke-dc-v6Existing cluster; new namespaces only
dc-lab platform planedc-lab VMs (HAProxy / PDNS / MinIO / Vault / Nexus / GitLab / Jenkins / SigNoz + ClickHouse / Kafka KRaft / Redis Sentinel / WSO2 APIM + IS / Trivy / DefectDojo)Existing; reused as-is, no rebuild
Hub control planehub-dc-v6 (ACM + GitOps pull control plane)Existing
Bootstrap automationscripts/rebuild/ (profile-aware after #244)Existing; demo’d as the “Terraform 3-node automation” requirement

New tenant namespaces created for the POC, on spoke-dc-v6:

  • brac-demo-frontend — MFE Router, BFF Router, optional demo SPA.
  • brac-demo-services — in-mesh Open Liberty demo services (Identity, Product), OSSM ambient.
  • brac-demo-otel — OTel Collector (Gateway).
  • brac-demo-jboss — planned JBoss EAP managed-domain demo (separate from mesh services). For the delivered bank-employees chat implementation, see JBoss Chat app.
  • brac-demo-evidence — scratch / artifacts during the live demo.

Reuse vs build matrix

ComponentReuse from dc-lab (as-is)Build new for POC
API Gateway (WSO2 APIM)WSO2 APIM CP/DP VMs + their DB backends (per ADR 0008)OCP-side: ESO secret pulling APIM admin/key Manager credentials from Vault; demo SP and OIDC client registrations
IAM (WSO2 IS)WSO2 IS VM with existing SAML + OIDC + Federation setupDemo SP webapp, demo OIDC client, demo Federation IdP source registration
Service Mesh + mTLSOSSM 3 ambient mode already installed on spoke-dc-v6 (DEV-OCP-1.4 #178)Scope to brac-demo-services; PeerAuthentication.mtls.mode=STRICT; Kiali dashboard scoped view
Mesh canaryNone — new pattern (replaces NGINX header-canary from email §8)VirtualService + DestinationRule with header-based override (x-canary: beta → v2) + 90/10 default split
Observability + KafkaKafka KRaft VMs (kafka-0/1/2, ADR 0007), SigNoz VM (signoz-0) + ClickHouse, NooBaa OBC pattern for cold archiveOTel Collector (Gateway) on brac-demo-otel with tail_sampling + filter + routing processors; sample microservice (.NET preferred) with + without SDK; 4 dashboards (app perf, .NET runtime, system, tracing) authored in SigNoz
Redis HARedis Sentinel VMs (ADR 0006) — used as-is for the demoOCP-side mock client only — a small Deployment in brac-demo-evidence that uses redis-py Sentinel to connect to the lab Sentinel pool; demonstrates client reconnect after a VM-side hard-kill. No new Redis on OCP.
SigNozSigNoz VM with ClickHouse + retentionNone — the four BRAC dashboards are authored against the existing SigNoz
Nexus OSSExisting Nexus three-endpoint split (mirror-registry / docker-group / app-registry, ADR 0019)None — demo the existing setup
MFE Router + BFF RouterNoneNGINX Deployment for MFE (serves the SPA + reverse-proxies API); Node Deployment for BFF exposing /demo/* endpoints; cert-manager Route at the edge
Demo Dashboard SPANoneNew React + Tailwind SPA in brac-demo-frontend with 8 panels (API GW, IAM, Mesh+mTLS, Canary, Observability, Redis, SigNoz, Nexus). Static bundle served by NGINX. React Flow for the mesh graph, Recharts for live counters, SSE for live primary/swap updates.
Open Liberty demo appsOpen Liberty Operator + Liberty hello-world (DEV-OCP-5.1 #200)identity-svc v1 + v2 (canary’d) + product-svc, all OpenLibertyApplication CRs with MicroProfile features enabled
OpenShift platform foundationspoke-dc-v6 cluster, ODF (Block + Object), all baseline operatorsWalkthrough of scripts/rebuild/ Terraform/Ansible as the “automation” demo (no fresh cluster needed)
Compliance / PCI-DSSScanSettingBinding ocp4-pci-dss-4-0 already running on spoke-dc-v6 (ADR 0020)Filtered view of latest ComplianceCheckResult + ComplianceRemediation, exported as a report artifact
RHACS critical-blockRHACS Central + Sensor + Scanner V4 already runningPolicy scoped to brac-demo-* namespaces; intentionally-vulnerable image triggers scale-to-zero
Prom alerts + Loki forwardingCluster Observability Operator + LokiStack + ClusterLogForwarder already runningThree BRAC-scoped PrometheusRule CRs; ClusterLogForwarder output to an external mock destination
Trivy SCA + SBOM dashboardTrivy server VM, DefectDojo VM, today’s Jenkins pipeline templates/jenkinsfiles/trivy-defectdojo-import.groovy (commit b84037c)Extend pipeline to add --format cyclonedx SBOM stage; DefectDojo product with SCA + SBOM engagements side-by-side
GitLab + Jenkins + ArgoCD chainGitLab VM, Jenkins single VM (ADR 0009), ArgoCD instances (hub + spoke-local)BRAC monorepo (apps/brac-payment-api/, apps/brac-risk-engine/) + conditional Jenkinsfile + hybrid CD pipeline; DC-DR as documented procedure + rehearsed restore
Kafka Schema Registry + Connect + DLQKafka KRaft VMsSchema Registry (Apicurio) deployed alongside Kafka or on OCP as a client; Kafka Connect with mock Source/Sink + DLQ topic
JBoss EAP managed domainNone (not in dc-lab)EAP Operator on OCP, Domain Controller + Host Controller StatefulSets + 2 Server Groups in brac-demo-jboss

Phase sequencing

Block A items are reuse-walkthroughs (no new code; just narration + screencasts). Block B is the actual build work, sequenced so highest-priority demo items land first. The Demo Dashboard SPA runs as a parallel track from P1 onward — each backend capability ships with its SPA panel ready.

PhaseWall-clockWhat landsDemo’able by end
P0: Block A foundation walkthroughsDay 1-2Cluster provisioning narrative + ODF + Compliance + RHACS + Prom alerts + Loki forwarder, all with BRAC-scoped views appliedCluster + compliance + RHACS + log forwarding demos (linked from the SPA later)
P1: Observability + Kafka pipeline + SPA scaffold (HIGH PRIORITY)Day 3-5OTel Collector deployed; sample microservice w/+w/o SDK; pipeline OTel→Kafka→SigNoz wired; 4 dashboards authored. SPA scaffold + panel 5 (Observability) shipped.Hit “Trigger 50 traces” in the SPA → traces appear in the embedded SigNoz iframe
P2: Service Mesh + mTLS + canary + SPA panels 3-4 (v2 priority)Day 5-7OSSM scoped; STRICT mTLS; VirtualService canary on identity-svc v1/v2; Istio→OTel trace export. SPA panels: Mesh+mTLS (live React Flow graph), Canary (slider + bar chart).Live canary slider in the SPA drives traffic shift; Kiali iframe shows mesh; “Verify mTLS now” button returns MUTUAL
P3: MFE + BFF + WSO2 wiring + SPA panels 1-2Day 7-10MFE Router (NGINX edge serving the SPA), BFF Router (/demo/* endpoints), egress NetworkPolicy to WSO2 VMs, SAML + OIDC + Federation flows. SPA panels: API Gateway (Try-it), IAM (user/claims).Full user → MFE → SPA → BFF → API GW → mesh → Identity → Product flow visible in the browser
P4: Redis client + Nexus + SPA panels 6-8Day 10-12OCP-side Redis mock client + background polling for +switch-master; SBOM pipeline extension; BRAC monorepo + conditional Jenkinsfile; hybrid CD. SPA panels: Redis (kill button + live status), SigNoz (iframe), Nexus (artifact list + pull).”Hard-kill primary” in the SPA triggers VM-side kill; live status panel shows swap
P5: JBoss managed domain + tender-tour cards + evidence packDay 12-14EAP Operator + Domain/Host Controllers + Server Groups; deploy + reload demo. SPA bottom: tender-item card grid linking to Compliance, RHACS, DefectDojo, GitLab, Jenkins, JBoss admin. Full evidence pack written.One-click access from the SPA to every native UI; all 18 demo steps recorded

Live demo flow — browser-only

The evaluator opens one URL (the SPA) and walks down the page. Every panel is interactive; nothing requires terminal access. The full session is ~90 minutes — about 5-10 min per panel, with the HIGH-PRIORITY Observability + Kafka section getting the longest slot.

Pre-demo morning-of: all panels render with green health pips. The Demo Dashboard footer shows a Last-Validated timestamp ≤ 1 hour old.

Walk order (the SPA tabs from left to right):

  1. API Gateway (5 min) — click “Try the sample API” → response viewer fills in. Open “WSO2 Publisher” tab from the panel; show the policy + key + IS-as-Key-Manager link. Back to SPA.
  2. IAM (10 min) — Click Logout → Re-login via OIDC (browser redirect to IS, return with token visible in the user panel). Repeat via SAML. Click “Switch IdP” → Federation to a second IdP source. The user panel updates each time, with claims + federated-source live.
  3. Service Mesh + mTLS (10 min) — Live React Flow graph already showing identity → product green edges. Click “Verify mTLS now” → button flashes, returns MUTUAL inline. Open Kiali tab from the panel for the full mesh-wide view.
  4. Canary via mesh (5 min) — Slider at 90/10 by default. Click “Send 100 requests” → bar chart fills in real time (~90 to v1, ~10 to v2). Toggle the “x-canary: beta” sticky header → next 100 all land on v2. Slide to 50/50 → next 100 split evenly.
  5. Observability + Kafka — HIGH PRIORITY (15 min) — Click “Trigger 50 traces” → varied requests fire. Embedded SigNoz iframe shows the service map filling in. Click “Open .NET Runtime dashboard” → opens dedicated tab showing GC heap moving with the load. Same for App Perf, System, Tracing. Mention sampling/filtering/routing (visible in the trace counts).
  6. Redis HA (5 min) — Status panel shows current primary (e.g., redis-0) + replicas. Live read/write rate ticking (~50/s). Click the big red “Hard-kill primary” button. Status panel switches to redis-1 in ~15 seconds. Rate counter dips to zero briefly, then resumes. Sentinel +switch-master event surfaced inline.
  7. SigNoz (5 min) — Already mostly seen in step 5. Click the four dashboard cards for a coherent tour. Use the natural flow to show Kafka topic lag (also in SigNoz).
  8. Nexus OSS (5 min) — Artifact list shows 4 entries (one each Maven / PyPI / npm / Docker). Click “Pull this” on each — backend returns digest + size + format-specific metadata. “Open Nexus browse” link to the existing Nexus UI for the three-endpoint split.

Tender-item tour (15 min, bottom of the SPA):

Card grid links out to native UIs — one click each:

  1. OCP cluster + ODF — opens the OCP console (Storage page).
  2. Compliance + PCI-DSS — opens the OCP console ComplianceCheckResult view.
  3. RHACS critical-block — opens RHACS Violations page; tab back to SPA, click “Try to deploy CVE-rich image” → policy hit toast appears.
  4. Trivy + DefectDojo (SCA + SBOM) — opens DefectDojo product view with both engagements side-by-side.
  5. BRAC monorepo + conditional Jenkinsfile — opens GitLab + Jenkins build page; demonstrate by pushing a change to apps/brac-payment-api/ and watching only that build trigger.
  6. Hybrid CD — Jenkins page shows the same build artifact deployed to both an OCP Liberty CR and one existing VM target.
  7. Kafka Schema Registry + DLQ — small inline panel in the SPA: “Produce valid Avro” / “Produce invalid Avro” buttons; reject message shown inline. “Inject poison record” → DLQ topic count increments.
  8. JBoss EAP managed domain — opens the JBoss admin console (port 9990). Show server-group list; trigger a Server Group A rolling reload from the SPA; B keeps serving (visible in the console).

Wrap (5 min): SPA footer has a “View evidence pack” link → reports/brac-poc/. Final slide: thank-you + open Q&A.

Evidence pack

Per workstream, a folder in reports/brac-poc/<NN>-<slug>/:

  • 1-page summary of what was demonstrated + which dc-lab assets it consumed.
  • CRs + ConfigMaps applied to spoke-dc-v6 (committed to platform-gitops under clusters/spoke-dc-v6/brac-demo/).
  • Screenshots of the relevant UIs (RHACS, SigNoz dashboards, WSO2 Publisher, DefectDojo, Kiali mesh graph, JBoss CLI).
  • Recorded terminal sessions (asciinema or script) for the live demos.
  • Logs from the critical moments (Sentinel +switch-master, RHACS policy hit, canary traffic shift, mTLS handshake, Schema Registry reject).

No secret values, no kubeconfigs, no credential bytes in the evidence pack. Vault paths referenced by name only.

Open questions

  1. OCP cluster choice: use existing spoke-dc-v6 (default — fastest) or stand up a separate POC cluster (more demonstrable for the Terraform-automation requirement but adds 2-3 days)?
  2. OCP version pin: confirm BRAC’s evaluation tools work against the current spoke-dc-v6 minor; if they want a specific version, plan a controlled upgrade or a side cluster.
  3. JBoss EAP image entitlement: valid pull secret for the EAP Operator’s images? Otherwise fall back to community WildFly.
  4. WSO2 license / image entitlement: existing WSO2 VMs run fine. Confirm no new license needed for the POC.
  5. DC-DR scope: default is “documented procedure + one rehearsed restore in a side namespace” rather than a second live cluster. Confirm.
  6. Truncated requirements PDF: original email mentions “13 Products” but PDF ends at section 9. Request sections 10-13 before P5 finalizes.
  7. MFE / BFF stack choice: NGINX-only for MFE, or a real micro-frontend aggregator (Module Federation / single-spa)? BFF as Liberty (Java ecosystem fit) or Node (lighter)?
  8. “Comply MTLS” interpretation: v2 PDF says “MTLS (Commply MTLS / Service mesh)”. Likely typo for “Compliance-grade mTLS” — strict mTLS + FIPS-ish posture + audit. Confirm.
  9. Demo Dashboard SPA stack choice: React 18 (familiar, lots of components) vs. static Astro build (matches the zahid blog stack, simpler hosting). Default: React for the interactive panels (live charts, SSE, React Flow), but consider Astro + React islands if zero-deps is a goal.
  10. Redis kill-primary auth model: the SPA’s “Hard-kill primary” button calls a BFF endpoint that runs redis-cli DEBUG SEGFAULT against the lab Sentinel pool. Should the BFF authenticate as a specific Vault-stored user, or is the BFF’s own service identity sufficient? Tradeoff: audit trail vs simplicity.

Resolved:

  • (2026-05-11) Redis HA stays on existing VM Sentinel — no OCP-side Redis deployment. OCP carries only a small mock client to demonstrate Sentinel reconnect.
  • (2026-05-11) Demo is browser-driven via a single SPA. Live demo cockpit served by the MFE Router. One panel per requirement, real backend calls, no terminal walls.

What’s intentionally not in this plan

  • No rebuild of dc-lab services on OCP. SigNoz, DefectDojo, Kafka KRaft, Redis Sentinel, WSO2 APIM/IS, Jenkins, GitLab, Nexus, Trivy — all reused on their existing VMs.
  • No deployment of demo apps to docker-runtime-vm. That path exists for the broader app-dev direction (project_app_dev_direction.md), but for this POC the demo apps run on OCP.
  • No second OCP cluster unless Q2 = yes.
  • No NGINX-based header canary at the application tier — replaced by mesh canary per v2 PDF (the MFE Router still has NGINX hardening: HSTS + custom 404 + rate-limit on login).
  • No new ADRs unless a load-bearing direction changes (e.g., adopting OCP-native Redis or migrating Kafka off VMs as strategic direction beyond the demo).
  • Sections 10-13 of the original requirements PDF — not in scope until we see them.

Last reviewed: 2026-05-11