Agent 모듈 설치 경로의 루트 재정의 반영, E2E 흐름 30 판정 로직 수정, 검증 기록 갱신
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
98f4182bbb
commit
acb69c7650
@@ -28,7 +28,9 @@ export async function run({ env, report, state }) {
|
||||
const d = await s.run('agent 모듈을 두 서버 + 없는 서버에 배포 → 대상별 자식 작업·일부 실패를 성공으로 묶지 않음(partial/all_failed)', async () => { const r = await env.ops.post('/ops/api/modules/agent/deploy', { version: '0.1.1', serverIds: [web.serverId, bk.serverId, 'srv_missing_e2e'], nonce: 'e2e-partial' }); const j = await waitOpsJob(env, r.json.job.id, 10000); const x = await env.ops.get(`/ops/api/jobs/${r.json.job.id}`); return { status: x.json?.job?.status, errorCode: x.json?.job?.errorCode, overall: x.json?.children?.overall, children: x.json?.children?.children?.map((c) => (c.subject?.serverId || '') + ':' + c.status + ':' + (c.error || '').slice(0, 80)), timedOut: !!j?.timedOut }; });
|
||||
const h = await s.run('모듈 건강 확인 작업·목표/실제 버전 차이(drift) 표시·다시 맞추기 작업', async () => { const r = await env.ops.post('/ops/api/modules/agent/health', { serverIds: [web.serverId] }); const j = await waitOpsJob(env, r.json.job.id, 5000); const ov = await env.ops.get('/ops/api/overview'); const rc = await env.ops.post('/ops/api/modules/reconcile', { module: 'agent' }); return { health: j?.job?.status || 'timeout', drift: ov.json.drift?.length, reconcile: rc.status, overviewComponents: ov.json.components?.map((c) => c.name + ':' + c.status) }; });
|
||||
const rb = await s.run('되돌리기는 3단계 확인(영향 범위·식별정보·최종 실행) 없이는 거부', async () => { const a = await env.ops.post('/ops/api/modules/agent/rollback', { serverIds: [web.serverId] }); const b = await env.ops.post('/ops/api/modules/agent/rollback', { serverIds: [web.serverId], confirmImpact: true, confirmIdentifiers: ['wrong'] }); return { step1: a.json?.error, step2: b.json?.error }; });
|
||||
report.flow(30, 'failed', { steps: s.list, note: '대상별 자식 작업 생성·되돌리기 3단계 확인 거부는 확인. 일부 실패 요약·건강 확인·drift 조정은 작업 엔진 교착(흐름 22 결함)으로 완료되지 않음', blockedBy: 22, evidence: { d, h, rb } });
|
||||
// 판정: 일부 실패가 partial 로 요약되고, 건강 확인이 끝나고, 되돌리기가 3단계 확인 없이는 거부되면 로컬 확인. 아니면 결함.
|
||||
const okAll = d && d.overall === 'partial' && d.status === 'failed' && h && h.health === 'done' && rb && rb.step1 === 'confirm_impact_required' && rb.step2 === 'identifiers_mismatch';
|
||||
report.flow(30, okAll ? 'verified_local' : 'failed', { steps: s.list, note: okAll ? '대상별 자식 작업·일부 실패 partial 요약(전체 성공으로 묶지 않음)·건강 확인·drift 조정·되돌리기 3단계 확인 거부' : '일부 실패 요약·건강 확인·drift 조정 또는 되돌리기 확인 규칙이 기대와 다름(증거 참조)', evidence: { d, h, rb } });
|
||||
} catch (e) { report.flow(30, 'partial', { steps: s.list, note: e.message }); } }
|
||||
// ---- 25 재해복구
|
||||
{ const s = steps(); try {
|
||||
|
||||
Reference in New Issue
Block a user