Акты Становления

110: Концепция/Адресация

Это как веб-адрес (URL), но специально для поиска разных версий Идей в нашей системе. С помощью такой ссылки можно как попросить «дай мне самую новую подходящую версию», так и указать на одну конкретную, неизменную версию навсегда.

Система адресов idea: — это язык, на котором мы ориентируемся в мире Идей, полном разных версий и «ветвей», как в игре с разными сюжетными линиями. Она позволяет нам либо запрашивать Идеи, либо создавать постоянные, надёжные ссылки на их конкретные, определённые версии.

Из чего состоит ссылка idea:

Ссылка idea: может включать несколько частей:

  • Схема: idea: — всегда начинается так.
  • Домен: Необязательное «королевство», где живёт идея, начинается с // (например, //moy-proekt.com). Если его нет, система ищет идею в текущем «королевстве».
  • Указатель ветки: Необязательное указание на конкретную ветку разработки (например, ~main/). Символ / в начале — это короткий способ написать ~main/.
  • Путь: Имя Идеи (например, schemas/UserProfile).
  • Запрос версии: Необязательное требование к версии (например, ?1.2), которое означает «любая версия, начинающаяся с 1.2».
  • Найденная версия: В итоговой, «отвеченной» ссылке здесь будет точная версия, которая была найдена (например, :1.2.3).
  • Фрагмент: Указатель на определённую часть внутри Идеи (например, #schema).

Состояния ссылки

Ссылка idea: может быть в нескольких состояниях:

  1. Относительный запрос («Просьба»): idea:schemas/UserProfile?1.2

    • Это просьба найти последнюю версию UserProfile, совместимую с 1.2. Поиск будет идти по специальному Пути Поиска в текущем «королевстве».
  2. Абсолютный запрос: idea://moy-proekt.com/schemas/UserProfile?1.2

    • Это точный запрос к конкретному домену. Он не зависит от того, в каком «королевстве» вы сейчас находитесь.
  3. Запрос к конкретной ветке: idea:~main/schemas/UserProfile (или idea:/schemas/UserProfile)

    • Знак ~ означает, что нужно искать только в указанной Ветке. Этот запрос игнорирует Путь Поиска и идёт напрямую в ветку main в текущем (или указанном) «королевстве».
  4. Разрешённая ссылка («Ответ»): idea://moy-proekt.com/:staging/schemas/UserProfile?1.2:1.2.staging.4

    • Это постоянная и однозначная запись о результате поиска. Она говорит: «Запрос был выполнен в домене moy-proekt.com, в ветке staging, и была найдена точная версия 1.2.staging.4».

Как это работает на практике

Эти правила позволяют нескольким людям безопасно работать над одним проектом одновременно.

  1. Создание ветки: Разработчик начинает работу и создаёт новую ветку feature/user-onboarding-v2. Его Путь Поиска теперь настроен так: сначала искать в ['feature/user-onboarding-v2', 'main'] (сначала в новой ветке, потом в главной).

  2. Разработка процесса: Разработчик создаёт новую Идею типа «Процесс» с адресом idea:processes/onboarding. Так как он работает в своей ветке, эта новая Идея и все её будущие версии автоматически сохраняются в этой ветке. Он может спокойно её менять и тестировать.

  3. Использование готовых частей: Новому процессу нужна стандартная команда «Отправить Email». Разработчик ссылается на неё по адресу idea:activities/send-email. Система сначала ищет эту команду в его ветке feature/user-onboarding-v2, не находит и затем находит стабильную версию в главной ветке main.

  4. Изменение одной части: Разработчик понимает, что ему нужен особый шаблон для приветственного письма. Он создаёт новую версию idea:records/email-templates/welcome. Эта версия сохраняется в его ветке feature/user-onboarding-v2. Теперь, когда его процесс запрашивает этот шаблон, система сначала находит новую версию в его ветке и использует её, не трогая старую версию в main.

  5. Публикация изменений: Когда работа закончена, разработчик «публикует» её. Идея версии 1.3.new-login.2 копируется, её версия «очищается» до 1.4 и публикуется в главную ветку main. Теперь это новая стабильная версия для всех.

  6. Контролируемые обновления: Другой процесс в системе использовал старую версию, ссылаясь на idea:processes/onboarding?1. Так как новая версия 1.4 подходит под этот запрос (начинается с 1), в следующий раз этот процесс автоматически и безопасно подхватит новую версию 1.4. Чтобы этого не произошло и всё осталось стабильным, можно «закрепить» зависимость, указав более точную версию, например ?1.3.