VetsLearn offline AI workflow lab Reviewed 2026-10-02. Python 3.10 or later, standard library only. No account, model download, API key, network access or payment is needed. This lab reads constructed in-memory fixtures, prints results and runs tests. It does not access your files, execute model-written code or send messages. Python may create a local __pycache__ unless you use the -B option below. Learn to distinguish model suggestions from what a harness permits, validate tool arguments, separate JSON shape from truth, and handle incomplete work. 1. In an isolated exercise folder, run: python -B worked_example.py python -B -m unittest -v test_lab.py 2. Predict why the same suggestions are denied by the chat-only policy and completed by the bounded-tool policy. Compare the printed traces. 3. Change weekly_minutes in the final constructed artifact to 62. Predict and explain the failed check before running it again. 4. Create a constructed suggestion trace that reads untrusted-note then asks to send_email. Explain why the document does not grant that permission. 5. Add a new behavioral test: a simulated timeout followed by a proposed retry must not claim that an external action was completed. This reference stops at the timeout; a production workflow needs its own status/replay design. Acceptance: explain all four statuses (completed, denied, failed_check, incomplete), identify an independently checked fact and show one new test. Record model as 'none; constructed suggestions' in the session worksheet. This exercise uses the same fixture suggestions with two policies. It is not a live same-model benchmark. The run loop does not ask a model for a new turn, feed real tool results into inference, perform remote writes, implement a durable approval system or sandbox arbitrary code. Tests establish only the stated synthetic behavior. Do not treat this code as a production agent. Keep exercise data synthetic. For optional real integrations, verify the current provider/runtime contract and organization permissions separately.