# LAB-01 — Controlled AI work loop

Use only this local synthetic fixture. The lab ships with its own read-only baseline snapshot and deterministic state tool; no Git setup or external repository metadata is required.

## Goal
Implement the approved vertical slice that makes `filter_tasks(..., mode="unfinished")` return only unfinished tasks while preserving `mode="all"`.

## Supplied reversible state
- Working fixture: `fixture/`
- Read-only baseline snapshot: `baseline/fixture/`
- Baseline hashes/policy: `BASELINE_MANIFEST.json`
- State tool: `tools/lab_state.py`

Before editing, run from this `LAB-01` directory:

`python tools/lab_state.py verify-baseline`

The command must return `PASS`. `python tools/lab_state.py diff` compares the working fixture with the supplied baseline and reports every added/deleted/modified file plus unified text diffs. `python tools/lab_state.py rollback-check` proves what would be restored. If you need to revert, `python tools/lab_state.py rollback` restores the entire fixture to the supplied baseline.

Do not edit `baseline/`, `BASELINE_MANIFEST.json`, `tools/lab_state.py`, or `fixture/tests/test_filtering.py`.

## Required workflow
1. Create `AI Work Record v1` before editing.
2. Inspect the fixture and propose a plan.
3. Record human `APPROVE` or `REVISE`.
4. Make only bounded changes needed for the slice. The implementation change surface is `src/filtering.py`; `tests/test_filtering.py` is a read-only oracle and must not be edited.
5. Run: `python -S -B -m unittest discover -s tests -v` from `fixture/`.
6. Return to `LAB-01/` and run `python tools/lab_state.py diff`; compare the reported change surface with the approved plan/scope and confirm no data/schema format was changed.
7. Run `python tools/lab_state.py rollback-check` and record rollback readiness. If a scope deviation must be reverted, use the supplied rollback command and re-run the evidence steps.
8. Record evidence for AC-01, AC-02, preservation/regression, change-boundary integrity, and the no-schema-change constraint.
9. Issue a human `ACCEPT / MODIFY / REJECT` with rationale, residual uncertainty, and next action.

No solution/reference diff is included. Do not add network calls, credentials, privileged operations, or production dependencies.
