The contribution link record and the live-recording clip record both began WCL1. The clip record had it first (live-recording §5.1, the registry's only WCL1 row); the link record took the same four bytes when it was added, so a reader that tells records apart by their magic could not tell one from the other. The link record is now WLK1, a magic nothing else in the registry, the code or an open branch uses. live-contribution §6.2 and SPEC name it, §6.5 step 2 says the clip record's WCL1 is refused as malformed, and codecs/registry.rs registers it (REGISTRY.md and registry/ exported from it). joule-moq-ingest writes and reads it. The corpus live-conformance/links/ is regenerated with it, its files now .wlk1, plus clip_record_magic, a part with the clip record's magic, refused. live_contribution_verify.py reads WLK1 and also refuses each accepted part mutated to WCL1. A wire change: a link record written before this one is malformed to a reader of this revision. The CHANGELOG says so and acknowledges every corpus file that changed. Co-Authored-By: Claude Opus 5.5 <[email protected]>
1114 lines
27 KiB
JSON
1114 lines
27 KiB
JSON
{
|
|
"format": "wai-live-contribution-links/1",
|
|
"hop": "ed6a47a39da869b5446155e40b2d93f1e3f0167be26732bae7a3ef9d8e3a3fd3",
|
|
"hop_seed": "5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c",
|
|
"reasons": [
|
|
"record_too_large",
|
|
"truncated",
|
|
"malformed",
|
|
"unknown_version",
|
|
"bad_key",
|
|
"bad_signature",
|
|
"link_invalid",
|
|
"account_invalid",
|
|
"runs_invalid",
|
|
"chain_broken",
|
|
"sequence_gap"
|
|
],
|
|
"vectors": [
|
|
{
|
|
"digest": "a5d6c2b598610a96191a37dd049fa1f1b774142a4f57b86d5b787f4fd135d465",
|
|
"files": [
|
|
"srt_listener_clean.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "srt_listener_clean",
|
|
"note": "SRT, the gateway listening, AES-128: every packet at the first try",
|
|
"outcome": "accept",
|
|
"summary": {
|
|
"bytes": 52640,
|
|
"cipher": 128,
|
|
"delivered": 40,
|
|
"dropped": 0,
|
|
"ended": 0,
|
|
"first_try": 40,
|
|
"last": false,
|
|
"mode": 1,
|
|
"outstanding": 0,
|
|
"part": 0,
|
|
"protocol": 1,
|
|
"recovered": 0,
|
|
"runs": 0,
|
|
"seq_count": 40,
|
|
"seq_first": 42,
|
|
"size": 575
|
|
}
|
|
},
|
|
{
|
|
"digest": "a8f1966aed84ab2153c5d0a7dd3f1fdfbabe08847d7c30674b39473c1282f7df",
|
|
"files": [
|
|
"srt_recovered.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "srt_recovered",
|
|
"note": "SRT: losses found and recovered within the window, one dropped",
|
|
"outcome": "accept",
|
|
"summary": {
|
|
"bytes": 40796,
|
|
"cipher": 128,
|
|
"delivered": 31,
|
|
"dropped": 1,
|
|
"ended": 0,
|
|
"first_try": 25,
|
|
"last": false,
|
|
"mode": 1,
|
|
"outstanding": 0,
|
|
"part": 0,
|
|
"protocol": 1,
|
|
"recovered": 6,
|
|
"runs": 4,
|
|
"seq_count": 32,
|
|
"seq_first": 1000000,
|
|
"size": 655
|
|
}
|
|
},
|
|
{
|
|
"digest": "0a8cfad3a410a2071d36ada160872eb18ca648d05e5cf2cafdb0d7a613c91ca9",
|
|
"files": [
|
|
"srt_last_outstanding.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "srt_last_outstanding",
|
|
"note": "a session of one part, its last: three sequence numbers outstanding when the caller shut down",
|
|
"outcome": "accept",
|
|
"summary": {
|
|
"bytes": 9212,
|
|
"cipher": 0,
|
|
"delivered": 7,
|
|
"dropped": 0,
|
|
"ended": 1,
|
|
"first_try": 6,
|
|
"last": true,
|
|
"mode": 1,
|
|
"outstanding": 3,
|
|
"part": 0,
|
|
"protocol": 1,
|
|
"recovered": 1,
|
|
"runs": 3,
|
|
"seq_count": 10,
|
|
"seq_first": 7,
|
|
"size": 635
|
|
}
|
|
},
|
|
{
|
|
"digest": "08781b0991e605e199019c84ea0f0b5c54c7b4dc38e47a20c0246b43f561d1c1",
|
|
"files": [
|
|
"rist_simple.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "rist_simple",
|
|
"note": "RIST Simple Profile, in the clear (the profile has no encryption)",
|
|
"outcome": "accept",
|
|
"summary": {
|
|
"bytes": 19740,
|
|
"cipher": 0,
|
|
"delivered": 15,
|
|
"dropped": 1,
|
|
"ended": 0,
|
|
"first_try": 11,
|
|
"last": false,
|
|
"mode": 1,
|
|
"outstanding": 0,
|
|
"part": 0,
|
|
"protocol": 2,
|
|
"recovered": 4,
|
|
"runs": 2,
|
|
"seq_count": 16,
|
|
"seq_first": 65536,
|
|
"size": 615
|
|
}
|
|
},
|
|
{
|
|
"digest": "39d08881c7b2eda1a17023a713bb83a78b65a183172386098ce5dd4301da3d68",
|
|
"files": [
|
|
"rist_main_psk256.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "rist_main_psk256",
|
|
"note": "RIST Main Profile under PSK with a 256-bit key",
|
|
"outcome": "accept",
|
|
"summary": {
|
|
"bytes": 13160,
|
|
"cipher": 256,
|
|
"delivered": 10,
|
|
"dropped": 0,
|
|
"ended": 0,
|
|
"first_try": 8,
|
|
"last": false,
|
|
"mode": 1,
|
|
"outstanding": 0,
|
|
"part": 0,
|
|
"protocol": 3,
|
|
"recovered": 2,
|
|
"runs": 2,
|
|
"seq_count": 10,
|
|
"seq_first": 70000,
|
|
"size": 615
|
|
}
|
|
},
|
|
{
|
|
"digest": "21e4a0b1ef6f31e4f2be3472370a3314e15741271eb85d793de30696ed3efb42",
|
|
"files": [
|
|
"srt_caller_aes192.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "srt_caller_aes192",
|
|
"note": "SRT, the gateway calling the publisher's listener, AES-192",
|
|
"outcome": "accept",
|
|
"summary": {
|
|
"bytes": 13160,
|
|
"cipher": 192,
|
|
"delivered": 10,
|
|
"dropped": 0,
|
|
"ended": 0,
|
|
"first_try": 9,
|
|
"last": false,
|
|
"mode": 2,
|
|
"outstanding": 0,
|
|
"part": 0,
|
|
"protocol": 1,
|
|
"recovered": 1,
|
|
"runs": 1,
|
|
"seq_count": 10,
|
|
"seq_first": 9,
|
|
"size": 595
|
|
}
|
|
},
|
|
{
|
|
"digest": "ecdceee1052cba16c818a9d6bafc02cd24dc3af8feda1d980bcea0394f115991",
|
|
"files": [
|
|
"tracks_not_begun.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "tracks_not_begun",
|
|
"note": "no group signed yet on either track: each head zero",
|
|
"outcome": "accept",
|
|
"summary": {
|
|
"bytes": 3948,
|
|
"cipher": 128,
|
|
"delivered": 3,
|
|
"dropped": 0,
|
|
"ended": 0,
|
|
"first_try": 3,
|
|
"last": false,
|
|
"mode": 1,
|
|
"outstanding": 0,
|
|
"part": 0,
|
|
"protocol": 1,
|
|
"recovered": 0,
|
|
"runs": 0,
|
|
"seq_count": 3,
|
|
"seq_first": 5,
|
|
"size": 575
|
|
}
|
|
},
|
|
{
|
|
"digest": "ab3c8f287643436d1aa81658b0570b4e11afdad85975e4e7a1465161a73d88de",
|
|
"files": [
|
|
"runs_truncated.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "runs_truncated",
|
|
"note": "more loss runs than a part lists: the first 512, marked truncated, the sums at most the part's",
|
|
"outcome": "accept",
|
|
"summary": {
|
|
"bytes": 1452864,
|
|
"cipher": 128,
|
|
"delivered": 1104,
|
|
"dropped": 0,
|
|
"ended": 0,
|
|
"first_try": 552,
|
|
"last": false,
|
|
"mode": 1,
|
|
"outstanding": 0,
|
|
"part": 0,
|
|
"protocol": 1,
|
|
"recovered": 552,
|
|
"runs": 512,
|
|
"seq_count": 1104,
|
|
"seq_first": 100,
|
|
"size": 10815
|
|
}
|
|
},
|
|
{
|
|
"files": [
|
|
"too_large.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "too_large",
|
|
"note": "one byte past the largest record",
|
|
"outcome": "refuse",
|
|
"reason": "record_too_large"
|
|
},
|
|
{
|
|
"files": [
|
|
"truncated.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "truncated",
|
|
"note": "the signature's last byte missing",
|
|
"outcome": "refuse",
|
|
"reason": "truncated"
|
|
},
|
|
{
|
|
"files": [
|
|
"bad_magic.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "bad_magic",
|
|
"note": "not WLK1",
|
|
"outcome": "refuse",
|
|
"reason": "malformed"
|
|
},
|
|
{
|
|
"files": [
|
|
"clip_record_magic.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "clip_record_magic",
|
|
"note": "the clip record's magic, WCL1 (live-recording §5.1)",
|
|
"outcome": "refuse",
|
|
"reason": "malformed"
|
|
},
|
|
{
|
|
"files": [
|
|
"trailing_byte.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "trailing_byte",
|
|
"note": "a byte after the signature",
|
|
"outcome": "refuse",
|
|
"reason": "malformed"
|
|
},
|
|
{
|
|
"files": [
|
|
"unknown_version.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "unknown_version",
|
|
"note": "version 2",
|
|
"outcome": "refuse",
|
|
"reason": "unknown_version"
|
|
},
|
|
{
|
|
"files": [
|
|
"bad_key.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "bad_key",
|
|
"note": "the hop's key is the identity point, of small order",
|
|
"outcome": "refuse",
|
|
"reason": "bad_key"
|
|
},
|
|
{
|
|
"files": [
|
|
"bad_signature.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "bad_signature",
|
|
"note": "a bit of the signature flipped",
|
|
"outcome": "refuse",
|
|
"reason": "bad_signature"
|
|
},
|
|
{
|
|
"files": [
|
|
"altered_count.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "altered_count",
|
|
"note": "a count changed after signing",
|
|
"outcome": "refuse",
|
|
"reason": "bad_signature"
|
|
},
|
|
{
|
|
"files": [
|
|
"protocol_unknown.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "protocol_unknown",
|
|
"note": "protocol 4",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"mode_unknown.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "mode_unknown",
|
|
"note": "mode 3",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"rist_simple_encrypted.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "rist_simple_encrypted",
|
|
"note": "the Simple Profile has no encryption, yet the cipher is 128",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"rist_main_aes192.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "rist_main_aes192",
|
|
"note": "PSK keys are 128 or 256 bits",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"srt_cipher_100.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "srt_cipher_100",
|
|
"note": "no such key length",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"last_without_reason.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "last_without_reason",
|
|
"note": "the last part names no reason the session ended",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"reason_without_last.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "reason_without_last",
|
|
"note": "a reason on a part that is not the last",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"reason_unknown.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "reason_unknown",
|
|
"note": "reason 9",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"empty_span.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "empty_span",
|
|
"note": "start equals end",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"no_window.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "no_window",
|
|
"note": "a window of 0 µs",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"first_part_with_parent.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "first_part_with_parent",
|
|
"note": "part 0 names a parent",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"later_part_without_parent.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "later_part_without_parent",
|
|
"note": "part 3 names none",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"tracks_unsorted.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "tracks_unsorted",
|
|
"note": "the tracks out of order",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"track_head_without_groups.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "track_head_without_groups",
|
|
"note": "a head with no group signed",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"track_zero_digest.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "track_zero_digest",
|
|
"note": "a track digest of zero",
|
|
"outcome": "refuse",
|
|
"reason": "link_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"count_mismatch.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "count_mismatch",
|
|
"note": "delivered + dropped + outstanding is one short of the count",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"first_try_over_delivered.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "first_try_over_delivered",
|
|
"note": "more at the first try than delivered",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"outstanding_not_last.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "outstanding_not_last",
|
|
"note": "outstanding in a part that is not the last",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"recovery_samples.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "recovery_samples",
|
|
"note": "one recovery sample more than recovered",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"rtt_disordered.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "rtt_disordered",
|
|
"note": "the RTT's minimum above its median",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"rtt_empty_with_figures.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "rtt_empty_with_figures",
|
|
"note": "no RTT sample, yet figures",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"margin_past_window.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "margin_past_window",
|
|
"note": "a recovered packet's margin larger than the window",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"requested_below_requests.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "requested_below_requests",
|
|
"note": "requests naming fewer sequence numbers than there are requests",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"runs_overlap.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "runs_overlap",
|
|
"note": "two runs with no first-try packet between",
|
|
"outcome": "refuse",
|
|
"reason": "runs_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"run_outside.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "run_outside",
|
|
"note": "a run past the part's sequence numbers",
|
|
"outcome": "refuse",
|
|
"reason": "runs_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"run_empty.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "run_empty",
|
|
"note": "a run of no sequence number",
|
|
"outcome": "refuse",
|
|
"reason": "runs_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"run_overfull.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "run_overfull",
|
|
"note": "recovered and dropped more than the run holds",
|
|
"outcome": "refuse",
|
|
"reason": "runs_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"runs_short.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "runs_short",
|
|
"note": "the runs do not sum to the part's losses",
|
|
"outcome": "refuse",
|
|
"reason": "runs_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"truncated_not_full.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "truncated_not_full",
|
|
"note": "marked truncated with fewer runs than a part lists",
|
|
"outcome": "refuse",
|
|
"reason": "runs_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"run_overfull_alone.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "run_overfull_alone",
|
|
"note": "a run's recovered and dropped past its count, every sum still right",
|
|
"outcome": "refuse",
|
|
"reason": "runs_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"recovery_disordered.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "recovery_disordered",
|
|
"note": "the recoveries' minimum above their median",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"recovery_empty_with_figures.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "recovery_empty_with_figures",
|
|
"note": "no recovery sample, yet a maximum",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"files": [
|
|
"tracks_past_bound.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "tracks_past_bound",
|
|
"note": "more track heads than a record holds",
|
|
"outcome": "refuse",
|
|
"reason": "malformed"
|
|
},
|
|
{
|
|
"files": [
|
|
"runs_past_bound.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "runs_past_bound",
|
|
"note": "513 runs listed",
|
|
"outcome": "refuse",
|
|
"reason": "malformed"
|
|
},
|
|
{
|
|
"files": [
|
|
"last_byte_two.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "last_byte_two",
|
|
"note": "a last flag of 2",
|
|
"outcome": "refuse",
|
|
"reason": "malformed"
|
|
},
|
|
{
|
|
"files": [
|
|
"truncated_byte_two.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "truncated_byte_two",
|
|
"note": "a truncated flag of 2",
|
|
"outcome": "refuse",
|
|
"reason": "malformed"
|
|
},
|
|
{
|
|
"files": [
|
|
"small_order_r.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "small_order_r",
|
|
"note": "the signature's R is the identity point, of small order",
|
|
"outcome": "refuse",
|
|
"reason": "bad_signature"
|
|
},
|
|
{
|
|
"files": [
|
|
"margin_without_recovery.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "margin_without_recovery",
|
|
"note": "a recovery margin with nothing recovered",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"digest": "950215c0432843c0acf4c1ba3616a430773a59e73158ae8bf1b59f83dcbb05de",
|
|
"files": [
|
|
"two_dropped.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "two_dropped",
|
|
"note": "two of four dropped, none recovered",
|
|
"outcome": "accept",
|
|
"summary": {
|
|
"bytes": 2632,
|
|
"cipher": 128,
|
|
"delivered": 2,
|
|
"dropped": 2,
|
|
"ended": 0,
|
|
"first_try": 2,
|
|
"last": false,
|
|
"mode": 1,
|
|
"outstanding": 0,
|
|
"part": 0,
|
|
"protocol": 1,
|
|
"recovered": 0,
|
|
"runs": 1,
|
|
"seq_count": 4,
|
|
"seq_first": 42,
|
|
"size": 595
|
|
}
|
|
},
|
|
{
|
|
"files": [
|
|
"bytes_without_delivery.wlk1"
|
|
],
|
|
"kind": "part",
|
|
"name": "bytes_without_delivery",
|
|
"note": "bytes delivered with nothing delivered",
|
|
"outcome": "refuse",
|
|
"reason": "account_invalid"
|
|
},
|
|
{
|
|
"digests": [
|
|
"a8f1966aed84ab2153c5d0a7dd3f1fdfbabe08847d7c30674b39473c1282f7df",
|
|
"0645d19776ea12ed4b540904c6c969c441fe9aeb90c7cbdd4e92ff2b143749a2",
|
|
"a51671b15792e2c2f57dee35f2fc08f086113d7f1f9dd25e8816035494d6bb1a"
|
|
],
|
|
"files": [
|
|
"series_three_parts.0.wlk1",
|
|
"series_three_parts.1.wlk1",
|
|
"series_three_parts.2.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_three_parts",
|
|
"note": "a session of three parts, each chained to the one before, the last ended by DELETE",
|
|
"outcome": "accept",
|
|
"summaries": [
|
|
{
|
|
"bytes": 40796,
|
|
"cipher": 128,
|
|
"delivered": 31,
|
|
"dropped": 1,
|
|
"ended": 0,
|
|
"first_try": 25,
|
|
"last": false,
|
|
"mode": 1,
|
|
"outstanding": 0,
|
|
"part": 0,
|
|
"protocol": 1,
|
|
"recovered": 6,
|
|
"runs": 4,
|
|
"seq_count": 32,
|
|
"seq_first": 1000000,
|
|
"size": 655
|
|
},
|
|
{
|
|
"bytes": 21056,
|
|
"cipher": 128,
|
|
"delivered": 16,
|
|
"dropped": 0,
|
|
"ended": 0,
|
|
"first_try": 15,
|
|
"last": false,
|
|
"mode": 1,
|
|
"outstanding": 0,
|
|
"part": 1,
|
|
"protocol": 1,
|
|
"recovered": 1,
|
|
"runs": 1,
|
|
"seq_count": 16,
|
|
"seq_first": 1000032,
|
|
"size": 595
|
|
},
|
|
{
|
|
"bytes": 11844,
|
|
"cipher": 128,
|
|
"delivered": 9,
|
|
"dropped": 0,
|
|
"ended": 3,
|
|
"first_try": 9,
|
|
"last": true,
|
|
"mode": 1,
|
|
"outstanding": 1,
|
|
"part": 2,
|
|
"protocol": 1,
|
|
"recovered": 0,
|
|
"runs": 1,
|
|
"seq_count": 10,
|
|
"seq_first": 1000048,
|
|
"size": 595
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"at": 0,
|
|
"files": [
|
|
"series_starts_late.0.wlk1",
|
|
"series_starts_late.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_starts_late",
|
|
"note": "a series whose first part is not part 0",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_wrong_parent.0.wlk1",
|
|
"series_wrong_parent.1.wlk1",
|
|
"series_wrong_parent.2.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_wrong_parent",
|
|
"note": "part 1 names another parent",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 2,
|
|
"files": [
|
|
"series_skips_a_part.0.wlk1",
|
|
"series_skips_a_part.1.wlk1",
|
|
"series_skips_a_part.2.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_skips_a_part",
|
|
"note": "part 1 then part 3",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_other_session.0.wlk1",
|
|
"series_other_session.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_other_session",
|
|
"note": "part 1 of another session",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_head_moved_without_groups.0.wlk1",
|
|
"series_head_moved_without_groups.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_head_moved_without_groups",
|
|
"note": "a track's head changed with no group signed since",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_track_dropped.0.wlk1",
|
|
"series_track_dropped.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_track_dropped",
|
|
"note": "a track of part 0 missing from part 1",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_part_after_last.0.wlk1",
|
|
"series_part_after_last.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_part_after_last",
|
|
"note": "a part after the session's last",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_sequence_gap.0.wlk1",
|
|
"series_sequence_gap.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_sequence_gap",
|
|
"note": "a sequence number between part 0 and part 1 accounted for by neither",
|
|
"outcome": "refuse",
|
|
"reason": "sequence_gap"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_time_gap.0.wlk1",
|
|
"series_time_gap.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_time_gap",
|
|
"note": "part 1 begins a microsecond after part 0 ended",
|
|
"outcome": "refuse",
|
|
"reason": "sequence_gap"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_other_hop.0.wlk1",
|
|
"series_other_hop.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_other_hop",
|
|
"note": "part 1 signed by another gateway",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_other_room.0.wlk1",
|
|
"series_other_room.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_other_room",
|
|
"note": "part 1 of another room",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_other_principal.0.wlk1",
|
|
"series_other_principal.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_other_principal",
|
|
"note": "part 1 of another owner",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_other_grant.0.wlk1",
|
|
"series_other_grant.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_other_grant",
|
|
"note": "part 1 under another grant",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_other_protocol.0.wlk1",
|
|
"series_other_protocol.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_other_protocol",
|
|
"note": "part 1 of another protocol",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_other_mode.0.wlk1",
|
|
"series_other_mode.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_other_mode",
|
|
"note": "part 1 says the gateway called",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_other_cipher.0.wlk1",
|
|
"series_other_cipher.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_other_cipher",
|
|
"note": "part 1 under another key length",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_other_window.0.wlk1",
|
|
"series_other_window.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_other_window",
|
|
"note": "part 1 with another window",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"at": 1,
|
|
"files": [
|
|
"series_track_alias_changed.0.wlk1",
|
|
"series_track_alias_changed.1.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_track_alias_changed",
|
|
"note": "a track's receipt chain changed",
|
|
"outcome": "refuse",
|
|
"reason": "chain_broken"
|
|
},
|
|
{
|
|
"digests": [
|
|
"a8f1966aed84ab2153c5d0a7dd3f1fdfbabe08847d7c30674b39473c1282f7df",
|
|
"36d657afd9b50a0d97286fbf2dbaee13232d481a12b0cba5ae3612a66540e22e",
|
|
"04835ff14f0279fc3cd2340119151438a5864f9d80df6088788530625b8b0ed6"
|
|
],
|
|
"files": [
|
|
"series_track_added.0.wlk1",
|
|
"series_track_added.1.wlk1",
|
|
"series_track_added.2.wlk1"
|
|
],
|
|
"kind": "series",
|
|
"name": "series_track_added",
|
|
"note": "a track that begins in part 1, named again in part 2",
|
|
"outcome": "accept",
|
|
"summaries": [
|
|
{
|
|
"bytes": 40796,
|
|
"cipher": 128,
|
|
"delivered": 31,
|
|
"dropped": 1,
|
|
"ended": 0,
|
|
"first_try": 25,
|
|
"last": false,
|
|
"mode": 1,
|
|
"outstanding": 0,
|
|
"part": 0,
|
|
"protocol": 1,
|
|
"recovered": 6,
|
|
"runs": 4,
|
|
"seq_count": 32,
|
|
"seq_first": 1000000,
|
|
"size": 655
|
|
},
|
|
{
|
|
"bytes": 21056,
|
|
"cipher": 128,
|
|
"delivered": 16,
|
|
"dropped": 0,
|
|
"ended": 0,
|
|
"first_try": 15,
|
|
"last": false,
|
|
"mode": 1,
|
|
"outstanding": 0,
|
|
"part": 1,
|
|
"protocol": 1,
|
|
"recovered": 1,
|
|
"runs": 1,
|
|
"seq_count": 16,
|
|
"seq_first": 1000032,
|
|
"size": 675
|
|
},
|
|
{
|
|
"bytes": 11844,
|
|
"cipher": 128,
|
|
"delivered": 9,
|
|
"dropped": 0,
|
|
"ended": 3,
|
|
"first_try": 9,
|
|
"last": true,
|
|
"mode": 1,
|
|
"outstanding": 1,
|
|
"part": 2,
|
|
"protocol": 1,
|
|
"recovered": 0,
|
|
"runs": 1,
|
|
"seq_count": 10,
|
|
"seq_first": 1000048,
|
|
"size": 675
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|