From 60cb33e61d19bdd5d4014421b15e6ca4fccf4a0f Mon Sep 17 00:00:00 2001 From: lars20070 Date: Wed, 4 Mar 2026 11:14:29 +0100 Subject: [PATCH 01/52] bump version to 0.1.4 --- pyproject.toml | 2 +- uv.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8815392..1c276c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "pytest-assay" -version = "0.1.3" +version = "0.1.4" description = "Evaluation framework for Pydantic AI agents" keywords = [ "pytest", "pytest-plugin", "pydantic", "pydantic-ai", diff --git a/uv.lock b/uv.lock index 39a2850..9077612 100644 --- a/uv.lock +++ b/uv.lock @@ -3180,7 +3180,7 @@ wheels = [ [[package]] name = "pytest-assay" -version = "0.1.3" +version = "0.1.4" source = { editable = "." } dependencies = [ { name = "choix" }, From 5421849680796a3668f99c9135801a4529a8e4b6 Mon Sep 17 00:00:00 2001 From: lars20070 Date: Sat, 7 Mar 2026 11:33:47 -0800 Subject: [PATCH 02/52] add recommendation for Claude extension in VSCode --- .vscode/extensions.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 4c3e60e..843c9b7 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -23,6 +23,8 @@ "ms-vscode.vscode-copilot-data-analysis", "AutomataLabs.copilot-mcp", "CodeRabbit.coderabbit-vscode", + // Claude + "anthropic.claude-code", // spell checker "streetsidesoftware.code-spell-checker", // logging From 162dd28bc3a5fe50842c0238bf5fcfafc7c4cb55 Mon Sep 17 00:00:00 2001 From: lars20070 Date: Sat, 7 Mar 2026 17:42:20 -0800 Subject: [PATCH 03/52] remove deno from devcontainer --- .devcontainer/devcontainer.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 5428828..23ff98a 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -21,9 +21,6 @@ }, "ghcr.io/devcontainers/features/node:1": { // Required for local Context7 MCP server "version": "lts" - }, - "ghcr.io/devcontainers-community/features/deno:1": { // Required for https://github.com/pydantic/mcp-run-python - "version": "2.5.6" } }, // Port forwarding for local services @@ -140,4 +137,4 @@ // ] // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. // "remoteUser": "root" -} \ No newline at end of file +} From 82e7c98a24b4f17dc5a4adc785ef96fe211ba871 Mon Sep 17 00:00:00 2001 From: lars20070 Date: Mon, 16 Mar 2026 18:30:40 -0700 Subject: [PATCH 04/52] lat.md initialization --- .claude/hooks/lat-prompt-hook.sh | 16 +++++++ .claude/settings.json | 16 ++++++- .cursor/rules/lat.md | 72 +++++++++++++++++++++++++++++++ .vscode/mcp.json | 8 +++- AGENTS.md | 74 ++++++++++++++++++++++++++++++++ CLAUDE.md | 74 ++++++++++++++++++++++++++++++++ 6 files changed, 257 insertions(+), 3 deletions(-) create mode 100755 .claude/hooks/lat-prompt-hook.sh create mode 100644 .cursor/rules/lat.md create mode 100644 AGENTS.md create mode 100644 CLAUDE.md diff --git a/.claude/hooks/lat-prompt-hook.sh b/.claude/hooks/lat-prompt-hook.sh new file mode 100755 index 0000000..c5adced --- /dev/null +++ b/.claude/hooks/lat-prompt-hook.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# lat.md prompt hook for Claude Code +# Injected by `lat init` — reminds the agent to consult lat.md before working. +# +# This hook fires on every user prompt submission. It adds a short instruction +# telling the agent to run `lat search` and `lat prompt` so that lat.md context +# is consulted before any code changes. + +cat <<'HOOK_JSON' +{ + "hookSpecificOutput": { + "hookEventName": "UserPromptSubmit", + "additionalContext": "Before starting work on this task:\n1. Run `lat search` with a query relevant to the task and read the results to understand the design intent.\n2. If the prompt contains [[refs]], run `lat prompt` on the full prompt text to resolve them.\n3. After completing work, run `lat check` to validate all links and code refs.\nDo not skip these steps." + } +} +HOOK_JSON diff --git a/.claude/settings.json b/.claude/settings.json index 9a2b115..24fa61b 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -106,5 +106,17 @@ "enabledMcpjsonServers": [ "context7", "github" - ] -} \ No newline at end of file + ], + "hooks": { + "UserPromptSubmit": [ + { + "hooks": [ + { + "type": "command", + "command": ".claude/hooks/lat-prompt-hook.sh" + } + ] + } + ] + } +} diff --git a/.cursor/rules/lat.md b/.cursor/rules/lat.md new file mode 100644 index 0000000..f8bc6c8 --- /dev/null +++ b/.cursor/rules/lat.md @@ -0,0 +1,72 @@ +# Before starting work + +- Use the `lat_search` tool to find sections relevant to your task. Read them to understand the design intent before writing code. +- Use the `lat_prompt` tool on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context. + +# Post-task checklist (REQUIRED — do not skip) + +After EVERY task, before responding to the user: + +- [ ] Update `lat.md/` if you added or changed any functionality, architecture, tests, or behavior +- [ ] Use the `lat_check` tool — all wiki links and code refs must pass +- [ ] Do not skip these steps. Do not consider your task done until both are complete. + +--- + +# What is lat.md? + +This project uses [lat.md](https://www.npmjs.com/package/lat.md) to maintain a structured knowledge graph of its architecture, design decisions, and test specs in the `lat.md/` directory. It is a set of cross-linked markdown files that describe **what** this project does and **why** — the domain concepts, key design decisions, business logic, and test specifications. Use it to ground your work in the actual architecture rather than guessing. + +# Tools + +You have access to the following MCP tools from the `lat` server: + +- **lat_locate** — find a section by name (exact, fuzzy) +- **lat_search** — semantic search across all sections +- **lat_prompt** — expand `[[refs]]` in text to resolved locations +- **lat_check** — validate all wiki links and code refs +- **lat_refs** — find what references a section + +If `lat_search` fails because `LAT_LLM_KEY` is not set, explain to the user that semantic search requires an API key (`export LAT_LLM_KEY=sk-...` for OpenAI or `export LAT_LLM_KEY=vck_...` for Vercel). If the user doesn't want to set it up, use `lat_locate` for direct lookups instead. + +# Syntax primer + +- **Section ids**: `lat.md/path/to/file#Heading#SubHeading` — full form uses project-root-relative path (e.g. `lat.md/tests/search#RAG Replay Tests`). Short form uses bare file name when unique (e.g. `search#RAG Replay Tests`, `cli#search#Indexing`). +- **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference source code: `[[src/foo.ts#myFunction]]`. +- **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`. `lat check` validates these exist. +- **Code refs**: `// @lat: [[section-id]]` (JS/TS) or `# @lat: [[section-id]]` (Python) — ties source code to concepts + +# Test specs + +Key tests can be described as sections in `lat.md/` files (e.g. `tests.md`). Add frontmatter to require that every leaf section is referenced by a `// @lat:` or `# @lat:` comment in test code: + +```markdown +--- +lat: + require-code-mention: true +--- +# Tests + +## User login +### Rejects expired tokens +Tokens past their expiry timestamp are rejected with 401, even if otherwise valid. + +### Handles missing password +Login request without a password field returns 400 with a descriptive error. +``` + +Every section MUST have a description — at least one sentence explaining what the test verifies and why. Empty sections with just a heading are not acceptable. + +Each test in code should reference its spec with exactly one comment placed next to the relevant test — not at the top of the file: + +```python +# @lat: [[tests#User login#Rejects expired tokens]] +def test_rejects_expired_tokens(): + ... + +# @lat: [[tests#User login#Handles missing password]] +def test_handles_missing_password(): + ... +``` + +Do not duplicate refs. One `@lat:` comment per spec section, placed at the test that covers it. `lat check` will flag any spec section not covered by a code reference, and any code reference pointing to a nonexistent section. diff --git a/.vscode/mcp.json b/.vscode/mcp.json index b7f1c48..1e70d29 100644 --- a/.vscode/mcp.json +++ b/.vscode/mcp.json @@ -11,6 +11,12 @@ "github": { "type": "http", "url": "https://api.githubcopilot.com/mcp/" + }, + "lat": { + "command": "/Users/lars/Code/lat.md/dist/src/cli/index.js", + "args": [ + "mcp" + ] } } -} \ No newline at end of file +} diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..7db9102 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,74 @@ +# Before starting work + +- Run `lat search` to find sections relevant to your task. Read them to understand the design intent before writing code. +- Run `lat prompt` on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context. + +# Post-task checklist (REQUIRED — do not skip) + +After EVERY task, before responding to the user: + +- [ ] Update `lat.md/` if you added or changed any functionality, architecture, tests, or behavior +- [ ] Run `lat check` — all wiki links and code refs must pass +- [ ] Do not skip these steps. Do not consider your task done until both are complete. + +--- + +# What is lat.md? + +This project uses [lat.md](https://www.npmjs.com/package/lat.md) to maintain a structured knowledge graph of its architecture, design decisions, and test specs in the `lat.md/` directory. It is a set of cross-linked markdown files that describe **what** this project does and **why** — the domain concepts, key design decisions, business logic, and test specifications. Use it to ground your work in the actual architecture rather than guessing. + +# Commands + +```bash +lat locate "Section Name" # find a section by name (exact, fuzzy) +lat refs "file#Section" # find what references a section +lat search "natural language" # semantic search across all sections +lat prompt "user prompt text" # expand [[refs]] to resolved locations +lat check # validate all links and code refs +``` + +Run `lat --help` when in doubt about available commands or options. + +If `lat search` fails because no API key is configured, explain to the user that semantic search requires a key provided via `LAT_LLM_KEY` (direct value), `LAT_LLM_KEY_FILE` (path to key file), or `LAT_LLM_KEY_HELPER` (command that prints the key). Supported key prefixes: `sk-...` (OpenAI) or `vck_...` (Vercel). If the user doesn't want to set it up, use `lat locate` for direct lookups instead. + +# Syntax primer + +- **Section ids**: `lat.md/path/to/file#Heading#SubHeading` — full form uses project-root-relative path (e.g. `lat.md/tests/search#RAG Replay Tests`). Short form uses bare file name when unique (e.g. `search#RAG Replay Tests`, `cli#search#Indexing`). +- **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference source code: `[[src/foo.ts#myFunction]]`. +- **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`. `lat check` validates these exist. +- **Code refs**: `// @lat: [[section-id]]` (JS/TS) or `# @lat: [[section-id]]` (Python) — ties source code to concepts + +# Test specs + +Key tests can be described as sections in `lat.md/` files (e.g. `tests.md`). Add frontmatter to require that every leaf section is referenced by a `// @lat:` or `# @lat:` comment in test code: + +```markdown +--- +lat: + require-code-mention: true +--- +# Tests + +## User login +### Rejects expired tokens +Tokens past their expiry timestamp are rejected with 401, even if otherwise valid. + +### Handles missing password +Login request without a password field returns 400 with a descriptive error. +``` + +Every section MUST have a description — at least one sentence explaining what the test verifies and why. Empty sections with just a heading are not acceptable. + +Each test in code should reference its spec with exactly one comment placed next to the relevant test — not at the top of the file: + +```python +# @lat: [[tests#User login#Rejects expired tokens]] +def test_rejects_expired_tokens(): + ... + +# @lat: [[tests#User login#Handles missing password]] +def test_handles_missing_password(): + ... +``` + +Do not duplicate refs. One `@lat:` comment per spec section, placed at the test that covers it. `lat check` will flag any spec section not covered by a code reference, and any code reference pointing to a nonexistent section. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..7db9102 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,74 @@ +# Before starting work + +- Run `lat search` to find sections relevant to your task. Read them to understand the design intent before writing code. +- Run `lat prompt` on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context. + +# Post-task checklist (REQUIRED — do not skip) + +After EVERY task, before responding to the user: + +- [ ] Update `lat.md/` if you added or changed any functionality, architecture, tests, or behavior +- [ ] Run `lat check` — all wiki links and code refs must pass +- [ ] Do not skip these steps. Do not consider your task done until both are complete. + +--- + +# What is lat.md? + +This project uses [lat.md](https://www.npmjs.com/package/lat.md) to maintain a structured knowledge graph of its architecture, design decisions, and test specs in the `lat.md/` directory. It is a set of cross-linked markdown files that describe **what** this project does and **why** — the domain concepts, key design decisions, business logic, and test specifications. Use it to ground your work in the actual architecture rather than guessing. + +# Commands + +```bash +lat locate "Section Name" # find a section by name (exact, fuzzy) +lat refs "file#Section" # find what references a section +lat search "natural language" # semantic search across all sections +lat prompt "user prompt text" # expand [[refs]] to resolved locations +lat check # validate all links and code refs +``` + +Run `lat --help` when in doubt about available commands or options. + +If `lat search` fails because no API key is configured, explain to the user that semantic search requires a key provided via `LAT_LLM_KEY` (direct value), `LAT_LLM_KEY_FILE` (path to key file), or `LAT_LLM_KEY_HELPER` (command that prints the key). Supported key prefixes: `sk-...` (OpenAI) or `vck_...` (Vercel). If the user doesn't want to set it up, use `lat locate` for direct lookups instead. + +# Syntax primer + +- **Section ids**: `lat.md/path/to/file#Heading#SubHeading` — full form uses project-root-relative path (e.g. `lat.md/tests/search#RAG Replay Tests`). Short form uses bare file name when unique (e.g. `search#RAG Replay Tests`, `cli#search#Indexing`). +- **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference source code: `[[src/foo.ts#myFunction]]`. +- **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`. `lat check` validates these exist. +- **Code refs**: `// @lat: [[section-id]]` (JS/TS) or `# @lat: [[section-id]]` (Python) — ties source code to concepts + +# Test specs + +Key tests can be described as sections in `lat.md/` files (e.g. `tests.md`). Add frontmatter to require that every leaf section is referenced by a `// @lat:` or `# @lat:` comment in test code: + +```markdown +--- +lat: + require-code-mention: true +--- +# Tests + +## User login +### Rejects expired tokens +Tokens past their expiry timestamp are rejected with 401, even if otherwise valid. + +### Handles missing password +Login request without a password field returns 400 with a descriptive error. +``` + +Every section MUST have a description — at least one sentence explaining what the test verifies and why. Empty sections with just a heading are not acceptable. + +Each test in code should reference its spec with exactly one comment placed next to the relevant test — not at the top of the file: + +```python +# @lat: [[tests#User login#Rejects expired tokens]] +def test_rejects_expired_tokens(): + ... + +# @lat: [[tests#User login#Handles missing password]] +def test_handles_missing_password(): + ... +``` + +Do not duplicate refs. One `@lat:` comment per spec section, placed at the test that covers it. `lat check` will flag any spec section not covered by a code reference, and any code reference pointing to a nonexistent section. From 5b6f3ebcc10652981f83740b5d904443b3b2b0a5 Mon Sep 17 00:00:00 2001 From: lars20070 Date: Tue, 17 Mar 2026 10:02:41 -0700 Subject: [PATCH 05/52] first rough version of the knowledge base for lat.md --- lat.md/.cache/vectors.db | Bin 0 -> 36864 bytes lat.md/evaluators.md | 177 ++++++++++++++++++++++++++++++++ lat.md/lat.md | 5 + lat.md/pytest-plugin.md | 117 +++++++++++++++++++++ lat.md/tests.md | 216 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 515 insertions(+) create mode 100644 lat.md/.cache/vectors.db create mode 100644 lat.md/evaluators.md create mode 100644 lat.md/lat.md create mode 100644 lat.md/pytest-plugin.md create mode 100644 lat.md/tests.md diff --git a/lat.md/.cache/vectors.db b/lat.md/.cache/vectors.db new file mode 100644 index 0000000000000000000000000000000000000000..e10f8f8c52ec6ee9429e61147fde1aa7a3a22e1d GIT binary patch literal 36864 zcmeI(yHDFd9KdlKLL43e7L-RLxb;%Drand?%IDuHzW;I>c zHiXbL&5+x;+*C@+OhO&VPrWBUC~Ig-=U>w^f3(!(l{Wo-=EwAd^rxv`Qx}t0Q{_P? zQH}rt2q1s}0tg_000RFe;2K6|Zcgt!4xFR9*YE--+){@{ozld(je2?$qFA=fU9&0{gzLzO z-YQkL7J6s5r?JF(G-_nl*Y(bBG`4=&Xd=5@11l1J;~Usa;H#%a=A4G5I_I{1Q0*~0R#|0009JI0iOQ}1q2X4009ILKmY** z5I_I{1cqOL_5Z^^$J`+T2q1s}0tg_000IagfB*vg|DPB@009ILKmY**5I_I{1Q0-A H_yzs~{kUnq literal 0 HcmV?d00001 diff --git a/lat.md/evaluators.md b/lat.md/evaluators.md new file mode 100644 index 0000000..f9918a9 --- /dev/null +++ b/lat.md/evaluators.md @@ -0,0 +1,177 @@ +# Evaluators + +Evaluators compare captured agent responses against a stored baseline and produce a `Readout`. They are async callables conforming to the `Evaluator` protocol defined in [[src/pytest_assay/models.py#Evaluator]]. The plugin calls the evaluator in `_run_evaluation` via `asyncio.run(evaluator(eval_input))`. + +## Evaluator Protocol + +```python +class Evaluator(Protocol): + def __call__(self, input: EvaluatorInput) -> Coroutine[Any, Any, Readout]: ... +``` + +Any async callable accepting `EvaluatorInput` and returning `Readout` satisfies the protocol. Configuration is done at instantiation time; the plugin only interacts with `__call__`. + +## EvaluatorInput + +[[src/pytest_assay/models.py#EvaluatorInput]] + +Passed by the plugin to every evaluator: + +| Field | Type | Description | +|---|---|---| +| `baseline_dataset` | `Dataset \| None` | Deep-copied snapshot from the loaded assay JSON. `None` when no baseline file exists. | +| `agent_responses` | `list[AgentRunResult]` | Responses captured by monkeypatching `Agent.run()` during the test run. | + +## Readout + +[[src/pytest_assay/models.py#Readout]] + +Returned by every evaluator and serialized to `.readout.json`: + +| Field | Type | Description | +|---|---|---| +| `passed` | `bool` | Whether novel responses outperformed the baseline. Defaults to `True`. | +| `details` | `dict \| None` | Evaluator-specific structured data (scores, win counts, etc.). | + +## BradleyTerryEvaluator + +[[src/pytest_assay/evaluators/bradleyterry.py#BradleyTerryEvaluator]] + +The default evaluator. Runs a pairwise tournament across all baseline and novel responses, computes Bradley-Terry strength scores, and passes if the average novel score exceeds the average baseline score. + +### How it works + +1. All baseline `expected_output` strings become `EvalPlayer` instances (indices `0..n-1`). +2. All novel `AgentRunResult.output` strings become further `EvalPlayer` instances (indices `n..2n-1`). +3. An `EvalGame` pits pairs of players against each other: a judge LLM picks `"A"` or `"B"` given the configured `criterion`. +4. An `EvalTournament` orchestrates games using a `TournamentStrategy`. Defaults to [[evaluators#Tournament Strategies#Adaptive Uncertainty Strategy]]. +5. Bradley-Terry scores are estimated from the game outcomes using `choix.ep_pairwise`. +6. `passed = avg_novel_score > avg_baseline_score`. + +### Configuration + +```python +BradleyTerryEvaluator( + model=None, # defaults to Ollama qwen3:8b via OpenAI-compatible API + criterion="Which of the two agent responses is better?", + max_standard_deviation=2.0, # convergence threshold for adaptive strategy +) +``` + +The judge agent uses `temperature=0.0` and `retries=5` for deterministic, robust comparisons. `output_type=Literal["A", "B"]` enforces structured output. The default tournament strategy is [[evaluators#Tournament Strategies#Adaptive Uncertainty Strategy]]. + +### Readout details + +```json +{ + "test_cases_count": 10, + "scores_baseline": [0.12, -0.34, ...], + "scores_novel": [0.45, 0.11, ...] +} +``` + +## PairwiseEvaluator + +[[src/pytest_assay/evaluators/pairwise.py#PairwiseEvaluator]] + +A simpler evaluator that runs one direct A-vs-B comparison per response pair (baseline[i] vs novel[i]). Passes if novel wins more comparisons than it loses. + +### How it works + +1. Baseline `expected_output` strings are paired 1-to-1 with novel `AgentRunResult.output` strings. +2. For each pair, a judge LLM receives a prompt with `` (baseline) and `` (novel) and picks the better one. +3. `passed = wins_novel > losses_novel` (strict majority). +4. Raises `AssertionError` if baseline and novel counts differ. + +### Configuration + +```python +PairwiseEvaluator( + model=None, # defaults to Ollama qwen3:8b + criterion="Which of the two responses is better?", +) +``` + +### Readout details + +```json +{ + "test_cases_count": 5, + "wins_baseline": [false, true, false, false, false], + "wins_novel": [true, false, true, true, true] +} +``` + +### Comparison with BradleyTerry + +| | PairwiseEvaluator | BradleyTerryEvaluator | +|---|---|---| +| Game count | exactly `n` | `O(n log n)` to `n(n-1)` | +| Handles position bias | no | yes (plays both `(i,j)` and `(j,i)`) | +| Requires equal counts | yes | no | +| Score type | win/loss counts | continuous Bradley-Terry strength | +| Default? | no | yes | + +## Tournament Strategies + +Used exclusively by `BradleyTerryEvaluator`. All strategies share the signature: + +```python +async def strategy( + players: list[EvalPlayer], + game: EvalGame, + agent: Agent, + model_settings: ModelSettings, + **kwargs, +) -> list[EvalPlayer]: ... +``` + +### Adaptive Uncertainty Strategy + +[[src/pytest_assay/evaluators/bradleyterry.py#adaptive_uncertainty_strategy]] + +The default strategy. Two phases: + +**Bootstrap phase** — plays `max(2n, n/2 · log(n))` random games to ensure the comparison graph is strongly connected (Erdős-Rényi 1960 threshold). + +**Optimization phase** — iteratively selects the player pair with the highest score uncertainty: + +``` +Var(s_i - s_j) = Var(s_i) + Var(s_j) - 2·Cov(s_i, s_j) +``` + +Stops when `sqrt(max_uncertainty) < max_standard_deviation` or all pairs have been played. Uses `choix.ep_pairwise` for score and covariance estimation. + +Parameters: `max_standard_deviation` (default `2.0`), `alpha` prior strength (default `0.1`). + +### Random Sampling Strategy + +[[src/pytest_assay/evaluators/bradleyterry.py#random_sampling_strategy]] + +Plays all `n(n-1)` directed games in random order (or a `fraction_of_games` subset). Simple exhaustive baseline; use when you want maximum coverage regardless of game count. Scores via `choix.ilsr_pairwise`. + +### Round Robin Strategy + +[[src/pytest_assay/evaluators/bradleyterry.py#round_robin_strategy]] + +Each player plays `number_of_rounds` games against randomly chosen opponents. Scores via `choix.ilsr_pairwise`. Lower game count than random sampling but less coverage. + +## Internal Models + +### EvalPlayer + +[[src/pytest_assay/evaluators/bradleyterry.py#EvalPlayer]] + +`idx: int` — unique tournament index. `item: str` — the response text. `score: float | None` — Bradley-Terry strength, populated after tournament. + +### EvalGame + +[[src/pytest_assay/evaluators/bradleyterry.py#EvalGame]] + +Holds the `criterion` string and runs a single pairwise comparison via `Agent.run()`. Returns `(winner_idx, loser_idx)`. + +### EvalTournament + +[[src/pytest_assay/evaluators/bradleyterry.py#EvalTournament]] + +Holds `players` and `game`, delegates to a `TournamentStrategy` callable. Exposes `get_player_by_idx()` for post-tournament score retrieval. diff --git a/lat.md/lat.md b/lat.md/lat.md new file mode 100644 index 0000000..57f42d1 --- /dev/null +++ b/lat.md/lat.md @@ -0,0 +1,5 @@ +# pytest-assay knowledge graph + +- [[pytest-plugin]] — pytest hooks, lifecycle, marker, assay modes, Agent.run interception +- [[evaluators]] — evaluator contracts, BradleyTerry and pairwise strategies, Readout model +- [[tests]] — test specifications for all plugin, evaluator, model, config, and logger code diff --git a/lat.md/pytest-plugin.md b/lat.md/pytest-plugin.md new file mode 100644 index 0000000..511f41d --- /dev/null +++ b/lat.md/pytest-plugin.md @@ -0,0 +1,117 @@ +# Pytest Plugin + +The pytest-assay plugin hooks into the pytest lifecycle to intercept `Agent.run()` calls, capture model outputs, and trigger evaluation or baseline serialization after each test. + +## Marker + +The `@pytest.mark.assay` marker designates a test function as an assay. It accepts two optional keyword arguments: + +- `generator` — a callable returning a `Dataset` for building test cases when no baseline file exists yet. +- `evaluator` — an `Evaluator` instance controlling the comparison strategy. Defaults to `BradleyTerryEvaluator()`. + +```python +@pytest.mark.assay( + generator=my_dataset_generator, + evaluator=BradleyTerryEvaluator(criterion="Which response is more accurate?"), +) +async def test_my_agent(context: AssayContext) -> None: + result = await agent.run("some prompt") + ... +``` + +Only `Function` items (not classes or modules) are treated as valid assay tests. See [[pytest-plugin#_is_assay]]. + +## Assay Modes + +Controlled via the `--assay-mode` CLI option. Two modes are supported: + +- `evaluate` (default) — loads the baseline dataset, runs the evaluator against captured responses, and writes a `.readout.json` report. +- `new_baseline` — merges captured responses into the dataset cases as `expected_output` and serializes to disk, replacing the previous baseline. + +The mode is stored on the `AssayContext` injected into each test. See [[pytest-plugin#Lifecycle]]. + +## Baseline File Layout + +Baseline datasets are stored as JSON files under the test directory: + +``` +/assays//.json +``` + +For example, `tests/test_agents.py::test_summariser` → `tests/assays/test_agents/test_summariser.json`. + +The path is computed by [[pytest-plugin#_path]] and stored on `AssayContext.path`. + +## Lifecycle + +The plugin participates in three pytest hook phases for every assay test: + +### Setup — pytest_runtest_setup + +Runs before the test body. Priority: `tryfirst`. + +1. Computes the baseline file path via `_path(item)`. +2. If the file exists, loads it as a `Dataset`. +3. If no file exists but a `generator` was provided, calls it to create and immediately persist the dataset. +4. Otherwise starts with an empty `Dataset(cases=[])`. +5. Takes a deep copy as the immutable baseline snapshot → `item.stash[BASELINE_DATASET_KEY]`. +6. Injects an `AssayContext` (mutable dataset + path + mode) as `item.funcargs["context"]`. + +### Call — pytest_runtest_call + +Runs around the test body. Uses `hookwrapper=True`. + +Monkeypatches `Agent.run` with `_instrumented_agent_run` for the duration of the test: + +1. Saves `Agent.run` reference before patching. +2. Pushes the current `Item` into `_current_item_var` (a module-level `ContextVar`). +3. Replaces `Agent.run` with a wrapper that awaits the original, then appends the result to `item.stash[AGENT_RESPONSES_KEY]`. +4. After `yield`, restores the original `Agent.run` and resets the `ContextVar` token. + +The `ContextVar` approach allows the wrapper closure to locate the correct test item without modifying `Agent.run`'s signature. See [[pytest-plugin#ContextVar Tunnel]]. + +### Teardown — pytest_runtest_teardown + +Runs before fixture finalization (`yield` deferred). Checks that `AGENT_RESPONSES_KEY` is present (absent means the test was skipped). + +- `new_baseline` mode → calls `_serialize_baseline(item, assay)`. +- `evaluate` mode → calls `_run_evaluation(item, assay)`. + +Fixture teardown (e.g. VCR cassette close) happens after `yield`. + +## ContextVar Tunnel + +`_current_item_var: ContextVar[Item | None]` is defined at module level. Because `Agent.run` is an async method called inside async test functions, a plain closure variable would be unsafe under concurrent execution. The `ContextVar` provides an execution-context-scoped binding: each asyncio task sees its own value, preventing cross-test contamination. + +The call-hook sets the var with `set()`, which returns a `Token`. The `finally` block calls `reset(token)` to cleanly unwind, even if the test raises. + +## _path + +[[src/pytest_assay/plugin.py#_path]] + +Computes `/assays//.json`. Strips parametrize suffixes (`[param]`) from the test name before constructing the path so parametrized variants share a common baseline file name root. + +## _is_assay + +[[src/pytest_assay/plugin.py#_is_assay]] + +Returns `True` only when the item is a `Function` and carries the `assay` marker. Guards all hook logic to avoid interfering with non-assay tests. + +## _serialize_baseline + +[[src/pytest_assay/plugin.py#_serialize_baseline]] + +Merges `item.stash[AGENT_RESPONSES_KEY]` into `assay.dataset.cases` as `expected_output` strings. Requires an exact 1-to-1 match between response count and case count; logs an error and skips serialization if they differ. Writes via `Dataset.to_file()` with `schema_path=None`. + +## _run_evaluation + +[[src/pytest_assay/plugin.py#_run_evaluation]] + +Retrieves the `evaluator` callable from the marker kwargs (default: `BradleyTerryEvaluator()`). Builds an `EvaluatorInput` from the baseline snapshot and captured responses, then calls `asyncio.run(evaluator(eval_input))`. Serializes the resulting `Readout` to `.readout.json`. See `lat.md/evaluators.md` for evaluator contracts. + +## Stash Keys + +| Key | Type | Set by | Read by | +|-----|------|--------|---------| +| `BASELINE_DATASET_KEY` | `Dataset` | `pytest_runtest_setup` | `_run_evaluation` | +| `AGENT_RESPONSES_KEY` | `list[AgentRunResult]` | `pytest_runtest_call` | `_serialize_baseline`, `_run_evaluation`, `pytest_runtest_teardown` | diff --git a/lat.md/tests.md b/lat.md/tests.md new file mode 100644 index 0000000..b4e9846 --- /dev/null +++ b/lat.md/tests.md @@ -0,0 +1,216 @@ +# Tests + +Test suite for pytest-assay. Unit tests use `pytest-mock` and `AsyncMock`; integration tests require a local Ollama instance and are gated by `@pytest.mark.ollama`. + +## Plugin Unit Tests + +[[src/pytest_assay/plugin.py]] helper and hook coverage in `tests/test_plugin.py`. + +### _path + +Tests for the `_path()` helper that computes `/assays//.json`. + +- Standard path: verifies the path is absolute, ends with `.json`, and contains the `assays` directory. +- Parametrized test name: verifies that `[param1-param2]` suffixes are stripped so parametrized variants share the same file name root. +- Nested directory: verifies that deeply nested test module paths resolve correctly. + +### _is_assay + +Tests for the `_is_assay()` guard that allows only `Function` items with the `assay` marker to proceed. + +- Returns `True` for a `Function` item with the `assay` marker present. +- Returns `False` for a `Function` item where `get_closest_marker` returns `None`. +- Returns `False` for a non-`Function` item (e.g., a plain `Item`) regardless of markers. + +### pytest_addoption + +Verifies that `pytest_addoption` calls `parser.addoption` exactly once with `--assay-mode`, default `"evaluate"`, and choices `("evaluate", "new_baseline")`. + +### pytest_configure + +Verifies that `pytest_configure` calls `config.addinivalue_line` with `"markers"` and a string containing `"assay"`. + +### pytest_runtest_setup + +Tests for the setup hook that loads the dataset and injects `AssayContext`. + +- Skips non-assay items without touching `funcargs`. +- Loads an existing dataset file: verifies `BASELINE_DATASET_KEY` is stashed, `AssayContext` is injected with the correct dataset, path, and mode, and case content is intact. +- Calls the generator when no file exists: verifies the generator is called once, the dataset file is created and reloadable, and `AssayContext` reflects the generated cases. +- Raises `TypeError` when the generator returns a non-`Dataset` value. +- Falls back to an empty `Dataset(cases=[])` when neither a file nor a generator is provided. +- Baseline is a deep copy: mutating `assay_ctx.dataset` does not change `item.stash[BASELINE_DATASET_KEY]`. + +### pytest_runtest_call + +Tests for the hookwrapper that monkeypatches `Agent.run()`. + +- Yields immediately (no patching) for non-`Function` items. +- Yields immediately for `Function` items without the `assay` marker. +- Initializes `item.stash[AGENT_RESPONSES_KEY]` to `[]` before yielding. +- Sets `_current_item_var` to the current item while inside the yield; resets it to `None` after. +- `Agent.run` is replaced by the instrumented wrapper during the yield, then restored to the original method in the `finally` block. +- Calling the instrumented `Agent.run` captures the result in `AGENT_RESPONSES_KEY` and passes the return value through to the caller without infinite recursion. +- When `_current_item_var` is manually cleared to `None`, the instrumented wrapper still calls the original and returns the result but does not append to any stash. + +### pytest_runtest_teardown — new_baseline path + +Tests for teardown when `assay_mode == "new_baseline"`. + +- Skips non-assay items without side effects. +- Handles missing `AssayContext` in `funcargs` gracefully (no exception). +- Merges captured responses into `case.expected_output` and serializes the dataset to disk; verifies the JSON file is reloadable and contains the correct `expected_output` values. +- Skips serialization and logs an error when the number of captured responses does not match the number of dataset cases. +- Writes an empty string for `None` response output instead of failing. +- Skips serialization and logs an error when the call phase ran but captured zero responses against a non-empty dataset. + +### pytest_runtest_teardown — evaluate path + +Tests for teardown when `assay_mode == "evaluate"`. + +- Does not write a dataset file; only writes a `.readout.json` file. +- Calls the evaluator with an `EvaluatorInput` and serializes the returned `Readout` to `.readout.json`; verifies file content. +- Uses `BradleyTerryEvaluator()` as the default evaluator when none is specified in marker kwargs. +- Logs an error and returns early for a non-callable evaluator value. +- Catches exceptions from the evaluator and logs them via `logger.exception` without propagating. + +### Full Workflow + +End-to-end test covering setup → call → teardown in `new_baseline` mode: a generator creates cases, `pytest_runtest_setup` injects the context, simulated `Agent.run()` responses are stored in the stash, and teardown serializes the merged dataset with the correct `expected_output` per case. + +## Model Unit Tests + +Tests for data models in `tests/test_models.py`. + +### EvaluatorInput + +- Creation with `baseline_dataset=None` and a single response. +- Creation with a populated `Dataset` and verification of case count and names. +- Empty `agent_responses` list accepted. +- Multiple responses stored in order. +- `ValidationError` raised when all required fields are omitted. +- `ValidationError` raised when `agent_responses` is omitted. +- `ValidationError` raised when `baseline_dataset` is omitted. +- Exactly two model fields (`baseline_dataset`, `agent_responses`) are defined. +- A response with `output=None` is stored without error. + +### Readout + +- Default values: `passed=True`, `details=None`. +- Custom values accepted for both fields. +- `model_dump()` returns the correct dict for custom and default values. +- `to_file()` writes valid JSON; verifies `passed` and `details` fields in the file. +- `to_file()` with `details=None` writes `null`. +- `to_file()` with `details={}` writes an empty object. + +### Evaluator Protocol + +- `Evaluator` is callable (protocol is importable and callable as a type). +- Protocol has the expected structure (`__protocol_attrs__` or callable). + +### AssayContext + +- Created with all required fields; verifies attribute values. +- Default `assay_mode` is `"evaluate"`. +- `assay_mode="new_baseline"` accepted. +- Dataset with cases: verifies case count, field access, mutability (cases can be cleared and extended). +- `ValidationError` raised when required fields are omitted. + +## BradleyTerry Evaluator Tests + +Unit and integration tests in `tests/evaluators/test_bradleyterry.py`. + +### EvalPlayer + +- Created with required fields; `score` defaults to `None`. +- Created with explicit `score`. +- `score` is mutable after creation. +- Negative `idx` is permitted (it is an identifier, not a position). +- Empty `item` string is permitted. + +### EvalGame + +- `criterion` is stored on the model. +- Returns `(player_A_idx, player_B_idx)` when the agent picks `"A"`. +- Returns `(player_B_idx, player_A_idx)` when the agent picks `"B"`. +- The prompt sent to the agent contains both player items and the criterion string. +- Result tuple uses actual `idx` values, not positional indices. + +### EvalTournament + +- Constructed with the correct number of players and the game criterion. +- `get_player_by_idx` returns the player with the matching `idx` and correct `item`. +- `get_player_by_idx` raises `ValueError` for an unknown `idx`. +- When no strategy is provided, `adaptive_uncertainty_strategy` is invoked. +- A custom strategy function receives `(players, game, agent, model_settings)` positional args. +- Extra kwargs (e.g., `max_standard_deviation`, `alpha`) are forwarded to the strategy. +- After `run()`, `tournament.players` is updated to the scored players returned by the strategy. + +### BradleyTerryEvaluator + +- Default init: `OpenAIChatModel` on Ollama, `temperature=0.0`, `timeout=300`, default `criterion` and `max_standard_deviation=2.0`. +- Custom `criterion` and `max_standard_deviation` stored. +- Custom `OpenAIChatModel` instance is used and reflected on the internal agent. +- Model string (e.g., `"openai:gpt-4o-mini"`) accepted. +- Empty player list returns `Readout(passed=True, details={"message": "No players to evaluate"})`. +- With one baseline case and one novel response, creates a tournament with the correct criterion and `max_standard_deviation`, returns a `Readout`. +- Conforms to `Evaluator` protocol: callable, `__call__` is a coroutine function. + +### BradleyTerry Strategy Integration (ollama) + +Requires Ollama. All integration tests are marked `@pytest.mark.ollama`. + +- `EvalGame` integration: running a game between vanilla and a creative ice cream flavour returns the expected winner index. +- `EvalTournament` integration: running the default strategy scores all players with non-`None` float scores; running `random_sampling_strategy` with `fraction_of_games=0.3` also scores all players. +- `random_sampling_strategy` parametrized over `fraction_of_games=None`, `0.3`, and an out-of-range value; all produce float scores for every player. +- `round_robin_strategy` with `number_of_rounds=1` produces float scores for every player. +- `adaptive_uncertainty_strategy` with `max_standard_deviation=1.0` and `alpha=0.01` produces float scores for every player. + +## Pairwise Evaluator Tests + +Unit tests in `tests/evaluators/test_pairwise.py`. + +### PairwiseEvaluator + +- Default init: `OpenAIChatModel` on Ollama, `temperature=0.0`, `timeout=300`, default criterion. +- Custom criterion stored. +- Custom `OpenAIChatModel` used and reflected on the internal agent. +- Model string accepted. +- Empty baseline and novel lists: returns `Readout(passed=False)` with empty win lists. +- Novel wins all comparisons (`"B"` every time): `passed=True`, `wins_novel=[True, True]`. +- Baseline wins: `passed=False`, `wins_novel=[False]`. +- Tie (one win each): `passed=False` because novel must strictly exceed baseline. +- Raises `AssertionError` with `"Mismatch in response counts"` when baseline and novel counts differ. +- Novel responses with `None` output are skipped; if counts then match baseline (zero), no error. +- Prompt sent to agent contains the criterion, baseline text, and novel text. +- Conforms to `Evaluator` protocol: callable, `__call__` is a coroutine function. + +## Config Tests + +Tests in `tests/test_config.py` for the `Config` pydantic-settings model. + +- Default values: `ollama_base_url="http://localhost:11434"`, `ollama_model="qwen2.5:14b"` when no env vars are set. +- Env override: `OLLAMA_BASE_URL` and `OLLAMA_MODEL` are read from environment variables. +- Case-insensitive: lowercase env var names are accepted. +- Extra env vars are silently ignored. +- Both fields have non-`None` descriptions. +- Module-level `config` instance is a `Config` with non-empty field values. + +## Logger Tests + +Tests in `tests/test_logger.py` for the `pytest_assay` logger. + +- `logger` is an instance of `logging.Logger`. +- Logger name is `"pytest_assay"`. +- A `NullHandler` is registered on the `pytest_assay` root logger (library best practice — no output unless the host configures it). +- `logger.info()` and `logger.debug()` calls do not raise. + +## Plugin Integration Tests + +End-to-end tests against a live Ollama instance in `tests/test_plugin_integration.py`. All marked `@pytest.mark.ollama` and `@pytest.mark.asyncio`. + +A shared `generate_evaluation_cases()` generator produces ten research-topic cases. An agent generates search queries using a creative prompt. Three evaluators are exercised: + +- `test_integration_pairwiseevaluator`: uses `PairwiseEvaluator` with a creativity criterion; verifies the full plugin lifecycle produces a `.readout.json` on disk. +- `test_integration_bradleyterryevaluator`: uses `BradleyTerryEvaluator` with the same creativity criterion and `max_standard_deviation=2.1`. +- `test_integration_lengthevaluator`: uses a user-defined `LengthEvaluator` (not part of the package) that passes when a majority of novel responses are longer than their baseline counterparts; demonstrates the custom evaluator extension point. From 9d0636ed2668348b0753a83e49d0ee0f25e1e2db Mon Sep 17 00:00:00 2001 From: lars20070 Date: Tue, 17 Mar 2026 10:22:56 -0700 Subject: [PATCH 06/52] add backlinks from codebase to knowledge base --- lat.md/evaluators.md | 4 ++++ lat.md/pytest-plugin.md | 4 ++++ lat.md/tests.md | 4 ++++ src/pytest_assay/evaluators/bradleyterry.py | 9 +++++++++ src/pytest_assay/evaluators/pairwise.py | 4 ++++ src/pytest_assay/models.py | 3 +++ src/pytest_assay/plugin.py | 12 ++++++++++++ tests/evaluators/test_bradleyterry.py | 5 +++++ tests/evaluators/test_pairwise.py | 1 + tests/test_config.py | 1 + tests/test_logger.py | 1 + tests/test_models.py | 4 ++++ tests/test_plugin.py | 9 +++++++++ tests/test_plugin_integration.py | 1 + 14 files changed, 62 insertions(+) diff --git a/lat.md/evaluators.md b/lat.md/evaluators.md index f9918a9..0e48042 100644 --- a/lat.md/evaluators.md +++ b/lat.md/evaluators.md @@ -1,3 +1,7 @@ +--- +lat: + require-code-mention: true +--- # Evaluators Evaluators compare captured agent responses against a stored baseline and produce a `Readout`. They are async callables conforming to the `Evaluator` protocol defined in [[src/pytest_assay/models.py#Evaluator]]. The plugin calls the evaluator in `_run_evaluation` via `asyncio.run(evaluator(eval_input))`. diff --git a/lat.md/pytest-plugin.md b/lat.md/pytest-plugin.md index 511f41d..82b07fe 100644 --- a/lat.md/pytest-plugin.md +++ b/lat.md/pytest-plugin.md @@ -1,3 +1,7 @@ +--- +lat: + require-code-mention: true +--- # Pytest Plugin The pytest-assay plugin hooks into the pytest lifecycle to intercept `Agent.run()` calls, capture model outputs, and trigger evaluation or baseline serialization after each test. diff --git a/lat.md/tests.md b/lat.md/tests.md index b4e9846..c3b0168 100644 --- a/lat.md/tests.md +++ b/lat.md/tests.md @@ -1,3 +1,7 @@ +--- +lat: + require-code-mention: true +--- # Tests Test suite for pytest-assay. Unit tests use `pytest-mock` and `AsyncMock`; integration tests require a local Ollama instance and are gated by `@pytest.mark.ollama`. diff --git a/src/pytest_assay/evaluators/bradleyterry.py b/src/pytest_assay/evaluators/bradleyterry.py index 2935646..466cdbb 100644 --- a/src/pytest_assay/evaluators/bradleyterry.py +++ b/src/pytest_assay/evaluators/bradleyterry.py @@ -80,12 +80,14 @@ EVALUATION_GAME_PROMPT = " {criterion} \n {a} \n {b} " +# @lat: [[evaluators#Internal Models#EvalPlayer]] class EvalPlayer(BaseModel): idx: int = Field(..., description="unique identifier for the player") item: str = Field(..., description="item to be scored") score: float | None = Field(default=None, description="Bradley-Terry strength score for the item") +# @lat: [[evaluators#Internal Models#EvalGame]] class EvalGame(BaseModel): criterion: str = Field(..., description="evaluation criterion on which players should be judged") @@ -110,6 +112,7 @@ async def run(self, players: tuple[EvalPlayer, EvalPlayer], agent: Agent[None, A ] +# @lat: [[evaluators#Tournament Strategies#Random Sampling Strategy]] async def random_sampling_strategy( players: list[EvalPlayer], game: EvalGame, @@ -168,6 +171,7 @@ async def random_sampling_strategy( return players +# @lat: [[evaluators#Tournament Strategies#Round Robin Strategy]] async def round_robin_strategy( players: list[EvalPlayer], game: EvalGame, @@ -225,6 +229,7 @@ async def round_robin_strategy( return players +# @lat: [[evaluators#Tournament Strategies#Adaptive Uncertainty Strategy]] async def adaptive_uncertainty_strategy( players: list[EvalPlayer], game: EvalGame, @@ -363,6 +368,7 @@ async def adaptive_uncertainty_strategy( return players +# @lat: [[evaluators#Internal Models#EvalTournament]] class EvalTournament(BaseModel): game: EvalGame = Field(..., description="game to be played in the tournament") players: list[EvalPlayer] = Field(..., description="players participating in the tournament") @@ -430,6 +436,7 @@ class BradleyTerryEvaluator: Configuration is set at instantiation; __call__ runs the evaluation. """ + # @lat: [[evaluators#BradleyTerryEvaluator#Configuration]] def __init__( self, model: str | OpenAIChatModel | None = None, @@ -466,6 +473,8 @@ def __init__( self.criterion = criterion self.max_standard_deviation = max_standard_deviation + # @lat: [[evaluators#BradleyTerryEvaluator#How it works]] + # @lat: [[evaluators#BradleyTerryEvaluator#Readout details]] async def __call__(self, input: EvaluatorInput) -> Readout: """ Run Bradley-Terry tournament on baseline and novel responses. diff --git a/src/pytest_assay/evaluators/pairwise.py b/src/pytest_assay/evaluators/pairwise.py index d3a10ad..3974bce 100644 --- a/src/pytest_assay/evaluators/pairwise.py +++ b/src/pytest_assay/evaluators/pairwise.py @@ -71,6 +71,7 @@ """ +# @lat: [[evaluators#PairwiseEvaluator#Comparison with BradleyTerry]] class PairwiseEvaluator: """ Evaluates test outputs using pairwise comparison. @@ -78,6 +79,7 @@ class PairwiseEvaluator: Configuration is set at instantiation; __call__ runs the evaluation. """ + # @lat: [[evaluators#PairwiseEvaluator#Configuration]] def __init__( self, model: str | OpenAIChatModel | None = None, @@ -111,6 +113,8 @@ def __init__( ) self.criterion = criterion + # @lat: [[evaluators#PairwiseEvaluator#How it works]] + # @lat: [[evaluators#PairwiseEvaluator#Readout details]] async def __call__(self, input: EvaluatorInput) -> Readout: """ Run pairwise comparison of baseline and novel responses. diff --git a/src/pytest_assay/models.py b/src/pytest_assay/models.py index 7fcbbf2..421506b 100644 --- a/src/pytest_assay/models.py +++ b/src/pytest_assay/models.py @@ -9,6 +9,7 @@ from pydantic_evals import Dataset +# @lat: [[evaluators#EvaluatorInput]] class EvaluatorInput(BaseModel): """Input data passed to evaluators.""" @@ -16,6 +17,7 @@ class EvaluatorInput(BaseModel): agent_responses: list[AgentRunResult[Any]] +# @lat: [[evaluators#Readout]] class Readout(BaseModel): """Result from an evaluator execution.""" @@ -33,6 +35,7 @@ def to_file(self, path: Path) -> None: json.dump(self.model_dump(), f, indent=2) +# @lat: [[evaluators#Evaluator Protocol]] class Evaluator(Protocol): """ Protocol for evaluation strategy callables. diff --git a/src/pytest_assay/plugin.py b/src/pytest_assay/plugin.py index 24d2130..9ef429c 100644 --- a/src/pytest_assay/plugin.py +++ b/src/pytest_assay/plugin.py @@ -16,15 +16,18 @@ from .logger import logger from .models import AssayContext, Evaluator, EvaluatorInput, Readout # noqa: F401 +# @lat: [[pytest-plugin#Assay Modes]] # Modes for the assay plugin. "evaluate" is the default mode. ASSAY_MODES = ("evaluate", "new_baseline") +# @lat: [[pytest-plugin#Stash Keys]] # Key to stash the baseline dataset from previous runs BASELINE_DATASET_KEY = pytest.StashKey[Dataset]() # Key to stash Agent responses during assay tests AGENT_RESPONSES_KEY = pytest.StashKey[list[AgentRunResult[Any]]]() +# @lat: [[pytest-plugin#ContextVar Tunnel]] # Items stashed by the _wrapped_run wrapper. Required for async safety. # _current_item_var defined at module level. But items are stored locally to the current execution context. _current_item_var: contextvars.ContextVar[Item | None] = contextvars.ContextVar("_current_item", default=None) @@ -35,6 +38,8 @@ # ============================================================================= +# @lat: [[pytest-plugin#Baseline File Layout]] +# @lat: [[pytest-plugin#_path]] def _path(item: Item) -> Path: """ Compute assay file path: /assays//.json. @@ -48,6 +53,7 @@ def _path(item: Item) -> Path: return path.parent / "assays" / module_name / f"{test_name}.json" +# @lat: [[pytest-plugin#_is_assay]] def _is_assay(item: Item) -> bool: """ Check if item is a valid assay unit test: @@ -62,6 +68,7 @@ def _is_assay(item: Item) -> bool: return item.get_closest_marker("assay") is not None +# @lat: [[pytest-plugin#_serialize_baseline]] def _serialize_baseline(item: Item, assay: AssayContext) -> None: """ Serialize the dataset to disk in 'new_baseline' mode. @@ -89,6 +96,7 @@ def _serialize_baseline(item: Item, assay: AssayContext) -> None: assay.dataset.to_file(assay.path, schema_path=None) +# @lat: [[pytest-plugin#_run_evaluation]] def _run_evaluation(item: Item, assay: AssayContext) -> None: """ Run the configured evaluator on captured responses in (default) 'evaluate' mode. @@ -148,6 +156,7 @@ def pytest_addoption(parser: Parser) -> None: ) +# @lat: [[pytest-plugin#Marker]] def pytest_configure(config: Config) -> None: """ Register the @pytest.mark.assay marker. @@ -170,6 +179,7 @@ def pytest_configure(config: Config) -> None: @pytest.hookimpl(tryfirst=True) +# @lat: [[pytest-plugin#Lifecycle#Setup — pytest_runtest_setup]] def pytest_runtest_setup(item: Item) -> None: """ Load dataset and inject AssayContext into the test function. @@ -217,6 +227,7 @@ def pytest_runtest_setup(item: Item) -> None: @pytest.hookimpl(hookwrapper=True) +# @lat: [[pytest-plugin#Lifecycle#Call — pytest_runtest_call]] def pytest_runtest_call(item: Item) -> Generator[None, None, None]: """ Intercepts Agent.run() calls during test execution to record model outputs. @@ -297,6 +308,7 @@ async def _instrumented_agent_run( @pytest.hookimpl(hookwrapper=True) +# @lat: [[pytest-plugin#Lifecycle#Teardown — pytest_runtest_teardown]] def pytest_runtest_teardown(item: Item, nextitem: Item | None) -> Generator[None, None, None]: """ Hookwrapper for test teardown that runs evaluation or baseline serialization. diff --git a/tests/evaluators/test_bradleyterry.py b/tests/evaluators/test_bradleyterry.py index 091ce7d..7ab914f 100644 --- a/tests/evaluators/test_bradleyterry.py +++ b/tests/evaluators/test_bradleyterry.py @@ -40,6 +40,7 @@ # --------------------------------------------------------------------------- +# @lat: [[tests#BradleyTerry Evaluator Tests#EvalPlayer]] class TestEvalPlayer: """Unit tests for EvalPlayer.""" @@ -68,6 +69,7 @@ def test_empty_item(self) -> None: assert player.item == "" +# @lat: [[tests#BradleyTerry Evaluator Tests#EvalGame]] class TestEvalGame: """Unit tests for EvalGame (agent interaction mocked).""" @@ -129,6 +131,7 @@ async def test_run_preserves_player_idx_order(self, make_mock_agent: Callable[.. assert result == (7, 3) +# @lat: [[tests#BradleyTerry Evaluator Tests#EvalTournament]] class TestEvalTournament: """Unit tests for EvalTournament (strategy mocked).""" @@ -241,6 +244,7 @@ async def test_run_updates_players_attribute( assert ice_cream_tournament.players is scored +# @lat: [[tests#BradleyTerry Evaluator Tests#BradleyTerryEvaluator]] class TestBradleyTerryEvaluator: """Unit tests for BradleyTerryEvaluator.""" @@ -378,6 +382,7 @@ async def test_protocol_conformance(self) -> None: @pytest.mark.ollama @pytest.mark.asyncio +# @lat: [[tests#BradleyTerry Evaluator Tests#BradleyTerry Strategy Integration (ollama)]] async def test_evalgame_integration(ice_cream_players: list[EvalPlayer], evaluation_agent: Agent[None, Any], model_settings: ModelSettings) -> None: """Test the EvalGame class.""" logger.info("Testing EvalGame() class") diff --git a/tests/evaluators/test_pairwise.py b/tests/evaluators/test_pairwise.py index f7f03c0..e625896 100644 --- a/tests/evaluators/test_pairwise.py +++ b/tests/evaluators/test_pairwise.py @@ -24,6 +24,7 @@ # --------------------------------------------------------------------------- +# @lat: [[tests#Pairwise Evaluator Tests#PairwiseEvaluator]] class TestPairwiseEvaluator: """Unit tests for PairwiseEvaluator.""" diff --git a/tests/test_config.py b/tests/test_config.py index acd0424..8f5e5e8 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -5,6 +5,7 @@ from pytest_assay.config import Config, config +# @lat: [[tests#Config Tests]] def test_config_default_values() -> None: """Test that Config has correct default values.""" with patch.dict("os.environ", {}, clear=True): diff --git a/tests/test_logger.py b/tests/test_logger.py index d48d7d4..2102130 100644 --- a/tests/test_logger.py +++ b/tests/test_logger.py @@ -3,6 +3,7 @@ from pytest_assay.logger import logger +# @lat: [[tests#Logger Tests]] def test_logger_is_stdlib_logger() -> None: """Test that logger is a stdlib logging.Logger.""" assert isinstance(logger, logging.Logger) diff --git a/tests/test_models.py b/tests/test_models.py index ef556bd..e2075e6 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -23,6 +23,7 @@ from pytest_assay.models import AssayContext, Evaluator, EvaluatorInput, Readout +# @lat: [[tests#Model Unit Tests#EvaluatorInput]] class TestEvaluatorInput: """Tests for the EvaluatorInput model.""" @@ -122,6 +123,7 @@ def test_with_none_output_response(self) -> None: assert eval_input.agent_responses[0].output is None +# @lat: [[tests#Model Unit Tests#Readout]] class TestReadout: """Tests for the Readout model.""" @@ -198,6 +200,7 @@ def test_to_file_with_empty_details(self, tmp_path: Path) -> None: assert data["details"] == {} +# @lat: [[tests#Model Unit Tests#Evaluator Protocol]] class TestEvaluator: """Tests for the Evaluator protocol. @@ -215,6 +218,7 @@ def test_protocol_has_expected_structure(self) -> None: assert hasattr(Evaluator, "__protocol_attrs__") or callable(Evaluator) +# @lat: [[tests#Model Unit Tests#AssayContext]] class TestAssayContext: """Tests for the AssayContext model.""" diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 192c2f1..1c71976 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -54,6 +54,7 @@ def _drive_hookwrapper(item: Item, nextitem: Item | None = None) -> None: # ============================================================================= +# @lat: [[tests#Plugin Unit Tests#_path]] def test_path_computation(mocker: MockerFixture) -> None: """Test _path computes the correct assay file path.""" mock_item = mocker.MagicMock(spec=Item) @@ -100,6 +101,7 @@ def test_path_computation_nested_directory(mocker: MockerFixture) -> None: assert result == expected +# @lat: [[tests#Plugin Unit Tests#_is_assay]] def test_is_assay_with_marker(mocker: MockerFixture) -> None: """Test _is_assay returns True for Function items with assay marker.""" mock_item = mocker.MagicMock(spec=Function) @@ -131,6 +133,7 @@ def test_is_assay_non_function_item(mocker: MockerFixture) -> None: # ============================================================================= +# @lat: [[tests#Plugin Unit Tests#pytest_addoption]] def test_pytest_addoption(mocker: MockerFixture) -> None: """Test pytest_addoption registers the --assay-mode option correctly.""" mock_parser = mocker.MagicMock() @@ -151,6 +154,7 @@ def test_pytest_addoption(mocker: MockerFixture) -> None: # ============================================================================= +# @lat: [[tests#Plugin Unit Tests#pytest_configure]] def test_pytest_configure(mocker: MockerFixture) -> None: """Test pytest_configure registers the assay marker.""" mock_config = mocker.MagicMock() @@ -169,6 +173,7 @@ def test_pytest_configure(mocker: MockerFixture) -> None: # ============================================================================= +# @lat: [[tests#Plugin Unit Tests#pytest_runtest_setup]] def test_pytest_runtest_setup_non_assay_item(mocker: MockerFixture) -> None: """Test pytest_runtest_setup skips non-assay items.""" mock_item = mocker.MagicMock(spec=Item) @@ -392,6 +397,7 @@ def test_pytest_runtest_setup_baseline_stash_is_copy(mocker: MockerFixture, tmp_ # ============================================================================= +# @lat: [[tests#Plugin Unit Tests#pytest_runtest_call]] def test_pytest_runtest_call_non_function_item(mocker: MockerFixture) -> None: """Test pytest_runtest_call yields immediately for non-Function items.""" mock_item = mocker.MagicMock(spec=Item) @@ -578,6 +584,7 @@ async def test_instrumented_agent_run_no_item_in_context(mocker: MockerFixture) # ============================================================================= +# @lat: [[tests#Plugin Unit Tests#pytest_runtest_teardown — new_baseline path]] def test_pytest_runtest_teardown_non_assay_item(mocker: MockerFixture) -> None: """Test pytest_runtest_teardown skips non-assay items.""" mock_item = mocker.MagicMock(spec=Item) @@ -736,6 +743,7 @@ def test_pytest_runtest_teardown_new_baseline_no_responses(mocker: MockerFixture # ============================================================================= +# @lat: [[tests#Plugin Unit Tests#pytest_runtest_teardown — evaluate path]] def test_pytest_runtest_teardown_evaluate_mode(mocker: MockerFixture, tmp_path: Path) -> None: """Test pytest_runtest_teardown does not serialize dataset in evaluate mode.""" dataset_path = tmp_path / "assays" / "test.json" @@ -890,6 +898,7 @@ async def failing_evaluator(item: Item) -> Readout: # ============================================================================= +# @lat: [[tests#Plugin Unit Tests#Full Workflow]] def test_full_assay_workflow_with_topic_generation(mocker: MockerFixture, tmp_path: Path) -> None: """ Test a realistic assay workflow similar to test_curiosity.py. diff --git a/tests/test_plugin_integration.py b/tests/test_plugin_integration.py index 4fddfcc..dcc5ac3 100644 --- a/tests/test_plugin_integration.py +++ b/tests/test_plugin_integration.py @@ -118,6 +118,7 @@ async def _run_query_generation(context: AssayContext, model_settings: ModelSett ), ) @pytest.mark.asyncio +# @lat: [[tests#Plugin Integration Tests]] async def test_integration_pairwiseevaluator(context: AssayContext, model_settings: ModelSettings) -> None: """ Integration test for the assay pytest plugin with PairwiseEvaluator evaluator. From 94a2b5f73f8c0ae61293a7ff41d39a4a407ca048 Mon Sep 17 00:00:00 2001 From: lars20070 Date: Tue, 17 Mar 2026 10:53:52 -0700 Subject: [PATCH 07/52] refactor knowledge base for tests --- .cursor/rules/lat.md | 4 +- AGENTS.md | 4 +- CLAUDE.md | 4 +- lat.md/tests.md | 220 ------------------- lat.md/tests/bradleyterry-evaluator-tests.md | 53 +++++ lat.md/tests/config-tests.md | 14 ++ lat.md/tests/logger-tests.md | 12 + lat.md/tests/model-unit-tests.md | 41 ++++ lat.md/tests/pairwise-evaluator-tests.md | 22 ++ lat.md/tests/plugin-integration-tests.md | 13 ++ lat.md/tests/plugin-unit-tests.md | 79 +++++++ lat.md/tests/tests.md | 11 + tests/evaluators/test_bradleyterry.py | 10 +- tests/evaluators/test_pairwise.py | 2 +- tests/test_config.py | 2 +- tests/test_logger.py | 2 +- tests/test_models.py | 8 +- tests/test_plugin.py | 18 +- tests/test_plugin_integration.py | 2 +- 19 files changed, 273 insertions(+), 248 deletions(-) delete mode 100644 lat.md/tests.md create mode 100644 lat.md/tests/bradleyterry-evaluator-tests.md create mode 100644 lat.md/tests/config-tests.md create mode 100644 lat.md/tests/logger-tests.md create mode 100644 lat.md/tests/model-unit-tests.md create mode 100644 lat.md/tests/pairwise-evaluator-tests.md create mode 100644 lat.md/tests/plugin-integration-tests.md create mode 100644 lat.md/tests/plugin-unit-tests.md create mode 100644 lat.md/tests/tests.md diff --git a/.cursor/rules/lat.md b/.cursor/rules/lat.md index f8bc6c8..f6ab28c 100644 --- a/.cursor/rules/lat.md +++ b/.cursor/rules/lat.md @@ -60,11 +60,11 @@ Every section MUST have a description — at least one sentence explaining what Each test in code should reference its spec with exactly one comment placed next to the relevant test — not at the top of the file: ```python -# @lat: [[tests#User login#Rejects expired tokens]] +# @lat: [[tests/tests#User login#Rejects expired tokens]] def test_rejects_expired_tokens(): ... -# @lat: [[tests#User login#Handles missing password]] +# @lat: [[tests/tests#User login#Handles missing password]] def test_handles_missing_password(): ... ``` diff --git a/AGENTS.md b/AGENTS.md index 7db9102..e83a5e9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -62,11 +62,11 @@ Every section MUST have a description — at least one sentence explaining what Each test in code should reference its spec with exactly one comment placed next to the relevant test — not at the top of the file: ```python -# @lat: [[tests#User login#Rejects expired tokens]] +# @lat: [[tests/tests#User login#Rejects expired tokens]] def test_rejects_expired_tokens(): ... -# @lat: [[tests#User login#Handles missing password]] +# @lat: [[tests/tests#User login#Handles missing password]] def test_handles_missing_password(): ... ``` diff --git a/CLAUDE.md b/CLAUDE.md index 7db9102..e83a5e9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -62,11 +62,11 @@ Every section MUST have a description — at least one sentence explaining what Each test in code should reference its spec with exactly one comment placed next to the relevant test — not at the top of the file: ```python -# @lat: [[tests#User login#Rejects expired tokens]] +# @lat: [[tests/tests#User login#Rejects expired tokens]] def test_rejects_expired_tokens(): ... -# @lat: [[tests#User login#Handles missing password]] +# @lat: [[tests/tests#User login#Handles missing password]] def test_handles_missing_password(): ... ``` diff --git a/lat.md/tests.md b/lat.md/tests.md deleted file mode 100644 index c3b0168..0000000 --- a/lat.md/tests.md +++ /dev/null @@ -1,220 +0,0 @@ ---- -lat: - require-code-mention: true ---- -# Tests - -Test suite for pytest-assay. Unit tests use `pytest-mock` and `AsyncMock`; integration tests require a local Ollama instance and are gated by `@pytest.mark.ollama`. - -## Plugin Unit Tests - -[[src/pytest_assay/plugin.py]] helper and hook coverage in `tests/test_plugin.py`. - -### _path - -Tests for the `_path()` helper that computes `/assays//.json`. - -- Standard path: verifies the path is absolute, ends with `.json`, and contains the `assays` directory. -- Parametrized test name: verifies that `[param1-param2]` suffixes are stripped so parametrized variants share the same file name root. -- Nested directory: verifies that deeply nested test module paths resolve correctly. - -### _is_assay - -Tests for the `_is_assay()` guard that allows only `Function` items with the `assay` marker to proceed. - -- Returns `True` for a `Function` item with the `assay` marker present. -- Returns `False` for a `Function` item where `get_closest_marker` returns `None`. -- Returns `False` for a non-`Function` item (e.g., a plain `Item`) regardless of markers. - -### pytest_addoption - -Verifies that `pytest_addoption` calls `parser.addoption` exactly once with `--assay-mode`, default `"evaluate"`, and choices `("evaluate", "new_baseline")`. - -### pytest_configure - -Verifies that `pytest_configure` calls `config.addinivalue_line` with `"markers"` and a string containing `"assay"`. - -### pytest_runtest_setup - -Tests for the setup hook that loads the dataset and injects `AssayContext`. - -- Skips non-assay items without touching `funcargs`. -- Loads an existing dataset file: verifies `BASELINE_DATASET_KEY` is stashed, `AssayContext` is injected with the correct dataset, path, and mode, and case content is intact. -- Calls the generator when no file exists: verifies the generator is called once, the dataset file is created and reloadable, and `AssayContext` reflects the generated cases. -- Raises `TypeError` when the generator returns a non-`Dataset` value. -- Falls back to an empty `Dataset(cases=[])` when neither a file nor a generator is provided. -- Baseline is a deep copy: mutating `assay_ctx.dataset` does not change `item.stash[BASELINE_DATASET_KEY]`. - -### pytest_runtest_call - -Tests for the hookwrapper that monkeypatches `Agent.run()`. - -- Yields immediately (no patching) for non-`Function` items. -- Yields immediately for `Function` items without the `assay` marker. -- Initializes `item.stash[AGENT_RESPONSES_KEY]` to `[]` before yielding. -- Sets `_current_item_var` to the current item while inside the yield; resets it to `None` after. -- `Agent.run` is replaced by the instrumented wrapper during the yield, then restored to the original method in the `finally` block. -- Calling the instrumented `Agent.run` captures the result in `AGENT_RESPONSES_KEY` and passes the return value through to the caller without infinite recursion. -- When `_current_item_var` is manually cleared to `None`, the instrumented wrapper still calls the original and returns the result but does not append to any stash. - -### pytest_runtest_teardown — new_baseline path - -Tests for teardown when `assay_mode == "new_baseline"`. - -- Skips non-assay items without side effects. -- Handles missing `AssayContext` in `funcargs` gracefully (no exception). -- Merges captured responses into `case.expected_output` and serializes the dataset to disk; verifies the JSON file is reloadable and contains the correct `expected_output` values. -- Skips serialization and logs an error when the number of captured responses does not match the number of dataset cases. -- Writes an empty string for `None` response output instead of failing. -- Skips serialization and logs an error when the call phase ran but captured zero responses against a non-empty dataset. - -### pytest_runtest_teardown — evaluate path - -Tests for teardown when `assay_mode == "evaluate"`. - -- Does not write a dataset file; only writes a `.readout.json` file. -- Calls the evaluator with an `EvaluatorInput` and serializes the returned `Readout` to `.readout.json`; verifies file content. -- Uses `BradleyTerryEvaluator()` as the default evaluator when none is specified in marker kwargs. -- Logs an error and returns early for a non-callable evaluator value. -- Catches exceptions from the evaluator and logs them via `logger.exception` without propagating. - -### Full Workflow - -End-to-end test covering setup → call → teardown in `new_baseline` mode: a generator creates cases, `pytest_runtest_setup` injects the context, simulated `Agent.run()` responses are stored in the stash, and teardown serializes the merged dataset with the correct `expected_output` per case. - -## Model Unit Tests - -Tests for data models in `tests/test_models.py`. - -### EvaluatorInput - -- Creation with `baseline_dataset=None` and a single response. -- Creation with a populated `Dataset` and verification of case count and names. -- Empty `agent_responses` list accepted. -- Multiple responses stored in order. -- `ValidationError` raised when all required fields are omitted. -- `ValidationError` raised when `agent_responses` is omitted. -- `ValidationError` raised when `baseline_dataset` is omitted. -- Exactly two model fields (`baseline_dataset`, `agent_responses`) are defined. -- A response with `output=None` is stored without error. - -### Readout - -- Default values: `passed=True`, `details=None`. -- Custom values accepted for both fields. -- `model_dump()` returns the correct dict for custom and default values. -- `to_file()` writes valid JSON; verifies `passed` and `details` fields in the file. -- `to_file()` with `details=None` writes `null`. -- `to_file()` with `details={}` writes an empty object. - -### Evaluator Protocol - -- `Evaluator` is callable (protocol is importable and callable as a type). -- Protocol has the expected structure (`__protocol_attrs__` or callable). - -### AssayContext - -- Created with all required fields; verifies attribute values. -- Default `assay_mode` is `"evaluate"`. -- `assay_mode="new_baseline"` accepted. -- Dataset with cases: verifies case count, field access, mutability (cases can be cleared and extended). -- `ValidationError` raised when required fields are omitted. - -## BradleyTerry Evaluator Tests - -Unit and integration tests in `tests/evaluators/test_bradleyterry.py`. - -### EvalPlayer - -- Created with required fields; `score` defaults to `None`. -- Created with explicit `score`. -- `score` is mutable after creation. -- Negative `idx` is permitted (it is an identifier, not a position). -- Empty `item` string is permitted. - -### EvalGame - -- `criterion` is stored on the model. -- Returns `(player_A_idx, player_B_idx)` when the agent picks `"A"`. -- Returns `(player_B_idx, player_A_idx)` when the agent picks `"B"`. -- The prompt sent to the agent contains both player items and the criterion string. -- Result tuple uses actual `idx` values, not positional indices. - -### EvalTournament - -- Constructed with the correct number of players and the game criterion. -- `get_player_by_idx` returns the player with the matching `idx` and correct `item`. -- `get_player_by_idx` raises `ValueError` for an unknown `idx`. -- When no strategy is provided, `adaptive_uncertainty_strategy` is invoked. -- A custom strategy function receives `(players, game, agent, model_settings)` positional args. -- Extra kwargs (e.g., `max_standard_deviation`, `alpha`) are forwarded to the strategy. -- After `run()`, `tournament.players` is updated to the scored players returned by the strategy. - -### BradleyTerryEvaluator - -- Default init: `OpenAIChatModel` on Ollama, `temperature=0.0`, `timeout=300`, default `criterion` and `max_standard_deviation=2.0`. -- Custom `criterion` and `max_standard_deviation` stored. -- Custom `OpenAIChatModel` instance is used and reflected on the internal agent. -- Model string (e.g., `"openai:gpt-4o-mini"`) accepted. -- Empty player list returns `Readout(passed=True, details={"message": "No players to evaluate"})`. -- With one baseline case and one novel response, creates a tournament with the correct criterion and `max_standard_deviation`, returns a `Readout`. -- Conforms to `Evaluator` protocol: callable, `__call__` is a coroutine function. - -### BradleyTerry Strategy Integration (ollama) - -Requires Ollama. All integration tests are marked `@pytest.mark.ollama`. - -- `EvalGame` integration: running a game between vanilla and a creative ice cream flavour returns the expected winner index. -- `EvalTournament` integration: running the default strategy scores all players with non-`None` float scores; running `random_sampling_strategy` with `fraction_of_games=0.3` also scores all players. -- `random_sampling_strategy` parametrized over `fraction_of_games=None`, `0.3`, and an out-of-range value; all produce float scores for every player. -- `round_robin_strategy` with `number_of_rounds=1` produces float scores for every player. -- `adaptive_uncertainty_strategy` with `max_standard_deviation=1.0` and `alpha=0.01` produces float scores for every player. - -## Pairwise Evaluator Tests - -Unit tests in `tests/evaluators/test_pairwise.py`. - -### PairwiseEvaluator - -- Default init: `OpenAIChatModel` on Ollama, `temperature=0.0`, `timeout=300`, default criterion. -- Custom criterion stored. -- Custom `OpenAIChatModel` used and reflected on the internal agent. -- Model string accepted. -- Empty baseline and novel lists: returns `Readout(passed=False)` with empty win lists. -- Novel wins all comparisons (`"B"` every time): `passed=True`, `wins_novel=[True, True]`. -- Baseline wins: `passed=False`, `wins_novel=[False]`. -- Tie (one win each): `passed=False` because novel must strictly exceed baseline. -- Raises `AssertionError` with `"Mismatch in response counts"` when baseline and novel counts differ. -- Novel responses with `None` output are skipped; if counts then match baseline (zero), no error. -- Prompt sent to agent contains the criterion, baseline text, and novel text. -- Conforms to `Evaluator` protocol: callable, `__call__` is a coroutine function. - -## Config Tests - -Tests in `tests/test_config.py` for the `Config` pydantic-settings model. - -- Default values: `ollama_base_url="http://localhost:11434"`, `ollama_model="qwen2.5:14b"` when no env vars are set. -- Env override: `OLLAMA_BASE_URL` and `OLLAMA_MODEL` are read from environment variables. -- Case-insensitive: lowercase env var names are accepted. -- Extra env vars are silently ignored. -- Both fields have non-`None` descriptions. -- Module-level `config` instance is a `Config` with non-empty field values. - -## Logger Tests - -Tests in `tests/test_logger.py` for the `pytest_assay` logger. - -- `logger` is an instance of `logging.Logger`. -- Logger name is `"pytest_assay"`. -- A `NullHandler` is registered on the `pytest_assay` root logger (library best practice — no output unless the host configures it). -- `logger.info()` and `logger.debug()` calls do not raise. - -## Plugin Integration Tests - -End-to-end tests against a live Ollama instance in `tests/test_plugin_integration.py`. All marked `@pytest.mark.ollama` and `@pytest.mark.asyncio`. - -A shared `generate_evaluation_cases()` generator produces ten research-topic cases. An agent generates search queries using a creative prompt. Three evaluators are exercised: - -- `test_integration_pairwiseevaluator`: uses `PairwiseEvaluator` with a creativity criterion; verifies the full plugin lifecycle produces a `.readout.json` on disk. -- `test_integration_bradleyterryevaluator`: uses `BradleyTerryEvaluator` with the same creativity criterion and `max_standard_deviation=2.1`. -- `test_integration_lengthevaluator`: uses a user-defined `LengthEvaluator` (not part of the package) that passes when a majority of novel responses are longer than their baseline counterparts; demonstrates the custom evaluator extension point. diff --git a/lat.md/tests/bradleyterry-evaluator-tests.md b/lat.md/tests/bradleyterry-evaluator-tests.md new file mode 100644 index 0000000..61dffc3 --- /dev/null +++ b/lat.md/tests/bradleyterry-evaluator-tests.md @@ -0,0 +1,53 @@ +--- +lat: + require-code-mention: true +--- +# BradleyTerry Evaluator Tests + +Unit and integration tests in `tests/evaluators/test_bradleyterry.py`. + +## EvalPlayer + +- Created with required fields; `score` defaults to `None`. +- Created with explicit `score`. +- `score` is mutable after creation. +- Negative `idx` is permitted (it is an identifier, not a position). +- Empty `item` string is permitted. + +## EvalGame + +- `criterion` is stored on the model. +- Returns `(player_A_idx, player_B_idx)` when the agent picks `"A"`. +- Returns `(player_B_idx, player_A_idx)` when the agent picks `"B"`. +- The prompt sent to the agent contains both player items and the criterion string. +- Result tuple uses actual `idx` values, not positional indices. + +## EvalTournament + +- Constructed with the correct number of players and the game criterion. +- `get_player_by_idx` returns the player with the matching `idx` and correct `item`. +- `get_player_by_idx` raises `ValueError` for an unknown `idx`. +- When no strategy is provided, `adaptive_uncertainty_strategy` is invoked. +- A custom strategy function receives `(players, game, agent, model_settings)` positional args. +- Extra kwargs (e.g., `max_standard_deviation`, `alpha`) are forwarded to the strategy. +- After `run()`, `tournament.players` is updated to the scored players returned by the strategy. + +## BradleyTerryEvaluator + +- Default init: `OpenAIChatModel` on Ollama, `temperature=0.0`, `timeout=300`, default `criterion` and `max_standard_deviation=2.0`. +- Custom `criterion` and `max_standard_deviation` stored. +- Custom `OpenAIChatModel` instance is used and reflected on the internal agent. +- Model string (e.g., `"openai:gpt-4o-mini"`) accepted. +- Empty player list returns `Readout(passed=True, details={"message": "No players to evaluate"})`. +- With one baseline case and one novel response, creates a tournament with the correct criterion and `max_standard_deviation`, returns a `Readout`. +- Conforms to `Evaluator` protocol: callable, `__call__` is a coroutine function. + +## BradleyTerry Strategy Integration (ollama) + +Requires Ollama. All integration tests are marked `@pytest.mark.ollama`. + +- `EvalGame` integration: running a game between vanilla and a creative ice cream flavour returns the expected winner index. +- `EvalTournament` integration: running the default strategy scores all players with non-`None` float scores; running `random_sampling_strategy` with `fraction_of_games=0.3` also scores all players. +- `random_sampling_strategy` parametrized over `fraction_of_games=None`, `0.3`, and an out-of-range value; all produce float scores for every player. +- `round_robin_strategy` with `number_of_rounds=1` produces float scores for every player. +- `adaptive_uncertainty_strategy` with `max_standard_deviation=1.0` and `alpha=0.01` produces float scores for every player. diff --git a/lat.md/tests/config-tests.md b/lat.md/tests/config-tests.md new file mode 100644 index 0000000..a42cdbd --- /dev/null +++ b/lat.md/tests/config-tests.md @@ -0,0 +1,14 @@ +--- +lat: + require-code-mention: true +--- +# Config Tests + +Tests in `tests/test_config.py` for the `Config` pydantic-settings model. + +- Default values: `ollama_base_url="http://localhost:11434"`, `ollama_model="qwen2.5:14b"` when no env vars are set. +- Env override: `OLLAMA_BASE_URL` and `OLLAMA_MODEL` are read from environment variables. +- Case-insensitive: lowercase env var names are accepted. +- Extra env vars are silently ignored. +- Both fields have non-`None` descriptions. +- Module-level `config` instance is a `Config` with non-empty field values. diff --git a/lat.md/tests/logger-tests.md b/lat.md/tests/logger-tests.md new file mode 100644 index 0000000..ff36b18 --- /dev/null +++ b/lat.md/tests/logger-tests.md @@ -0,0 +1,12 @@ +--- +lat: + require-code-mention: true +--- +# Logger Tests + +Tests in `tests/test_logger.py` for the `pytest_assay` logger. + +- `logger` is an instance of `logging.Logger`. +- Logger name is `"pytest_assay"`. +- A `NullHandler` is registered on the `pytest_assay` root logger (library best practice — no output unless the host configures it). +- `logger.info()` and `logger.debug()` calls do not raise. diff --git a/lat.md/tests/model-unit-tests.md b/lat.md/tests/model-unit-tests.md new file mode 100644 index 0000000..3472421 --- /dev/null +++ b/lat.md/tests/model-unit-tests.md @@ -0,0 +1,41 @@ +--- +lat: + require-code-mention: true +--- +# Model Unit Tests + +Tests for data models in `tests/test_models.py`. + +## EvaluatorInput + +- Creation with `baseline_dataset=None` and a single response. +- Creation with a populated `Dataset` and verification of case count and names. +- Empty `agent_responses` list accepted. +- Multiple responses stored in order. +- `ValidationError` raised when all required fields are omitted. +- `ValidationError` raised when `agent_responses` is omitted. +- `ValidationError` raised when `baseline_dataset` is omitted. +- Exactly two model fields (`baseline_dataset`, `agent_responses`) are defined. +- A response with `output=None` is stored without error. + +## Readout + +- Default values: `passed=True`, `details=None`. +- Custom values accepted for both fields. +- `model_dump()` returns the correct dict for custom and default values. +- `to_file()` writes valid JSON; verifies `passed` and `details` fields in the file. +- `to_file()` with `details=None` writes `null`. +- `to_file()` with `details={}` writes an empty object. + +## Evaluator Protocol + +- `Evaluator` is callable (protocol is importable and callable as a type). +- Protocol has the expected structure (`__protocol_attrs__` or callable). + +## AssayContext + +- Created with all required fields; verifies attribute values. +- Default `assay_mode` is `"evaluate"`. +- `assay_mode="new_baseline"` accepted. +- Dataset with cases: verifies case count, field access, mutability (cases can be cleared and extended). +- `ValidationError` raised when required fields are omitted. diff --git a/lat.md/tests/pairwise-evaluator-tests.md b/lat.md/tests/pairwise-evaluator-tests.md new file mode 100644 index 0000000..32d99e9 --- /dev/null +++ b/lat.md/tests/pairwise-evaluator-tests.md @@ -0,0 +1,22 @@ +--- +lat: + require-code-mention: true +--- +# Pairwise Evaluator Tests + +Unit tests in `tests/evaluators/test_pairwise.py`. + +## PairwiseEvaluator + +- Default init: `OpenAIChatModel` on Ollama, `temperature=0.0`, `timeout=300`, default criterion. +- Custom criterion stored. +- Custom `OpenAIChatModel` used and reflected on the internal agent. +- Model string accepted. +- Empty baseline and novel lists: returns `Readout(passed=False)` with empty win lists. +- Novel wins all comparisons (`"B"` every time): `passed=True`, `wins_novel=[True, True]`. +- Baseline wins: `passed=False`, `wins_novel=[False]`. +- Tie (one win each): `passed=False` because novel must strictly exceed baseline. +- Raises `AssertionError` with `"Mismatch in response counts"` when baseline and novel counts differ. +- Novel responses with `None` output are skipped; if counts then match baseline (zero), no error. +- Prompt sent to agent contains the criterion, baseline text, and novel text. +- Conforms to `Evaluator` protocol: callable, `__call__` is a coroutine function. diff --git a/lat.md/tests/plugin-integration-tests.md b/lat.md/tests/plugin-integration-tests.md new file mode 100644 index 0000000..6aeca4d --- /dev/null +++ b/lat.md/tests/plugin-integration-tests.md @@ -0,0 +1,13 @@ +--- +lat: + require-code-mention: true +--- +# Plugin Integration Tests + +End-to-end tests against a live Ollama instance in `tests/test_plugin_integration.py`. All marked `@pytest.mark.ollama` and `@pytest.mark.asyncio`. + +A shared `generate_evaluation_cases()` generator produces ten research-topic cases. An agent generates search queries using a creative prompt. Three evaluators are exercised: + +- `test_integration_pairwiseevaluator`: uses `PairwiseEvaluator` with a creativity criterion; verifies the full plugin lifecycle produces a `.readout.json` on disk. +- `test_integration_bradleyterryevaluator`: uses `BradleyTerryEvaluator` with the same creativity criterion and `max_standard_deviation=2.1`. +- `test_integration_lengthevaluator`: uses a user-defined `LengthEvaluator` (not part of the package) that passes when a majority of novel responses are longer than their baseline counterparts; demonstrates the custom evaluator extension point. diff --git a/lat.md/tests/plugin-unit-tests.md b/lat.md/tests/plugin-unit-tests.md new file mode 100644 index 0000000..87e1ba7 --- /dev/null +++ b/lat.md/tests/plugin-unit-tests.md @@ -0,0 +1,79 @@ +--- +lat: + require-code-mention: true +--- +# Plugin Unit Tests + +[[src/pytest_assay/plugin.py]] helper and hook coverage in `tests/test_plugin.py`. + +## _path + +Tests for the `_path()` helper that computes `/assays//.json`. + +- Standard path: verifies the path is absolute, ends with `.json`, and contains the `assays` directory. +- Parametrized test name: verifies that `[param1-param2]` suffixes are stripped so parametrized variants share the same file name root. +- Nested directory: verifies that deeply nested test module paths resolve correctly. + +## _is_assay + +Tests for the `_is_assay()` guard that allows only `Function` items with the `assay` marker to proceed. + +- Returns `True` for a `Function` item with the `assay` marker present. +- Returns `False` for a `Function` item where `get_closest_marker` returns `None`. +- Returns `False` for a non-`Function` item (e.g., a plain `Item`) regardless of markers. + +## pytest_addoption + +Verifies that `pytest_addoption` calls `parser.addoption` exactly once with `--assay-mode`, default `"evaluate"`, and choices `("evaluate", "new_baseline")`. + +## pytest_configure + +Verifies that `pytest_configure` calls `config.addinivalue_line` with `"markers"` and a string containing `"assay"`. + +## pytest_runtest_setup + +Tests for the setup hook that loads the dataset and injects `AssayContext`. + +- Skips non-assay items without touching `funcargs`. +- Loads an existing dataset file: verifies `BASELINE_DATASET_KEY` is stashed, `AssayContext` is injected with the correct dataset, path, and mode, and case content is intact. +- Calls the generator when no file exists: verifies the generator is called once, the dataset file is created and reloadable, and `AssayContext` reflects the generated cases. +- Raises `TypeError` when the generator returns a non-`Dataset` value. +- Falls back to an empty `Dataset(cases=[])` when neither a file nor a generator is provided. +- Baseline is a deep copy: mutating `assay_ctx.dataset` does not change `item.stash[BASELINE_DATASET_KEY]`. + +## pytest_runtest_call + +Tests for the hookwrapper that monkeypatches `Agent.run()`. + +- Yields immediately (no patching) for non-`Function` items. +- Yields immediately for `Function` items without the `assay` marker. +- Initializes `item.stash[AGENT_RESPONSES_KEY]` to `[]` before yielding. +- Sets `_current_item_var` to the current item while inside the yield; resets it to `None` after. +- `Agent.run` is replaced by the instrumented wrapper during the yield, then restored to the original method in the `finally` block. +- Calling the instrumented `Agent.run` captures the result in `AGENT_RESPONSES_KEY` and passes the return value through to the caller without infinite recursion. +- When `_current_item_var` is manually cleared to `None`, the instrumented wrapper still calls the original and returns the result but does not append to any stash. + +## pytest_runtest_teardown — new_baseline path + +Tests for teardown when `assay_mode == "new_baseline"`. + +- Skips non-assay items without side effects. +- Handles missing `AssayContext` in `funcargs` gracefully (no exception). +- Merges captured responses into `case.expected_output` and serializes the dataset to disk; verifies the JSON file is reloadable and contains the correct `expected_output` values. +- Skips serialization and logs an error when the number of captured responses does not match the number of dataset cases. +- Writes an empty string for `None` response output instead of failing. +- Skips serialization and logs an error when the call phase ran but captured zero responses against a non-empty dataset. + +## pytest_runtest_teardown — evaluate path + +Tests for teardown when `assay_mode == "evaluate"`. + +- Does not write a dataset file; only writes a `.readout.json` file. +- Calls the evaluator with an `EvaluatorInput` and serializes the returned `Readout` to `.readout.json`; verifies file content. +- Uses `BradleyTerryEvaluator()` as the default evaluator when none is specified in marker kwargs. +- Logs an error and returns early for a non-callable evaluator value. +- Catches exceptions from the evaluator and logs them via `logger.exception` without propagating. + +## Full Workflow + +End-to-end test covering setup → call → teardown in `new_baseline` mode: a generator creates cases, `pytest_runtest_setup` injects the context, simulated `Agent.run()` responses are stored in the stash, and teardown serializes the merged dataset with the correct `expected_output` per case. diff --git a/lat.md/tests/tests.md b/lat.md/tests/tests.md new file mode 100644 index 0000000..2c255e4 --- /dev/null +++ b/lat.md/tests/tests.md @@ -0,0 +1,11 @@ +# Tests + +Test specifications for all plugin, evaluator, model, config, and logger code. + +- [[plugin-unit-tests]] — plugin helper and hook unit tests +- [[model-unit-tests]] — data model unit tests +- [[bradleyterry-evaluator-tests]] — BradleyTerry evaluator unit and integration tests +- [[pairwise-evaluator-tests]] — pairwise evaluator unit tests +- [[config-tests]] — Config pydantic-settings model tests +- [[logger-tests]] — logger tests +- [[plugin-integration-tests]] — full plugin end-to-end integration tests diff --git a/tests/evaluators/test_bradleyterry.py b/tests/evaluators/test_bradleyterry.py index 7ab914f..53049fa 100644 --- a/tests/evaluators/test_bradleyterry.py +++ b/tests/evaluators/test_bradleyterry.py @@ -40,7 +40,7 @@ # --------------------------------------------------------------------------- -# @lat: [[tests#BradleyTerry Evaluator Tests#EvalPlayer]] +# @lat: [[tests/bradleyterry-evaluator-tests#EvalPlayer]] class TestEvalPlayer: """Unit tests for EvalPlayer.""" @@ -69,7 +69,7 @@ def test_empty_item(self) -> None: assert player.item == "" -# @lat: [[tests#BradleyTerry Evaluator Tests#EvalGame]] +# @lat: [[tests/bradleyterry-evaluator-tests#EvalGame]] class TestEvalGame: """Unit tests for EvalGame (agent interaction mocked).""" @@ -131,7 +131,7 @@ async def test_run_preserves_player_idx_order(self, make_mock_agent: Callable[.. assert result == (7, 3) -# @lat: [[tests#BradleyTerry Evaluator Tests#EvalTournament]] +# @lat: [[tests/bradleyterry-evaluator-tests#EvalTournament]] class TestEvalTournament: """Unit tests for EvalTournament (strategy mocked).""" @@ -244,7 +244,7 @@ async def test_run_updates_players_attribute( assert ice_cream_tournament.players is scored -# @lat: [[tests#BradleyTerry Evaluator Tests#BradleyTerryEvaluator]] +# @lat: [[tests/bradleyterry-evaluator-tests#BradleyTerryEvaluator]] class TestBradleyTerryEvaluator: """Unit tests for BradleyTerryEvaluator.""" @@ -382,7 +382,7 @@ async def test_protocol_conformance(self) -> None: @pytest.mark.ollama @pytest.mark.asyncio -# @lat: [[tests#BradleyTerry Evaluator Tests#BradleyTerry Strategy Integration (ollama)]] +# @lat: [[tests/bradleyterry-evaluator-tests#BradleyTerry Strategy Integration (ollama)]] async def test_evalgame_integration(ice_cream_players: list[EvalPlayer], evaluation_agent: Agent[None, Any], model_settings: ModelSettings) -> None: """Test the EvalGame class.""" logger.info("Testing EvalGame() class") diff --git a/tests/evaluators/test_pairwise.py b/tests/evaluators/test_pairwise.py index e625896..d88b691 100644 --- a/tests/evaluators/test_pairwise.py +++ b/tests/evaluators/test_pairwise.py @@ -24,7 +24,7 @@ # --------------------------------------------------------------------------- -# @lat: [[tests#Pairwise Evaluator Tests#PairwiseEvaluator]] +# @lat: [[tests/pairwise-evaluator-tests#PairwiseEvaluator]] class TestPairwiseEvaluator: """Unit tests for PairwiseEvaluator.""" diff --git a/tests/test_config.py b/tests/test_config.py index 8f5e5e8..fe251de 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -5,7 +5,7 @@ from pytest_assay.config import Config, config -# @lat: [[tests#Config Tests]] +# @lat: [[tests/config-tests]] def test_config_default_values() -> None: """Test that Config has correct default values.""" with patch.dict("os.environ", {}, clear=True): diff --git a/tests/test_logger.py b/tests/test_logger.py index 2102130..0429d9a 100644 --- a/tests/test_logger.py +++ b/tests/test_logger.py @@ -3,7 +3,7 @@ from pytest_assay.logger import logger -# @lat: [[tests#Logger Tests]] +# @lat: [[tests/logger-tests]] def test_logger_is_stdlib_logger() -> None: """Test that logger is a stdlib logging.Logger.""" assert isinstance(logger, logging.Logger) diff --git a/tests/test_models.py b/tests/test_models.py index e2075e6..55ae967 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -23,7 +23,7 @@ from pytest_assay.models import AssayContext, Evaluator, EvaluatorInput, Readout -# @lat: [[tests#Model Unit Tests#EvaluatorInput]] +# @lat: [[tests/model-unit-tests#EvaluatorInput]] class TestEvaluatorInput: """Tests for the EvaluatorInput model.""" @@ -123,7 +123,7 @@ def test_with_none_output_response(self) -> None: assert eval_input.agent_responses[0].output is None -# @lat: [[tests#Model Unit Tests#Readout]] +# @lat: [[tests/model-unit-tests#Readout]] class TestReadout: """Tests for the Readout model.""" @@ -200,7 +200,7 @@ def test_to_file_with_empty_details(self, tmp_path: Path) -> None: assert data["details"] == {} -# @lat: [[tests#Model Unit Tests#Evaluator Protocol]] +# @lat: [[tests/model-unit-tests#Evaluator Protocol]] class TestEvaluator: """Tests for the Evaluator protocol. @@ -218,7 +218,7 @@ def test_protocol_has_expected_structure(self) -> None: assert hasattr(Evaluator, "__protocol_attrs__") or callable(Evaluator) -# @lat: [[tests#Model Unit Tests#AssayContext]] +# @lat: [[tests/model-unit-tests#AssayContext]] class TestAssayContext: """Tests for the AssayContext model.""" diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 1c71976..cbce5ab 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -54,7 +54,7 @@ def _drive_hookwrapper(item: Item, nextitem: Item | None = None) -> None: # ============================================================================= -# @lat: [[tests#Plugin Unit Tests#_path]] +# @lat: [[tests/plugin-unit-tests#_path]] def test_path_computation(mocker: MockerFixture) -> None: """Test _path computes the correct assay file path.""" mock_item = mocker.MagicMock(spec=Item) @@ -101,7 +101,7 @@ def test_path_computation_nested_directory(mocker: MockerFixture) -> None: assert result == expected -# @lat: [[tests#Plugin Unit Tests#_is_assay]] +# @lat: [[tests/plugin-unit-tests#_is_assay]] def test_is_assay_with_marker(mocker: MockerFixture) -> None: """Test _is_assay returns True for Function items with assay marker.""" mock_item = mocker.MagicMock(spec=Function) @@ -133,7 +133,7 @@ def test_is_assay_non_function_item(mocker: MockerFixture) -> None: # ============================================================================= -# @lat: [[tests#Plugin Unit Tests#pytest_addoption]] +# @lat: [[tests/plugin-unit-tests#pytest_addoption]] def test_pytest_addoption(mocker: MockerFixture) -> None: """Test pytest_addoption registers the --assay-mode option correctly.""" mock_parser = mocker.MagicMock() @@ -154,7 +154,7 @@ def test_pytest_addoption(mocker: MockerFixture) -> None: # ============================================================================= -# @lat: [[tests#Plugin Unit Tests#pytest_configure]] +# @lat: [[tests/plugin-unit-tests#pytest_configure]] def test_pytest_configure(mocker: MockerFixture) -> None: """Test pytest_configure registers the assay marker.""" mock_config = mocker.MagicMock() @@ -173,7 +173,7 @@ def test_pytest_configure(mocker: MockerFixture) -> None: # ============================================================================= -# @lat: [[tests#Plugin Unit Tests#pytest_runtest_setup]] +# @lat: [[tests/plugin-unit-tests#pytest_runtest_setup]] def test_pytest_runtest_setup_non_assay_item(mocker: MockerFixture) -> None: """Test pytest_runtest_setup skips non-assay items.""" mock_item = mocker.MagicMock(spec=Item) @@ -397,7 +397,7 @@ def test_pytest_runtest_setup_baseline_stash_is_copy(mocker: MockerFixture, tmp_ # ============================================================================= -# @lat: [[tests#Plugin Unit Tests#pytest_runtest_call]] +# @lat: [[tests/plugin-unit-tests#pytest_runtest_call]] def test_pytest_runtest_call_non_function_item(mocker: MockerFixture) -> None: """Test pytest_runtest_call yields immediately for non-Function items.""" mock_item = mocker.MagicMock(spec=Item) @@ -584,7 +584,7 @@ async def test_instrumented_agent_run_no_item_in_context(mocker: MockerFixture) # ============================================================================= -# @lat: [[tests#Plugin Unit Tests#pytest_runtest_teardown — new_baseline path]] +# @lat: [[tests/plugin-unit-tests#pytest_runtest_teardown — new_baseline path]] def test_pytest_runtest_teardown_non_assay_item(mocker: MockerFixture) -> None: """Test pytest_runtest_teardown skips non-assay items.""" mock_item = mocker.MagicMock(spec=Item) @@ -743,7 +743,7 @@ def test_pytest_runtest_teardown_new_baseline_no_responses(mocker: MockerFixture # ============================================================================= -# @lat: [[tests#Plugin Unit Tests#pytest_runtest_teardown — evaluate path]] +# @lat: [[tests/plugin-unit-tests#pytest_runtest_teardown — evaluate path]] def test_pytest_runtest_teardown_evaluate_mode(mocker: MockerFixture, tmp_path: Path) -> None: """Test pytest_runtest_teardown does not serialize dataset in evaluate mode.""" dataset_path = tmp_path / "assays" / "test.json" @@ -898,7 +898,7 @@ async def failing_evaluator(item: Item) -> Readout: # ============================================================================= -# @lat: [[tests#Plugin Unit Tests#Full Workflow]] +# @lat: [[tests/plugin-unit-tests#Full Workflow]] def test_full_assay_workflow_with_topic_generation(mocker: MockerFixture, tmp_path: Path) -> None: """ Test a realistic assay workflow similar to test_curiosity.py. diff --git a/tests/test_plugin_integration.py b/tests/test_plugin_integration.py index dcc5ac3..19b8fbb 100644 --- a/tests/test_plugin_integration.py +++ b/tests/test_plugin_integration.py @@ -118,7 +118,7 @@ async def _run_query_generation(context: AssayContext, model_settings: ModelSett ), ) @pytest.mark.asyncio -# @lat: [[tests#Plugin Integration Tests]] +# @lat: [[tests/plugin-integration-tests]] async def test_integration_pairwiseevaluator(context: AssayContext, model_settings: ModelSettings) -> None: """ Integration test for the assay pytest plugin with PairwiseEvaluator evaluator. From 2cc7d5b2f79c15ef3587bb3227b216ade943ec87 Mon Sep 17 00:00:00 2001 From: lars20070 Date: Tue, 17 Mar 2026 13:10:48 -0700 Subject: [PATCH 08/52] Make knowledge graph conform with latest lat.md version --- .claude/settings.json | 12 +- .cursor/rules/lat.md | 17 +- .github/copilot-instructions.md | 247 ++++++++----------- AGENTS.md | 45 +++- CLAUDE.md | 45 +++- lat.md/.cache/lat_init.json | 9 + lat.md/.cache/vectors.db | Bin 36864 -> 13852672 bytes lat.md/evaluators.md | 38 ++- lat.md/lat.md | 2 + lat.md/pytest-plugin.md | 18 +- lat.md/tests/bradleyterry-evaluator-tests.md | 8 + lat.md/tests/model-unit-tests.md | 8 + lat.md/tests/pairwise-evaluator-tests.md | 2 + lat.md/tests/plugin-unit-tests.md | 6 +- 14 files changed, 252 insertions(+), 205 deletions(-) create mode 100644 lat.md/.cache/lat_init.json diff --git a/.claude/settings.json b/.claude/settings.json index 24fa61b..a207f0e 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -113,7 +113,17 @@ "hooks": [ { "type": "command", - "command": ".claude/hooks/lat-prompt-hook.sh" + "command": "/Users/lars/Code/lat.md/dist/src/cli/index.js hook claude UserPromptSubmit" + } + ] + } + ], + "Stop": [ + { + "hooks": [ + { + "type": "command", + "command": "/Users/lars/Code/lat.md/dist/src/cli/index.js hook claude Stop" } ] } diff --git a/.cursor/rules/lat.md b/.cursor/rules/lat.md index f6ab28c..7bab9a1 100644 --- a/.cursor/rules/lat.md +++ b/.cursor/rules/lat.md @@ -1,7 +1,7 @@ # Before starting work - Use the `lat_search` tool to find sections relevant to your task. Read them to understand the design intent before writing code. -- Use the `lat_prompt` tool on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context. +- Use the `lat_expand` tool on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context. # Post-task checklist (REQUIRED — do not skip) @@ -23,7 +23,7 @@ You have access to the following MCP tools from the `lat` server: - **lat_locate** — find a section by name (exact, fuzzy) - **lat_search** — semantic search across all sections -- **lat_prompt** — expand `[[refs]]` in text to resolved locations +- **lat_expand** — expand `[[refs]]` in text to resolved locations - **lat_check** — validate all wiki links and code refs - **lat_refs** — find what references a section @@ -33,8 +33,8 @@ If `lat_search` fails because `LAT_LLM_KEY` is not set, explain to the user that - **Section ids**: `lat.md/path/to/file#Heading#SubHeading` — full form uses project-root-relative path (e.g. `lat.md/tests/search#RAG Replay Tests`). Short form uses bare file name when unique (e.g. `search#RAG Replay Tests`, `cli#search#Indexing`). - **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference source code: `[[src/foo.ts#myFunction]]`. -- **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`. `lat check` validates these exist. -- **Code refs**: `// @lat: [[section-id]]` (JS/TS) or `# @lat: [[section-id]]` (Python) — ties source code to concepts +- **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python/Rust/Go/C files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`, `[[src/lib.rs#Greeter#greet]]` (Rust impl method), `[[src/app.go#Greeter#Greet]]` (Go method), `[[src/app.h#Greeter]]` (C struct). `lat check` validates these exist. +- **Code refs**: `// @lat: [[section-id]]` (JS/TS/Rust/Go/C) or `# @lat: [[section-id]]` (Python) — ties source code to concepts # Test specs @@ -47,7 +47,12 @@ lat: --- # Tests +Authentication and authorization test specifications. + ## User login + +Verify credential validation and error handling for the login endpoint. + ### Rejects expired tokens Tokens past their expiry timestamp are rejected with 401, even if otherwise valid. @@ -60,11 +65,11 @@ Every section MUST have a description — at least one sentence explaining what Each test in code should reference its spec with exactly one comment placed next to the relevant test — not at the top of the file: ```python -# @lat: [[tests/tests#User login#Rejects expired tokens]] +# @lat: [[tests#User login#Rejects expired tokens]] def test_rejects_expired_tokens(): ... -# @lat: [[tests/tests#User login#Handles missing password]] +# @lat: [[tests#User login#Handles missing password]] def test_handles_missing_password(): ... ``` diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index d044edc..c544150 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -1,158 +1,105 @@ -# Project Overview +# Before starting work -Pytest-assay is a fully local web research and report writing assistant that prioritizes user privacy. It leverages PydanticAI as the core agent framework to orchestrate a multi-step research workflow. The system runs AI models locally using Ollama and performs web searches through SearXNG, ensuring no data leaves the user's environment by default. The application supports both local and cloud-based configurations, allowing users to choose between complete privacy or enhanced performance with API-based services. +- Run `lat search` to find sections relevant to your task. Read them to understand the design intent before writing code. +- Run `lat expand` on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context. -The research workflow follows a state-machine pattern with four main stages: -1. **Web Search**: Initiates targeted searches based on the research topic -2. **Summarize Search Results**: Processes and condenses the retrieved information -3. **Reflect on Summary**: Evaluates the quality and completeness of gathered information -4. **Finalize Summary**: Produces the final research report with citations +# Post-task checklist (REQUIRED — do not skip) -This project uses PydanticAI's agent capabilities for structured responses, dependency injection, and tool integration. The UV package manager handles Python dependencies and virtual environment management. +After EVERY task, before responding to the user: -## Folder Structure +- [ ] Update `lat.md/` if you added or changed any functionality, architecture, tests, or behavior +- [ ] Run `lat check` — all wiki links and code refs must pass +- [ ] Do not skip these steps. Do not consider your task done until both are complete. +--- + +# What is lat.md? + +This project uses [lat.md](https://www.npmjs.com/package/lat.md) to maintain a structured knowledge graph of its architecture, design decisions, and test specs in the `lat.md/` directory. It is a set of cross-linked markdown files that describe **what** this project does and **why** — the domain concepts, key design decisions, business logic, and test specifications. Use it to ground your work in the actual architecture rather than guessing. + +# Commands + +```bash +lat locate "Section Name" # find a section by name (exact, fuzzy) +lat refs "file#Section" # find what references a section +lat search "natural language" # semantic search across all sections +lat expand "user prompt text" # expand [[refs]] to resolved locations +lat check # validate all links and code refs +``` + +Run `lat --help` when in doubt about available commands or options. + +If `lat search` fails because no API key is configured, explain to the user that semantic search requires a key provided via `LAT_LLM_KEY` (direct value), `LAT_LLM_KEY_FILE` (path to key file), or `LAT_LLM_KEY_HELPER` (command that prints the key). Supported key prefixes: `sk-...` (OpenAI) or `vck_...` (Vercel). If the user doesn't want to set it up, use `lat locate` for direct lookups instead. + +# Syntax primer + +- **Section ids**: `lat.md/path/to/file#Heading#SubHeading` — full form uses project-root-relative path (e.g. `lat.md/tests/search#RAG Replay Tests`). Short form uses bare file name when unique (e.g. `search#RAG Replay Tests`, `cli#search#Indexing`). +- **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference source code: `[[src/foo.ts#myFunction]]`. +- **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python/Rust/Go/C files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`, `[[src/lib.rs#Greeter#greet]]` (Rust impl method), `[[src/app.go#Greeter#Greet]]` (Go method), `[[src/app.h#Greeter]]` (C struct). `lat check` validates these exist. +- **Code refs**: `// @lat: [[section-id]]` (JS/TS/Rust/Go/C) or `# @lat: [[section-id]]` (Python) — ties source code to concepts + +# Test specs + +Key tests can be described as sections in `lat.md/` files (e.g. `tests.md`). Add frontmatter to require that every leaf section is referenced by a `// @lat:` or `# @lat:` comment in test code: + +```markdown +--- +lat: + require-code-mention: true +--- +# Tests + +Authentication and authorization test specifications. + +## User login + +Verify credential validation and error handling for the login endpoint. + +### Rejects expired tokens +Tokens past their expiry timestamp are rejected with 401, even if otherwise valid. + +### Handles missing password +Login request without a password field returns 400 with a descriptive error. ``` -pytest-assay/ -├── benchmarks -│ ├── codenames -│ │ ├── task_schema.json -│ │ └── task.json -│ ├── dark_humor_detection -│ │ ├── task_schema.json -│ │ └── task.json -│ ├── README.md -│ └── rephrase -│ ├── task_schema.json -│ └── task.json -├── pytest-assay.log -├── dist -├── LICENSE -├── pyproject.toml -├── README.md -├── reports -├── src -│ └── pytest-assay -│ ├── __init__.py -│ ├── agents.py -│ ├── cli.py -│ ├── config.py -│ ├── evals -│ │ ├── evals.py -│ │ ├── import_bigbench.py -│ │ └── README.md -│ ├── examples.py -│ ├── graph.py -│ ├── logger.py -│ ├── models.py -│ ├── prompts.py -│ ├── py.typed -│ └── utils.py -├── tests -│ ├── __init__.py -│ ├── conftest.py -│ ├── data -│ │ ├── state_1.json -│ │ ├── state_2.json -│ │ └── state_3.json -│ ├── README.md -│ ├── reports -│ │ ├── petrichor.md -│ │ └── petrichor.pdf -│ ├── test_config.py -│ ├── test_example.py -│ ├── test_graph.py -│ ├── test_logger.py -│ └── test_utils.py -├── uml -│ ├── classes.dot -│ ├── classes.png -│ ├── packages.dot -│ ├── packages.png -│ └── README.md -└── uv.lock + +Every section MUST have a description — at least one sentence explaining what the test verifies and why. Empty sections with just a heading are not acceptable. (This is a specific case of the general leading paragraph rule below.) + +Each test in code should reference its spec with exactly one comment placed next to the relevant test — not at the top of the file: + +```python +# @lat: [[tests#User login#Rejects expired tokens]] +def test_rejects_expired_tokens(): + ... + +# @lat: [[tests#User login#Handles missing password]] +def test_handles_missing_password(): + ... +``` + +Do not duplicate refs. One `@lat:` comment per spec section, placed at the test that covers it. `lat check` will flag any spec section not covered by a code reference, and any code reference pointing to a nonexistent section. + +# Section structure + +Every section in `lat.md/` **must** have a leading paragraph — at least one sentence immediately after the heading, before any child headings or other block content. The first paragraph must be ≤250 characters (excluding `[[wiki link]]` content). This paragraph serves as the section's overview and is used in search results, command output, and RAG context — keeping it concise guarantees the section's essence is always captured. + +```markdown +# Good Section + +Brief overview of what this section documents and why it matters. + +More detail can go in subsequent paragraphs, code blocks, or lists. + +## Child heading + +Details about this child topic. +``` + +```markdown +# Bad Section + +## Child heading + +Details about this child topic. ``` -## Libraries and Frameworks - -### Core Dependencies -- **pydantic-ai**: Main agent framework for building the research assistant -- **pydantic**: Data validation and settings management using Python type annotations -- **ollama**: Python client for interacting with local Ollama models - -### Development Tools -- **python-dotenv**: Load environment variables from .env files -- **rich**: Terminal formatting for better CLI output -- **loguru**: Advanced logging with structured output -- **pytest**: Testing framework -- **pytest-asyncio**: Async test support for PydanticAI agents -- **ruff**: Fast Python linter and formatter - -### Environment Management -- **uv**: Modern Python package and project manager -- **docker**: Container runtime for SearXNG deployment - -## Coding Standards - -### Python Style Guidelines -- Follow PEP 8 with a line length limit of 100 characters -- Use Python 3.11+ features including type hints for all function signatures -- Prefer async/await patterns for I/O operations and agent interactions -- Use Ruff for automatic code formatting and linting - -### PydanticAI Agent Patterns -- Define agents with explicit `deps_type` and `output_type` for type safety -- Use dependency injection for passing configuration and services to agents -- Implement structured outputs using Pydantic models with Field descriptions -- Handle tool registration through PydanticAI's tool decorator pattern -- Use RunContext for accessing dependencies within agent functions - -### Code Organization -- Keep agent definitions focused on a single responsibility -- Separate tool implementations from agent logic -- Use Pydantic models for all data structures and API contracts -- Implement proper error handling with custom exception classes -- Log all agent decisions and tool calls for debugging - -### Testing Requirements -- Write unit tests for all agent tools and utility functions -- Use pytest fixtures for agent setup and teardown -- Mock external services (Ollama, SearXNG) in tests using pytest-mock -- Or use VCR recordings with pytest-recording -- Test both success and failure paths for agent workflows -- Maintain test coverage above 80% for core functionality - -### Environment Configuration -- Never commit `.env` files or API keys to version control -- Use environment variables for all configuration values -- Provide sensible defaults for optional settings -- Document all required environment variables in `.env.example` -- Support both local (Ollama, SearXNG) and cloud (OpenAI, Anthropic) configurations - -### Documentation Standards -- Use docstrings for all classes, methods, and functions -- Include type hints in function signatures -- Document agent system prompts and tool descriptions clearly -- Maintain up-to-date README with setup instructions -- Include examples of agent usage and output formats - -### Error Handling -- Implement retry logic for network requests and LLM calls -- Use PydanticAI's built-in error handling for agent failures -- Provide meaningful error messages for user-facing issues -- Log errors with full context for debugging -- Gracefully degrade when optional services are unavailable - -### Security Considerations -- Default to local-only operation without external API calls -- Validate and sanitize all user inputs -- Use HTTPS for any external API connections -- Store sensitive configuration in environment variables only -- Implement rate limiting for external service calls - -### Performance Optimization -- Use async operations for concurrent web searches -- Implement caching for repeated searches within a session -- Stream LLM responses when possible for better UX -- Batch process search results for efficient summarization -- Monitor and log agent execution times for optimization \ No newline at end of file +The second example is invalid because `Bad Section` has no leading paragraph. `lat check` validates this rule and reports errors for missing or overly long leading paragraphs. diff --git a/AGENTS.md b/AGENTS.md index e83a5e9..c544150 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,7 +1,7 @@ # Before starting work - Run `lat search` to find sections relevant to your task. Read them to understand the design intent before writing code. -- Run `lat prompt` on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context. +- Run `lat expand` on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context. # Post-task checklist (REQUIRED — do not skip) @@ -23,7 +23,7 @@ This project uses [lat.md](https://www.npmjs.com/package/lat.md) to maintain a s lat locate "Section Name" # find a section by name (exact, fuzzy) lat refs "file#Section" # find what references a section lat search "natural language" # semantic search across all sections -lat prompt "user prompt text" # expand [[refs]] to resolved locations +lat expand "user prompt text" # expand [[refs]] to resolved locations lat check # validate all links and code refs ``` @@ -35,8 +35,8 @@ If `lat search` fails because no API key is configured, explain to the user that - **Section ids**: `lat.md/path/to/file#Heading#SubHeading` — full form uses project-root-relative path (e.g. `lat.md/tests/search#RAG Replay Tests`). Short form uses bare file name when unique (e.g. `search#RAG Replay Tests`, `cli#search#Indexing`). - **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference source code: `[[src/foo.ts#myFunction]]`. -- **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`. `lat check` validates these exist. -- **Code refs**: `// @lat: [[section-id]]` (JS/TS) or `# @lat: [[section-id]]` (Python) — ties source code to concepts +- **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python/Rust/Go/C files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`, `[[src/lib.rs#Greeter#greet]]` (Rust impl method), `[[src/app.go#Greeter#Greet]]` (Go method), `[[src/app.h#Greeter]]` (C struct). `lat check` validates these exist. +- **Code refs**: `// @lat: [[section-id]]` (JS/TS/Rust/Go/C) or `# @lat: [[section-id]]` (Python) — ties source code to concepts # Test specs @@ -49,7 +49,12 @@ lat: --- # Tests +Authentication and authorization test specifications. + ## User login + +Verify credential validation and error handling for the login endpoint. + ### Rejects expired tokens Tokens past their expiry timestamp are rejected with 401, even if otherwise valid. @@ -57,18 +62,44 @@ Tokens past their expiry timestamp are rejected with 401, even if otherwise vali Login request without a password field returns 400 with a descriptive error. ``` -Every section MUST have a description — at least one sentence explaining what the test verifies and why. Empty sections with just a heading are not acceptable. +Every section MUST have a description — at least one sentence explaining what the test verifies and why. Empty sections with just a heading are not acceptable. (This is a specific case of the general leading paragraph rule below.) Each test in code should reference its spec with exactly one comment placed next to the relevant test — not at the top of the file: ```python -# @lat: [[tests/tests#User login#Rejects expired tokens]] +# @lat: [[tests#User login#Rejects expired tokens]] def test_rejects_expired_tokens(): ... -# @lat: [[tests/tests#User login#Handles missing password]] +# @lat: [[tests#User login#Handles missing password]] def test_handles_missing_password(): ... ``` Do not duplicate refs. One `@lat:` comment per spec section, placed at the test that covers it. `lat check` will flag any spec section not covered by a code reference, and any code reference pointing to a nonexistent section. + +# Section structure + +Every section in `lat.md/` **must** have a leading paragraph — at least one sentence immediately after the heading, before any child headings or other block content. The first paragraph must be ≤250 characters (excluding `[[wiki link]]` content). This paragraph serves as the section's overview and is used in search results, command output, and RAG context — keeping it concise guarantees the section's essence is always captured. + +```markdown +# Good Section + +Brief overview of what this section documents and why it matters. + +More detail can go in subsequent paragraphs, code blocks, or lists. + +## Child heading + +Details about this child topic. +``` + +```markdown +# Bad Section + +## Child heading + +Details about this child topic. +``` + +The second example is invalid because `Bad Section` has no leading paragraph. `lat check` validates this rule and reports errors for missing or overly long leading paragraphs. diff --git a/CLAUDE.md b/CLAUDE.md index e83a5e9..c544150 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,7 +1,7 @@ # Before starting work - Run `lat search` to find sections relevant to your task. Read them to understand the design intent before writing code. -- Run `lat prompt` on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context. +- Run `lat expand` on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context. # Post-task checklist (REQUIRED — do not skip) @@ -23,7 +23,7 @@ This project uses [lat.md](https://www.npmjs.com/package/lat.md) to maintain a s lat locate "Section Name" # find a section by name (exact, fuzzy) lat refs "file#Section" # find what references a section lat search "natural language" # semantic search across all sections -lat prompt "user prompt text" # expand [[refs]] to resolved locations +lat expand "user prompt text" # expand [[refs]] to resolved locations lat check # validate all links and code refs ``` @@ -35,8 +35,8 @@ If `lat search` fails because no API key is configured, explain to the user that - **Section ids**: `lat.md/path/to/file#Heading#SubHeading` — full form uses project-root-relative path (e.g. `lat.md/tests/search#RAG Replay Tests`). Short form uses bare file name when unique (e.g. `search#RAG Replay Tests`, `cli#search#Indexing`). - **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference source code: `[[src/foo.ts#myFunction]]`. -- **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`. `lat check` validates these exist. -- **Code refs**: `// @lat: [[section-id]]` (JS/TS) or `# @lat: [[section-id]]` (Python) — ties source code to concepts +- **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python/Rust/Go/C files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`, `[[src/lib.rs#Greeter#greet]]` (Rust impl method), `[[src/app.go#Greeter#Greet]]` (Go method), `[[src/app.h#Greeter]]` (C struct). `lat check` validates these exist. +- **Code refs**: `// @lat: [[section-id]]` (JS/TS/Rust/Go/C) or `# @lat: [[section-id]]` (Python) — ties source code to concepts # Test specs @@ -49,7 +49,12 @@ lat: --- # Tests +Authentication and authorization test specifications. + ## User login + +Verify credential validation and error handling for the login endpoint. + ### Rejects expired tokens Tokens past their expiry timestamp are rejected with 401, even if otherwise valid. @@ -57,18 +62,44 @@ Tokens past their expiry timestamp are rejected with 401, even if otherwise vali Login request without a password field returns 400 with a descriptive error. ``` -Every section MUST have a description — at least one sentence explaining what the test verifies and why. Empty sections with just a heading are not acceptable. +Every section MUST have a description — at least one sentence explaining what the test verifies and why. Empty sections with just a heading are not acceptable. (This is a specific case of the general leading paragraph rule below.) Each test in code should reference its spec with exactly one comment placed next to the relevant test — not at the top of the file: ```python -# @lat: [[tests/tests#User login#Rejects expired tokens]] +# @lat: [[tests#User login#Rejects expired tokens]] def test_rejects_expired_tokens(): ... -# @lat: [[tests/tests#User login#Handles missing password]] +# @lat: [[tests#User login#Handles missing password]] def test_handles_missing_password(): ... ``` Do not duplicate refs. One `@lat:` comment per spec section, placed at the test that covers it. `lat check` will flag any spec section not covered by a code reference, and any code reference pointing to a nonexistent section. + +# Section structure + +Every section in `lat.md/` **must** have a leading paragraph — at least one sentence immediately after the heading, before any child headings or other block content. The first paragraph must be ≤250 characters (excluding `[[wiki link]]` content). This paragraph serves as the section's overview and is used in search results, command output, and RAG context — keeping it concise guarantees the section's essence is always captured. + +```markdown +# Good Section + +Brief overview of what this section documents and why it matters. + +More detail can go in subsequent paragraphs, code blocks, or lists. + +## Child heading + +Details about this child topic. +``` + +```markdown +# Bad Section + +## Child heading + +Details about this child topic. +``` + +The second example is invalid because `Bad Section` has no leading paragraph. `lat check` validates this rule and reports errors for missing or overly long leading paragraphs. diff --git a/lat.md/.cache/lat_init.json b/lat.md/.cache/lat_init.json new file mode 100644 index 0000000..74e62a2 --- /dev/null +++ b/lat.md/.cache/lat_init.json @@ -0,0 +1,9 @@ +{ + "init_version": 1, + "file_hashes": { + "AGENTS.md": "5fd49383be7fd33deec07b4e7a6cbac441568611e392864c7474e5495c8ab0d3", + "CLAUDE.md": "5fd49383be7fd33deec07b4e7a6cbac441568611e392864c7474e5495c8ab0d3", + ".cursor/rules/lat.md": "8df27b4b13f8baa27c41b2172fbd59d80fea306e250238ae67b9ba4780be50d8", + ".github/copilot-instructions.md": "5fd49383be7fd33deec07b4e7a6cbac441568611e392864c7474e5495c8ab0d3" + } +} diff --git a/lat.md/.cache/vectors.db b/lat.md/.cache/vectors.db index e10f8f8c52ec6ee9429e61147fde1aa7a3a22e1d..71b91df80c02f76dc15806aeca00b39e2a9c30c8 100644 GIT binary patch literal 13852672 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 z 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 z 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�TRg*+;{QaHsk5Ol@o2$}o!mVPp2=8;kSZ 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�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 z%0D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