Skip to content

Commit 2b242c0

Browse files
chore: align local tooling with CI and refresh stale docs
- Delete the stale uv.lock; requirements*.lock.txt are the only lock files CI uses, and `uv lock --check` had already drifted. - `make check` now runs ruff and pytest like CI; the `.PHONY` lint target exists for real. - Dependabot ignores pandas/matplotlib, which course folders pin separately; workflows no longer trigger on the deleted `main` branch. - README status sections stop hardcoding a master hash and point to the CHANGELOG; AGENTS.md describes the verifier v2 checkpoint contract; CHANGELOG records the 2026-10-04 CI/course-setup fixes and no longer claims a stale production pin; repo-plan-0.1.x reflects the deleted website 0.0.9 plan file and drops the stale hash. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1 parent 1a5de9e commit 2b242c0

11 files changed

Lines changed: 68 additions & 1653 deletions

File tree

‎.github/dependabot.yml‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ updates:
88
time: "09:00"
99
timezone: Asia/Shanghai
1010
open-pull-requests-limit: 5
11+
ignore:
12+
# Course folders pin these in their own requirements.txt, which this
13+
# root-level config does not scan. Upgrade them together with the
14+
# course pins during a course re-review, not in the weekly group PR.
15+
- dependency-name: "pandas"
16+
- dependency-name: "matplotlib"
1117
groups:
1218
python-dependencies:
1319
patterns:

‎.github/workflows/notify-site.yml‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ on:
44
push:
55
branches:
66
- master
7-
- main
87
tags:
98
- "v*"
109

‎.github/workflows/validate.yml‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ on:
55
push:
66
branches:
77
- master
8-
- main
98

109
permissions:
1110
contents: read

