From 547c74bf40749b26df7414fb919eef6110fbb68a Mon Sep 17 00:00:00 2001 From: pxiaoer Date: Wed, 4 Nov 2026 14:01:53 +0800 Subject: [PATCH] fix(courses): L01 hints and evidence sections follow the explicit --attest flow --- content-manifest.json | 44 +++++++++---------- .../REVIEW.md | 13 ++++++ .../lessons/L01.md | 6 +-- .../lessons/L01_cn.md | 4 +- courses/hands-on-with-cursor/REVIEW.md | 13 ++++++ courses/hands-on-with-cursor/lessons/L01.md | 6 +-- .../hands-on-with-cursor/lessons/L01_cn.md | 6 +-- .../hands-on-with-deepseek-harness/REVIEW.md | 13 ++++++ .../lessons/L01.md | 4 +- .../lessons/L01_cn.md | 6 +-- .../hands-on-with-github-copilot/REVIEW.md | 13 ++++++ .../lessons/L01.md | 7 +-- .../lessons/L01_cn.md | 6 +-- courses/hands-on-with-kimi-code/REVIEW.md | 13 ++++++ .../hands-on-with-kimi-code/lessons/L01.md | 6 +-- .../hands-on-with-kimi-code/lessons/L01_cn.md | 6 +-- courses/hands-on-with-openai-codex/REVIEW.md | 13 ++++++ .../hands-on-with-openai-codex/lessons/L01.md | 6 +-- .../lessons/L01_cn.md | 6 +-- courses/hands-on-with-zcode/REVIEW.md | 13 ++++++ courses/hands-on-with-zcode/lessons/L01.md | 6 +-- courses/hands-on-with-zcode/lessons/L01_cn.md | 6 +-- 22 files changed, 154 insertions(+), 62 deletions(-) diff --git a/content-manifest.json b/content-manifest.json index 3788070..b262000 100644 --- a/content-manifest.json +++ b/content-manifest.json @@ -211,7 +211,7 @@ { "id": "course-claude-code-l01", "type": "course", - "content_version": 3, + "content_version": 4, "status": "reviewed", "reviewed_on": "2026-11-04", "locales": [ @@ -220,14 +220,14 @@ "path": "courses/hands-on-python-with-claude-code/lessons/L01.md", "title": "Lesson 1: Set up Claude Code, install the FlyPython Skill, fetch the course", "summary": "Get Claude Code running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective.", - "sha256": "a036d4d0bfd9480b78fd45436ac5ff9b00fb7e1bef3b2e4323f55a63c92e42e0" + "sha256": "55e4db16a6d16aa2e399fdc7f40420a1c394d7f60bae91f1b42e683f2aadf90a" }, { "lang": "zh-CN", "path": "courses/hands-on-python-with-claude-code/lessons/L01_cn.md", "title": "第 1 课:装好 Claude Code、装上 FlyPython Skill、让 Agent 取回课程", "summary": "先把 Claude Code 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。", - "sha256": "905c5b7f1213f280bc9a33315ff1d409b2a2cc2c0573acf45d9ee7a41077e8c9" + "sha256": "11b353ef3b4535e1ceaba803dd16487602263c22c84a5f40bf6dc14849e70aed" } ] }, @@ -349,7 +349,7 @@ { "id": "course-codex-cli-l01", "type": "course", - "content_version": 4, + "content_version": 5, "status": "reviewed", "reviewed_on": "2026-11-04", "locales": [ @@ -358,14 +358,14 @@ "path": "courses/hands-on-with-openai-codex/lessons/L01.md", "title": "Lesson 1: Set up the Codex app, install the FlyPython Skill, fetch the course", "summary": "Get the Codex app running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective.", - "sha256": "5728ef63d565d56d7c13c17b8f0e1d17f8adf766e7a7cfda5a92ce523e208e68" + "sha256": "df128789e9d7fdec752ade2dfab80757f6e40b76ca7cf4a46dc689ca63723273" }, { "lang": "zh-CN", "path": "courses/hands-on-with-openai-codex/lessons/L01_cn.md", "title": "第 1 课:装好 the Codex app、装上 FlyPython Skill、让 Agent 取回课程", "summary": "先把 the Codex app 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。", - "sha256": "66794c6306ec46f22b1adbcac7ffe35ca14d220316879b510f5d6a15bb548410" + "sha256": "8253df825eab2768c8a70322a6d48d41ee370148879f8294d396dce22fd61e3c" } ] }, @@ -487,7 +487,7 @@ { "id": "course-cursor-l01", "type": "course", - "content_version": 3, + "content_version": 4, "status": "reviewed", "reviewed_on": "2026-11-04", "locales": [ @@ -496,14 +496,14 @@ "path": "courses/hands-on-with-cursor/lessons/L01.md", "title": "Lesson 1: Set up Cursor, install the FlyPython Skill, fetch the course", "summary": "Get Cursor running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective.", - "sha256": "1d99c229a40e82e4eab86324af45cdc19e1cc07ce343978122d02b695e79c653" + "sha256": "042274be016406d6fb6c1df0757b2898904b7052c89c4833cb5b3659884f5be8" }, { "lang": "zh-CN", "path": "courses/hands-on-with-cursor/lessons/L01_cn.md", "title": "第 1 课:装好 Cursor、装上 FlyPython Skill、让 Agent 取回课程", "summary": "先把 Cursor 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。", - "sha256": "298bc1497bfa810ecdb0aadf5df6e597fb7bb2a7c7dd387d3e7d0f7a25461379" + "sha256": "84433a77faa23b29e3d87ca408654c4e5b9842e4089028d1dda91480a348b2cb" } ] }, @@ -1039,7 +1039,7 @@ { "id": "course-deepseek-harness-l01", "type": "course", - "content_version": 3, + "content_version": 4, "status": "reviewed", "reviewed_on": "2026-11-04", "locales": [ @@ -1048,14 +1048,14 @@ "path": "courses/hands-on-with-deepseek-harness/lessons/L01.md", "title": "Lesson 1: Set up DeepSeek Harness, install the FlyPython Skill, fetch the course", "summary": "Get DeepSeek Harness running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective.", - "sha256": "70ed2156deb6179f1006967becc23c67fdfef03b56d0f7fb742239b0fbcc3cc0" + "sha256": "04af9cbe95c4e9685d09ab6dce05b74e8b4ec86936a1fdd850878777aac519d8" }, { "lang": "zh-CN", "path": "courses/hands-on-with-deepseek-harness/lessons/L01_cn.md", "title": "第 1 课:装好 DeepSeek Harness、装上 FlyPython Skill、让 Agent 取回课程", "summary": "先把 DeepSeek Harness 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。", - "sha256": "1c6fdc233cb4f1e0c3ece502fc1507ef7d62b8184ef4c41df2778c848bbc6bc3" + "sha256": "5a60b6db927d296433c1172972d31753f4dd73ac7009d38e41977b9b967f9d7c" } ] }, @@ -1177,23 +1177,23 @@ { "id": "course-github-copilot-l01", "type": "course", - "content_version": 1, + "content_version": 2, "status": "reviewed", - "reviewed_on": "2026-10-11", + "reviewed_on": "2026-11-04", "locales": [ { "lang": "en-US", "path": "courses/hands-on-with-github-copilot/lessons/L01.md", "title": "Lesson 1: Set up Copilot in VS Code, install the FlyPython Skill, fetch the course", "summary": "Get GitHub Copilot running in VS Code with the Agent role and Manual permissions, optionally install the FlyPython Skill, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective.", - "sha256": "c8da93c48af23c9e9bfe8d6c1c750be357a21511e42d5751046697fd6b6ba998" + "sha256": "285f3cfb48a97e82dfbad2a191de45e07cfcff1978b318ba01a8d0a0a19ee2e2" }, { "lang": "zh-CN", "path": "courses/hands-on-with-github-copilot/lessons/L01_cn.md", "title": "第 1 课:在 VS Code 里装好 Copilot、装上 FlyPython Skill、让 Agent 取回课程", "summary": "让 GitHub Copilot 在 VS Code 里以 Agent 角色、Manual permissions 跑起来,(可选)装好 FlyPython Skill,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。", - "sha256": "6fc5c71d4c2b3c0953be4e4972e51a407524198a6d1b9c18536b0f6bd5d740b3" + "sha256": "b2df5d3cbcf56b0e1852b89117fc0d4173b27312dbb61294aaf2d13257d6bb5a" } ] }, @@ -1315,7 +1315,7 @@ { "id": "course-kimi-code-l01", "type": "course", - "content_version": 3, + "content_version": 4, "status": "reviewed", "reviewed_on": "2026-11-04", "locales": [ @@ -1324,14 +1324,14 @@ "path": "courses/hands-on-with-kimi-code/lessons/L01.md", "title": "Lesson 1: Set up Kimi Code, install the FlyPython Skill, fetch the course", "summary": "Get Kimi Code running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective.", - "sha256": "d31b6b75d7087ef3afbc7b12b89c1637f72b24182f7de8d49c8fc300ed6fd361" + "sha256": "23b85c7aaf80babb1f5bfb17a0af4bf417a6900235159db8ad5e504fec51281a" }, { "lang": "zh-CN", "path": "courses/hands-on-with-kimi-code/lessons/L01_cn.md", "title": "第 1 课:装好 Kimi Code、装上 FlyPython Skill、让 Agent 取回课程", "summary": "先把 Kimi Code 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。", - "sha256": "f4305ff5ae8d8cc89b0b0fb3672eaf402cf4273a7aad160e3e85066f5475a369" + "sha256": "0ba99ed27c0b360804bc0d4766d4a0cfc7e014f067074afebe2295cca8edd75e" } ] }, @@ -2005,7 +2005,7 @@ { "id": "course-zcode-l01", "type": "course", - "content_version": 3, + "content_version": 4, "status": "reviewed", "reviewed_on": "2026-11-04", "locales": [ @@ -2014,14 +2014,14 @@ "path": "courses/hands-on-with-zcode/lessons/L01.md", "title": "Lesson 1: Set up ZCode, install the FlyPython Skill, fetch the course", "summary": "Get ZCode running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective.", - "sha256": "30af915aa95d866709d3cb21526d8d402d9b1e8f57659b1841a0e3665c038f55" + "sha256": "f650e6593f5322a117dd3a14294f4293e667a04ed98982b744c95b54311e6b2b" }, { "lang": "zh-CN", "path": "courses/hands-on-with-zcode/lessons/L01_cn.md", "title": "第 1 课:装好 ZCode、装上 FlyPython Skill、让 Agent 取回课程", "summary": "先把 ZCode 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。", - "sha256": "db097d7a74a989b4781c1272758d10f55e9532bb3971e7a037a58084dc57605d" + "sha256": "0162553953d5e4622737daa475a4d465a1c5d83747299dee37e34b79c7322212" } ] }, diff --git a/courses/hands-on-python-with-claude-code/REVIEW.md b/courses/hands-on-python-with-claude-code/REVIEW.md index d1a63b5..f9ef8a9 100644 --- a/courses/hands-on-python-with-claude-code/REVIEW.md +++ b/courses/hands-on-python-with-claude-code/REVIEW.md @@ -37,6 +37,19 @@ same official documentation as the course; **not yet exercised inside the tool** — the pending live run-through below still stands. +## 2026-11-04 — claim-instruction accuracy fix (mechanical re-verify) + +- Lesson and hint text corrected to match the shipped verifier: the default + `python verify.py` prints no claim code for reflection checkpoints + (l01/l02/l05); the code appears only after the explicit + `--attest ID` flag for a completed reflection. L02/L05 checkpoints now + name the command; L01 hint 3 no longer promises a code from the default + run; evidence sections keep both command transcripts. +- Verification: clean-copy runs of `verify.py check --json` with partial + and full `--attest` sets reproduced the documented states; repository + gates (`make check`) green at this change. No live Claude Code 2.x agent run — + the pending live run-through below still stands. + ## Deviation log ### 2026-09-13 — agent solvability run (challenge mode, not taught mode) diff --git a/courses/hands-on-python-with-claude-code/lessons/L01.md b/courses/hands-on-python-with-claude-code/lessons/L01.md index 09100de..221d190 100644 --- a/courses/hands-on-python-with-claude-code/lessons/L01.md +++ b/courses/hands-on-python-with-claude-code/lessons/L01.md @@ -4,7 +4,7 @@ type: course title: "Lesson 1: Set up Claude Code, install the FlyPython Skill, fetch the course" summary: "Get Claude Code running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective." lang: en-US -content_version: 3 +content_version: 4 status: reviewed reviewed_on: 2026-11-04 hints: @@ -13,7 +13,7 @@ hints: - title: "Read the failure names as a contract" body: "Each failing test name maps to one line in `TASK.md` — e.g. `test_non_numeric_amount_is_invalid` is the contract's 'a non-numeric numeric_field value'. If a name maps to no contract line, that drift is worth noticing." - title: "When you are done" - body: "You can say out loud which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py` then shows this checkpoint's claim code." + body: "You can say out loud which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py --attest l01` then shows this checkpoint's claim code." --- # Lesson 1: Set up Claude Code, install the FlyPython Skill, fetch the course @@ -158,5 +158,5 @@ reflection checkpoints you have actually completed. Keep both command outputs. ## Expected evidence -The transcript of the default command, and your three answers. Keep them; Lesson 4 +Transcripts of both the default command and the attest command, plus your three answers. Keep them; Lesson 4 will ask for them again. diff --git a/courses/hands-on-python-with-claude-code/lessons/L01_cn.md b/courses/hands-on-python-with-claude-code/lessons/L01_cn.md index 6fe66e2..933b57d 100644 --- a/courses/hands-on-python-with-claude-code/lessons/L01_cn.md +++ b/courses/hands-on-python-with-claude-code/lessons/L01_cn.md @@ -4,7 +4,7 @@ type: course title: "第 1 课:装好 Claude Code、装上 FlyPython Skill、让 Agent 取回课程" summary: "先把 Claude Code 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。" lang: zh-CN -content_version: 3 +content_version: 4 status: reviewed reviewed_on: 2026-11-04 hints: @@ -141,5 +141,5 @@ python verify.py --attest l01 ## 预期证据 -两条命令的输出记录,加上你对三个问题的回答。保存好,第 4 课会再次 +默认命令与确认命令两条输出记录,加上你对三个问题的回答。保存好,第 4 课会再次 用到。 diff --git a/courses/hands-on-with-cursor/REVIEW.md b/courses/hands-on-with-cursor/REVIEW.md index 256a26c..54f67e9 100644 --- a/courses/hands-on-with-cursor/REVIEW.md +++ b/courses/hands-on-with-cursor/REVIEW.md @@ -39,6 +39,19 @@ - Whether a free Cursor plan's Agent quota lasts the whole course is unverified. +## 2026-11-04 — claim-instruction accuracy fix (mechanical re-verify) + +- Lesson and hint text corrected to match the shipped verifier: the default + `python verify.py` prints no claim code for reflection checkpoints + (l01/l02/l05); the code appears only after the explicit + `--attest ID` flag for a completed reflection. L02/L05 checkpoints now + name the command; L01 hint 3 no longer promises a code from the default + run; evidence sections keep both command transcripts. +- Verification: clean-copy runs of `verify.py check --json` with partial + and full `--attest` sets reproduced the documented states; repository + gates (`make check`) green at this change. No live Cursor agent run — + the pending live run-through below still stands. + ## Deviation log (none yet — no live run has happened) diff --git a/courses/hands-on-with-cursor/lessons/L01.md b/courses/hands-on-with-cursor/lessons/L01.md index 61e7c40..d7a4805 100644 --- a/courses/hands-on-with-cursor/lessons/L01.md +++ b/courses/hands-on-with-cursor/lessons/L01.md @@ -4,7 +4,7 @@ type: course title: "Lesson 1: Set up Cursor, install the FlyPython Skill, fetch the course" summary: "Get Cursor running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective." lang: en-US -content_version: 3 +content_version: 4 status: reviewed reviewed_on: 2026-11-04 hints: @@ -13,7 +13,7 @@ hints: - title: "Ask vs Agent" body: "Ask mode answers questions without touching files; Agent mode reads, edits, and runs commands. This lesson only needs the Agent to read — tell it not to change anything." - title: "When you are done" - body: "You can say which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py` then shows this checkpoint's claim code." + body: "You can say which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py --attest l01` then shows this checkpoint's claim code." --- # Lesson 1: Set up Cursor, install the FlyPython Skill, fetch the course @@ -158,5 +158,5 @@ reflection checkpoints you have actually completed. Keep both command outputs. ## Expected evidence -The transcript of the default command, and your three answers. Keep them; +Transcripts of both the default command and the attest command, plus your three answers. Keep them; Lesson 4 will ask for them again. diff --git a/courses/hands-on-with-cursor/lessons/L01_cn.md b/courses/hands-on-with-cursor/lessons/L01_cn.md index 19c485b..004e054 100644 --- a/courses/hands-on-with-cursor/lessons/L01_cn.md +++ b/courses/hands-on-with-cursor/lessons/L01_cn.md @@ -4,7 +4,7 @@ type: course title: "第 1 课:装好 Cursor、装上 FlyPython Skill、让 Agent 取回课程" summary: "先把 Cursor 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。" lang: zh-CN -content_version: 3 +content_version: 4 status: reviewed reviewed_on: 2026-11-04 hints: @@ -13,7 +13,7 @@ hints: - title: "Ask 与 Agent 的区别" body: "Ask 模式只回答问题、不碰文件;Agent 模式会读文件、改代码、跑命令。本课只需要 Agent 读——明确告诉它不要改任何文件。" - title: "完成的标志" - body: "你能说出套件证明了哪九种行为、为什么 starter 伪造不出来。`python verify.py` 随即显示本检查点的认领码。" + body: "你能说出套件证明了哪九种行为、为什么 starter 伪造不出来。`python verify.py --attest l01` 随即显示本检查点的认领码。" --- # 第 1 课:装好 Cursor、装上 FlyPython Skill、让 Agent 取回课程 @@ -143,5 +143,5 @@ python verify.py --attest l01 ## 预期证据 -默认命令的完整输出记录,加你的三个答案。保留好——第 4 课还会 +默认命令与确认命令两条输出记录,加你的三个答案。保留好——第 4 课还会 用到。 diff --git a/courses/hands-on-with-deepseek-harness/REVIEW.md b/courses/hands-on-with-deepseek-harness/REVIEW.md index 35ed464..15b65b2 100644 --- a/courses/hands-on-with-deepseek-harness/REVIEW.md +++ b/courses/hands-on-with-deepseek-harness/REVIEW.md @@ -40,6 +40,19 @@ deviations from `COURSE.md` here — including the exact `cordis.yml` used and the model plugin configured. +## 2026-11-04 — claim-instruction accuracy fix (mechanical re-verify) + +- Lesson and hint text corrected to match the shipped verifier: the default + `python verify.py` prints no claim code for reflection checkpoints + (l01/l02/l05); the code appears only after the explicit + `--attest ID` flag for a completed reflection. L02/L05 checkpoints now + name the command; L01 hint 3 no longer promises a code from the default + run; evidence sections keep both command transcripts. +- Verification: clean-copy runs of `verify.py check --json` with partial + and full `--attest` sets reproduced the documented states; repository + gates (`make check`) green at this change. No live DeepSeek Harness agent run — + the pending live run-through below still stands. + ## Deviation log (none yet — no live run has happened) diff --git a/courses/hands-on-with-deepseek-harness/lessons/L01.md b/courses/hands-on-with-deepseek-harness/lessons/L01.md index 5b9a152..5055d01 100644 --- a/courses/hands-on-with-deepseek-harness/lessons/L01.md +++ b/courses/hands-on-with-deepseek-harness/lessons/L01.md @@ -4,7 +4,7 @@ type: course title: "Lesson 1: Set up DeepSeek Harness, install the FlyPython Skill, fetch the course" summary: "Get DeepSeek Harness running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective." lang: en-US -content_version: 3 +content_version: 4 status: reviewed reviewed_on: 2026-11-04 hints: @@ -15,7 +15,7 @@ hints: - title: "The trajectory is your record" body: "Every step lands in an append-only session/trajectory log you can inspect later. Reading it back is how you verify what the agent actually did — not what it said it did." - title: "When you are done" - body: "You can say which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py` then shows this checkpoint's claim code." + body: "You can say which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py --attest l01` then shows this checkpoint's claim code." --- # Lesson 1: Set up DeepSeek Harness, install the FlyPython Skill, fetch the course diff --git a/courses/hands-on-with-deepseek-harness/lessons/L01_cn.md b/courses/hands-on-with-deepseek-harness/lessons/L01_cn.md index c54effb..e38a9bd 100644 --- a/courses/hands-on-with-deepseek-harness/lessons/L01_cn.md +++ b/courses/hands-on-with-deepseek-harness/lessons/L01_cn.md @@ -4,7 +4,7 @@ type: course title: "第 1 课:装好 DeepSeek Harness、装上 FlyPython Skill、让 Agent 取回课程" summary: "先把 DeepSeek Harness 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。" lang: zh-CN -content_version: 3 +content_version: 4 status: reviewed reviewed_on: 2026-11-04 hints: @@ -15,7 +15,7 @@ hints: - title: "轨迹就是你的记录" body: "每一步都落进可事后检查的只增会话/轨迹日志。读回轨迹才能验证 Agent 实际做了什么——而不是它声称做了什么。" - title: "完成的标志" - body: "你能说出套件证明了哪九种行为、为什么 starter 伪造不出来。`python verify.py` 随即显示本检查点的认领码。" + body: "你能说出套件证明了哪九种行为、为什么 starter 伪造不出来。`python verify.py --attest l01` 随即显示本检查点的认领码。" --- # 第 1 课:装好 DeepSeek Harness、装上 FlyPython Skill、让 Agent 取回课程 @@ -148,5 +148,5 @@ python verify.py --attest l01 ## 预期证据 -默认命令的完整输出记录、你找到的轨迹步骤、加你的三个答案。保留好 +默认命令与确认命令两条输出记录、你找到的轨迹步骤、加你的三个答案。保留好 ——第 4 课还会用到。 diff --git a/courses/hands-on-with-github-copilot/REVIEW.md b/courses/hands-on-with-github-copilot/REVIEW.md index aa7ddae..8a89597 100644 --- a/courses/hands-on-with-github-copilot/REVIEW.md +++ b/courses/hands-on-with-github-copilot/REVIEW.md @@ -54,6 +54,19 @@ - Whether the Copilot Free plan's monthly chat request allowance lasts the whole course is unverified. +## 2026-11-04 — claim-instruction accuracy fix (mechanical re-verify) + +- Lesson and hint text corrected to match the shipped verifier: the default + `python verify.py` prints no claim code for reflection checkpoints + (l01/l02/l05); the code appears only after the explicit + `--attest ID` flag for a completed reflection. L02/L05 checkpoints now + name the command; L01 hint 3 no longer promises a code from the default + run; evidence sections keep both command transcripts. +- Verification: clean-copy runs of `verify.py check --json` with partial + and full `--attest` sets reproduced the documented states; repository + gates (`make check`) green at this change. No live GitHub Copilot agent run — + the pending live run-through below still stands. + ## Deviation log (none yet — no live run has happened) diff --git a/courses/hands-on-with-github-copilot/lessons/L01.md b/courses/hands-on-with-github-copilot/lessons/L01.md index 2f9d6f3..c75636a 100644 --- a/courses/hands-on-with-github-copilot/lessons/L01.md +++ b/courses/hands-on-with-github-copilot/lessons/L01.md @@ -4,9 +4,9 @@ type: course title: "Lesson 1: Set up Copilot in VS Code, install the FlyPython Skill, fetch the course" summary: "Get GitHub Copilot running in VS Code with the Agent role and Manual permissions, optionally install the FlyPython Skill, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective." lang: en-US -content_version: 1 +content_version: 2 status: reviewed -reviewed_on: 2026-10-11 +reviewed_on: 2026-11-04 hints: - title: "What this checkpoint tests" body: "That you can reproduce the failure before fixing it: `python verify.py` must show l03 and l04 as `[open]` (`starter --expect-failure` prints the named tests). In Copilot, the Agent role does the work — the command is still the evidence." @@ -162,5 +162,6 @@ Once you can answer, claim the checkpoint with ## Expected evidence -The transcript of the default command, and your three answers. Keep them; +Transcripts of both the default command and the attest command, plus your +three answers. Keep them; Lesson 4 will ask for them again. diff --git a/courses/hands-on-with-github-copilot/lessons/L01_cn.md b/courses/hands-on-with-github-copilot/lessons/L01_cn.md index 6b8e23a..58536a3 100644 --- a/courses/hands-on-with-github-copilot/lessons/L01_cn.md +++ b/courses/hands-on-with-github-copilot/lessons/L01_cn.md @@ -4,9 +4,9 @@ type: course title: "第 1 课:在 VS Code 里装好 Copilot、装上 FlyPython Skill、让 Agent 取回课程" summary: "让 GitHub Copilot 在 VS Code 里以 Agent 角色、Manual permissions 跑起来,(可选)装好 FlyPython Skill,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。" lang: zh-CN -content_version: 1 +content_version: 2 status: reviewed -reviewed_on: 2026-10-11 +reviewed_on: 2026-11-04 hints: - title: "本检查点考察什么" body: "先复现失败再动手修:`python verify.py` 必须把 l03 和 l04 显示为 `[open]`(`starter --expect-failure` 会打印点名测试)。在 Copilot 里,Agent 角色负责干活——但命令仍然是证据。" @@ -144,5 +144,5 @@ Agent 确认,而不是让它修。 ## 预期证据 -默认命令的完整输出记录,加你的三个答案。保留好——第 4 课还会 +默认命令与确认命令两条输出记录,加你的三个答案。保留好——第 4 课还会 用到。 diff --git a/courses/hands-on-with-kimi-code/REVIEW.md b/courses/hands-on-with-kimi-code/REVIEW.md index e00c929..05355b6 100644 --- a/courses/hands-on-with-kimi-code/REVIEW.md +++ b/courses/hands-on-with-kimi-code/REVIEW.md @@ -42,6 +42,19 @@ actually invoked in the current UI. - Whether a free-tier Kimi account lasts the whole course is unverified. +## 2026-11-04 — claim-instruction accuracy fix (mechanical re-verify) + +- Lesson and hint text corrected to match the shipped verifier: the default + `python verify.py` prints no claim code for reflection checkpoints + (l01/l02/l05); the code appears only after the explicit + `--attest ID` flag for a completed reflection. L02/L05 checkpoints now + name the command; L01 hint 3 no longer promises a code from the default + run; evidence sections keep both command transcripts. +- Verification: clean-copy runs of `verify.py check --json` with partial + and full `--attest` sets reproduced the documented states; repository + gates (`make check`) green at this change. No live Kimi Code agent run — + the pending live run-through below still stands. + ## Deviation log (none yet — no live run has happened) diff --git a/courses/hands-on-with-kimi-code/lessons/L01.md b/courses/hands-on-with-kimi-code/lessons/L01.md index a5c074f..30e7540 100644 --- a/courses/hands-on-with-kimi-code/lessons/L01.md +++ b/courses/hands-on-with-kimi-code/lessons/L01.md @@ -4,7 +4,7 @@ type: course title: "Lesson 1: Set up Kimi Code, install the FlyPython Skill, fetch the course" summary: "Get Kimi Code running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective." lang: en-US -content_version: 3 +content_version: 4 status: reviewed reviewed_on: 2026-11-04 hints: @@ -13,7 +13,7 @@ hints: - title: "Lanes, not one blob" body: "Kimi Code ships built-in subagents: `explore` is read-only, `plan` plans without write or shell tools, `coder` can read, write, and run commands. Read-only work belongs in the read-only lane — it cannot break anything." - title: "When you are done" - body: "You can say which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py` then shows this checkpoint's claim code." + body: "You can say which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py --attest l01` then shows this checkpoint's claim code." --- # Lesson 1: Set up Kimi Code, install the FlyPython Skill, fetch the course @@ -159,5 +159,5 @@ reflection checkpoints you have actually completed. Keep both command outputs. ## Expected evidence -The transcript of the default command, and your three answers. Keep them; +Transcripts of both the default command and the attest command, plus your three answers. Keep them; Lesson 4 will ask for them again. diff --git a/courses/hands-on-with-kimi-code/lessons/L01_cn.md b/courses/hands-on-with-kimi-code/lessons/L01_cn.md index 99af340..55dd008 100644 --- a/courses/hands-on-with-kimi-code/lessons/L01_cn.md +++ b/courses/hands-on-with-kimi-code/lessons/L01_cn.md @@ -4,7 +4,7 @@ type: course title: "第 1 课:装好 Kimi Code、装上 FlyPython Skill、让 Agent 取回课程" summary: "先把 Kimi Code 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。" lang: zh-CN -content_version: 3 +content_version: 4 status: reviewed reviewed_on: 2026-11-04 hints: @@ -13,7 +13,7 @@ hints: - title: "分道,不是一坨" body: "Kimi Code 自带内置子代理:`explore` 只读、`plan` 没有写和 shell 工具、`coder` 能读写跑命令。只读的活就放只读道——它弄不坏任何东西。" - title: "完成的标志" - body: "你能说出套件证明了哪九种行为、为什么 starter 伪造不出来。`python verify.py` 随即显示本检查点的认领码。" + body: "你能说出套件证明了哪九种行为、为什么 starter 伪造不出来。`python verify.py --attest l01` 随即显示本检查点的认领码。" --- # 第 1 课:装好 Kimi Code、装上 FlyPython Skill、让 Agent 取回课程 @@ -141,5 +141,5 @@ python verify.py --attest l01 ## 预期证据 -默认命令的完整输出记录,加你的三个答案。保留好——第 4 课还会 +默认命令与确认命令两条输出记录,加你的三个答案。保留好——第 4 课还会 用到。 diff --git a/courses/hands-on-with-openai-codex/REVIEW.md b/courses/hands-on-with-openai-codex/REVIEW.md index 13ad8f9..5080d95 100644 --- a/courses/hands-on-with-openai-codex/REVIEW.md +++ b/courses/hands-on-with-openai-codex/REVIEW.md @@ -51,6 +51,19 @@ same official documentation as the course; **not yet exercised inside the tool** — the pending live run-through below still stands. +## 2026-11-04 — claim-instruction accuracy fix (mechanical re-verify) + +- Lesson and hint text corrected to match the shipped verifier: the default + `python verify.py` prints no claim code for reflection checkpoints + (l01/l02/l05); the code appears only after the explicit + `--attest ID` flag for a completed reflection. L02/L05 checkpoints now + name the command; L01 hint 3 no longer promises a code from the default + run; evidence sections keep both command transcripts. +- Verification: clean-copy runs of `verify.py check --json` with partial + and full `--attest` sets reproduced the documented states; repository + gates (`make check`) green at this change. No live OpenAI Codex app agent run — + the pending live run-through below still stands. + ## Deviation log ### 2026-09-13 — agent solvability run (challenge mode, not taught mode) diff --git a/courses/hands-on-with-openai-codex/lessons/L01.md b/courses/hands-on-with-openai-codex/lessons/L01.md index 55769a9..3676ee9 100644 --- a/courses/hands-on-with-openai-codex/lessons/L01.md +++ b/courses/hands-on-with-openai-codex/lessons/L01.md @@ -4,7 +4,7 @@ type: course title: "Lesson 1: Set up the Codex app, install the FlyPython Skill, fetch the course" summary: "Get the Codex app running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective." lang: en-US -content_version: 4 +content_version: 5 status: reviewed reviewed_on: 2026-11-04 hints: @@ -13,7 +13,7 @@ hints: - title: "Threads are tasks, not chats" body: "A Codex thread is one bounded job: your prompt plus the agent's tool calls and diffs. Keep this thread to 'reproduce and explain' — the fix belongs to lesson 3, in its own thread." - title: "When you are done" - body: "You can say out loud which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py` then shows this checkpoint's claim code." + body: "You can say out loud which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py --attest l01` then shows this checkpoint's claim code." --- # Lesson 1: Set up the Codex app, install the FlyPython Skill, fetch the course @@ -159,5 +159,5 @@ reflection checkpoints you have actually completed. Keep both command outputs. ## Expected evidence -The transcript of the default command, and your three answers. Keep them; Lesson 4 +Transcripts of both the default command and the attest command, plus your three answers. Keep them; Lesson 4 will ask for them again. diff --git a/courses/hands-on-with-openai-codex/lessons/L01_cn.md b/courses/hands-on-with-openai-codex/lessons/L01_cn.md index 874d4fe..e6280a1 100644 --- a/courses/hands-on-with-openai-codex/lessons/L01_cn.md +++ b/courses/hands-on-with-openai-codex/lessons/L01_cn.md @@ -4,7 +4,7 @@ type: course title: "第 1 课:装好 the Codex app、装上 FlyPython Skill、让 Agent 取回课程" summary: "先把 the Codex app 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。" lang: zh-CN -content_version: 4 +content_version: 5 status: reviewed reviewed_on: 2026-11-04 hints: @@ -13,7 +13,7 @@ hints: - title: "线程是任务,不是聊天" body: "Codex 线程是一个有边界的任务:你的提示加 Agent 的工具调用和 diff。这个线程只做「复现并解释」——修复属于第 3 课,开新线程做。" - title: "完成的标志" - body: "你能说出套件证明了哪九种行为、为什么 starter 伪造不出来。`python verify.py` 随即显示本检查点的认领码。" + body: "你能说出套件证明了哪九种行为、为什么 starter 伪造不出来。`python verify.py --attest l01` 随即显示本检查点的认领码。" --- # 第 1 课:装好 the Codex app、装上 FlyPython Skill、让 Agent 取回课程 @@ -140,4 +140,4 @@ python verify.py --attest l01 ## 预期证据 -默认命令的完整输出记录,加你的三个答案。保留好——第 4 课还会用到。 +默认命令与确认命令两条输出记录,加你的三个答案。保留好——第 4 课还会用到。 diff --git a/courses/hands-on-with-zcode/REVIEW.md b/courses/hands-on-with-zcode/REVIEW.md index e171f0d..a82e4b2 100644 --- a/courses/hands-on-with-zcode/REVIEW.md +++ b/courses/hands-on-with-zcode/REVIEW.md @@ -41,6 +41,19 @@ lesson checkpoints in practice. - Whether the free tier lasts the whole course is unverified. +## 2026-11-04 — claim-instruction accuracy fix (mechanical re-verify) + +- Lesson and hint text corrected to match the shipped verifier: the default + `python verify.py` prints no claim code for reflection checkpoints + (l01/l02/l05); the code appears only after the explicit + `--attest ID` flag for a completed reflection. L02/L05 checkpoints now + name the command; L01 hint 3 no longer promises a code from the default + run; evidence sections keep both command transcripts. +- Verification: clean-copy runs of `verify.py check --json` with partial + and full `--attest` sets reproduced the documented states; repository + gates (`make check`) green at this change. No live ZCode agent run — + the pending live run-through below still stands. + ## Deviation log (none yet — no live run has happened) diff --git a/courses/hands-on-with-zcode/lessons/L01.md b/courses/hands-on-with-zcode/lessons/L01.md index d5baaee..07adbda 100644 --- a/courses/hands-on-with-zcode/lessons/L01.md +++ b/courses/hands-on-with-zcode/lessons/L01.md @@ -4,7 +4,7 @@ type: course title: "Lesson 1: Set up ZCode, install the FlyPython Skill, fetch the course" summary: "Get ZCode running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective." lang: en-US -content_version: 3 +content_version: 4 status: reviewed reviewed_on: 2026-11-04 hints: @@ -13,7 +13,7 @@ hints: - title: "A workspace, not a chat" body: "ZCode is a desktop-native workspace: files, tasks, planning, execution, verification, and Git state in one place. Use file references to point the agent at exact files instead of describing them." - title: "When you are done" - body: "You can say which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py` then shows this checkpoint's claim code." + body: "You can say which nine behaviors the suite proves and why the starter cannot fake them. `python verify.py --attest l01` then shows this checkpoint's claim code." --- # Lesson 1: Set up ZCode, install the FlyPython Skill, fetch the course @@ -158,5 +158,5 @@ reflection checkpoints you have actually completed. Keep both command outputs. ## Expected evidence -The transcript of the default command, and your three answers. Keep them; +Transcripts of both the default command and the attest command, plus your three answers. Keep them; Lesson 4 will ask for them again. diff --git a/courses/hands-on-with-zcode/lessons/L01_cn.md b/courses/hands-on-with-zcode/lessons/L01_cn.md index 27cca0b..b956c8d 100644 --- a/courses/hands-on-with-zcode/lessons/L01_cn.md +++ b/courses/hands-on-with-zcode/lessons/L01_cn.md @@ -4,7 +4,7 @@ type: course title: "第 1 课:装好 ZCode、装上 FlyPython Skill、让 Agent 取回课程" summary: "先把 ZCode 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。" lang: zh-CN -content_version: 3 +content_version: 4 status: reviewed reviewed_on: 2026-11-04 hints: @@ -13,7 +13,7 @@ hints: - title: "工作区,不是聊天框" body: "ZCode 是桌面原生工作区:文件、任务、规划、执行、验证和 Git 状态同在一处。用文件引用把 Agent 精确指到文件,不要用文字描述。" - title: "完成的标志" - body: "你能说出套件证明了哪九种行为、为什么 starter 伪造不出来。`python verify.py` 随即显示本检查点的认领码。" + body: "你能说出套件证明了哪九种行为、为什么 starter 伪造不出来。`python verify.py --attest l01` 随即显示本检查点的认领码。" --- # 第 1 课:装好 ZCode、装上 FlyPython Skill、让 Agent 取回课程 @@ -142,5 +142,5 @@ python verify.py --attest l01 ## 预期证据 -默认命令的完整输出记录,加你的三个答案。保留好——第 4 课还会 +默认命令与确认命令两条输出记录,加你的三个答案。保留好——第 4 课还会 用到。