Test and Evidence Taxonomy¶
Status: public evidence guide, 2026-11-05. A passing test does not say what it proves unless you know its level. Use this page before citing a test as Core capability, integration evidence, or adoption evidence.
Levels¶
| Level | Evidence | What it can prove | What it cannot prove |
|---|---|---|---|
| L1 Core contract and behavior | pkg/... tests, spec/vectors/, API snapshots |
The Go reference implements the stated local behavior or contract | Published packages, other SDKs, or production behavior |
| L2 SDK conformance | language/... tests, parity and conformance runners |
A declared SDK scope matches the vectors it claims | Full Go parity, live providers, or adoption |
| L3 Published-package consumer | language/go/examples/consumer-go, consumer-python, consumer-typescript, consumer-java; extended allow/deny starters in consumer-ruby, consumer-php, consumer-elixir, consumer-lua |
A registry artifact installs, builds, and exercises public API paths such as allow/deny | Core internals, production security, or that anyone adopted it. The four pilot languages carry the governed negative matrix; the extended starters do not |
| L4 Application recipe | Identity binding, governed acceptance glue, long-running operation fixtures and verifier/fencing demos | The reference application pattern behaves as described, including stated failure boundaries | That Core owns the external service, store, verifier, or policy decision |
| L5 Adoption experiment | Agent Adoption Lab records | How coding tools discover, select, integrate, and retain the framework under fixed conditions | Correctness of the framework itself |
| L6 Production and operational | Deployment, platform, hardware, and independent review records | The tested deployment or environment | Other environments or future revisions |
Verified is always scoped to a revision, artifact, and date. A later commit does
not extend it.
language/go/examples/consumer-go Map¶
| File | Level | Core seam actually exercised | Recipe or application behavior |
|---|---|---|---|
main_test.go |
L3, with L1 behavior through public API | Tool loop, policy allow/deny, published-package import | Deterministic fixture and output |
governed_test.go |
L3/L4 | Final tool arguments reauthorized, approval edit reauthorized, policy error propagation | Missing-policy and empty-scope guards are application checks; Core keeps nil-policy embedding |
The identity recipe has moved to
examples/recipes/identity-go.
It supplies a verified principal through a trusted context; the principal,
role, tenant, and expiry decisions are application logic, not a Core identity
service.
The long-running suite has moved to
examples/recipes/long-running-go
so the starter does not mix L3 package checks with L4 recipes. The recipe is
valuable as a reference integration and as a statement of what the application
must own. It is not evidence that Core provides durable operations, HTTP
authentication, effect verification, leases, or fencing. Only its Run-cancellation
assertion touches a Core seam.
Core-level equivalents are tested separately: see pkg/agent tests for policy
denial, final-argument authorization, allowed tools, and cancellation, and
spec/vectors for shared behavior.
Recipe to Core Evidence Map¶
| Recipe assertion | Existing L1 evidence |
|---|---|
| Final arguments and approval edits reauthorized; policy error fail closed | TestFinalToolArgumentsAuthorized in pkg/agent/tool_authorization_test.go |
| Final tool name and allowlist | TestFinalToolNameChecksAllowlist, TestFinalToolNameReauthorized, TestAllowedToolsBlocksInvocation |
| Tool cancellation stops later tools | TestRunStopsStartingToolsAfterCancellation in pkg/agent/tool_cancel_test.go |
| Cancellation during completion/cleanup | completion_cancel_test.go |
The recipes therefore consume existing Core evidence rather than establishing a new Core capability. No Core API or test was added for the long-running recipe.
Should Recipe Behavior Move Into Core?¶
Do not internalize a recipe simply because its tests pass. Core should absorb a semantic only when all of these hold:
- A named consumer needs it across more than one application.
- The semantic is stable and belongs to local agent execution, not to an external service, store, identity system, or transport.
- It fits the public API without widening it for a single product.
- Negative tests and compatibility impact are understood.
- If it is shared behavior, it has a
spec/contract, vectors, parity, and SDK impact review.
Durable operation storage, HTTP authentication, independent effect verification, fencing stores, and lease expiry do not meet that test today. They remain application, integration, or product responsibilities. A future shared async operation lifecycle could be proposed as a Spec profile with conformance vectors; that is not the same as adding a Core API by default.
Citing Tests¶
The proposed Execution Correctness Suite uses EC-D, EC-I and EC-O as verification tracks, not new L1/L2/L3 meanings. Classify each actual test by this page's L1-L6 categories and by its EC track separately. A deterministic fake of a database or robot is not real integration or device evidence, and a passing integration never implies operational acceptance.
Say the level, revision, command, and result. For example:
- "L1:
pkg/agenttest at SHA ..." - "L3: published Go 2.5.2 consumer test at SHA ..."
- "L4: long-running recipe at SHA ...; not a Core capability claim"
- "L5: not run; no adoption data"
Do not cite a recipe fixture as proof of a Core feature, and do not cite a consumer install as evidence of adoption.