4.3 KiB
Qonto Knative Runtime Contract
Date: 2026-07-26 Status: Architecture baseline; implementation values require measured evidence
Purpose
Define the end-to-end runtime boundary for an internet-reachable Qonto service that holds access to a company bank credential and scales to zero.
Ownership And Flow
authenticated client
-> reef ingress capability
-> rail-knative request activation and revision routing
-> rapp-qonto package
-> qonto-assistant domain service
-> OpenBao credential lane
-> Qonto API
railiance-clusterowns ingress, DNS, certificate, Knative installation, and cluster-level network capabilities.rail-knativeowns activation, buffering, revisions, autoscaling, traffic, cold-start, and rail-specific rollback semantics.rapp-qontoowns package manifests, runtime configuration, rail bindings, workload-specific smoke checks, and secret references.qonto-assistantowns Qonto domain behavior, default-deny financial policy, authorization integration, and application audit events.reef-railianceowns placement, local binding, and readiness evidence.
The raw workload service is never a public unauthenticated endpoint.
Steady-State Identity And Secret Names
The steady runtime identity is named for rapp-qonto, not its source repo.
Recommended stable identifiers:
- workload principal:
rapp-qonto - tenant: the canon-approved Binky tenant identifier
- Kubernetes service account:
rapp-qonto - OpenBao role:
rapp-qonto - bank credential reference:
tenants/binky/qonto-api - caller OIDC client:
rapp-qonto-client
Any qonto-assistant runtime principal or secret role is a time-bounded
migration bridge and must not become the steady-state declaration.
Request And Cold-Start Contract
Implementation must measure and publish:
- cold-start service-level objective
- caller timeout
- activator or gateway buffering timeout
- maximum concurrency
- retry ownership and retry limit
- readiness deadline
- scale-down grace period
Financial or side-effecting operations must carry an idempotency key across activation, retries, and client reconnects. A timeout must not silently imply that an operation did not reach Qonto.
Until measured values exist, implementation may use conservative development
defaults but must not claim production-approved.
Dependency Failure Rules
- If caller identity cannot be verified: deny before activation when possible.
- If workload identity cannot be established: fail closed.
- If OpenBao or the bank-credential lane is unavailable: fail closed and emit an audit event; never fall back to a static embedded secret.
- If Qonto is unavailable: return a bounded upstream failure and preserve idempotency/audit context.
- If audit delivery is unavailable: follow the application security contract; critical mutations must not become unaudited best-effort operations.
Network And Secret Controls
- default-deny ingress and egress
- ingress only through the approved authenticated entry path
- egress only to DNS, the approved OpenBao endpoint, required identity and authorization services, and Qonto API endpoints
0.0.0.0/0:443is not production-approved without a documented exception and compensating control- short-lived workload identity and least-privilege secret access
- no secret value in Git, logs, State Hub, chat, or parent-shell output
- automated revocation and negative-access tests
Rollback And Fallback
Rollback order is:
- previous verified Knative revision
- keep the verified revision warm by setting a temporary minimum scale
- declare the service unavailable
A direct rail-kubernetes deployment is an exceptional, time-bounded fallback.
It requires an explicit exception record, the same security controls, an owner,
and an expiry. It is not a parallel steady-state production path.
Verification
Before production approval, automated evidence must cover:
- authenticated activation from scale zero
- rejected unauthenticated and wrong-tenant requests
- bounded cold start and timeout behavior
- idempotent retry behavior
- OpenBao positive and negative access
- Qonto-only egress enforcement
- audit delivery
- revision rollback
- credential revocation
- dependency-failure behavior
The implementation path should progress from attended proof to agent-executed conformance and finally to scheduled functional automation.