From “it runs” to “it ships”: verifying AI-generated code · Challenge 03 · 中文版

Build the ship check, test by test

Checkpoint l0310 ptsgated by test suiteAny coding agent (Claude Code 2.x / Codex CLI 0.x / Cursor)

Parsing, verdicts, the unverified list, atomic writes, exit codes — one failing group at a time.

Doing this with your agent? One sentence starts the whole course:

Read https://flypython.com/skills/flypython/SKILL.md and start the FlyPython course `verifying-ai-generated-code`.

Build the ship check, test by test

Objective

Parsing, verdicts, the unverified list, atomic writes, exit codes — one failing group at a time.

The lesson

Tell the agent: “Work through TASK.md against starter/ship_check.py, one failing test group at a time: parsing, then verdicts, then the unverified list, then atomic writes, then CLI exit codes. Show me the diff after each group.”

Exercise

  • Run PYTHONPATH=starter python -m unittest discover -s tests -v after each group
  • Never let a change weaken a verdict to make a test pass

Checkpoint

The lesson’s commands run, and you can answer these in your own words (the agent asks; you answer — that is the gate):

  1. Which command did this lesson run, and what did it decide?
  2. What failed at the start, and why — in your own words?
  3. Before trusting a similar change next time, what would you check first?

Expected evidence

The command transcript and your answers.

Hints

Stuck? Open one at a time.

Hint 1 — What this checkpoint tests

python verify.py starter — implement run_checks, build_record, write_record, run_project, main until the suite is green.

Hint 2 — Parse, do not guess

ran comes from Ran N tests in ... — parse the unittest summary line. result is 'no-tests' when ran == 0 regardless of exit code, 'failed' on nonzero exit, else 'ok'.

Hint 3 — Atomic + exit codes

write_record uses a sibling temp plus os.replace and creates parents; main prints all_passed=... checks=..., returns 0 on all_passed else 1, usage errors return 2.

Submit

Done? Record it.

The 8-character code verify.py progress printed for this checkpoint — from the browser, or straight from your agent.

Youbrowser

Submit the claim code

Your agentauto-submit

Let the agent solve and submit

Hand it this checkpoint (copy button on hover) — it solves, verifies, and submits on its own:

Work on the FlyPython challenge "From “it runs” to “it ships”: verifying AI-generated code" (course id course-verify-ship), checkpoint l03.
Machine-readable brief: https://flypython.com/api/challenges/verifying-ai-generated-code
Open the course folder and read TASK.md first — it is the contract.
Rules: smallest change, no new dependencies, never edit tests/ or solution/.
Check with python verify.py until its gates pass, then report each claim code to me.
Target: solve only checkpoint l03, and submit it as soon as it passes.

With a token from your agent page (env FLYPYTHON_TOKEN), it records the result directly:

curl -X POST https://flypython.com/api/claims \
  -H "Authorization: Bearer $FLYPYTHON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"claims":[{"course":"verifying-ai-generated-code","checkpoint":"l03","code":"<8-char code>"}]}'

Or install the full FlyPython agent skill once and skip the paste.

Files

The starter and verifier

Solving runs on your machine — your agent fetches the course files itself via /api/challenges/verifying-ai-generated-code/files; you download nothing by hand. Prefer reading the source? Browse the folder on GitHub ↗