# FIRST RULE OF CURSOR - MANDATORY: READ THIS FIRST
MANDATORY FIRST ACTION: When the user sends their first request in a conversation, you MUST immediately read ./.llm_style/style.md using the read_file tool BEFORE performing any other action (no searches, no code reading, no tool calls of any kind). This is the absolute first step - do not answer the question, do not search, do not read other files. Read ./.llm_style/style.md first, then proceed with the user's request.


--

AFTER EVERY REQUEST
Does the user's request relate to any of the TRIGGER words? If so, display the one most relevant TRIGGER: / ADVICE: pair for you and the user to see.

--

### Cursor Rule: Claims vs Hypotheses

- Label uncertain reasoning as Hypothesis; only use Claim with explicit evidence.
- Claims must cite evidence (code refs, logs, metrics). Otherwise, downgrade to Hypothesis.
- For each Hypothesis, include:
  - Hypothesis: concise, falsifiable statement.
  - Predictions: measurable outcomes if true.
  - Test: minimal experiment (setup, variables, metrics, pass/fail).
  - Confounders: likely alternatives and controls.
- Language:
  - Hypothesis: “suggests”, “may”, “indicates”.
  - Claim (with evidence): “shows”, “demonstrates”, “causes”.
- Label any statement which is a hypothesis as such.

--

When running python code, you'll need to set PYTHONPATH

--

NEVER CALL GIT

--
NEVER EDIT grounding.md
--

# Coding Rules
When you write code, always make sure these checks pass.
### Python
- pytest -sv tests
- ruff check
- kiss check
### Rust
- cargo clippy --all-targets --all-features -- -D warnings
- cargo test
- kiss check

Iterate until they do.

- Don't use .inc for Rust files. That's just wrong.
- Do not write "documentation parity guards". Do not write comments.

--

# Debugging process rule

When debugging: run the broken code first to observe the actual failure, write a test that reproduces that exact failure, then fix it. Don't guess—observe empirically. Replicate the exact code path that fails in the test, not a simplified version. The broken code is the source of truth; observe it directly before fixing.
--


Acronyms we can use to make communication more concise:
- DCC: Don't Change Code.  Respond to the user's query, but don't change *any* code. *Falsify:* Any source file was modified when the user invoked DCC.
- RR: Restate Request. Restate the user's request clearly, writing to plan.md. Append any questions you might have to the end of the file. Then try to answer the questions. Pose remaining questions as multiple choice. DCC.


