327 lines
24 KiB
JSON
327 lines
24 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"runId": "2026-09-08-1958",
|
|
"project": "virtualization",
|
|
"record": "docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-contention-under-two-vm-load.md",
|
|
"startedAt": "2026-09-08T19:58:51+09:00",
|
|
"finishedAt": "2026-09-08T22:22:53+09:00",
|
|
"stages": [
|
|
{
|
|
"id": "S1",
|
|
"name": "코드베이스 → SSOT",
|
|
"skill": "analyzing-codebase-for-tech-log",
|
|
"runBy": "subagent",
|
|
"status": "SKIPPED",
|
|
"skipReason": "SSOT 가 이미 있고 이 열두 글감의 근거가 그 안에 전부 있다 — §20 의 OQ-1~6 과 §27 의 OQ-7~12. 이 런은 SSOT 를 만들거나 고치지 않는다.",
|
|
"skillEcho": "",
|
|
"inputs": [
|
|
"docs/virtualization/final/document.md"
|
|
],
|
|
"outputs": [],
|
|
"gates": [
|
|
{
|
|
"cmd": "python3 scripts/verify-project-layout.py virtualization",
|
|
"exit": 0
|
|
}
|
|
],
|
|
"notes": "앞 런(2026-09-08-1426)이 반입한 SSOT 를 그대로 쓴다. ssotSha256 이 그 런 이후로 바뀌지 않았다."
|
|
},
|
|
{
|
|
"id": "S2",
|
|
"name": "SSOT → 분해 계약",
|
|
"skill": "deriving-tech-log-root-tree",
|
|
"runBy": "subagent",
|
|
"status": "DONE",
|
|
"skipReason": "",
|
|
"skillEcho": "5. Pick **Questions** from the unresolved section (§11).",
|
|
"inputs": [
|
|
"docs/virtualization/final/document.md",
|
|
"docs/virtualization/tech-log-studio/tech-log-tree.json"
|
|
],
|
|
"outputs": [
|
|
"docs/virtualization/tech-log-studio/tech-log-tree.json"
|
|
],
|
|
"gates": [
|
|
{
|
|
"cmd": "python3 scripts/build-tech-log-tree.py virtualization",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/verify-tech-log-tree.py virtualization",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/verify-project-layout.py virtualization",
|
|
"exit": 0
|
|
}
|
|
],
|
|
"notes": "§20 OQ-1~6 과 §27 OQ-7~12 열둘을 question 글감으로 올렸다. 후보 12건을 NEEDS_EVIDENCE → PROMOTE·CONFIRMED 로 재판정하고 사유를 reason 에 적었다 — Question 은 아직 닫히지 않은 판단을 적는 종류라 「측정이 없다」가 올리지 못할 이유가 아니고, 사용자가 그렇게 판단했다. 주제는 cpu-virtualization 하나로 두었다. 글감 13 · 후보 처분 PROMOTE 13 · MERGE_INTO 21 · KEEP_IN_SSOT 3 · NEEDS_DECISION 1 · NEEDS_EVIDENCE 1. 남긴 문제: concept 기록과 그 노드의 relations 가 아직 「OQ 열둘이 NEEDS_EVIDENCE 로 있다」고 적고 있다 — 이번 지시 밖이라 그대로 두었고 뒤에서 고친다."
|
|
},
|
|
{
|
|
"id": "S3",
|
|
"name": "글감 → 기록",
|
|
"skill": "writing-tech-log-records",
|
|
"runBy": "subagent",
|
|
"status": "DONE",
|
|
"skipReason": "",
|
|
"skillEcho": "**코드·표·다이어그램·이미지는 본문에만 들어간다. 본문이 있는 종류는 Case 와 Concept 둘뿐이다.**",
|
|
"inputs": [
|
|
"docs/virtualization/tech-log-studio/tech-log-tree.json",
|
|
"docs/virtualization/final/document.md"
|
|
],
|
|
"outputs": [
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-exit-distribution-for-keycloak-workload.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-host-numa-topology.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-idle-vcpu-thread-appearance.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-is-production-on-a-hypervisor.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-pinning-before-and-after.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-steal-time-increase-under-two-cpu-bound-vms.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throttling-vs-contention.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throughput-vs-vcpu-count.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-contention-under-two-vm-load.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-thread-migration-without-pinning.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-virtualization-layer-saturation-during-refresh.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vm-exit-distribution-by-workload.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/concept/concept-kvm-vcpu-to-physical-cpu.md",
|
|
"docs/virtualization/tech-log-studio/tech-log-tree.json"
|
|
],
|
|
"gates": [
|
|
{
|
|
"cmd": "python3 scripts/studio-body.py <기록.md> -o /tmp/sb-*.md (12건)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "node --experimental-transform-types .agents/skills/writing-tech-log-records/scripts/check_body.mjs /tmp/sb-*.md (12건)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "node .agents/skills/rewriting-technical-prose-naturally/scripts/check_prose.mjs --warn <기록.md> (12건)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "node .agents/skills/writing-tech-log-records/scripts/check_evidence.mjs virtualization --repo",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/build-tech-log-tree.py virtualization",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/verify-tech-log-tree.py virtualization",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/audit-records.py virtualization",
|
|
"exit": 0
|
|
}
|
|
],
|
|
"notes": "기록 12건을 서브에이전트 셋에 네 건씩 나눠 동시에 썼다(S3-A OQ-1~4 · S3-B OQ-5~8 · S3-C OQ-9~12). 같은 단계 안의 서로 다른 기록이라 병렬로 돌렸고, 프로젝트 전체를 보는 검사기(build·verify-tree·check_evidence)는 배치가 서로의 반쯤 쓴 상태를 보지 않도록 오케스트레이터가 셋이 끝난 뒤 한 번만 돌렸다. 세 배치 모두 같은 것을 지켰다 — Question 은 평문 칸이라 코드블록·표·그림을 넣지 않고 명령은 인라인 코드로만 썼고, 「사실」에는 SSOT 가 확인했다고 적은 것만 넣고 전제한 것은 「가정」으로 뺐으며, 「다음 검증」 아래에 계약의 decision-criterion 을 「닫는 조건」 한 줄로 붙였다. 이 Host 에서 잰 값은 하나도 만들지 않았다. host-numa-topology 는 SSOT 에 NUMA 확인 명령이 없어 명령을 짓지 않았다. 끝에 손질 한 건을 더 돌렸다(S3-T) — concept 기록에 `## 관계` 절이 없었다. question 열둘은 모두 concept 를 가리키는데 반대 방향이 비어 있었다. 스킬을 읽고 열둘을 다 걸지 않고 축마다 허브 하나씩 넷 + 아무도 가리키지 않아 고립되는 둘, 모두 여섯을 걸었다(그 여섯에서 나머지 여섯에 모두 닿는 것을 대조했다). 계약의 concept 노드 relations 와 missing-verification 의 마지막 문장도 「candidates 에 NEEDS_EVIDENCE 로 남아 있다」에서 사실에 맞게 고쳤다. skillEcho(S3-T): 5. **관계 연결** — Decision은 근거가 **1개 이상** 없으면 게시가 거절된다. 런 끝에 오케스트레이터가 평문 칸의 백틱 266개를 지웠다. Question 의 사실·가정·미지수·제약·선택지·다음 검증은 평문으로 렌더링되어 백틱이 글자 그대로 보이는데, S3 프롬프트가 「명령어는 인라인 코드로 쓴다」고 잘못 지시해 audit-records.py 가 「평문 칸에 마크업」 50건을 냈다. 다른 프로젝트는 전부 0건이었다. 백틱만 지웠고 명령 문자열은 그대로다. 지운 뒤 audit-records 0건 · 기록 12건의 check_body·check_prose·check_voice·check_evidence 전부 종료 코드 0."
|
|
},
|
|
{
|
|
"id": "S4",
|
|
"name": "기록 → 그림",
|
|
"skill": "technical-visualizer",
|
|
"runBy": "subagent",
|
|
"status": "SKIPPED",
|
|
"skipReason": "그릴 자리가 없다. choosing-a-diagram 의 첫 관문이 「자리가 Case·Concept 인가」인데 이번 런의 기록 열둘은 전부 Question 이고, Question 의 칸은 평문으로 렌더링되어 코드·표·다이어그램·이미지가 들어가지 않는다. 그림이 필요하면 Case 나 Concept 에 담고 관계로 가리킨다.",
|
|
"skillEcho": "",
|
|
"inputs": [],
|
|
"outputs": [],
|
|
"gates": [],
|
|
"notes": "앞 런이 만든 vm-exit-handling-cycle 은 concept 기록이 그대로 쓰고 있고 이번에 건드리지 않았다."
|
|
},
|
|
{
|
|
"id": "S5",
|
|
"name": "AI 티 제거",
|
|
"skill": "rewriting-technical-prose-naturally",
|
|
"runBy": "subagent",
|
|
"status": "DONE",
|
|
"skipReason": "",
|
|
"skillEcho": "**Four buckets. Only the first stays in Latin script.**",
|
|
"inputs": [
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-exit-distribution-for-keycloak-workload.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-host-numa-topology.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-idle-vcpu-thread-appearance.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-is-production-on-a-hypervisor.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-pinning-before-and-after.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-steal-time-increase-under-two-cpu-bound-vms.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throttling-vs-contention.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throughput-vs-vcpu-count.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-contention-under-two-vm-load.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-thread-migration-without-pinning.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-virtualization-layer-saturation-during-refresh.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vm-exit-distribution-by-workload.md"
|
|
],
|
|
"outputs": [
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-exit-distribution-for-keycloak-workload.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-host-numa-topology.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-idle-vcpu-thread-appearance.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-is-production-on-a-hypervisor.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-pinning-before-and-after.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-steal-time-increase-under-two-cpu-bound-vms.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throttling-vs-contention.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throughput-vs-vcpu-count.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-contention-under-two-vm-load.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-thread-migration-without-pinning.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-virtualization-layer-saturation-during-refresh.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vm-exit-distribution-by-workload.md",
|
|
"docs/virtualization/tech-log-studio/tech-log-tree.json"
|
|
],
|
|
"gates": [
|
|
{
|
|
"cmd": "node .agents/skills/rewriting-technical-prose-naturally/scripts/check_prose.mjs --warn <기록.md> (12건)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "node .agents/skills/rewriting-technical-prose-naturally/scripts/style_profile.mjs <기록.md> (12건)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/studio-body.py <기록.md> -o /tmp/s5*.md (12건)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "node --experimental-transform-types .agents/skills/writing-tech-log-records/scripts/check_body.mjs /tmp/s5*.md (12건)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "node .agents/skills/writing-tech-log-records/scripts/check_evidence.mjs virtualization --repo",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/build-tech-log-tree.py virtualization",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/verify-tech-log-tree.py virtualization",
|
|
"exit": 0
|
|
}
|
|
],
|
|
"notes": "배치 셋(S5-A OQ-1~4 · S5-B OQ-5~8 · S5-C OQ-9~12)을 병렬로 돌린 뒤 통합 패스(S5-U) 한 건을 더 돌렸다. 배치 셋이 같은 말을 서로 다르게 옮겨서다 — 12건에 Host 163 / 호스트 46, Guest 67 / 게스트 9 로 갈렸는데 같은 주제의 concept 기록은 호스트 51 / Host 0 이었다. 통합 패스가 concept 를 기준 register 로 삼아 맞췄고, 제목 10건도 frontmatter·h1·계약 노드 title·다른 기록의 관계 참조 네 곳을 동시에 고쳤다. 라틴으로 남긴 것: steal time · pinning · VM Exit · VMX · KVM · QEMU · cgroup · NUMA · CPU-bound 같은 규격·제품·지표 이름과 §25 진단표·§27 측정 항목처럼 SSOT 원문을 전재한 줄. S5-B 가 올린 인용 결함도 이때 고쳤다 — question-steal-time 의 「사실」이 §13 을 옮기며 「가상화 환경에서」를 빠뜨렸던 것을 SSOT 638행과 대조해 되살렸다. style_profile 은 engPerSent 가 몇 편에서 기준 밖으로 남는다 — frontmatter 의 source 앵커와 SSOT 전재 목록이 분자에 들어가는 구조 때문이라 수치를 맞추려고 문장을 넣지 않았다."
|
|
},
|
|
{
|
|
"id": "S6",
|
|
"name": "일한 사람의 목소리",
|
|
"skill": "writing-as-the-person-who-did-it",
|
|
"runBy": "subagent",
|
|
"status": "DONE",
|
|
"skipReason": "",
|
|
"skillEcho": "고치는 방법은 하나뿐이다. **자료에 남아 있는 사람의 흔적을 찾아서 제자리에 놓는다.**",
|
|
"inputs": [
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-exit-distribution-for-keycloak-workload.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-host-numa-topology.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-idle-vcpu-thread-appearance.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-is-production-on-a-hypervisor.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-pinning-before-and-after.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-steal-time-increase-under-two-cpu-bound-vms.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throttling-vs-contention.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throughput-vs-vcpu-count.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-contention-under-two-vm-load.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-thread-migration-without-pinning.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-virtualization-layer-saturation-during-refresh.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vm-exit-distribution-by-workload.md",
|
|
"docs/virtualization/final/document.md",
|
|
"docs/virtualization/tech-log-studio/tech-log-tree.json"
|
|
],
|
|
"outputs": [
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-exit-distribution-for-keycloak-workload.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-host-numa-topology.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-idle-vcpu-thread-appearance.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-is-production-on-a-hypervisor.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-pinning-before-and-after.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-steal-time-increase-under-two-cpu-bound-vms.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throttling-vs-contention.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throughput-vs-vcpu-count.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-contention-under-two-vm-load.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-thread-migration-without-pinning.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-virtualization-layer-saturation-during-refresh.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vm-exit-distribution-by-workload.md"
|
|
],
|
|
"gates": [
|
|
{
|
|
"cmd": "node .agents/skills/writing-as-the-person-who-did-it/scripts/check_voice.mjs <기록.md> (12건)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "node .agents/skills/rewriting-technical-prose-naturally/scripts/check_prose.mjs --warn <기록.md> (12건)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/studio-body.py <기록.md> -o /tmp/s6*.md (12건)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "node --experimental-transform-types .agents/skills/writing-tech-log-records/scripts/check_body.mjs /tmp/s6*.md (12건)",
|
|
"exit": 0
|
|
}
|
|
],
|
|
"notes": "배치 셋을 병렬로 돌렸다. 흔적은 두 곳에만 있었다 — 계약 candidates 의 reason(사람이 처분을 뒤집으며 적은 사유)과 SSOT 가 스스로 못박은 문장. 셋이 합해 20문장 남짓을 넣었고 문장마다 출처 절·행을 댔다. 안 넣은 것: 실행 로그·커밋·이 Host 측정값이 없어 「예상과 어긋난 자리」가 없었고, 누가 실제로 틀리게 읽었다는 기록이 없어 「독자 쪽을 보는 문장」도 지어내지 않았다. 「NEEDS_EVIDENCE 에서 PROMOTE 로 재판정했다」는 열둘 모두에 있었지만 같은 문장을 열둘에 넣으면 그것이 또 다른 틀이 되어 구체가 다른 넷에만 넣었다."
|
|
},
|
|
{
|
|
"id": "S7",
|
|
"name": "Studio 저장",
|
|
"skill": "publishing-tech-log-to-studio",
|
|
"runBy": "subagent",
|
|
"status": "DONE",
|
|
"skipReason": "",
|
|
"skillEcho": "기록 `.md` 하나를 Studio 편집 화면에 넣고 **저장**한다. 거기서 끝난다.",
|
|
"inputs": [
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-exit-distribution-for-keycloak-workload.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-host-numa-topology.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-idle-vcpu-thread-appearance.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-is-production-on-a-hypervisor.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-pinning-before-and-after.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-steal-time-increase-under-two-cpu-bound-vms.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throttling-vs-contention.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throughput-vs-vcpu-count.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-contention-under-two-vm-load.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-thread-migration-without-pinning.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-virtualization-layer-saturation-during-refresh.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vm-exit-distribution-by-workload.md"
|
|
],
|
|
"outputs": [
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-exit-distribution-for-keycloak-workload.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-host-numa-topology.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-idle-vcpu-thread-appearance.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-is-production-on-a-hypervisor.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-pinning-before-and-after.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-steal-time-increase-under-two-cpu-bound-vms.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throttling-vs-contention.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-throughput-vs-vcpu-count.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-contention-under-two-vm-load.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vcpu-thread-migration-without-pinning.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-virtualization-layer-saturation-during-refresh.md",
|
|
"docs/virtualization/tech-log-studio/cpu-virtualization/question/question-vm-exit-distribution-by-workload.md",
|
|
"docs/virtualization/tech-log-studio/tech-log-tree.json"
|
|
],
|
|
"gates": [
|
|
{
|
|
"cmd": "상태 레일이 `저장됨` 으로 바뀌는 것을 확인 (건마다)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "넣은 값을 화면에서 되읽어 원문과 대조 (건마다)",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/build-tech-log-tree.py virtualization",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/verify-tech-log-tree.py virtualization",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "node .agents/skills/writing-tech-log-records/scripts/check_evidence.mjs virtualization --repo",
|
|
"exit": 0
|
|
},
|
|
{
|
|
"cmd": "python3 scripts/audit-records.py virtualization",
|
|
"exit": 0
|
|
}
|
|
],
|
|
"notes": "앞서 SKIPPED 로 적었던 것을 사용자가 뒤집어 실제로 돌렸다. Playwright 는 브라우저 하나를 공유하므로 병렬로 못 돌린다 — 네 건씩 세 배치를 순차로 돌렸다. 열두 건 모두 저장 버전 1→2, 상태 `저장됨`. 게시하지 않았고 관계는 비웠다(관계 셀렉트의 후보가 게시된 기록뿐인데 이 프로젝트에는 없다). 화면 라벨이 계약 이름과 셋 달랐다 — `## 사실`→`확인한 사실`, `## 미지수`→`남은 미지수`, `## 선택지`→`검토한 선택지`. `닫는 조건` 칸은 화면에 없어 `다음 검증` 값의 마지막 줄로 넣었다. 평문 렌더라 Studio 에 넣는 값에서만 백틱을 뺐다(명령 문자열은 그대로, 저장소 .md 는 무변경). 마지막 배치가 앞 여덟 건의 선택지 제목 표기를 읽어 대조했다 — 27개 행 전부 일치. 다만 `제외` 표시의 자리가 배치마다 다른데(앞 여덟은 앞, 뒤 넷은 뒤) 이것은 저장소 .md 원문의 차이다."
|
|
}
|
|
]
|
|
}
|