Skip to content

Commit fbe9af6

Browse files
committed
docs: fix full documentation review findings across the repository
Licensing and entry points: - CONTRIBUTING permissions now match the dual MIT/CC-BY LICENSE - README_cn hero rewritten for the challenge-platform narrative (TASK.md contracts, verify.py claim codes, paths badge routes) - llms.txt: fix four template paths, add the three DA courses, refresh tagline and Radar description Indexes and governance docs: - README/CONTRIBUTING/AGENTS: complete the CI check list (verify_courses, verify_paths, --target both), add courses/, paths/, radar.json to the structure diagram, dependency-aware course contract - CHANGELOG: record post-0.1.0 0.0.4 phase A under [Unreleased] - CONSUMING: document radar.json as the third pinned export - repo-plan-0.0.4: mark FP-334 done (v0.1.0) Courses and examples: - mcp-server-in-python: fix stale examples/mcp-server verify path in TASK pair; expect-failure now requires all named failures; REVIEW wording matches the actual scenario layout - da-report: remove the unused pandas gate (verify.py, requirements, COURSE pair) — the course is stdlib-only - agent-rules L01 pair: add the missing verifier command - product-slug: fix punctuation-before-collapse ordering so removed punctuation cannot create duplicate separators; regression test added - async-fetcher: solution uses asyncio.TaskGroup; TASK pair states the total-attempts retry semantics - structured-pipeline: solution actually iterates in batch_size batches - pydantic-validation: honest stdlib-by-design note (EN+ZH) and accurate verify message - align DA badge ids to the course- prefix convention Bilingual parity and paths: - templates: add CODE_REVIEW/IMPLEMENTATION_PLAN CN pairs and link them from both indexes; fix EVAL_RECORD/AGENT_RULES CN drift - guides: fix async-patterns_cn example, modern-typing_cn dropped clause, migrate guide EN em-dash sentence - playbooks: CN footers deep-link the same resources anchors as EN - paths: add README pair, resolve undefined C1-C4 labels to course slugs, link the index from the main READMEs Hygiene: - drop committed course .venv/__pycache__ artifacts, ignore .pytest_cache, exempt starter scaffolding imports from ruff F401 Validation: pytest 136 passed; ruff clean; catalog/radar/README/manifest checks current; 5 examples, 8 courses, 2 paths verified.
1 parent 0c3c44f commit fbe9af6

58 files changed

Lines changed: 301 additions & 155 deletions

File tree

Some content is hidden

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

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,6 @@ courses/*/scenario/*/report.json.tmp
4949
courses/*/out/
5050
paths/*/capstone/out/
5151
courses/*/scenario/*/results.json
52+
53+
# Test caches
54+
.pytest_cache/

