"Parallel Gateway가 관여하는 Cycle은 정의상 종료조건이 있을 수 없다"
중복 Edge, Self Loop, Gateway 연결 수, 비정상 Cycle, Orphan Node, Start/End 검증까지 총 8개의 서로 다른 검증 규칙을 구현해야 했습니다. 이걸 어떤 공통 구조로 누적시킬지부터 정해야 했고, 첫 작업에서 GraphValidationIssue 타입과 집계 패턴을 확립한 뒤 이후 7개 작업이 규칙 함수 하나씩 추가하는 방식으로 진행했습니다.
가장 까다로웠던 건 비정상 Parallel Cycle 규칙이었습니다. 문서에는 "종료조건 없는 비정상 Cycle 차단"이라고만 되어 있고, 정확한 판정 알고리즘이 전혀 명시되어 있지 않았습니다. 임의로 알고리즘을 짜는 대신, "Conditional Gateway는 라벨로 조건부 종료를 표현할 수 있지만 Parallel Gateway는 라벨이 없어 원천적으로 불가능하므로, Parallel이 관여하는 Cycle은 무조건 비정상"이라는 해석을 먼저 확인받았습니다. 이 해석이 확정된 뒤에야 Tarjan SCC 알고리즘으로 구현했습니다.
작업이 후반부에 이를수록 새로운 설계 요소도 도입했습니다. Orphan Node 검증부터는 "저장 차단(ERROR)"과 "Ready 판정용 경고(WARNING)"를 별도 집계 함수로 분리해, 기존 7개 규칙과 그 테스트를 전혀 건드리지 않고 확장할 수 있는 구조를 만들었습니다. 마지막 작업에서는 기존 Orphan 테스트가 새 Start/End 규칙과 충돌하는 문제(완전히 고립된 Node가 두 규칙 모두의 대상이 되는 경우)를 발견해, 엄격 검증은 직접 호출로 유지하고 통합 검증은 완화하는 방식으로 조정했습니다.
8개 작업 전부 Sign-off와 커밋을 완료해 이 검증 체계가 마무리됐습니다. 매 작업마다 결과물의 파일 원문과 diff를 직접 대조하는 절차를 8번 반복했다는 점에서, 하나의 검증 규칙이 다른 규칙에 영향을 주지 않는지 확인하는 게 이 작업 전체의 핵심이었습니다.
판단 없는 사실 조회(graph.ts)와 판단 로직(graph-validation.ts)의 파일 분리를 8개 작업 내내 일관되게 유지해 각 작업의 diff를 최소화하려 했습니다. 저장 차단과 경고처럼 성격이 다른 규칙이 섞이려 할 때는 새 집계 함수로 분리해 기존 규칙에 영향이 가지 않게 했습니다. 문서에 알고리즘이 없는 지점은 임의로 코드를 짜지 않고, 근거 있는 해석을 먼저 확정받은 뒤에만 구현했습니다.
관련 프로젝트
프로젝트 개요 비즈니스 프로세스 트랜스포메이션(BPR)을 지원하는 한국어 기반 웹 애플리케이션. 컨설팅 프로젝트의 AS-IS 프로세스 분석부터 TO-BE 설계, Blueprint 승인까지의 전체 워크플로우를 디지털화하는 플랫폼으로, EPIC 단위로 구조화된 백로그를 기반으로 개발 중. 역할 및 워크플로우 PM / Architect / Reviewer 역할 수행 Codex(구현 담당)에게 Task 단위 구현 프롬프트 설계 Codex 구현 결과를 git log, git grep, git status로 직접 검증 후 승인 승인 전에는 Codex가 commit하지 않는 엄격한 게이팅 프로세스 운영 한 번에 하나의 Backlog Task만 진행, Task 완료 전 다음 Task 착수 금지 기술적 의사결정 및 성과 워크스페이스/프로젝트 접근 권한을 DB 레벨(복합 FK, SECURITY DEFINER 트리거)과 애플리케이션 레벨(Server Action 권한 검증)의 이중 방어 구조로 설계 Hard Delete 미구현 원칙 하에 배열 필드 전체교체(replace)를 단일 트랜잭션 RPC로 처리하는 패턴 확립 및 재사용 AS-IS 프로세스 그래프의 순환 참조 탐지에 Tarjan SCC 알고리즘 적용, 차단 오류(Error)와 경고(Warning)를 분리한 이중 Validator 아키텍처 설계 도메인 규칙 위반을 커스텀 Postgres 에러 코드 체계(SIA0104)로 문서화하여 거버넌스 문서와 코드베이스 간 정합성 유지 AI 생성 데이터와 사람이 검증한 데이터를 구분하는 generatedbyai / verified 메타데이터 패턴을 여러 도메인 테이블에 일관되게 적용 진행 상태 ✅ EPIC-01 (인증 / 워크스페이스 / 프로젝트 접근) ✅ EPIC-02 (조직 / 산업 / 프로젝트) 🚧 EPIC-03 (AS-IS 프로세스 그래프) — 그래프 검증, Input/Output 스키마, Business Rule 스키마 구현 완료