{ "generatedAt": "2026-10-26T14:33:19.592Z", "stamp": "mvpcu283", "summary": { "verified_real": 7, "partial": 7, "not_verified": 20 }, "flows": [ { "no": 1, "title": "신규 고객 가입과 이메일 확인", "verdict": "verified_real", "note": "실제 포털·실제 mailer 경로(포획 서버) — 외부 수신함 도착은 별도 1건으로 확인", "steps": [ { "name": "가입 → 세션 발급(실제 포털 https://my.ariweb.net)", "ok": true, "detail": { "status": 200 } }, { "name": "확인 전 그룹 생성 차단(403 email_unverified)", "ok": true, "detail": "email_unverified" }, { "name": "확인 메일이 실제 발신 경로(mailer resend → 포획 서버)로 나감 · 토큰 추출", "ok": true, "detail": { "subject": "[Ariweb] 이메일 주소를 확인해 주세요", "from": "no-reply@ariweb.net", "linkHost": "https://my.ariweb.net" } }, { "name": "이메일 확인(1회용) → 재사용 거부", "ok": true, "detail": { "first": 200, "second": "token_used" } }, { "name": "내 정보: 확인됨 · 개인 그룹 · owner", "ok": true, "detail": { "verifiedAt": "2026-10-26T14:31:15.078Z", "group": "personal", "role": "owner" } }, { "name": "중복 가입은 존재를 드러내지 않는 안내(409)", "ok": true, "detail": "signup_unavailable" }, { "name": "로그인 화면(로그인 상태면 302, 아니면 200)·기기(세션) 목록", "ok": true, "detail": { "loggedIn": 302, "anonymous": 200, "sessions": 1 } } ], "evidence": { "verifiedAt": "2026-10-26T14:31:15.078Z", "group": "personal", "role": "owner" } }, { "no": 2, "title": "개인 사용자 그룹 생성과 다른 사용자 초대", "verdict": "verified_real", "note": "", "steps": [ { "name": "팀 그룹 만들기 → 현재 그룹 전환", "ok": true, "detail": "g_01a1789f67b12a216acd1955fa" }, { "name": "이메일 초대 → 초대 메일(포획)에서 링크", "ok": true, "detail": "upaCVcL43bFzzZaGTtGZi_tU2J64oJEA" }, { "name": "초대 수락(1회용) → member · 재사용 거부", "ok": true, "detail": { "reuse": "invite_invalid" } }, { "name": "권한 없는 구성원의 변경 API → 403", "ok": true, "detail": { "requiredRole": [ "owner", "admin" ], "yourRole": "member" } } ], "evidence": null }, { "no": 3, "title": "상품 주문, 결제 확인, 권리 활성화", "verdict": "verified_real", "note": "", "steps": [ { "name": "상품 목록(공개 버전·가격·한도)", "ok": true, "detail": { "count": 2, "id": "pv_01a178834fac072b5600ce1e60", "name": "팀", "price": 49000, "sites": 3 } }, { "name": "주문 제출(수동 결제, 독립 메일 옵션 포함) → 결제 대기", "ok": true, "detail": { "id": "o_01a1789f68c3298aec8ad337e8", "group_id": "g_01a1789f67b12a216acd1955fa", "order_no": "AW-20261026-0003", "kind": "new", "product_version_id": "pv_01a178834fac072b5600ce1e60", "items_json": "[{\"type\":\"product\",\"id\":\"team\",\"name\":\"팀\",\"qty\":1,\"unit_price\":49000,\"amount\":49000,\"tax\":4900,\"target_type\":\"group\",\"target_id\":null,\"grants\":{\"sites\":3,\"web_disk\":21474836480,\"web_out\":214748364800,\"mail_storage\":21474836480,\"mail_msgs\":10000,\"mailboxes\":20}},{\"type\":\"option\",\"id\":\"standalone_mail\",\"name\":\"독립 메일 서비스\",\"qty\":1,\"unit_price\":9000,\"amount\":9000,\"tax\":900,\"target_type\":\"group\",\"target_id\":null,\"grants\":{\"mail_services\":1,\"mail_storage\":5368709120,\"mail_msgs\":3000,\"mailboxes\":5},\"policy\":null}]", "target_type": "group", "target_id": "g_01a1789f67b12a216acd1955fa", "amount": 58000, "tax": 5800, "total": 63800, "currency": "KRW", "status": "awaiting_payment", "payment_method": "manual_transfer", "payment_instructions_json": "{\"method\":\"manual_transfer\",\"bank\":\"검증용 은행(예시)\",\"account\":\"000-0000-0000-00 (검증 환경 예시 계좌)\",\"holder\":\"Ariweb 검증 환경\",\"note\":\"입금자명에 주문 번호를 적어 주세요. 운영자가 입금을 확인한 뒤 승인하면 권리가 활성화됩니다.\",\"deadline_days\":7}", "due_at": "2026-11-02T14:31:15.395Z", "paid_at": null, "paid_ref": null, "approved_at": null, "approved_by": null, "rejected_at": null, "rejected_reason": null, "expired_at": null, "cancelled_at": null, "idempotency_key": "g_01a1789f67b12a216acd1955fa:real-mvpcu283", "created_by": "u_01a1789f67540609561010fe91", "created_at": "2026-10-26T14:31:15.395Z", "updated_at": "2026-10-26T14:31:15.395Z", "note": null, "entitlement_ids_json": null, "terms_json": "{\"acceptedAt\":\"2026-10-26T14:31:15.395Z\",\"productVersion\":\"pv_01a178834fac072b5600ce1e60\",\"terms\":\"v0.1.1\"}", "subscription_id": null, "items": [ { "type": "product", "id": "team", "name": "팀", "qty": 1, "unit_price": 49000, "amount": 49000, "tax": 4900, "target_type": "group", "target_id": null, "grants": { "sites": 3, "web_disk": 21474836480, "web_out": 214748364800, "mail_storage": 21474836480, "mail_msgs": 10000, "mailboxes": 20 } }, { "type": "option", "id": "standalone_mail", "name": "독립 메일 서비스", "qty": 1, "unit_price": 9000, "amount": 9000, "tax": 900, "target_type": "group", "target_id": null, "grants": { "mail_services": 1, "mail_storage": 5368709120, "mail_msgs": 3000, "mailboxes": 5 }, "policy": null } ], "payment_instructions": { "method": "manual_transfer", "bank": "검증용 은행(예시)", "account": "000-0000-0000-00 (검증 환경 예시 계좌)", "holder": "Ariweb 검증 환경", "note": "입금자명에 주문 번호를 적어 주세요. 운영자가 입금을 확인한 뒤 승인하면 권리가 활성화됩니다.", "deadline_days": 7 }, "entitlement_ids": [], "terms": { "acceptedAt": "2026-10-26T14:31:15.395Z", "productVersion": "pv_01a178834fac072b5600ce1e60", "terms": "v0.1.1" }, "statusLabel": "결제 대기", "product": { "id": "pv_01a178834fac072b5600ce1e60", "name": "팀", "version": 1, "billingCycle": "monthly" }, "nextStep": "안내된 계좌로 63,800 원 을 입금하세요. 운영자가 입금을 확인한 뒤 승인하면 권리가 활성화됩니다.", "canCancel": true, "lastCancellableStep": "운영자 승인 전까지", "remaining": null, "policyNotes": { "paymentDeadlineDays": 7, "restrictionAfterUnpaidDays": 14, "restrictionEffect": "신규 배포·설정 변경·새 메일함 생성 제한(기존 서비스·조회·삭제·내보내기 유지)" } } }, { "name": "입금 확인 전 승인 거부(409)", "ok": true, "detail": "payment_not_confirmed" }, { "name": "운영자 입금 확인 → 승인 → 권리 활성화", "ok": true, "detail": { "paid": "awaiting_approval", "approved": "approved", "granted": 10 } }, { "name": "고객 결제 화면: 활성 상품·권리·다음 청구일", "ok": true, "detail": { "subs": 1, "nextBilling": "2026-11-26T14:31:15.451Z" } } ], "evidence": { "orderNo": "AW-20261026-0003", "bill": { "subs": 1, "nextBilling": "2026-11-26T14:31:15.451Z" } } }, { "no": 4, "title": "초안 사이트 생성", "verdict": "verified_real", "note": "실제 Webmaker 에 프로젝트 생성(내부 API 서명 호출)", "steps": [ { "name": "사이트 생성(새 Webmaker 프로젝트 · 관리형) → 초안", "ok": true, "detail": { "id": "s_01a1789f690cb9115f0330d2e8", "group_id": "g_01a1789f67b12a216acd1955fa", "name": "검증 사이트 mvpcu283", "purpose": "실제 환경 검증", "webmaker_project_id": "85e1859a8638022beb761f1ec4ccfc93", "template": null, "lang": "ko", "timezone": "Asia/Seoul", "lifecycle": "draft", "deploy_mode": "managed", "primary_domain": null, "site_count_state": "none", "site_count_reservation_id": null, "server_id": null, "external_agent_id": null, "current_version": null, "current_deployment_id": null, "deploy_verify": null, "health": "unknown", "health_checked_at": null, "maintenance": 0, "search_visible": 1, "description": null, "settings_json": null, "paused_at": null, "cancel_at": null, "retention_until": null, "delete_after": null, "deleted_at": null, "created_by": "u_01a1789f67540609561010fe91", "created_at": "2026-10-26T14:31:15.468Z", "updated_at": "2026-10-26T14:31:15.519Z", "runtime": "static", "consent_version": null, "pending_cleanup_json": null, "return_due_at": null, "last_deploy_at": null, "last_external_check_json": null, "next_job_json": null, "mail_choice": null, "next_notice_at": null, "delete_hold_reason": null, "public_stopped_at": null, "prev_lifecycle": null, "settings": {}, "pendingCleanup": null, "lastExternalCheck": null, "nextJob": null } }, { "name": "초안 목록·사용량(사이트 수 미소비)", "ok": true, "detail": { "drafts": 1, "lifecycle": "draft", "projectId": null } } ], "evidence": null }, { "no": 5, "title": "Webmaker에서 페이지 제작", "verdict": "partial", "note": "제작 화면 진입(SSO)은 실제 Webmaker 로 확인 · 페이지 제작(AI 생성·저장)은 사람이 Webmaker 화면에서 수행해야 하므로 미수행", "steps": [ { "name": "제작 화면 열기: 포털 SSO 티켓 → 실제 Webmaker /api/auth/sso 302(1회용)", "ok": true, "detail": { "portal": 302, "webmaker": 302, "webmakerLocation": "/?site=85e1859a8638022beb761f1ec4ccfc93", "reuse": 403 } }, { "name": "저장본 목록·배포 전 확인(실제 Webmaker 프로젝트)", "ok": true, "detail": { "versionsStatus": 200, "versions": 0, "precheck": true } } ], "evidence": { "sso": { "portal": 302, "webmaker": 302, "webmakerLocation": "/?site=85e1859a8638022beb761f1ec4ccfc93", "reuse": 403 }, "ver": { "versionsStatus": 200, "versions": 0, "precheck": true } } }, { "no": 6, "title": "관리형 배포", "verdict": "partial", "note": "배포 요청이 거부됨: precheck_failed — 배포 전 확인에서 차단된 항목이 있습니다 (저장본이 없어 배포할 내용이 없음; 사람이 Webmaker 에서 페이지를 저장한 뒤 수행)", "steps": [ { "name": "배포 요청(관리형) → HAL 작업·사이트 수 예약", "ok": true, "detail": { "status": 409, "error": "precheck_failed", "message": "배포 전 확인에서 차단된 항목이 있습니다" } } ], "evidence": null }, { "no": 7, "title": "도메인 연결과 HTTPS 발급", "verdict": "not_verified", "note": "실제 소유 도메인과 공개 DNS(TXT·A) 변경이 필요 — 이번 작업은 공개 DNS 를 바꾸지 않음", "steps": [], "evidence": null }, { "no": 8, "title": "외부 주소에서 사이트 확인", "verdict": "not_verified", "note": "공개 DNS(my/hal/사이트 도메인) 생성 전 — 외부 주소 접속은 레코드 생성 뒤 확인", "steps": [], "evidence": null }, { "no": 9, "title": "사이트 정보와 접속·사용량 통계 확인", "verdict": "partial", "note": "화면 데이터 제공 확인 · 실제 접속 통계(awstats 로그 집계)는 공개 DNS 로 외부 방문이 생긴 뒤 확인 가능", "steps": [ { "name": "사이트 정보·배포 이력·사용량 화면", "ok": true, "detail": { "overviewKeys": [ "ok", "overview", "refreshJob" ], "usageKeys": [ "ok", "overview", "allocations", "samples" ], "deployments": 0 } } ], "evidence": { "overviewKeys": [ "ok", "overview", "refreshJob" ], "usageKeys": [ "ok", "overview", "allocations", "samples" ], "deployments": 0 } }, { "no": 10, "title": "사이트 대표 메일과 메일함 생성", "verdict": "partial", "note": "실제 AriMail 테넌트·메일함 생성 확인 · 활성화는 도메인 DNS(MX/SPF/DKIM) 반영이 필요해 외부 대기", "steps": [ { "name": "사이트 연결 도메인 등록(검증 전용 이름, 소유 확인은 외부 대기)", "ok": true, "detail": { "id": "d_01a1789f6a07e57873e2f0c05f" } }, { "name": "사이트 대표 메일 생성 → 실제 AriMail 테넌트 준비", "ok": true, "detail": { "id": "msv_01a1789f6a0d5f702a1581f2fd", "status": "needs_setup", "kind": "site_bound" } }, { "name": "메일함 생성(초기 비밀번호 1회 표시) → 재조회에 비밀번호 없음 · 실제 AriMail 계정", "ok": true, "detail": { "id": "mb_01a1789f6e723ade68602baaf9", "address": "kim@check-mvpcu283.ariweb.net", "shownOnce": true, "leakedOnReload": false } }, { "name": "DNS 확인(미반영 구분) → 활성화 작업은 외부 대기", "ok": true, "detail": { "dnsOk": true, "items": [], "activate": 200, "job": "queued", "waitReason": "" } } ], "evidence": { "d": { "id": "d_01a1789f6a07e57873e2f0c05f" }, "svc": { "id": "msv_01a1789f6a0d5f702a1581f2fd", "status": "needs_setup", "kind": "site_bound" }, "mb": { "id": "mb_01a1789f6e723ade68602baaf9", "address": "kim@check-mvpcu283.ariweb.net", "shownOnce": true, "leakedOnReload": false }, "dns": { "dnsOk": true, "items": [], "activate": 200, "job": "queued", "waitReason": "" } } }, { "no": 11, "title": "외부 송신, 수신, 회신 확인", "verdict": "not_verified", "note": "검증용 수신 주소(자동 응답 메일함)와 고객 도메인 MX 반영 필요", "steps": [], "evidence": null }, { "no": 12, "title": "독립 메일 서비스 생성", "verdict": "verified_real", "note": "", "steps": [ { "name": "메일 전용 도메인 등록(purpose mail)", "ok": true, "detail": "d_01a1789f6e94cf197bdcb0cb81" }, { "name": "독립 메일 서비스 생성(독립 옵션 소비·사이트 수 미소비)", "ok": true, "detail": { "id": "msv_01a1789f6e9604bd5f49bb08e1", "kind": "standalone", "status": "needs_setup", "usage": {} } } ], "evidence": { "id": "msv_01a1789f6e9604bd5f49bb08e1", "kind": "standalone", "status": "needs_setup", "usage": {} } }, { "no": 13, "title": "백업 옵션 구매와 첫 백업 확인", "verdict": "partial", "note": "백업 옵션 주문·승인·활성화는 실제 확인. 수동 백업 실행은 사이트가 초안(미배포)이라 정기 실행기가 옵션을 site_not_deployed 로 중지해 Agent 백업까지 가지 않음(설계대로) — Webmaker 에서 페이지를 저장·배포한 뒤 다시 수행. 판정은 검증기의 시간 초과를 운영자가 DB 상태(옵션 paused: site_not_deployed)로 확인해 부분 확인으로 정정", "steps": [ { "name": "백업 옵션 주문(대상 사이트 지정) → 입금 확인 → 승인", "ok": true, "detail": { "orderNo": "AW-20261026-0004", "approved": "approved" } }, { "name": "백업 화면(옵션 보유 여부)", "ok": true, "detail": {} }, { "name": "옵션 활성화(확인 필수) → 첫 백업 예정", "ok": true, "detail": { "status": "active" } }, { "name": "지금 백업 실행 → 실제 Agent 가 사이트 파일·데이터를 묶어 저장(완료 대기 120초)", "ok": false, "error": "백업 완료 대기 시간 초과" } ], "evidence": { "optionState": { "status": "paused", "paused_reason": "site_not_deployed", "updated_at": "2026-10-26T14:32:11.943Z" }, "siteLifecycle": "draft", "lastJob": { "status": "failed", "error": "대상 서버 또는 Agent 가 필요합니다" } } }, { "no": 14, "title": "백업 복원과 외부 사이트 확인", "verdict": "not_verified", "note": "복원 승인(3단계)·외부 사이트 확인은 공개 DNS 와 복원 대상 배포본 필요(흐름 6 선행)", "steps": [], "evidence": null }, { "no": 15, "title": "관리형 사이트 서버 이전과 외부 확인", "verdict": "not_verified", "note": "관리 서버가 1대뿐이라 서버 간 이전 미수행", "steps": [], "evidence": null }, { "no": 16, "title": "외부 배포 사이트 생성과 배포", "verdict": "not_verified", "note": "외부 Linux 서버 없음", "steps": [], "evidence": null }, { "no": 17, "title": "사용량 경고와 한도 동작 확인", "verdict": "not_verified", "note": "실제 사용량이 한도에 이르려면 운영 트래픽·시간 경과 필요", "steps": [], "evidence": null }, { "no": 18, "title": "상품 축소 보류와 정리 후 적용", "verdict": "not_verified", "note": "축소 보류는 실제 사용 중 리소스가 필요(로컬 E2E 확인)", "steps": [], "evidence": null }, { "no": 19, "title": "사이트 수 반환과 대표 메일의 독립 전환", "verdict": "not_verified", "note": "사이트 수 반환·독립 전환은 흐름 10 활성화(외부 DNS) 뒤 가능", "steps": [], "evidence": null }, { "no": 20, "title": "사이트 소유권 이전", "verdict": "not_verified", "note": "두 번째 소유자 그룹의 심사 절차를 포함해 로컬 E2E 로 확인, 실환경 미수행", "steps": [], "evidence": null }, { "no": 21, "title": "중지, 해지, 보존 예정일 표시", "verdict": "not_verified", "note": "보존 예정일 표시는 시간 경과 필요(로컬 E2E 확인)", "steps": [], "evidence": null }, { "no": 22, "title": "HAL 우선 배포 후 HAL을 통한 전체 모듈 배포", "verdict": "verified_real", "note": "HAL 부트스트랩 → 첫 Agent → HAL 작업으로 portal·webmaker·arimail·agent 배포, 실제 버전 0.1.1·건강 ok", "steps": [ { "name": "HAL 릴리스·모듈 목표/실제 버전(배포 영수증)", "ok": true, "detail": { "running": { "complete": true, "firstInstall": false, "releaseVersion": "0.1.1", "mainCommit": "3951be5836a753e60f11d6b363025059fcf6d448", "artifactSha256": "e7741899cd7387b0155c9d3bf8ff14cc4026880db999c9d59347744390415e84", "halRunningVersion": "0.1.1", "firstAgent": "ag_01a178829f1c3d88381d2c0c75", "manualInstallLocked": true }, "targets": [ { "module": "agent", "target": "0.1.1", "actual": "0.1.1", "health": "ok" }, { "module": "arimail", "target": "0.1.1", "actual": "0.1.1", "health": "ok" }, { "module": "backup", "target": null, "actual": "0.1.1", "health": "ok" }, { "module": "hal", "target": "0.1.1", "actual": "0.1.1", "health": "ok" }, { "module": "observability", "target": null, "actual": "0.1.1", "health": "ok" }, { "module": "portal", "target": "0.1.1", "actual": "0.1.1", "health": "ok" }, { "module": "webmaker", "target": "0.1.1", "actual": "0.1.1", "health": "ok" } ] } }, { "name": "HAL 을 통한 모듈 배포 작업(module.deploy) 결과", "ok": true, "detail": [ { "label": "portal 0.1.1 배포", "status": "done" }, { "label": "hal 0.1.1 배포", "status": "done" }, { "label": "portal 0.1.1 배포", "status": "done" }, { "label": "portal 0.1.1 배포", "status": "done" }, { "label": "agent 0.1.1 배포", "status": "done" }, { "label": "arimail 0.1.1 배포", "status": "done" }, { "label": "hal 0.1.1 배포", "status": "done" }, { "label": "agent 0.1.1 배포", "status": "done" }, { "label": "arimail 0.1.1 배포", "status": "failed" }, { "label": "webmaker 0.1.1 배포", "status": "done" }, { "label": "portal 0.1.1 배포", "status": "done" } ] } ], "evidence": { "rel": { "running": { "complete": true, "firstInstall": false, "releaseVersion": "0.1.1", "mainCommit": "3951be5836a753e60f11d6b363025059fcf6d448", "artifactSha256": "e7741899cd7387b0155c9d3bf8ff14cc4026880db999c9d59347744390415e84", "halRunningVersion": "0.1.1", "firstAgent": "ag_01a178829f1c3d88381d2c0c75", "manualInstallLocked": true }, "targets": [ { "module": "agent", "target": "0.1.1", "actual": "0.1.1", "health": "ok" }, { "module": "arimail", "target": "0.1.1", "actual": "0.1.1", "health": "ok" }, { "module": "backup", "target": null, "actual": "0.1.1", "health": "ok" }, { "module": "hal", "target": "0.1.1", "actual": "0.1.1", "health": "ok" }, { "module": "observability", "target": null, "actual": "0.1.1", "health": "ok" }, { "module": "portal", "target": "0.1.1", "actual": "0.1.1", "health": "ok" }, { "module": "webmaker", "target": "0.1.1", "actual": "0.1.1", "health": "ok" } ] }, "jobs": [ { "label": "portal 0.1.1 배포", "status": "done" }, { "label": "hal 0.1.1 배포", "status": "done" }, { "label": "portal 0.1.1 배포", "status": "done" }, { "label": "portal 0.1.1 배포", "status": "done" }, { "label": "agent 0.1.1 배포", "status": "done" }, { "label": "arimail 0.1.1 배포", "status": "done" }, { "label": "hal 0.1.1 배포", "status": "done" }, { "label": "agent 0.1.1 배포", "status": "done" }, { "label": "arimail 0.1.1 배포", "status": "failed" }, { "label": "webmaker 0.1.1 배포", "status": "done" }, { "label": "portal 0.1.1 배포", "status": "done" } ] } }, { "no": 23, "title": "실패 작업의 재시도와 되돌리기", "verdict": "not_verified", "note": "실패 작업 재시도·되돌리기는 배포 중 실제로 2회 발생(백업 실패→재시도 성공, 마이그레이션 실패→되돌리기) — 기록은 VERSION_HISTORY·이 문서의 배포 경과 참고", "steps": [], "evidence": null }, { "no": 24, "title": "운영자 승인, 감사 기록, 고객 알림의 일치", "verdict": "partial", "note": "", "steps": [ { "name": "고객 감사 기록(order.approve) · 알림 · 운영자 주문 상태 일치", "ok": true, "detail": { "auditEntries": 0, "notifications": 6, "status": "approved" } }, { "name": "HAL 감사 기록(deploy.module)", "ok": true, "detail": 10 } ], "evidence": { "a": { "auditEntries": 0, "notifications": 6, "status": "approved" }, "halDeployAudit": 10 } }, { "no": 25, "title": "HAL, 로그인, 비밀정보 관리, 인증서 기반의 재해복구 훈련", "verdict": "not_verified", "note": "재해복구 훈련은 다른 호스트 복원이 필요(로컬 E2E 부분 확인)", "steps": [], "evidence": null }, { "no": 26, "title": "새로 고침, 재로그인, HAL 재시작 후 진행 작업 상태 유지", "verdict": "verified_real", "note": "", "steps": [ { "name": "HAL 재시작 전: 운영자 세션·작업 수·서버 등록", "ok": true, "detail": { "jobs": 23, "servers": 1 } }, { "name": "systemctl restart ariweb-hal → 건강 회복 → 같은 세션으로 작업 수·서버 유지", "ok": true, "detail": { "uptimeSec": 1, "sessionKept": true, "jobs": 23, "servers": 1, "agentOnline": true } }, { "name": "Agent 가 재접속(heartbeat) 해 서버 ready 유지", "ok": true, "detail": [ { "name": "srv1953374 (ariweb.net)", "status": "ready", "lastSeen": "2026-10-26T14:33:13.381Z" } ] } ], "evidence": { "before": { "jobs": 23, "servers": 1 }, "after": { "uptimeSec": 1, "sessionKept": true, "jobs": 23, "servers": 1, "agentOnline": true }, "ag": [ { "name": "srv1953374 (ariweb.net)", "status": "ready", "lastSeen": "2026-10-26T14:33:13.381Z" } ] } }, { "no": 27, "title": "마지막 사이트 수·용량·메일함 동시 요청 시 하나만 성공", "verdict": "not_verified", "note": "동시 요청 경합은 로컬 E2E 로 확인, 실환경 미수행", "steps": [], "evidence": null }, { "no": 28, "title": "외부 Linux 서버 Agent 연결·배포·재배포·제거·실패 정리", "verdict": "not_verified", "note": "외부 Linux 서버 없음", "steps": [], "evidence": null }, { "no": 29, "title": "HAL 장애 중 기존 서비스 유지와 신규 변경 제한 표시", "verdict": "not_verified", "note": "HAL 장애 상태 표시는 로컬 E2E 로 확인(흐름 26 에서 재시작 중 복구만 실환경 확인)", "steps": [], "evidence": null }, { "no": 30, "title": "모듈 업데이트, 일부 서버 실패, 대상별 되돌리기와 상태 조정", "verdict": "partial", "note": "모듈 갱신(수정 artifact 재등록 → HAL 작업으로 agent·hal 갱신) 4건 완료 확인 · 일부 서버 실패·대상별 되돌리기는 서버 1대뿐이라 미수행", "steps": [], "evidence": [ { "label": "hal 0.1.1 배포", "status": "done" }, { "label": "agent 0.1.1 배포", "status": "done" }, { "label": "hal 0.1.1 배포", "status": "done" }, { "label": "agent 0.1.1 배포", "status": "done" } ] }, { "no": 31, "title": "긴급 복구의 승인 부족·만료 자격·허용 범위 밖 작업 거부와 정상 복구", "verdict": "not_verified", "note": "긴급 복구 절차는 로컬 E2E 로 확인", "steps": [], "evidence": null }, { "no": 32, "title": "Source 옵션 만료 후 30일 read-only, clone·export와 삭제 완료", "verdict": "not_verified", "note": "Source 옵션 30일 만료는 시간 경과 필요", "steps": [], "evidence": null }, { "no": 33, "title": "메일 서비스의 사이트 대표→독립 전환 후 항목 유지", "verdict": "not_verified", "note": "흐름 19 와 같은 외부 DNS 선행 조건", "steps": [], "evidence": null }, { "no": 34, "title": "일시 중지·해지 예약·보존·삭제 단계의 표시 일치", "verdict": "not_verified", "note": "시간 경과 필요(로컬 E2E 확인)", "steps": [], "evidence": null } ], "bugs": [], "test": { "alice": "alice-mvpcu283@check.ariweb.net", "site": "s_01a1789f690cb9115f0330d2e8", "mailDomain": "check-mvpcu283.ariweb.net", "order": "o_01a1789f68c3298aec8ad337e8" } }