# TOL003-LAB1

1. `python setup_fixture.py` را اجرا کن.
2. با `python inspect_context.py` هویت runtime/config را ثبت کن.
3. قبل از هر اجرای Turborepo، prediction مربوط به graph/cache را در `task_graph_cache_contract.csv` بنویس.
4. در محیطی که `turbo` از قبل نصب است، build را دو بار با vanilla و سپس یک بار با chocolate در حالی‌که `APP_FLAVOR` هنوز declare نشده اجرا کن؛ بعد `python artifact_oracle.py chocolate` را اجرا کن.
5. reset کن؛ `python mutate_fixture.py declare-env` را اجرا کن و flavor mutation + oracle را تکرار کن.
6. reset کن؛ `python mutate_fixture.py remove-dependency-edge` را اجرا کن؛ verify را از clean state اجرا و فقط کوچک‌ترین boundary پشتیبانی‌شده را classify کن.

Runner هیچ Turborepoای download نمی‌کند. `TURBO_UNAVAILABLE` یعنی runtime evidence موجود نیست، نه اینکه نتیجه cache شبیه‌سازی شود.

یادداشت مرز اجرا: runner عمداً از `--env-mode=loose` استفاده می‌کند تا مقدار declareنشده به task برسد ولی هنوز داخل hash declare نشده باشد؛ cache نیز فقط local با `local:rw,remote:` است. این یک شرط کنترل‌شده برای counterexample آموزشی است، نه توصیه production. هویت دقیق Turbo/Node/Python و cache scope را از `inspect_context.py` ثبت کن.
