Skip to main content

SERVICE_READINESS — lock-integration-service

Bundle: SERVICE_OVERVIEW · SECURITY_MODEL · OBSERVABILITY · TESTING_STRATEGY · FAILURE_MODES · DEPLOYMENT_TOPOLOGY

Cross-cutting: docs/standards/DEFINITION_OF_DONE, docs/standards/SERVICE_TEMPLATE — SERVICE_READINESS.

A go/no-go scorecard for shipping any version of lock-integration-service to production. Reviewed at the release readiness review chaired by the platform lead.

1. Tier definitions

TierMeaning
MVP-InternalBeta with internal hotel pilot (≤ 1 property), full feature set behind a feature flag, vendor sandboxes only
MVP-GAFirst paying tenant in production, single region, single vendor (TTLock or Salto)
GA-Multi-VendorTwo or more vendor adapters in production for the same tenant
GA-OfflineElectron offline-issuance path enabled in production
GA-Multi-RegionEU-residency tenants live

2. Readiness checklist

DomainItemMVP-InternalMVP-GAGA-Multi-VendorGA-OfflineGA-Multi-Region
FunctionalLockPort implemented, all canonical operations
At least one vendor adapter passing contract suite≥ 2 ✅≥ 2 ✅≥ 2 ✅
Issue saga (reservation.confirmed → key) end-to-end
Revoke saga (checkout/cancel) end-to-end
Update saga (date change) end-to-end
Master-key shift saga
Vendor webhook ingress (signed)
Offline issuance via Electron + reconciliation
QualityCoverage ≥ targets (TESTING_STRATEGY §10)partial
Mutation score ≥ targets on domain + sagas
Vendor sandbox conformance green ≥ 3 nightly
k6 load baseline within 10%
HIL Generic Wiegand checklist within 14d(if used)(if used)
SecurityVendor secrets in Secret Manager, per-tenant CMEK
RLS enforced on all tables, audited
Webhook signature verification per vendor
lock_audit immutability + Merkle anchoringpartial
Logging redaction tests pass; secret-scan CI clean
Penetration test report — no Highs unaddressed
Offline issuance signing key in KMS, rotation policy active
Device binding + CRL operational
ReliabilityAll saga retries + circuit breakers configured
All failure modes from FAILURE_MODES covered by testspartial
Disaster-recovery drill executed (Cloud SQL restore from PITR)
ObservabilityAll SLO recording rules deployed
Page-the-on-call alerts wired with runbook links
SRE dashboards + per-tenant + per-property dashboards livepartial
Synthetic vendor checks running per region
OperabilityRunbooks (FAILURE_MODES §1) merged in runbooks/lock-integration/partial
On-call rotation defined, primary + secondary
Customer-facing status page integration
Vendor escalation contacts documented per vendor
ComplianceData classification mapping reviewed by privacy
Subject-deletion path implemented (pseudonymization)
Data residency routing implemented and tested
DocumentationAll 17 service docs current (SERVICE_TEMPLATE)
OpenAPI spec published, lint clean
Event schemas in registry; consumer compatibility checked
ADR-0004 still reflects implementation

3. Sign-off

Each tier requires written sign-off in the release ticket from:

  • Service owner (lock domain lead)
  • Platform SRE (alerts + dashboards + DR drill)
  • Security lead (secret handling, audit, pen-test)
  • Product (feature scope, customer comms)
  • Tenant operations (for tenant-scoped tier promotions)

4. Exit criteria for each tier

The promotion path is sequential. Skipping a tier requires a written exception approved by the platform lead.

Promote from → toTrigger condition
MVP-Internal → MVP-GA30 days in pilot with no P1 incidents; all checklist items ✅
MVP-GA → GA-Multi-VendorSecond vendor in production with > 100 issuances and stable health for 14d
GA-Multi-Vendor → GA-OfflineOffline reconciliation tested with > 50 real provisional credentials over 30d
→ GA-Multi-RegionResidency routing tested with at least one EU-tagged tenant in staging for 14d

5. Cross-references