Skip to content

Commit 8de5000

Browse files
committed
Spring 2026
0 parents  commit 8de5000

30 files changed

Lines changed: 3392 additions & 0 deletions

.editorconfig

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

.gitattributes

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

.github/AGENTS.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# AI Instructions (AGENTS / CLAUDE / Copilot)
2+
3+
## WHY
4+
5+
- This repo uses a uniform, reproducible workflow based on **uv** and **pyproject.toml**.
6+
- These instructions exist to prevent tool drift (e.g., pip) and OS mismatch.
7+
8+
## Requirements
9+
10+
- Use **uv** for all environment, dependency, and run commands in this repo.
11+
- Do **not** recommend or use `pip install ...` as the primary workflow.
12+
- This repo targets **Python 3.14**, pinned via uv.
13+
- Commands and guidance must work on Windows, macOS, and Linux.
14+
- If shell-specific commands are unavoidable, provide both:
15+
- PowerShell (Windows)
16+
- bash/zsh (macOS/Linux)
17+
18+
## Quickstart
19+
20+
- Install **uv** using the official method for your OS.
21+
- Keep uv current.
22+
- Pin Python 3.14 for this project using uv.
23+
- Sync dependencies (dev + docs) and upgrade.
24+
25+
```shell
26+
uv self update
27+
uv python pin 3.14
28+
uv sync --extra dev --extra docs --upgrade
29+
```
30+
31+
## pre-commit
32+
33+
- pre-commit runs only on tracked / staged files.
34+
- Developers should `git add -A` files before expecting hooks to run.
35+
- Developers may need to **repeat** the git add / git commit commands if files changed
36+
37+
```
38+
uvx pre-commit install
39+
git add -A
40+
uvx pre-commit run --all-files
41+
```
42+
43+
## Run Python as a Module (src/nlp/)
44+
45+
```
46+
uv run python -m nlp.module_name
47+
```
48+
49+
# Notebooks in notebooks/
50+
51+
Select the kernel and Run All.
52+
53+
## Common Tasks
54+
55+
Run all commands via **uv**.
56+
57+
Lint / format:
58+
59+
```shell
60+
uv run ruff format .
61+
uv run ruff check .
62+
```
63+
64+
Build documentation:
65+
66+
```shell
67+
uv run zensical build
68+
```

.github/copilot-instructions.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# AI Instructions (AGENTS / CLAUDE / Copilot)
2+
3+
## WHY
4+
5+
- This repo uses a uniform, reproducible workflow based on **uv** and **pyproject.toml**.
6+
- These instructions exist to prevent tool drift (e.g., pip) and OS mismatch.
7+
8+
## Requirements
9+
10+
- Use **uv** for all environment, dependency, and run commands in this repo.
11+
- Do **not** recommend or use `pip install ...` as the primary workflow.
12+
- This repo targets **Python 3.14**, pinned via uv.
13+
- Commands and guidance must work on Windows, macOS, and Linux.
14+
- If shell-specific commands are unavoidable, provide both:
15+
- PowerShell (Windows)
16+
- bash/zsh (macOS/Linux)
17+
18+
## Quickstart
19+
20+
- Install **uv** using the official method for your OS.
21+
- Keep uv current.
22+
- Pin Python 3.14 for this project using uv.
23+
- Sync dependencies (dev + docs) and upgrade.
24+
25+
```shell
26+
uv self update
27+
uv python pin 3.14
28+
uv sync --extra dev --extra docs --upgrade
29+
```
30+
31+
## pre-commit
32+
33+
- pre-commit runs only on tracked / staged files.
34+
- Developers should `git add -A` files before expecting hooks to run.
35+
- Developers may need to **repeat** the git add / git commit commands if files changed
36+
37+
```
38+
uvx pre-commit install
39+
git add -A
40+
uvx pre-commit run --all-files
41+
```
42+
43+
## Run Python as a Module (src/nlp/)
44+
45+
```
46+
uv run python -m nlp.module_name
47+
```
48+
49+
# Notebooks in notebooks/
50+
51+
Select the kernel and Run All.
52+
53+
## Common Tasks
54+
55+
Run all commands via **uv**.
56+
57+
Lint / format:
58+
59+
```shell
60+
uv run ruff format .
61+
uv run ruff check .
62+
```
63+
64+
Build documentation:
65+
66+
```shell
67+
uv run zensical build
68+
```

0 commit comments

Comments
 (0)