RUL-036 — Every test is categorised functional or integration, by what it depends on

Ruling

Mohamed, 2026-10-14, after asking why the suite tests against containers, verbatim: "also tests must be categorized, fnctional vs integration".

Asked what decides the category, he chose by dependency:

Evidence

Measured 2026-10-14 on the tests AST snapshot (plans/ast-tests.json, 2026-10-09, worktree orchestrata-ultimate-architecture, behind master):

Enforcement

Mechanism (RUL-014)

Judgment-only at recording time. Candidate mechanism, a follow-up packet (RUL-022 contract first):

  1. A collection hook in tests/conftest.py computes each test's fixture closure and applies integration when it contains an infrastructure fixture (Redis, graph, kernel or gateway client, test-fleet endpoint), otherwise functional. Register functional in pyproject.toml and settle the overlap with the existing unit / integration / requires_* markers in the packet's design.
  2. A gate that fails a test which opens a connection to a test-fleet endpoint without carrying integration, so a missing fixture mapping cannot misfile a test as functional.
  3. scripts/run_tests.py reports pass/fail counts per category.

When the gate lands, the index row moves from none (judgment) to the gate and this section names the commit.

Verification