AGENTS.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,17 @@ reviewed catalog data, and stable public JSON contracts.
3535
an AI coding agent from the files themselves: `COURSE.md` (metadata plus the
3636
teaching contract: audience, prerequisites, exact tool and version,
3737
lesson order, teaching-style rules, when to stop, how to use `verify.py`,
38-
and what the course does not cover), `lessons/L01.md` with `L01_cn.md`
38+
and what the course does not cover) with `id: course-<slug>` and `badge`
39+
frontmatter, `lessons/L01.md` with `L01_cn.md`
3940
pairs (objective, exercise, checkpoint, expected evidence), `scenario/`
4041
data files for each skin, `TASK.md`/`TASK_cn.md` (task contract),
41-
`starter/` and `solution/` runnable pairs, stdlib-only `verify.py` that
42-
fails on `starter` and passes on `solution`, and `REVIEW.md` recording the
43-
maintainer run-through (date, tool, version, observed agent deviations).
42+
`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
45+
the standard library unless the course ships its own `requirements.txt`
46+
(as the pandas/matplotlib data-analysis courses do), and `REVIEW.md`
47+
recording the maintainer run-through (date, tool, version, observed agent
48+
deviations).
4449
A course is incomplete until every lesson ships EN+ZH in the same change;
4550
`COURSE.md` must name the exact tool version it was taught with, and a tool
4651
major release triggers re-review. Never claim guaranteed learning outcomes.
@@ -57,8 +62,9 @@ reviewed catalog data, and stable public JSON contracts.
5762
verify them with `python tools/render_readmes.py --check`.
5863
- Regenerate `content-manifest.json` and verify it with
5964
`python tools/build_content_manifest.py --check`.
60-
- Verify every runnable example with `python tools/verify_examples.py` and
61-
every course folder with `python tools/verify_courses.py`.
65+
- Verify every runnable example with `python tools/verify_examples.py`,
66+
every course folder with `python tools/verify_courses.py`, and every
67+
learning path with `python tools/verify_paths.py`.
6268
- Website consumers must pin a full repository commit and verify the catalog
6369
checksum. Do not make production builds depend on a moving branch.
6470
- Keep external-link checks read-only, rate-limited, retryable, and blocked from

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,31 @@
22

33
This file records notable catalog-contract and maintenance changes.
44

5+
## [Unreleased]
6+
7+
0.0.4 phase A — challenge-platform rework on top of 0.1.0.
8+
9+
### Added
10+
11+
- Per-checkpoint claim codes, badge frontmatter contracts, and the
12+
deterministic `verify.py progress` subcommand (FP-411/412/415), enforced
13+
by `tools/verify_courses.py`.
14+
- The data-analysis course track: `da-eda`, `da-visualization`, and
15+
`da-report` (EN+ZH), each with pandas/matplotlib `requirements.txt` where
16+
needed and a stdlib-only report capstone.
17+
- `paths/` learning paths sequencing courses into badge routes, plus
18+
`tools/verify_paths.py` enforcing the path contract (FP-413/416/417/418,
19+
wired into the Makefile and the validation workflow).
20+
- `content-manifest.json` path entries (`type: "path"`) for the website.
21+
- Checkpoint hints, the branch-path contract, and agent-solvability review
22+
records across all eight courses (2026-09-13).
23+
24+
### Changed
25+
26+
- Repository narrative moved from agent-taught courses to challenge courses
27+
with `TASK.md` contracts and `verify.py` claim codes; `COURSE.md` remains
28+
the guided mode. README, README_cn, and `llms.txt` now reflect it.
29+
530
## [0.1.0] - 2026-09-12
631

732
First versioned release: agent-taught courses, the Project Radar

CONTRIBUTING.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ Read the [curation policy](docs/CURATION_POLICY.md) before contributing.
1111

1212
## Permissions
1313

14-
This repository currently does not grant a general license to reuse its content
15-
or code. Public visibility is not permission to copy, redistribute, or relicense
16-
repository material. Contributors must submit only material they have the right
17-
to submit and retain required third-party notices.
14+
This repository is dual-licensed as described in [LICENSE](LICENSE): code
15+
(examples, tools, templates, course starters/solutions/verifiers) under the MIT
16+
License, and written content (guides, playbooks, lessons, catalog records,
17+
READMEs) under CC BY 4.0 with attribution "FlyPython (flypython.com)".
18+
Contributors must submit only material they have the right to submit and retain
19+
required third-party notices; a file's own license header, when present, wins.
1820

1921
## Propose a change
2022

@@ -23,6 +25,7 @@ Use the matching issue form before a larger change:
2325
- **Resource proposal** for a new official source.
2426
- **Project proposal** for a current Python project that should receive human
2527
review for Project Radar.
28+
- **Course feedback** for running a course or reporting a course problem.
2629
- **Broken link** for an unreachable or replaced resource.
2730
- **Security report** for a vulnerability; follow [SECURITY.md](SECURITY.md)
2831
instead of opening a public issue.
@@ -86,10 +89,12 @@ Run the same deterministic checks as CI:
8689
```bash
8790
python -m pytest
8891
python tools/validate_catalog.py
89-
python tools/export_catalog.py --check
92+
python tools/export_catalog.py --check --target both
9093
python tools/render_readmes.py --check
9194
python tools/build_content_manifest.py --check
9295
python tools/verify_examples.py
96+
python tools/verify_courses.py
97+
python tools/verify_paths.py
9398
```
9499

95100
Maintainers can run the networked link audit through GitHub Actions. For a

README.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
> [`courses/`](courses/), solve the contract in `TASK.md` with your coding
1111
> agent as the tool, and prove it with `verify.py` — which prints a claim
1212
> code per checkpoint. Prefer a guided path? `COURSE.md` still runs an
13-
> agent-taught mode, and [`paths/`](paths/) sequences courses into badge
13+
> agent-taught mode, and [`paths/`](paths/README.md) sequences courses into badge
1414
> routes. Continue on [flypython.com](https://flypython.com/).
1515
1616
FlyPython is a practical, bilingual repository for writing good Python and
@@ -25,7 +25,8 @@ versions into a browsable learning experience.
2525

2626
## Start in three minutes
2727

28-
No installation is required beyond Python 3.11+:
28+
No installation is required beyond Python 3.11+ (development pins 3.12
29+
through `.python-version`):
2930

3031
```bash
3132
git clone https://github.com/flypythoncom/python.git
@@ -42,7 +43,7 @@ to a coding agent (Cursor, Windsurf, Claude Code, Copilot) and make the starter
4243

4344
| Goal | Start here | What you will produce |
4445
| --- | --- | --- |
45-
| Learn by solving challenges | [Challenge courses](courses/) · [Learning paths](paths/) | A verified project + checkpoint claim codes from `verify.py` |
46+
| Learn by solving challenges | [Challenge courses](courses/) · [Learning paths](paths/README.md) | A verified project + checkpoint claim codes from `verify.py` |
4647
| Write and change Python safely | [AI Coding workflow](guides/ai-coding/workflow.md) | A bounded change with explicit context and evidence |
4748
| Turn Python into a reliable product | [Product quality guide](guides/python-engineering/product-quality.md) | A tested, observable, reversible product path |
4849
| Finish a recurring engineering task | [Playbooks](playbooks/README.md) | A bug fix, API change, integration, dependency upgrade, or release |
@@ -175,13 +176,16 @@ catalog/
175176
paths.yml bilingual learning-path definitions
176177
resources/ one reviewed resource per YAML file
177178
projects/ human-review queue for current Python projects
179+
courses/ challenge courses with TASK.md contracts and verify.py claim codes
180+
paths/ learning paths sequencing courses into badge routes
178181
guides/ Python engineering and AI-coding methods
179182
playbooks/ repeatable task procedures and definitions of done
180183
examples/ small runnable projects with automated verification
181184
templates/ task, plan, review, and verification starters
182185
schema/
183186
*.schema.json versioned machine-readable contracts
184187
catalog.json deterministic public export for consumers
188+
radar.json deterministic Project Radar export for consumers
185189
content-manifest.json versioned paths, summaries, and checksums for the website
186190
tools/ generation, validation, example, and link-audit commands
187191
tests/ content consistency and behavior tests
@@ -227,10 +231,12 @@ Run the deterministic checks:
227231
```bash
228232
python -m pytest
229233
python tools/validate_catalog.py
230-
python tools/export_catalog.py --check
234+
python tools/export_catalog.py --check --target both
231235
python tools/render_readmes.py --check
232236
python tools/build_content_manifest.py --check
233237
python tools/verify_examples.py
238+
python tools/verify_courses.py
239+
python tools/verify_paths.py
234240
```
235241

236242
After changing catalog sources, regenerate the public export before running the

README_cn.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66

