| ASR-001 | Physical format | Stream is UTF-8 without BOM; one JSON object per line, LF-terminated | semantic |
| ASR-002 | Physical format | No pretty-printing and no blank lines | semantic |
| ASR-003 | Physical format | Line 1 is the session header; no other session record | semantic |
| ASR-004 | Physical format | All records belong to the header’s session | fixture |
| ASR-005 | Physical format | Complete lines are never changed, reordered or removed | fixture |
| ASR-006 | Physical format | One writer at a time; handover via declaration.producer | semantic |
| ASR-007 | Physical format | A non-empty tail is not a record | fixture |
| ASR-008 | Physical format | A resuming writer truncates a torn tail before appending | fixture |
| ASR-009 | Physical format | Malformed complete lines: diagnostic, continue, gap marker | fixture |
| ASR-010 | Physical format | Converters emit gap (unparseable) for corrupt source data | fixture |
| ASR-011 | Physical format | Empty lines are skipped, not gaps | fixture |
| ASR-012 | Physical format | seq is an integer in [0, 2^53−1] | schema |
| ASR-013 | Physical format | seq strictly increases in line order | semantic |
| ASR-014 | Physical format | Readers order by seq, not ts; a source’s display order only when it keeps no observation order | fixture |
| ASR-015 | Physical format | Appends keep IDs and seq; independent captures keep stable source IDs, with seq local to each capture | fixture |
| ASR-016 | Physical format | A re-export that appends records leaves existing lines byte-for-byte unchanged | fixture |
| ASR-017 | Physical format | Record IDs are unique within the stream | semantic |
| ASR-018 | Physical format | Record ID pattern; IDs are opaque | schema |
| ASR-019 | Physical format | Bundles have bundle.json at the root | semantic |
| ASR-020 | Physical format | Streams are located through the manifest, never by file name | fixture |
| ASR-021 | Physical format | Manifest paths are safe relative POSIX paths | schema |
| ASR-022 | Physical format | Present entries: digest of exact bytes and correct recordCount | semantic |
| ASR-023 | Physical format | Present entries carry path, digest, count; missing entries carry reason | schema |
| ASR-024 | Physical format | Manifest session key equals the stream header’s | semantic |
| ASR-025 | Physical format | Bundled streams have no torn tail and are uncompressed | semantic |
| ASR-026 | Physical format | Sharing bundles exclude native files unless requested | fixture |
| ASR-027 | Physical format | Blobs stored at blobs/sha256/<hex> of their bytes | semantic |
| ASR-028 | Physical format | Readers verify blob digest and size before use | fixture |
| ASR-029 | Physical format | Blob reference shape | schema |
| ASR-030 | Physical format | Inline binary data SHOULD be at most 64 KiB | schema |
| ASR-031 | Physical format | Record digest: RFC 8785 JCS without native, SHA-256 | fixture |
| ASR-032 | Physical format | Numbers must be exactly serializable by RFC 8785 | schema |
| ASR-033 | Physical format | Capture selection, replacement observedAt and no-op stability | fixture |
| ASR-034 | Physical format | Mutable current-row snapshots form a capture tail; configuration uses both snapshot flags | semantic |
| ASR-035 | Physical format | Preserve whole out-of-range native JSON values as lossless text or blobs | fixture |
| ASR-036 | Physical format | Manifest accounts for referenced sessions and names other bundles | semantic |
| ASR-040 | Conventions | Member names spelled exactly; camelCase names, snake_case values | schema |
| ASR-041 | Conventions | Records are I-JSON: valid UTF-8, no duplicate names | semantic |
| ASR-042 | Conventions | Integer fields are JSON integers in [0, 2^53−1] | schema |
| ASR-043 | Conventions | null only where the spec gives it meaning | schema |
| ASR-044 | Conventions | Timestamps are RFC 3339 UTC with Z, up to 9 fractional digits | schema |
| ASR-045 | Conventions | …Ms durations are non-negative numbers of milliseconds | schema |
| ASR-046 | Conventions | Strings compared by code point, no folding or normalization | fixture |
| ASR-047 | Conventions | Costs are numbers, no more precise than the source | fixture |
| ASR-050 | Identity | Sessions are the same if and only if their session keys are equal | fixture |
| ASR-051 | Identity | sessionId is the native ID verbatim, non-empty | fixture |
| ASR-052 | Identity | Session ID and namespace derived per the registry | fixture |
| ASR-053 | Identity | Paths, times and hashes are not session identity | fixture |
| ASR-054 | Identity | Namespace required where native IDs are not globally unique | fixture |
| ASR-055 | Identity | Namespaces are stable, not path- or time-derived | fixture |
| ASR-056 | Identity | Agent name grammar (short or reverse-DNS) | schema |
| ASR-057 | Identity | Short names are registry-only; others use reverse-DNS | semantic |
| ASR-058 | Identity | Readers resolve short names to reverse-DNS before comparing | fixture |
| ASR-059 | Identity | Session reference percent-encoding of %, :, #, space, controls | schema |
| ASR-060 | Identity | Readers percent-decode components; reject invalid UTF-8 | fixture |
| ASR-061 | Identity | Session references match the grammar; no empty namespace | schema |
| ASR-062 | Identity | Ref grammar: record ID, <entityKey>=<value> or turnId=<value> | schema |
| ASR-063 | Identity | Record-ID refs resolve to exactly that record | semantic |
| ASR-064 | Identity | Entity refs resolve to the latest revision; refs matching several chains are unresolved | semantic |
| ASR-065 | Identity | Entity-bearing records carry their entity key; revisions keep it | schema |
| ASR-066 | Identity | Equal strings in different entity key fields are different entities | fixture |
| ASR-067 | Identity | Derived entity keys are marked derived | fixture |
| ASR-068 | Identity | Allowed and forbidden inputs to derived IDs | fixture |
| ASR-069 | Identity | ID derivation is deterministic | fixture |
| ASR-070 | Identity | Snapshot sources mark positional IDs idScope: capture | fixture |
| ASR-071 | Identity | No continuity assumed for capture-scoped IDs | fixture |
| ASR-072 | Identity | Native IDs are byte-for-byte the source’s | fixture |
| ASR-073 | Identity | inferenceId from the source’s call identifier, else derived | fixture |
| ASR-074 | Identity | Message IDs are not reused as inference IDs without documentation | fixture |
| ASR-075 | Identity | Turn refs resolve to the records with that turnId | semantic |
| ASR-076 | Identity | Actor reference shape | schema |
| ASR-077 | Identity | Actor participant names a declared participant | semantic |
| ASR-078 | Identity | Actor values verbatim from the source; no constructed addresses | fixture |
| ASR-079 | Identity | Per-field resolution classes; missing and ambiguous targets reported distinctly | semantic |
| ASR-080 | Identity | Unresolved required references remain markers with exact false | fixture |
| ASR-100 | Envelope | Every record has type, seq, id | schema |
| ASR-101 | Envelope | Core and vendor record type grammar | schema |
| ASR-102 | Envelope | No undefined core record types | schema |
| ASR-103 | Envelope | ts describes the item, comes from the source; never copied or interpolated | fixture |
| ASR-104 | Envelope | No rounding of native timestamps; tsPrecision for coarse ones | fixture |
| ASR-105 | Envelope | tsPrecision values; tsSource set for non-native times | schema |
| ASR-106 | Envelope | observedAt is not occurrence time | fixture |
| ASR-107 | Envelope | No top-level members beyond envelope, type fields and _meta | schema |
| ASR-108 | Envelope | Unknown members preserved for newer minor versions; validators flag undefined ones | fixture |
| ASR-109 | Envelope | inferenceId names the producing call; SHOULD resolve | semantic |
| ASR-110 | Envelope | turnId only from source-defined turns | fixture |
| ASR-111 | Envelope | native has exactly one of record, ref, blob | schema |
| ASR-112 | Envelope | native.ref never followed outside the bundle or to the network | fixture |
| ASR-113 | Envelope | Unknown record types: audit-only, no failure, preserved | fixture |
| ASR-114 | Envelope | Vendor types are audit-only and carry no branchesFrom | schema |
| ASR-115 | Envelope | idSource and idScope values | schema |
| ASR-150 | Session records | Required header members | schema |
| ASR-151 | Session records | formatVersion pattern; 0.1 for this version | schema |
| ASR-152 | Session records | profiles includes core; others defined or _-prefixed | schema |
| ASR-153 | Session records | contentLevel values | schema |
| ASR-154 | Session records | startedAt follows ts rules | fixture |
| ASR-155 | Session records | Required producer members | schema |
| ASR-156 | Session records | Non-native producers declare source.format and lossy | schema |
| ASR-157 | Session records | lossy lists every known loss | fixture |
| ASR-158 | Session records | Root IDs unique; root paths absolute or null | semantic |
| ASR-159 | Session records | Root VCS state only from the source | fixture |
| ASR-160 | Session records | session_info fields are patches; last value wins | fixture |
| ASR-161 | Session records | heads refs resolve to context-participating records | semantic |
| ASR-162 | Session records | A declaration amends at least one property | schema |
| ASR-163 | Session records | Merge rules for effective profiles, extensions and losses | semantic |
| ASR-164 | Session records | contentLevel declarations only tighten | semantic |
| ASR-165 | Session records | contentLevel declarations apply only to later records | fixture |
| ASR-166 | Session records | Declared roots are new; no use before declaration | semantic |
| ASR-167 | Session records | Validators use effective declarations at each record | fixture |
| ASR-168 | Session records | state present; stopReason with idle, error or ended | schema |
| ASR-169 | Session records | state only for source-recorded transitions | fixture |
| ASR-170 | Session records | ended is not final | fixture |
| ASR-171 | Session records | config_change contains at least one setting | schema |
| ASR-172 | Session records | Changes only as recorded; requested and served model kept separate | fixture |
| ASR-173 | Session records | instructions has kind and content, tools, removed, digest or capture | schema |
| ASR-174 | Session records | instructions are audit-only, not context-view entries | fixture |
| ASR-175 | Session records | Participant, conversation and identity required members | schema |
| ASR-176 | Session records | Participant and conversation IDs unique; declarations add only new IDs | semantic |
| ASR-177 | Session records | Participants and identities from the source; basis verbatim, never a trust label | fixture |
| ASR-178 | Session records | conversationKey verbatim; not session identity | fixture |
| ASR-179 | Session records | Declared agent version, client and environment apply later; environment patched by member | fixture |
| ASR-180 | Session records | continuedIn is a session reference without # | schema |
| ASR-181 | Session records | A new title without titleSource makes its source unknown | fixture |
| ASR-182 | Session records | Turn fields only on state records with turnId; their shapes | semantic |
| ASR-183 | Session records | Turn links, attempts and errors from the source; no guessed sessions | fixture |
| ASR-184 | Session records | trigger only on the first record of a turn | semantic |
| ASR-185 | Session records | trigger has kind or native; source is an actor reference | schema |
| ASR-186 | Session records | Trigger values from the source; triggers do not change author or origin | fixture |
| ASR-187 | Session records | Snapshots state recorded values; absent members unknown; no back-dating | fixture |
| ASR-188 | Session records | capability requires kind, name and op | schema |
| ASR-189 | Session records | No credentials in configuration; per-call settings are not configuration changes | fixture |
| ASR-190 | Session records | memory_change requires store, op and a one-of cause | schema |
| ASR-191 | Session records | Memory writes only from source events or documented memory files; applied needs evidence | fixture |
| ASR-192 | Session records | A memory change and its file change are one write | fixture |
| ASR-200 | Messages | message requires messageId, content, and role unless captured | schema |
| ASR-201 | Messages | role is the channel, not the writer | fixture |
| ASR-202 | Messages | author: human only with source evidence | fixture |
| ASR-203 | Messages | Inserted content is never labeled human; mixed items may be split into parts | fixture |
| ASR-204 | Messages | audience values; never defaulted to both | fixture |
| ASR-205 | Messages | Notices are harness/notice/user messages | semantic |
| ASR-206 | Messages | status values, including withdrawn | schema |
| ASR-207 | Messages | Display-only sources fill displayContent, not content | fixture |
| ASR-208 | Messages | Correspondence is supplied only when the source links both representations | fixture |
| ASR-209 | Messages | Content rewritten after the model saw it is masked | fixture |
| ASR-210 | Messages | Content parts are objects with a string type | schema |
| ASR-211 | Messages | Text kept exactly; deltas joined by concatenation | fixture |
| ASR-212 | Messages | image/audio need mimeType, not both data and blob | schema |
| ASR-213 | Messages | resource_link and resource shapes | schema |
| ASR-214 | Messages | Summaries are never labeled full reasoning | fixture |
| ASR-215 | Messages | Opaque reasoning and signatures never indexed, rendered or included in metadata exports | fixture |
| ASR-216 | Messages | Reasoning visibility and capture state are independent | fixture |
| ASR-217 | Messages | refusal parts have text | schema |
| ASR-218 | Messages | Unknown parts skipped and preserved; annotations kept | fixture |
| ASR-219 | Messages | Reasoning items with native IDs stay reasoning-only messages | fixture |
| ASR-220 | Messages | Reasoning-only messages treated like reasoning parts | fixture |
| ASR-221 | Messages | plan required members for each plan type | schema |
| ASR-222 | Messages | Plans are full snapshots; updates supersede | semantic |
| ASR-224 | Messages | Part-level author, origin and phase override message values | fixture |
| ASR-225 | Messages | withdrawn only from the source; withdrawn messages are not in the context view | fixture |
| ASR-226 | Messages | Senders, recipients, conversations, platform IDs and surfaces from the source | fixture |
| ASR-227 | Messages | conversation names a declared conversation | semantic |
| ASR-228 | Messages | from, recipient and derivedFrom shapes | schema |
| ASR-229 | Messages | derivedFrom only from recorded render inputs | fixture |
| ASR-230 | Messages | data parts require data | schema |
| ASR-231 | Messages | opaque parts require format; not both data and blob | schema |
| ASR-232 | Messages | Opaque parts never indexed, rendered as text or included in metadata exports | fixture |
| ASR-233 | Messages | derivation requires method, comes from the source; from is a valid index | fixture |
| ASR-234 | Messages | delivery requires status | schema |
| ASR-235 | Messages | Delivery message and conversation refs resolve | semantic |
| ASR-236 | Messages | Plan entry IDs unique; blockedBy names entries of the same plan | semantic |
| ASR-237 | Messages | Deliveries only from source records; a message alone is not delivered | fixture |
| ASR-238 | Messages | Structured source data does not establish the exact rendered input; capture describes the content kept in the record | fixture |
| ASR-250 | Tools | tool_call requires callId, callIdSource, name or capture | schema |
| ASR-251 | Tools | tool_call records a request and who requested it; no outcome | schema |
| ASR-252 | Tools | Tool name is exactly as requested | fixture |
| ASR-253 | Tools | kind from source or registry mapping only | fixture |
| ASR-254 | Tools | input or inputText, never both | schema |
| ASR-255 | Tools | provider requires kind and identity; exact and parsed rules | fixture |
| ASR-256 | Tools | Consumers never split composite tool names | fixture |
| ASR-257 | Tools | tool_result requires linkage, status, and callId unless none | schema |
| ASR-258 | Tools | Result status reflects the source’s own outcome | fixture |
| ASR-259 | Tools | content is what reached the model, else absent with capture | fixture |
| ASR-260 | Tools | exitCode only when the source records a number | fixture |
| ASR-261 | Tools | Result timing from the source | fixture |
| ASR-262 | Tools | Duplicate call IDs preserved; nativeCallId records provenance, never a fallback for pairing | fixture |
| ASR-263 | Tools | Readers pair only on exact/derived linkage with one matching call | fixture |
| ASR-264 | Tools | Several result entities for one call are ambiguous | fixture |
| ASR-265 | Tools | Dangling calls: unknown outcome, never shown as success or synthesized | fixture |
| ASR-266 | Tools | Orphan results kept and shown | fixture |
| ASR-267 | Tools | Execution details never fabricated | fixture |
| ASR-268 | Tools | permission requires requestId; one-of subject | schema |
| ASR-269 | Tools | Unresolved permissions are neither granted nor refused | fixture |
| ASR-270 | Tools | decidedBy, decider, rule and reviews only from the source | fixture |
| ASR-271 | Tools | terminal requires terminalId; snapshots supersede | schema |
| ASR-272 | Tools | Terminal output not copied into result content | fixture |
| ASR-273 | Tools | hook requires event; injected hook content is a message | schema |
| ASR-274 | Tools | requestedBy from the source; absent is not model | fixture |
| ASR-275 | Tools | parentCallId only from recorded links | fixture |
| ASR-276 | Tools | Provider identity on results; consumers fall back to the paired result | fixture |
| ASR-277 | Tools | tool_result.permission requires decision | schema |
| ASR-278 | Tools | No compact decision on a call that has a permission record | semantic |
| ASR-279 | Tools | Full record when the request was recorded; compact decisions counted once | fixture |
| ASR-280 | Tools | classifier and agent only when that reviewer resolved; separate reviews | fixture |
| ASR-281 | Tools | status consistent with decision; reviews name by | schema |
| ASR-282 | Tools | input_request required members and question shape | schema |
| ASR-283 | Tools | Secret values never recorded anywhere in a stream or bundle | fixture |
| ASR-284 | Tools | Question IDs unique; answers and answerRef resolve | semantic |
| ASR-285 | Tools | Question status, answers and answerer from the source | fixture |
| ASR-286 | Tools | Background agents are subagent records, not terminals | fixture |
| ASR-287 | Tools | Hook details from the source; harness setup commands are hooks | fixture |
| ASR-288 | Tools | Omit unavailable null execution fields; numeric signals remain numeric in raw | fixture |
| ASR-289 | Tools | exec.processId is a string or safe integer | schema |
| ASR-290 | Tools | exec.terminalId requires a terminal entity in the stream or bundle | semantic |
| ASR-291 | Tools | Native process IDs are kept verbatim as provenance; no invented terminals | fixture |
| ASR-300 | Inference and usage | inference requires inferenceId | schema |
| ASR-301 | Inference and usage | inference only for source-identified calls; never synthesized | fixture |
| ASR-302 | Inference and usage | One record per call; multi-call aggregates go to usage_summary | fixture |
| ASR-303 | Inference and usage | Served and requested models recorded separately, never inferred except from turn configuration | fixture |
| ASR-304 | Inference and usage | inference.usage is a per-call delta | fixture |
| ASR-305 | Inference and usage | Token counts are non-negative integers | schema |
| ASR-306 | Inference and usage | uncached only under an unambiguous inclusion rule | fixture |
| ASR-307 | Inference and usage | input.total requires includesCache | schema |
| ASR-308 | Inference and usage | Input total arithmetic when all parts are present | schema |
| ASR-309 | Inference and usage | Reasoning tokens do not exceed output total | schema |
| ASR-310 | Inference and usage | Usage from the source; zero only when reported | fixture |
| ASR-311 | Inference and usage | Usage repeated across native records recorded once | fixture |
| ASR-312 | Inference and usage | cost requires amount and currency; currency format | schema |
| ASR-313 | Inference and usage | Unknown cost is absent, never zero; estimates not labeled reported | fixture |
| ASR-314 | Inference and usage | Converter estimates SHOULD carry pricingVersion | schema |
| ASR-315 | Inference and usage | usage_summary required members and at least one value | schema |
| ASR-316 | Inference and usage | tree scope requires known coverage and includesChildren: true | schema |
| ASR-317 | Inference and usage | byModel entries carry model | schema |
| ASR-318 | Inference and usage | Context-window occupancy and quota are not consumption | fixture |
| ASR-319 | Inference and usage | Cumulative summaries replace earlier totals and are never added to them | fixture |
| ASR-320 | Inference and usage | Non-cumulative summaries are added only when they have the same scope and do not overlap | fixture |
| ASR-321 | Inference and usage | Use an aggregate or its components, never both | fixture |
| ASR-322 | Inference and usage | No parent-plus-child addition unless parent excludes children | fixture |
| ASR-323 | Inference and usage | Aggregates never copied down onto inference records | fixture |
| ASR-324 | Inference and usage | inference.context holds references only | schema |
| ASR-325 | Inference and usage | model.requested from turn configuration only under a registry rule, and marked | fixture |
| ASR-326 | Inference | Preserve reported TTL counts; warn on inconsistency without repairing values | semantic |
| ASR-327 | Inference and usage | cost.billing only from the source | fixture |
| ASR-328 | Inference and usage | Quota windows carry usedPercent from 0 to 100 | schema |
| ASR-329 | Inference and usage | attempt values valid and from the source | schema |
| ASR-330 | Inference and usage | Context entries are one of ref or blob; prefixFrom shape | schema |
| ASR-331 | Inference and usage | prefixFrom names an earlier call with a context; count in range | semantic |
| ASR-332 | Inference and usage | Expanded entry lists computed as defined | fixture |
| ASR-333 | Inference and usage | A request is exact only with a complete, resolvable chain | fixture |
| ASR-334 | Inference and usage | One effective non-cumulative summary per turn and counter; disjoint source components | semantic |
| ASR-350 | Structure | Context-participating types are exactly message, tool_call, tool_result, compaction | fixture |
| ASR-351 | Structure | Structural refs resolve to context-participating records | semantic |
| ASR-352 | Structure | Revisions keep position, type and entity key, and branchesFrom unless a marked rewrite | semantic |
| ASR-353 | Structure | Implicit predecessor computed as specified | fixture |
| ASR-354 | Structure | rewind requires to and reason | schema |
| ASR-355 | Structure | rewind.to is the last remaining record; first-removed sources mapped back | fixture |
| ASR-356 | Structure | rewind.to resolves earlier; rewinds are not revised | semantic |
| ASR-357 | Structure | File restorations recorded as file_change with cause.restore | fixture |
| ASR-358 | Structure | branchesFrom shape and placement | semantic |
| ASR-359 | Structure | No branchesFrom when the predecessor is implicit | semantic |
| ASR-360 | Structure | Unknown predecessor written as state: unknown, never invented | fixture |
| ASR-361 | Structure | Converters of sources stored as trees apply the mechanical-sibling rule exactly | fixture |
| ASR-362 | Structure | No similarity or timing in sibling classification | fixture |
| ASR-363 | Structure | Effective heads, including an explicit null primary head | fixture |
| ASR-364 | Structure | Native current leaf written as heads when it differs | fixture |
| ASR-365 | Structure | Active paths computed with ACTIVE-PATH | fixture |
| ASR-366 | Structure | Predecessor cycles make the stream invalid | semantic |
| ASR-367 | Structure | Off-path records still count as audit facts | fixture |
| ASR-368 | Structure | Context views computed with CONTEXT-VIEW | fixture |
| ASR-369 | Structure | Context view is not presented as the exact request | fixture |
| ASR-370 | Structure | compaction requires compactionId, kind, replaces | schema |
| ASR-371 | Structure | replaces, insertAt and retains shapes; keptFromId only with a range | schema |
| ASR-372 | Structure | Compaction refs resolve earlier on the compaction’s own path | semantic |
| ASR-373 | Structure | Compaction summaries are never messages or user text | fixture |
| ASR-374 | Structure | branch_summary never erases its branch | fixture |
| ASR-375 | Structure | Destroyed history: historyRetained: false plus gap | semantic |
| ASR-376 | Structure | Fixture output format for active paths and context views | fixture |
| ASR-377 | Structure | An unknown replaced range is written as unknown, never guessed | fixture |
| ASR-378 | Structure | retains from the source’s list; shortened copies marked truncated | fixture |
| ASR-400 | Lineage | Facet objects and executedBy entries carry evidence; session refs have no fragment | schema |
| ASR-401 | Lineage | Absent lineage is unknown, never root | fixture |
| ASR-402 | Lineage | root excludes parent facets; registry-documented only | schema |
| ASR-403 | Lineage | Facets only from positive evidence | fixture |
| ASR-404 | Lineage | evidence values; converter_inference only under a published rule | schema |
| ASR-405 | Lineage | Unexplained parent pointers become relatedUnknown | fixture |
| ASR-406 | Lineage | Missing parents never invalidate children | fixture |
| ASR-407 | Lineage | forkedFrom has at most one of record, ordinal | schema |
| ASR-408 | Lineage | continues.reason values | schema |
| ASR-409 | Lineage | inherits required members and one-of rules | schema |
| ASR-410 | Lineage | scope only from the source | fixture |
| ASR-411 | Lineage | subagent requires childSession unless captured | schema |
| ASR-412 | Lineage | Claims that delegation occurred agree; missing parent announcements produce one notice | semantic |
| ASR-413 | Lineage | copiedFrom requires proof, and session or a local record | semantic |
| ASR-414 | Lineage | Copies marked only on native proof | fixture |
| ASR-415 | Lineage | Declared inherited prefix marks records as copies | semantic |
| ASR-416 | Lineage | Originality rule; unknown originality earns no credit | fixture |
| ASR-417 | Lineage | Copies never counted as the holder’s work | fixture |
| ASR-418 | Lineage | New calls over inherited context are the inheritor’s cost | fixture |
| ASR-419 | Lineage | Subagent work not double counted in parent totals | fixture |
| ASR-420 | Lineage | executedBy is an array; declarations add entries | schema |
| ASR-421 | Lineage | executedBy only from source evidence | fixture |
| ASR-422 | Lineage | authority: mirror requires one executedBy entry and documented evidence | semantic |
| ASR-423 | Lineage | Mirror records without copiedFrom have unknown originality; wrapper records keep theirs | fixture |
| ASR-424 | Lineage | Subagent state changes are revisions; values from the source | fixture |
| ASR-425 | Lineage | Wrapper and backing usage never both counted | fixture |
| ASR-426 | Lineage | Rendered context is new content, not a copy | fixture |
| ASR-427 | Lineage | Copied run IDs do not establish which session owns separately stored facts; deduplicate through lineage | fixture |
| ASR-450 | Coding | file_change requires status, precision, non-empty changes | schema |
| ASR-451 | Coding | applied only with evidence of application | fixture |
| ASR-452 | Coding | cause one-of; actors require observation; external for unidentified actors | schema |
| ASR-453 | Coding | cause references resolve | semantic |
| ASR-454 | Coding | Change requires op, root, path; moves and copies need oldPath | schema |
| ASR-455 | Coding | Record precision matches the least precise change; no higher precision claimed | fixture |
| ASR-456 | Coding | Patch shape; unified for one change; changes authoritative | schema |
| ASR-457 | Coding | Object ID requires type and correct length; not both text and content | schema |
| ASR-458 | Coding | Object ID computation | fixture |
| ASR-459 | Coding | Repository object IDs labeled git_object | fixture |
| ASR-460 | Coding | No current-file hashes recorded as historical states | fixture |
| ASR-461 | Coding | Object IDs optional; consumers never require them | fixture |
| ASR-462 | Coding | Blob matches are evidence, not proof of causation | fixture |
| ASR-463 | Coding | vcs requires action, evidence; commit ID formats | schema |
| ASR-464 | Coding | vcs only for session actions and recorded pull request links | fixture |
| ASR-465 | Coding | evidence states how the result is known, whoever parsed it | fixture |
| ASR-466 | Coding | workspace_state requires root or cwd; values from the source | schema |
| ASR-467 | Coding | checkpoint requires kind and ref; object file entries are PathRefs | schema |
| ASR-468 | Coding | PathRef roots are declared earlier | semantic |
| ASR-469 | Coding | Root-relative path rules | schema |
| ASR-470 | Coding | Absolute path forms when root is null | schema |
| ASR-471 | Coding | nativePath for differing spellings; no path normalization | fixture |
| ASR-472 | Coding | No path rewriting inside text; redacted roots do not imply no paths | fixture |
| ASR-473 | Coding | Non-UTF-8 paths: U+FFFD and path.encoding loss | fixture |
| ASR-474 | Coding | Net changes are not added to the operations they span | fixture |
| ASR-475 | Coding | moreFiles and modifiedByUser from the source; listed changes may be incomplete | fixture |
| ASR-476 | Coding | pr_link has reported evidence and is not an action | semantic |
| ASR-477 | Coding | Decode file URIs using source semantics and preserve native spelling | fixture |
| ASR-500 | Missing data and revisions | Absent means unknown | fixture |
| ASR-501 | Missing data and revisions | Falsy literals preserved | fixture |
| ASR-502 | Missing data and revisions | No fabricated IDs, times, models, outcomes, durations, costs, tokens | fixture |
| ASR-503 | Missing data and revisions | Text kept exactly | fixture |
| ASR-504 | Missing data and revisions | capture keys valid for the type; values have state | schema |
| ASR-505 | Missing data and revisions | Bounded copies are never complete | fixture |
| ASR-506 | Missing data and revisions | Field presence consistent with its capture state | schema |
| ASR-507 | Missing data and revisions | Source truncation SHOULD be truncated / source_truncated | fixture |
| ASR-508 | Missing data and revisions | supersedes targets an earlier same-type record, at most once | semantic |
| ASR-509 | Missing data and revisions | Revisions are full replacements; latest revision used | fixture |
| ASR-510 | Missing data and revisions | assembly requires mode | schema |
| ASR-511 | Missing data and revisions | Streaming growth folded by concatenation | fixture |
| ASR-512 | Missing data and revisions | Final-fact revisions SHOULD be kept; folding declares revision_history | fixture |
| ASR-513 | Missing data and revisions | Snapshot-only sources never manufacture transitions | fixture |
| ASR-514 | Missing data and revisions | Loss identifiers from the table or _-prefixed | schema |
| ASR-515 | Missing data and revisions | gap requires reason | schema |
| ASR-516 | Missing data and revisions | Missing history is not evidence of absence | fixture |
| ASR-517 | Missing data and revisions | A discontinuity in IDs alone is not evidence of deletion | fixture |
| ASR-518 | Missing data and revisions | tombstone requires non-empty targets and reason | schema |
| ASR-519 | Missing data and revisions | Tombstones are never corrections | fixture |
| ASR-520 | Missing data and revisions | Tombstoned records remain; erasure needs a new stream | fixture |
| ASR-521 | Missing data and revisions | Self-declared trust labels are not evidence | fixture |
| ASR-522 | Missing data and revisions | rewrite assembly requires supersedes and a registry rule | semantic |
| ASR-523 | Missing data and revisions | Growing folded sourceIds identify producer enrichment | fixture |
| ASR-524 | Missing data and revisions | Scoped evidence of missing targets never excuses failures to resolve required references | semantic |
| ASR-550 | Privacy and security | Conformance is never presented as meaning the data is safe to share | fixture |
| ASR-551 | Privacy and security | Sharing exporters apply and record a redaction policy | fixture |
| ASR-552 | Privacy and security | metadata level carries no content, apart from keyed identity digests | semantic |
| ASR-553 | Privacy and security | Content levels do not indicate safety | fixture |
| ASR-554 | Privacy and security | Redaction entries require path, reason, policy | schema |
| ASR-555 | Privacy and security | Redacted values removed or replaced; capture redacted | fixture |
| ASR-556 | Privacy and security | Redactions only make records stricter | semantic |
| ASR-557 | Privacy and security | Digests of low-entropy values are treated as disclosing them | fixture |
| ASR-558 | Privacy and security | Redacted streams carry derivedFrom | schema |
| ASR-559 | Privacy and security | Redaction covers every place targets can appear | fixture |
| ASR-560 | Privacy and security | Redaction wins over preservation | fixture |
| ASR-561 | Privacy and security | Pseudonymization consistent across a bundle | fixture |
| ASR-562 | Privacy and security | No automatic URI fetching | fixture |
| ASR-563 | Privacy and security | Safe archive extraction | fixture |
| ASR-564 | Privacy and security | Bounded parsing | fixture |
| ASR-565 | Privacy and security | No automatic command execution | fixture |
| ASR-566 | Privacy and security | Inert rendering | fixture |
| ASR-567 | Privacy and security | Consent before publishing session references to Git | fixture |
| ASR-568 | Privacy and security | Identity values at metadata level only as keyed digests | semantic |
| ASR-600 | Extensibility | _meta shape and key grammar | schema |
| ASR-601 | Extensibility | Reserved trace context keys | schema |
| ASR-602 | Extensibility | agent-session prefixes reserved | schema |
| ASR-603 | Extensibility | Vendor enum values start with _ | schema |
| ASR-604 | Extensibility | No undefined non-_ enum values | schema |
| ASR-605 | Extensibility | Unknown enum values never rejected; preserved | fixture |
| ASR-606 | Extensibility | Extension entries require id, version, required | schema |
| ASR-607 | Extensibility | Extensions needed for correct reading declared required | fixture |
| ASR-608 | Extensibility | Unsupported required extensions reported | fixture |
| ASR-609 | Extensibility | Profile claims: emit the record or record the loss | fixture |
| ASR-610 | Extensibility | Vendor profile names start with _ | schema |
| ASR-611 | Extensibility | Readers declare supported major versions and fail explicitly on others | fixture |
| ASR-612 | Extensibility | Higher minor versions within supported major versions are accepted | fixture |
| ASR-614 | Extensibility | Deprecated and removed features | fixture |
| ASR-615 | Extensibility | Storage tools preserve unknown content | fixture |
| ASR-616 | Extensibility | Unsupported major versions kept as opaque bytes | fixture |
| ASR-617 | Extensibility | Lossy exporters never claim completeness | fixture |
| ASR-618 | Extensibility | Converters use the destinations the registry documents | fixture |
| ASR-619 | Extensibility | Open enums and native strings; preserve unmapped native values | fixture |
| ASR-620 | Agent registry | Generated registry destinations, alias uniqueness and native payload boundaries | semantic |
| ASR-650 | Conformance | Conformance claims state their scope | fixture |
| ASR-651 | Conformance | Claims cover every applicable requirement | fixture |
| ASR-652 | Conformance | Converter claims backed by real sanitized fixtures per version | fixture |
| ASR-653 | Conformance | Recorder and Observer claims name the actual protocol and version | fixture |
| ASR-654 | Conformance | Validators separate errors, incomplete validation, warnings and notices | fixture |
| ASR-655 | Conformance | Validators check every applicable schema and semantic requirement | fixture |
| ASR-656 | Conformance | Validator diagnostic format | fixture |
| ASR-657 | Conformance | Separate stream checks from tests of how producers preserve native source data | fixture |
| ASR-658 | Conformance | Evidence-based severity and complete grouped reporting | fixture |
| ASR-659 | Conformance | Validator stamp covers the bytes actually used; qualification names a release | fixture |
| ASR-660 | Conformance | Cross-batch inventory binds stream and capture digests | fixture |
| ASR-700 | ACP mapping | Pinned to ACP schema v2.0.0-alpha.9; recorder producer metadata | schema |
| ASR-701 | ACP mapping | One stream per observed ACP session | fixture |
| ASR-702 | ACP mapping | ACP identifiers kept verbatim | fixture |
| ASR-703 | ACP mapping | Agent name from registry, configuration, or org.agent-session.acp. fallback | fixture |
| ASR-704 | ACP mapping | ACP patch rule applied; assembly set | fixture |
| ASR-705 | ACP mapping | Records written when entities become final | fixture |
| ASR-706 | ACP mapping | Post-final changes recorded as revisions | fixture |
| ASR-707 | ACP mapping | Receipt times for live updates only; none for replayed history | fixture |
| ASR-708 | ACP mapping | _meta folded key by key | fixture |
| ASR-709 | ACP mapping | ACP enum values passed through | fixture |
| ASR-710 | ACP mapping | Unmapped updates kept as org.agent-session.acp/… records | fixture |
| ASR-711 | ACP mapping | Roots from cwd and additional directories; paths made root-relative | fixture |
| ASR-712 | ACP mapping | MCP server configuration values not recorded | fixture |
| ASR-713 | ACP mapping | Prompt mapping | fixture |
| ASR-714 | ACP mapping | Tool content becomes displayContent; content absent | fixture |
| ASR-715 | ACP mapping | Diff mapping to file_change | fixture |
| ASR-716 | ACP mapping | Permission request and response mapping | fixture |
| ASR-717 | ACP mapping | Replayed history not duplicated | fixture |
| ASR-718 | ACP mapping | Fork mapping | fixture |
| ASR-719 | ACP mapping | Compaction mapping and extent convention | fixture |
| ASR-720 | ACP mapping | usage_update mapping | fixture |
| ASR-721 | ACP mapping | Subagent association mapping | fixture |
| ASR-722 | ACP mapping | Recorder declared losses | semantic |
| ASR-723 | ACP mapping | Wire capture SHOULD be retained | fixture |
| ASR-724 | ACP mapping | Replay follows the primary head’s active path with IDs preserved | fixture |
| ASR-725 | ACP mapping | Replay sends whole-entity upserts | fixture |
| ASR-726 | ACP mapping | Replay never re-executes tools or re-requests permission | fixture |
| ASR-727 | ACP mapping | Embedded reasoning replayed as derived-ID thoughts | fixture |
| ASR-728 | ACP mapping | Tool status mapping for replay | fixture |
| ASR-729 | ACP mapping | Diff paths rebuilt from root paths; omitted when redacted | fixture |
| ASR-730 | ACP mapping | Notices not replayed | fixture |
| ASR-731 | ACP mapping | Replay losses reported; no completeness claim | fixture |
| ASR-732 | ACP mapping | Replay is semantically equivalent except for declared losses | fixture |
| ASR-733 | ACP mapping | Byte-level equivalence only from wire capture | fixture |
| ASR-734 | ACP mapping | Elicitation mapping to input_request | fixture |
| ASR-735 | ACP mapping | Inter-session message mapping | fixture |