Complete lesson text and action cards
Source-owned text for offline reading and retrieval. Command success still requires actual local evidence.
Select one workflow to test
Pick one Build or app you own. Write the starting state, the exact learner outcome and the finish-line test. Do not open a prepared environment and call it a fresh install.
Expected: The test brief states starting state, outcome, environment and finish-line criteria.
Set up the practice folder
Download the resource ZIP at the top of this Build. Extract it into a new folder you own (for example C:\BBBPractice on Windows, or ~/bbb-practice on macOS/Linux). Open a terminal in the extracted folder. Run the version command for your platform. All subsequent commands assume this folder.
Expected: Python reports version 3.10 or newer and the terminal is in the extracted resource folder.
windows
python --version
Get-Location
Get-ChildItem
macos
python3 --version
pwd
ls
linux
python3 --version
pwd
ls
Create the coverage sheet
Write a table with every instruction/command, actual input, output/exit code, question asked of the coach, screenshot and pass/fail/unverified status. Include OS, architecture, versions and required account access.
Expected: Every step has a coverage row and the environment is recorded.
Run the untouched practice project
Run app.py and verify.py exactly as the instructions state. Ask the Build coach a real question. Save the output and note whether the answer helps you complete the action.
Expected: APP PASS total=10 and VERIFY PASS are in the coverage sheet with a useful or failed coach response.
windows
python app.py
python verify.py
macos
python3 app.py
python3 verify.py
linux
python3 app.py
python3 verify.py
Introduce a repeated-input defect
Copy broken_app.py over app.py inside this practice folder and run verify.py. Retain the exact assertion failure and the input [2,2]. Fill incident-template.md.
Expected: The coverage sheet shows repeated inputs fail before correction.
windows
Copy-Item broken_app.py app.py
python verify.py
macos
cp broken_app.py app.py
python3 verify.py
linux
cp broken_app.py app.py
python3 verify.py
Fix the smallest cause
Ask your agent to diagnose the failing case, repair app.py only, and explain why preserving repeated items matters. Update your own instruction if it hid a prerequisite. Run verify.py independently.
Expected: VERIFY PASS succeeds and the instruction includes the missing prerequisite or diagnostic you discovered.
windows
python verify.py
macos
python3 verify.py
linux
python3 verify.py
Test narrow screens and restart
Open the Build at a mobile-sized browser width. Copy a command, reload, resume the step, export evidence and test a missing input. Save screenshots and note any clipping, lost state, confusing progress or silent failure.
Expected: The coverage sheet records mobile behavior, persistence, export and one visible failure.
Write an honest release review
Summarize passed, failed and unverified checks by platform. Include the exact version/commit tested and the failure-before/fix-after evidence. Do not claim live account or macOS verification from mocks.
Expected: The report names coverage, defects, fixes, remaining limitations and the final VERIFY PASS receipt.
windows
python verify.py
macos
python3 verify.py
linux
python3 verify.py
Write a repeatable onboarding checklist
Fill in onboarding-checklist.md for your agent. Record AGENTS.md, the tool’s user settings and memory folder, the assigned workspace, permissions, guard location, backup schedule, and a final proof task. Keep the checklist in your project.
Expected: The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.
Demonstrate the variable-path limit safely
Run workspace_guard.py --self-test. Read the source: the target is resolved before deciding. The variable_target case points at the home folder but performs no filesystem operation. Compare this with a hook that sees only command text.
Expected: GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.
windows
python workspace_guard.py --self-test
macos
python3 workspace_guard.py --self-test
linux
python3 workspace_guard.py --self-test
Verify the actual protection in your tool
For CLI tools, open the hook/permissions screen and confirm the configured guard is active. Use your tool’s documented pre-command hook protocol; the BBB working reference is linked in Sources. Run a harmless directory listing, then a guard dry-run targeting the profile. Do not execute a destructive profile probe. Grok Bot has no proven local shell guard here: use project-only tasks and reviewed actions, with backups.
Expected: A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation.
Enable a real backup of memory and project files
Connect a second backup drive. Windows: configure System Protection as additional recovery and use a scheduled copy/File History that explicitly includes hidden agent folders. macOS: configure Time Machine and verify dot folders are included. Linux: use a home backup such as restic/Deja Dup; Timeshift omits /home by default. Download the copy-only profile backup script for your platform, inspect it, and adapt the folder list to your tool. Record the last successful scheduled run; protect backup access because it may contain credentials.
Expected: A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded.
windows
.\profile-backup.ps1 -Destination D:\Backups\llm-profiles
macos
bash profile-backup.sh /Volumes/YourBackup/llm-profiles
linux
bash profile-backup.sh /media/YourBackup/llm-profiles
Practice a hash-verified restore
Run restore_drill.py with a separate backup directory. The script creates a new proof file, copies it, restores a second copy, and compares SHA256 hashes. Then restore one non-secret file from your actual agent memory backup into a separate scratch directory and open it; do not overwrite the live profile.
Expected: RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.
windows
python restore_drill.py --backup-root D:\Backups\bbb-practice --work-root practice
macos
python3 restore_drill.py --backup-root /Volumes/YourBackup/bbb-practice --work-root practice
linux
python3 restore_drill.py --backup-root /media/YourBackup/bbb-practice --work-root practice