Generated: 2026-04-14 Mode: Report-only Files analyzed: 80
Scope: All *.md files under /Volumes/T5 EVO/Sources/database_system excluding build/, .git/, vcpkg-*/, and docs/doxygen-awesome-css/. Primary tree is docs/; root README*, CHANGELOG*, CODE_OF_CONDUCT*, CONTRIBUTING*, SECURITY*, .github/**, benchmarks/README.md, integration_tests/README.md, samples/README.md, examples/README.md also covered. Korean *.kr.md files included.
Ground-truth anchors: 2,492. Links validated (excluding external URLs): 1,115. Broken links: 73 (71 missing files, 2 missing anchors).
| Severity | Phase 1 | Phase 2 | Phase 3 | Total |
|---|---|---|---|---|
| Must-Fix | 73 | 14 | 10 | 97 |
| Should-Fix | 3 | 12 | 12 | 27 |
| Nice-to-Have | 2 | 4 | 6 | 12 |
Intra-anchor mismatches:
README.md:263βdocs/FEATURES.md#query-builders. Anchorquery-buildersdoes not exist inFEATURES.md(which is now a split index). Actual anchor is indocs/FEATURES_ORM_QUERY.md#query-builders. (Phase 1)README.md:293βdocs/FEATURES.md#orm-framework. Anchor is indocs/FEATURES_ORM_QUERY.md#orm-framework. (Phase 1)
Missing files referenced by links (71 total; grouped below):
README.md:40βdocs/migration/proxy-mode.mdnot present. (Phase 1)README.md:153βdocs/guides/QUICK_START_KO.mdnot present (actual file isQUICK_START.kr.md). (Phase 1)README.md:508,581βdocs/01-ARCHITECTURE.mdnot present (should bedocs/ARCHITECTURE.md). (Phase 1)README.md:563β../ECOSYSTEM.mdresolves outside repo (/Volumes/T5 EVO/Sources/ECOSYSTEM.md). Actual file isdocs/ECOSYSTEM.md. (Phase 1)README.md:582βdocs/02-API_REFERENCE.mdnot present (should bedocs/API_REFERENCE.md). (Phase 1)README.md:583βdocs/advanced/SECURITY.mdnot present. (Phase 1)README.md:584βdocs/guides/MIGRATION_GUIDE.mdnot present (should bedocs/advanced/MIGRATION.md). (Phase 1)docs/ADAPTER_PATTERNS.md:15βADAPTER_PATTERNS.kr.mdnot present (Language switcher link broken). (Phase 1)docs/API_REFERENCE.md:1107βguides/PROXY_LAYER.mdnot present. (Phase 1)docs/README.kr.md:66..258β 21 broken links toBUILD_GUIDE.kr.md,SAMPLES_GUIDE.kr.md,PERFORMANCE_BENCHMARKS.kr.mdat wrong paths (actual files live underguides/orperformance/). (Phase 1)docs/advanced/MIGRATION.md:394β../migration/proxy-mode.mdnot present. (Phase 1)docs/advanced/MIGRATION.md:869βdocs/API_REFERENCE.mdresolves todocs/advanced/docs/API_REFERENCE.md(path prefix error; should be../API_REFERENCE.md). (Phase 1)docs/advanced/THREAD_SYSTEM_MIGRATION.md:398..399β./INTEGRATION.md,./API_REFERENCE.mdat wrong relative path. (Phase 1)docs/advanced/TYPE_SYSTEM.md:434..437βAPI_REFERENCE.md,ORM.md,BACKEND_INTEGRATION.mdat wrong relative path (files live in../). (Phase 1)docs/contributing/CONTRIBUTING.md:80,908β../BUILD_GUIDE.mdnot present (should be../guides/BUILD_GUIDE.md). (Phase 1)docs/contributing/CONTRIBUTING.md:81,911β../../IMPROVEMENT_PLAN.mdnot present in repo. (Phase 1)docs/guides/ASYNC_OPERATIONS.md:15βASYNC_OPERATIONS.kr.mdnot present. (Phase 1)docs/guides/FAQ.md:171,795,928,1126,1377,1490,1493,1494,1495β 9 broken links (../BUILD_GUIDE.md,../PERFORMANCE_BENCHMARKS.md,../INTEGRATION.md,../../IMPROVEMENT_PLAN.md). (Phase 1)docs/guides/INTEGRATION.md:15βINTEGRATION.kr.mdnot present. (Phase 1)docs/guides/INTEGRATION.md:1076..1077βdocs/API_REFERENCE.md,docs/BUILD_GUIDE.mdresolved incorrectly. (Phase 1)docs/guides/QUICK_START.md:159β../../INTEGRATION.mdnot present in repo root. (Phase 1)docs/guides/SAMPLES_GUIDE.md:797,docs/guides/SAMPLES_GUIDE.kr.md:797βAPI_REFERENCE.mdat wrong relative path (should be../API_REFERENCE.md). (Phase 1)docs/guides/TROUBLESHOOTING.md:915β../BUILD_GUIDE.mdnot present. (Phase 1)docs/guides/UNIFIED_SYSTEM.md:15βUNIFIED_SYSTEM.kr.mdnot present. (Phase 1)docs/integration/README.md:21..25β 5 broken links towith-common-system.md,with-logger.md,with-monitoring.md,with-thread-system.md,with-network-system.md(none exist). (Phase 1)docs/integration/README.md:222β../../../ECOSYSTEM.mdresolves outside repo. (Phase 1)docs/migration/database_base.md:316β../guides/backend_registry.mdnot present. (Phase 1)docs/performance/BENCHMARKS.kr.md:15βPERFORMANCE_BENCHMARKS.md(language-switcher) not present;docs/performance/BENCHMARKS.md:15β same mirror issue for.kr.md. (Phase 1)docs/performance/TUNING_GUIDE.md:133..134βPOSTGRESQL_TUNING.md,SQLITE_TUNING.mdnot present. (Phase 1)integration_tests/README.md:285β../docs/performance.mdnot present. (Phase 1)
docs/advanced/CURRENT_STATE.md:30,36,54,74,84β Documents claim backends are PostgreSQL, MySQL, SQLite. Actual supported backends perCLAUDE.mdandvcpkg.jsonare PostgreSQL, SQLite, MongoDB, Redis. MySQL does not exist; MongoDB/Redis not mentioned. Korean mirrorCURRENT_STATE.kr.mdhas identical errors. (Phase 2)docs/advanced/ARCHITECTURE_ISSUES.md:32..33+ Korean mirror β "ARC-001: MySQL/SQLite Backend Testing (P0, Phase 1)". MySQL is not a real backend. (Phase 2)docs/PROJECT_STRUCTURE.md:684,docs/PROJECT_STRUCTURE.kr.md:508β libpqxx listed as "7.7+", butvcpkg.jsonpins 7.9.2. (Phase 2)docs/SOUP.md:43,86β libpqxx listed as 7.9.0 rather than 7.9.2 (vcpkg override). (Phase 2)docs/GETTING_STARTED.md:24β Compiler baseline given as GCC 12+/Clang 15+/MSVC 17.4+;README.md:74says GCC 13+/Clang 17+/MSVC 2022+. (Phase 2)docs/guides/QUICK_START.kr.md:30β Compiler baseline says GCC 11+/Clang 14+; actual (per README) is GCC 13+/Clang 17+. (Phase 2)samples/README.md:212β Compiler baseline GCC 10+/Clang 12+/MSVC 2019+; severely out of date. (Phase 2)CONTRIBUTING.md:17β "GCC 13+, Clang 16+, MSVC 2022+" β Clang 16 inconsistent with README's Clang 17+. (Phase 2)docs/FEATURES_POOLING_SECURITY.md:35..160β Documents activeconnection_pool,connection_pool_v3,acquire_connection()etc. as current features. PerCLAUDE.mdPhase 4.3 anddocs/CHANGELOG.md:206,272, all local pooling classes were removed. Entire "Connection Pooling" and "Resilient Connections" sections are factually obsolete. (Phase 2)docs/BACKENDS.md:41β Lists "Connection pooling support" as a PostgreSQL feature (contradicts Phase 4.3 removal). (Phase 2)docs/FEATURES.kr.md(lines 29, 412β) β Korean features doc still describes connection pooling as a current feature and was not updated when EnglishFEATURES.mdwas split and pool removal was documented. (Phase 2)docs/ORM_GUIDE.md:15,80,250,413anddocs/FEATURES_ORM_QUERY.md:39β Claim "Full Support (C++17 SFINAE-based)". Project rootCLAUDE.mdstates ORM uses "C++20 concepts". Inconsistency between implementation language claim and project description. (Phase 2)docs/guides/SAMPLES_GUIDE.md:750,docs/guides/SAMPLES_GUIDE.kr.md:750β Hard-coded date literal"2023-01-01"in sample; acceptable as example data but mismatched with other 2026 dates (Nice-to-Have; surfaced here because paired with the 2025-12/2026-02 inconsistencies).docs/advanced/CURRENT_STATE.md:46..48β Lists Ubuntu 22.04 (GCC 12, Clang 15) as the validated platform baseline. Given README's GCC 13+/Clang 17+ requirement, the baseline is out of date. (Phase 2)
docs/ARCHITECTURE.md:13ANDdocs/advanced/ARCHITECTURE.md:13β Both claim "single source of truth for Database System Architecture". Duplicate SSOT with different doc_ids (DBS-ARCH-002 and DBS-ARCH-003). Content not reconciled. (Phase 3)docs/PROJECT_STRUCTURE.md:13ANDdocs/advanced/STRUCTURE.md:13β Both SSOT for "Database System Project Structure" (DBS-PROJ-004 vs DBS-ARCH-006). Content overlap unresolved. (Phase 3)docs/BENCHMARKS.md:13ANDdocs/performance/BENCHMARKS.md:13β Both SSOT for "Database System Performance Benchmarks" (DBS-PERF-002 vs DBS-PERF-006). Two parallel benchmark documents. (Phase 3)docs/BENCHMARKS.kr.mdANDdocs/performance/BENCHMARKS.kr.mdβ Same duplication in Korean. (Phase 3)docs/MIGRATION_database_base.md:13ANDdocs/migration/database_base.md:13β Two migration guides for the samedatabase_base β database_backendtopic (DBS-MIGR-001 vs DBS-GUID-022), both claiming SSOT. (Phase 3)docs/FEATURES.mdwas refactored into split sub-documents (FEATURES_BACKENDS.md,FEATURES_ORM_QUERY.md,FEATURES_POOLING_SECURITY.md), butdocs/FEATURES.kr.mdwas NOT split. Korean docs are out of sync with English SSOT structure. (Phase 3)docs/FEATURES_POOLING_SECURITY.mddocuments connection pooling as current functionality whileREADME.md:40,52anddocs/CHANGELOG.md:206,272state it was removed in Phase 4.3. Cross-document SSOT contradiction on a load-bearing technical fact. (Phase 3)docs/BACKENDS.md:41contradicts the same Phase 4.3 status (states pool support for PostgreSQL). (Phase 3)docs/README.mdlists 59 documents. Actual total is 80. Missing from the registry:FEATURES_BACKENDS.md,FEATURES_ORM_QUERY.md,FEATURES_POOLING_SECURITY.md,API_QUICK_REFERENCE.md,ECOSYSTEM.md,GETTING_STARTED.mdplus all root/sub-README and .github templates. Registry is stale. (Phase 3)docs/README.kr.md:17-53table of contents uses emoji-prefixed headings that produce anchors the ToC does not match (fixed by emoji-stripping in this audit), but the ToC was clearly authored without running it through a GitHub-style renderer β high risk of drift if headings change. (Phase 3)
docs/README.kr.mdβ many.kr.mdlinks use bare filename root (BUILD_GUIDE.kr.md) but the target files live inguides/orperformance/. Convert to relative paths.docs/guides/INTEGRATION.md:1076..1077β recurring pattern ofdocs/API_REFERENCE.md-style absolute references from withindocs/subdirs. Standardize on relative paths.docs/advanced/MIGRATION.md:869β same absolute-from-docs pattern; replace with../API_REFERENCE.md.
- "backend" vs "driver" used interchangeably in
docs/advanced/CURRENT_STATE*.md:54("Database drivers"). Project convention is "backend" (perCLAUDE.mdandBACKENDS.md). - "connection pool" vs "connection pooling" vs "pool" β inconsistent noun usage across
FEATURES_POOLING_SECURITY.mdandBACKENDS.md. - "ORM framework" vs "ORM" vs "entity system" β
ORM_GUIDE.mduses "ORM framework"; other docs drop "framework". - "query builder" vs "query_builder" β
API_REFERENCE.mduses underscore namespace form; narrative docs use space form. Acceptable, but not called out. - "transaction" vs "transaction management" β mixed.
- README.md:74 vs README.kr.md:77 β English gives GCC 13+/Clang 17+, Korean table gives "MSVC 2022+ | C++20 κΈ°λ₯ νμ" with no GCC/Clang row. Korean table is incomplete.
benchmarks/README.md:299β "Last Updated: 2025-10-07" vs newer docs dated 2026-02-08. Stale timestamp.docs/API_REFERENCE.md:1245β "Last Updated: 2025-12-09" vs most docs 2026-02-08.docs/ORM_GUIDE.mdβ no frontmatterdoc_dateupdate; has 2026-04-04 but references say C++17 still.docs/advanced/ARCHITECTURE.mdanddocs/advanced/STRUCTURE.mdβ do not declare language-switcher links (present in most other English docs).docs/SOUP.md:43β libpqxx 7.9.0 should match override (7.9.2).CHANGELOG.md:316β "OpenSSL 1.1.1 reached End-of-Life in September 2023" is a correct historical fact; flagged only because it sits next to version rows that are otherwise current β verify vs current OpenSSL override (3.4.1).
docs/advanced/TYPE_SYSTEM.mdis referenced by only 1 other file. Consider adding bidirectional xref fromAPI_REFERENCE.mdorORM_GUIDE.md.docs/ADAPTER_PATTERNS.mdβ only 4 inbound refs;CLAUDE.mdcites "Adapter pattern" as a key pattern butARCHITECTURE.mdis the only SSOT linker. Strengthen xrefs fromFEATURES_BACKENDS.md.docs/ECOSYSTEM.mdis not in the registry index (docs/README.md) yet is cross-linked from README.md. Decide orphan-vs-registered status.docs/API_QUICK_REFERENCE.mdanddocs/GETTING_STARTED.mdβ orphan from registry; decide whether to add rows or remove files.docs/FEATURES.kr.mdβ not linked fromFEATURES.mdvia "Korean" switcher despite same topic. Add language switch.docs/FEATURES_BACKENDS.md,docs/FEATURES_ORM_QUERY.md,docs/FEATURES_POOLING_SECURITY.mdβ no Korean counterparts; inconsistent with rest of docs which maintain*.kr.md.docs/PROJECT_STRUCTURE.md(root) vsdocs/advanced/STRUCTURE.md(advanced) β same title, same SSOT claim, different structure. Pick one as canonical, redirect the other.docs/ARCHITECTURE.md(root) vsdocs/advanced/ARCHITECTURE.mdβ redundant pair; reconcile and delete or retitle.docs/BENCHMARKS.mdvsdocs/performance/BENCHMARKS.mdβ pick SSOT and collapse the other into a stub linking to it.docs/MIGRATION_database_base.mdvsdocs/migration/database_base.mdβ collapse duplication.docs/advanced/CURRENT_STATE.mdβ "Phase 0 Baseline" document appears to be a frozen historical baseline. If so, flag statusFrozenorBaselinerather thanReleasedto prevent confusion; otherwise update to reflect real backends.docs/integration/README.mdlists 5 sub-documents (with-*.md) none of which exist; either the sub-docs should be created or the ToC should be trimmed.
- Normalize all emoji in heading anchors (GitHub strips emoji in slugs; manual ToCs can drift silently). Present in
README.md,docs/README.kr.md,docs/advanced/TYPE_SYSTEM.md. - Language switchers at the top of each English doc that references a
.kr.mdwhich doesn't exist are cosmetically broken β consider a lint-style CI check.
docs/performance/STATIC_ANALYSIS_BASELINE.md:73,77β "Phase 1 Goals (By 2025-11-01)" and "Phase 2 Goals (By 2025-12-01)" are past-dated; consider moving to a Completed table or archiving.docs/performance/BASELINE.md:368..385β version history ends 2025-10-09 though date is 2026-04-04; update.docs/CHANGELOG.md:334uses## [Previous] - 2025-12-09; keep-a-changelog style would prefer a concrete version header.- Badge block at top of
README.mduses relative branch URLs β fine; but "Code Coverage" badge's workflow file name (coverage.yml) should be verified to exist in.github/workflows/.
- Consider adding a
docs/INDEX.mdthat enumerates all 80 files (orphans included) and flags their role (registered/index/archive). Currentdocs/README.mdonly covers 59. - Consider collapsing
docs/advanced/content intodocs/and demoting per-topic "advanced" duplicates β the split currently creates SSOT conflicts. - All "SSOT" notice blocks should include either an authoritative doc_id or a line stating "if content here conflicts with X, X wins", so reviewers can break ties.
- Add a bidirectional-xref linter to CI (the 22
.kr.mdTOC entries indocs/README.kr.mdare the canonical repeat-error case). - FrontMatter
doc_datedates (2026-04-04) differ from in-bodyLast Updatedfields (2025-xx-xx or 2026-02-08) β decide a single date-of-record field. docs/adr/only has 2 ADRs (multi-backend abstraction, connection pool) yet connection pooling was removed in Phase 4.3. Consider adding ADR-003 superseding ADR-002.
- Overall: 6.3 / 10
- Anchors (Phase 1): 6 / 10 β 73 broken links out of 1,115; most are file-path errors (missing
.kr.mdmirrors, incorrect relative paths after folder restructuring, stale01-/02-numbered filenames). - Accuracy (Phase 2): 5 / 10 β Load-bearing technical claims are wrong (MySQL listed as a backend, C++17 SFINAE vs C++20 concepts, connection pool documented as active after Phase 4.3 removal, inconsistent compiler baselines across 5+ docs, libpqxx version drift).
- SSOT (Phase 3): 5 / 10 β Multiple pairs of documents claim SSOT for identical topics (Architecture, Project Structure, Benchmarks, Migration, database_base). FEATURES split diverged between English (split) and Korean (monolithic). Registry (
docs/README.md) is stale, missing 3 newly-split docs and 3 orphans.
- Audit generated via a local Python slug-builder implementing GitHub's anchor rules (lowercase, strip emoji, keep Korean/CJK, replace single whitespace with hyphen, preserve consecutive hyphens from "&"/"/" removals, duplicate-suffix via
-N). Fenced code blocks (``` / ~~~) are skipped during heading extraction and link scraping. - External URLs (schemes with
:) are excluded; only intra-repo links validated. docs/doxygen-awesome-css/,docs/custom.css,*.dox,*.htmlexcluded from corpus.- Phase 4.3 pool-removal is the single largest SSOT hazard: it affects
BACKENDS.md,FEATURES_POOLING_SECURITY.md,FEATURES.kr.md, ADR-002, and multiple guide docs. Consolidating a single authoritative page (e.g.,docs/migration/proxy-mode.mdwhich is linked but absent) would close ~20% of the findings. - The pattern
docs/xxx.mdused as a link inside a file located indocs/advanced/ordocs/guides/(producingdocs/advanced/docs/xxx.md) recurs at least 4 times. One sweep of relative-path repair would clear a cluster. - Eight
.kr.mdlanguage-switcher links target files that do not exist (ADAPTER_PATTERNS.kr.md,ASYNC_OPERATIONS.kr.md,INTEGRATION.kr.md,UNIFIED_SYSTEM.kr.md,PERFORMANCE_BENCHMARKS.kr.mdx2, etc.). Either the Korean translations should be created or the switcher blocks removed.
Fix commit: 3b6f5be3 β docs: fix 30 broken links, 11 factual errors, 5 ssot redundancies
Re-run scope: Phase 1 only (anchors + intra/inter-file .md link validation)
Files scanned: 78 Markdown files (same corpus as 2026-04-14 audit; two files dropped in churn)
Methodology: Python re-validator using the same GitHub-slug rules (lowercase, strip emoji, strip markdown link syntax in headings, keep Korean/CJK, non-collapsing whitespace β hyphen so &// removals preserve consecutive hyphens, duplicate-suffix -N). Fenced code blocks skipped; HTML comments (including multi-line) stripped before link extraction, so TODO markers left by the fix (<!-- TODO: ... -->) are not re-flagged.
Link counts are occurrences (one broken link rendered twice counts twice).
| Metric | Pre-Fix (2026-04-14) | Post-Fix (2026-04-15) | Delta |
|---|---|---|---|
| Files scanned | 80 | 78 | β2 |
| Total intra-repo links validated | 989 | 1,030 | +41 |
Broken links β .md scope (aligned w/ prior) |
73 | 23 | β50 |
Broken links β all scopes (incl. .h/dirs) |
80 | 26 | β54 |
| Broken intra-file anchors | 2 | 1 | β1 |
| Broken file references | 78 | 25 | β53 |
Classification against the prior 73-item Phase-1 list:
| Category | Count | Notes |
|---|---|---|
| Fixed | 51 | All fixes the commit message claims (30 "broken links") plus a larger set once each listed group is expanded to individual occurrences (e.g., item #12 was 21 links, item #20 was 9). |
| Residual | 22 | 21 inside docs/README.kr.md + 1 inside docs/guides/SAMPLES_GUIDE.kr.md. All fall under the commit's explicit policy deferral: "Skipped by policy: Korean (.kr.md) sync, ... docs/README.kr.md path corrections (Korean file)." |
| Regression | 1 | New broken anchor introduced by the deprecation banner in docs/FEATURES_POOLING_SECURITY.md. |
docs/FEATURES_POOLING_SECURITY.md:20βCHANGELOG.md#043---2025-12-09β cross-file anchor not found. The fix commit inserted a new "DEPRECATION NOTICE (Phase 4.3)" banner linking to a CHANGELOG section anchor.docs/CHANGELOG.mddoes not contain a heading that slugs to043---2025-12-09; the only matching date-bearing heading is## [Previous] - 2025-12-09(line 334), which slugs toprevious---2025-12-09. Recommended fix: change link toCHANGELOG.md#previous---2025-12-09or refactor the CHANGELOG heading to## [0.4.3] - 2025-12-09.
A. docs/README.kr.md β 21 occurrences (deferred by commit policy):
- 8 x
BUILD_GUIDE.kr.md(lines 66, 73, 110, 157, 165, 168, 256, and one more on 168) - 7 x
SAMPLES_GUIDE.kr.md(lines 67, 74, 119, 158, 164, 175) - 6 x
PERFORMANCE_BENCHMARKS.kr.md(lines 68, 75, 128, 163, 169, 176, 258) β All three files live underguides/orperformance/, not atdocs/root. A single mass-rewrite toguides/BUILD_GUIDE.kr.md,guides/SAMPLES_GUIDE.kr.md,performance/BENCHMARKS.kr.md(filename also needs rename if the Korean match is desired) would clear this cluster.
B. docs/guides/SAMPLES_GUIDE.kr.md:797 β API_REFERENCE.md β mirror of the fixed English item. The English SAMPLES_GUIDE.md:797 was corrected to ../API_REFERENCE.md; the Korean mirror was skipped.
C. docs/performance/BENCHMARKS.kr.md:15 β PERFORMANCE_BENCHMARKS.md β language-switcher at the top of the Korean benchmarks page points at a non-existent English counterpart (actual file is BENCHMARKS.md in the same directory or docs/BENCHMARKS.md).
docs/MIGRATION_database_base.md:303..304β../database/database_base.hand../database/database_base_adapter.h: these source-code references remain broken after the fix (the files were removed whendatabase_basewas deleted in 2026-01-20 per CHANGELOG). These were NOT in the original Phase-1 list (which was.md-only scope). The "See Also" block should either link to the historical commit or be trimmed.docs/guides/INTEGRATION.md:1054βsamples/integration_example/: directory does not exist. Also pre-existing and outside the original Phase-1.mdscope.
PASS with 1 regression. 51 of 73 prior Phase-1 items were fixed β every Phase-1 item the commit message explicitly claimed (plus more once grouped items are expanded) is verified as resolved. All 22 residuals fall under the commit's documented policy deferral for Korean mirrors. The single regression (FEATURES_POOLING_SECURITY.md β CHANGELOG.md#043---2025-12-09) was introduced by the fix itself and should be corrected in a follow-up. Overall Phase-1 health is now 97% clean (1 β 23/1030 β 97.8% of validated links OK, vs 92.6% before).