Files
document-haness/examples/output/retry-policy-demo/final/evidence-map.json
T

471 lines
14 KiB
JSON

{
"schema_version": 2,
"document": "API 재시도는 횟수가 아니라 부하 예산으로 설계한다",
"citation_style": "hidden",
"reader_document_contains_internal_source_ids": false,
"sections": [
{
"section_id": "01-problem-scene",
"intent": "problem_scene",
"title": "코드보다 먼저 드러난 문제",
"reader_question": "독자가 공감할 수 있는 구체적인 상황에서 어떤 문제가 드러났는가?",
"decision_requirements": [],
"evidence": [
{
"id": "S1",
"title": "Timeouts, retries, and backoff with jitter",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S2",
"title": "RFC 9110, HTTP Semantics — Idempotent Methods",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.2",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S3",
"title": "Retry strategy",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://cloud.google.com/storage/docs/retry-strategy",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
}
],
"evidence_gap": false
},
{
"section_id": "02-constraints",
"intent": "constraints",
"title": "문제를 어렵게 만든 제약",
"reader_question": "단순한 해법을 막은 프로젝트 제약은 무엇이었는가?",
"decision_requirements": [],
"evidence": [
{
"id": "S1",
"title": "Timeouts, retries, and backoff with jitter",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S2",
"title": "RFC 9110, HTTP Semantics — Idempotent Methods",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.2",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S3",
"title": "Retry strategy",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://cloud.google.com/storage/docs/retry-strategy",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
}
],
"evidence_gap": false
},
{
"section_id": "03-options",
"intent": "options",
"title": "검토한 선택지와 막힌 지점",
"reader_question": "어떤 대안들을 검토했고 각각 어디에서 비용이 생겼는가?",
"decision_requirements": [
"상황·제약",
"선택",
"선택 이유",
"검토한 대안",
"수용한 비용",
"보완 가드레일"
],
"evidence": [
{
"id": "S1",
"title": "Timeouts, retries, and backoff with jitter",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S2",
"title": "RFC 9110, HTTP Semantics — Idempotent Methods",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.2",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S3",
"title": "Retry strategy",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://cloud.google.com/storage/docs/retry-strategy",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
}
],
"evidence_gap": false
},
{
"section_id": "04-decision-rationale",
"intent": "decision_rationale",
"title": "선택의 이유와 지킨 경계",
"reader_question": "왜 이 선택을 했으며 무엇을 일부러 포기하거나 금지했는가?",
"decision_requirements": [
"상황·제약",
"선택",
"선택 이유",
"검토한 대안",
"수용한 비용",
"보완 가드레일"
],
"evidence": [
{
"id": "S1",
"title": "Timeouts, retries, and backoff with jitter",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S2",
"title": "RFC 9110, HTTP Semantics — Idempotent Methods",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.2",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S3",
"title": "Retry strategy",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://cloud.google.com/storage/docs/retry-strategy",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
}
],
"evidence_gap": false
},
{
"section_id": "05-mechanism",
"intent": "mechanism",
"title": "선택이 코드와 흐름에 반영되는 방식",
"reader_question": "결정이 모듈, 인터페이스, 제어 흐름에 어떻게 반영되는가?",
"decision_requirements": [],
"evidence": [
{
"id": "S1",
"title": "Timeouts, retries, and backoff with jitter",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S2",
"title": "RFC 9110, HTTP Semantics — Idempotent Methods",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.2",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S3",
"title": "Retry strategy",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://cloud.google.com/storage/docs/retry-strategy",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
}
],
"evidence_gap": false
},
{
"section_id": "06-evidence-verification",
"intent": "evidence_verification",
"title": "결정이 지켜지는지 확인하는 방법",
"reader_question": "설명한 경계와 결과가 실제로 유지되는지 어떻게 확인하는가?",
"decision_requirements": [],
"evidence": [
{
"id": "S1",
"title": "Timeouts, retries, and backoff with jitter",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S2",
"title": "RFC 9110, HTTP Semantics — Idempotent Methods",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.2",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S3",
"title": "Retry strategy",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://cloud.google.com/storage/docs/retry-strategy",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
}
],
"evidence_gap": false
},
{
"section_id": "07-tradeoffs",
"intent": "tradeoffs",
"title": "얻은 것, 잃은 것, 적용하지 않을 때",
"reader_question": "이 선택의 비용과 한계는 무엇이며 언제 다른 선택이 나은가?",
"decision_requirements": [
"상황·제약",
"선택",
"선택 이유",
"검토한 대안",
"수용한 비용",
"보완 가드레일"
],
"evidence": [
{
"id": "S1",
"title": "Timeouts, retries, and backoff with jitter",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S2",
"title": "RFC 9110, HTTP Semantics — Idempotent Methods",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.2",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S3",
"title": "Retry strategy",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://cloud.google.com/storage/docs/retry-strategy",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
}
],
"evidence_gap": false
},
{
"section_id": "08-conclusion",
"intent": "conclusion",
"title": "결국 지키려던 것은 무엇이었나",
"reader_question": "세부 기술을 걷어냈을 때 남는 판단은 무엇인가?",
"decision_requirements": [],
"evidence": [],
"evidence_gap": false
}
],
"sources": [
{
"id": "S1",
"title": "Timeouts, retries, and backoff with jitter",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S2",
"title": "RFC 9110, HTTP Semantics — Idempotent Methods",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.2",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
},
{
"id": "S3",
"title": "Retry strategy",
"source_type": "external",
"status": "",
"path": "",
"heading": "",
"line_start": null,
"line_end": null,
"url": "https://cloud.google.com/storage/docs/retry-strategy",
"accessed": "2026-07-23",
"claim_ids": [],
"decision_ids": [],
"priority": 0.0
}
]
}