aicent-uri-grammar
our vectors · recorded run · lab PR #223 under review
Abstract
This page is the recorded run of the rttp URI grammar over the family’s own vectors: 26/26 cases agree and 13/13 mutants killed, exit 0, output recorded byte for byte and replayed byte-identical on a second host and a second platform. The run is author-produced (the author’s own checkers over the author’s own vectors): it records that the vectors and their battery behave exactly as documented, and it is not an independent verification and certifies nothing. The whole-session console output is embedded uncut in the Verbatim block; every number on this page is read back from the recorded file.
Scope and method
The family tests the rttp URI grammar: the ABNF shape (three dot-separated segments, hash-intent versus name-intent, single-segment action) and the exclusions (lowercase canonical form, no userinfo, port, query or fragment, no percent-encoded octets, no “rttps” fallback), with one disclosed tightening (leading hyphen) and one licensed ambiguous edge (percent-encoding). It is anchored to draft-li-rttp-iqa-addressing-02 (Informational, posted 2026-11-01), sections 4.1 and 4.2, pinned at sha256 02491c5a…85044. The corpus belongs to this repository’s candidate set (commit 8088cbb, four files per family, digest-pinned in the download table below). Method: the runner loads the family’s own checker, scores every case against the frozen vectors, records the derived verdict next to the declared expectation, then runs every mutant in the family’s battery and records which cases kill it. The declared claim set: vectors and battery behave as documented — qualifier: author-produced, no runtime certification.
Results
26/26 cases agree across 1 rules; 13/13 mutants killed. Per-rule breakdown:
| rule | agree | cases |
|---|---|---|
R-GRAMMAR | 26 | 26 |
Instrumentation contract
Instrumented, not asserted: the battery is the instrument. Each mutant weakens or distorts exactly one rule of the checker; a kill requires that some frozen case then disagrees with its frozen expectation. Both global directions are always present (always-accept and always-reject, or always-conformant and always-nonconformant), so a vacuous battery cannot pass. The recorded output carries the kill attribution case by case; nothing on this page is asserted without a recorded line behind it.
Mutation battery — full table
All 13 mutants, no more and no less — the table is the battery:
| mutant | state | killed by |
|---|---|---|
| grammar: uppercase normalised away | killed | |
| grammar: any scheme accepted | killed | |
| grammar: userinfo/port/query/fragment allowed | killed | |
| grammar: segment count flexible | killed | |
| grammar: empty segments allowed | killed | |
| grammar: charset widened | killed | |
| grammar: path flexible | killed | |
| grammar: leading-hyphen tightening dropped | killed | |
| grammar: whitespace stripped silently | killed | |
| grammar: percent-encoding always rejected | killed | |
| grammar: percent-encoding silently normalised | killed | |
| grammar: always accept | killed | |
| grammar: always reject | killed | |
Diagnostics
No separate diagnostic pass was run for this family: the mutation battery serves as the diagnostic instrument, and its full table above is the diagnostic record. The runner adds no diagnostics of its own beyond what the family’s checker and battery emit.
Oracle checkpoints
Not applicable in the interop sense: this family has no external oracle to check against. The frozen vectors carry their own expectations, anchored sentence by sentence to the pinned draft text (each case lists its basis sections in vectors.json); the checker re-derives every decision from the pinned text, not from any implementation library.
Reporting semantics
Executed, not asserted: every verdict in the Results table and every kill in the battery table was computed during the recorded run and read back from family-runner/run-output.json. No number on this page was typed by hand from memory; the summary lines in the Verbatim block are the runner’s own printed output, embedded uncut.
Exit status
exit 0 — the runner exits 0 only when every case agrees and every mutant is killed; any mismatch or any live mutant yields exit 1. The recorded run exited 0.
Negative-path self-check
Both failure directions are exercised by construction: the battery includes grammar: percent-encoding always rejected and grammar: always accept and grammar: always reject. Each was killed (see the battery table), which is the negative-path check: a checker that could not fail would leave the always-reject mutant alive, and a checker that could not distinguish would leave the always-accept mutant alive. The ambiguous case UG-A01 (percent-encoding) is scored in its licensed parts and constrains neither decision.
Determinism and cost
The recorded output is deterministic: the run was executed twice on the recording host and the two outputs are byte-identical, and the GitHub Actions replay (ubuntu-latest, CPython 3.12, run 43488086178) reproduced the recorded bytes via cmp. The output contains no timestamps, paths or environment detail by construction. Cost: standard library only, zero dependencies, wall time under one second for the whole six-family run.
Per-case results — full table
Every case, not truncated — identifier, rule, declared expectation, derived verdict, agreement:
| case | rule | expect | got | verdict |
|---|---|---|---|---|
UG-P01 | R-GRAMMAR | accept | accept | agree |
UG-P02 | R-GRAMMAR | accept | accept | agree |
UG-P03 | R-GRAMMAR | accept | accept | agree |
UG-P04 | R-GRAMMAR | accept | accept | agree |
UG-P05 | R-GRAMMAR | accept | accept | agree |
UG-P06 | R-GRAMMAR | accept | accept | agree |
UG-P07 | R-GRAMMAR | accept | accept | agree |
UG-P08 | R-GRAMMAR | accept | accept | agree |
UG-N01 | R-GRAMMAR | reject | reject | agree |
UG-N02 | R-GRAMMAR | reject | reject | agree |
UG-N03 | R-GRAMMAR | reject | reject | agree |
UG-N04 | R-GRAMMAR | reject | reject | agree |
UG-N05 | R-GRAMMAR | reject | reject | agree |
UG-N06 | R-GRAMMAR | reject | reject | agree |
UG-N07 | R-GRAMMAR | reject | reject | agree |
UG-N08 | R-GRAMMAR | reject | reject | agree |
UG-N09 | R-GRAMMAR | reject | reject | agree |
UG-N10 | R-GRAMMAR | reject | reject | agree |
UG-N11 | R-GRAMMAR | reject | reject | agree |
UG-N12 | R-GRAMMAR | reject | reject | agree |
UG-N13 | R-GRAMMAR | reject | reject | agree |
UG-N14 | R-GRAMMAR | reject | reject | agree |
UG-N17 | R-GRAMMAR | reject | reject | agree |
UG-N15 | R-GRAMMAR | reject | reject | agree |
UG-N16 | R-GRAMMAR | reject | reject | agree |
UG-A01 | R-GRAMMAR | ambiguous | ambiguous | agree |
Run metadata
| field | value |
|---|---|
| operator | ShaoBao Li (Lee) · @Aicent-com · RTTP CRI 27 · IQA CRI 28 |
| mode | A — author-produced: the author’s own checkers over the author’s own vectors. Not an independent verification; certifies nothing. |
| code as run | github.com/Aicent-Stack/conformance @ 590b26b · family_runner.py sha256 5ce00209af90c7c62f432c014a96319edf64575ed1b01cf1bdfc96a9e639eabe |
| inputs | candidate families on the same commit (8088cbb): six families, four files each, digest-pinned in the download table below |
| recorded output | family-runner/run-output.json · 45,516 B · sha256 b2347a582c3682b0fdae26401a74db78b442dfc204226d0c2d7cf344f21f6b94 |
| recorded on | Windows, CPython 3.14.2 (two runs, byte-identical) |
| replayed on | GitHub Actions ubuntu-latest, CPython 3.12 (run 43488086178), byte-identical via cmp |
| defect vectors observed | none — all cases agree, all mutants killed |
Verbatim command and output
python3 -I family_runner.py candidates run-output.json
aicent-grant-ref 25/25 agree, 21/21 mutants killed
aicent-lease-boundary 15/15 agree, 17/17 mutants killed
aicent-ae128-fail-closed 21/21 agree, 15/15 mutants killed
aicent-pulse-header 24/24 agree, 19/19 mutants killed
aicent-uri-grammar 26/26 agree, 13/13 mutants killed
aicent-route-shard 16/16 agree, 9/9 mutants killed
summary: 127/127 cases agree, 94/94 mutants killed
status: run_matched
Uncut: the whole-session console output of the recorded run, exactly as printed.
Findings raised and revisions
Initial recorded run; no findings raised and none resolved within the run itself. Revisions to this page are append-only and will be recorded here with their reason. Known scope notes carried from the candidates: the AE-128 verification step (2) (lease against the receiver’s clock) is time-dependent and is exercised by the aicent-lease-boundary family, not this one; the iqa URI syntax is out of the aicent-uri-grammar family’s scope; the collision bounds of section 9.1 are design accounts, not conformance targets.
Artifact, download and provenance
Download — the frozen corpus, digest-pinned:
| file | size | sha256 |
|---|---|---|
| CANDIDATE.md | 7,517 B | 68852d2e3f3cd41680d87315865bb6b1e6d18a7ee0972dc6add370fd578bdab2 |
| vectors.json | 9,788 B | 091737ed07f2c70e6b79a273ca4cca339e35da41fb1b61004700eb4e79e8d5a4 |
| check.py | 3,636 B | 11d8f34d4583573f9bd43c4c5f04a7bcb3cce80f68cde8f55f265869ad46a928 |
| mutate.py | 3,679 B | 74d4fe7a8462daadba542552bb020784cd9976eb12ed70976fc167258ee73ebd |
Artifact and seal — this page is sealed by our own organ as a single-file site freeze: aicent-uri-grammar-site-20261114a.tar.gz. The two addresses of the sealed page are carried in the one-artifact-two-addresses block at the foot of this page (a display block excluded from the page digest by design, so the digest pins exactly the text above — the addresses are derived from that digest and cannot appear inside it). Replay: recompute the sha256 of this page with that block removed and compare with the address pair in the block; the tarball’s index.html must match this page byte for byte.
Provenance — the candidate corpus was written for this repository by the draft author; no files are copied from the draft beyond short quoted sentences for rule description, and no code from any implementation is used: the checkers derive their rules from the pinned text. The runner is a thin harness over those checkers and batteries. On independence: this run is author-produced and is presented as such — its value is a complete, byte-replayable record that the vectors and batteries behave as documented; independent scrutiny is exactly what the family is offered for.
Canonical source: github.com/Aicent-Stack/conformance · candidates/aicent-uri-grammar. The family is filed at the Agent-Authority-Conformance lab as PR #223, under review. License Apache 2.0 (the license of the repository).
Citation
From this run forward, our run reports ship with a citation block: runner family_runner.py · repository Aicent-Stack/conformance (family-runner/) · operator ShaoBao Li (Lee) / Aicent Stack, RTTP CRI 27 · IQA CRI 28. We ask that any public reference to this run names the runner, its repository, and its operator.