facetted-interfaces/history/FIAM_v0.2_Draft6/adversarial-cases/11-element-shape-on-object.yaml
tegwick 1353267569 Establish FIAM repository governance baseline
Assistant: codex
Assistant-Model: gpt-5.6-luna
Assistant-Session: 01a087b0-7b1e-7531-8ef3-6525ebaf7ee7
2026-09-09 21:53:43 +02:00

252 lines
7.2 KiB
YAML

fiam_version: '0.2'
instance:
id: adversarial.element-on-object-shape
kind: model
title: Kubernetes Pod collection and object
status: provisional
intent: Test API resource collection/object modeling while keeping representation kind/schema distinct from resource identity.
nodes:
- id: node.kubectl
kind: system-node
name: kubectl / API client
node_type: fiam.node-type.application
- id: node.apiserver
kind: system-node
name: Kubernetes API Server
node_type: fiam.node-type.service
ports:
- id: port.apiserver.api
owner: node.apiserver
participations:
- contract: contract.k8s-api
mode: offers
- id: port.kubectl.api
owner: node.kubectl
participations:
- contract: contract.k8s-api
mode: requires
contracts:
- id: contract.k8s-api
kind: interface-contract
purpose:
- fiam.purpose.transactional-data-access
- fiam.purpose.mutation
operations:
- id: operation.k8s.list-pods
name: list pods
effect: fiam.effect.read
- id: operation.k8s.watch-pods
name: watch pods
interaction_style: fiam.interaction-style.subscribe
- id: operation.k8s.patch-pod
name: patch pod
effect: fiam.effect.write
endpoints:
- id: endpoint.apiserver
kind: endpoint
address: https://cluster.example.invalid
address_scheme: fiam.address-scheme.https-url
bindings:
- id: binding.k8s-api
contract: contract.k8s-api
provider_port: port.apiserver.api
consumer_ports:
- port.kubectl.api
endpoints:
- endpoint.apiserver
communication_stack:
- role: fiam.stack-role.application-transfer-protocol
term: fiam.protocol.http
- role: fiam.stack-role.security-protocol
term: fiam.protocol.tls
information_resources:
- id: resource.k8s.default-pods
kind: information-resource
name: default namespace Pods collection
resource_kind: fiam.information-resource.api-resource-collection
resource_scope: fiam.resource-scope.concrete-collection
owner: node.apiserver
selectors:
- kind: fiam.resource-selector.kubernetes-resource-path
value: /api/v1/namespaces/default/pods
facets:
durability: fiam.durability.persistent
mutability: fiam.mutability.mutable
- id: resource.k8s.pod.demo
kind: information-resource
name: Pod default/demo
resource_kind: fiam.information-resource.api-resource-object
resource_scope: fiam.resource-scope.concrete-instance
owner: node.apiserver
selectors:
- kind: fiam.resource-selector.kubernetes-object-ref
value:
apiVersion: v1
kind: Pod
namespace: default
name: demo
facets:
durability: fiam.durability.persistent
mutability: fiam.mutability.mutable
interactions:
- id: interaction.k8s.list
kind: interaction
operation: operation.k8s.list-pods
binding: binding.k8s-api
- id: interaction.k8s.watch
kind: interaction
operation: operation.k8s.watch-pods
binding: binding.k8s-api
temporal_semantics: fiam.temporal.asynchronous
- id: interaction.k8s.patch
kind: interaction
operation: operation.k8s.patch-pod
binding: binding.k8s-api
assertions:
- id: assertion.pod.in-collection
assertion_kind: relation
subject: resource.k8s.pod.demo
predicate: fiam.relation.contained-in
polarity: asserted
object_ref: resource.k8s.default-pods
evidence:
mode: fiam.evidence.declared
source: modeling specimen
confidence: 0.98
- id: assertion.list.reads
assertion_kind: relation
subject: interaction.k8s.list
predicate: fiam.relation.reads-from
polarity: asserted
object_ref: resource.k8s.default-pods
evidence:
mode: fiam.evidence.declared
source: modeling specimen
confidence: 0.98
- id: assertion.watch.watches
assertion_kind: relation
subject: interaction.k8s.watch
predicate: fiam.relation.watches
polarity: asserted
object_ref: resource.k8s.default-pods
evidence:
mode: fiam.evidence.declared
source: modeling specimen
confidence: 0.98
- id: assertion.patch.writes
assertion_kind: relation
subject: interaction.k8s.patch
predicate: fiam.relation.writes-to
polarity: asserted
object_ref: resource.k8s.pod.demo
evidence:
mode: fiam.evidence.declared
source: modeling specimen
confidence: 0.98
- id: assertion.k8s.collection-conforms
assertion_kind: relation
subject: resource.k8s.default-pods
predicate: fiam.relation.conforms-to-shape
polarity: asserted
object_ref: shape.k8s.pod-list
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
- id: assertion.k8s.collection-element
assertion_kind: relation
subject: resource.k8s.default-pods
predicate: fiam.relation.element-shape
polarity: asserted
object_ref: shape.k8s.pod
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
role: fiam.shape-role.element
slot: items
- id: assertion.k8s.listshape-element
assertion_kind: relation
subject: shape.k8s.pod
predicate: fiam.relation.element-shape
polarity: asserted
object_ref: shape.k8s.pod
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
role: fiam.shape-role.element
slot: items
- id: assertion.k8s.object-conforms
assertion_kind: relation
subject: resource.k8s.pod.demo
predicate: fiam.relation.conforms-to-shape
polarity: asserted
object_ref: shape.k8s.pod
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
- id: assertion.k8s.list-produces
assertion_kind: relation
subject: operation.k8s.list-pods
predicate: fiam.relation.produces-shape
polarity: asserted
object_ref: shape.k8s.pod-list
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
role: fiam.shape-role.response
- id: assertion.k8s.list-binding-json
assertion_kind: relation
subject: binding.k8s-api
predicate: fiam.relation.produces-shape
polarity: asserted
object_ref: shape.k8s.pod-list
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
role: fiam.shape-role.response
representation: fiam.representation.json
operation_ref: operation.k8s.list-pods
- id: assertion.k8s.list-interaction-json
assertion_kind: relation
subject: interaction.k8s.list
predicate: fiam.relation.produces-shape
polarity: asserted
object_ref: shape.k8s.pod-list
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
role: fiam.shape-role.response
representation: fiam.representation.json
x-references:
- https://kubernetes.io/docs/reference/using-api/api-concepts/
- https://kubernetes.io/docs/reference/kubernetes-api/definitions/api-resource-v1-meta/
information_shapes:
- id: shape.k8s.pod
kind: information-shape
name: Kubernetes Pod
shape_kind: fiam.information-shape.object
- id: shape.k8s.pod-list
kind: information-shape
name: Kubernetes Pod collection representation
shape_kind: fiam.information-shape.collection
artifacts:
- id: artifact.k8s.openapi
kind: artifact
name: Kubernetes OpenAPI schema/discovery
artifact_type: fiam.artifact.api-description
describes:
- contract.k8s-api
- shape.k8s.pod
- shape.k8s.pod-list
locator: cluster://openapi