Date: 2026-07-26 Status: Accepted

## Context

Knative provides distinct workload activation and revision semantics but runs on Kubernetes. Treating it as an unrelated peer rail would duplicate generic workload lifecycle and substrate assumptions.

## Decision

Railiance distinguishes base and derived rails.

`rail-kubernetes` is the default base rail for platform workloads. `rail-knative` is a derived rail that inherits a versioned `rail-kubernetes` common contract and overrides only Knative-specific activation, revision, autoscaling, traffic, cold-start, and rollback semantics.

The detailed contract is `docs/rail-composition-contract.md`.

## Consequences

- New platform workloads continue to use `rail-kubernetes` unless a specialized rail is justified.
- Derived rails declare base-rail compatibility rather than copying lifecycle contracts.
- Fabric and conformance tooling must understand rail dependency and readiness.
- Knative installation stays with the S2 substrate owner.