From 024362d096b4b6f028fa3df66bdb7a809d497166 Mon Sep 17 00:00:00 2001 From: DongHyeonka Date: Thu, 17 Sep 2026 15:59:42 +0900 Subject: [PATCH] =?UTF-8?q?fix(setup):=20=EC=8B=A4=ED=97=98=EB=8C=80?= =?UTF-8?q?=EB=A5=BC=20=EC=83=88=EB=A1=9C=20=EC=84=B8=EC=9B=8C=20setup=203?= =?UTF-8?q?5=ED=8E=B8=EC=9D=84=20=EB=B0=9F=EA=B3=A0=20=EC=96=B4=EA=B8=8B?= =?UTF-8?q?=EB=82=9C=20=EB=AA=85=EB=A0=B9=EA=B3=BC=20=EA=B2=B0=EA=B3=BC?= =?UTF-8?q?=EB=A5=BC=20=EA=B3=A0=EC=B9=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 기반 가이드 7단계로 실험대를 철거하고 다시 세운 뒤 virtualization setup 9편과 keycloak-session-store 26편을 순서대로 밟았다. 24편은 끝까지, 11편은 되는 데까지 밟았고 밟은 범위를 편마다 적었다. 명령이 못 도는 것을 고쳤다. - kubectl 을 `kc-lab-1` 에서 치라고 적었는데 그 기계에 kubeconfig 가 없다. 라벨 639개와 각 편의 「어디서 치는가」를 `[lab host]` 로 옮겼다 - `-o custom-columns=…[0]…` 이 zsh 에서 글로브로 읽혀 안 돈다. 28곳에 따옴표 - busybox `sed` 가 끝 개행을 안 붙여 A-3 의 측정이 언제나 0 이었다 - `--token-file ~/node-token` 뒤에 그 파일을 지우면 k3s agent 가 재부팅을 못 견딘다. `/etc/rancher/node-token` 으로 옮기는 처방을 재서 넣었다 - 게스트에 없는 도구를 전제로 한 명령 넷 — `conntrack`·`dig`·`strings`·`nginx -v` - `echo` 와 JWT 헤더가 `"이름" : [ 값 ]` 으로 찍는데 문서는 공백 없이 옮겨 적어 그 실측으로 만든 grep·sed 가 한 줄도 못 잡는다 - B-0 이 `directAccessGrantsEnabled` 와 계정 완성을 빠뜨려 B-3 이 못 돈다 - D-4·D-4a 가 `test-server` 와 `certbot-renew.*` 를 가리키는데 실제로는 `kc-lab-edge` 의 `certbot.service` 다 - `virsh setmaxmem --config` 를 `dominfo` 로 판정하면 틀린다. `--inactive` 로 - `LIBVIRT_DEFAULT_URI` 를 rc 에만 넣으면 `ssh host '명령'` 에서 안 먹는다 결과가 조건부인 것을 갈랐다. - readiness 는 즉시 안 뒤집힌다. A-1·A-2 의 60초 창을 적었다 - 03 의 층 ②③ `301` 은 04 이후의 값이고 그 단계에서는 `404` 다 - A-0 의 로그 필터를 요청 직후에 치면 정반대 결론이 나온다 - A-5 의 한 방향 차단은 잠깐 `1` 이었다 `2` 로 돌아온다 증거는 두 프로젝트의 `evidence/raw/` 에 99벌을 README 와 함께 남겼다. 비밀은 길이만 적었고 화면에 찍힌 토큰은 가렸다. Co-Authored-By: Claude Opus 5 (1M context) --- .../publishing-tech-log-to-studio/SKILL.md | 25 +- .../references/playwright-recipes.md | 58 +- .../references/studio-api.md | 175 ++++ .../references/studio-form-map.md | 16 +- .../writing-practitioner-guides/SKILL.md | 170 ++++ .playwright-mcp/send-plans.js | 124 +++ .playwright-mcp/studio-docs.json | 695 +++++++++++++++ .playwright-mcp/studio-targets.json | 790 ++++++++++++++++++ docs/keycloak-session-store/final/document.md | 769 ++++++++++++++++- .../evidence/raw/relive-2026-09-17/README.txt | 167 ++++ .../raw/relive-2026-09-17/a0-01-baseline.txt | 131 +++ .../relive-2026-09-17/a0-02-cache-entries.txt | 99 +++ .../relive-2026-09-17/a0-03-inject-reset.txt | 19 + .../raw/relive-2026-09-17/a0-04-test0.txt | 13 + .../raw/relive-2026-09-17/a0-05-claims.txt | 8 + .../a0-06-test0-cross-node.txt | 9 + .../a0-07-test0b-cache-delta.txt | 13 + .../a0-08-test0c-ownership.txt | 27 + .../relive-2026-09-17/a0-09-test0d-sql.txt | 32 + .../relive-2026-09-17/a0-10-test0d-retry.txt | 10 + .../relive-2026-09-17/a0-11-test0d-window.txt | 21 + .../a0-12-test0d-controlled.txt | 20 + .../a0-13-test0d-sql-lines.txt | 57 ++ .../raw/relive-2026-09-17/a1-01-inject.txt | 50 ++ .../raw/relive-2026-09-17/a1-02-verify.txt | 29 + .../raw/relive-2026-09-17/a1-03-conntrack.txt | 3 + .../a1-04-conntrack-missing.txt | 12 + .../a1-05-conntrack-installed.txt | 11 + .../a1-06-forced-partition.txt | 12 + .../raw/relive-2026-09-17/a1-07-readiness.txt | 40 + .../a1-08-readiness-commands.txt | 11 + .../a1-09-quoting-and-health.txt | 35 + .../a1-10-cross-node-under-partition.txt | 9 + .../raw/relive-2026-09-17/a1-11-recover.txt | 14 + .../a2-01-baseline-probe.txt | 9 + .../raw/relive-2026-09-17/a2-02-inject.txt | 18 + .../relive-2026-09-17/a2-03-during-outage.txt | 22 + .../a2-04-outage-progression.txt | 3 + .../raw/relive-2026-09-17/a2-05-recover.txt | 19 + .../relive-2026-09-17/a3-01-design-check.txt | 44 + .../raw/relive-2026-09-17/a3-02-prepare.txt | 15 + .../raw/relive-2026-09-17/a3-03-attempt1.txt | 18 + .../a3-04-sids-no-newline.txt | 12 + .../relive-2026-09-17/a3-05-attempt1-redo.txt | 18 + .../raw/relive-2026-09-17/a3-06-attempt2.txt | 19 + .../raw/relive-2026-09-17/a3-07-attempt3.txt | 34 + .../relive-2026-09-17/a3-08-loss-count.txt | 32 + .../raw/relive-2026-09-17/a3-09-revert.txt | 15 + .../raw/relive-2026-09-17/a4-01-baseline.txt | 29 + .../raw/relive-2026-09-17/a4-02-inject-4a.txt | 27 + .../a4-03-4a-progression.txt | 20 + .../a4-04-eviction-and-recover.txt | 34 + .../a4-05-recovery-progression.txt | 12 + .../a4-06-agent-token-missing.txt | 10 + .../relive-2026-09-17/a4-07-token-remedy.txt | 22 + .../raw/relive-2026-09-17/a5-01-attempt1.txt | 17 + .../relive-2026-09-17/a5-02-attempt2-3.txt | 15 + .../a5-03-one-direction-watch.txt | 7 + .../relive-2026-09-17/a5-04-bidirectional.txt | 20 + .../raw/relive-2026-09-17/a5-05-revert.txt | 16 + .../relive-2026-09-17/a6-01-attempt1-2.txt | 29 + .../raw/relive-2026-09-17/a6-02-inject.txt | 14 + .../raw/relive-2026-09-17/a6-03-effect.txt | 15 + .../raw/relive-2026-09-17/a6-04-revert.txt | 6 + .../a7-01-switch-volatile.txt | 19 + .../a7-02-cross-node-volatile.txt | 15 + .../relive-2026-09-17/a7-03-block-7800.txt | 14 + .../a7-04-partition-breaks-sharing.txt | 16 + .../raw/relive-2026-09-17/a7-05-revert.txt | 7 + .../raw/relive-2026-09-17/a7a-01-setup.txt | 16 + .../raw/relive-2026-09-17/a7a-02-repro-A.txt | 10 + .../relive-2026-09-17/a7a-03-repro-A-sql.txt | 10 + .../raw/relive-2026-09-17/a7a-04-repro-B.txt | 17 + .../a7a-05-repro-C-and-revert.txt | 21 + .../raw/relive-2026-09-17/a8-01-baseline.txt | 21 + .../raw/relive-2026-09-17/a8-02-restart.txt | 28 + .../raw/relive-2026-09-17/a8-03-main-test.txt | 10 + .../relive-2026-09-17/b0-01-image-import.txt | 20 + .../b0-02-realm-and-user.txt | 18 + .../relive-2026-09-17/b0-03-deploy-bff.txt | 29 + .../relive-2026-09-17/b0-04-bff-status.txt | 26 + .../raw/relive-2026-09-17/b1-01-beans.txt | 23 + .../relive-2026-09-17/b2-01-jdbc-table.txt | 15 + .../raw/relive-2026-09-17/b3-01-setup.txt | 12 + .../b3-02-secret-and-token.txt | 6 + .../b3-03-direct-grant-missing.txt | 15 + .../b3-04-account-not-fully-set-up.txt | 19 + .../raw/relive-2026-09-17/b3-05-race.txt | 16 + .../raw/relive-2026-09-17/b3-06-revert.txt | 6 + .../b4-01-forged-headers.txt | 32 + .../b4-02-forged-headers-retry.txt | 11 + .../raw/relive-2026-09-17/b5-01-baseline.txt | 19 + .../relive-2026-09-17/b5-02-redis-down.txt | 23 + .../raw/relive-2026-09-17/b5-03-revert.txt | 10 + .../relive-2026-09-17/b6-01-deploy-echo.txt | 19 + .../relive-2026-09-17/b6-02-jwks-before.txt | 12 + .../raw/relive-2026-09-17/b6-03-providers.txt | 12 + .../raw/relive-2026-09-17/b6-04-old-token.txt | 3 + .../raw/relive-2026-09-17/b6-05-echo-401.txt | 9 + .../b6-06-kid-and-issuer.txt | 10 + .../relive-2026-09-17/b7a-01-oauth2-proxy.txt | Bin 0 -> 505 bytes .../b7a-02-oauth2-proxy-blocked.txt | 14 + .../c1-01-clear-sessions.txt | 31 + .../c2-01-backchannel-probe.txt | 17 + .../raw/relive-2026-09-17/d1-01-backup.txt | 12 + .../d1-02-destroy-restore.txt | 29 + .../raw/relive-2026-09-17/d2-01-baseline.txt | 23 + .../raw/relive-2026-09-17/d2-02-upgrade.txt | 22 + .../d2-03-rollback-and-reverse.txt | 27 + .../raw/relive-2026-09-17/d2-04-revert.txt | 13 + .../relive-2026-09-17/d3-01-secret-paths.txt | 26 + .../d3-02-paths-and-revert.txt | 15 + .../d3-03-strings-missing.txt | 12 + .../d4-01-renewal-automation.txt | 33 + .../relive-2026-09-17/d4a-01-hook-state.txt | 12 + .../setup/setup-reproduce-a2-database-loss.md | 104 ++- .../setup-reproduce-a3-database-crash.md | 116 ++- .../setup/setup-reproduce-a4-node-loss.md | 30 +- ...setup-reproduce-a5-asymmetric-partition.md | 175 ++-- .../setup-reproduce-a6-latency-injection.md | 123 ++- .../setup-reproduce-d1-backup-restore.md | 82 +- .../setup-reproduce-d2-version-upgrade.md | 106 ++- .../setup-reproduce-d3-secret-exposure.md | 86 +- .../setup-reproduce-d4-certificate-renewal.md | 48 +- .../setup/setup-reproduce-d4a-deploy-hook.md | 43 +- ...setup-reproduce-a0-session-sharing-path.md | 144 +++- ...up-reproduce-a1-jgroups-transport-block.md | 181 +++- .../setup-reproduce-a7-volatile-comparison.md | 122 +-- .../setup-reproduce-a7a-volatile-cause.md | 127 +-- .../setup-reproduce-a8-rolling-restart.md | 81 +- .../tech-log-studio/tech-log-tree.json | 2 +- ...up-reproduce-b4-forged-identity-headers.md | 88 +- ...tup-reproduce-b7-cookie-secret-rotation.md | 73 +- .../setup-reproduce-b7a-orphan-session.md | 85 +- .../setup/setup-reproduce-c1-multi-app-sso.md | 84 +- .../setup-reproduce-c2-backchannel-logout.md | 67 +- ...etup-reproduce-b0-default-session-store.md | 120 ++- .../setup-reproduce-b1-redis-session-store.md | 68 +- .../setup-reproduce-b2-jdbc-token-store.md | 75 +- .../setup-reproduce-b3-refresh-contention.md | 90 +- .../setup/setup-reproduce-b5-redis-loss.md | 74 +- .../setup/setup-reproduce-b6-key-rotation.md | 118 ++- docs/virtualization/final/document.md | 412 ++++++++- .../01-host-before-teardown.txt | 99 +++ .../02-teardown-step0.txt | 27 + .../03-teardown-step1.txt | 18 + .../04-teardown-step2.txt | 5 + .../05-teardown-verify.txt | 16 + .../06-build-seed-as-documented.txt | 4 + .../07-build-seed-fixed.txt | 12 + .../08-build-seed-upload.txt | 17 + .../09-build-dhcp.txt | 8 + .../10-build-virt-install-1.txt | 6 + .../11-build-virt-install-2-edge.txt | 12 + .../12-build-guests-up.txt | 15 + .../13-build-guest-ssh.txt | 24 + .../14-cloudinit-schema-check.txt | 8 + .../15-k3s-precheck.txt | 19 + .../16-hostkey-defect.txt | 13 + .../17-hostkey-cleared.txt | 4 + .../18-k3s-server-install.txt | 18 + .../19-k3s-server-verify.txt | 3 + .../20-kubeconfig.txt | 7 + .../lab-state-before-rebuild/21-k3s-token.txt | 4 + .../22-k3s-agent-install.txt | 19 + .../23-k3s-cluster-verify.txt | 18 + .../24-edge-nginx-install.txt | 26 + .../25-edge-nginx-config.txt | 12 + .../26-edge-nginx-verify.txt | 38 + .../27-edge-doc-mismatch.txt | 23 + .../28-host-state-before-dnat.txt | 17 + .../29-host-dnat-files.txt | 36 + .../30-layer3-from-workstation.txt | 8 + .../31-cert-doc-precheck.txt | 29 + .../32-cert-doc-dig-remedy.txt | 8 + .../33-keycloak-precheck.txt | 15 + .../34-keycloak-apply.txt | 14 + .../35-keycloak-verify-1-3.txt | 53 ++ .../36-keycloak-verify-4-6.txt | 39 + .../37-keycloak-cluster-size.txt | 6 + .../38-keycloak-verify-7-8.txt | 13 + .../39-observability-apply.txt | 29 + .../40-observability-verify.txt | 50 ++ .../41-observability-cluster-size-retry.txt | 18 + .../42-power-cycle-memory.txt | 18 + .../43-dominfo-vs-config.txt | 14 + .../44-host-prep-checks.txt | 40 + .../45-libvirt-uri-mechanism.txt | 13 + .../raw/lab-state-before-rebuild/README.txt | 51 ++ .../setup/setup-edge-nginx-and-host-dnat.md | 103 ++- .../setup-install-k3s-server-and-agent.md | 34 +- ...-keycloak-two-nodes-and-postgres-on-k3s.md | 78 +- ...cle-the-lab-and-reallocate-guest-memory.md | 17 +- ...prepare-the-lab-host-for-virtualization.md | 22 + ...etup-prometheus-and-grafana-for-the-lab.md | 44 +- ...rtificate-with-dns-01-and-a-deploy-hook.md | 26 +- .../tech-log-studio/tech-log-tree.json | 2 +- 197 files changed, 8336 insertions(+), 960 deletions(-) create mode 100644 .agents/skills/publishing-tech-log-to-studio/references/studio-api.md create mode 100644 .playwright-mcp/send-plans.js create mode 100644 .playwright-mcp/studio-docs.json create mode 100644 .playwright-mcp/studio-targets.json create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/README.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-01-baseline.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-02-cache-entries.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-03-inject-reset.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-04-test0.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-05-claims.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-06-test0-cross-node.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-07-test0b-cache-delta.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-08-test0c-ownership.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-09-test0d-sql.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-10-test0d-retry.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-11-test0d-window.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-12-test0d-controlled.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a0-13-test0d-sql-lines.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a1-01-inject.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a1-02-verify.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a1-03-conntrack.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a1-04-conntrack-missing.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a1-05-conntrack-installed.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a1-06-forced-partition.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a1-07-readiness.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a1-08-readiness-commands.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a1-09-quoting-and-health.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a1-10-cross-node-under-partition.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a1-11-recover.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a2-01-baseline-probe.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a2-02-inject.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a2-03-during-outage.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a2-04-outage-progression.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a2-05-recover.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a3-01-design-check.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a3-02-prepare.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a3-03-attempt1.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a3-04-sids-no-newline.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a3-05-attempt1-redo.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a3-06-attempt2.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a3-07-attempt3.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a3-08-loss-count.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a3-09-revert.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a4-01-baseline.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a4-02-inject-4a.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a4-03-4a-progression.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a4-04-eviction-and-recover.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a4-05-recovery-progression.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a4-06-agent-token-missing.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a4-07-token-remedy.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a5-01-attempt1.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a5-02-attempt2-3.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a5-03-one-direction-watch.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a5-04-bidirectional.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a5-05-revert.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a6-01-attempt1-2.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a6-02-inject.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a6-03-effect.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a6-04-revert.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a7-01-switch-volatile.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a7-02-cross-node-volatile.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a7-03-block-7800.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a7-04-partition-breaks-sharing.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a7-05-revert.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a7a-01-setup.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a7a-02-repro-A.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a7a-03-repro-A-sql.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a7a-04-repro-B.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a7a-05-repro-C-and-revert.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a8-01-baseline.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a8-02-restart.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/a8-03-main-test.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b0-01-image-import.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b0-02-realm-and-user.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b0-03-deploy-bff.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b0-04-bff-status.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b1-01-beans.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b2-01-jdbc-table.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b3-01-setup.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b3-02-secret-and-token.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b3-03-direct-grant-missing.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b3-04-account-not-fully-set-up.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b3-05-race.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b3-06-revert.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b4-01-forged-headers.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b4-02-forged-headers-retry.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b5-01-baseline.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b5-02-redis-down.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b5-03-revert.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b6-01-deploy-echo.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b6-02-jwks-before.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b6-03-providers.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b6-04-old-token.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b6-05-echo-401.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b6-06-kid-and-issuer.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b7a-01-oauth2-proxy.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/b7a-02-oauth2-proxy-blocked.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/c1-01-clear-sessions.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/c2-01-backchannel-probe.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/d1-01-backup.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/d1-02-destroy-restore.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/d2-01-baseline.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/d2-02-upgrade.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/d2-03-rollback-and-reverse.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/d2-04-revert.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/d3-01-secret-paths.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/d3-02-paths-and-revert.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/d3-03-strings-missing.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/d4-01-renewal-automation.txt create mode 100644 docs/keycloak-session-store/final/evidence/raw/relive-2026-09-17/d4a-01-hook-state.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/01-host-before-teardown.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/02-teardown-step0.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/03-teardown-step1.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/04-teardown-step2.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/05-teardown-verify.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/06-build-seed-as-documented.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/07-build-seed-fixed.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/08-build-seed-upload.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/09-build-dhcp.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/10-build-virt-install-1.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/11-build-virt-install-2-edge.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/12-build-guests-up.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/13-build-guest-ssh.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/14-cloudinit-schema-check.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/15-k3s-precheck.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/16-hostkey-defect.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/17-hostkey-cleared.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/18-k3s-server-install.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/19-k3s-server-verify.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/20-kubeconfig.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/21-k3s-token.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/22-k3s-agent-install.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/23-k3s-cluster-verify.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/24-edge-nginx-install.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/25-edge-nginx-config.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/26-edge-nginx-verify.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/27-edge-doc-mismatch.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/28-host-state-before-dnat.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/29-host-dnat-files.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/30-layer3-from-workstation.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/31-cert-doc-precheck.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/32-cert-doc-dig-remedy.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/33-keycloak-precheck.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/34-keycloak-apply.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/35-keycloak-verify-1-3.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/36-keycloak-verify-4-6.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/37-keycloak-cluster-size.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/38-keycloak-verify-7-8.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/39-observability-apply.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/40-observability-verify.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/41-observability-cluster-size-retry.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/42-power-cycle-memory.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/43-dominfo-vs-config.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/44-host-prep-checks.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/45-libvirt-uri-mechanism.txt create mode 100644 docs/virtualization/final/evidence/raw/lab-state-before-rebuild/README.txt diff --git a/.agents/skills/publishing-tech-log-to-studio/SKILL.md b/.agents/skills/publishing-tech-log-to-studio/SKILL.md index ca3e86b..9228bca 100644 --- a/.agents/skills/publishing-tech-log-to-studio/SKILL.md +++ b/.agents/skills/publishing-tech-log-to-studio/SKILL.md @@ -61,11 +61,18 @@ aside[class*="studio-document-status"] ← 이것이 안 보이면 인증 실 ### 1. 기록을 읽고 무엇을 넣을지 정한다 `kind` 로 칸 목록이 정해진다. 어떤 `##` 제목이 Studio 의 어느 칸인지는 -[references/studio-form-map.md](references/studio-form-map.md). +[references/studio-form-map.md](references/studio-form-map.md), 그 칸이 서버에서 어떤 이름과 +자료형인지는 [references/studio-api.md](references/studio-api.md). **frontmatter 는 메타데이터고, 본문의 `##` 가 Studio 의 칸이며, 제목 아래 첫 문단이 `요약` 이다.** 계약에 없는 `##` 는 화면에 자리가 없어 통째로 사라진다. +**본문은 이제 화면으로 넣지 않는다.** 편집 화면의 본문이 블록 편집기로 바뀌어 블록 하나가 +` -
-
-``` - -`요약` · `본문 Markdown` · `관계 N 이유` 가 B형이다. A형만 찾으면 이 칸들이 조용히 안 채워진다. -**둘 다 본다.** +**위의 `label` 두 모양 이야기는 낡았다.** 지금 `label.studio-field` 가 감싸는 것은 제목과 요약 +둘뿐이고, 나머지 칸은 전부 `aria-label` 을 갖는다. xpath 로 `span` 을 뒤질 일이 없다. ```js -async function field(page, name) { - const a = page.locator(`xpath=//label[./span[normalize-space(.)="${name}"]]`) - .locator('textarea, input').first(); - if (await a.count()) return a; - const id = await page.locator(`xpath=//label[normalize-space(.)="${name}"]`) - .first().getAttribute('for'); - return id ? page.locator('#' + id) : null; -} +document.querySelector('input[aria-label="제목"]') +document.querySelector('textarea[aria-label="요약"]') +document.querySelector('input[aria-label="slug"]') +document.querySelector('input[aria-label="판단 기준 1 제목"]') +document.querySelector('textarea[aria-label="적용할 때 3"]') ``` -**본문 칸의 이름은 `본문` 이 아니라 `본문 Markdown` 이다.** +되풀이 칸을 늘리는 버튼은 `+ 판단 기준` · `+ 적용할 때` · `+ 예외와 주의` · `+ 예시` · +`+ 버전 추가` 다. 줄 수를 먼저 맞추고 값을 넣는 규칙은 그대로다. + +## 본문 칸이 사라졌다 — 블록 편집기다 + +**`본문 Markdown` 이라는 textarea 는 더 없다.** 본문은 `.studio-block-editor` 이고 블록 하나가 +`