77
[English](README.md) · [中文](README_cn.md) · [🌐 官方在线门户](https://flypython.com)
88

9-
> **新——由 Agent 授课、带客观验证的实战课程。**[`courses/`](courses/) 下载一个
10-
> 文件夹,在你的编码 Agent 中打开,说一句*“开始第 1 课”*。每门课程都以一条
11-
> `verify.py` 命令收尾,证明你确实做出了什么。同一旅程可继续在
12-
> [flypython.com](https://flypython.com/) 上进行。
9+
> **带客观验证的挑战课程。**[`courses/`](courses/) 挑一个文件夹,把
10+
> `TASK.md` 中的契约交给你的编码 Agent 去解决,并用 `verify.py` 证明结果——
11+
> 它会在每个检查点打印一个认领码。想要有人带?`COURSE.md` 仍支持 Agent
12+
> 授课模式,[`paths/`](paths/README.md) 则把课程串成徽章路线。可继续在
13+
> [flypython.com](https://flypython.com/) 上学习。
1314
1415
FlyPython 是一个面向实践的双语仓库,帮助你写好 Python,并把代码变成用户可以依赖的
1516
产品。这里同时提供 AI Coding 方法、任务 Playbook、可运行示例、复用模板,以及 API、
@@ -21,7 +22,7 @@ FlyPython 是一个面向实践的双语仓库,帮助你写好 Python,并把
2122

2223
## 3 分钟开始
2324

24-
只需要 Python 3.11+:
25+
只需要 Python 3.11+(开发环境通过 `.python-version` 固定在 3.12)
2526

2627
```bash
2728
git clone https://github.com/flypythoncom/python.git
@@ -38,7 +39,7 @@ python examples/product-slug/verify.py solution
3839

3940
| 目标 | 从这里开始 | 最终产出 |
4041
| --- | --- | --- |
41-
| 解题式动手实战 | [挑战课程](courses/) · [学习路线](paths/) | 一个通过验证的项目 + `verify.py` 的检查点认领码 |
42+
| 解题式动手实战 | [挑战课程](courses/) · [学习路线](paths/README.md) | 一个通过验证的项目 + `verify.py` 的检查点认领码 |
4243
| 安全地编写和修改 Python | [AI Coding 工作方法](guides/ai-coding/workflow_cn.md) | 上下文明确、有证据的边界修改 |
4344
| 把 Python 变成可靠产品 | [产品质量指南](guides/python-engineering/product-quality_cn.md) | 可测试、可观测、可回退的产品路径 |
4445
| 完成反复出现的工程任务 | [Playbook](playbooks/README_cn.md) | Bug 修复、API 修改、外部集成、依赖升级或发布 |
@@ -166,13 +167,16 @@ catalog/
166167
paths.yml 中英文学习路径定义
167168
resources/ 每项资源一个 YAML 文件
168169
projects/ 最新 Python 项目的人工审核队列
170+
courses/ 带 TASK.md 契约和 verify.py 认领码的挑战课程
171+
paths/ 把课程串成徽章路线的学习路径
169172
guides/ Python 工程与 AI Coding 方法
170173
playbooks/ 可重复任务步骤与完成标准
171174
examples/ 带自动验证的可运行小项目
172175
templates/ 任务、计划、Review 和验证模板
173176
schema/
174177
*.schema.json 带版本的机器可读契约
175178
catalog.json 提供给网站使用的确定性公开导出
179+
radar.json 提供给网站使用的确定性 Project Radar 导出
176180
content-manifest.json 网站使用的版本、路径、摘要与校验值
177181
tools/ 生成、校验、示例和链接审计工具
178182
tests/ 内容一致性与行为测试
@@ -215,10 +219,12 @@ pytest
215219
```bash
216220
python -m pytest
217221
python tools/validate_catalog.py
218-
python tools/export_catalog.py --check
222+
python tools/export_catalog.py --check --target both
219223
python tools/render_readmes.py --check
220224
python tools/build_content_manifest.py --check
221225
python tools/verify_examples.py
226+
python tools/verify_courses.py
227+
python tools/verify_paths.py
222228
```
223229

224230
修改源内容后重新生成:

0 commit comments

Comments
 (0)