# Local Verification for AI Agents

To ensure code stability and avoid regressions, AI agents MUST perform the
following verification steps locally before pushing changes.

## 1. Run full build and task suite
The project uses a custom task runner. Execute the `buildbot` task to perform
linting, formatting checks, code generation validation, and full test execution.

```bash
dart run tool/task.dart buildbot
```

**IMPORTANT:** If `buildbot` fails with "generated files needed to be rebuilt",
run:
```bash
dart run tool/task.dart build
```
Then commit the resulting changes before rerunning `buildbot`.
Make sure you rebuild before claiming a task is complete.

## 2. Verify specific logic areas
If you modified canonicalization or documentation rendering, verify these
specific test groups:

- **Canonicalization:** Run `dart run test test/canonical_for_test.dart` and 
  `dart run test test/model_utils_test.dart`.
- **Warnings:** Many tests assert on the exact number of warnings (e.g., `test/options_test.dart`). 
  If your changes cause new warnings, verify if they are legitimate or if 
  canonicalization is failing.
- **Duplicate Outputs:** Watch for "file already written" errors in test output, 
  which often indicate multiple elements being canonicalized to the same path.

## 3. Environment Notes
- Some tests depend on a valid Flutter SDK being present in the environment
  (e.g., `model_special_cases_test.dart`). If these fail due to missing
  executables, it may be an environment issue rather than a logic regression.
- Always use `dart analyze .` and `dart format .` before final submission.
