W23 미리보기 · 웹소설 본편 STARRY PASS 19 — 다섯 신호와 잠긴 한 행 보이는 숫자보다 누가 울렸고 누가 풀었는지가 더 중요했다
범위 개요 + D1–D6 · 월–토 p751–p780 상단 — W23 개요 + D1–D6
정본 상태 SOURCE AUDIT PASS PDF·package·display byte 폐쇄
실행 상태 W23 D1–D6 RUNTIME NOT_RUN runtimeRunsByPreview=0
공통 코어 · 트랙 선택 시 증권 기본 이 preview는 learner test·packaged local runner·external dashboard/notification을 실행하지 않았습니다. D1/D2 learner evidence와 D3/D4 local owner는 NOT_RUN, D5/D6는 preview 미실행·MANUAL_REVIEW_REQUIRED, external은 NOT_RUN_EXTERNAL입니다. p751–p780 상단 — W23 개요 + D1–D6만 포함하며 p780 하단 D7, p783 하단–p784 주간 통합·Green Gate, p785 W24는 제외합니다.
strict D1–D6 초회 예상시간은 8시간 5분–15시간 20분입니다. 공통 코어 · 트랙 선택 시 증권 기본이지만 W23 원문은 트랙 분기 없는 공통 관측성 주차입니다. 전체 코드 inventory는 canonical 3개·illustrative 8개·source-local tests 2개이며 aggregate 11/394/361/0/361/361/41/2/0, testsExecuted=0입니다. Q37·Q38은 prompt-only 원문을 바탕으로 한 비정본 예시입니다.
월요일, STARRY 제어실 벽에는 다섯 개의 계기판이 걸렸다. 니지카는 요청 속도와 오류와 지연을 한데 섞지 않고 http request, 완료 이체, 재시도, 대사 불일치, 오래 멈춘 idempotency 작업으로 나눴다. 히토리가 requestId와 accountId를 tag에 적으려 하자 료가 지웠다. “한 번만 나타나는 이름은 로그의 실마리이지, 수천 개 time series를 만드는 계기판 이름이 아니야.”
공식 장면컷은 분위기용이며, STARRY의 사건·대사·기술 수치는 원문 감사에 따른 비공식 학습 구성입니다.
그림 한눈에: 다섯 required metric과 LOW-cardinality tag 금지선을 한 catalog에서 봅니다.
catalog validator는 최소 다섯 행과 다섯 required 이름, type·LOW 표찰과 충분한 meaning을 살폈지만 실제 meter가 살아 있는지는 말하지 않았다. learner-owned CSV의 actual hash가 있어야 D1 evidence가 닫혔고, 이 preview에는 그 실행이 없었다.
화요일, 키타는 이체 한 건을 연주처럼 감쌌다. 성공하면 completed counter가 올랐고 RuntimeException이면 business_rejected를 올린 뒤 예외를 다시 던졌다. 곡이 끝나든 끊기든 Timer.Sample은 finally에서 멈췄다. 두 개의 SimpleMeterRegistry test는 그 좁은 행동을 설명했지만, 아직 Gradle이 실제로 연주한 기록은 아니었다.
그림 한눈에: 성공과 거절 결과를 나누고 duration sample은 finally에서 반드시 닫습니다.
공식 장면컷은 분위기용이며, STARRY의 사건·대사·기술 수치는 원문 감사에 따른 비공식 학습 구성입니다.
히토리는 tests=2라는 악보 숫자 옆에 testsExecuted=0을 함께 적었다. unit test가 맞아도 production transfer, exporter, dashboard, p95가 자동으로 Green이 되는 것은 아니었다.
수요일, 모든 요청에는 빨간 실 하나가 달렸다. 손님이 유효한 X-Request-Id를 가져오면 그대로 응답에 돌려주고, 없거나 모양이 틀리면 UUID 같은 새 실을 묶었다. 응답이 끝난 뒤에는 finally에서 MDC 실을 풀어 다음 손님의 기록과 엉키지 않게 했다. canonical gate는 정확히 두 test와 incident-runbook hash만 한 영수증에 묶었다.
그림 한눈에: header echo와 생성 경로가 모두 응답 뒤 MDC cleanup으로 닫힙니다.
대기 시간에는 Q37 표를 펼쳤다. transaction 하나에 leg 둘, audit 셋을 동시에 붙이자 여섯 줄이 됐다. child를 transaction별로 먼저 모아 한 줄씩 만든 뒤 join하니 금액 SUM이 중복되지 않았다. 원문은 문제만 주었기에 2×3=6은 비정본 반례라는 꼬리표를 달았다.
그림 한눈에: 1:N:N join 폭증을 중간 count와 child 선집계로 설명합니다.
목요일, 지하 rehearsal DB에서 두 transaction이 같은 probe 한 행을 향해 UPDATE했다. holder가 value를 1로 올리고 잠시 머무는 동안 waiter는 Lock에서 기다렸다. blocker가 보인 뒤 holder가 commit하자 wait는 0으로 사라지고 최종값은 2가 됐다. Compose가 만든 schema와 volume은 마지막에 깨끗이 치웠다.
그림 한눈에: same-row UPDATE/UPDATE의 ROW_UPDATE wait를 만들고 관찰·해제·정리합니다.
료는 p766의 짧은 ACCESS EXCLUSIVE·SELECT 메모에 선을 긋고 packaged canonical script를 펼쳤다. 구현과 Green marker는 분명히 UPDATE/UPDATE·ROW_UPDATE였다. 오래된 요약보다 실행 권한을 가진 정본을 우선하고, 그 충돌 자체도 숨기지 않았다.
공식 장면컷은 분위기용이며, STARRY의 사건·대사·기술 수치는 원문 감사에 따른 비공식 학습 구성입니다.
금요일, 세 경보가 벽에 걸렸다. 5xx rate, transfer p95, reconciliation mismatch였다. 각 표에는 window와 threshold뿐 아니라 severity, owner, 첫 query, runbook, 멈추는 조건이 적혔다. 그러나 alerts.md의 크기와 hash를 확인한 도장은 실제로 경보가 울리고 notification이 도착했다는 증거가 아니었다.
그림 한눈에: 세 alert마다 trigger와 clear, owner와 첫 query를 한 계약으로 묶습니다.
Q38에서는 두 기간의 SUCCESS 고객 집합을 DISTINCT한 뒤 INTERSECT했다. seed를 읽으면 expected customer_id=1 김민수였지만 query를 실행한 결과가 아니므로 비정본·미실행 표찰을 남겼다.
그림 한눈에: 두 half-open 기간에서 중복을 지운 고객 집합의 교집합을 구합니다.
토요일, 네 사람은 incident runbook을 계단처럼 정리했다. symptom에서 impact, check, mitigate, recovery verification, follow-up으로 내려갔다. DB timeout이면 readiness→pool→network→DB wait 순서로 좁혔고, 대사 불일치면 계좌를 격리해 source를 확인한 뒤 승인된 correction만 허용했다. 숫자를 빨리 맞추려고 balance를 자동 UPDATE하는 문은 잠가 두었다.
그림 한눈에: DB timeout과 mismatch를 승인된 복구·검증·후속조치까지 연결합니다.
마지막 칠판에는 learner, local, manual, external 네 칸이 있었다. D3 requestId gate와 D4 db-wait runner는 packaged local owner였지만 preview가 실행하지 않았다. D5·D6의 문서 의미는 사람이 봐야 했고 dashboard·notification은 공식 URL과 시간이 없으므로 NOT_RUN_EXTERNAL이었다.
그림 한눈에: learner artifact·packaged local owner·manual review·external evidence를 합산하지 않습니다.
그림 한눈에: strict F01–F10과 D7 F11 claim registry의 경계를 분리합니다.
히토리는 마지막에 적었다. “W23 D1–D6 RUNTIME NOT_RUN. 보이는 marker보다 누가 실행했고 무엇까지 닫았는지가 먼저다.” p780 하단의 D7과 p783 하단 이후 주간 통합은 다음 장에 남겼다.
1. 이번 미리보기의 strict PDF 범위는 어디인가요? 답: p751 W23 시작부터 p780 상단 D6 최종 Mastery Gate까지입니다.
근거: 정확한 표기는 p751–p780 상단 — W23 개요 + D1–D6입니다. overview p751, D1 p752–755, D2 p756–761, D3 p762–765, D4 p766–772, D5 p773–776, D6 p777–p780 상단입니다.
오답 함정: W23 전체가 p751–784라는 이유로 p780 하단 D7이나 p783 하단 주간 통합·p784 Green Gate를 섞으면 안 됩니다.
범위 한계: p780은 D6와 D7이 함께 있는 혼합 페이지라 물리 페이지 번호만으로 경계를 정할 수 없습니다.
실제 기술 이름 mixed-page semantic boundary for W23 overview and D1-D6
2. D1–D6 예상시간 합계와 기본 트랙 표지는 무엇인가요? 답: 합계는 8시간 5분–15시간 20분, 즉 485–920분이며 공통 코어 · 트랙 선택 시 증권 기본입니다.
근거: D1 55–105분, D2 65–125분, D3 100–190분, D4 80–160분, D5 90–170분, D6 95–170분을 더합니다.
오답 함정: W23 전체 9시간 5분–17시간 20분은 D7 60–120분을 포함하므로 strict 합계가 아닙니다.
범위 한계: 원문에는 증권/카드 트랙 분기가 없습니다. 증권은 UI 기본값일 뿐 관측성 내용을 증권 전용으로 바꾸지 않습니다.
실제 기술 이름 bounded D1-D6 active-time total with source-neutral default-track metadata
3. SOURCE AUDIT PASS는 metric·DB wait·alert 실행 Green인가요? 답: 아닙니다. 현재 상태는 W23 D1–D6 RUNTIME NOT_RUN이고 runtimeRunsByPreview=0입니다.
근거: PASS는 PDF·package·display byte 폐쇄와 정본·비정본 분류를 뜻합니다. learner test, packaged local runners, external dashboard·notification을 이 preview가 실행하지 않았습니다.
오답 함정: 코드에 W23_*_GREEN marker가 보이거나 source-local test가 2개 있다는 이유로 실행 결과라고 말하면 안 됩니다.
범위 한계: D1/D2·D3/D4·D5/D6·external evidence는 owner와 검토 경계가 서로 다릅니다.
실제 기술 이름 static source closure versus learner local and external runtime evidence
4. D1 metric catalog의 다섯 required signal은 무엇인가요? 답: http_server_requests, transfer_completed, transfer_retry, reconciliation_mismatch, idempotency_stale입니다.
근거: timer·counter·gauge type, LOW cardinality, meaning과 alert/dashboard 목적을 CSV 각 row에 기록합니다.
오답 함정: metric 이름만 다섯 줄 적거나 catalog 존재를 live MeterRegistry·dashboard Green으로 바꾸면 안 됩니다.
범위 한계: 정확한 실행 evidence는 learner가 만든 metric-catalog.csv와 actual SHA를 validator에 넣어야 생깁니다.
실제 기술 이름 RED-SLI metric catalog with five required low-cardinality signals
그림 한눈에: D1 · RED·SLI catalog와 high-cardinality 금지선. 5. 왜 requestId와 accountId를 metric tag로 쓰면 안 되나요? 답: 값 종류가 요청·계좌 수만큼 늘어 time-series cardinality를 폭증시키기 때문입니다.
근거: validator는 requestId·actorId·accountId·error message·exception class를 tag에서 금지합니다.
오답 함정: 추적에 유용하다는 이유로 correlation ID를 metric label에 넣으면 log와 metric의 역할을 섞게 됩니다.
범위 한계: route·status·outcome 같은 제한된 차원은 허용하지만 실제 label 집합도 운영 전 검토해야 합니다.
실제 기술 이름 bounded metric label cardinality and correlation-log separation
6. D1 learner catalog validator의 exact oracle과 한계는 무엇인가요? 답: metrics=<actual count, >=5>, required=5, high_cardinality_tags=0과 actual SHA-256입니다.
근거: marker는 W23D1_PRIMARY_EVIDENCE_GREEN metrics>=5 required=5 high_cardinality_tags=0 sha256=<64-hex>로 읽어야 합니다.
오답 함정: PRIMARY_PRODUCER=0인 learner artifact를 packaged canonical runtime 결과로 부르면 안 됩니다.
범위 한계: 이 preview는 CSV를 생성하거나 validator를 실행하지 않았으므로 현재는 NOT_RUN입니다.
실제 기술 이름 learner-owned metric catalog semantic validator and primary evidence closure
7. D2 TransferMetrics는 성공·거절·시간을 어떻게 기록하나요? 답: 성공은 completed counter, RuntimeException은 business_rejected counter, duration은 finally에서 stop합니다.
근거: 예외는 counter를 올린 뒤 다시 던지고 Timer.Sample은 정상·실패 경로 모두 닫힙니다.
오답 함정: catch에서 예외를 삼키거나 성공 경로에서만 timer를 멈추면 outcome과 duration이 왜곡됩니다.
범위 한계: RuntimeException 전부를 business rejection으로 분류한 것은 학습 단순화이며 production 분류표가 아닙니다.
실제 기술 이름 Micrometer outcome counters with finally-closed transfer duration timer
그림 한눈에: D2 · completed·business_rejected와 finally duration. 8. D2 exact test oracle은 무엇인가요? 답: TransferMetricsTest classes=1, tests=2, failures=0, errors=0, skipped=0입니다.
근거: ownership=LEARNER_TYPED, main/test SHA-256, native_exit=0까지 metrics-test.txt에 결합합니다.
오답 함정: HTML에 두 test method가 표시됐다는 사실을 Gradle에서 통과한 증거로 쓰면 안 됩니다.
범위 한계: source-local tests=2이지만 testsExecuted=0이며 learner 환경에서 exact XML을 얻기 전 Green이 아닙니다.
실제 기술 이름 learner-authored SimpleMeterRegistry two-test evidence contract
9. D2 test 두 개가 직접 증명하지 않는 것은 무엇인가요? 답: 실제 transfer integration, duration 크기, 모든 exception 분류, metric backend 전달입니다.
근거: test는 SimpleMeterRegistry에서 completed·business_rejected counter와 timer stop을 좁게 확인합니다.
오답 함정: unit test 두 개를 production p95나 dashboard ingestion proof로 확장하면 안 됩니다.
범위 한계: metric 기록 실패가 업무 처리에 미치는 격리 정책도 별도 설계·테스트가 필요합니다.
실제 기술 이름 unit-level meter behavior boundary versus production observability pipeline
10. D3 requestId filter lifecycle의 두 경로와 공통 끝은 무엇인가요? 답: 유효 header는 echo하고 누락·무효 값은 UUID-like 값을 생성하며, 둘 다 finally에서 MDC를 제거합니다.
근거: RequestIdFilterTest 두 개가 valid header와 generated requestId 경로의 response header·MDC cleanup을 확인합니다.
오답 함정: response header만 보고 thread 재사용 전에 MDC가 비워졌다고 가정하면 안 됩니다.
범위 한계: local filter lifecycle이지 여러 서비스에 걸친 production distributed timeline proof는 아닙니다.
실제 기술 이름 request correlation header generation echo and MDC cleanup lifecycle
그림 한눈에: D3 · header echo·UUID-like 생성·MDC cleanup. 11. run-w23-gate.ps1의 canonical Green 범위는 어디까지인가요? 답: RequestIdFilterTest 2개와 incident-runbook SHA를 결합한 request-id-regression-and-runbook 범위입니다.
근거: gate.json을 temporary file에서 atomic move하고 W23_OBSERVABILITY_GREEN classes=1 tests=2 ... native_exit=0을 냅니다.
오답 함정: OBSERVABILITY_GREEN이라는 이름을 dashboard·p95·pool·alert 전체 Green으로 넓히면 안 됩니다.
범위 한계: 실제 Green에는 learner ProjectRoot·EvidenceDir에서 canonical runner를 실행한 byte가 필요합니다.
실제 기술 이름 canonical atomic requestId-regression and runbook-hash local gate
12. Q37에서 1:N:N JOIN은 왜 행을 불리나요? 답: transaction 한 행에 leg 2개와 audit 3개가 독립적으로 붙으면 2×3=6행이 되기 때문입니다.
근거: 안전한 학습 예시는 각 child를 transaction별 한 행으로 먼저 집계한 뒤 parent에 결합합니다.
오답 함정: COUNT DISTINCT 하나만 붙이면 중복된 amount SUM까지 자동으로 고쳐진다고 생각하면 안 됩니다.
범위 한계: 2×3=6과 SQL은 audit-authored illustrative/noncanonical 반례이며 원문 Q37은 prompt-only입니다.
실제 기술 이름 one-to-many-to-many join multiplication and child preaggregation
그림 한눈에: Q37 · 비정본 1:N:N 반례와 child pre-aggregation. 13. Q37 답안에서 반드시 공개할 grain·cardinality 조건은 무엇인가요? 답: 비정본 예시 기준으로 시작 grain은 business transaction 한 행이고 각 child의 1:N 관계와 nullable audit_event.tx_id를 설명해야 합니다.
근거: 비정본 fixture에서 join 전·첫 child 후·둘째 child 후 count를 비교해야 폭증 지점을 찾을 수 있습니다.
오답 함정: fixture의 숫자만 맞추고 nullable link나 orphan 가능성을 숨기면 반례 설명이 닫히지 않습니다.
범위 한계: 실제 schema의 제약·업무 grain이 다르면 집계 key와 outer join 정책도 다시 정해야 합니다.
실제 기술 이름 explicit query grain cardinality and nullable-child counterexample reasoning
14. D4 canonical DB wait drill은 어떤 순서로 진행되나요? 답: holder same-row UPDATE→waiter same-row UPDATE→Lock/blocker 관찰→commit 해제→최종값·cleanup 확인입니다.
근거: w23_wait.probe id=1,value=0에서 두 UPDATE가 끝나면 final_value=2가 됩니다.
오답 함정: 실제 production DB에 lock을 만들거나 blocker를 정리하지 않은 채 관찰만 끝내면 안 됩니다.
범위 한계: disposable PostgreSQL의 ROW_UPDATE 한 종류만 증명하며 app p95·pool pending·CPU 상관관계는 범위 밖입니다.
실제 기술 이름 disposable PostgreSQL same-row update lock wait lifecycle
그림 한눈에: D4 · disposable ROW_UPDATE 생성·관찰·해제·정리. 15. p766의 ACCESS EXCLUSIVE·SELECT 요약을 왜 그대로 쓰지 않나요? 답: 인쇄된 canonical runner와 Green marker가 same-row UPDATE/UPDATE·scope=ROW_UPDATE를 구현하기 때문입니다.
근거: 정본 script는 holder가 값을 올리고 sleep·commit하며 waiter도 같은 row를 UPDATE합니다.
오답 함정: 짧은 stale 설명을 canonical code보다 우선해 존재하지 않는 SELECT wait oracle을 만들면 안 됩니다.
범위 한계: 원문 내부 충돌을 숨기지 않고 구현 사실은 source authority가 높은 packaged canonical script에 묶습니다.
실제 기술 이름 source-conflict resolution by canonical executable authority
16. Compose mode와 Container mode의 cleanup ownership은 어떻게 다른가요? 답: Compose는 고유 project와 schema를 소유해 실패해도 제거하고, Container는 caller container를 삭제하지 않습니다.
근거: partial startup도 owned cleanup으로 들어가며 ContainerName이 없으면 Container mode는 fail-closed입니다.
오답 함정: 전달받은 container를 runner가 지우거나 생성한 Compose volume·schema를 남기면 안 됩니다.
범위 한계: Docker·PostgreSQL 의존성이 실제 환경에 있어야 local runner 의미를 검증할 수 있습니다.
실제 기술 이름 resource-ownership-aware disposable DB wait cleanup semantics
17. D4 exact Green oracle은 무엇인가요? 답: scope=ROW_UPDATE, observed=1, cleared=0, final_value=2, native_exits=0, cleanup=1입니다.
근거: wait_event_type=Lock과 blocker≥1을 관찰한 뒤 wait가 0으로 사라지고 두 process가 정상 종료해야 합니다.
오답 함정: observed=1 하나만 보고 final value·native exit·cleanup을 생략하면 안 됩니다.
범위 한계: 이 preview는 run-w23-db-wait.ps1을 실행하지 않았으므로 marker를 보이는 것과 Green은 다릅니다.
실제 기술 이름 exact disposable row-lock observation clearance and cleanup oracle
18. D5 실행 가능한 alert 세 개는 무엇을 갖춰야 하나요? 답: 5xx rate, transfer p95, reconciliation mismatch마다 window·threshold·severity·owner·first query·runbook·clear가 필요합니다.
근거: 학습 예시는 >2%/5m, >1000ms/10m, mismatch>0 one run이며 synthetic failure와 notification evidence를 요구합니다.
오답 함정: threshold 한 줄이나 dashboard 링크만 적고 owner·clear·첫 query를 비워 두면 실행 가능한 alert가 아닙니다.
범위 한계: 표시된 threshold는 학습 기준이지 production SLA나 승인된 금융 운영값이 아닙니다.
실제 기술 이름 actionable alert contract with trigger clear owner query and runbook
그림 한눈에: D5 · window·threshold·owner·first query·clear. 19. D5 learner artifact validator가 alert Green을 만들 수 있나요? 답: 아닙니다. 파일 크기·비공백 줄·placeholder·SHA만 검사합니다.
근거: marker는 LOCAL_ARTIFACT_VALIDATED W23D5 bytes=<actual> sha256=<64-hex>이고 의미는 사람 검토 전 MANUAL_REVIEW_REQUIRED입니다.
오답 함정: process exit 0이나 64-hex hash를 synthetic failure·notification 성공으로 바꾸면 안 됩니다.
범위 한계: 공식 dashboard URL·실행시각·screenshot hash가 없는 외부 상태는 NOT_RUN_EXTERNAL입니다.
실제 기술 이름 structural alert artifact validation versus semantic external execution evidence
20. Q38은 두 기간 모두 거래한 고객을 어떻게 찾나요? 답: 각 Asia/Seoul 반개구간에서 SUCCESS customer를 DISTINCT한 뒤 INTERSECT합니다.
근거: 두 query는 같은 customer grain·status 조건을 쓰고 기간 경계는 start inclusive, end exclusive로 둡니다.
오답 함정: 두 기간 거래를 한 번에 OR로 묶거나 transaction row를 그대로 join해 중복 고객을 만들면 안 됩니다.
범위 한계: SQL은 illustrative/noncanonical이며 원문 Q38은 INTERSECT/EXISTS를 요구하는 prompt-only입니다.
실제 기술 이름 distinct customer-set intersection across two half-open business periods
그림 한눈에: Q38 · 비정본 DISTINCT·INTERSECT와 반개구간. 21. Q38 fixture의 예상 결과와 실행 상태는 무엇인가요? 답: 학습 fixture의 expected row는 customer_id=1 김민수이지만 실제 실행 결과는 아닙니다.
근거: 코드 뒤풀이는 결정적 seed를 해석한 audit-authored oracle이며 testsExecuted=0입니다.
오답 함정: 예상값 하나를 preview가 PostgreSQL에서 관찰한 canonical result로 표현하면 안 됩니다.
범위 한계: 실제 query evidence에는 SQL byte·실행 환경·row count·결과 hash와 status 가정을 별도로 남겨야 합니다.
실제 기술 이름 illustrative unexecuted deterministic fixture oracle for period intersection
22. D6 incident runbook의 공통 결정 흐름은 무엇인가요? 답: symptom→impact→check→mitigate→recover verification→follow-up 순서입니다.
근거: rollback·escalation·evidence 보존을 각 흐름에 포함해 누가 언제 무엇을 확인했는지 남깁니다.
오답 함정: 원인 추정부터 하거나 복구 버튼만 적고 영향·검증·후속조치를 생략하면 안 됩니다.
범위 한계: template 골격과 local validator는 실제 incident timeline이나 운영 승인 체계를 대신하지 않습니다.
실제 기술 이름 incident runbook decision flow from symptom to verified recovery
그림 한눈에: D6 · symptom→impact→check→mitigate→verify→follow-up. 23. DB timeout runbook의 첫 확인 순서는 무엇인가요? 답: readiness→pool→network→DB wait 순서입니다.
근거: application이 traffic을 받을 준비인지부터 보고 pool 포화, 연결 경로, blocker snapshot으로 좁힙니다.
오답 함정: 무제한 retry나 즉시 database restart로 증상을 덮으면 blocker와 영향 범위를 잃습니다.
범위 한계: disposable db-wait JSON은 한 row-lock 반례이고 production timeout 원인의 전체 목록이 아닙니다.
실제 기술 이름 layered DB timeout triage across readiness pool network and lock wait
24. reconciliation mismatch runbook에서 금지되는 복구는 무엇인가요? 답: 원인 확인과 승인 없이 balance를 자동 UPDATE하는 것입니다.
근거: 영향 계좌를 격리하고 source transaction·ledger를 대조한 뒤 finance 승인으로 correction하고 재검증합니다.
오답 함정: 숫자를 맞추기 위해 원장을 삭제하거나 임의 보정해 audit trail을 끊으면 안 됩니다.
범위 한계: correction 절차와 승인자는 실제 조직 정책에 맞춰야 하며 preview가 승인하지 않습니다.
실제 기술 이름 finance-approved reconciliation correction with preserved audit evidence
25. D6 validator의 exact marker와 의미 경계는 무엇인가요? 답: LOCAL_ARTIFACT_VALIDATED W23D6 bytes=<actual> sha256=<64-hex>이며 의미는 수동 검토 전 닫히지 않습니다.
근거: 존재·40 byte·3개 비공백 줄·placeholder 부재·SHA만 자동 확인합니다.
오답 함정: runbooks/index.md가 있다는 이유로 DB timeout과 대사 불일치 복구가 검증됐다고 말하면 안 됩니다.
범위 한계: D5/D6는 preview 미실행·MANUAL_REVIEW_REQUIRED이며 external notification은 NOT_RUN_EXTERNAL입니다.
실제 기술 이름 generic runbook shape-hash validator with human semantic review boundary
그림 한눈에: D1–D6 · packaged owner·learner artifact·external manual. 26. strict D1–D6과 코드 뒤풀이 전체 범위는 어떻게 다르나요? 답: 미리보기는 p751–p780 상단과 F01–F10이며, 코드 문서의 F11 claim registry는 D7 전용이라 제외합니다.
근거: D7은 p780 하단부터 local Gate와 external claim registry를 소유하고 주간 통합은 p783 하단부터입니다.
오답 함정: 전체 코드 inventory에 F11이 보인다는 이유로 D7 external status를 D6 story에 넣으면 안 됩니다.
범위 한계: 코드 문서 링크는 W23 전체를 보여 주지만 preview의 실행·서사 경계는 넓어지지 않습니다.
실제 기술 이름 strict preview ownership boundary versus full-week code inventory
27. D1–D6의 learner·local·manual·external 증거를 어떻게 나누나요? 답: D1/D2 learner evidence, D3/D4 packaged local owner, D5/D6 manual semantics, external dashboard·notification으로 나눕니다.
근거: 각 owner는 별도 artifact·hash·oracle을 가지며 preview는 어느 것도 실행하지 않았습니다.
오답 함정: local requestId/DB wait oracle을 external dashboard·alert Green과 합산하면 안 됩니다.
범위 한계: 현재는 learner/local 모두 NOT_RUN, D5/D6 MANUAL_REVIEW_REQUIRED, external은 NOT_RUN_EXTERNAL입니다.
실제 기술 이름 four-way learner local manual and external evidence ownership matrix
그림 한눈에: D1–D6 F01–F10 · D7 F11 claim registry 제외. 28. modern 코드 inventory와 source-local test 표찰은 어떻게 읽나요? 답: 전체 W23 코드는 11 units, canonical 3개, illustrative 8개, source-local tests 2개입니다.
근거: aggregate 11/394/361/0/361/361/41/2/0는 units / physical / nonblank / setup / mapping / translation / chunks / source-local tests / tests executed입니다.
오답 함정: 2개 test method를 실행된 test로 세거나 F11 D7 registry를 strict D1–D6 실행으로 세면 안 됩니다.
범위 한계: 현재 testsExecuted=0이고 모든 runtimeRunsByPreview도 0입니다.
실제 기술 이름 canonical-illustrative inventory and unexecuted source-local test accounting
마지막 한 줄 W23의 핵심은 낮은 cardinality의 metric, cleanup되는 requestId, disposable ROW_UPDATE wait, 실행 가능한 alert와 승인된 runbook을 서로 다른 owner의 증거로 묶되 이 preview가 실행하지 않은 Green을 넓혀 말하지 않는 것입니다.