# The tidalDB schema (signal types + decay, text fields, embedding slots) the
# server loads at startup with `--schema`. Mounting it as a ConfigMap lets you
# evolve the schema without rebuilding the image. This mirrors the in-image
# tidal-server/config/default-schema.yaml; edit it to model YOUR signals.
#
# Schema format reference: docs/guides/server-deployment.md and API.md.
# NOTE: editing this ConfigMap does NOT hot-reload a running pod — the schema is
# read once at boot. Roll the StatefulSet (kubectl rollout restart) to apply
# changes, and only make backward-compatible schema changes on a populated
# data dir (see docs/ops/recovery.md § schema mismatch).
apiVersion: v1
kind: ConfigMap
metadata:
  name: tidaldb-schema
  namespace: tidaldb
  labels:
    app.kubernetes.io/name: tidaldb
data:
  schema.yaml: |
    signals:
      - name: view
        entity: item
        decay:
          exponential:
            half_life_seconds: 604800    # 7 days
        windows: [one_hour, twenty_four_hours, seven_days]
        velocity: true
        positive_engagement: true        # folds into the user preference vector
      - name: like
        entity: item
        decay:
          exponential:
            half_life_seconds: 1209600   # 14 days
        windows: [twenty_four_hours, seven_days, thirty_days, all_time]
        velocity: false
        positive_engagement: true
      - name: skip
        entity: item
        decay:
          permanent: true
        velocity: false
    text_fields:
      - name: title
        kind: text
      - name: category
        kind: keyword
    embedding_slots:
      - name: content_vector
        entity: item
        dimensions: 128
