# Agentic Team Protocol conformance fixtures

Each case directory holds one input in the form it tests (`input.team.yaml`,
`input/` folder or `input.team` ZIP) and an `expected.yaml` that names every
rule the input breaks: the rule, the sentence of the specification it comes from
(`spec_section`, the section or numbered rule of `spec/2026-11-11`, and `quote`), the
location (file, path or archive entry, line), the severity and the code. Codes come
from the Domios conformance corpus, `corpus/2026-11-11/cases.json` (`corpus_case`
names the corpus case that defines the same rule), or from a run of the reference
validator over these examples (`validator_run` names the run; see `PROVENANCE.md`).
An entry with `host_profile` applies only under that validator host profile
(specification section 10.7).

- `invalid/`: inputs that must be refused.
- `warnings/`: valid inputs that must produce the listed warnings and no errors.

## What is normative

For any implementation, the normative result of a case is whether the input is accepted
or refused, and the error and warning codes it reports: each listed code, and no other.
The location of a diagnostic (file, YAML path, archive entry, line, column) and the
explanatory fields (`rule`, `quote`, `detail`) are informative.

This repository holds the reference validator to more: `node scripts/conformance.mjs`
requires it to report exactly the listed diagnostics, locations included, under host
profiles `none` and `domios`, as a regression oracle for the generated artifacts. It
also checks that every `quote` appears in the cited section of the specification. CI
runs it on every pull request (`.github/workflows/conformance.yml`).

## Archive cases

The archive-only cases (`zip-entry-dotdot`, `zip-entry-absolute`,
`unreferenced-zip-entry`) are generated by `node scripts/pack-team.mjs`, which
declares their entries; `node scripts/check-forms.mjs` proves a re-pack is
byte-identical. Authored fixtures use `com.example` identities and a neutral
author.
