← Conformance

aicent-lease-boundary

our vectors · merged at the lab · PR #212

IDENTITY · QUALITY · ASSURANCE SEALED ARTIFACTS · IQA.ORG IQA

This family tests the lease of an attestation answer: which boundary convention an implementation may declare and apply at the lease instant, what an expired lease still owes, how the declared answer mode shapes the refusal when the organ cannot be reached, and which expiry a verifier checks. It is authored by us and anchored to our own published specification — draft-li-rttp-iqa-addressing-02 (Informational, posted 2026-11-01): section 6.1 (The Lease), 6.2 (Answer Modes), 6.3 (Evaluation at the Moment of Use) and the verification procedure of 7.2. The retrieved TXT copy is pinned at sha256 02491c5a…85044. Every expected value was checked against the published text sentence by sentence.

The family is open as a candidate at the Agent-Authority-Conformance lab (PR #212), offered for anyone to run: give your implementation each case’s input, record the response it produces, and the checker scores it against the published text. Nothing here is a reviewed fixture; the candidate adds nothing to the lab’s schema, failure classes or verifier behavior.

Rules under test

rulewhat it decidesbasis
R-DECLAREDWhether the lease instant counts as fresh or as expired is a deployment convention, so a permit under a declared inclusive boundary and an expired refusal under a declared exclusive boundary are both conformant; a declaration that contradicts use is not; with no declaration the boundary answer cannot be settled; and a frame accepted at the instant under the verification procedure does not decide the reliance convention — frame validity and reliance are different layers.§6.1, §7.2
R-NOEXTENDAn expired lease: an answer read past its expiry is answered as expired; replaying the original observation as fresh is not conformant; reinterpreting the lease inside a locally added grace period is not.§6.1, §6.3
R-MODEThe declared answer mode with an unreachable organ: in live mode the call is refused regardless of the age of any cached answer, and a fresh cache does not rescue it; in cached-lease mode a policy demanding a current observation refuses with authority_not_determined while a policy accepting lease-fresh evidence may admit the call; an expired cache is refused as evidence_expired, the first applicable value. §6.1, §6.2, §8.1
R-WINDOWThe window length is an operator choice: an answer whose stated lease has not expired is not refused, and refusing it by assuming the 120-second deployment default instead of checking the stated expiry is not conformant.§6.1

Cases

15 cases — 9 conformant, 5 nonconformant, and 1 ambiguous (the undeclared-boundary case, scored in named parts so it can show which part of the outcome holds and which does not). The full case table — every identifier, its facts at answer time, and the rule that decides — is in the downloadable CANDIDATE.md and vectors.json.

Self-check

At the submitted revision, the submitter’s runs on Python 3 printed 15/15 agree and 17/17 mutants killed, each with exit 0. These show that the checker agrees with the expected results and that every rule has a case depending on it, in both directions. They say nothing about any implementation, and they do not show that the expected results are the right reading of the source — that reading is written out in the CANDIDATE.md, one quoted sentence per rule, for anyone to dispute.

Download

filesizesha256
CANDIDATE.md7,844 B076693695c6142dabe98046ca4c47bb80bee733309726316f5902a793d56ad6f
vectors.json10,963 B71735739303dcbc248e3939535d754c702d00109cb4c6f1b4a02316ff29d773c
check.py5,303 B74f6d4e78fcaecd6f3a49abe354ad11656b29667b350997f493e54ea3dd04ae4
mutate.py3,303 Bd3b87a9c50aadf3a5570bf9907e0addbd6444f962972d7e8fa20a124852147c5

Canonical source: github.com/Aicent-Stack/conformance · candidates/aicent-lease-boundary. Merged at the lab: Agent-Authority-Conformance lab · PR #212. License Apache 2.0 (the license of the repository). The candidate reuses no text from the draft beyond short quoted sentences for rule description.

How to run

python3 -I check.py vectors.json
python3 -I mutate.py

check.py recomputes each case’s verdict from its input and outcome, and compares it with expect and expect_parts. mutate.py weakens or distorts one rule of check.py at a time — including versions that always answer nonconformant and always answer conformant — and fails unless some case catches each change. Zero dependencies; any Python 3.

Sealed · 2026-11-04 · page sha256 88b70c16e4e52e4e… (seal line excluded) · rttp://88b70c16.site.iqa · iqa://88b70c16e4e52e4e43123e6fc0647132.forge.iqa · artifact: aicent-lease-boundary-site-20261104a.tar.gz