Complete lesson text and action cards
Source-owned text for offline reading and retrieval. Command success still requires actual local evidence.
Separate reported facts from unknowns
Read the linked Alex Patrascu thread archive and source review. Record his reported workflow: Claude Opus 5.5, 8 h 21 min, 47 min human voice work, 7 h 34 min autonomous; 10,485 Higgsfield credits for 106 generations, 96 Seedance takes and 77 used. His about-50,000-credit ceiling is not an instruction to spend. Before video QC, open https://ffmpeg.org/download.html. Windows: follow its Windows-build link, extract into your own tools folder, add the bin directory containing ffmpeg.exe and ffprobe.exe to your user PATH, then open a new terminal. macOS: use its macOS binary link and follow that distributor’s installation instructions. Linux: use your distribution’s package link. Verify ffmpeg -version and ffprobe -version in the same terminal before continuing. A missing command means PATH or installation still needs repair; do not claim QC success.
Expected: The source note distinguishes reported numbers, the locally measured film and unknown harness/provider-control details.
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
Lock the message and six timed stages
Edit production-bible.md for an original 60-second explainer. Include locked title/message, fictional host, wardrobe, voice in words, film look, six timed stages, research rules, sound/edit rules, budget ceiling, plan-first instruction and deliverables.
Expected: The brief has all ten sections and each stage has a start, event and end state.
Write voice and shot prompts
Write a voice description in words: register, accent, pace, articulation and behavior. Fill shot-template.md for one shot, restating face/voice attachment roles, wardrobe/look, eyes to lens and no visible crew/camera. Use a fictional presenter; do not imitate a real person without consent.
Expected: The prompt names actual reference attachment roles and consistent presenter rules; the voice is described in words.
Source every on-screen number
Replace the sample claims.csv with your own claim rows. Add publisher, URL, checked date, exact supporting evidence, uncertainty and approved status. Reject unsupported expert quotes or generated imagery presented as archival evidence.
Expected: Every number planned for the screen maps to a reviewed claim ID and source URL.
Calculate a retake reserve
Run budget.py with a base 1000 credits, 22% share of total for retakes and a 1500 ceiling. Compare base/(1-share) with base*1.22; the share-of-total wording changes the calculation. Record actual provider prices only if you later choose paid generation. Optional currency estimate: add --rate 0.10 --currency USD only as a fictional arithmetic example (128.21 USD total, 28.21 USD reserve). For a real estimate replace 0.10 with your dated observed currency-per-credit price. No provider tier is assumed.
Expected: BUDGET PASS reports total 1282.05 and retake reserve 282.05 for this planning example.
windows
python budget.py --base 1000 --retake-share 0.22 --ceiling 1500
macos
python3 budget.py --base 1000 --retake-share 0.22 --ceiling 1500
linux
python3 budget.py --base 1000 --retake-share 0.22 --ceiling 1500
Test pause trimming and plan J-cuts
Run pause_rules.py. In your shot plan mark pauses after ellipses (>0.95 → 0.72s), sentence ends (>0.78 → 0.48s) and elsewhere (>0.64 → 0.34s). Place dialogue audio 0.34s before picture changes and cutaway sound 0.3s before its picture. Hide jump cuts with meaningful graphics/cutaways/punch-ins.
Expected: PAUSE PASS confirms all three rules and preserves a short pause; the shot plan includes J-cut and cover choices.
windows
python pause_rules.py
macos
python3 pause_rules.py
linux
python3 pause_rules.py
Create a diagram and mix sheet
Sketch one explanatory diagram as editable SVG or slide shapes, referencing a claim ID. Write the source mix targets: dialogue -20 LUFS; music -35 under speech, -25 between lines, -23 under takeaway; featured SFX -26; ambience -32; master -15 LUFS, ceiling -1.5 dBTP. Do not confuse LUFS with a fixed fader gain.
Expected: One editable diagram is sourced/labeled and the mix sheet distinguishes track loudness from the master target.
Create and measure the practice clip
Install FFmpeg from its official distribution/package manager if needed and confirm ffmpeg -version. Run the card to make a real moving test-pattern clip with a sine-wave audio track. Then run doc_qc.py. This is a measurement exercise, not generated documentary footage.
Expected: before-before-qc.json contains measured input_lufs, true_peak_dbtp and silence/freeze events from the real clip.
windows
ffmpeg -hide_banner -f lavfi -i testsrc2=size=640x360:rate=25 -f lavfi -i sine=frequency=440:sample_rate=48000 -t 5 -c:v libx264 -c:a aac practice-take.mp4
python doc_qc.py practice-take.mp4 --out before-qc.json
macos
ffmpeg -hide_banner -f lavfi -i testsrc2=size=640x360:rate=25 -f lavfi -i sine=frequency=440:sample_rate=48000 -t 5 -c:v libx264 -c:a aac practice-take.mp4
python3 doc_qc.py practice-take.mp4 --out before-qc.json
linux
ffmpeg -hide_banner -f lavfi -i testsrc2=size=640x360:rate=25 -f lavfi -i sine=frequency=440:sample_rate=48000 -t 5 -c:v libx264 -c:a aac practice-take.mp4
python3 doc_qc.py practice-take.mp4 --out before-qc.json
Normalize, remeasure and review
Normalize the practice clip toward -15 LUFS with a -2 dBTP headroom target. Run QC on the output and open both clips. Also test a intentionally still/quiet clip if available and inspect flagged intervals; silence is not automatically wrong.
Expected: QC PASS reports a measured master within -16 to -14 LUFS and true peak <= -1.5 dBTP; human review explains any flags.
windows
ffmpeg -hide_banner -i practice-take.mp4 -af loudnorm=I=-15:TP=-2:LRA=11 -c:v copy -c:a aac practice-fixed.mp4
python doc_qc.py practice-fixed.mp4 --out after-qc.json
macos
ffmpeg -hide_banner -i practice-take.mp4 -af loudnorm=I=-15:TP=-2:LRA=11 -c:v copy -c:a aac practice-fixed.mp4
python3 doc_qc.py practice-fixed.mp4 --out after-qc.json
linux
ffmpeg -hide_banner -i practice-take.mp4 -af loudnorm=I=-15:TP=-2:LRA=11 -c:v copy -c:a aac practice-fixed.mp4
python3 doc_qc.py practice-fixed.mp4 --out after-qc.json
Request planning without spending
Give your signed-in agent the original brief, fact ledger, shot plan, budget calculation and QC evidence. Ask for a production plan and credit estimate only. Require face/word checks for any later real takes, disclosure of AI host/voice/locations and approval before generation. Do not submit paid jobs.
Expected: The agent returns a bounded plan/estimate, all numbers have sources, and the free QC before/after receipts are saved.
all
Read my production bible and source ledger. Return a shot plan, continuity/word/QC checklist and credit estimate with retake reserve. Do not call paid generation tools or spend credits. Identify missing evidence and wait for separate production approval.
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; inspect workspace_guard.py from the resource pack; it is a demonstration, not an installed CLI hook. Run a harmless directory listing, then a guard dry-run targeting the profile. Do not execute a destructive profile probe. If you use a hosted agent, do not assume a local shell hook protects its remote computer: use project-only tasks and reviewed actions, with backups. If no agent is used in this course, record the demonstration only. A hook is active only after a real tool-specific refusal test; otherwise record NOT INSTALLED with the reason.
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.
windows
python workspace_guard.py --self-test
python workspace_guard.py --target "$env:USERPROFILE"
macos
python3 workspace_guard.py --self-test
python3 workspace_guard.py --target "$HOME"
linux
python3 workspace_guard.py --self-test
python3 workspace_guard.py --target "$HOME"
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. On Windows, review the script, unblock only that downloaded file, then run it with the shown process-only RemoteSigned policy. Group Policy can still refuse it; report that limitation without changing machine policy.
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
# Read the extracted script before unblocking this single file.
Get-Content .\profile-backup.ps1
Unblock-File -LiteralPath .\profile-backup.ps1
powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File .\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