Skip to content

fix(hslm): HSLM build failure — Zig version conflict & symlink ghost files [HSLM-BUILD-001] #515

@gHashTag

Description

@gHashTag

🎖️ ПРИКАЗ ГЕНЕРАЛА АРМИИ АГЕНТОВ

Задача: HSLM-BUILD-001 — Диагностика и устранение проблем сборки HSLM в trinity-training
Исполнитель: agent:copilot
Репозиторий: gHashTag/trinity
Приоритет: КРИТИЧЕСКИЙ — блокирует всю HSLM миграцию


⚔️ КОНСТИТУЦИОННЫЙ ПРИКАЗ

Перед началом исполнения агент ОБЯЗАН прочитать:

  1. SOUL.md — конституционные законы
  2. CLAUDE.md — операционные правила агента
  3. AGENTS.md — протокол взаимодействия армии агентов
  4. architecture/graph.tri — граф зависимостей

НИКОГДА: не трогать src/*.zig напрямую. Бэкенды — disposable output.


📐 PHI LOOP — ПРОТОКОЛ ИСПОЛНЕНИЯ

DIAGNOSE → SPEC → HASH_SEAL → FIX → TEST → VERDICT → EXPERIENCE → COMMIT

Каждый шаг:

tri issue comment 508   # 🔍 [STEP N/8] описание
tri experience save     # после каждого шага

🔥 КОНТЕКСТ ПРОБЛЕМЫ

Потрачено >1 часа на попытки сборки HSLM. Каждый раз Zig даёт разные ошибки.

✅ Что сделано:

  1. Все HSLM файлы восстановлены из Trinity (65+ файлов)
  2. .tri спецификации скопированы
  3. Zig модули скопированы в src/tri/
  4. Создан build.zig для trinity-training

❌ Симптомы:

  1. zig build не может найти src/hslm/cli.zig — хотя файл существует
  2. При удалении src/hslm/cli.zig — файл исчезает и появляется заново (ghost file!)
  3. Сборка через zig build всегда завершается ошибками

🤔 Гипотеза командира:

Конфликт между двумя Zig версиями (0.15.0 vs 0.15.0-dev/0.15.2) или проблема с кешем/символическими ссылками.


🗂️ ЗАДАНИЕ: 3 ПАРАЛЛЕЛЬНЫХ ВЕКТОРА АТАКИ

Вектор A (ДИАГНОСТИКА): Определить корневую причину

# Шаг A1: Проверить симлинки
find src/hslm/ -type l -ls
find src/hslm/ -name "cli.zig" -ls

# Шаг A2: Проверить версии Zig
which zig
zig version
# Если есть два zig — найти конфликт:
ls -la $(which zig)
ls -la ~/.zvm/  # или ~/.zig/

# Шаг A3: Проверить кеш
ls -la .zig-cache/
ls -la zig-out/

# Шаг A4: Проверить build.zig на предмет неверных путей
cat build.zig | grep -n "hslm\|cli"

Результат Вектора A: зафиксировать в .trinity/experience/episodes/hslm-build-diag-001.json


Вектор B (БЫСТРЫЙ ПУТЬ): Собрать HSLM напрямую из /Users/playra/trinity/

Если trinity-training сломан — не тратить время, использовать рабочий источник.

# Шаг B1: Проверить что trinity/ собирается
cd /Users/playra/trinity/
zig build hslm 2>&1 | head -50

# Шаг B2: Если OK — создать spec для фиксации рабочего пути
tri spec create specs/hslm/build_from_trinity.tri
tri skill seal --hash

Файл: specs/hslm/build_strategy.tri

spec hslm_build_strategy {
  @source_of_truth ".trinity/experience/hslm_build.json"
  
  // Приоритет источников сборки
  type BuildSource = enum {
    TrinityDirect,      // /Users/playra/trinity/ — рабочий
    TrinityTraining,    // trinity-training/ — сломан (HSLM-BUILD-001)
    DockerRailway,      // Docker/Railway бинарники — fallback
  }
  
  const PREFERRED_SOURCE = BuildSource.TrinityDirect
  
  // Условие переключения на TrinityTraining
  invariant use_trinity_direct_until_fixed {
    assert PREFERRED_SOURCE == TrinityDirect
      until issue_closed("HSLM-BUILD-001")
  }
  
  test build_from_trinity_succeeds {
    given path = "/Users/playra/trinity/"
    when result = zig_build(path, "hslm")
    then result.exit_code == 0
    then result.binary_exists == true
  }
}

Вектор C (ДОЛГОСРОЧНЫЙ FIX): Починить trinity-training

Только если Вектор A выявил ясную причину.

C1: Если это кеш — очистить

rm -rf .zig-cache/ zig-out/
zig build 2>&1

C2: Если это симлинки — создать spec для детекции

spec hslm_symlink_guard {
  // Ghost file = симлинк указывает на несуществующий target
  invariant no_ghost_files {
    assert forall f in src/hslm/:
      is_symlink(f) => symlink_target_exists(f)
  }
  
  test cli_zig_is_real_file {
    given path = "src/hslm/cli.zig"
    then is_regular_file(path) == true
    then is_symlink(path) == false
  }
}

C3: Если это конфликт версий Zig

Создать .tool-versions или build.zig.zon с pinned версией:

# .tool-versions (asdf)
zig 0.15.0

📋 ТАБЛИЦА ФАЙЛОВ К СОЗДАНИЮ

Файл Тип Вектор
specs/hslm/build_strategy.tri spec B
specs/hslm/symlink_guard.tri spec C2
.trinity/experience/episodes/hslm-build-diag-001.json experience A
.trinity/experience/episodes/hslm-build-fix-001.json experience C
.tool-versions config C3

🏁 РЕШЕНИЕ (ПРИОРИТЕТ ПОРЯДКА):

1. Вектор A (диагностика) — 15 мин макс
2. Вектор B (быстрый путь) — если нет ясной причины
3. Вектор C (fix) — только если A дал ясный ответ

НЕ ТРАТИТЬ >30 минут на trinity-training если trinity/ работает.


✅ КРИТЕРИИ ЗАВЕРШЕНИЯ

  • tri test specs/hslm/build_strategy.tri — зелёные
  • HSLM бинарник собирается (из trinity/ или trinity-training/)
  • .trinity/experience/episodes/hslm-build-diag-001.json создан
  • Корневая причина задокументирована в experience
  • tri verdict --toxic specs/hslm/ — CLEAN
  • tri issue comment 508 "✅ [DONE]" — финальный коммент

⚠️ ЗАПРЕЩЕНО

  1. ❌ Тратить >30 минут на одну ошибку без смены вектора
  2. ❌ Редактировать src/*.zig напрямую
  3. ❌ Коммитить без tri experience save
  4. ❌ Игнорировать ghost file симптом — задокументировать

Приказ выдан: 2026-04-19 | Генерал Армии Агентов | PHI LOOP

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions