Skip to content

Commit 240203a

Browse files
committed
docs: add the 0.0.4 repo plan — verify.py progress, challenge narrative
Planning draft for the local-first challenge/badge layer in course folders: verify.py progress writing PROGRESS.json, badge contract and challenge narrative (EN+ZH), gated BADGE.md artifact, SKILL.md packaging evaluation, and verify_courses.py coverage. Carries the open 0.0.3 release mechanics forward.
1 parent f774e02 commit 240203a

2 files changed

Lines changed: 195 additions & 0 deletions

File tree

docs/repo-plan-0.0.4.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# FlyPython repository 0.0.4 update plan
2+
3+
Version: 0.0.4 (planning draft)
4+
Updated: 2026-09-12
5+
Chinese version: [repo-plan-0.0.4_cn.md](./repo-plan-0.0.4_cn.md)
6+
Related: flypython.com `docs/product-and-growth-plan-0.0.4.md`
7+
8+
Status: planning document only. Nothing here is implemented. The repository
9+
boundary from `AGENTS.md` holds: this repo owns reviewed content, runnable
10+
evidence, and stable JSON contracts; the website owns presentation and
11+
conversion. All new content ships English and Chinese in sync.
12+
13+
## 1. Theme: the challenge/badge layer lives in course folders
14+
15+
The 0.0.4 site plan adds a "challenges and badges" progression layer over
16+
the agent-taught course format — learned from PentesterLab's badge model but
17+
implemented **local-first**: progress evidence is written by `verify.py` into
18+
the learner's folder, never to a server. This repo owns everything that makes
19+
that real: the verifier behavior, the course narrative, and the contract
20+
checks.
21+
22+
Binding rules:
23+
24+
- No accounts, no network calls, no telemetry in any course tooling.
25+
- Badges are self-reported local evidence; tooling must never print
26+
certification-style claims.
27+
- Every narrative or badge string ships EN+ZH in the same change.
28+
- `PROGRESS.json` and `BADGE.md` are versioned course outputs with a stable
29+
shape (documented in the course contract), so the website and external
30+
tools can render them without guessing.
31+
32+
## 2. Work items
33+
34+
### FP-411 `verify.py progress` (every course)
35+
36+
- New subcommand: `python verify.py progress` reads the current
37+
implementation state and writes `PROGRESS.json` next to `verify.py`:
38+
`{"course", "tool", "checkpoints": [{"id", "name", "status": "passed" |
39+
"open", "evidence_command", "recorded_on"}], "all_passed": bool}`.
40+
- Checkpoint status derives from the objective suite (starter-fails and
41+
solution-passes per lesson), not from self-assessment.
42+
- Stdlib only; deterministic output; safe to re-run.
43+
44+
### FP-412 Challenge narrative (COURSE.md + lessons)
45+
46+
- COURSE.md gains a badge contract section: course badge name (e.g.
47+
"Verified Report Tool"), the five checkpoint challenges, and the honest
48+
self-reported-evidence framing.
49+
- Lessons are labeled as challenges ("Challenge 01: reproduce the failure");
50+
checkpoint sections name the badge requirement they satisfy.
51+
- EN+ZH in the same commit; `reviewed_on` bumped; content_version bump per
52+
manifest rules.
53+
54+
### FP-413 Badge artifact
55+
56+
- `python verify.py progress --badge` writes `BADGE.md` when — and only
57+
when — all checkpoints pass: badge name, course, tool + version, dates,
58+
and the replay commands. Self-reported evidence; explicitly not a
59+
certificate.
60+
61+
### FP-414 Agent-skill packaging (evaluation)
62+
63+
- Evaluate publishing course ingestion as a SKILL.md-compatible skill
64+
(OpenMAIC / Codex workbenches), following the repository's template
65+
conventions. Human-authored; pilot recorded honestly before any
66+
recommendation.
67+
68+
### FP-415 `verify_courses.py` extension
69+
70+
- Extend the course-contract verifier: `PROGRESS.json` (when present)
71+
validates against the documented shape; `BADGE.md` may exist only when
72+
the record shows all checkpoints passed; the progress subcommand is
73+
exercised in CI.
74+
75+
## 3. Non-goals
76+
77+
No accounts, no server-side judging, no points/leaderboards/streaks, no
78+
network access from course tooling, no certification language, no second
79+
copy of site content. The website renders badge maps from its own course
80+
data; this repo does not ship site assets.
81+
82+
## 4. TODO (all unverified)
83+
84+
- [ ] FP-411 `verify.py progress` + `PROGRESS.json` contract, all five
85+
courses.
86+
- [ ] FP-412 badge contract + challenge narrative, EN+ZH, one change.
87+
- [ ] FP-413 `BADGE.md` generation gated on all-checkpoints-passed.
88+
- [ ] FP-414 SKILL.md packaging evaluation with a written record.
89+
- [ ] FP-415 `verify_courses.py` progress-contract coverage in CI.
90+
91+
## 5. Execution order
92+
93+
1. FP-411 + FP-412 + FP-415 in one change (contract, narrative, checker).
94+
2. FP-413 once the progress contract is stable.
95+
3. FP-414 after one real external-tool run is recorded.
96+
97+
## 6. Carried forward from 0.0.3 (open)
98+
99+
- FP-326 note: five agent-taught run-throughs still to be recorded in each
100+
course's `REVIEW.md` (launch evidence, not a content blocker).
101+
- FP-327 release step: website pin bump to this repo's release SHA in one
102+
deliberate step.
103+
- FP-334 repo description/topics + first GitHub Release; CHANGELOG
104+
`[Unreleased]` cuts into a version section at that Release.