‎AGENTS.md‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,11 @@ reviewed catalog data, and stable public JSON contracts.
4040
pairs (objective, exercise, checkpoint, expected evidence), `scenario/`
4141
data files for each skin, `TASK.md`/`TASK_cn.md` (task contract),
4242
`starter/` and `solution/` runnable pairs, a self-contained `verify.py`
43-
that fails on `starter` and passes on `solution`, exposes deterministic
44-
claim codes through `verify.py progress` (five checkpoints), and runs on
43+
that fails on `starter` and passes on `solution`, reports five checkpoints
44+
through `python verify.py` and the versioned `check --json` interface
45+
(deterministic claim codes; self-reported checkpoints emit a code only after
46+
explicit `--attest ID`; `progress --json` stays only for legacy signed
47+
receipts), and runs on
4548
the standard library unless the course ships its own `requirements.txt`
4649
(as the pandas/matplotlib data-analysis courses do), and `REVIEW.md`
4750
recording the maintainer run-through (date, tool, version, observed agent

‎CHANGELOG.md‎

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,29 @@ This file records notable catalog-contract and maintenance changes.
44

55
## [Unreleased]
66

7+
### Fixed — 2026-10-04 CI and course setup
8+
9+
- CI: `ruff` is pinned in `requirements-dev.lock.txt`. CI had installed the
10+
latest unpinned ruff, whose new rules failed every Validate run from
11+
2026-09-16; the three findings were fixed without behavior change.
12+
- CI: the dev lock installs on Python 3.11 again (`numpy` and `contourpy`
13+
use `python_version` markers); the 3.11 job had failed at install since
14+
the lock was added.
15+
- Tests: guide heading extraction requires whitespace after the step number
16+
(#90), and guide URL extraction ignores Markdown link titles (adapted from
17+
#91).
18+
- Actions: `actions/checkout` v7, `astral-sh/setup-uv` v7,
19+
`peter-evans/repository-dispatch` v4 (#89).
20+
- Courses: `da-eda` and `da-visualization` setup (EN+ZH) and the `verify.py`
21+
missing-dependency hint no longer say `uv sync`, which fails in a
22+
standalone course folder (no `pyproject.toml`) and does not install pandas
23+
in a clone (it lives in the `dev` extra). They now create a virtual
24+
environment and run `pip install -r requirements.txt`.
25+
- Tooling: removed the stale, unused `uv.lock` (`requirements*.lock.txt` are
26+
the only lock files); `make check` now also runs ruff and pytest, as CI
27+
does; Dependabot ignores pandas and matplotlib, which course folders pin;
28+
workflows no longer trigger on the deleted `main` branch.
29+
730
### Changed — 2026-09-16 learner verifier v2
831

932
- All 12 public course verifiers now expose `check --json` and require
@@ -15,8 +38,9 @@ This file records notable catalog-contract and maintenance changes.
1538
- `progress --json` remains available only for the v1 signed-receipt contract;
1639
its legacy self-reported rows must not be submitted as learner claims.
1740
- `tools/verify_courses.py`, both READMEs, paired course guidance, and
18-
`content-manifest.json` were updated together. Production consumer pin:
19-
`39a3e79be939f491ac3c779494bf5c655c5588a0`.
41+
`content-manifest.json` were updated together. The website consumer pin was
42+
`39a3e79be939f491ac3c779494bf5c655c5588a0` at the time; the current pin is
43+
recorded in the website's `src/data/content-pin.json`.
2044

2145
0.1.0 — companion-repository half of the public launch (website
2246
`docs/product-and-growth-plan-0.1.0.md`; see the website `CHANGELOG.md`
@@ -25,8 +49,8 @@ for the platform half).
2549
Release mapping (FP-1012): this repository ships **v0.1.1** on this
2650
release train — the earlier `v0.1.0` tag stays immutably on `e420fca`.
2751
Compatibility: website `v0.1.0` ↔ repository `v0.1.1`. The immutable tag is
28-
`db85cdd…`; current `master` and the production website pin have advanced to
29-
post-tag verifier commit `39a3e79…`.
52+
`db85cdd…`; `master` and the website pin have since moved past the tag (see
53+
`[Unreleased]`).
3054

3155
### Changed
3256

‎CONTRIBUTING.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,10 @@ python tools/render_readmes.py
8484
python tools/build_content_manifest.py
8585
```
8686

87-
Run the same deterministic checks as CI:
87+
Run the same deterministic checks as CI (or `make check`):
8888

8989
```bash
90+
python -m ruff check .
9091
python -m pytest
9192
python tools/validate_catalog.py
9293
python tools/export_catalog.py --check --target both

‎Makefile‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
1-
.PHONY: help check export render manifest test verify courses paths lint typecheck all
1+
.PHONY: help check export render manifest test verify courses paths lint all
22

33
PYTHON ?= python3
44

55
help:
66
@echo "FlyPython Development Workflow:"
7-
@echo " make check - Run all catalog, radar, export, readme, manifest, example, and course checks"
7+
@echo " make check - Run the same checks as CI: lint, tests, catalog, radar, export, readme, manifest, example, course, and path checks"
88
@echo " make export - Regenerate catalog.json and radar.json"
99
@echo " make render - Regenerate README and README_cn catalog indexes plus the Radar table"
1010
@echo " make manifest - Regenerate content-manifest.json"
11+
@echo " make lint - Run ruff"
1112
@echo " make test - Run pytest test suite"
1213
@echo " make verify - Verify all runnable examples"
1314
@echo " make courses - Verify all course folders"
1415
@echo " make paths - Verify all learning-path contracts"
1516
@echo " make all - Regenerate all exports and run all checks and tests"
1617

17-
check:
18+
check: lint test
1819
$(PYTHON) tools/validate_catalog.py
1920
$(PYTHON) tools/export_catalog.py --check --target both
2021
$(PYTHON) tools/render_readmes.py --check
@@ -32,6 +33,9 @@ render:
3233
manifest:
3334
$(PYTHON) tools/build_content_manifest.py
3435

36+
lint:
37+
$(PYTHON) -m ruff check .
38+
3539
test:
3640
$(PYTHON) -m pytest
3741

@@ -44,4 +48,4 @@ courses:
4448
paths:
4549
$(PYTHON) tools/verify_paths.py
4650

47-
all: export render manifest test check
51+
all: export render manifest check

‎README.md‎

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,14 @@ versions into a browsable learning experience.
2727

2828
## Current status
2929

30-
As of 2026-09-19, `master` is `39a3e79be939f491ac3c779494bf5c655c5588a0`
31-
and the package version is `0.1.1`. This commit follows the immutable `v0.1.1`
32-
tag and adds learner verifier v2: tests must pass and reflection checkpoints
33-
must be explicitly confirmed with `--attest`. FlyPython.com pins this exact
34-
commit and serves it in production. That proves release delivery, not learner
35-
outcomes or paid demand; the website's payment and email operations still have
36-
separate acceptance gates.
30+
The package version is `0.1.1`; the immutable `v0.1.1` tag points to `db85cdd`.
31+
Since that tag, `master` has added learner verifier v2 (tests must pass and
32+
reflection checkpoints must be explicitly confirmed with `--attest`) plus CI
33+
and course-setup fixes; see [CHANGELOG.md](CHANGELOG.md). FlyPython.com builds
34+
from an exact commit pinned on the website side, so `master` can be ahead of
35+
what the site serves. A pinned, served commit proves release delivery, not
36+
learner outcomes or paid demand; the website's payment and email operations
37+
still have separate acceptance gates.
3738

3839
## Start in three minutes
3940

‎README_cn.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ FlyPython 是一个面向实践的双语仓库,帮助你写好 Python,并把
2424

2525
## 当前状态
2626

27-
截至 2026-09-19,`master` 为 `39a3e79be939f491ac3c779494bf5c655c5588a0`,
28-
包版本为 `0.1.1`。该提交位于不可变标签 `v0.1.1` 之后,加入 learner verifier v2:
29-
测试关卡必须通过,自报关卡必须用 `--attest` 显式确认。FlyPython.com 固定并在生产环境
30-
交付此提交。这只能证明发布与交付,不证明学习效果或付费需求;网站的真实付款和邮件运营
31-
仍有独立验收关卡。
27+
包版本为 `0.1.1`;不可变标签 `v0.1.1` 指向 `db85cdd`。该标签之后,`master` 加入了
28+
learner verifier v2(测试关卡必须通过,自报关卡必须用 `--attest` 显式确认),以及 CI
29+
与课程环境说明的修复,详见 [CHANGELOG.md](CHANGELOG.md)。FlyPython.com 按网站侧固定的
30+
精确提交构建,所以 `master` 可能领先于网站当前交付的版本。固定并交付某个提交只能证明
31+
发布与交付,不证明学习效果或付费需求;网站的真实付款和邮件运营仍有独立验收关卡。
3232

3333
## 3 分钟开始
3434

‎docs/repo-plan-0.1.x.md‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
# FlyPython 仓库 0.1.x 规划:社区贡献课程
22

33
版本:0.1.x(规划,第 3 稿;2026-09-14 从 `repo-plan-0.1.0.md` 改名,避免与已发布标签混淆)
4-
更新日期:2026-09-19
4+
更新日期:2026-10-04
55
状态:**规划,尚未立项。网站 0.1.0 已发布,前置条件已满足;但仍没有所有者批准的
66
范围、负责人或实施提交,不能把本文件当成已开放社区课程贡献。后续是否立项由真实激活、
77
维护容量和收费验收数据决定。**
8-
关联:网站仓库 `docs/product-and-growth-plan-0.0.9.md`(附录 B 记录了移出决定)·
8+
关联:网站仓库 0.0.9 计划附录 B 记录了移出决定(该文件已于 2026-10-02 删除,用
9+
`git show e16cb3c:docs/product-and-growth-plan-0.0.9.md` 查看)·
910
网站仓库 `docs/courses/README.md`(课程标准)· 本仓库 `CONTRIBUTING.md`、
1011
`docs/CURATION_POLICY.md`、`LICENSE`
1112

@@ -17,7 +18,7 @@
1718
- 官方示范(视频、终端回放、文字稿)是 Pro 专属;社区课是否配官方示范、如何开放,
1819
届时按网站当时的 Pro 规则另行决定。本规划不承诺社区课有示范。
1920

20-
## 现状(2026-09-19 核对)
21+
## 现状(2026-10-04 核对)
2122

2223
- `LICENSE` 已是双许可:代码(starter、solution、`verify.py`、工具)MIT;课文等书面
2324
内容 CC BY 4.0,署名「FlyPython (flypython.com)」。
@@ -28,8 +29,8 @@
2829
0.0.8 起课程文件夹单独取出也能运行 `python verify.py`。
2930
- 网站的课程数据与认领契约目前是手工镜像本仓库,每加一门课都要改网站代码——
3031
社区课一多就成为瓶颈(见第 6 项)。
31-
- 当前 `master` 为 `39a3e79…`,12 门公开课程已使用 learner verifier v2;社区课程
32-
proposal、脚手架、CODEOWNERS、安全审查和自动接入仍全部未实现。
32+
- 12 门公开课程自 2026-09-16 起使用 learner verifier v2;社区课程 proposal、脚手架、
33+
CODEOWNERS、安全审查和自动接入仍全部未实现。
3334

3435
## 待办(0.1.x 立项时细化)
3536

0 commit comments

Comments
 (0)