rail-kubernetes/workplans/RAIL-K8S-WP-0002-versioned-common-and-derived-rail-contract.md
codex 35159e49c1 fix(workplans): adopt ADR-007 derived identifiers for unregistered records
These workplans exist only in the retired local hub. Their random pre-ADR-007
identifiers are refused by C-06 as stale references, so they cannot be
registered. Deriving from the canonical record id takes no identity from
anything: central does not hold them and the old ids die with the cache.

Records central already holds were deliberately left untouched.

Refs CUST-WP-0068-T06

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
2026-08-25 20:17:48 +02:00

83 lines
2.4 KiB
Markdown

---
id: RAIL-K8S-WP-0002
type: workplan
title: "Version the common workload and derived-rail contract"
domain: financials
repo: rail-kubernetes
status: finished
owner: codex
topic_slug: railiance
created: "2026-07-26"
updated: "2026-07-26"
state_hub_workstream_id: "b3d4d92d-2b71-50ef-a98e-8e74694ae3be"
---
# RAIL-K8S-WP-0002 - Version the common workload and derived-rail contract
## Goal
Make `rail-kubernetes` the explicit versioned base contract used by default for
platform workloads and inherited by justified specializations such as
`rail-knative`.
## T01 - Version the base rail declaration
```task
id: RAIL-K8S-WP-0002-T01
status: done
priority: high
state_hub_task_id: "27709922-e14f-5448-a894-aa6cb2b1f021"
```
Add composition kind, contract version, required capabilities, and readiness
state without changing current lifecycle behavior.
2026-07-26: `declarations/rail.yaml` now declares base composition, contract
`1.0.0`, required substrate capabilities, verified readiness, and the default
platform/managed-application scope.
## T02 - Add the rail-neutral workload and binding schemas
```task
id: RAIL-K8S-WP-0002-T02
status: done
priority: high
state_hub_task_id: "6a64053b-4df3-5d2e-ba2e-de4acb955418"
```
Separate common workload identity, criticality, dependencies, security,
health, evidence, and recovery requirements from rail-specific bindings.
2026-07-26: Added the common workload, rail-binding, and derived-rail JSON
schemas plus a valid Kubernetes-default example.
## T03 - Add compatibility conformance
```task
id: RAIL-K8S-WP-0002-T03
status: done
priority: high
state_hub_task_id: "d1f63e62-b4cb-54b0-b7a6-be5af1acce4f"
```
Provide an idempotent validator suitable for local, agent, CI, and scheduled
execution. Reject incompatible base contracts, missing ownership, and
unsupported substrate capabilities.
2026-07-26: Added `tools/validate_contracts.py`. It validates base/derived rail
shape and common workload JSON Schema without accessing runtime credentials.
## T04 - Preserve the Kubernetes default
```task
id: RAIL-K8S-WP-0002-T04
status: done
priority: medium
state_hub_task_id: "56ee2da4-7c51-504c-a6d0-ee6f79346350"
```
Document and test that workloads without a justified specialization continue
to bind to `rail-kubernetes`.
2026-07-26: The base declaration identifies Kubernetes as the default for
platform workloads and managed applications; the example uses that binding.