# Agent Rules and Verification Constraints All AI agents (including Cline, Antigravity, Cursor, and Copilot) must adhere to the following rules before declaring a task complete: 1. **Test Coverage (>= 80%)**: - The overall project line coverage must be maintained at **80% or higher**. Bun reports line data only; statement, branch and function coverage are no longer measured. - Verify coverage by running: ```bash bun scripts/generate-langs.js bun test --config=bunfig.coverage.toml --isolate --path-ignore-patterns='**/benchmark/**' bun scripts/coverage-reports.mjs ``` - If your changes introduce new code or modify existing code in a way that drops the coverage below 80%, you must write appropriate unit tests in `.spec.ts` files to bring it back up. 2. **Code Formatting (Prettier)**: - All code files, the CI scripts and the workflow must be correctly formatted according to the project's Prettier config before finishing. - Run the formatter with: ```bash bun run format ``` 3. **Successful Build**: - The project must always build successfully for production without compilation or bundling errors before ending. - Verify the build with: ```bash bun run build ``` 4. **CI Checks**: - You must execute the local validation commands before completing your task. The Gitea workflow is `.gitea/workflows/ci.yml`; owner activation is tracked in issue #268, and local checks do not satisfy the migration gate. All of the following commands must pass: - **Linting check**: `bun run lint` (or use `bun run lint:fix` to resolve auto-fixable issues) - **Formatting check**: `bun run format:check` - **TypeScript Type check**: `bun run typecheck` (`bun check` for application and test code; it does not replace the production build, which alone checks Angular templates) - **Unit Tests and Coverage**: generate the language registry, then run the coverage command in rule 1, matching the Gitea functional-test job. - **CI policy and publication**: `bun scripts/ci-policy.test.mjs` and `bun scripts/ci-image.test.mjs` - **Production Build**: `bun run build -- --configuration production` - The separate performance benchmark is a required CI job with a relative gate: each scenario's budget is a multiple of the frozen engine's two-year calibration measured in the same run. Run it outside coverage with `timeout 600s bun test src/app/benchmark --timeout=600000` when verifying performance; see `docs/benchmark/README.md`.