Skip to content

Commit a6fa02c

Browse files
committed
release: prepare MIT publication candidate
1 parent f3de88f commit a6fa02c

17 files changed

Lines changed: 325 additions & 70 deletions

.github/workflows/ci.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
pull_request:
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
11+
jobs:
12+
test:
13+
runs-on: ubuntu-latest
14+
strategy:
15+
fail-fast: false
16+
matrix:
17+
python-version: ["3.9", "3.12"]
18+
19+
steps:
20+
- uses: actions/checkout@v4
21+
- uses: actions/setup-python@v5
22+
with:
23+
python-version: ${{ matrix.python-version }}
24+
cache: pip
25+
cache-dependency-path: |
26+
skills/math-glossary/requirements.txt
27+
skills/math-glossary/requirements-ai.txt
28+
- name: Install dependencies
29+
run: |
30+
python -m pip install --upgrade pip
31+
python -m pip install \
32+
-r skills/math-glossary/requirements.txt \
33+
-r skills/math-glossary/requirements-ai.txt
34+
- name: Test repository shape
35+
run: python -m unittest discover -s tests -v
36+
- name: Test math-glossary
37+
run: python -m unittest discover -s skills/math-glossary/tests -v

AGENTS.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ contracts and runnable implementations. Keep every tool isolated under
1515
`NORMALIZATION.md`.
1616
- Do not publish original course archives, private intake records, credentials,
1717
local absolute paths, or unreviewed third-party data.
18-
- Do not add a repository license until the rights holder has approved it.
18+
- Preserve the repository's MIT license and keep third-party license boundaries
19+
documented in `THIRD_PARTY.md`.
1920

2021
## Validation
2122

CONTRIBUTORS.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
- Original course contribution: Yunfeng Lu (`course-2026-summer-03`)
66
- Public name convention: course-roster name romanized as `Given-name Surname`
7-
- VeryMath course-edition normalization: pending review and contributor
8-
confirmation
7+
- VeryMath course-edition normalization: approved by the course owner for MIT
8+
publication
9+
- Contributor-specific normalization confirmation: not separately collected
910

1011
The private intake ledger retains the submitted Chinese name and original
1112
filename. Public repository metadata uses the standardized English form only.

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Yunfeng Lu and VeryMath contributors
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

LICENSE_STATUS.md

Lines changed: 0 additions & 15 deletions
This file was deleted.

PUBLISHING.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Publishing AI4Math-MathTool
2+
3+
This document describes the one-time publication of the tested local release
4+
candidate. Creating the public repository, pushing, tagging, and releasing are
5+
separate external write actions.
6+
7+
## 1. Validate the candidate
8+
9+
From the repository root:
10+
11+
```bash
12+
python3 -m venv .venv
13+
. .venv/bin/activate
14+
python -m pip install --upgrade pip
15+
python -m pip install \
16+
-r skills/math-glossary/requirements.txt \
17+
-r skills/math-glossary/requirements-ai.txt
18+
python -m unittest discover -s tests -v
19+
python -m unittest discover -s skills/math-glossary/tests -v
20+
git status --short
21+
```
22+
23+
Only publish a tested commit with no unintended tracked changes. The private
24+
`.intake/` archive must remain ignored and must never be pushed.
25+
26+
## 2. Create the public GitHub repository
27+
28+
Authenticate an account that may create repositories in the `VeryMath`
29+
organization, then create an empty public repository without generated files:
30+
31+
```bash
32+
gh auth status
33+
gh repo create VeryMath/AI4Math-MathTool \
34+
--public \
35+
--source=. \
36+
--remote=origin
37+
```
38+
39+
Publish the tested commit as the initial `main` branch:
40+
41+
```bash
42+
git switch -c main
43+
git push -u origin main
44+
```
45+
46+
The included GitHub Actions workflow will run the repository and package test
47+
suites on supported Python versions.
48+
49+
## 3. Verify and release
50+
51+
Wait for CI to pass, inspect the public file list, and confirm that `.intake/`,
52+
credentials, runtime glossaries, and generated workbooks are absent. Then:
53+
54+
```bash
55+
gh run list --limit 5
56+
git tag -a v0.1.0 -m "AI4Math-MathTool v0.1.0"
57+
git push origin v0.1.0
58+
gh release create v0.1.0 \
59+
--title "AI4Math-MathTool v0.1.0" \
60+
--generate-notes
61+
```
62+
63+
## 4. Connect the ecosystem
64+
65+
After the remote URL and passing CI run exist:
66+
67+
1. add the repository to the AI4Math Skill Library catalog;
68+
2. add the `math-glossary` entry to VeryMath with the GitHub and documentation
69+
links;
70+
3. keep the original course ZIP only in the private teacher-controlled intake
71+
archive.
72+
73+
## 中文说明
74+
75+
发布分成四个可核验动作:先在干净环境跑完测试,再创建空的公开仓库,将当前已测试
76+
提交作为 `main` 推送,CI 通过后再创建 `v0.1.0` Release。最后才同步
77+
AI4Math-Skill-Library 与 VeryMath 页面。任何一步都不得上传 `.intake/`、密钥、真实
78+
术语库或课程原始材料。

