AI로 장애 포스트모템 초안 생성하기
에이전트가 상태 페이지의 장애 내용과 영향받은 결제 기록을 결합해 비난 없는 포스트모템 템플릿을 채웁니다.
- 파일
- 읽기 전용 연결
- 웹
- 예산 상한
실제 실행 보기
2026년 10월 7일에 기록된 실제 실행을 다시 재생합니다. 모델: openai/gpt-6-luna.
{
"payment_id": "pay_124",
"status_url": "https://ephemer.al/api/samples/status"
}- 대기 중예산 $0.05 예약됨
- MicroVMmicroVM ready
- MicroVMworker started · shell off · web on
- 연결payments GET /payments/pay_124
- 연결payments GET /payments/pay_124/attempts
- 웹
web_fetch https://ephemer.al/api/samples/status - 파일
read postmortem-template.md - 결과
payments GET → 200 - 결과
payments GET → 200 - 결과
web https://ephemer.al/api/samples/status → 200 - MicroVMmicroVM destroyed
- 성공모델 호출 2회, 토큰 4,039개기록된 출력 (영어)
Postmortem: Elevated card payment errors in Europe
Blameless. Describe what happened and what the system allowed, not who did it.
Summary (2 sentences)
On 2026-10-05, some EU card payments failed with processor timeouts during an incident. Payment
pay_124failed with a processor timeout and was not retried in the recorded attempt.Impact (who, how many, how long, money if known)
One failed payment is documented: €129.00. Total customers and payments affected are not known. The incident timeline says affected failures occurred between 13:25 and 14:15 UTC.
Timeline (UTC, one line each, only facts from the sources)
- 2026-10-05 13:31 UTC — Incident investigating: some EU card payments failed with a processor timeout.
- 2026-10-05 13:42:51 UTC —
pay_124failed; its attempt recorded a processor timeout. - 2026-10-05 13:58 UTC — Incident identified as a network change at one acquiring partner.
- 2026-10-05 14:20 UTC — Incident resolved; card payments in Europe were processing normally. Failed payments from 13:25–14:15 UTC could be retried.
Cause
The incident source attributes the errors to a network change at one acquiring partner.
What went well
The incident was identified and resolved, and the status update said affected payments could be retried.
Action items (owner role, not a person)
Not known from the sources.
- 워커 폐기됨$0.004235 청구, $0.045765 반환
직접 실행하기
요청이 모두 채워진 상태로 플레이그라운드에서 샘플을 엽니다. 내 계정에서 표시된 예산 안에서, 같은 읽기 전용 샘플 시스템을 대상으로 실행됩니다.
이 샘플의 예산: $0.05
작동 방식
읽기 전용 소스 두 개와 템플릿 하나입니다. 에이전트는 상태 페이지에서 장애 타임라인을, 결제 API에서 실패한 결제를 읽고, 그 소스가 말하는 내용만 작성합니다. 후속 조치에는 사람이 아니라 역할을 적습니다.
에이전트가 할 수 있는 일과 할 수 없는 일
권한은 요청의 일부입니다. 여기에 나열되지 않은 것은 실행에서 사용할 수 없습니다.
| 설정 | 허용 범위 |
|---|---|
| 연결 | payments: ephemer.al/api/samples/payments-api에서 GET만 허용 |
| 웹 | ephemer.al만 허용 |
| 셸 | 꺼짐 |
| 파일 | postmortem-template.md (읽기 전용) |
| 데이터 무보존 | 꺼짐: 기록이 30일간 보관됩니다 |
| 예산 | $0.05, 하드 캡 |
| 시간 제한 | 120초 |
자격 증명은 머신 안으로 들어가지 않습니다. 브로커가 각 호출에 자격 증명을 추가하고 위의 메서드를 강제합니다.
코드
샘플이 보내는 정확한 요청입니다. EPHEMERAL_API_KEY를 내 조직의 멤버 키로 설정하세요.
curl -X POST $EPHEMERAL_URL/v1/runs \
-H "Authorization: Bearer $EPHEMERAL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @request.json요청에 포함된 파일
인라인으로 전달되므로 먼저 업로드할 필요가 없습니다. 에이전트는 각각을 읽기 전용 파일로 봅니다.
postmortem-template.md
# Postmortem: <title>
Blameless. Describe what happened and what the system allowed, not who did it.
## Summary (2 sentences)
## Impact (who, how many, how long, money if known)
## Timeline (UTC, one line each, only facts from the sources)
## Cause
## What went well
## Action items (owner role, not a person)
전체 요청 본문 request.json
파일이 인라인으로 포함된 같은 본문입니다.
{
"prompt": "Write a postmortem draft for the incident that affected the payment in input.payment_id. Read the payment and its attempts from the payments connection, and the incident timeline from input.status_url with web_fetch. Fill postmortem-template.md, at most 250 words in total. Put every timeline line in UTC and only from the sources. If the sources do not show something (such as the number of customers affected), write 'not known' instead of estimating. Use only what the data returns and never guess; if a call fails or a field is missing, say so.",
"input": {
"payment_id": "pay_124",
"status_url": "https://ephemer.al/api/samples/status"
},
"files": [
{
"path": "postmortem-template.md",
"content": "# Postmortem: <title>\n\nBlameless. Describe what happened and what the system allowed, not who did it.\n\n## Summary (2 sentences)\n## Impact (who, how many, how long, money if known)\n## Timeline (UTC, one line each, only facts from the sources)\n## Cause\n## What went well\n## Action items (owner role, not a person)\n"
}
],
"connections": {
"payments": {
"type": "http",
"url": "https://ephemer.al/api/samples/payments-api",
"auth": {
"type": "bearer",
"token": "sample_read_key"
},
"allowed_methods": [
"GET"
],
"instructions": "GET /payments/{id} returns a payment (status, amount in cents, currency, failure_code, failure_message, attempt_count). GET /payments/{id}/attempts returns its attempts."
}
},
"web": {
"allow": [
"ephemer.al"
],
"search": false
},
"shell": false,
"timeout_seconds": 120,
"max_cost_micros": 50000
}