agentleFS
ianshankianshank/Agents/tests/AGENTS.md

Agents / tests

AGENTS.md1 starsChanged 58 days agoApache-2.0View on GitHub

The root suite. Every file here is a protected path; adding one needs a labeled approval. This is the harness's own test suite plus the guards that freeze its public surface. It has no README by design — the suite is not a shipped component. What an agent needs before touching it is the approval obligation, the coverage floor, and which files here are contracts rather than tests. - tests/** is a protected path. Any change here, and in particular…

The file

We split this AGENTS.md into the rules it gives an agent

1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Registered components carry a matrix obligation (ADR 0032): After adding or renaming rows in test_matrix_eval_tools.py, run python …

    line 69

≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
AGENTS.md

AGENTS.md — tests

The root suite. Every file here is a protected path; adding one needs a labeled approval.

This is the harness's own test suite plus the guards that freeze its public surface. It has no README by design — the suite is not a shipped component. What an agent needs before touching it is the approval obligation, the coverage floor, and which files here are contracts rather than tests.

Map

PathRole
conftest.pyPrepends the sibling package roots onto the path; registers Hypothesis profiles
_*.pyHelper modules, deliberately not collected by pytest
integration/Collected by default; individual tests skip on a missing credential
fixtures/Committed test data
public_surface_baseline.jsonFrozen public surface. A diff is a compatibility break
plugin_registry_baseline.jsonFrozen plugin registry, same contract
test_matrix_coverage.pyCensus CLI behind make matrix-check; --update regenerates the doc

Diagram

flowchart LR
  accTitle: what adding a test file sets in motion
  accDescr: A new test file under tests trips the protected-path guard and needs the approval label, while the suite itself feeds the coverage floor of 96 and the frozen baseline contracts.

  NEW["a new test_*.py"]
  LABEL["eval-change-approved<br/>label + code owner"]

  subgraph T["tests/ (you are here)"]
    CONF["conftest.py<br/>path + profiles"]
    SUITE["the suite"]
    BASE["frozen baselines"]
    MX["test_matrix_coverage.py"]
  end

  GUARD["check_protected_changes.py"]
  FLOOR["coverage floor 96"]
  DOC["docs/matrix-coverage.md"]

  NEW --> GUARD
  GUARD --> LABEL
  CONF --> SUITE
  SUITE --> FLOOR
  SUITE --> BASE
  MX --> DOC

  classDef here fill:#e8f0fe,stroke:#1a73e8,stroke-width:2px
  class T here

Rules that bite here

  • tests/** is a protected path. Any change here, and in particular any new tests/test_*.py, trips scripts/check_protected_changes.py and the pull request needs the eval-change-approved label plus a code owner. Plan for that before you start; do not fold a test into an unrelated file to avoid the guard, which is precisely the evasion the guard exists to catch.
  • The floor is 96 and it is pinned. It is declared in pyproject.toml and again in scripts/quality-gate.sh, and ../coverage-floors.yaml pins the minimum both may state. Lowering it is a reviewed act; raising it is free.
  • The frozen baselines are contracts, not fixtures. A diff against public_surface_baseline.json or plugin_registry_baseline.json means a public name moved. Restore the name or write the deprecation; do not restamp the baseline to go green.
  • A helper module must start with an underscore. That is how the suite keeps _sut.py, _matrix_coverage.py and the rest out of collection while still importable.
  • Registered components carry a matrix obligation (ADR 0032). After adding or renaming rows in test_matrix_eval_tools.py, run python tests/test_matrix_coverage.py --update; never hand-edit docs/matrix-coverage.md. Waivers are data with reasons, not omissions.

Verify

./scripts/quality-gate.sh coverage

Subagents

Task in this directoryAgentWhy
Locate the existing test for a behaviour before adding a fileexplorerRead-only; finding an existing home avoids tripping the protected-path guard at all
Run a subset and isolate a failure signaturetest-runnerHas Bash; maxTurns: 8 fits a run-read-narrow loop over 114 modules
Review a baseline change before pushingnarrow-criticA restamped baseline looks like a passing diff and is a silent break

See also

DocRead it when
../scripts/eval_protected_paths.pyYou want the authoritative list of what needs the approval label
../coverage-floors.yamlThe coverage floor is blocking you and you are tempted to lower it
../docs/decisions/0032-matrix-completeness-policy.mdYou registered a component and need to know what rows it now owes
../docs/e2e-runbook.mdYou are running or reading the whole-repo end-to-end harness rather than this suite
../AGENTS.mdYou need the repo-wide testing conventions, markers and offline-dependency idiom

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.