README.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ runtime behavior.
88

99
| Tool | Purpose | Status |
1010
| --- | --- | --- |
11-
| [`math-glossary`](skills/math-glossary/) | Build, review, back up, import, export, and maintain bilingual mathematical glossaries | Local course-edition candidate; publication blocked pending contributor authorization and license |
11+
| [`math-glossary`](skills/math-glossary/) | Build, review, back up, import, export, and maintain bilingual mathematical glossaries | MIT-licensed local release candidate; ready for remote publication |
1212

1313
Each package keeps its own workflow, dependencies, provenance, normalization
1414
record, and tests. Course origin is recorded as metadata; it does not determine
@@ -23,11 +23,13 @@ python3 -m unittest discover -s skills/math-glossary/tests -v
2323

2424
## Publication status
2525

26-
This checkout is an unpublished review candidate. The original submission is
27-
stored separately in a teacher-controlled archive and is ignored by Git.
28-
No public repository or release should be created until the contributor's
29-
publication authorization, repository license, and third-party material review
30-
are recorded as confirmed. Contributor names use the course-wide English
31-
romanization convention.
26+
This checkout is a tested, unpublished release candidate. It is licensed under
27+
the [MIT License](LICENSE); the source-publication instruction and third-party
28+
review are recorded in
29+
[`skills/math-glossary/PROVENANCE.yaml`](skills/math-glossary/PROVENANCE.yaml).
30+
The original submission remains in a teacher-controlled, Git-ignored archive.
31+
Contributor names use the course-wide English romanization convention.
3232

33-
See [LICENSE_STATUS.md](LICENSE_STATUS.md) for the current rights gate.
33+
See [THIRD_PARTY.md](THIRD_PARTY.md) for dependency and material boundaries,
34+
[SECURITY.md](SECURITY.md) for safe operation, and
35+
[PUBLISHING.md](PUBLISHING.md) for the remote publication procedure.

README.zh-CN.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ AI4Math-MathTool 是 VeryMath 用于承载独立数学工具的仓库。进入
77

88
| 工具 | 用途 | 状态 |
99
| --- | --- | --- |
10-
| [`math-glossary`](skills/math-glossary/) | 构建、审阅、备份、导入、导出和维护双语数学术语库 | 本地课程版候选;贡献者授权与许可证确认前禁止公开发布 |
10+
| [`math-glossary`](skills/math-glossary/) | 构建、审阅、备份、导入、导出和维护双语数学术语库 | MIT 许可的本地发布候选;可以进入远端发布流程 |
1111