docs/repo-plan-0.0.4_cn.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# FlyPython 仓库 0.0.4 更新计划
2+
3+
版本:0.0.4(规划草稿)
4+
更新日期:2026-09-12
5+
英文正本:[repo-plan-0.0.4.md](./repo-plan-0.0.4.md)(治理以英文版为准)
6+
关联:flypython.com `docs/product-and-growth-plan-0.0.4.md`
7+
8+
状态:仅规划文档。本文件所述内容均未实现。`AGENTS.md` 的仓库边界不变:
9+
本仓库拥有经审核的内容、可运行的证据与稳定的 JSON 契约;网站拥有呈现
10+
与转化。所有新内容中英同一次变更交付。
11+
12+
## 1. 主题:挑战/徽章层落在课程文件夹里
13+
14+
网站 0.0.4 计划在"Agent 授课"课程形态之上加一层"挑战与徽章"进阶层
15+
——借鉴 PentesterLab 的徽章模型,但以**本地优先**实现:进度证据由
16+
`verify.py` 写进学习者的文件夹,绝不写进服务器。让它成立的一切都归本
17+
仓库所有:验证器行为、课程叙事、契约检查。
18+
19+
约束规则:
20+
21+
- 课程工具中无账号、无网络调用、无遥测。
22+
- 徽章是自我报告的本地证据;工具输出绝不得出现认证式声明。
23+
- 每条叙事或徽章文案中英同一次变更交付。
24+
- `PROGRESS.json``BADGE.md` 是形状稳定(在课程契约中文档化)的
25+
版本化课程输出,网站与外部工具无需猜测即可渲染。
26+
27+
## 2. 工作项
28+
29+
### FP-411 `verify.py progress`(每门课程)
30+
31+
- 新子命令:`python verify.py progress` 读取当前实现状态,在
32+
`verify.py` 旁写出 `PROGRESS.json`
33+
`{"course", "tool", "checkpoints": [{"id", "name", "status": "passed" |
34+
"open", "evidence_command", "recorded_on"}], "all_passed": bool}`。
35+
- 检查点状态来自客观套件(每课的 starter 失败与 solution 通过),
36+
不来自自我评估。
37+
- 仅用标准库;输出确定;可安全重复运行。
38+
39+
### FP-412 挑战叙事(COURSE.md + 课程)
40+
41+
- COURSE.md 增加徽章契约章节:课程徽章名(如"Verified Report Tool")、
42+
五个检查点挑战、以及"自我报告的本地证据"的诚实表述。
43+
- 课程标注为挑战("挑战 01:复现故障");检查点小节写明它满足的徽章
44+
要求。
45+
- 中英同一次提交;`reviewed_on` 更新;按 manifest 规则升级
46+
content_version。
47+
48+
### FP-413 徽章产物
49+
50+
- 当且仅当全部检查点通过时,`python verify.py progress --badge` 写出
51+
`BADGE.md`:徽章名、课程、工具 + 版本、日期、复现命令。自我报告的
52+
证据;明确不是证书。
53+
54+
### FP-414 Agent skill 打包(评估)
55+
56+
- 评估把课程摄取发布为 SKILL.md 兼容的 skill(OpenMAIC / Codex 工作
57+
台),遵循仓库模板约定。人工撰写;先留下真实试点记录再给建议。
58+
59+
### FP-415 `verify_courses.py` 扩展
60+
61+
- 扩展课程契约验证器:`PROGRESS.json`(如存在)按文档化形状校验;
62+
`BADGE.md` 仅在记录显示全部检查点通过时才允许存在;进度子命令
63+
纳入 CI 演练。
64+
65+
## 3. Non-goals
66+
67+
无账号、无服务端判题、无积分/排行榜/连续打卡、课程工具无网络访问、
68+
无认证式措辞、无网站内容第二副本。网站用自己侧的课程数据渲染徽章
69+
地图;本仓库不产出网站资产。
70+
71+
## 4. TODO(全部未验证)
72+
73+
- [ ] FP-411 全部五门课程的 `verify.py progress` + `PROGRESS.json` 契约。
74+
- [ ] FP-412 徽章契约 + 挑战叙事,中英一次变更交付。
75+
- [ ] FP-413 以"全部检查点通过"为门的 `BADGE.md` 生成。
76+
- [ ] FP-414 SKILL.md 打包评估,附书面记录。
77+
- [ ] FP-415 `verify_courses.py` 进度契约覆盖进 CI。
78+
79+
## 5. 执行顺序
80+
81+
1. FP-411 + FP-412 + FP-415 一次变更完成(契约、叙事、检查器)。
82+
2. 进度契约稳定后做 FP-413。
83+
3. 记录一次真实外部工具运行后再做 FP-414。
84+
85+
## 6. 自 0.0.3 结转(未完成)
86+
87+
- FP-326 备注:五次 Agent 实机授课记录仍待写入各课程 `REVIEW.md`
88+
(属于发布证据,不是内容阻塞项)。
89+
- FP-327 发布步骤:网站 pin 在一次刻意变更中固定到本仓库发布 SHA。
90+
- FP-334 仓库描述/话题 + 首个 GitHub Release;该 Release 时将
91+
CHANGELOG `[Unreleased]` 切为正式版本小节。

0 commit comments

Comments
 (0)