# ─────────────────────────────────────────────────────────────────────────────
# DQE Pipeline: The Entropy Engine
# Classification: Operational  |  ID: DQE-PIPE-006
#
# Receives JSON objects. Alphabetizes the keys. Validates the sort.
# Returns the same data with sorted keys.
# Referred to internally as "normalization."
# 2.3 million records processed. All returned unchanged in content.
#
# "The data is the same. The keys are in order. This matters."
# — DQE Data Governance Board, 2023
# ─────────────────────────────────────────────────────────────────────────────

variables:
  # Input JSON. Keys may be in any order. They will be sorted.
  INPUT_JSON: '{"zebra": 1, "apple": 2, "mango": 3, "banana": 4}'
  PIPELINE_ID: "DQE-PIPE-006"

stages:
  - sort-keys
  - validate-sort

sort-keys:
  stage: sort-keys
  script:
    - echo "[DQE-PIPE-006] sort-keys — normalization commencing."
    - echo "Input JSON: ${INPUT_JSON}"
    - echo ""
    - |
      SORTED=$(python3 -c "
      import json, sys
      data = json.loads('${INPUT_JSON}')
      sorted_data = dict(sorted(data.items()))
      print(json.dumps(sorted_data))
      ")
    - echo "Sorted JSON: ${SORTED}"
    - echo "SORTED_JSON=${SORTED}" > sorted.env
    - echo "INPUT_JSON=${INPUT_JSON}" >> sorted.env
    - echo ""
    - echo "Keys have been alphabetized. Content is unchanged."
  artifacts:
    reports:
      dotenv: sorted.env

validate-sort:
  stage: validate-sort
  needs: [sort-keys]
  script:
    - echo "[DQE-PIPE-006] validate-sort — confirming alphabetical order."
    - echo "Sorted JSON: ${SORTED_JSON}"
    - |
      python3 -c "
      import json
      data = json.loads('${SORTED_JSON}')
      keys = list(data.keys())
      sorted_keys = sorted(keys)
      if keys == sorted_keys:
          print('Sort validation: PASSED')
          print(f'Keys in order: {keys}')
          print()
          print('Content validation: PASSED')
          print('All values intact. No data was harmed in this normalization.')
      else:
          print('Sort validation: FAILED')
          print(f'Expected: {sorted_keys}')
          print(f'Got:      {keys}')
          exit(1)
      "
    - echo ""
    - echo "[DQE-PIPE-006] Pipeline complete."
    - echo "Records processed this run: 1"
    - echo "Records transformed in content: 0"
    - echo "Records sorted: 1"
    - echo "Net information gain: 0"
    - echo "Normalization status: COMPLETE"
