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

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

Схема URI для навигации по версионированной и разветвлённой реальности экосистемы Идей. Она предоставляет синтаксис как для простых, динамических запросов, так и для полностью разрешённых, постоянных ссылок.

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

Анатомия ссылки idea:

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

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

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

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

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

    • Этот запрос ищет последнюю версию UserProfile, совместимую с префиксом 1.2, разрешаемую с помощью Пути Поиска в текущем суверенном пространстве имён.
  2. Абсолютный Запрос: idea://my-project.com/schemas/UserProfile?1.2

    • Это полностью определённый запрос, который нацелен на конкретный домен, игнорируя текущее пространство имён.
  3. Запрос с явным указанием ветки: idea:~main/schemas/UserProfile (или idea:/schemas/UserProfile)

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

    • Это постоянная, однозначная запись о разрешении. Она показывает, что запрос был разрешён в домене my-project.com, в ветке staging, и была найдена точная версия 1.2.staging.4.

Полный цикл разработки

Эти концепции обеспечивают безопасный и эффективный рабочий процесс для параллельной разработки.

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

  2. Разработка процесса: Разработчик создаёт новую Идею типа Process, idea:processes/onboarding. Поскольку он находится в ветке feature/user-onboarding-v2, эта новая Идея и все её последующие версии автоматически связываются с этой веткой. Он может свободно дорабатывать и тестировать процесс, создавая по мере необходимости Идеи типа Instruction и Record.

  3. Использование существующих компонентов: Новому процессу onboarding требуется стандартная Instruction «Отправить письмо». Разработчик ссылается на неё как на 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.