Update documentation to reflect the latest link verification results, confirming no broken links found and achieving a 100% success rate. Revise multiple files to correct link paths for improved navigation, ensuring consistency across project management and FAQ documents. This update enhances the overall clarity and accessibility of the documentation.

This commit is contained in:
defiQUG
2025-12-08 06:27:28 -08:00
parent d13eca034d
commit b64b9cef3c
30 changed files with 455 additions and 574 deletions

View File

@@ -0,0 +1,147 @@
#!/usr/bin/env python3
"""
Script to fix references from subdirectories to root-level files.
Adds ../ prefix where needed for files in subdirectories.
"""
import os
import re
from pathlib import Path
# Root-level files that might be referenced
ROOT_FILES = [
'MASTER_INDEX.md',
'QUICK_REFERENCE.md',
'DOCUMENT_RELATIONSHIP_MAP.md',
'GLOSSARY.md',
'VERSION_CONTROL_POLICY.md',
'EXECUTIVE_SUMMARY.md',
'TIMELINE_VISUALIZATION.md',
'QUALITY_VERIFICATION_REPORT.md',
'RECOMMENDATIONS_AND_SUGGESTIONS.md',
'GRADING_AND_SCORING_REPORT.md',
'CROSS_REFERENCE_VERIFICATION_REPORT.md',
'IMMEDIATE_NEXT_STEPS.md',
'Template_System_Requirements.md',
'RESOURCE_REQUIREMENTS_SUMMARY.md',
'README.md',
'NAVIGATION_GUIDE.md',
]
# Directory references that need fixing
DIR_REFS = [
'QUICK_START_GUIDES/',
'00_document_control/',
'01_constitutional/',
'02_statutory_code/',
'03_governance/',
'04_legal_regulatory/',
'05_financial_reserve/',
'06_cyber_sovereignty/',
'07_member_integration/',
'08_operational/',
'09_intelligence_security/',
'10_diplomatic_treaty/',
'11_technical_specs/',
'12_compliance_audit/',
'13_emergency_contingency/',
'csp_1113/',
'gru_reserve_system/',
'onboarding_package/',
'visual_assets/',
'formatted_book/',
]
def fix_links_in_file(file_path, project_root):
"""Fix links in a single file."""
try:
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
original_content = content
file_dir = os.path.dirname(file_path)
rel_file_dir = os.path.relpath(file_dir, project_root)
# Only fix files in subdirectories (not root)
if rel_file_dir == '.':
return False
# Calculate how many ../ needed
depth = len(rel_file_dir.split(os.sep))
prefix = '../' * depth
# Fix references to root-level files
for root_file in ROOT_FILES:
# Pattern: [text](filename.md) or [text](./filename.md)
patterns = [
(r'(\[([^\]]+)\]\(\.?/)' + re.escape(root_file) + r'\))', f'\\1{prefix}{root_file}'),
(r'(\[([^\]]+)\]\(\.?/)' + re.escape(root_file) + r'#([^)]+)\))', f'\\1{prefix}{root_file}#\\3'),
(r'(\[([^\]]+)\]\(\.?/)' + re.escape(root_file) + r'\))', f'\\1{prefix}{root_file}'),
]
# Simple filename reference (not already with path)
simple_pattern = r'(\[([^\]]+)\]\(\.?/)' + re.escape(root_file) + r'([^)]*)\)'
def replace_simple(match):
link_text = match.group(2)
suffix = match.group(3) if match.group(3) else ''
return f'[{link_text}]({prefix}{root_file}{suffix})'
content = re.sub(simple_pattern, replace_simple, content)
# Also fix if it's just the filename without ./ or ../
pattern = r'(\[([^\]]+)\]\(\.?/)' + re.escape(root_file) + r'([^)]*)\)'
if not re.search(r'\.\.?/', pattern):
content = re.sub(r'(\[([^\]]+)\]\(\.?/)' + re.escape(root_file) + r'([^)]*)\)',
lambda m: f'[{m.group(2)}]({prefix}{root_file}{m.group(3)})', content)
# Fix directory references
for dir_ref in DIR_REFS:
# Pattern: [text](dirname/) or [text](./dirname/)
pattern = r'(\[([^\]]+)\]\(\.?/)' + re.escape(dir_ref) + r'([^)]*)\)'
def replace_dir(match):
link_text = match.group(2)
suffix = match.group(3) if match.group(3) else ''
return f'[{link_text}]({prefix}{dir_ref}{suffix})'
content = re.sub(pattern, replace_dir, content)
if content != original_content:
with open(file_path, 'w', encoding='utf-8') as f:
f.write(content)
return True
return False
except Exception as e:
print(f"Error processing {file_path}: {e}")
return False
def main():
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Find markdown files in subdirectories only
md_files = []
for root, dirs, files in os.walk(project_root):
# Skip .git and other hidden directories
dirs[:] = [d for d in dirs if d not in ['.git', 'node_modules', '__pycache__']]
# Skip root directory
if root == project_root:
continue
for file in files:
if file.endswith('.md'):
md_files.append(os.path.join(root, file))
print(f"Found {len(md_files)} markdown files in subdirectories")
print("Fixing references to root-level files...")
fixed_count = 0
for md_file in md_files:
if fix_links_in_file(md_file, project_root):
fixed_count += 1
print(f"Fixed: {os.path.relpath(md_file, project_root)}")
print(f"\nFixed {fixed_count} files")
if __name__ == '__main__':
main()