Complete lesson text and action cards
Source-owned text for offline reading and retrieval. Command success still requires actual local evidence.
Check the edition and supported OS
Open Microsoft’s current SQL Server downloads and edition documentation. Choose Express for a small free practice instance; confirm supported Windows version, CPU, RAM and disk requirements for that installer. Keep the existing live SQL instance unchanged. Record a distinct practice instance name.
Expected: The selected Express version, supported Windows host, requirements and practice instance name are recorded.
Run the official Express installer
On a disposable practice host, download the signed Microsoft Express installer. Choose a named instance such as BBBPRACTICE, save its exact instance name and complete the engine installation. Keep network access local; do not open firewall ports just to connect locally.
Expected: Setup reports success and the named SQL Server service is running.
windows
Get-Service | Where-Object { $_.Name -like "MSSQL*" } | Select-Object Name,Status
macos
# This course teaches a Windows Express service; use a prepared Windows practice VM.
linux
# This course teaches a Windows Express service; use a prepared Windows practice VM.
Open SSMS and connect locally
Install SQL Server Management Studio from Microsoft’s official download. Connect to localhost\BBBPRACTICE with your own authorized account on the practice host. For a self-signed local certificate, inspect the certificate/trust option only for this known local instance; do not disable certificate validation on remote servers.
Expected: SSMS connects to the exact practice instance and SELECT @@VERSION reports the chosen edition/version.
windows
# In an SSMS query window:
# SELECT @@VERSION AS version, SERVERPROPERTY('Edition') AS edition;
Run the session-local SQL exercise
Open practice.sql in the same SSMS connection and execute the whole file as one batch. The temporary table exists only in this session; it does not edit an application’s tables. Read the ordered results.
Expected: SQL PRACTICE PASS reports 2 rows, one completed; the result shows task 1 done and task 2 not done.
windows
# SSMS: open resources/practice.sql, connect to the practice instance, then Execute.
Write the connection contract
In connection-checklist.md, document the app’s needed database/schema and minimal read/write permissions. Have the administrator provision that dedicated login; keep its secret in a user-scoped environment/secret store. Do not enable a shared sa workflow. Verify the login can run its allowed query and cannot write a protected schema.
Expected: The app login is scoped to the practice data, credentials stay outside source, and allowed/denied checks are recorded.
Create a disposable practice database backup
In SSMS create BBBPractice on the disposable instance and add a small table with two known rows. Review backup-restore.sql and the default backup directory. Run the COPY_ONLY checksum backup and RESTORE VERIFYONLY. Record the backup path and successful checks.
Expected: The backup is created and checksum verification succeeds for BBBPractice.
Practice a distinct database restore
Use RESTORE FILELISTONLY and SSMS Restore Database to restore the backup as BBBPracticeRestored. Relocate data/log files to unique paths. Never use WITH REPLACE over a live database. Query the restored practice table and compare the original two rows.
Expected: BBBPracticeRestored contains the expected two rows in distinct data/log files.
Record the connection and backup routine
Fill connection-checklist.md with instance, own login, driver/certificate assumptions, query proof, backup verification and restore result. Express has no SQL Server Agent: plan a reviewed external scheduler with logs and failure alerts for future backups.
Expected: The checklist lets a new session connect, verify, back up and restore the practice data.
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