
Jira — тьюринг-полная
PatientZero 18 минут назад Jira — тьюринг-полная 3 мин 504 Управление проектами * Алгоритмы * Ненормальное программирование * Программирование * Перевод Автор оригинала: Nicolas Seriot В фольклоре разработчиков...
Вот важная новость с фронта ИИ: PatientZero 18 минут назад Jira — тьюринг-полная 3 мин 504 Управление проектами * Алгоритмы * Ненормальное программирование * Программирование * Перевод Автор оригинала: Nicolas Seriot В фольклоре разработчиков встречаются утверждения о том, что Jira (система управления проектами, разработанная Atlassian) полна по Тьюрингу. Однако в таких заявлениях нет конкретики, лишь смутные упоминания фич автоматизации. В этой статье будет приведено доказательство с инструкциями по реализации и трассировкой исполнения.
Составление вычислительной моделиДля машины Минского требуются всего два неограниченных счётчика и конечное множество именованных команд:INC r; goto SDEC r; if r == 0 goto S else goto S'Если говорить русским языком:выполнить инкремент регистра R, затем перейти в некое состояние Sвыполнить декремент регистра R, если R == 0, перейти в нулевое состояние S, иначе перейти в ненулевое состояние S'Программа Минского, складывающая регистр A с регистром B и сохраняющая значение в B, выглядит так:1. DEC A; if A == 0 goto 3 else goto 2 2. HALTМинский доказал, что эта модель Тьюринг-полная (1967 год).
Технические детали
Следовательно, продемонстрировав её на языке автоматизации Jira, мы получим нужное нам доказательство. Вот, как модель связывается с Jira:Машина МинскогоJiraРегистр AКоличество связанных задач типа BugРегистр BКоличество связанных задач типа TaskСчётчик командСтатус одной Epic-задачиТаблица диспетчеризацииПравила автоматизации Jira, по одному на состояние командыЧасыЗапускаемые автоматизацией переходы или внешние повторные срабатывания прошлых цепочек правВ статусе Epic кодируется текущая команда. Правила автоматизации проверяют количество связанных задач и выбирают следующий статус.
INC и DEC реализованы как создание и удаление задачи соответствующего типа связанной задачи. Условное ветвление реализовано в виде условного правила JQL. Реализация сложенияНиже представлена минимальная работающая реализация на основе одной Epic, пяти связанных задач и одного правила автоматизации на каждое состояние команды (Space Settings > Automation).
Создание WorkflowСоздаём Jira Workflow со статусами начальных состояний BACKLOG, затем TODO, DEV и PROD. Любое состояние может выполнять переход в любое другое. Создаём Epic в статусе BACKLOG.
Отраслевые последствия
Создание правила для TODODEC A; if A=0 halt, else goto DEV. Триггер: статус Epic изменён на TODO. Если есть хотя бы один связанный Bug: удаление одного Bug, переход Epic в состояние DEV.
Иначе: переход Epic в PROD (останов). Создание правила для DEVINC B; goto TODO. Триггер: статус Epic меняется на DEV.
Создание новой задачи, привязка её к Epic. Переход Epic в состояние TODO. У обоих правил выставлен флаг «Разрешить этому правилу вызывать другие правила».
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.




