--- title: LLM Wiki Tag Taxonomy source_type: meta status: stable tags: [meta, taxonomy] last_reviewed: 2026-07-28 # updated: 2026-07-28 added L4 `liquibase` (Liquibase schema-migration/versioning tool — official docs; already in informal use in `raw/official-docs/migration-liquibase-official-changelog-xml-yaml.md` but never formalized in this table. Formalized here so `raw/official-docs/liquibase-mongodb-pro-drift-report-official.md` — documenting that MongoDB drift-report access is gated behind the paid Liquibase MongoDB Pro extension, not the free/OSS extension — can cite it too) # updated: 2026-07-28 added L5 `transaction` (multi-document/ACID 트랜잭션 일반 개념 — 여러 document·collection·shard 에 걸친 원자적 commit/abort 을 다루며, 엔진별 isolation 레벨 세부(`transaction-isolation`/`mvcc`/`gap-lock`/`consistent-read`)와는 구분되는 상위 개념. `spring-data-jpa-transactionality-spring-official.md`·`spring-tx-management-reference.md`·`spring-tx-propagation-required-new-nested-official.md` 등 8개+ 파일에서 이미 비공식 사용 중이던 tag 를 `raw/official-docs/transactions-mongodb-official.md`(MongoDB multi-document transaction — replica-set/sharded-cluster 요건, read/write concern 기본값, 실행 시간 한계) 등재 계기로 공식화) # updated: 2026-07-28 added L5 `replication` (master-replica/leader-follower 비동기 데이터 전파 일반 개념 — replica 의 ack lag, stale read 가능성, WAIT 류 준-동기 옵션이 강한 일관성을 보장하지 않는다는 것을 포괄. 벤더 무관이며 `redis`/`mongodb` L4 와 병행 사용 가능(같은 async replication 개념을 다른 벤더가 각자 구현). `raw/official-docs/redis-replication-asynchronous-read-routing.md` 최초 인용 계기로 등재 — `read-preference`(MongoDB 의 구체적 5-모드 선택 개념)와는 별도로, replica read 가 stale 을 반환할 수 있다는 상위 일반 개념 tag 필요) # updated: 2026-07-28 added L5 `least-privilege` (권한을 수행 업무에 필요한 최소 범위로만 부여하는 벤더 무관 access-control 일반 개념 — Redis ACL `reset` 후 `+@`/`~` 만 선택적으로 부여하는 default-deny 패턴 등에 적용. `least-privilege` 는 이전에도 `raw/official-docs/owasp-authz-permission-model-abac-rbac.md`·`raw/official-docs/security-authorization-cheatsheet-owasp.md` 등 4개+ 파일에서 비공식 사용 중이었음 — `raw/official-docs/redis-acl-least-privilege.md` 최초 공식 인용 계기로 등재) # updated: 2026-07-28 added L5 `read-preference` (MongoDB replica set 조회 라우팅 모드 — primary/primaryPreferred/secondary/secondaryPreferred/nearest 5종 중 선택해 조회를 어느 멤버로 보낼지 결정하는 일반 개념; `primary` 를 제외한 모든 모드는 비동기 복제 지연으로 stale read 를 반환할 수 있고, multi-document transaction 안의 read 는 `primary` 모드만 허용됨. `write-concern`(쓰기 확인 수준)과 대응되는 읽기 측 계약. `raw/official-docs/read-preference-mongodb-official.md` 최초 인용 계기로 등재) # updated: 2026-07-28 added L4 `mongodb` (MongoDB document database — official manual reference docs, 예: write concern / read concern / replica set 요건; ca-skeleton 의 optional adapter stack 중 문서 저장소 축) + L5 `write-concern` (MongoDB write 확인 수준 계약 — `w`(propagation count/majority) · `j`(on-disk journal) · `wtimeout`(time limit) 3 옵션으로 정의되며, 배포 형태에 따라 기본값이 `{ w: "majority" }`; `wtimeout` 초과는 write concern error 만 반환할 뿐 이미 적용된 write 자체를 rollback 하지 않는다는 것이 공식 문서에 명시된 일반 durability 개념. `raw/official-docs/write-concern-mongodb-official.md` 최초 인용 계기로 등재) # updated: 2026-07-28 added L5 `change-stream` (MongoDB replica-set/sharded-cluster 전용 실시간 변경 구독 기능 — resume token 으로 중단 지점부터 재개하며 oplog window 초과 시 재개 불가한 일반 개념. `raw/branch-notes/feature-mongo-runtime-baseline-contract.md` 에서 비공식 사용 중이던 tag 를 `raw/official-docs/change-streams-mongodb-official.md` 등재 계기로 공식화) # updated: 2026-07-25 fixed L4 `ietf` (2026-05-31 changelog entry claimed this was added alongside `uuid-v7` 등 L5 concepts, but the table row itself never received the token — drift discovered while tagging `raw/official-docs/rfc6265bis-samesite-attribute-ietf.md`; `ietf` was already in informal use across 10+ existing `raw/official-docs/` files e.g. `oauth2-pkce-rfc-7636.md`, `rfc9457-problem-details-http-apis.md`) # updated: 2026-07-25 added L4 `mdn` (MDN Web Docs — Mozilla 가 운영하는 vendor-neutral 크로스브라우저 웹 플랫폼 레퍼런스, HTTP 헤더/Web API 문서; 기존 `chrome`/`webkit` 는 각 엔진 자체의 벤더 고유 동작을 문서화하는 반면 MDN 은 여러 브라우저에 공통 적용되는 표준/레퍼런스를 문서화하므로 별도 tag) + L5 `samesite` (Set-Cookie `SameSite` 속성 — Strict/Lax/None 값에 따라 cross-site 요청에 쿠키를 첨부할지 결정하는 일반 web-platform 개념; `csrf` 방어의 defense-in-depth 계층이자 `third-party-cookie`(저장/접근 여부)와는 구분되는 개념 — cookie 전송 여부를 제어. `raw/official-docs/samesite-set-cookie-mdn-official.md` 최초 인용 계기로 등재) # updated: 2026-07-23 added L5 `csrf` (Cross-Site Request Forgery — 인증된 세션 쿠키가 cross-site state-changing request 에 자동 첨부되는 것을 악용하는 공격 일반 개념; synchronizer token pattern 방어 및 SameSite defense-in-depth 한계와 함께 사용. `raw/official-docs/csrf-prevention-owasp-official.md` 최초 인용 계기로 등재) # updated: 2026-07-20 added L2 `nplus1-presentation-prep` (N+1 재현·측정·발표 준비 initiative) # updated: 2026-07-18 added L3 `frontend` (프론트엔드/클라이언트 UI 기술 영역 — vault 첫 프론트엔드 프로젝트 `raw/project-notes/ca-skeleton-frontend-operational-contract.md` 도입에 따른 등재; 기존 L3 Domain 은 architecture/persistence/observability 등 백엔드·인프라 위주라 클라이언트 UI 도메인이 부재했음) + L4 `react` (Meta React UI 라이브러리), `tailwind` (Tailwind CSS utility-first CSS 프레임워크 — npm 패키지명은 tailwindcss 이나 kebab 정규형은 `tailwind`), `javascript` (JavaScript 언어/런타임 — 기존 `java-21` 언어 태그와 동일 L4 계층. 기존 keycloak SPA 노트의 `vanilla-js` 복합 태그는 "무프레임워크 순수 JS" 라는 별개 의미이므로 통합하지 않고 병존); 2026-07-18 added L4 `traefik` (Traefik reverse proxy / ingress controller — official docs for `forwardAuth` middleware (free OSS) already used this tag informally in `raw/official-docs/traefik-forwardauth-middleware-official.md`; formalized here so `raw/official-docs/traefik-hub-oidc-middleware-official.md` — documenting that the OIDC middleware is Traefik Hub-exclusive, not OSS — can cite it too); 2026-07-18 added L4 `webkit` (Apple WebKit browser engine — Safari's Intelligent Tracking Prevention (ITP) vendor blog docs, e.g. full third-party cookie blocking announcements; parallels existing `chrome` L4 vendor tag for the same `third-party-cookie` L5 concept from the other major engine); 2026-07-18 added L4 `chrome` (Google Chrome browser — vendor-specific policy/behavior docs, e.g. third-party cookie / Incognito tracking-protection announcements) + L5 `third-party-cookie` (cross-site cookie access in a third-party browsing context — general web-platform concept distinguishing normal vs private/Incognito browsing default blocking; distinct from `cors` which governs cross-origin *request* access rather than cookie storage/sending); 2026-07-18 added L5 `refresh-token-rotation` (OAuth 2.0/OIDC refresh token 이 사용 후 즉시 무효화되고 새 refresh token 으로 교체되는 single-use 패턴 — 벤더 무관 일반 개념. `rotation` 단독 tag 는 key-rotation/secrets-rotation/sector-rotation 등과 의미가 겹쳐 과부하되므로, refresh token 맥락은 이 복합 tag 로 명확히 구분); 2026-07-18 added L4 `oauth2` (OAuth 2.0 인가 프레임워크 자체 — 기존 33개+ 파일에서 `oauth2` 를 비공식 사용 중이던 것을 공식 등재; `oauth2-proxy` 와는 별개로 프로토콜 자체를 가리키는 태그) + `rfc-7009` (RFC 7009 Token Revocation 문서 식별 태그 — `rfc7807`/`rfc9457` 등 기존 개별 RFC 번호 태그 패턴과 동일); added L5 `token-revocation` (OAuth 2.0 access/refresh token 무효화 메커니즘 — 벤더 무관 일반 개념, self-contained/JWT access token 의 즉시성 한계 포함); 2026-07-17 added L5 `auth-request` (nginx `auth_request` directive / oauth2-proxy 검증 subrequest 패턴 — HTTP subrequest 기반 인증 위임 아키텍처의 일반 개념. 기존 11개+ 파일에서 `auth-request`/`auth_request` 로 비공식 사용 중이던 것을 kebab-case 정규형으로 공식 등재); 2026-07-17 added L5 `pkce` (Proof Key for Code Exchange — OAuth 2.0/2.1 public client 의 authorization code 탈취 방어용 code_verifier/code_challenge 바인딩 메커니즘, RFC 7636; 기존 `raw/official-docs/oauth2-pkce-rfc-7636.md` 등 7개 이상 파일에서 비공식적으로 이미 사용 중이던 tag 를 공식 등재); 2026-07-16 added L5 `network-policy` (Kubernetes NetworkPolicy API — namespace/pod-selector 기반 ingress/egress traffic control, default-deny + explicit-allow additive 조합으로 pod isolation 을 구현하는 일반 패턴); 2026-07-16 added L5 `security-group` (AWS/network firewall rule construct — SG-to-SG source referencing to restrict target ingress to a specific upstream, e.g. ALB SG); 2026-07-16 added L4 `istio` (Istio service mesh — mTLS, sidecar proxy, PeerAuthentication) + L5 `mtls` (mutual TLS — peer-to-peer cryptographic authentication + cert lifecycle pattern, mesh/proxy-agnostic general concept); 2026-06-15 added L5 `artifact-versioning` (MAJOR.MINOR.PATCH + build metadata suffix 형식으로 릴리스 artifact 에 버전 부여하는 일반 개념 — SemVer 2.0.0 §10 build metadata 규칙 포함); 2026-06-15 added L4 `calver` (Calendar Versioning — date-based version scheme, calver.org spec) + `semver` (Semantic Versioning — major.minor.patch compatibility contract, semver.org spec); added L5 `version-scheme` (artifact versioning convention 선택 기준 — CalVer vs SemVer 비교 일반 개념) + `calendar-versioning` (CalVer 특정 date-encoded version segment 패턴); 2026-06-15 added L5 `reproducible-builds` (deterministic artifact build — same source+env → bit-for-bit identical output) + `supply-chain` (software supply chain integrity — artifact signing, provenance, SBOM, dependency locking); 2026-06-15 added L4 `errorprone` (Google ErrorProne static analysis compiler plugin for Java); added L5 `static-analysis` (정적 분석 — 컴파일 타임 버그 탐지 패턴, ErrorProne/SpotBugs 등); 2026-06-15 added L4 `junit5` (JUnit Jupiter 5 test framework); added L5 `conditional-test-execution` (@EnabledIfEnvironmentVariable / @DisabledIfEnvironmentVariable — JUnit Jupiter conditional test execution API); `static-analysis` (정적 분석 — 컴파일 타임 버그 탐지, ErrorProne / SpotBugs 등 도구 패턴); 2026-06-14 added L5 `read-only-rootfs` (container root filesystem read-only 강제 — securityContext.readOnlyRootFilesystem:true) + `privilege-escalation` (allowPrivilegeEscalation:false / privileged:false — container privilege drop 패턴) + `drop-capabilities` (capabilities.drop:ALL — Linux capability 최소화 패턴); 2026-06-14 added L4 `prometheus` (Prometheus metrics system — cardinality/naming official docs); added L5 `high-cardinality` (high-cardinality label dimension problem — many distinct label values explosion) + `metric-naming` (metric/label naming conventions — snake_case, base units, suffix); 2026-06-14 added L5 `observation-lifecycle` (Micrometer Observation API의 6가지 lifecycle event — start/stop/error/event/scope-started/scope-stopped — 와 ObservationHandler 반응 계약); 2026-06-13 added L4 `twelve-factor` (Twelve-Factor App methodology — Heroku/Adam Wiggins); added L5 `stdout-logging` (process writes event stream unbuffered to stdout — Factor XI) + `log-routing` (execution environment captures/routes log stream — Factor XI); 2026-06-12 added L4 `shedlock` (ShedLock 분산 스케줄러 락 라이브러리); added L5 `distributed-lock` (분산 환경에서 공유 자원/스케줄러 중복 실행 방지 락 패턴) + `lock-lease` (lockAtMostFor / lockAtLeastFor 시맨틱 — 리스 기반 락 해제 보장) + `advisory-lock` (PostgreSQL application-defined lock — session-level vs transaction-level 해제 시맨틱); 2026-06-11 added L5 `thread-pool` (thread pool sizing / rejection pattern — executor 설계 일반 개념) + `bounded-queue` (유한 용량 큐 — unbounded default 방지 계약); added L5 `connection-pool` + `pool-sizing`; added L3 `application`, L4 `axonframework`, L5 `hexagonal` + `transaction-port`; added L4 `loom`, `java-21`, `mdc`; added L5 `virtual-threads`, `thread-local`; 2026-05-28 added L3 `integration` + `mapper`, L5 `anti-corruption-layer` + `ddd`; added L3 `validation`, L4 `jakarta` + `bean-validation`, L5 `group-sequence` + `class-level-constraint`; added L4 `json`, L5 `merge-patch` + `partial-update`; added L4 `spring-mvc`; added L3 `learning`, L5 `hands-on-lab` + `daily-task-template`; 2026-05-28 added L1 `personal-blog`, L5 `deliberate-practice`; 2026-05-28 added L1 `daily-task`, L3 `infra`, §2 권장 조합 표에 `daily-task` 행 추가; 2026-05-31 added L4 `google-aip`, L5 `cursor-pagination` + `offset-pagination` + `page-token`; 2026-05-31 added L5 `custom-method` + `bulk-operation`; 2026-05-31 added L4 `spring-data`; 2026-05-31 added L5 `filtering` + `api-contract`; 2026-05-31 added L5 `list-method` + `pagination` + `ordering`; 2026-05-31 added L4 `ietf`, L5 `uuid-v7` + `uuid-v4` + `k-sortability` + `monotonicity` + `timestamp-leak`; 2026-05-31 added L4 `ksuid`, L5 `base62-encoding`; 2026-05-31 added L4 `aws`; 2026-05-31 added L4 `nanoid`, L5 `public-id-separation`; 2026-05-31 added L4 `mysql`, L5 `clustered-index` + `uuid-storage` + `page-split`; 2026-05-31 added L4 `stripe`; 2026-06-01 added L4 `owasp`, L5 `log-injection` + `cwe-117`; 2026-06-01 added L5 `span-event` + `trace-status`; 2026-06-08 added L4 `spring-security`, L5 `clock-skew` + `jwt-validation`; 2026-06-09 added L5 `transaction-isolation` + `mvcc` + `gap-lock` + `consistent-read`; 2026-06-10 added L4 `hibernate`, L5 `auditing` + `clock-injection`; 2026-06-11 added L4 `cloudevents` (CNCF CloudEvents spec), L5 `event-schema` (event envelope field contract); 2026-06-11 added L5 `exponential-backoff` + `jitter` + `retry-policy` (retry storm 방지 패턴); 2026-06-11 added L5 `dead-letter-queue` (DLQ — retry 소진 후 격리 큐 패턴); 2026-06-11 added L5 `security-context-propagation` (SecurityContext cross-thread propagation via Delegating* wrappers); 2026-06-11 added L5 `graceful-shutdown` (SIGTERM → grace period → SIGKILL 종료 시퀀스 — Pod/container 수준 graceful termination 계약) + `sigterm` (POSIX TERM signal — container runtime 이 process 1 에 보내는 종료 요청 신호); 2026-07-28 added L4 `mongodb`, L5 `write-concern`, L5 `read-preference` --- # LLM Wiki Tag Taxonomy 본 문서는 모든 `tags:` frontmatter 의 **허용 어휘(controlled vocabulary)** 를 정의한다. Obsidian Tag pane 이 의미를 가지려면 같은 개념에 같은 tag 가 일관 적용되어야 함. 자유 형식 tag 는 결국 분산되어 그래프뷰 분류력을 잃는다. > Layer: `templates/` — 메타 규약. 본 문서는 다른 문서의 frontmatter `tags:` 채울 때 참고하는 정책. ## 1. 5계층 Tag 모델 각 문서의 `tags:` 는 최대 5계층에서 골라 5~7개 이내로 작성. 5계층: | 계층 | 의미 | 예시 | |---|---|---| | **L1 Type** | 문서 종류 (template source_type 와 1:1 거의 일치) | `branch`, `daily`, `daily-task`, `error`, `interview-prep`, `job-posting`, `blog-topic`, `lecture`, `official-doc`, `company-tech-blog`, `personal-blog`, `project-note`, `project`, `concept`, `interview`, `portfolio`, `blog`, `meta`, `invest-daily`, `invest-research`, `invest-ledger`, `invest-concept`, `invest-strategy`, `invest-plan` | | **L2 Project** | 어떤 프로젝트에 묶이는가 | `ca-tmpl`, `ca-skeleton`, `nplus1-presentation-prep`, `keycloak-patterns`, `llm-wiki`, `personal-invest` | | **L3 Domain** | 기술 영역 | `architecture`, `application`, `auth`, `security`, `observability`, `persistence`, `messaging`, `caching`, `testing`, `ci-cd`, `runtime`, `networking`, `data-modeling`, `api-design`, `error-handling`, `tenant-isolation`, `validation`, `integration`, `mapper`, `learning`, `infra`, `frontend`, `finance`, `macro`, `tax-account` | | **L4 Tech** | 구체 기술 스택 | `spring-boot`, `spring-framework`, `spring-mvc`, `spring-data`, `spring-security`, `gradle`, `postgresql`, `kafka`, `redis`, `kubernetes`, `docker`, `keycloak`, `oauth2-proxy`, `nginx`, `archunit`, `flyway`, `hikaricp`, `micrometer`, `opentelemetry`, `lombok`, `mapstruct`, `build-tooling`, `axonframework`, `json`, `jakarta`, `bean-validation`, `loom`, `java-21`, `mdc`, `google-aip`, `fetch-spec`, `ulid`, `ksuid`, `aws`, `nanoid`, `mysql`, `stripe`, `owasp`, `hibernate`, `cloudevents`, `shedlock`, `twelve-factor`, `prometheus`, `junit5`, `errorprone`, `calver`, `semver`, `istio`, `oauth2`, `rfc-7009`, `chrome`, `webkit`, `traefik`, `react`, `tailwind`, `javascript`, `mdn`, `ietf`, `mongodb`, `liquibase` | | **L5 Concept** | 일반 개념 (라이브러리·기술과 무관) | `clean-architecture`, `hexagonal`, `idempotency`, `outbox-pattern`, `circuit-breaker`, `rate-limit`, `gdpr`, `slsa`, `cqrs`, `cap-theorem`, `transaction-synchronization`, `transaction-port`, `domain-event`, `component-scan`, `package-structure`, `multi-module`, `code-generation`, `domain-purity`, `framework-neutral`, `merge-patch`, `partial-update`, `group-sequence`, `class-level-constraint`, `anti-corruption-layer`, `ddd`, `virtual-threads`, `thread-local`, `hands-on-lab`, `daily-task-template`, `deliberate-practice`, `cursor-pagination`, `offset-pagination`, `page-token`, `custom-method`, `bulk-operation`, `filtering`, `api-contract`, `list-method`, `pagination`, `ordering`, `cors`, `base32-encoding`, `resource-identifier`, `base62-encoding`, `public-id-separation`, `clustered-index`, `uuid-storage`, `page-split`, `log-injection`, `cwe-117`, `span-event`, `trace-status`, `externalized-config`, `profile-activation`, `duration-binding`, `etf`, `index-fund`, `diversification`, `asset-allocation`, `position-sizing`, `behavior-gap`, `dollar-cost-averaging`, `stop-loss`, `isa-account`, `pension-account`, `clock-skew`, `jwt-validation`, `transaction-isolation`, `mvcc`, `gap-lock`, `consistent-read`, `connection-pool`, `pool-sizing`, `auditing`, `clock-injection`, `event-schema`, `exponential-backoff`, `jitter`, `retry-policy`, `dead-letter-queue`, `security-context-propagation`, `thread-pool`, `bounded-queue`, `graceful-shutdown`, `sigterm`, `distributed-lock`, `lock-lease`, `advisory-lock`, `stdout-logging`, `log-routing`, `observation-lifecycle`, `high-cardinality`, `metric-naming`, `histogram-quantile`, `percentile-aggregation`, `read-only-rootfs`, `privilege-escalation`, `drop-capabilities`, `conditional-test-execution`, `static-analysis`, `reproducible-builds`, `supply-chain`, `version-scheme`, `calendar-versioning`, `artifact-versioning`, `mtls`, `security-group`, `network-policy`, `pkce`, `auth-request`, `token-revocation`, `refresh-token-rotation`, `third-party-cookie`, `csrf`, `samesite`, `write-concern`, `read-preference`, `least-privilege`, `replication`, `change-stream`, `transaction` | ## 2. 권장 조합 문서마다 어느 계층에서 몇 개씩 채울지: | 문서 종류 | L1 (필수) | L2 (필수) | L3 (권장 1~2) | L4 (해당 시 1~2) | L5 (해당 시 1~2) | |---|---|---|---|---|---| | branch-note | `branch` | 프로젝트 슬러그 | 1~2 | 1~2 | 1~2 | | daily-note | `daily` | — (여러 프로젝트 OK) | — | — | — | | daily-task | `daily-task` | 프로젝트 슬러그 (보통 `ca-tmpl`/`ca-skeleton`) | 1~2 (트랙 / 도메인) | 0~2 | 0~2 | | error | `error` | 프로젝트 슬러그 | 1 | 1~2 | 0~1 | | interview-prep | `interview-prep` | 프로젝트 슬러그 | 1~2 | 0~1 | 1~2 | | job-posting | `job-posting` | (관련 프로젝트 슬러그) | 1~2 | 0~1 | 0~1 | | blog-topic | `blog-topic` | 프로젝트 슬러그 | 1~2 | 0~1 | 1~2 | | lecture | `lecture` | (관련 프로젝트 슬러그) | 1~2 | 0~1 | 1~2 | | official-doc | `official-doc` | (관련 프로젝트 슬러그) | 1 | **1+** (예: `spring-boot`) | 0~1 | | company-tech-blog | `company-tech-blog` | (관련 프로젝트 슬러그) | 1 | 0~1 | 0~2 | | project-note | `project-note` | 프로젝트 슬러그 자체 | 0~1 (가장 큰 영역) | — | — | | project (wiki) | `project` | 프로젝트 슬러그 | 1~2 | 1~2 | 1~2 | | concept (wiki) | `concept` | — | 1 | 0~1 | **1+** | | invest-daily | `invest-daily` | `personal-invest` | `finance`/`macro` | 0~2 | 0~2 | | invest-research | `invest-research` | `personal-invest` | `finance` 1~2 | 0~1 | 1~2 | | invest-strategy | `invest-strategy` | `personal-invest` | `finance` 1 | 0~1 | 1~2 | | interview (wiki) | `interview` | (관련 프로젝트 슬러그) | 1 | 0~1 | 1~2 | | portfolio (wiki) | `portfolio` | 프로젝트 슬러그 | 1~2 | 1~2 | 1~2 | | blog (wiki) | `blog` | (관련 프로젝트 슬러그) | 1~2 | 1~2 | 1~2 | 총 tag 수는 5~7개 이내. 더 많이 붙이고 싶으면 본문 wikilink 로 표현. ## 3. 명명 규칙 - **모두 영문 kebab-case** (예: `clean-architecture`, NOT `clean_architecture`, NOT `CleanArchitecture`, NOT `깨끗한-아키텍처`) - 단수형 권장 (예: `error` not `errors`) - 약어 풀어쓰기 (예: `circuit-breaker` not `cb`) - 동의어 통일: - `auth` (not `authentication`, `authn`, `auth-z`) - `observability` (not `obs`, `observable`) - `kubernetes` (not `k8s`) - `clean-architecture` (not `clean-arch`, `ca`) - 단 약어가 더 일반적인 경우 약어 사용: `slsa`, `gdpr`, `pci-dss`, `oauth2`, `oidc` ## 4. 신규 tag 추가 절차 새 카테고리·기술·개념이 등장하면: 1. 본 taxonomy 문서에 추가 (해당 L계층 표에 한 줄) 2. 기존 문서를 grep 해서 동일 의미 다른 tag 가 있는지 확인 — 있으면 통일 3. `last_reviewed` 갱신 본 taxonomy 에 없는 tag 를 임의로 사용 금지. 새 개념은 먼저 본 문서를 갱신한 뒤 사용. ## 5. 동의어·중복 검출 (수동 운영) 주기적으로 다음을 점검: ```bash # 모든 tag 추출 (대략) grep -h "^tags:" -A 1 raw/**/*.md wiki/**/*.md | grep -oE "\[.*\]" | tr ',' '\n' | sort -u # 또는 frontmatter 라이브러리 사용 ``` 발견된 동의어: - `keycloak-patterns` ↔ `keycloak`: 프로젝트(`keycloak-patterns`) vs 기술(`keycloak`) — 두 개 다 허용 (L2 vs L4) - (필요 시 여기 추가) ## 6. 검증 체크리스트 문서 작성 시 self-check: - [ ] L1 (type) tag 1개 정확 (프론트매터 source_type 과 일치) - [ ] L2 (project) tag 1개 명시 (project-note 자체와 daily-note 제외) - [ ] L3~L5 합쳐서 3~5개 이내 - [ ] 모두 영문 kebab-case - [ ] 동의어 사용 안 함 (본 taxonomy 의 표준 형태로) - [ ] 본 taxonomy 에 없는 신규 tag 라면 taxonomy 먼저 갱신