Skip to content

docs: 태그 기반 글 찾기와 자산 단일 원본화 - #65

Merged
hellices merged 6 commits into
mainfrom
docs/faceted-topic-discovery
Sep 13, 2026
Merged

hellices merged 6 commits into
mainfrom
docs/faceted-topic-discovery

Conversation

@hellices

Copy link
Copy Markdown
Owner

변경 내용

  • 57개 page/sample 중복 자산을 sample.yml.publish 기반 단일 원본으로 전환했습니다.
  • 샘플 원본은 Pages에서 제외하면서 필요한 57개 자산을 빌드 시 원래 페이지 경로에 byte-for-byte 게시합니다.
  • 게시 경로 traversal, symlink escape, 물리·canonical·ancestor 충돌, 숨김 target과 잘못된 raw Markdown 링크를 검증합니다.
  • 기존 21개 혼합 태그를 목적 9개와 주제 4개의 실용 태그 13개로 재정의했습니다.
  • 모든 62개 문서를 새 태그로 분류하고 1~4개, 목적 우선 순서를 검증합니다.
  • 태그별 보기와 전체 글을 하나의 글 찾기 화면으로 통합했습니다.
  • 태그·서비스·기술·제목/설명 조건을 동일 문서에 AND로 적용하면서 결과는 주제 카드 안에 유지합니다.
  • 필터 상태를 URL에 보존하고 popstate, reset, 잘못된 필터 경고, no-JS fallback을 지원합니다.
  • Material 전체 검색의 q와 글 찾기 text 상태를 분리했습니다.
  • 기존 /tags/, 21개 태그 URL과 /articles/은 검색 제외 redirect로 유지합니다.

배경

기존 태그는 작업 목적, 품질 속성, 기술 영역이 섞여 있었고 별도 태그 목록과 전체 글의 차이도 불명확했습니다. 또한 페이지 렌더링 이미지와 샘플 아티팩트 사이에 동일 파일이 57쌍 존재했습니다. 태그를 실제 독자 목적과 핵심 주제로 정리하고, 한 찾기 화면에서 정확한 문서 단위 필터링을 제공하며, 자산은 샘플을 단일 원본으로 사용합니다.

검증

  • documentation tests: 275 passed
  • Explore Node behavior tests: 8 passed
  • migrated SRE sample: 440 passed
  • metadata/source/link validation: 62 documents
  • public safety: 305 files
  • strict MkDocs build: passed
  • search coverage: 62 documents / 13 tags
  • tracked duplicate groups >=1 KiB: 0
  • 브라우저 확인:
    • 초기 40개 주제 / 62개 문서
    • AI agents + 운영: 3개 주제 / 10개 문서
    • AI agents + 운영 + 최적화: 2개 주제 / 2개 문서
    • Material q 닫기 및 reload 후 Explore text 상태 유지
    • 잘못된 필터 경고·URL 정리
    • 390px 무오버플로
    • 기존 태그 URL redirect
    • 게시 SVG 정상 로드
  • 최종 전체 diff review: Critical/Important findings 없음

리뷰 참고

핵심 로직은 다음 파일에 있습니다.

  • scripts/docs/topics.py: 게시 자산 및 태그 계약 검증
  • scripts/docs/explore.py: 찾기 페이지 데이터 생성
  • docs/assets/javascripts/explore.js: 클라이언트 필터 상태
  • scripts/docs/generate_indexes.py: 자산·redirect·찾기 페이지 생성

