|
| 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. |
0 commit comments