Minsky가 1967년에 증명한 모델은 INC r; goto S와 if r == 0 goto S else (DEC r; goto S')만으로 구성됨
Jira 구성 요소는 Minsky 머신의 각 요소에 대응됨
Register A: 연결된 Bug 이슈 수
Register B: 연결된 Task 이슈 수
Program Counter: 단일 Epic 이슈의 상태
Dispatch Table: 명령 상태별 Jira Automation 규칙
Clock: 자동화가 트리거하는 전환 또는 체인 제한 이후 외부 재트리거
Epic 상태가 현재 명령을 인코딩하고, Automation rules가 연결 이슈 수를 검사해 다음 상태로 전환함
INC와 DEC는 해당 유형의 연결 이슈 생성과 삭제로 구현되고, 조건 분기는 JQL 조건 규칙으로 처리됨
실행 예시와 제한
덧셈 프로그램은 A를 줄이면서 B를 늘리는 Minsky 프로그램으로 구성됨
1. if A == 0 goto 3 else (DEC A; goto 2)
2. INC B; goto 1
3. HALT
최소 구현은 하나의 Epic, 연결 이슈 5개, 명령 상태별 Automation 규칙 하나씩으로 구성됨
워크플로와 규칙
Jira Workflow에 초기 상태 BACKLOG, 이후 TODO, DEV, PROD를 만들고 모든 상태가 서로 전환 가능하게 설정함
BACKLOG 상태의 Epic을 하나 생성함
TODO 규칙은 DEC A; if A=0 halt, else goto DEV를 구현함
Epic 상태가 TODO로 바뀌면 트리거됨
연결된 Bug가 하나 이상 있으면 Bug 하나를 삭제하고 Epic을 DEV로 전환함
Bug가 없으면 Epic을 PROD로 전환해 정지함
DEV 규칙은 INC B; goto TODO를 구현함
Epic 상태가 DEV로 바뀌면 트리거됨
새 Task를 만들고 Epic에 연결함
Epic을 TODO로 전환함
두 규칙 모두 "Allow rule to trigger other rules"가 활성화됨
초기값과 결과
Epic에 Bug 2개와 Task 3개를 연결해 A=2, B=3으로 초기화함
Epic을 TODO로 전환하면 다음 흐름으로 연쇄 실행됨
(2,3) TODO →
(1,3) DEV →
(1,4) TODO →
(0,4) DEV →
(0,5) TODO →
(0,5) PROD
실제 *.atlassian.net 인스턴스에서 실행됐고, 최종적으로 Epic은 PROD에 도달하며 Bug 0개와 Task 5개가 연결됨
이 실행은 Jira 자동화로 2 + 3 = 5를 계산한 결과가 됨
Fibonacci 구성
Convert Issue Type은 Bug → Story, Story → Task처럼 이슈 유형을 즉시 바꿀 수 있음
CONVERT는 DEC + INC로 표현 가능해 계산 능력을 확장하지 않지만, 이동 루프의 디스패치 테이블을 줄여 더 복잡한 프로그램을 다루기 쉽게 만듦
Fibonacci는 (A, B) → (B, A+B)로 표현되며, 세 레지스터 A=Bug, B=Task, C=Story와 세 상태 TODO, QA, 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이며, Task 수인 B에서 1, 1, 2, 3, 5, 8, 13, ... 수열이 나타남
덧셈 머신과 달리 Fibonacci 머신에는 정지 상태가 없고, Jira Cloud의 체인 깊이 제한 10에 도달할 때까지 실행됨
제한에 닿으면 운영자가 Epic을 다시 트리거해 계속 진행할 수 있으며, 한 번의 상태 편집으로 연쇄 실행이 재시작됨
Jira Data Center는 automation.rule.execution.timeout과 관련 설정을 구성 가능한 속성으로 노출함
무한한 이슈 생성과 규칙 실행을 가정하면 Jira 자동화 언어는 두 카운터 머신을 인코딩할 수 있으며, 물리 컴퓨터도 유한하다는 통상적 기준에서는 Jira Cloud의 유한 쿼터가 이 구성을 반박하지 않음