Cabin Admin

Hardening + Testing Dashboard

Internal visibility for what is hardened, what UI we have templatized, and which flows we have validated in practice.

Testing / hardening status

Search-only beta scope lock

HARDENED

Booking endpoints gated behind beta lock; booking calls return controlled 501 while search remains available.

Evidence: Scope-lock middleware + /v1/scope-lock/status + tests

Friend beta access controls

HARDENED

Token-based friend access path validated in hardening smoke checks.

Evidence: validate-hardening / launch-gate checks

Multilingual error surface

HARDENED

EN/JA/ES support with explicit fallback and language detection coverage.

Evidence: Agent + i18n test suites (34 tests, 100% scripted accuracy target)

Intent disambiguation + ambiguity handling

HARDENED

Ambiguous requests routed into clarification flow before search execution.

Evidence: P0 hardening criteria + smoke validation

Rate limiting + abuse controls

HARDENED

API-side protections included in hardening checks to prevent burst abuse in beta.

Evidence: hardening-smoke + launch-gate scripts

Error resilience

HARDENED

Deterministic fallback/error responses verified in launch gate validation.

Evidence: scripts/validate-hardening.js + launch-gate-test.sh

Templatized UI components

Generative UI template

JsonRenderFlightComparison

Guardrailed JSON-render schema for flight comparison output with stable UI contract.

Reusable component primitives

ComparisonCard / FlightRow / InfoBadge / ActionButton

Templatized primitives used to render structured results in chat/demo UI.

Landing simulation component

GroupChatMockup

Reusable WhatsApp/Telegram-style simulation block for retail-facing storytelling.

Scenario templates

ChatDemo flow blocks

Prompt-to-result scenarios (friends trip, family trip, multi-leg, weekend) with reusable state machine.

Experience templates

Route split wrappers

Single app, route-based composition: / (retail), /agents (MCP/agent dev), /mcp alias.

Flows we have real experience with

  • Live flight search sweeps across multiple stopover strategies and destination flexibility windows
  • Provider switching + validation (Duffel ↔ Amadeus) with runtime verification of returned offer shape
  • Baggage-aware filtering and fare sanity checks for group scenarios
  • Image/card rendering from search results for chat-ready presentation
  • Search-only beta readiness checks with deterministic pass/fail gates
  • Monorepo deployment flow for unified web + api workstream

Graphical template examples

Observed itinerary comparison card (live)

{
  "trip": "Penang → Athens → ETHcc Cannes",
  "options": [
    { "label": "Best: Qatar via Doha", "total": "~€440", "segments": 3 },
    { "label": "Alt: Etihad via Abu Dhabi", "total": "~€422", "segments": 2 },
    { "label": "Alt: Emirates via Dubai", "total": "~€492", "segments": 2 }
  ],
  "note": "ATH → NCE alternatives + layover guidance"
}

This is based on the real output style you shared.

Live-style preview (real format)

Penang → Athens → ETHcc Cannes

ETHcc: Mar 30 - Apr 2 | Leave Penang: ~Mar 4-5

Best: Qatar via Doha~€440 total

1) PEN → KUL · Mar 4-5 · ~€25

2) KUL → ATH · QR845 · 13h45m, 1 stop DOH · €315

✓ Best KUL→ATH: single Doha stop, arrives 6pm

Alt: Etihad via Abu Dhabi~€422 total

KUL → ATH · EY487 · 20h, 1 stop AUH (overnight)

Alt: Emirates via Dubai~€492 total

KUL → ATH · EK343 · 19h40m, 1 stop DXB

Quick test commands

pnpm --filter cabin-web build

pnpm --filter cabin-api validate:hardening

pnpm --filter cabin-api check:beta-readiness

pnpm --filter cabin-api test:validation