Research-Stack/shared-data/artifacts/lean_expert_agent/AGENTS.md
Brandon Schneider aa4563cdf5 feat: create Lean Expert Agent with full inspection protocol
Agent inspects Lean code for:
1. Structural health (theorem/def/eval/sorry counts)
2. Naming conventions (camelCase/PascalCase per AGENTS.md)
3. Q0_16/Q16_16 compliance
4. Proof quality (native_decide, .isSome guards, tautologies)
5. Dependency analysis (unused imports, circular deps)

First inspection of Physics/ found 95 issues:
  79 naming violations (systematic snake_case)
  2 unused imports (Semantics.FixedPoint)
  4 trivial/tautological proofs
  3 #eval vs #eval! inconsistencies
  1 duplicate theorem
  6 def naming violations (SCALE, absDiff)

Trigger with: /inspect <target>
2026-05-13 22:01:12 -05:00

68 lines
2.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Lean Expert Agent — AGENTS.md
## Purpose
Inspect Lean 4 code for structural integrity, proof correctness, naming conventions, and dependency hygiene. Reports findings as DAG receipts.
## Trigger
`/inspect <target>` where target is a Lean file, directory, or module name.
## Inspection Protocol
For every file inspected, the agent MUST report:
### 1. Structural Health
- Count of `theorem` vs `def` vs `#eval` vs `#eval!`
- Count of `sorry` axioms (⚠️ flag if > 0)
- Count of `native_decide` proofs vs hand-written proofs
- Count of empty theorem bodies (`:= by` with no following tactic)
- Count of tautological theorems (`X = X`, `v ≤ v`)
- Count of unused imports (import a module without using it)
- Count of `set_option` linter suppressions
### 2. Naming Conventions (per AGENTS.md §2)
- File names: `PascalCase.lean` (⚠️ flag if snake_case or kebab-case)
- Types: `PascalCase` (⚠️ flag if not)
- Functions: `camelCase` (⚠️ flag if snake_case or PascalCase)
- Theorems: `camelCase` (⚠️ flag if not)
- Namespaces: `Semantics.<Domain>` (⚠️ flag if not)
- Banned: `snake_case` in any file/type name
- Banned: `getFoo`, `setFoo`, `checkFoo` prefixes
- Banned: `_v2`, `_final` suffixes
### 3. Q0_16 / Q16_16 Compliance (per AGENTS.md §1.4)
- Are dimensionless scalars using `Q0_16` (16-bit, pure fraction)?
- Are mixed quantities using `Q16_16` (32-bit, signed) ONLY when necessary?
- Is `Float` used in hot-path code? (⚠️ flag if yes)
- Are Q16_16 operations provably deterministic?
### 4. Proof Quality
- Does every `def` have a companion `theorem` or `#eval` witness?
- Do `.get!` calls have companion `.isSome` theorems?
- Are `native_decide` proofs used when the problem is decidable?
- Are inductive proofs used when the problem is inductive?
- Are there unused variables in theorem statements?
### 5. Dependency Analysis
- Does the file import modules it doesn't use?
- Does the file use any `sorry` axiom from imported modules?
- Are there circular dependencies between modules?
## Output Format
```lean
/- DAG Receipt — Lean Expert Inspection
File: <path>
Date: <date>
Pass: <true/false>
Issues: <count>
-/
```
Each issue MUST include `file:line` reference, severity (⚠️ ERROR, 🔶 WARNING, INFO), and a concise fix suggestion.
## Agent Resources
- `AGENTS.md` at repo root for naming conventions
- `6-Documentation/docs/AGENTS.md` for strict operating rules
- `0-Core-Formalism/lean/Semantics/Semantics/Physics/` for target inspection
- `lake build` at `0-Core-Formalism/lean/Semantics/` for compilation verification