1212
每个 package 独立保留自己的工作流、依赖、来源、规范化记录和测试。课程来源只作为
1313
元数据,不作为代码仓库的职责边界。
@@ -21,9 +21,12 @@ python3 -m unittest discover -s skills/math-glossary/tests -v
2121

2222
## 发布状态
2323

24-
当前 checkout 是尚未公开的审查候选。原始提交另存于教师控制、Git 忽略的档案目录。
25-
贡献者姓名统一按课程名册转写为英文 `Given-name Surname`,不再单独征集署名格式。
26-
在贡献者公开授权、仓库许可证和第三方材料审查全部确认前,不得创建公开仓库或发布
27-
版本。
24+
当前 checkout 是已完成本地验证、尚未公开的发布候选,采用
25+
[MIT License](LICENSE)。源码公开指令与第三方材料审查结果记录在
26+
[`skills/math-glossary/PROVENANCE.yaml`](skills/math-glossary/PROVENANCE.yaml)
27+
原始提交仍单独保存在教师控制、Git 忽略的档案目录;贡献者姓名统一按课程名册转写为
28+
英文 `Given-name Surname`
2829

29-
当前权利门槛见 [LICENSE_STATUS.md](LICENSE_STATUS.md)
30+
依赖与材料边界见 [THIRD_PARTY.md](THIRD_PARTY.md),安全说明见
31+
[SECURITY.md](SECURITY.md),创建远端、运行 CI 与发布版本的步骤见
32+
[PUBLISHING.md](PUBLISHING.md)

SECURITY.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Security policy
2+
3+
Security fixes are applied to the current `main` branch and the latest tagged
4+
release.
5+
6+
After the public repository exists, report suspected vulnerabilities privately
7+
through GitHub Security Advisories. Do not include API keys, private glossaries,
8+
course intake archives, or copyrighted source materials in a public issue.
9+
10+
The glossary Web UI is a local development interface without authentication.
11+
It binds to `127.0.0.1` by default. Do not expose it to an untrusted network;
12+
binding a non-loopback address requires the explicit `--allow-remote` flag.
13+
14+
AI enrichment sends selected terms to the endpoint configured by the user.
15+
Review the endpoint's privacy and data-retention terms before using real
16+
research data. Never store API keys in a glossary, command history, log, or
17+
repository file.

THIRD_PARTY.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Third-party materials
2+
3+
The repository does not vendor third-party source code, dictionaries, corpora,
4+
PDFs, fonts, images, or Web assets. The CSS uses system-font fallback names
5+
only. The original course submission and the normalized package were reviewed
6+
for these material classes before the MIT release candidate was prepared.
7+
8+
The following packages are installed separately by users and retain their own
9+
licenses:
10+
11+
| Dependency | Declared range | Purpose | Upstream license |
12+
| --- | --- | --- | --- |
13+
| [Flask](https://github.com/pallets/flask) | `>=3.0,<4` | Optional local Web UI | BSD-3-Clause |
14+
| [openpyxl](https://foss.heptapod.net/openpyxl/openpyxl) | `>=3.1,<4` | Excel import and export | MIT/Expat |
15+
| [PyYAML](https://github.com/yaml/pyyaml) | `>=6,<7` | YAML import | MIT |
16+
| [openai-python](https://github.com/openai/openai-python) | `>=1,<3` | Optional AI example enrichment | Apache-2.0 |
17+
| [mdict-utils](https://pypi.org/project/mdict-utils/) | user-installed optional tool | Optional MDX extraction | MIT |
18+
19+
Transitive dependencies selected by package installers are not redistributed
20+
in this repository and remain subject to their own license terms. The
21+
repository MIT license applies only to material for which the repository
22+
contributors can grant that license.
23+
24+
User-supplied dictionaries, corpora, papers, scans, PDFs, spreadsheets, and
25+
other source materials are not part of this repository. Users are responsible
26+
for confirming that they may process and redistribute any derived glossary
27+
content.

0 commit comments

Comments
 (0)