hellices and others added 6 commits September 13, 2026 21:32
Validate explicit sample publication mappings and serve exact virtual page assets through MkDocs without publishing sample directories. Remove 57 page-side duplicates while retaining all canonical sources and existing used_by ownership. Cover catalog, links, bytes, search, I/O errors, and the full SRE sample suite.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reject overlapping publication paths against other targets, physical files, and canonical outputs. Explicitly include declared hidden assets while excluding sample sources, and prevent raw Markdown downloads from accepting document-directory shorthand. Add red-first catalog, real build, and link regressions for all three review findings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace ambiguous tags with controlled goal and subject groups. Keep matching documents grouped by canonical topic, combine facets with AND semantics, and preserve legacy discovery URLs as search-excluded redirects.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use repeated text parameters for Explore filters and preserve Material-owned q values when updating or resetting facets. Cover real Material deep-link and q cleanup behavior, URL persistence, and reload consistency without adding dependencies.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reject dot-prefixed public path components before generation while retaining hidden sample source payloads. Remove the hidden-target inclusion override and replace its promise with catalog/build rejection tests plus an archive-aligned regression over every current published asset. Preserve the official Pages artifact safety exclusions and all 57 existing mappings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@hellices

Copy link
Copy Markdown
Owner Author

자동 코드 리뷰 결과

전체 브랜치 diff를 독립 고성능 리뷰 에이전트로 반복 검토했습니다.

리뷰 과정에서 다음 문제를 발견하고 수정했습니다.

  • publish target의 ancestor/descendant 및 canonical 경로 충돌
  • 명시한 숨김 target이 Pages artifact에서 제외되는 배포 계약 불일치
  • raw Markdown 자산에 디렉터리 shorthand를 잘못 허용하던 링크 검증
  • Material 전역 검색 q와 글 찾기 텍스트 필터 상태 충돌
  • 변경된 모든 주제 용어를 반영하지 못한 SRE sample README 계약 테스트

최종 재리뷰 결과: Critical/Important 이슈 없음, PR/merge 준비 완료.

최종 검증:

  • documentation tests: 275 passed
  • Explore Node tests: 8 passed
  • SRE sample tests: 440 passed
  • metadata/source/link validation: 각 62 documents
  • public safety: 305 files
  • strict MkDocs build: passed
  • search index: 62 documents / 13 tags
  • tracked duplicate assets >=1 KiB: 0 groups
  • browser: 태그 AND, topic-member isolation, URL/reload, Material q 분리, invalid alert, 390px layout, redirects, generated assets 확인
  • GitHub Documentation CI: passed

@hellices
hellices merged commit 125e1d5 into main Sep 13, 2026
2 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

One or more issues must be addressed before approval.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

This PR unifies document discovery under Explore, centralizes sample-published assets, and enforces the new taxonomy and publishing contracts.

Changes:

  • Adds publish-asset validation, copying, collision checks, and sample exclusion.
  • Replaces legacy tag/article indexes with taxonomy-driven Explore filtering.
  • Migrates document tags and expands validation and integration tests.
