Skip to content

Commit 7ecd008

Browse files
committed
initial
0 parents  commit 7ecd008

49 files changed

Lines changed: 3274 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
# ============================================================
2+
# .editorconfig (Keep files consistent across editors and IDEs)
3+
# ============================================================
4+
# REQ.UNIVERSAL: All professional GitHub project repositories MUST include .editorconfig.
5+
# WHY: Establish a cross-editor baseline so diffs stay clean and formatting is consistent.
6+
# ALT: Repository may omit .editorconfig ONLY if formatting is enforced equivalently by CI and formatter tooling.
7+
# CUSTOM: Adjust indent_size defaults only if organizational standards change; keep stable across projects.
8+
# NOTE: Sections are ordered by editorial importance, not strict alphabetical order.
9+
# EditorConfig is documented at https://editorconfig.org
10+
11+
root = true
12+
13+
14+
# === Global defaults (always apply) ===
15+
16+
[*]
17+
# WHY: Normalize line endings and encoding across Windows, macOS, and Linux.
18+
end_of_line = lf
19+
charset = utf-8
20+
21+
# WHY: Newline at EOF avoids noisy diffs and tool warnings.
22+
insert_final_newline = true
23+
24+
# WHY: Remove accidental whitespace noise in diffs.
25+
trim_trailing_whitespace = true
26+
27+
# WHY: Default to 2 spaces for configs and markup; language-specific overrides follow.
28+
indent_style = space
29+
indent_size = 2
30+
31+
32+
# === Build systems (special rules) ===
33+
34+
[Makefile]
35+
# WHY: Makefiles require tabs.
36+
indent_style = tab
37+
38+
[*.mk]
39+
# WHY: Makefile includes require tabs.
40+
indent_style = tab
41+
42+
43+
# === Markup and documentation ===
44+
45+
[*.md]
46+
# WHY: Keep Markdown clean; use explicit <br> for hard line breaks.
47+
indent_size = 2
48+
trim_trailing_whitespace = true
49+
50+
[*.{tex,cls,sty}]
51+
# WHY: LaTeX convention is 2 spaces.
52+
indent_size = 2
53+
indent_style = space
54+
55+
[*.xml]
56+
# WHY: XML convention is 2 spaces.
57+
indent_size = 2
58+
indent_style = space
59+
60+
[*.{yml,yaml}]
61+
# WHY: YAML convention is 2 spaces.
62+
indent_size = 2
63+
indent_style = space
64+
65+
66+
# === Data and configuration ===
67+
68+
[*.{json,jsonc,jsonl,ndjson}]
69+
# WHY: JSON tooling typically expects 2 spaces.
70+
indent_size = 2
71+
indent_style = space
72+
73+
[*.toml]
74+
# WHY: TOML often follows 4-space indentation in many projects.
75+
indent_size = 4
76+
indent_style = space
77+
78+
79+
# === Programming languages ===
80+
81+
[*.{js,ts}]
82+
# WHY: JS/TS ecosystem commonly uses 2 spaces.
83+
indent_size = 2
84+
indent_style = space
85+
86+
[*.{py,pyi}]
87+
# WHY: Python convention is 4 spaces.
88+
indent_size = 4
89+
indent_style = space
90+
91+
[*.ps1]
92+
# WHY: PowerShell convention is 4 spaces.
93+
indent_size = 4
94+
indent_style = space
95+
96+
[*.{c,cpp,h,java,cs,go,rs}]
97+
# WHY: Many C-family and systems languages commonly use 4 spaces.
98+
indent_size = 4
99+
indent_style = space
100+
101+
[*.{sh,bash}]
102+
# WHY: Shell script convention is 2 spaces.
103+
indent_size = 2
104+
indent_style = space
105+
106+
107+
# === Proof assistants and formal languages ===
108+
109+
[*.lean]
110+
# WHY: Lean 4 convention is 2 spaces; matches Mathlib and stdlib style.
111+
indent_size = 2
112+
indent_style = space
113+
114+
[*.{v,vo}]
115+
# WHY: Coq convention is 2 spaces.
116+
indent_size = 2
117+
indent_style = space

.gitattributes

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
# ============================================================
2+
# .gitattributes (Keep files consistent across operating systems)
3+
# ============================================================
4+
# REQ.UNIVERSAL: All professional GitHub project repositories MUST include .gitattributes.
5+
# WHY: Ensure consistent line endings, diff behavior, and file classification
6+
# across Windows, macOS, and Linux environments.
7+
# ALT: Repository may omit .gitattributes ONLY if equivalent normalization is
8+
# enforced reliably by tooling and CI (rare and fragile).
9+
# CUSTOM: Update file-type rules only when introducing new languages,
10+
# binary artifacts, or documentation formats.
11+
# NOTE: Rules are ordered by impact and generality, not alphabetically.
12+
# Git attributes are documented at https://git-scm.com/docs/gitattributes
13+
14+
# === Core defaults (always apply) ===
15+
16+
# WHY: Auto-detect text files and normalize line endings to avoid cross-platform drift.
17+
* text=auto
18+
19+
20+
# === Programming languages and scripts ===
21+
22+
# WHY: Python and shell scripts must use LF for CI/CD, Linux environments, and containers.
23+
*.py text eol=lf
24+
*.sh text eol=lf
25+
26+
# WHY: PowerShell convention on Windows uses CRLF.
27+
*.ps1 text eol=crlf
28+
29+
30+
# === Markup and documentation ===
31+
32+
# WHY: Documentation and markup files use LF; standard for cross-platform tooling.
33+
*.md text eol=lf
34+
*.tex text eol=lf
35+
*.sty text eol=lf
36+
*.cls text eol=lf
37+
*.bib text eol=lf
38+
39+
40+
# === Configuration and structured text ===
41+
42+
# WHY: Configuration and structured text formats use LF for stable diffs.
43+
*.json text eol=lf
44+
*.jsonc text eol=lf
45+
*.jsonl text eol=lf
46+
*.ndjson text eol=lf
47+
*.toml text eol=lf
48+
*.yaml text eol=lf
49+
*.yml text eol=lf
50+
51+
52+
# === Proof assistants and formal languages ===
53+
54+
# WHY: Lean source files must use LF for cross-platform consistency and CI.
55+
*.lean text eol=lf
56+
57+
# WHY: Lean build artifacts are binary; prevent normalization and meaningless diffs.
58+
*.olean binary
59+
*.ilean binary
60+
*.trace binary
61+
62+
# WHY: Coq source uses LF; compiled objects are binary.
63+
*.v text eol=lf
64+
*.vo binary
65+
*.vok binary
66+
*.vos binary
67+
*.glob binary
68+
69+
# WHY: Lake build directory should be excluded, but if tracked, treat as binary.
70+
.lake/** binary
71+
72+
73+
# === Notebooks ===
74+
75+
# WHY: Jupyter notebooks require specialized diff and merge handling.
76+
*.ipynb diff=jupyternotebook
77+
*.ipynb merge=jupyternotebook
78+
79+
80+
# === Databases (binary) ===
81+
82+
# WHY: Database files are binary; prevent text normalization and meaningless diffs.
83+
*.db binary
84+
*.duckdb binary
85+
*.sqlite binary
86+
*.sqlite3 binary
87+
88+
89+
# === Columnar and analytical data (binary) ===
90+
91+
# WHY: Columnar and analytical data formats are binary; diffs are not meaningful.
92+
*.arrow binary
93+
*.avro binary
94+
*.feather binary
95+
*.orc binary
96+
*.parquet binary
97+
98+
99+
# === Office, BI, PDFs, and compressed artifacts (binary) ===
100+
101+
# WHY: Office documents, BI files, PDFs, and compressed artifacts are binary.
102+
*.7z binary
103+
*.bz2 binary
104+
*.docx binary
105+
*.gz binary
106+
*.pbix binary
107+
*.pbit binary
108+
*.pdf binary
109+
*.pptx binary
110+
*.rar binary
111+
*.tar binary
112+
*.tgz binary
113+
*.xls binary
114+
*.xlsm binary
115+
*.xlsx binary
116+
*.xz binary
117+
*.zip binary
118+
119+
120+
# === GitHub metadata and UI ===
121+
122+
# WHY: Exclude documentation and tests from GitHub language statistics.
123+
docs/** linguist-documentation
124+
tests/** linguist-documentation
125+
126+
# === LOG FILES ===
127+
# WHY: Log files are typically large and binary in nature; prevent text normalization.
128+
*.log binary
129+
project.log binary

.github/.yamllint.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# ============================================================
2+
# .github/.yamllint.yml (Keep YAML files clean and consistent)
3+
# ============================================================
4+
# Updated: 2026-04-13
5+
6+
# WHY: Enforce YAML correctness (.github/.yamllint.yml) without arbitrary style constraints.
7+
# OBS: Default yamllint rules conflict with GitHub Actions YAML.
8+
# Line length, document start, truthy, and comment spacing are intentionally disabled.
9+
10+
extends: default
11+
12+
rules:
13+
line-length: disable
14+
document-start: disable
15+
truthy: disable
16+
comments: disable

.github/dependabot.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# ============================================================
2+
# .github/dependabot.yml (Check for GitHub Actions updates)
3+
# ============================================================
4+
# REQ.PROJECT: This repository SHOULD track GitHub Actions updates automatically.
5+
# WHY-FILE: GitHub Actions are executable dependencies and may receive security or behavior updates.
6+
# OBS: Language-level dependencies (e.g., Python packages) are upgraded manually.
7+
# OBS: GitHub Actions are the only dependency class automated here.
8+
# ALT: Dependabot could be omitted if workflows are pinned and reviewed manually.
9+
# CUSTOM: Update interval if CI cadence or security posture changes.
10+
11+
# NOTE: This file automatically updates the versions used in Actions workflows.
12+
# You don't need to modify this file.
13+
# To disable: Delete this file or set enabled: false below.
14+
# enabled: false # Uncomment to disable Dependabot
15+
16+
version: 2 # Dependabot configuration version
17+
18+
updates:
19+
- package-ecosystem: "github-actions" # Dependency type
20+
directory: "/" # Location of GitHub Actions workflows
21+
schedule:
22+
interval: "monthly" # ALT: Use "weekly" for higher security when needed
23+
commit-message:
24+
prefix: "(deps)" # WHY: enable filtering by commit type

.github/lychee.toml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# ============================================================
2+
# .github/lychee.toml (Lychee link checker configuration)
3+
# ============================================================
4+
# Updated: 2026-04-13
5+
6+
# REQ.PROJECT: Automatic link checking using GitHub Actions and Lychee.
7+
# WHY-FILE: Shared Lychee configuration (lychee.toml) for documentation-heavy repositories.
8+
# REQ: Link checking MUST be reliable and CI-safe.
9+
# WHY: Configures Lychee link checker behavior for CI/CD.
10+
# OBS: Flat structure required by lychee v0.22+; no nested sections.
11+
# OBS: No path exclusions; all documentation files are expected to be link-clean.
12+
# OBS: Link integrity preserves stable, reconstructible references over time.
13+
# OBS: Link integrity maintains connections to external resources.
14+
15+
# WHY: Control verbosity and CI-friendly output
16+
verbose = "info" # WHY: Balance between detail and noise
17+
no_progress = true # WHY: Progress bars don't work well in CI logs
18+
19+
# WHY: Performance tuning for link checking
20+
max_concurrency = 6 # WHY: Parallel requests without overwhelming servers
21+
max_retries = 3 # WHY: Retry flaky connections before failing
22+
retry_wait_time = 8 # WHY: Wait 8 seconds between retries
23+
timeout = 30 # WHY: 30 seconds per request before timeout
24+
25+
# WHY: Accept common status codes that don't indicate broken links
26+
# OBS: 403 and 429 reduce false positives
27+
accept = [
28+
200, # OK
29+
206, # Partial content
30+
301, # Moved permanently
31+
302, # Found (temporary redirect)
32+
307, # Temporary redirect
33+
308, # Permanent redirect
34+
403, # Forbidden (often false positive)
35+
429, # Too many requests (rate limiting)
36+
]
37+
38+
# WHY: Exclude patterns that shouldn't be checked
39+
exclude = [
40+
"^https://shields\\.io", # WHY: Shields.io badges often have anti-bot measures that cause false positives
41+
"^https://img\\.shields\\.io", # WHY: Shields.io image badges often have anti-bot measures that cause false positives
42+
"^https://badges\\.github\\.com", # WHY: GitHub badges often have anti-bot measures that cause false positives
43+
"^https://www\\.linkedin\\.com", # WHY: LinkedIn often blocks automated requests, causing false positives
44+
"example\\.com", # WHY: Exclude example domains in documentation
45+
"localhost", # WHY: Exclude local development URLs
46+
"127\\.0\\.0\\.1", # WHY: Exclude local loopback
47+
"\\.local", # WHY: Exclude local network domains
48+
]

0 commit comments

Comments
 (0)