惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
Cloudbric
Cloudbric
I
InfoQ
V
V2EX
博客园_首页
The Register - Security
The Register - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Secure Thoughts
Vercel News
Vercel News
Forbes - Security
Forbes - Security
云风的 BLOG
云风的 BLOG
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
D
DataBreaches.Net
H
Hacker News: Front Page
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
A
About on SuperTechFans
N
News and Events Feed by Topic
Apple Machine Learning Research
Apple Machine Learning Research
Help Net Security
Help Net Security
Attack and Defense Labs
Attack and Defense Labs
N
Netflix TechBlog - Medium
Spread Privacy
Spread Privacy
F
Full Disclosure
Recorded Future
Recorded Future
AWS News Blog
AWS News Blog
博客园 - 【当耐特】
The Cloudflare Blog
T
Threatpost
T
Tor Project blog
Google DeepMind News
Google DeepMind News
C
CXSECURITY Database RSS Feed - CXSecurity.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
A
Arctic Wolf
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News - Newest:
Hacker News - Newest: "LLM"
WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
小众软件
小众软件
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Proofpoint News Feed
Security Latest
Security Latest
The Last Watchdog
The Last Watchdog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Jira — тьюринг-полная
PatientZero · 2026-05-25 · via Все публикации подряд на Хабре

3 мин

8.4K

В фольклоре разработчиков встречаются утверждения о том, что Jira (система управления проектами, разработанная Atlassian) полна по Тьюрингу. Однако в таких заявлениях нет конкретики, лишь смутные упоминания фич автоматизации. В этой статье будет приведено доказательство с инструкциями по реализации и трассировкой исполнения.

Составление вычислительной модели

Для машины Минского требуются всего два неограниченных счётчика и конечное множество именованных команд:

  • INC r; goto S

  • DEC 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. INC B; goto 1
3. HALT

Минский доказал, что эта модель Тьюринг-полная (1967 год). Следовательно, продемонстрировав её на языке автоматизации Jira, мы получим нужное нам доказательство. Вот, как модель связывается с Jira:

Машина Минского

Jira

Регистр A

Количество связанных задач типа Bug

Регистр B

Количество связанных задач типа Task

Счётчик команд

Статус одной Epic-задачи

Таблица диспетчеризации

Правила автоматизации Jira, по одному на состояние команды

Часы

Запускаемые автоматизацией переходы или внешние повторные срабатывания прошлых цепочек прав

В статусе Epic кодируется текущая команда. Правила автоматизации проверяют количество связанных задач и выбирают следующий статус. INC и DEC реализованы как создание и удаление задачи соответствующего типа связанной задачи. Условное ветвление реализовано в виде условного правила JQL.

Реализация сложения

Ниже представлена минимальная работающая реализация на основе одной Epic, пяти связанных задач и одного правила автоматизации на каждое состояние команды (Space Settings > Automation).

1. Создание Workflow

Создаём Jira Workflow со статусами начальных состояний BACKLOG, затем TODO, DEV и PROD. Любое состояние может выполнять переход в любое другое.

Создаём Epic в статусе BACKLOG.

2. Создание правила для TODO

DEC A; if A=0 halt, else goto DEV.

  • Триггер: статус Epic изменён на TODO.

  • Если есть хотя бы один связанный Bug: удаление одного Bug, переход Epic в состояние DEV.

  • Иначе: переход Epic в PROD (останов).

3. Создание правила для DEV

INC B; goto TODO.

  • Триггер: статус Epic меняется на DEV.

  • Создание новой задачи, привязка её к Epic.

  • Переход Epic в состояние TODO.

У обоих правил выставлен флаг «Разрешить этому правилу вызывать другие правила».

На скриншоте ниже показаны два правила, связанные с workflow Epic.

4. Инициализация регистров

Привязываем 2 Bug (A=2) и 3 Task (B=3) к Epic.

5. Запуск машины.

Выполняем переход Epic в состояние TODO для запуска каскада. Пять переходов:

(2,3) TODO → 
(1,3) DEV  → 
(1,4) TODO → 
(0,4) DEV  → 
(0,5) TODO → 
(0,5) PROD

Записано на реальном инстансе *.atlassian.net.

Epic оказывается в состоянии PROD с 0 связанных Bug и 5 связанных Task. Так мы выполнили сложение 2 + 3 = 5.

Вычисление чисел Фибоначчи в трёх состояниях

Приведённого выше доказательства достаточно для демонстрации полноты по Тьюрингу. Наряду с этим язык автоматизации Jira может упрощать операции Минского. Convert Issue Type мгновенно меняет тип задачи: Bug → Story, Story → Task и так далее.

CONVERT можно выразить как DEC + INC. Она не повышает вычислительную мощь Jira, но существенно уменьшает таблицу диспетчеризации для цикла копирования, что позволяет реализовывать нетривиальные программы.

Вычисление чисел в Фибоначчи в виде (A, B) → (B, A+B) сводится к трём состояниям с тремя регистрами (A=Bug, B=Task, C=Story); тремя состояниями команд будут TODOQA (нужно добавить его в workflow) и DEV:

TODO:
    if any linked Task exists:
        CONVERT Task → Story
        INC Bug
        transition to TODO
    else:
        transition to QA

QA:
    if any linked Bug exists:
        CONVERT Bug → Task
        transition to QA
    else:
        transition to DEV

DEV:
    if any linked Story exists:
        CONVERT Story → Bug
        transition to DEV
    else:
        transition to TODO

Начальное состояние имеет вид A=1, B=1, C=0. Последовательность 1, 1, 2, 3, 5, 8, 13, … записывается в B (счётчик Task).

В отличие от машины сложения, у машины Фибоначчи нет состояния останова. Она работает, пока не упрётся в максимальную глубину цепочек прав, равную 10 срабатываниям; после этого оператор заново запускает Epic для продолжения. Для перезапуска каскада достаточно одного изменения статуса.

Доказательство по-прежнему в силе, живой оператор просто передаёт машине следующий такт. В Jira Data Center есть аналогичное свойство automation.rule.execution.timeout и связанные с ним конфигурируемые свойства.

Заключение

Язык автоматизации Jira при условии неограниченного создания задач и исполнения правил способен закодировать машину с двумя счётчиками . Все физические компьютеры конечны, поэтому конечный лимит Jira Cloud не опровергает наши построения. В рамках этого стандартного допущения Jira полна по Тьюрингу.

Поэтому если сложные автоматизации Jira кажутся вам похожими на программы, то это потому, что именно так всё и есть.