File summaries
File Description
tests/docs/test_validators.py Updated as part of this pull request.
tests/docs/test_topics.py Updated as part of this pull request.
tests/docs/test_site_pipeline.py Updated as part of this pull request.
tests/docs/test_reader_navigation.py Updated as part of this pull request.
tests/docs/test_pages_artifact.py Updated as part of this pull request.
tests/docs/test_indexes.py Updated as part of this pull request.
tests/docs/explore.test.cjs Updated as part of this pull request.
tests/docs/explore-material.test.cjs Updated as part of this pull request.
tests/docs/explore-fixture.cjs Updated as part of this pull request.
scripts/docs/validate_search_index.py Updated as part of this pull request.
scripts/docs/validate_metadata.py Updated as part of this pull request.
scripts/docs/validate_links.py Updated as part of this pull request.
scripts/docs/topics.py Updated as part of this pull request.
scripts/docs/hooks.py Updated as part of this pull request.
scripts/docs/generate_indexes.py Updated as part of this pull request.
scripts/docs/explore.py Updated as part of this pull request.
scripts/docs/content.py Updated as part of this pull request.
README.md Updated as part of this pull request.
mkdocs.yml Updated as part of this pull request.
docs/services/microsoft-foundry/gpt-memory-layer/samples/architecture/sample.yml Updated as part of this pull request.
docs/services/microsoft-foundry/gpt-memory-layer/index.md Updated as part of this pull request.
docs/services/microsoft-foundry/foundry-local-air-gapped/index.md Updated as part of this pull request.
docs/services/microsoft-foundry/codex-closed-network/index.md Updated as part of this pull request.
docs/services/microsoft-foundry/agent-memory/taxonomy/index.md Updated as part of this pull request.
docs/services/microsoft-foundry/agent-memory/taxonomy/images/01-memory-taxonomy.svg Updated as part of this pull request.
docs/services/microsoft-foundry/agent-memory/samples/research-artifacts/sample.yml Updated as part of this pull request.
docs/services/microsoft-foundry/agent-memory/production-evaluation/index.md Updated as part of this pull request.
docs/services/microsoft-foundry/agent-memory/production-evaluation/images/04-production-tiers.svg Updated as part of this pull request.
docs/services/microsoft-foundry/agent-memory/pipeline-retrieval/index.md Updated as part of this pull request.
docs/services/microsoft-foundry/agent-memory/index.md Updated as part of this pull request.
docs/services/microsoft-foundry/agent-memory/frameworks/index.md Updated as part of this pull request.
docs/services/microsoft-foundry/agent-memory/commerce/index.md Updated as part of this pull request.
docs/services/microsoft-foundry/agent-memory/architecture-patterns/index.md Updated as part of this pull request.
docs/services/microsoft-foundry/agent-framework-2026/index.md Updated as part of this pull request.
docs/services/azure-storage/mobile-resumable-upload-tus/samples/spring-application/sample.yml Updated as part of this pull request.
docs/services/azure-storage/mobile-resumable-upload-tus/index.md Updated as part of this pull request.
docs/services/azure-openai/adaptive-ptu-load-balancing/samples/runbooks/sample.yml Updated as part of this pull request.
docs/services/azure-openai/adaptive-ptu-load-balancing/index.md Updated as part of this pull request.
docs/services/azure-monitor/hdinsight-kafka-monitoring/samples/monitoring-assets/sample.yml Updated as part of this pull request.
docs/services/azure-monitor/hdinsight-kafka-monitoring/prometheus-grafana/index.md Updated as part of this pull request.
docs/services/azure-monitor/hdinsight-kafka-monitoring/index.md Updated as part of this pull request.
docs/services/azure-monitor/hdinsight-kafka-monitoring/catch-up-benchmark/index.md Updated as part of this pull request.
docs/services/azure-monitor/dynamic-thresholds-brief/index.md Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/validation-results/index.md Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/setup/index.md Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/scenario-latency/index.md Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/scenario-http-500/index.md Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/scenario-blob-permission/index.md Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/samples/event-lab/scripts/tests/test_repo_readme.py Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/samples/event-lab/scripts/tests/test_published_layout.py Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/samples/event-lab/scripts/tests/test_privacy.py Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/samples/event-lab/scripts/tests/test_briefing_docs.py Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/samples/event-lab/scripts/tests/published_layout.py Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/samples/event-lab/sample.yml Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/results/index.md Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/index.md Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/incident-runbook/index.md Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/run-modes-comparison.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/root-cause-analysis.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/permission-flow.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/notification-paths.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/memory-unified-search.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/memory-auto-learning.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/knowledge-sources.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/incident-response-flow.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/incident-platform-flow.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/diagnose-azure-services.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/custom-skill-flow.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/images/agent-reasoning-flow.svg Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/event-lab/index.md Updated as part of this pull request.
docs/services/azure-monitor/azure-sre-agent/dynamic-thresholds/index.md Updated as part of this pull request.
docs/services/azure-monitor/aks-private-opentelemetry/index.md Updated as part of this pull request.
docs/services/azure-managed-redis/cluster-failover-recovery/index.md Updated as part of this pull request.
docs/services/azure-load-testing/locust-appgw-aks-private/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/workload-identity-databricks/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/spot-h100-kaito/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/remote-cluster-local-development/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/python-memory-leak-memray/samples/memray-leak-profiling/sample.yml Updated as part of this pull request.
docs/services/azure-kubernetes-service/python-memory-leak-memray/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/pyroscope-anf-s3/samples/pyroscope-chat-profiling/sample.yml Updated as part of this pull request.
docs/services/azure-kubernetes-service/pyroscope-anf-s3/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/pod-scheduling-agent-pools/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/pod-database-query-latency/samples/observed-results/sample.yml Updated as part of this pull request.
docs/services/azure-kubernetes-service/pod-database-query-latency/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/pod-affinity-distribution/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/netapp-files-cpu-io-wait/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/kaito-open-source-model/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/file-io-throttling/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/cni-overlay-nsg/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/authorization-troubleshooting/index.md Updated as part of this pull request.
docs/services/azure-kubernetes-service/argocd-image-updater-acr/index.md Updated as part of this pull request.
docs/services/azure-database-for-mysql/nodejs-read-write-routing/index.md Updated as part of this pull request.
docs/services/azure-database-for-mysql/blue-green-upgrade/index.md Updated as part of this pull request.
docs/services/azure-cosmos-db/point-read-optimization/index.md Updated as part of this pull request.
docs/services/azure-cosmos-db/nodejs-dns-lookup-bottleneck/index.md Updated as part of this pull request.
docs/services/azure-cosmos-db/nodejs-client-optimization/index.md Updated as part of this pull request.
docs/services/azure-automation/portal-cli-limitations/index.md Updated as part of this pull request.
docs/services/azure-architecture/response-time-optimization/index.md Updated as part of this pull request.
docs/services/azure-application-gateway/waf-path-ip-allowlist/index.md Updated as part of this pull request.
docs/services/azure-application-gateway/sse-response-buffering/index.md Updated as part of this pull request.
docs/services/azure-ai-search/korean-analyzer-comparison/samples/analyzer-comparison/sample.yml Updated as part of this pull request.
docs/services/azure-ai-search/korean-analyzer-comparison/index.md Updated as part of this pull request.
docs/services/azure-ai-search/eventual-consistency-reindex/index.md Updated as part of this pull request.
docs/services/azure-ai-search/custom-vectorization/samples/implementation/sample.yml Updated as part of this pull request.
docs/services/azure-ai-search/custom-vectorization/rag-chunking/index.md Updated as part of this pull request.
docs/services/azure-ai-search/custom-vectorization/index.md Updated as part of this pull request.
docs/services/azure-ai-search/custom-vectorization/gpu-vllm/index.md Updated as part of this pull request.
docs/services/azure-ai-search/custom-vectorization/custom-web-api/index.md Updated as part of this pull request.
docs/services/azure-ai-search/custom-vectorization/bge-m3-vs-qwen3/index.md Updated as part of this pull request.
docs/services/azure-ai-search/custom-vectorization/a10-vs-t4/index.md Updated as part of this pull request.
docs/services/application-development/nodejs-file-io-cpu/index.md Updated as part of this pull request.
docs/index.md Updated as part of this pull request.
docs/contributing/research-template.md Updated as part of this pull request.
docs/contributing/lab-template.md Updated as part of this pull request.
docs/contributing/index.md Updated as part of this pull request.
docs/contributing/guide-template.md Updated as part of this pull request.
docs/contributing/case-template.md Updated as part of this pull request.
docs/assets/stylesheets/extra.css Updated as part of this pull request.
docs/assets/javascripts/explore.js Updated as part of this pull request.
docs/.nav.yml Updated as part of this pull request.
docs-taxonomy.yml Updated as part of this pull request.
CONTRIBUTING.md Updated as part of this pull request.
AGENTS.md Updated as part of this pull request.
Review details
  • Files reviewed: 110/167 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread scripts/docs/content.py
errors.append(f"tag_groups.{slug}.tags must be a non-empty list of strings")
continue
for tag in values:
if tag not in tags:
Comment thread scripts/docs/topics.py
Comment on lines +184 to +188
path = PurePosixPath(raw)
if path.is_absolute() or PureWindowsPath(raw).drive or "\\" in raw or ".." in path.parts:
errors.append(
f"{relative}: publish {field} must be a relative path without '..' or backslashes: {raw}"
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants