# 2026-W29 Worklog
AI Summary
Purpose:
- Tracks development work across repositories for this week.
Key points:
- 2026-07-19: Finalized the Vroong application package. Preserved the posting
(Remember 323031), ran three independent persona reviews (CTO/CEO/tech lead, all BORDERLINE; report in human/reports/), and applied the converged fixes with user approval: Debezium claim reduced to its verified scope (비교 검토 + Maxwell FileSink PoC), AWS reframed to current prod-DB ownership, streaming/ DW bridges and a logistics connection added, repetition trimmed. Vroong resume 3p and portfolio 10p (Forgejo excluded) redeployed; Remember's submitted PDFs left untouched. The same Debezium fix was applied to the Toss Payments resume later the same day (see the dated entry).
- 2026-07-19: Remember & Company application SUBMITTED by the user.
- 2026-07-19: Vroong Data Engineer application SUBMITTED by the user
(Remember posting 323031, deadline 7/31) — resume 3p + portfolio 10p, after persona-review P0 fixes and live-site redeploy.
- 2026-07-19: Fixed the selected-portfolio PDF assembly generically (stranded
half-width sections, blank overflow pages via compact+zoom fit pass, series cross-links, cmp/h4 widget styles, numbering-badge titles, canonical portfolio.hwlabs.dev links) and regenerated the company portfolio PDFs so every item is exactly one A4 page. Corrected the binlog item's exactly-once claim to effectively-once and split the ETL item's design-estimate figure from measured results. Removed leftover fabrication traces (검색엔진 인덱스 문서 수, EC2 8대) from spotlight-pdf.html and regenerated its PDF.
- 2026-07-19: Replaced quote-wrapped emphasis with <b> highlights in the
Remember resume (user rule: quote-wrapping reads AI-generated; recorded in the ATS template header).
- 2026-07-17: Critically reviewed all four Claude Code resume packages without
changing their source files. Preserved a Korean action report covering factual boundaries, de-duplication, page length, metric clarity, and per-company positioning.
- 2026-07-17: Recorded the user's Google Drive resume locations in the canonical
resume-assets note, including the current Codex Toss Payments PDF, company-specific Claude folders, and the legacy personal archive; replaced the stale Mac-only work path with Drive-relative paths plus the current machine mount point.
- 2026-07-16: Prepared the 2026 career-transition workspace. Preserved the user-provided
job-search context, verified public resume/portfolio sites, selected Remember Data Engineer as the high-fit application and Toss Payments Data Engineer as the stretch application, verified Jira+Confluence cross-search, and enabled jobstack/gstack for Codex.
- 2026-07-16: Reviewed the two-page Toss Payments Systems Engineer ATS PDF, confirmed
official simultaneous applications across Toss affiliates, selected Toss Place Data Analytics Engineer as the additional target, and drafted the Toss Payments Data Engineer resume content.
- 2026-07-16: Confirmed the CDC system as directly designed and implemented by
Hyunwook, with deployment-scenario review completed. The technical-support team deploys and operates it in approximately ten customer environments; Hyunwook receives operating issues, improves the implementation, and provides technical support. Revised the Toss Payments resume around this ownership boundary.
- 2026-07-16: Produced the Toss Payments Data Engineer ATS resume PDF and then
rerendered it as a more readable three-page version with larger type, wider line spacing, and clearer section transitions. Verified all pages visually and by text extraction, and prepared the local handoff under ~/hw/코덱스이력서/토스페이먼츠/.
- 2026-07-16: Rebuilt the portfolio architecture-diagram system after reviewing the
user-provided Toss Payments portfolio PDF. Twenty-one detail pages now use a consistent icon-based SVG language, retain editable Mermaid/Excalidraw sources, and render correctly in desktop, mobile, and selected A4 PDF layouts.
- 2026-07-16: Toss Payments ATS resume introduction rewritten around one career story:
software-supply-chain security data → vulnerability validation/prioritization → systems ownership required for freshness and customer delivery. The two-page tagged/text PDF was regenerated with the photo, phone and portfolio.hwlabs.dev annotations preserved.
- 2026-07-15: vcpkg "버전 누락" 66행/9포트 검증 — 전부 실누락 아님, 두 부류.
① 제거/리네임 포트 8종(58행): proj4·fplus·ms-quic·ilmbase·graphqlparser· ecsutil·boost-modular-build-helper·boost-vcpkg-helpers — ports/*/vcpkg.json 전부 404(현행 아님), versions/*.json 원장만 append-only 잔존. gatheringdb 3단 0(W28 제거포트=대상외). ② drogon(7행): 현행 포트, gatheringdb 31/31 완전(07-07 백필)인데 dist-main 24행 = 백필 7건 미전파. 리포트가 dist 기준 + universe가 원장 그대로라 발생. 조치=drogon dist 전파 / 도구 universe를 현행 ports 필터로 교체(W28 기지적).
- 2026-07-15: ruby 3건 검증→전체 백필→근본배포. jektex 0.2.0 / stream 0.5.6 = 실누락,
stencil 0.1.1 = 오탐(수집됨). 근본원인 = 증분은 정상·최신(커서 07-15)이나 전진 스캔만 + 전수 대조 안전망 부재(이슈 E) → 다운타임/윈도우/케이스 갭 미복구(+jektex는 work-list Jektex 대문자 → API 404 → NOT_FOUND 오염). 전역 /versions↔DB 차집합으로 누락 156(고유 101) 산출 → 실 gem 48/1,310버전 백필(404 53=yank 정상제외), jektex work-list 교정. 근본배포: crawler-lib-ruby 에 reconcile() 안전망 신설(master 9f98f84, labCrawl1 배포, 주간 cron) → canonical 이름 enqueue+processQueue, dry-run 검증 누락 101→4. run()/main.py 불변·무중단.
- 2026-07-15: vcpkg
minmea누락 검증 — 실누락 아님(신규 포트, 이미 완전 수집).
upstream registry 1버전(1.0.0)뿐 ↔ DB RAW→VERSION→PRODUCT 3단 1/1 일치. 갓 추가된 포트라 07-07~09 풀백필 밖 → 일일 사이클이 07-13/14 정상 수집. 누락 도구의 타이밍 오탐.
- 2026-07-13: pypi
pymount_javav12누락 검증 — 실누락 아님(이름 정규화 미스매치).
DB 키는 PyPI simple index 의 PEP 503 정규화명(pymount-javav12, 대시), 리포트는 화면 표기명(언더스코어)으로 조회. 데이터는 인테이크→버전→dist 까지 전부 존재.
- 2026-07-14: java/MAVEN "새로운 누락" 75건 검증 — 65 실누락(백필 완료 207버전) /
1 부분수집(ai.nxtone) / 9 오탐(Central 미존재, JitPack/Gradle 계열). 근본원인 = MavenCentral 인덱스 앵커가 06-25 정지: ① 인덱서 07-06~07-12 미가동(07-13 재기동) ② archive.VERSION varchar(100) 초과 1행이 배치 전체를 1406 으로 죽여 ingest 매 사이클 실패(anchor 미전진). 코드개선(스키마 불변) + 백필 완료.
- 2026-07-14: portfolio/human-output — Toss Payments Systems Engineer 이력서/포트폴리오
재작성(검증된 problem→diagnosis→change→result 서사, 역할 경계 보존) + 8개 상세페이지 타이포그래피 통일 + public-safe SVG 아키텍처 다이어그램(hybrid k8s / DML Broker / Airflow-k8s / Prometheus-Grafana) 추가. 근거: ai/wiki/projects/data-platform-systems-engineering.md.
Relevant when:
- Reviewing this week's development work.
- Creating weekly report.
Do not read full document unless:
- The task concerns this week.
Linked documents:
ai/sources/career/2026-07-19-vroong-data-engineer-posting.mdhuman/reports/2026-07-19-vroong-persona-resume-review.mdai/worklog/2026/2026-W28.mdai/wiki/projects/data-platform-systems-engineering.mdai/sources/career/2026-07-14-toss-systems-engineer-user-history.mdai/sources/career/2026-07-16-resume-introduction-feedback.mdhuman/portfolio/index.htmlai/wiki/projects/2026-career-transition.mdai/sources/career/2026-07-16-job-search-context.md
Work Items
Vroong application: posting capture + 3-persona review + fixes applied (2026-07-19)
- User applied to Remember & Company (status recorded in memory); Vroong is the
next submission target.
- Fetched and preserved the Vroong Data Engineer posting (Remember 323031,
deadline 2026-07-31) as ai/sources/career/2026-07-19-vroong-data-engineer-posting.md.
- Ran independent persona reviews of the Vroong resume + portfolio PDFs against
the posting: CTO, CEO, and data-team tech-lead all completed (the CTO pass was briefly stopped, then finished). All three verdicts: BORDERLINE — pass-worthy but fix before submitting.
- Consolidated report:
human/reports/2026-07-19-vroong-persona-resume-review.md. Top shared P0 is the still-unfixed Debezium "직접 돌려 검증" overclaim (flagged 07-17, present in both the intro and the career bullet); next are the AWS "left-the-cloud" framing and the unaddressed Streaming gap. Requirement matrix: 4 met / 2 partial (business-stakeholder collaboration, AWS narrative) / 1 borderline (exactly 5 years) / 1 unmet (DW·Data Mart modeling).
- Applied the converged fixes after user approval of the md draft (md → HTML →
PDF, per the standing workflow): - Resume: Debezium claim corrected to 비교 검토 + Maxwell FileSink PoC only; intro now carries the 94% cost figure, a streaming-extension bridge, and a grounded logistics-데이터 정합성 connection; AWS bullet/case reframed to "운영 DB는 지금도 AWS에서 직접 운영" + workload-based placement; "도입처 계속 늘고" reduced to one mention (case 1 result); skills renamed to Schema Design / Data Quality with "정식 dimensional modeling은 학습 중". - The intro growth initially pushed the PDF to 4 pages; compressed the intro bridge, the career-intro collaboration sentence, and the ELT bullet to restore the 3-page layout. Visually verified all three pages (ops cards render fine — the reviewer's layout concern was a pdftotext artifact). - Portfolio canonical items: binlog item's "사실상 exactly-once" softened to 멱등 적용(effectively-once, DML 기준, DDL 별도 경로); ETL item's "2일→5분" moved to a 기대 효과(설계 산정) card with 실측 아님 and the "적용한 소스부터" condition restored on the 0건 claim. - Regenerated Drive PDFs: Vroong resume 3p, Vroong portfolio 10p (9 items — Forgejo excluded per CTO+CEO recommendation), Toss Payments and Toss Place portfolios (contain the edited items). The already-submitted Remember PDFs were deliberately left untouched as the submitted snapshot.
Selected-portfolio PDF: stranded half-width section fix (2026-07-19)
- User feedback on the selected-portfolio assembly (K8s·Airflow item): a lone
narrow section ("역할을 나눈 방식") rendered as a half-width box next to empty space, looking careless.
- Root cause:
selected-portfolio-pdf.htmllays sections in a 2-column dense
grid where diagram/impact sections span full width; an odd count of narrow sections always strands the last one at half width.
- General fix in the assembly script: after classifying sections, if the narrow
count is odd, promote the last narrow section to wide. Applies to every item, not just this page. Verified by rendering the assembled page to PDF via a local HTTP server; the section now spans the full row.
- Two more layout/link fixes in the same file: result sections with exactly
four metric cards now render 2x2 instead of 3+1, and displayed/linked URLs are always canonicalized to https://portfolio.hwlabs.dev/ so PDFs rendered from localhost no longer leak 127.0.0.1 links (asset src stays on the render host so images load).
- Regenerated all four company portfolio PDFs in Google Drive
career/클로드이력서/<company>/김현욱_<회사>_포트폴리오.pdf with the same item sets and order as before (extracted from each old PDF's per-page footer): Remember 8 items/10p, Toss Payments 9/12p, Toss Place 9/11p, Vroong 10/13p. Page counts match the previous versions; zero 127.0.0.1 strings; visual check of the K8s·Airflow page confirmed the full-width role section and 2x2 result cards.
- Removed fabrication leftovers from
spotlight-pdf.html(static page, was
missed in the 2026-07-16 Elasticsearch cleanup): "검색엔진 인덱스" in the worker note, "검증 — 인덱스 문서 수 일치" (ES doc-count claim), and the unverified "EC2 8대 + EFS" count. Replaced with wording grounded in the canonical items/aws-to-idc-migration.html (backup/restore + 정합성 검증, 운영 DB 외 자원 정리로 월 비용 약 94% 절감). Regenerated hyunwook-kim-technical-portfolio-spotlight.pdf (5p) in place.
- Second round (same day, user found a near-blank page and a "cut-off" 역할
section): the ETL item overflowed one A4 page, pushing just the footer link onto a blank page, and its 역할 section ended with a web-navigation series pointer ("데이터 플랫폼 재구축 시리즈 ① → ②...") that read as a dangling sentence in PDF. Fixes in selected-portfolio-pdf.html, all generic: 1. strip p.rel paragraphs containing links (cross-item series navigation); 2. post-render fit pass — articles taller than one A4 page first get a compact class (tighter paddings, 34mm diagram cap), then if still overflowing are zoom-scaled down to fit (floor 0.78; beyond that a real second page is kept); 3. compact styles for item-page widgets .cmp/.cmp-t/h4 that previously fell back to oversized UA defaults (binlog item's Before/After); 4. section titles now drop the <span class="n"> numbering badge, fixing the "A아키텍처" artifact.
- Regenerated and redeployed all four Drive portfolio PDFs: Remember 9p,
Toss Payments 10p, Toss Place 10p, Vroong 11p — exactly cover + one page per item, zero footer-only pages, zero series/localhost/badge artifacts. Visually verified the ETL, binlog (zoom-fitted), and component-popularity pages.
- Note: the live site (portfolio.hwlabs.dev) serves these fixes only after the
repo change is committed and deployed; the Drive PDFs are already updated.
Remember resume: quote-wrapped emphasis replaced with bold highlights (2026-07-19)
- User feedback: wrapping emphasis phrases or JD citations in quotation marks
(e.g. "타협할 수 없는 데이터 정합성") reads AI-generated; use the template <b> highlight instead.
- Applied to the Remember & Company resume HTML (Why Remember section, four
spots) and why-remember-지원동기-초안.md; literal company-name examples kept plain without quotes. Other three resumes had no quote-wrapped emphasis in submission content.
- Regenerated the 4-page A4 PDF, verified page 4 visually and by text
extraction (zero straight quotes remain).
- Rule recorded in
ai/templates/resume-ats-template.htmlheader comment so
every agent follows it.
Claude Code resume critical review (2026-07-17)
- Reviewed the Markdown, HTML, and PDF for Remember & Company, Toss Payments,
Toss Place, and Vroong under career/클로드이력서/.
- Confirmed the current PDFs are four pages for Remember and three pages for each
of the other three companies. Rendered all four HTML documents to inspect the actual information density and hierarchy.
- Identified a submission-blocking factual boundary: the Toss Payments and Vroong
resumes say Debezium and Maxwell were run directly, while the canonical evidence supports comparison review for Debezium and a hands-on FileSink PoC for Maxwell.
- Prioritized de-duplication, CDC ownership wording, the unresolved IDC incident
metric conflict, RubyGems unit clarification, company-specific headline/case selection, and education-name verification.
- Preserved the Korean review at
human/reports/2026-07-17-claude-code-resume-critical-review.md and prepared the user-requested Google Drive copy at career/코덱스이력서/클로드코드_이력서_비판적_검토.md.
- Original Claude resume, HTML, PDF, and portfolio files were not modified.
Google Drive resume-location memory (2026-07-17)
- Confirmed that the current Codex-generated Toss Payments PDF is stored at
career/코덱스이력서/토스페이먼츠/김현욱_토스페이먼츠_Data_Engineer_이력서.pdf relative to Google Drive My Drive.
- Recorded
career/클로드이력서/as the company-specific resume and draft collection,
and 개인자료/이력&포트폴리오/ as the older personal archive.
- Updated
ai/assets/resume/README.mdso future agents can resolve these files without
relying on the obsolete /Users/khw/hw/클로드이력서/ path. The current Linux mount point is /mnt/g/내 드라이브/.
Portfolio architecture visual-system rebuild (2026-07-16)
- Reviewed all nine pages of the user-provided Toss Payments Systems Engineer
portfolio PDF and extracted its useful visual conventions: pale blue architecture fields, compact icon cards, explicit blue routes, restrained callouts, and strong title-to-diagram hierarchy.
- Applied the Gstack engineering-review and diagram workflows to the portfolio rather
than treating each illustration as an isolated drawing. Audited the full portfolio and found four existing external SVGs, nine raw Mermaid SVG blocks, and eight pages with architecture content but no diagram.
- Added
scripts/generate_portfolio_architecture_diagrams.pyas the deterministic
source for 21 icon-based web SVGs. Each specification is grounded in existing page content; no services, metrics, or ownership claims were added for visual symmetry.
- Replaced raw inline Mermaid and legacy box diagrams with relative external assets
under human/portfolio/diagrams/, descriptive Korean alternative text, and concise captions. Added corresponding Mermaid, Excalidraw, SVG, and PNG editing artifacts under human/portfolio/diagrams/editable/.
- Fixed a selected-portfolio PDF assembly defect: relative image and link URLs from an
item page were previously resolved against selected-portfolio-pdf.html, producing human/diagrams/... 404s. The assembler now resolves cloned resources against each source item URL before insertion.
- Corrected two review findings before completion: legacy diagrams nested in content
columns were replaced at their full section boundary, and misleading linear flows for database separation, object storage, and vulnerability-source aggregation were redrawn to match their actual semantics.
- Verified all 21 web SVGs as valid XML, all 21 editable artifact sets as parseable,
all item image paths as present and relative, and the absence of raw inline SVGs in affected item pages. Browser checks covered representative desktop and mobile layouts with no page-level overflow or console errors. A three-project selected portfolio produced a four-page A4 PDF with sharp diagrams and no clipping, overlap, broken glyphs, or missing images.
Toss Systems Engineer resume introduction rewrite (2026-07-16)
- Replaced the short infrastructure-task summary with two connected paragraphs.
- Paragraph one names the domain and evidence: package/version/source/binary/license data,
CVE/OSV and distro advisories, false-positive/false-negative validation, and patch priority.
- Paragraph two explains why the role expanded into Airflow/Kubernetes, shared DB access,
storage, backup and monitoring as crawler volume exceeded 80 and delivery reliability became part of data quality.
- Regenerated the ATS PDF as A4 two pages;
pdftotextpreserved the new narrative, the profile
photo remained embedded, and phone/portfolio PDF link annotations remained intact.
Toss Payments Data Engineer resume transformation (2026-07-16)
- Rendered and visually inspected the user-provided two-page Systems Engineer ATS PDF;
layout is clean with no clipping, overlap, or broken glyphs.
- Confirmed through the official Toss Community joining guide that applicants may
apply to multiple affiliates at the same time.
- Chose Toss Place Data Analytics Engineer over Toss Place Data Engineer for the
additional application: the former maps to SQL, DQ, standardization, metadata, mapping, backfill, and documentation; the latter has direct Kafka/Spark requirements.
- Created
human/resume/toss-payments-data-engineer/resume-draft.mdby keeping the
Kubernetes/Airflow platform evidence and replacing the infrastructure-heavy AWS/PC case with missing-data reconciliation and DQ.
- Deferred CDC wording until its actual design/PoC/pilot/production boundary is confirmed.
- Resolved that boundary through direct user confirmation: CDC is deployed by the
technical-support team to approximately ten customer environments, with batch delivery chosen intentionally for the customer binlog-distribution model. Hyunwook owns design, implementation, deployment-scenario review, and issue-driven improvement—not customer deployment or day-to-day operation.
- Reframed the two detailed resume cases as (1) Airflow/Kubernetes batch-platform
reliability and (2) production-deployed batch CDC design and operations support. Repository-backed evidence clarified the production boundary: Python/FastAPI raw-binlog delivery plus a customer-side Go Updater that parses ROW events offline, handles MySQL 8.4 ZSTD payloads, and applies parameterized row DML.
- Re-ran Confluence research for Debezium, Maxwell, Canal, the Maxwell FileSink PoC,
the production binlog-transfer path, and the quality-improvement ownership record. Preserved the evidence in ai/sources/career/2026-07-16-confluence-cdc-tool-research.md.
- Rewrote the CDC narrative around the actual decision sequence: concrete tool
comparison criteria → Maxwell DML/DDL PoC → customer TCP and cadence constraints → real-time proposal deprecated → custom production batch path. Kept Maxwell, Kafka, event offsets, and DLQ out of production claims.
- Ran a fourth independent CTO review pass. The verdict remained
INTERVIEW, with no
submission-blocking content issue. Production Spark remains an honest JD gap rather than a wording problem.
- Corrected a material CDC ownership boundary after the user's clarification:
Hyunwook did not personally deploy to or operate customer environments. He owns tool evaluation, design, implementation, deployment-scenario review, and issue-driven code improvement; the technical-support team owns deployment and day-to-day operation across approximately ten customer environments.
- Updated the Toss Payments resume, career source note, BTS and career-transition
wiki pages, canonical person profile, and the affected public portfolio pages.
- Regenerated the five-page public spotlight PDF from the corrected portfolio HTML.
Text checks confirmed the old direct-deployment/operation claims were absent, and visual inspection of all five rendered pages found no clipping, overlap, or broken glyphs. Replaced its legacy Pages-domain links with the canonical portfolio.hwlabs.dev URLs and verified all eight PDF link annotations.
- Ran a fifth independent CTO review after the correction. The verdict remained
INTERVIEW with no P0: the CDC fit is weaker on direct day-to-day operation but stronger on credibility, handoff collaboration, and defensible production-code ownership. Spark, Kafka, and Flink production gaps remain.
- Added
human/resume/toss-payments-data-engineer/resume-print.htmlas the dedicated
ATS print layout and applied the canonical profile photo from ai/assets/resume/. The first generic Markdown-to-PDF render was rejected because it styled body copy as links, leaked a smart-punctuation preservation token into the GitHub URL, and produced an underfilled fourth page.
- Printed the corrected layout as an A4 PDF. The initial two-page version passed
technical checks but was too dense to scan comfortably, so it was rerendered as a three-page version with 10.2pt body type, 1.55 line height, larger margins, and a deliberate page break before the CDC case. Visual inspection of all three pages found no clipping, overlap, broken Korean glyphs, orphan headings, or contextless section continuations. Text extraction confirmed contact details, quantified platform outcomes, the CDC deployment/operation boundary, approximately ten customer environments, and education; no placeholders or transformation tokens remained. A fresh repository-side render after adding the profile photo remained three pages, embedded one image on page 1, and preserved the mail, GitHub, and portfolio links.
Career-transition setup and first target selection (2026-07-16)
- Preserved
/Users/khw/Downloads/toss-career-context.mdas
ai/sources/career/2026-07-16-job-search-context.md with an AI-facing summary.
- Verified the public entry points:
https://resume.hwlabs.dev/is the resume deployed
from another PC; https://portfolio.hwlabs.dev/ is backed by this repository's human/portfolio/ output.
- Found a pre-submission link issue: the live resume still points its portfolio and
project links at portfolio-equ.pages.dev instead of portfolio.hwlabs.dev; its resume_pdf value is empty.
- Revalidated current listings and selected the first pair:
- Remember & Company Data Engineer: high fit across Python/SQL/Airflow, external source collection, mapping, migration/backfill, DQ, monitoring, and documentation. - Toss Payments Data Engineer: directionally strongest stretch role; verified Kubernetes/Airflow/binlog/CDC evidence is relevant, while production Spark, Kafka, and Flink remain material gaps.
- Verified Atlassian Rovo connectivity with a single
Kubernetes Airflowsearch that
returned both Confluence pages and Jira issues.
- Enabled existing Claude-side tool packs for Codex: jobstack 16 linked skills and
gstack Codex-host setup. A new Codex thread is required for discovery.
VCPKG "버전 누락" 66행/9포트 검증 (2026-07-15, 조사만 — 실누락 0)
- 입력: 사용자 CSV(
~/Downloads/2026-07-15T02-11_export.csv,이름,버전,시각66행,
시각 컬럼 전부 공란). 9포트: boost-modular-build-helper(15) / boost-vcpkg-helpers(6) / drogon(7) / ecsutil(23) / fplus(1) / graphqlparser(1) / ilmbase(2) / ms-quic(1) / proj4(10).
- 결론: 66행 전부 실누락 아님. 두 부류 + 리포트 도구 결함 2건.
- 방법: upstream 3소스 대조 — ①
ports/<port>/vcpkg.json(현행 포트 여부) ②
versions/<x>-/<port>.json(append-only 버전 원장) ③ gatheringdb 3단 (RAW TB_COMP_LIB_VCPKG_RAW / VERSION TB_COMP_LIB_VERSION_VCPKG / PRODUCT TB_COMP_LIB_PRODUCT_VCPKG) + dist-main VIEW_COMP_LIB_VERSION_VCPKG (통합테이블 TB_COMP_LIB_VERSION_C_CPP 뷰).
- 부류 A — 제거/리네임 포트 8종(58행) = 죽은 포트 원장 잔존 오탐:
- 8종 모두 ports/<port>/vcpkg.json 404(= 현행 vcpkg 포트 아님)인데 versions/*.json 버전 원장은 append-only 정책상 잔존 → 리포트 universe에 계속 보임. - gatheringdb 3단 전부 0행(W28 확정 "registry-only=제거포트=RAW부재=대상외"). dist-main엔 제거 이전 옛 크롤분 소수 잔존(proj4 6 / boost-modular 10 / boost-vcpkg-helpers 9 / fplus 6 / ilmbase 2 / ecsutil 1 / graphqlparser 1 / ms-quic 1). - 리네임 매핑(현행 등가물은 새 이름으로 이미 수집): proj4→proj, fplus→functionalplus, ms-quic→msquic, ilmbase→openexr/Imath. graphqlparser·ecsutil·boost 헬퍼 2종은 폐기. - 조치 불필요. proj4의 정수형(1,2)·날짜형(2018-04-15)·접미사형(4.9.3-1) 버전은 CONTROL 시절 표기라 registry 원장에만 남은 것.
- 부류 B — drogon(현행 포트, 7행) = dist 전파 지연:
- registry 원장 31버전(v1.0.0-beta18 ~ 1.9.13) = gatheringdb 31/31 완전(SORT 0~30, 전부 PROCESSED=1). CSV 지목 7건(v1.0.0-beta21·1.0.0·1.1.0·1.3.0·1.4.1·1.5.1·1.6.0)은 RECORD_CREATED 2026-07-07 19:40 = W28 풀백필 적재분. - dist-main은 24행뿐, 그 7건 정확히 부재(31−24=7). 즉 07-07 백필이 gathering엔 들어왔으나 distribution DB로 미전파 → dist 기준 리포트가 "누락"으로 표기. (dist 24 = 옛 2024 크롤 1.7.1~1.9.13 22 + beta18·beta20 2, 중간 7건이 구멍.) - 조치: gathering→dist 전파(퍼블리시)만 하면 해소. 진짜 미수집 아님.
- 리포트 도구 결함 2건(재발원인):
1. universe가 append-only versions/*.json 원장 그대로 → 제거포트가 영구 오탐. 현행 ports(baseline.json/ports/ 실재)로 필터해야 함. W28 line 314-315에서 이미 지적된 사각지대의 실사례. 2. 비교 대상 DB = dist-main이라 gatheringdb 완료 백필도 dist 미전파 구간은 누락으로 뜸(drogon). gathering↔dist 동기 상태가 리포트 정확도를 좌우.
- 산출: 없음(read-only). DB 쓰기·백필 실행 없음.
RUBY 누락 3건 검증 + 전체 백필 + 근본원인 + reconcile 안전망 배포 (2026-07-15)
- 입력: 사용자 3건(gem·버전·시각) — Stencil 0.1.1
2010-01-04 18:50:00/
jektex 0.2.0 2026-07-10 20:12:49 / stream 0.5.6 2026-05-10 13:58:30.
- 방법: upstream RubyGems(
api/v1/versions/{gem}.json+gems/{gem}.json) ↔
수집 labradordb.TB_COMP_LIB_VERSION_RUBY(gatheringdb 커넥션 경유) ↔ 배포 dist-main labradordb.TB_COMP_LIB_VERSION_RUBY 3자 대조. LIST=gatheringdb.TB_COMP_LIB_RUBY_LIST.
- 결과:
- stencil 0.1.1 = 누락 아님: 현 upstream stencil 7버전(0.1.0/0.1.1/0.1.2/0.1.3/ 0.1.4/0.1.5/0.1.8) 전부 gathering·dist 존재. stencil(소문자) PRODUCT_KEY, 0.1.1 RELEASE_DATE 2010-01-04T09:50:00Z(=18:50 KST) = 리포트 시각과 정확히 일치(도구가 우리 행을 봄 = 미수집 아님). ⚠ 대문자 Stencil/0.1(2009-12-27) 유령 행 존재 → 리포트가 대문자 키로 조회 시 소문자 0.1.1 못 봐서 오탐 가능. - jektex 0.2.0 = 실누락: upstream 현재 최신(2026-07-10, prerelease/yank 아님). 우리 DB(gathering+dist) jektex max=0.1.1(2023-10-24 수집), product LATEST=0.1.1. version-row 마지막 재터치 2026-06-01(0.2.0 게시 이전) → 이후 미수집. - stream 0.5.6 = 실누락: upstream 현재 최신(2026-05-10). 우리 DB stream(소문자) = 0.5/0.5.2/0.5.3/0.5.4/0.5.5(5/6), 0.5.6 부재. product(Stream 대문자) LATEST=0.5.5. 0.5.5를 05-12(0.5.6 게시 2일 후) 재터치했는데도 0.5.6 미추가.
- 근본원인 확정(운영 실체 대조): 증분 크롤러는 정상·최신이 맞음 — labCrawl1
crawler-lib-ruby(image iotcube/rubycrawler:0.1.0, 2026-06-23 기동, 배포코드=master 4a16d0e=fix 브랜치 전부 포함) 가 4h마다 실행, 진짜 커서 gatheringdb.TB_CRAWLER_STATUS =2026-07-15(당일). (내가 처음 본 labradordb의 04-02 커서는 미사용 유령 행이었음 — 크롤러 기본 스키마=gatheringdb.) 그래서 원인은 크롤러 정지가 아니라 구조: 증분 run() 은 timeframe 피드를 커서 이후로만 전진 스캔하고 발견 gem 을 work-list 에 enqueue→ processQueue 로 드레인하는데, 전수 대조 안전망이 없음(이슈 E) → 크롤러 다운타임(06-23 이전)·윈도우 유실·대소문자 오염으로 한번 놓친 버전은 피드에 다시 안 떠 영구 누락. a52d550 은 일시오류 재시도(A/B)만 하드닝, E·이름정규화 미구현이라 잔존 갭이 남음. stream 0.5.6= 다운타임/윈도우 갭, jektex 0.2.0=case 오염.
- jektex case 오염 확증: work-list
Jektex(대문자) → RubyGems API 대소문자 구분 →
api/v1/versions/Jektex.json HTTP 404 → processQueue 가 NOT_FOUND(5) 영구 종료. 동일 유형 NOT_FOUND 오염은 전 work-list에 jektex 1건뿐(RubyBill 은 대/소문자 둘다 404=진짜 삭제=정상). uppercase work-list 6,321행은 PROCESSED=1(=canonical 이 대문자인 실 gem) → 오염은 2022 풀스캔의 역사적 잔재이지 현재 피드가 만드는 것 아님. version 테이블 PRODUCT_KEY 는 case-sensitive라 Stream(2011~12 유령)/Stencil(0.1 유령) 잔존(별건 위생).
- ① 전체 규모 산출:
~/labrador/tool/rubygems_missing_products/extract_rubygems_missing_versions.py
(전역 compact index /versions ↔ DB comm 차집합) → 버전 누락 156(고유 gem 101). 절반은 보안 테스트 gem(apex-/xss-/test-), 나머지는 실 gem(oauth2·omniauth-identity· minitest-hashdiff·opentelemetry- 등).
- ② 백필 완료:
collect_rubygems_missing.py --sink db --no-ai(멱등·resumable, gem당
전체버전 upsert, crawler 포맷 동일) → 실 gem 48개 / version 1,310 적재, err 0, 404 53 (이미 yank된 abuse gem=정상 제외→exclusion 누적). jektex 0.2.0(LICENSE [193])·stream 0.5.6(LICENSE [353])·oauth2 2.0.25 등 DB 검증. minitest-hashdiff/jekyll-fast-reader 는 0.1.0 이 yank돼 0.1.1만 수집(compact index append-only 델타를 finder 가 union 하여 yank 를 과대보고한 것 — 데이터는 정상).
- ③ case 교정: work-list
Jektex(5) →jektex(PROCESSED=1) 1행 corrective UPDATE
(fix_jektex_worklist.py, before/after 검증).
- ④ 근본 배포 — reconcile 안전망(이슈 E):
crawler-lib-ruby에reconcile()신설
(feat 브랜치→master merge 9f98f84, origin push + labCrawl1 git pull 배포). 전역 /versions ↔ DB 전수 대조 → 누락 버전 gem 을 canonical 이름(index 원문 case=오염 없음)으로 enqueue 후 기존 processQueue 드레인. _reconcileDiff 는 append-only 델타의 yank(-)를 제거 반영(과대보고 방지). main_reconcile.py(--dry-run) 진입점 + 단위테스트 5 (전체 18 green). 기존 run()/main.py 불변(신규 파일만 = 무중단, bind-mount 라 이미지 재빌드 불필요). 컨테이너 검증(dry-run): 백필 후 누락 gem 101→4 수렴 확인. labCrawl1 주간 cron(docker exec)으로 상시화. 이후 다운타임/유실 갭은 주 1회 자가복구.
VCPKG minmea 누락 검증 (2026-07-15, 조사만 — 백필 불필요)
- 결론: 실누락 아님(신규 포트, 이미 완전 수집). 1/1 일치.
- upstream(정답 소스): registry
versions/m-/minmea.json= 엔트리 1개(1.0.0,
port-version 0, git-tree 6da18fcf), 현 ports/minmea/vcpkg.json도 1.0.0 단일. vcpkg 커밋 [minmea] New port (#52281) = 최근 신규 등록 포트 → git-tree 1개뿐 = CONTROL 시절 이력·리비전(#N) 없음(W28 zeromq류 pre-migration 결손과 무관).
- DB 실측(gatheringdb, read-only) — 3단 전부 존재:
- RAW TB_COMP_LIB_VCPKG_RAW: PATH=minmea, 1.0.0, MIT, RECORD_CREATED 07-13 15:16 UTC. - VERSION TB_COMP_LIB_VERSION_VCPKG: 1행, 1.0.0, SORT_ORDER 0, PROCESSED=1, LICENSE MIT/LICENSE_IDS [247], SCM tag 1.0.0, RECORD_CREATED 07-13 15:41. - PRODUCT TB_COMP_LIB_PRODUCT_VCPKG: LATEST_VERSION 1.0.0, PROCESSED=1, CREATED 07-14 11:45. - 대소문자 변이 없음(LOWER(PRODUCT_KEY)='minmea' = 단일 'minmea' 1행) → cppwinrt류 collation 병합 부류도 아님.
- "누락"으로 보인 이유 = 타이밍 오탐: minmea는 vcpkg에 갓 추가된 신규 포트라
07-07~09 풀 백필 universe에 없었음(그 이후 등록) → 일일 스케줄 사이클이 07-13→14에 RAW→VERSION→PRODUCT 정상 수집. 누락 체크가 upstream 최신 스냅샷(minmea 포함)을 우리 DB의 동일-일자 인입보다 먼저 본 시차. SPM grace-window·npm @zylem/behaviors 스테일 보고와 동류. 백필 불필요.
- (참고) RAW RECORD_CREATED 분포상 minmea는 해당일 신규 1건 = "새 포트 트리클" 패턴
(초기 풀빌드 2024-08-25 2,475건 / 2026-03-08 316건 배치와 구분됨).
java/MAVEN "새로운 누락" 75건 검증 + 원인규명 + 코드개선 + 백필 (2026-07-14)
- 입력: 사용자 CSV(
2026-07-14T00-08_export.csv,이름,시각75행, 좌표는
전부 소문자 정규화됨). "자바 새로운 누락" 검증 요청.
- 검증 결과(read-only 실측, host 165 gatherdb01):
- 65 = 실누락: repo1 에 실재(원본 mixed-case, 예 pro.kitedb:KiteDB, io.github.jnightrider:jMe3GL2-core, com.svenruppert.jsentinel:jSentinel-*) 하나 VERSION_JAVA·MAVEN_ARCHIVE·PRODUCT 전부 부재. 대소문자 무시(LOWER) 풀스캔 으로도 부재 확인(케이스 착시 아님). - 1 = 부분수집: ai.nxtone:nxtone-agent — VERSION_JAVA 에 v0.2.0 스켈레톤만 (NAME/SHA1/RELEASE_DATE null, PRODUCT 행 없음). maven-metadata 404(단일버전). - 9 = 오탐(누락 아님): com.github.xpenatan.jparser:* 8(Central 엔 gradle plugin marker 만; runtime-c 등은 GitHub Packages/JitPack 계열) + io.github.cy745.krouter:ksp-collector(Central·JitPack 부재). 크롤 대상 저장소 밖 → 산출물 ~/Downloads/maven_offscope_not_on_central.txt. - CSV 소문자화는 리포트 생성기의 LOWER() 비교 경로 산물(collation gotcha). 백필 입력은 원본 case 로 복원(~/Downloads/maven_missing_origcase.txt, 66행).
- 근본원인(로그 확정, labCrawl1
crawler-lib-maven-indexer):
- TB_CRAWLER_STATUS.MavenCentral 06-25 18:30 정지. 같은 인덱서가 쓰는 Jenkins(07-13)·Clojars(07-12)·MavenIndexFullSweep(07-13) 는 최신 → 인덱서는 도는데 MavenCentral ingest 만 실패. - ① 인덱서 미가동: [indexer] 로그가 07-06~07-12 전 파일 0건. 컨테이너 StartedAt 07-13T01:11 UTC(RestartCount=0) → 약 1주+ 미가동이 앵커 정지의 1차 원인. - ② 1406 DataError: 07-14 00:04 로그 maven index ingest failed for MavenCentral: (1406, "Data too long for column 'VERSION' at row 973"). MAVEN_ARCHIVE.VERSION 은 varchar(100)(VERSION_JAVA 는 250). Central 인덱스에 100자 초과 버전 1행이 있어 1000행 배치 INSERT 가 통째로 실패 → repo별 예외격리로 WARNING 만 찍고 anchor 미전진 → 재기동 후에도 매 사이클 같은 지점에서 정지. full-sweep(startCrawl(full=True)) 도 같은 격리라 Central 만 실패해도 sweep 앵커는 갱신(07-13) → "sweep 돌았는데 왜 못 채웠나"가 설명됨.
- 코드개선 (repo
crawler-lib-java, working tree, 미커밋 · 스키마 변경 없음):
- db/labradorDBVo.getMavenArchiveVo: NAME 을 _clip_chars(...,200) 로 클램프 (getVersionVo 와 동일 정책). VERSION 은 좌표라 클램프 안 함(절단 시 POM 경로 깨짐). - crawler/mavenPomCrawler.insertVersionSkeletonDirect(record) 신설: 아카이브 intake 우회 version_java 스켈레톤(PROCESSED=90) 직접 적재(idempotent, archive 마킹 없음). 오버사이즈 우회 + 백필 공용. - crawler/mavenCrawler.ingestRepo: len(VERSION)>100 행을 아카이브 배치에서 제외하고 _ingestOversizedVersions 로 version_java(250) 우회 적재(>250 은 경고 후 하드 스킵). 앵커를 우회 적재보다 먼저 기록 → 우회 실패가 커서 전진을 막지 않음(막히면 재-정지). 우회 실패분은 다음 run overlap(60일)이 회수. - 테스트 254 passed(신규 6 + stale 1건 교정 — test_start_crawl_default_no_clean 이 index:False repo skip 을 미반영해 실패하던 것을 실제 동작에 맞게 수정).
- 백필 (host 165, config.ini 경로 · MCP 아님 · idempotent · 포맷 불변):
- scratchpad/backfill_missing_java.py: 66 GAV(원본 case) 별 repo1 maven-metadata.xml → 전 버전 → insertVersionSkeletonDirect. - 결과 new=207 / exist=0 / skip(>250)=0 / metadata_err=1(ai.nxtone 404, 기존재). 검증: version_rows 207, jSentinel-* 15개 전부 PROCESSED=90, 샘플 4 product 생성. - 러닝 worker(2주 가동, PROCESSED=90 drain)가 POM-메타 자동 보강 예정.
- 남은 조치(사용자 소관):
1. 위 코드개선 커밋 + labCrawl1 재배포(docker rebuild/restart) — 배포 전까지 MavenCentral 앵커는 06-25 고정, 신규 Central 상시 인입 미재개. 2. 인덱서 liveness + 앵커 staleness 알람(1주 미가동 재발 방지). 3. (선택) 1406 유발 100자 초과 버전 GAV 특정(인덱스 재파싱 len(version)>100).
Toss Payments Systems Engineer resume and portfolio rewrite (2026-07-14)
- Captured the user's new systems-engineering history in
ai/sources/career/2026-07-14-toss-systems-engineer-user-history.mdand consolidated the verified narrative inai/wiki/projects/data-platform-systems-engineering.md. - Cross-checked the claims against the existing portfolio,
llm-wiki, and Confluence pages for the hybrid Kubernetes runbook, Airflow workflow, DML Broker, GatheringDB backup/monitoring, and Linux user management. - Rewrote the targeted ATS resume and public technical-portfolio copy to use concrete problem → diagnosis → change → result narratives instead of generic generated-sounding claims.
- The two primary cases are the M.2/DB host stabilization and AWS→IDC migration, and the 2-node→6-node WireGuard/NAT Kubernetes expansion.
- Added public detail pages for DML Broker DB stabilization and Linux server access automation; updated the existing AWS migration, Airflow/Kubernetes, hybrid Kubernetes, backup, monitoring, and object-storage pages.
- Preserved role boundaries: Hyunwook did not claim authorship of the original Kubernetes cluster or crawler-specific fixes; the application states ownership of the common platform and infrastructure.
Portfolio typography and architecture-diagram system (2026-07-14)
- Added
human/portfolio/portfolio-item.cssandportfolio-item.jsso the eight selected Systems Engineer detail pages use one web typography scale and one metric-highlight pattern. - Reworked
selected-portfolio-pdf.htmlto normalize imported body text, section headings, facts, chips, metric cards, diagram sizing, and full-width architecture/result sections instead of inheriting oversized.flowand.impacttypography. - Added public-safe SVG architecture diagrams for the hybrid Kubernetes topology, DML Broker path, Airflow/Kubernetes execution flow, and Prometheus/Grafana observability flow.
- Kept diagrams diagrammatic rather than decorative: explicit component boundaries, directional arrows, verified protocol/path labels, and no internal IPs or credentials.
- Updated the PDF and live-page QA scripts to support a local base URL, wait for diagram assets, verify all eight selected pages at desktop and mobile widths, and fail on missing images, console errors, or horizontal page overflow.
GOLANG 누락 후보 21건 검증 + 백필 5건 (2026-07-13)
- 입력: 사용자 리포트 21개 모듈 경로(첫 회신은 7건만 붙여넣어짐 → 전체 21건 재수신).
- 최종 집계: 백필 5 / 기수집 4 / 기분류(제외목록 기존재) 6 / 신규 제외 6.
- 2차분(14건) 분류:
- 백필 완료 3: kold1kz/qsoft_test, seitamuro/go-auth0-2, jjdoneaway/addressbook — 선언 경로 일치·proxy 실재·LIST_V2 부재(not_in_pipeline). 1차 실행에서 2건이 1205 lock wait 로 실패 → --workers 2 재실행으로 수집(collected 2, skip 3, err 0). DB 검증 완료(09:45~09:46). - 기수집 1: jenspederm/advent-of-code — /src 하위 경로는 모듈 아님, 상위 모듈이 이미 수집돼 있음 → /src 는 subpackage 사유로 제외 추가. - 기분류 5: fabric-chaincode-go-gm·r-best/pact-go·github.phpd.cn/go-osc (listv2_alias_resolved), consensus-abft/v2·abehidek/sandbox(proxy_gone_404). - 신규 제외 6: 무효 선언명 4 — onursert/grpc-protobuf-go(선언 grpc-protobuf-go), illusionofcontrol/coub-dl(coub-dl), bykaaa/wb_l0(example.com/golinuxcloud), inf85/production-service-contracts/ gen/go/common(선언 경로 github 미존재, proxy 404) + zip 생성 불가 1 (aditiiilaturkar/tech_support_system, malformed file path) + subpackage 1 (advent-of-code/src). 제외목록 243,541→243,547.
- 1차분(7건) 분류 상세:
- 기수집 3: kiradb/kiradb, okblockchain/test, shawnyu5/penguin_logger — 7/9 백필 실행분(2026-07-09/golang_missing_real.tsv not_in_pipeline → 7/9 10:05 수집 완료, pseudo-version). - 진짜 누락 → 백필 완료 2: imhshekhar47/hs-taskmaster, tetrafolium/nfcpy — proxy 실재(태그 0, pseudo-version만), go.mod 선언 경로 일치, LIST_V2 부재(not_in_pipeline). backfill_missing_real.py --tsv 2026-07-13/golang_missing_real.tsv → collected 2/err 0, DB 검증 완료 (VERSION_GOLANG 2행, 07-13 09:36:55). 주의: 입력 tsv 는 헤더 source_index_path\tversion\tpipeline 필수(없으면 events=0 무시). - 수집 불가 1: gitee.com/jangtao99126/golang2dengine-sarah — proxy 404 (unrecognized import path), 기존 제외목록(proxy_gone_404)에 이미 존재. - 무효 선언명 1: huangjihui511/script-manager — go.mod 가 module huangjihui511/script-manager(도메인 없음) 선언 → go get 불가 부류. 제외목록에 invalid_declared_module(신규 사유) 추가 (243,540→243,541, .bak-2026-07-13 백업 생성).
- 전 후보가 semver 태그 0(pseudo-version만)인 2020~2022년 모듈 = 인덱스 walk
초기 유실(W28 not_indexed) 부류의 잔존 꼬리로 일관.
- "왜 이제 발견?" 정리(사용자 질문): 유실은 발생 당시 무신호(silent skip +
에러로그 off) + 이벤트 1개짜리 모듈이라 재삽입 기회 없음 + 아무도 안 쓰는 모듈이라 운영 신호 없음 + 전수 대조 도구(gpnf snapshot diff)가 2026-06-18에야 생김 → 수년 전 구멍이 2026-06 이후 일괄 발굴되는 시간차.
GOLANG re-walk 자가치유 가동 (2026-07-13)
- 사전 정리: 7/6·7/9 분류분의 제외목록 병합 상태 전수 점검 — 누락 1건만 발견
(github.com/maminirinaedwino/generateur_table_md, 7/6 declared_diff 해소됐으나 목록 미반영) → listv2_alias_resolved 로 추가. 제외목록 243,548. (collected_exact 143건은 자기 키 수집분이라 제외 비대상 확인.)
- 실행: labCrawl1
/product/crawler/crawler-lib/crawler-lib-golang
docker.run.index.list.backfill.sh (SINCE=2019-04-10 전체 순회) nohup 백그라운드 가동. 서버 HEAD 2301612(LIST_V2 upsert no-op(ID=ID) 안전화 — 라이브 인덱서 crawler-lib-golang-main-1 과 동시 실행 안전). 컨테이너 sad_galileo.
- 페이스 실측: 시작 3분에 2019-04→2019-07 통과, 약 25페이지/분(5만 이벤트/분)
→ 전체 예상 10~13시간. 로그: 서버 ~/index-list-backfill-20260713.out + repo log/golangcrawler.log(메인 크롤러와 공유 — 주의). ⚠️ repo log/ 는 hyunwook711 쓰기 불가 → nohup 출력은 홈으로.
- 완료 후 확인(예정):
TB_LABRADOR_CRAWLER_STATUS의
*IndexListBackfill 행 생성 여부 + gpnf snapshot diff 재실행으로 잔존 구멍 0 수렴 검증.
golang_excluded.tsv 단일 정본 통합 (2026-07-13)
- 발견:
.bak-2026-07-01(61.7만 행, gpnf 스냅샷 전수 분류 시절 형식)에 현
정본에 없는 378,587건 존재 — 그중 376,540은 collected_exact(수집완료 = 제외 비대상, 7/2 개편 때 의도적 제외)이나, *약 2,018건은 진짜 제외 사유 (proxy_gone_404 1,256 · case_only 446 · listv2_alias_resolved 128 · subpackage: 등)인데 7/2 재구축 때 유실**된 것으로 확인.
- 통합: 유실분 2,018건 병합(기존 사유 보존 setdefault, collected_exact ·
proxy_same_in_db 는 배제) + 전체 정렬 + 원자적 교체. 243,548 → 245,566, 중복 0. 사전 백업 .bak-2026-07-13-consolidate.
- 검증: bak-07-02/06/09/13 은 전부 현 정본의 부분집합(not_in_current 0) 확인 —
백업 파일들은 보존(삭제 안 함).
pypi pymount_javav12 누락 검증 (2026-07-13, 조사만 — 백필 불필요)
- 결론: 실누락 아님. end-to-end 전부 존재 확인(read-only 실측):
- 인테이크: gatheringdb.TB_COMP_LIB_PYTHON_LIST PATH=pymount-javav12, TIMESTAMP 2026-07-09 11:50:09, PROCESSED=1. - 수집: TB_COMP_LIB_VERSION_PYTHON 에 0.0.1(릴리스 11:50)/0.0.2(12:05) 2행, 수집 12:24:27 — PyPI 업로드(둘 다 7/9) 후 ~30분 내. - 배포: dist-main(164:53306) TB_COMP_LIB_PRODUCT(LATEST 0.0.2) + TB_COMP_LIB_VERSION_PYTHON 2행 존재 = 고객 배포 원본에도 반영 완료.
- "누락"으로 보인 이유 = 이름 정규화 미스매치: PyPI 화면 표기
pymount_javav12
(언더스코어)로 exact 조회하면 0행. DB 키는 대시형 pymount-javav12. ci collation 은 대소문자만 접고 _≠- 라 언더스코어 조회는 매칭 안 됨. (golang alias 부류, npm coalesced-feed 오탐과 같은 "체크 도구 vs 저장 키" 계열.)
- 피드별 표기 실측(2026-07-13): simple index href=대시(정규화) /
anchor text=원표기(언더스코어) / JSON info.name=원표기 / RSS updates 제목=표본 100건 언더스코어 0·대문자 2(사실상 대시형, 완전 정규화는 아님). 크롤러 코드는 lower() 만 하고 -/_ 변환 없음 → 이 행은 RSS 증분 경로(_update_package_from_rss, pypiCrawler.py:555)가 대시형 제목을 그대로 저장한 것. 리스트 TIMESTAMP=0.0.1 릴리스 시각 일치가 방증.
- 구조 리스크(Open question): 풀스캔 경로(
_full_scan_package_list)는 simple
index anchor text(원표기) 를 PATH 로 저장 → 같은 패키지가 RSS(대시)/풀스캔 (언더스코어)으로 이중 행 가능한 구조(현재 언더스코어 행은 미존재). 근본 해결 = 양 인테이크 + 누락 체크 도구에 PEP 503 정규화(lower + [-_.]+→-) 통일.
- 라이선스 NULL 은 원본 충실: 패키지가 라이선스 미표기 + URL/SCM/설명 0
(wheel 전용, 저자 없음 — 성격상 의심 패키지 부류). TB_COMP_LIB_LICENSE_PYTHON 0행이나 파낼 소스 자체가 없어 AI 라이선스 매퍼 대상도 아님.
- 백필: 불필요. 재발 방지 제안(미실행): 누락 체크 도구에 PEP 503 정규화
(lower() + [-_.]+→-) 적용 후 대조.
- 참고:
TB_COMP_LIB_VERSION_PYTHON_NEW는 이 건과 무관 — 전 레포 grep 결과
참조 0건 + dist 에 테이블 자체 없음 = 라이브 경로가 아닌 유휴 테이블(Open question: 폐기 대상인지 확인).
2026-07-16 — 이력서·포트폴리오 사실 정합화 (Claude)
- 검증 실패 사실 제거: portfolio
aws-to-idc-migration의 "검색 인덱스(Elasticsearch)
343GB S3 스냅샷 이관 + 문서 수 대조 + EC2 8대·EFS 종료" 주장은 brain_hw vault에 근거 없음 + 사용자 부인("MySQL만 사용, ES 운영한 적 없음"). 이력서 2종(리멤버·토스), 포트폴리오 상세·인덱스 카드에서 모두 제거. Elasticsearch를 기술 스택에서 제거. EC2 8대 수치는 미확인이라 "나머지 AWS 자원 정리"로 일반화. 기존 Systems Engineer ATS PDF(다운로드 폴더)에는 이 오류가 남아 있으므로 재사용 금지.
- 사실 보강(이력서↔포트폴리오 대조 후 반영):
library-table-redesign에 슬로우 쿼리→
collation 불일치 뷰 조인(130만 건 스캔→직접 조인 6,000건, EXPLAIN) 발견 과정 추가, 역할을 "실행 본인 + 방안은 팀장·CTO 리뷰 확정"으로 정정, varchar-JSON 타입 정규화는 별도 작업 귀속으로 정정. infra-k8s-airflow-ops에 수집 주기 차등(취약점 20분→약 1시간 내 고객사 도달, 라이브러리 4시간) 추가. dml-broker-db-stability에 노드별 Broker pod 배치 + "적용 후 4개월간 0건" 기간 명시. aws-to-idc-migration에 수집/배포/운영 DB 3분리 + "IDC 전환 후 3년간 1~2건" + 월 AWS 비용 약 94% 절감 반영.
- 이력서 산출물(
~/hw/클로드이력서/): 리멤버앤컴퍼니 DE 최종 PDF 4p(Why Remember
지원서 포함), 토스페이먼츠 DE 최종 PDF 3p(코덱스 초안 + 개선 병합, 공고 대조 완료). RubyGems 백필 수치(48 gem·1,310버전, 101→4)는 본 worklog 기록으로 검증됨.
- 기본 증명사진 등록:
ai/assets/resume/profile-photo.jpg+ AGENTS.md "Resume
Assets" 규칙(모든 에이전트 공통 디폴트).
- 포트폴리오 반응형 점검·수정: 375/768/1440/2560px 렌더링 검증. 발견 — 공통
portfolio-item.css의 모바일 규칙(.flow grid 1열)이 인라인 flex에 밀려 무효였고, 40개 상세 페이지는 공통 CSS 미링크 상태. 조치 — 공통 CSS에 display:grid 강제 + 다이어그램 가로 스크롤 힌트 추가, 40개 페이지에 mobile-fit media query 주입 (640px 이하 전용, 데스크톱 무영향). 가로 넘침 0 확인.
2026-07-17 — 4개사 이력서 CTO 리뷰 6차 (windows-wsl, Claude, 공고 라이브 대조)
- 공고 4건 라이브 조회(리멤버 319051 / 부릉 323031 마감 7/31 / 토스페이먼츠 DE /
토스플레이스 DAE) 후 회사별 독립 CTO 리뷰어 4명 병렬 실행.
- 판정: 리멤버 INTERVIEW(P0 3건 조건부) / 토스페이먼츠·토스플레이스·부릉 BORDERLINE.
- 공통 결함: 사례↔불릿 축자 중복("약 10개 고객사" 최대 4회), 헤드라인 "배치형"
자기 한정(토스페이먼츠·부릉), 알려진 갭(Spark/dbt/DW) 완전 침묵 = 회피로 읽힘, 사례 "결과" 칸의 수치 없는 형용, 학부 학력 누락(플레이스·부릉).
- ~~리멤버 치명 P0: 공고 인용문 불일치~~ → 오탐 확정 철회(사용자 지적 후
타겟 재조회): "정교한 매핑 시스템과 마스터 데이터 관리"·"타협할 수 없는 데이터 정합성"·"데이터 파운데이션팀" 전부 공고 팀 소개 문단에 원문 존재. 원인 = 1차 WebFetch 요약이 팀 소개 문단을 누락한 것을 리뷰어가 정답으로 수용. 교훈: 인용 대조류 판정은 요약 추출이 아니라 대상 문구 타겟 조회로 검증할 것.
- 사실 가드 유지: Debezium은 비교검토뿐(PoC는 Maxwell FileSink) — 리뷰어의
"Debezium PoC 격상" 제안은 기각.
- 상세:
ai/sources/career/2026-07-17-four-company-cto-resume-review.md.
수정 반영은 미실행(리뷰만).
- 2차 리뷰(이력서+포트폴리오 PDF 패키지, 교정 공고 기준): 판정 리멤버
INTERVIEW / 나머지 3사 BORDERLINE. 토스페이먼츠는 실지원 채널 리멤버판 215058(Spark 자격요건, 실패 학습·비교수치 기재 안내, 검색 서비스 필수 기재, 허위 기재 취소 조항) 기준. grep 전수 확인된 교차 결함: ① 이력서 소개문 "PoC까지 돌린 뒤"(부릉·토스페이먼츠) = Maxwell만 PoC인 사실과 자기모순 — 사실 경계 초과, ② Elasticsearch 태그 잔존 — human/portfolio/items/aws-to-idc-migration.html:68 스택 태그가 7/16 본문 정합화에서 누락 → 라이브 사이트+4개사 포폴 PDF 전파(토스페이먼츠에서 채용 취소 조항 접촉 리스크), ③ "IDC 전환 후 3년간" vs 기간 "2024–2026" 산술 모순(실제 전환 연도 Needs confirmation), ④ 포폴 표지 "Data / Systems Engineer" 직함 불일치 + "이력서 기재 순서" 선언 위반, ⑤ 포폴 항목 역할 호칭 인플레("프로젝트 리더"·"리드" vs 이력서 Data Engineer). 수정 미반영.
2026-07-17 — 2차 리뷰 지적 반영 + PDF 7종 재생성 (windows-wsl, Claude)
- 사실 확정 2건(사용자 확인 + 근거 조사):
① CDC 도구 검증 범위 — 사용자 확인: Debezium·Maxwell은 직접 돌려봤고 Canal은 기억 없음. 단 research-log/CDC_research/(GitHub, SSH clone)에는 Maxwell 실습 문서(설치·테스트·HA·DML 캡처)만 있고 Debezium 단독 실험 문서는 없음 — 이력서는 "Debezium과 Maxwell은 직접 돌려 검증"으로 표기(사용자 기억 기준, 면접 시 Debezium 실행 내용 답변 준비 필요). 기존 "PoC까지 돌린 뒤, 셋 다" 자기모순 문장은 교체 완료. ② IDC 전환 연도 = 2024 — Confluence "[progress] IDC 장비 데이터 이전 작업"(2024-02, 김현욱 작성)·IDC 서버 현황(2024-01) 근거. "3년간 1~2건" 표현을 전 서류에서 "전환(2024) 후 1~2건"으로 통일.
- 정본 수정(
human/portfolio/): aws-to-idc-migration 스택 태그
Elasticsearch 제거(spotlight-pdf.html에서도 1건 발견·제거), 역할 호칭 통일 (프로젝트 리더/데이터 엔지니어링 리드/Data / Systems Engineer → 데이터 엔지니어, 19개 항목 페이지+index+spotlight), selected-portfolio-pdf 표지 제출용 재작성(role 쿼리 파라미터 신설, UI 안내문 제거, "문제→판단→조치→결과" 구성 명시). 린터 BAN 0 / WARN 5(기존 자연 용례) 통과. 미커밋·미푸시 — 라이브 사이트에는 아직 미반영.
- career 폴더 수정: 부릉·토스페이먼츠 이력서 HTML+초안 PoC 문장 교체,
리멤버·부릉 이력서 "3년간" 2곳 수정, 리멤버 초안 메모 3곳 동기화.
- PDF 재생성(이 머신, Playwright+Pretendard 사용자 폰트): 원본 PDF 표지
목차에서 pypdf로 수록 목록 복원(리멤버 8/부릉 10/페이먼츠 9/플레이스 9개, 리뷰어 보고와 일치) → localhost 렌더 후 URL을 portfolio.hwlabs.dev로 재작성 (텍스트+링크 어노테이션) → 이력서 3종(4p/3p/3p)+포폴 4종(10/13/12/11p) 재생성. 검증: 금지 문자열 0(ES·PoC까지 돌린·3년간·리드·리더·Data / Systems·localhost), 신규 문구 존재, 페이지 수 원본 동일, 표지·이력서 1p 육안 확인(한글 글리프·증명 사진 정상). 구본은 career/클로드이력서/_backup-2026-07-17/ 보관. 플레이스 이력서 PDF는 무변경이라 유지.
- 인과 순서 정정(사용자 지적): aws-to-idc-migration 상세 페이지 "처음 마주한
문제"가 범용 PC를 출발점처럼 서술 → 실제 순서(AWS 비용 부담 → 통짜 DB를 사내 범용 PC로 이전 → 발열·I/O 프리징 → IDC 이관)로 재작성, 이력서 사례 2의 기존 표현("비용 문제로 그 구성 그대로")과 정렬. 인덱스 카드의 "운영 이슈 0건" ↔ 이력서 "1~2건" 모순도 함께 수정. 이력서 4종은 원래 올바른 순서라 무변경, 포폴 PDF 4종만 재생성·교체, 라이브 재배포(c32f0b6).
- 띄어쓰기 렌더링 수정(사용자 지적): 이력서 CSS
text-align:justify가
Linux Chromium+Pretendard 렌더에서 단어 간격을 과하게 벌림 → 4종 HTML 전부 text-align:left; word-break:keep-all; overflow-wrap:break-word로 교체 후 이력서 PDF 4종 재렌더(리멤버 4p/부릉 3p/페이먼츠 3p/플레이스 3p — 페이지 수 불변, 스크린샷 육안 확인). 플레이스 이력서도 이번에 이 파이프라인으로 첫 재렌더(Mac 원본은 _backup-2026-07-17/ 보관).
- 플로우 다이어그램 화살표 정렬 수정(사용자 지적):
portfolio-item.css의
.flow가 5칸 고정 그리드라 박스 4개(자식 7개) 플로우에서 마지막 화살표+박스가 둘째 줄로 밀림 → grid-auto-flow: column으로 교체(박스 수 무관 한 줄), 모바일 미디어쿼리에 grid-auto-flow: row 리셋 추가. 데스크톱·모바일·최다 박스(4박스×2플로우) 스크린샷 검증 후 배포(15fee58). 포폴 PDF 템플릿은 자체 7칸 규칙이라 영향 없음(재생성 불필요).
- 현대자동차 [제조로보틱스] 로보틱스 데이터 엔지니어 공고 검토 → 지원 안 함
(사람인 rec_idx=54473739, 판교, 마감 7/29 17시). 파이프라인 아키텍처·엣지↔클라우드 연계·거버넌스는 강한 전이 대응이나, 자격요건에 제조환경·로보틱스 리딩·AI 학습 데이터셋(어노테이션·큐레이션) 3개 무경험 + 비즈니스 영어 필수 → 사용자 결정으로 패스. 교훈: 공고 평가 시 영어 요건을 먼저 확인해 최상단에 표시할 것.
- 리멤버 3인 패널 리뷰(CEO·CTO·팀장) + 확정 수정 반영: 판정 조건부 승인 /
INTERVIEW / 꼭 보고 싶음. 사용자 사실 확인 후 반영 — ① 인덱스 정리는 수집 DB (크롤러 쿼리 전수, 9.6TB→4TB)와 배포 DB(분석 엔진 쿼리 95개 전수 EXPLAIN, 311개 중 224개, 2.6TB→1.2TB, 고객사 초기 구축 12→6h)로 분리 서술("증명"→ 전수 조사 근거의 "확인"), ② 이관 검증 = 건수 대사 한 문장 추가, ③ "수십억 행" → "34억 행 테이블 포함"으로 구체화, ④ 헤드라인을 식별·연결 정체성으로 교체, ⑤ "이직 준비도 리멤버로" → 능동 지원 선언으로 재작성(CEO P0), ⑥ Why 페이지 중복 문장 제거+PII 인식 문장 추가+기여 문단을 적용 방향으로 재작성, ⑦ 소유권 문구("비교 기준과 방안은 제가"), ⑧ 세종대학원→세종대학교, "1~5건 미만" 어법. 1페이지 오버플로(4→5p)는 불릿 압축으로 4p 복원, 마커 검증+육안 확인 완료. 포폴 db-index-optimization 항목·인덱스 카드도 동일 사실로 동기화(무수치 결과 타일 2개 제거), 포폴 PDF 4종 재생성·배포(adad15a). AWS 94% 배경(대학 계정 통보)은 서류 금지 — 면접 노트에만 보존(사용자 지시). 면접 질문 13개+예상 과제 1개는 리뷰 소스 문서에 보존.
- 미해결 잔여: 2차 리뷰 P0 중 갭 브리징(Spark/dbt/DW 한 문장), 실패 학습 서사,
중복 서사 축약, 매핑 항목 승격, RubyGems DQ 사례 포폴 승격, 학부 학력, "세종대학원" 표기 확인은 사용자 지시 대기.
2026-07-17 — 공유 지원서류 폴더 신설 (windows-wsl, Claude)
- Google Drive에
내 드라이브/career/신설(이력서/<회사>/,포트폴리오/+ README).
목적: 이력서·포트폴리오 PDF 산출을 머신 로컬(~/hw/…)이 아닌 Drive 공유 경로로 통일해 Mac↔Windows 어디서든 접근 가능하게 함. 정본은 계속 이 저장소 (human/resume/, human/portfolio/), career/는 렌더된 PDF만 보관.
ai/workspace/machines.md갱신: windows-wsl 실측 경로(/mnt/g/내 드라이브/…) 반영,
Shared Output Folders 절 추가, 산출 규칙(동시 편집 금지·동기화 확인) 기록. macbook의 Drive 전체 경로는 Needs confirmation(다음 Mac 세션에서 확인).
- 시드 복사: 토스페이먼츠 DE 이력서 3p PDF, 공개 스포트라이트 포트폴리오 PDF.
나머지 최종 8종(리멤버·토스플레이스·부릉 포함)은 Mac ~/hw/에만 있어 Mac에서 career/로 복사 필요(잔여 항목).
2026-07-17 — 포트폴리오 3렌즈 리뷰 (humanizer·CTO·jobstack) (Claude)
- 이력서 연동 12개 항목 감사. 수정: os-vuln·component-popularity의 동어반복
임팩트를 범위/전후 사실로 교체("12종×4소스", "웹 파싱→Git 클론", "동일 주기→점수 차등"), 6개 항목의 "단독으로 수행"을 실행-직접/방안-리뷰 프레임으로 정정(이력서와 일치), db-index의 not-X-but-Y 수사 중복 제거. selected-PDF 렌더러 섹션 제한 5→6 수정(역할 섹션 잘림 해소). 회사별 포트폴리오 PDF 4벌 라이브 기준 재생성.
- Confluence 최신화 동기화 (MCP): 최근 2주 수정 문서 20건 조회, 신규 설계·검토
4건을 ai/sources/confluence/로 적재 — Forgejo 서버 재구성 설계(INFR-393, RAID·DB·백업 별점 비교), DB 엔진 실측 비교(DAT-3313/3314, 4개 인스턴스 파티션 0건·34억 행 테이블 인덱스 701GB>데이터 178GB 근거), 오브젝트 스토리지 3안 비교 (채택: SeaweedFS+ZFS/Forgejo), MariaDB 전환 검토 요약. 비밀번호·배포 키·직원 PII 페이지는 의도적으로 제외.
- Confluence 신규 재료 반영: 포트폴리오 신규 아이템 db-engine-comparison
(수십억 행 실측·3엔진 비교) + 인덱스 카드 추가. 이력서 4종 경력 intro에 "수십억 행 규모 DB" 명시, 페이먼츠·부릉·플레이스 카드 1개를 DB 엔진 실측 비교로 교체. 크롤러 V2 마일스톤(누락률 0%)은 RubyGems 101→4와의 표기 충돌 위험으로 이력서 반영 보류.
- 포트폴리오 아이템 2건 추가 반영: forgejo-server-redesign 신규(독립 2포지
판단, RAID5·ZFS·SSO 기각 사유, 원본 전용 백업 정책) + object-storage-seaweedfs에 git 저장 3안 비교(JuiceFS 통합·자체 미러 기각 → ZFS+Forgejo 채택) 보강. 부릉 포트폴리오 PDF에 Forgejo 설계 추가(10항목·13p) — 우대 1번 "인프라 개선" 명시 공고라서 부릉만 포함, 토스 2종은 직무 정렬상 미포함 결정.
- 지원 서류 최종 상태: 4개사 이력서+포트폴리오 PDF 8종 완료 (리멤버 4p/10p,
토스페이먼츠 3p/12p — 리멤버 공고 215058 경유 지원, 토스플레이스 3p/11p, 부릉 3p/13p — 마감 7/31). 잔여 선택 항목: 리멤버 IDC 이슈 건수 확정, 지원 폼 문항 대응.
- AI 문구 전수 감사 + 방안 수립: 52페이지 패턴 스캔(총 54건) — "고도화" 16건
전량 교체, "체계적 이슈 트래킹" 제목 개편, 극대화·대폭·기반/토대 마련·효율적으로 등 25건 구체어로 치환, "X가 아니라 Y" 공식은 페이지당 1회 원칙으로 중복 페이지 정리. 재발 방지: scripts/check_human_voice.py 린터 신설(BAN/WARN 2단계, 논문 용어 화이트리스트) + AGENTS.md Human Voice Rules 10항(금지·주의 어휘, 커밋 전 린터 실행) 추가. 잔여 WARN 5건은 자연 용례로 판정해 유지.
2026-07-19 — 부릉 3인 페르소나 리뷰 반영 + PDF 재생성·검증 (windows-wsl, Claude)
- 부릉 DE 공고(리멤버 323031, 마감 7/31) 원문 적재
(ai/sources/career/2026-07-19-vroong-data-engineer-posting.md) 후 CTO·CEO· 기술팀장 3인 독립 리뷰 수행 — 전원 BORDERLINE (human/reports/2026-07-19-vroong-persona-resume-review.md).
- 사용자 승인 하에 P0 반영: ① Debezium 문구를 검증된 범위로 축소(비교 검토 +
Maxwell FileSink PoC만 hands-on), ② AWS 서사를 "운영 DB 현행 직접 운영" 우선으로 전환, ③ 소개에 스트리밍 확장 브릿지 + 물류 정합성 연결 문장, ④ 기술 섹션에 "정식 dimensional modeling은 학습 중" 명시, ⑤ "도입처 계속 늘고" 반복 3회→1회. 포트폴리오 정본 2건 동기화: binlog 항목 "사실상 exactly-once"→"at-least-once 전달 + 멱등 적용(effectively-once), DDL 별도 경로", ETL 항목 "2일→5분"을 "기대 효과(설계 산정, 실측 아님)"로 분리 + "적용한 소스부터" 조건 복원.
- PDF 재생성: 이력서 3p + 포트폴리오 10p(표지+9항목, Forgejo 제외 — JD 적합도
낮음 판단). career/클로드이력서/부릉-data-engineer/에 산출.
- 재검증(별도 세션): PDF 텍스트에 P0 수정 전부 반영·금지 문구 0건, 링크
어노테이션 전부 portfolio.hwlabs.dev(localhost 0건), 페이지 수 3/10 확인. human-voice 린터 BAN 0 / WARN 5(기존 자연 용례) 통과.
- 라이브 사이트 재배포: 포트폴리오 정정 커밋(
54256dc)·기록 커밋(20e82ba)
푸시로 Cloudflare Pages 자동 배포, 라이브 페이지에서 effectively-once 2건· 구표현 0건 curl 확인. 사용자가 부릉 지원 제출 완료(2026-07-19).
- 잔여(선택): 리뷰 P1(포트폴리오 JD 관련도순 재배열, 협업 요건 구체화)은 이번
제출에는 미적용. 서류 통과 시 면접 대비 카드 — Kafka 구체론(파티션·rebalance· lag)과 Data Mart 모델링(Fact/Dimension·SCD·그레인), 수치 근거 즉답 준비 (리뷰 보고서 참조).
2026-07-19 — 토스페이먼츠 이력서 리뷰 반영 (windows-wsl, Claude)
- 부릉과 동일 기준으로 토스페이먼츠 이력서 수정(4사 CTO 리뷰 우선순위 1~3번):
① Debezium 문구를 검증된 범위로 정정 — "Debezium과 Maxwell은 직접 돌려 검증" → "아키텍처·운영 요건 수준 비교 + Maxwell FileSink PoC만 직접 검증"(소개·경력 bullet 2곳). ② 소개의 주어 없는 "사내 운영 DB와 약 10개 고객사에서 운영되고 있고, 도입처는 계속 늘고 있습니다" 삭제, bullet도 역할 경계(사내 직접 운영 / 고객사는 기술지원팀 경유)로 교체 — 약 10곳·증가 표현은 사례 1 결과 1회만 유지. ③ 헤드라인 "배치" 2회 중복 제거: "MySQL binlog 기반 CDC를 구현하고 Airflow·Kubernetes 플랫폼을 운영한 Data Engineer"(리뷰 제안문을 1줄 폭에 맞게 축약). HTML과 이력서-초안.md 동기화, 초안 메모에 판단 기록.
- PDF 재생성(Playwright chromium 148 + Pretendard, prefer_css_page_size):
최초 렌더에서 리뷰 제안 헤드라인 원문이 2줄로 줄바꿈되며 4p로 넘침 → 헤드라인 축약으로 3p 복원. 페이지 경계 구본과 동일(1p 소개+경력 / 2p 기술~사례1 / 3p 사례2~학력), 금지 문구 0건, 링크 어노테이션 10개 전부 portfolio.hwlabs.dev, 1페이지 스크린샷 육안 확인(사진·한글 글리프 정상). 구본은 career/클로드이력서/_backup-2026-07-19/ 보관.
- 토스페이먼츠 포트폴리오 PDF(10p)는 어제 일괄 재생성분이 이미 최신
(effectively-once 2건·구표현 0건 확인)이라 무변경.
- 리뷰 잔여(선택): 실패·학습 사례 추가(공고 요구 시), CDC 서술 3중 반복의 추가
압축, 토스플레이스 이력서의 동일 점검은 미착수.
2026-07-19 — 토스플레이스 이력서 리뷰 반영 (windows-wsl, Claude)
- 사전 점검: Debezium·"도입처" 표현과 dbt/Snowflake 유사 용어는 이 서류에 원래
없음(공통 P0 해당 없음). 남은 지적 4건 반영: ① 헤드라인 직무 정렬(4사 리뷰 P0) — "…정합성을 지켜온 Data Engineer" → "여러 소스의 데이터를 하나의 표준으로 맞춰 온 Data Analytics Engineer 지원자" (경력 직함은 Data Engineer 유지, 헤드라인만 지원 방향). ② 산술 불일치 해소(P1) — "gem 48개·1,310개 버전을 복구" 표현이 누락 156건과 모순처럼 읽힘 → "gem 48개는 gem 단위로 전체 버전 목록을 멱등 upsert로 재적재해 1,310개 버전 적재"로 경력 bullet·사례 2 조치 모두 정정. 근거: 2026-07-15 RubyGems 백필 worklog(gem당 전체버전 upsert, err 0). ③ DW 갭 브릿지 — 기술 섹션에 "(dbt·정식 DW 모델링은 학습 중)" 추가(부릉의 dimensional modeling 표기와 같은 패턴). ④ HTML·이력서-초안.md 동기화 + 초안 메모에 판단 기록.
- PDF 재생성(동일 파이프라인): 3p 유지, 페이지 경계 구본 동일(2p 기술~사례2 /
3p 그밖의~학력), 헤드라인 1줄 렌더 확인, 링크 어노테이션 전부 portfolio.hwlabs.dev, 1페이지 스크린샷 육안 확인. 구본은 _backup-2026-07-19/ 보관. 포트폴리오 PDF(9항목)는 어제 재생성분 유지.
- 리뷰 잔여(선택): "그 밖의 운영 개선" 재구성(MySQL 업그레이드·DB 엔진 비교·
AI kit 축소 — 대체 재료인 수집 정책·지표 정의가 이미 경력 bullet에 배치돼 중복 없이 교체 불가, 사용자 판단 필요), RubyGems DQ 사례의 포트폴리오 승격, 인기도 점수 사례의 정책 결정 서사 압축.