# shellcheck shell=bash

# Single source of truth for the okstra-relative directory name in shell code.
# Python (okstra_project/dirs.py) 와 Node (src/okstra-dirs.mjs) 와 같은 값을
# 유지해야 한다. 디렉토리 이름을 바꾸려면 세 곳의 한 줄씩만 수정.
OKSTRA_DIR="${OKSTRA_DIR:-.okstra}"
LEGACY_OKSTRA_DIR=".project-docs/okstra"

validate_project_root_safety() {
  if [[ -z "${PROJECT_ROOT:-}" ]]; then
    fail "PROJECT_ROOT is not defined"
  fi

  if [[ "$PROJECT_ROOT" != /tmp/okstra-validate.* ]]; then
    fail "Refusing to reset unexpected PROJECT_ROOT: $PROJECT_ROOT"
  fi
}

reset_validation_root() {
  rm -rf "$PROJECT_ROOT"
  mkdir -p "$PROJECT_ROOT"
}

task_key() {
  local task_group="$1"
  local task_id="$2"

  printf '%s:%s:%s\n' "$PROJECT_ID" "$task_group" "$task_id"
}

task_root() {
  local task_group="$1"
  local task_id="$2"

  printf '%s/%s/tasks/%s/%s\n' "$PROJECT_ROOT" "$OKSTRA_DIR" "$task_group" "$task_id"
}

task_manifest_relative_path() {
  local task_group="$1"
  local task_id="$2"

  printf '%s/tasks/%s/%s/task-manifest.json\n' "$OKSTRA_DIR" "$task_group" "$task_id"
}

reference_expectations_relative_path() {
  local task_group="$1"
  local task_id="$2"

  printf '%s/tasks/%s/%s/instruction-set/reference-expectations.md\n' "$OKSTRA_DIR" "$task_group" "$task_id"
}
