{"action":"created","comment":{"url":"https://api.github.com/repos/quicwg/base-drafts/pulls/comments/196958757","pull_request_review_id":130607758,"id":196958757,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5Njk1ODc1Nw==","diff_hunk":"@@ -2613,6 +2627,14 @@ The NEW_CONNECTION_ID is as follows:\n \n The fields are:\n \n+Sequence:\n+\n+: A variable-length integer.  This value starts at 0 and increases by 1 for each\n+  connection ID that is provided by the server.  The connection ID that is\n+  assigned during the handshake is assumed to have a sequence of -1.  That is,","path":"draft-ietf-quic-transport.md","position":75,"original_position":75,"commit_id":"0d675544aaa5263bbfa2c0a3e1879e18dc71200e","original_commit_id":"eda401101ae367fc840dc5f38c33aef616f6a99d","user":{"login":"MikeBishop","id":4273797,"node_id":"MDQ6VXNlcjQyNzM3OTc=","avatar_url":"https://avatars0.githubusercontent.com/u/4273797?v=4","gravatar_id":"","url":"https://api.github.com/users/MikeBishop","html_url":"https://github.com/MikeBishop","followers_url":"https://api.github.com/users/MikeBishop/followers","following_url":"https://api.github.com/users/MikeBishop/following{/other_user}","gists_url":"https://api.github.com/users/MikeBishop/gists{/gist_id}","starred_url":"https://api.github.com/users/MikeBishop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MikeBishop/subscriptions","organizations_url":"https://api.github.com/users/MikeBishop/orgs","repos_url":"https://api.github.com/users/MikeBishop/repos","events_url":"https://api.github.com/users/MikeBishop/events{/privacy}","received_events_url":"https://api.github.com/users/MikeBishop/received_events","type":"User","site_admin":false},"body":"The alternative being -2, -1, and starting from 0.  I think the logic there is the principle that we should try to avoid there being invalid values, and 0/1 would be invalid values still present in the frame.  If the frame can carry a 0, then 0 should be the first value value.","created_at":"2018-06-20T22:12:17Z","updated_at":"2018-06-20T22:12:17Z","html_url":"https://github.com/quicwg/base-drafts/pull/1465#discussion_r196958757","pull_request_url":"https://api.github.com/repos/quicwg/base-drafts/pulls/1465","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/comments/196958757"},"html":{"href":"https://github.com/quicwg/base-drafts/pull/1465#discussion_r196958757"},"pull_request":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/1465"}},"in_reply_to_id":196954200},"pull_request":{"url":"https://api.github.com/repos/quicwg/base-drafts/pulls/1465","id":196279225,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk2Mjc5MjI1","html_url":"https://github.com/quicwg/base-drafts/pull/1465","diff_url":"https://github.com/quicwg/base-drafts/pull/1465.diff","patch_url":"https://github.com/quicwg/base-drafts/pull/1465.patch","issue_url":"https://api.github.com/repos/quicwg/base-drafts/issues/1465","number":1465,"state":"open","locked":false,"title":"Restore CID sequence numbers","user":{"login":"MikeBishop","id":4273797,"node_id":"MDQ6VXNlcjQyNzM3OTc=","avatar_url":"https://avatars0.githubusercontent.com/u/4273797?v=4","gravatar_id":"","url":"https://api.github.com/users/MikeBishop","html_url":"https://github.com/MikeBishop","followers_url":"https://api.github.com/users/MikeBishop/followers","following_url":"https://api.github.com/users/MikeBishop/following{/other_user}","gists_url":"https://api.github.com/users/MikeBishop/gists{/gist_id}","starred_url":"https://api.github.com/users/MikeBishop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MikeBishop/subscriptions","organizations_url":"https://api.github.com/users/MikeBishop/orgs","repos_url":"https://api.github.com/users/MikeBishop/repos","events_url":"https://api.github.com/users/MikeBishop/events{/privacy}","received_events_url":"https://api.github.com/users/MikeBishop/received_events","type":"User","site_admin":false},"body":"After trying to find a better way to manage CID changes, probing, etc. I concluded that what we had before and removed is a superior place to start than anything else I'm coming up with.\r\n\r\nThe result of this PR is that, while we no longer have packet number gaps (so #1280 is no longer an issue), the sequence of CIDs issued by each endpoint is once again ordered.  On each path (local address), you know the sequence number of the CID you're currently using, and you can recognize the sequence number of the CID you're currently receiving (because you assigned it).\r\n\r\nFixes #1452 by requiring that each CID change on a path move to a CID with a greater sequence number; you move to the CID with the matching sequence number if it's usable, but if it's not, you move to something with a higher sequence number.  That will force your peer to meet you on that sequence number instead, and either way you land in equilibrium on each path.\r\n\r\nThis improves, but doesn't totally fix, the two problems discussed on #1464:\r\n- You can forget the old CIDs you're allowed to use at any time that's convenient to you -- you just won't use them.  Because the CID sequence must advance per path, you can forget old CIDs you've issued once every path has either moved past that sequence number or been abandoned.  However, there's a slight possibility that peers will have different concepts of abandoned (particularly for probing on backup paths that are never migrated to), so we might need to mint a `RETIRE_CONNECTION_IDS` frame to tell the receiver that connection IDs with a sequence before X are no longer recognized by the sender.\r\n- Once you've moved to the CID with sequence number X, the peer knows you can't use CID X-1 on this path even if you've never used it; if you're on the last / next-to-last CID the peer issued, you need more, even if you have some old ones you could still use on a different path.  However, if you have the bad luck to use your last CID for a probe which gets dropped and you're no longer able to send on that path, you can still get stuck if your peer is only giving you one CID at a time.  This probably still requires a `REQUEST_CONNECTION_ID` frame.\r\n\r\nWhile I think the design is mostly sound, this is too wordy.  I'd appreciate help making this more readable.","created_at":"2018-06-20T21:35:31Z","updated_at":"2018-06-20T22:12:17Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fb1aba087dbb86140c6a3fea7b99cefd4300e986","assignee":null,"assignees":[],"requested_reviewers":[{"login":"martinthomson","id":67641,"node_id":"MDQ6VXNlcjY3NjQx","avatar_url":"https://avatars1.githubusercontent.com/u/67641?v=4","gravatar_id":"","url":"https://api.github.com/users/martinthomson","html_url":"https://github.com/martinthomson","followers_url":"https://api.github.com/users/martinthomson/followers","following_url":"https://api.github.com/users/martinthomson/following{/other_user}","gists_url":"https://api.github.com/users/martinthomson/gists{/gist_id}","starred_url":"https://api.github.com/users/martinthomson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martinthomson/subscriptions","organizations_url":"https://api.github.com/users/martinthomson/orgs","repos_url":"https://api.github.com/users/martinthomson/repos","events_url":"https://api.github.com/users/martinthomson/events{/privacy}","received_events_url":"https://api.github.com/users/martinthomson/received_events","type":"User","site_admin":false},{"login":"janaiyengar","id":11067604,"node_id":"MDQ6VXNlcjExMDY3NjA0","avatar_url":"https://avatars2.githubusercontent.com/u/11067604?v=4","gravatar_id":"","url":"https://api.github.com/users/janaiyengar","html_url":"https://github.com/janaiyengar","followers_url":"https://api.github.com/users/janaiyengar/followers","following_url":"https://api.github.com/users/janaiyengar/following{/other_user}","gists_url":"https://api.github.com/users/janaiyengar/gists{/gist_id}","starred_url":"https://api.github.com/users/janaiyengar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/janaiyengar/subscriptions","organizations_url":"https://api.github.com/users/janaiyengar/orgs","repos_url":"https://api.github.com/users/janaiyengar/repos","events_url":"https://api.github.com/users/janaiyengar/events{/privacy}","received_events_url":"https://api.github.com/users/janaiyengar/received_events","type":"User","site_admin":false},{"login":"ianswett","id":20072817,"node_id":"MDQ6VXNlcjIwMDcyODE3","avatar_url":"https://avatars1.githubusercontent.com/u/20072817?v=4","gravatar_id":"","url":"https://api.github.com/users/ianswett","html_url":"https://github.com/ianswett","followers_url":"https://api.github.com/users/ianswett/followers","following_url":"https://api.github.com/users/ianswett/following{/other_user}","gists_url":"https://api.github.com/users/ianswett/gists{/gist_id}","starred_url":"https://api.github.com/users/ianswett/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ianswett/subscriptions","organizations_url":"https://api.github.com/users/ianswett/orgs","repos_url":"https://api.github.com/users/ianswett/repos","events_url":"https://api.github.com/users/ianswett/events{/privacy}","received_events_url":"https://api.github.com/users/ianswett/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":481871399,"node_id":"MDU6TGFiZWw0ODE4NzEzOTk=","url":"https://api.github.com/repos/quicwg/base-drafts/labels/-transport","name":"-transport","color":"fbca04","default":false},{"id":481871361,"node_id":"MDU6TGFiZWw0ODE4NzEzNjE=","url":"https://api.github.com/repos/quicwg/base-drafts/labels/design","name":"design","color":"1d76db","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/quicwg/base-drafts/pulls/1465/commits","review_comments_url":"https://api.github.com/repos/quicwg/base-drafts/pulls/1465/comments","review_comment_url":"https://api.github.com/repos/quicwg/base-drafts/pulls/comments{/number}","comments_url":"https://api.github.com/repos/quicwg/base-drafts/issues/1465/comments","statuses_url":"https://api.github.com/repos/quicwg/base-drafts/statuses/0d675544aaa5263bbfa2c0a3e1879e18dc71200e","head":{"label":"quicwg:transport/ratchet_precision","ref":"transport/ratchet_precision","sha":"0d675544aaa5263bbfa2c0a3e1879e18dc71200e","user":{"login":"quicwg","id":22631371,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjMxMzcx","avatar_url":"https://avatars3.githubusercontent.com/u/22631371?v=4","gravatar_id":"","url":"https://api.github.com/users/quicwg","html_url":"https://github.com/quicwg","followers_url":"https://api.github.com/users/quicwg/followers","following_url":"https://api.github.com/users/quicwg/following{/other_user}","gists_url":"https://api.github.com/users/quicwg/gists{/gist_id}","starred_url":"https://api.github.com/users/quicwg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quicwg/subscriptions","organizations_url":"https://api.github.com/users/quicwg/orgs","repos_url":"https://api.github.com/users/quicwg/repos","events_url":"https://api.github.com/users/quicwg/events{/privacy}","received_events_url":"https://api.github.com/users/quicwg/received_events","type":"Organization","site_admin":false},"repo":{"id":73779599,"node_id":"MDEwOlJlcG9zaXRvcnk3Mzc3OTU5OQ==","name":"base-drafts","full_name":"quicwg/base-drafts","owner":{"login":"quicwg","id":22631371,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjMxMzcx","avatar_url":"https://avatars3.githubusercontent.com/u/22631371?v=4","gravatar_id":"","url":"https://api.github.com/users/quicwg","html_url":"https://github.com/quicwg","followers_url":"https://api.github.com/users/quicwg/followers","following_url":"https://api.github.com/users/quicwg/following{/other_user}","gists_url":"https://api.github.com/users/quicwg/gists{/gist_id}","starred_url":"https://api.github.com/users/quicwg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quicwg/subscriptions","organizations_url":"https://api.github.com/users/quicwg/orgs","repos_url":"https://api.github.com/users/quicwg/repos","events_url":"https://api.github.com/users/quicwg/events{/privacy}","received_events_url":"https://api.github.com/users/quicwg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/quicwg/base-drafts","description":" Internet-Drafts that make up the base QUIC specification","fork":false,"url":"https://api.github.com/repos/quicwg/base-drafts","forks_url":"https://api.github.com/repos/quicwg/base-drafts/forks","keys_url":"https://api.github.com/repos/quicwg/base-drafts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/quicwg/base-drafts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/quicwg/base-drafts/teams","hooks_url":"https://api.github.com/repos/quicwg/base-drafts/hooks","issue_events_url":"https://api.github.com/repos/quicwg/base-drafts/issues/events{/number}","events_url":"https://api.github.com/repos/quicwg/base-drafts/events","assignees_url":"https://api.github.com/repos/quicwg/base-drafts/assignees{/user}","branches_url":"https://api.github.com/repos/quicwg/base-drafts/branches{/branch}","tags_url":"https://api.github.com/repos/quicwg/base-drafts/tags","blobs_url":"https://api.github.com/repos/quicwg/base-drafts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/quicwg/base-drafts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/quicwg/base-drafts/git/refs{/sha}","trees_url":"https://api.github.com/repos/quicwg/base-drafts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/quicwg/base-drafts/statuses/{sha}","languages_url":"https://api.github.com/repos/quicwg/base-drafts/languages","stargazers_url":"https://api.github.com/repos/quicwg/base-drafts/stargazers","contributors_url":"https://api.github.com/repos/quicwg/base-drafts/contributors","subscribers_url":"https://api.github.com/repos/quicwg/base-drafts/subscribers","subscription_url":"https://api.github.com/repos/quicwg/base-drafts/subscription","commits_url":"https://api.github.com/repos/quicwg/base-drafts/commits{/sha}","git_commits_url":"https://api.github.com/repos/quicwg/base-drafts/git/commits{/sha}","comments_url":"https://api.github.com/repos/quicwg/base-drafts/comments{/number}","issue_comment_url":"https://api.github.com/repos/quicwg/base-drafts/issues/comments{/number}","contents_url":"https://api.github.com/repos/quicwg/base-drafts/contents/{+path}","compare_url":"https://api.github.com/repos/quicwg/base-drafts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/quicwg/base-drafts/merges","archive_url":"https://api.github.com/repos/quicwg/base-drafts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/quicwg/base-drafts/downloads","issues_url":"https://api.github.com/repos/quicwg/base-drafts/issues{/number}","pulls_url":"https://api.github.com/repos/quicwg/base-drafts/pulls{/number}","milestones_url":"https://api.github.com/repos/quicwg/base-drafts/milestones{/number}","notifications_url":"https://api.github.com/repos/quicwg/base-drafts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/quicwg/base-drafts/labels{/name}","releases_url":"https://api.github.com/repos/quicwg/base-drafts/releases{/id}","deployments_url":"https://api.github.com/repos/quicwg/base-drafts/deployments","created_at":"2016-11-15T05:30:30Z","updated_at":"2018-06-20T11:32:11Z","pushed_at":"2018-06-20T22:08:19Z","git_url":"git://github.com/quicwg/base-drafts.git","ssh_url":"git@github.com:quicwg/base-drafts.git","clone_url":"https://github.com/quicwg/base-drafts.git","svn_url":"https://github.com/quicwg/base-drafts","homepage":"https://quicwg.github.io/","size":52028,"stargazers_count":258,"watchers_count":258,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":63,"mirror_url":null,"archived":false,"open_issues_count":132,"license":null,"forks":63,"open_issues":132,"watchers":258,"default_branch":"master"}},"base":{"label":"quicwg:master","ref":"master","sha":"3dd52db0ee472a7ee2085604688c05aaab17c702","user":{"login":"quicwg","id":22631371,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjMxMzcx","avatar_url":"https://avatars3.githubusercontent.com/u/22631371?v=4","gravatar_id":"","url":"https://api.github.com/users/quicwg","html_url":"https://github.com/quicwg","followers_url":"https://api.github.com/users/quicwg/followers","following_url":"https://api.github.com/users/quicwg/following{/other_user}","gists_url":"https://api.github.com/users/quicwg/gists{/gist_id}","starred_url":"https://api.github.com/users/quicwg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quicwg/subscriptions","organizations_url":"https://api.github.com/users/quicwg/orgs","repos_url":"https://api.github.com/users/quicwg/repos","events_url":"https://api.github.com/users/quicwg/events{/privacy}","received_events_url":"https://api.github.com/users/quicwg/received_events","type":"Organization","site_admin":false},"repo":{"id":73779599,"node_id":"MDEwOlJlcG9zaXRvcnk3Mzc3OTU5OQ==","name":"base-drafts","full_name":"quicwg/base-drafts","owner":{"login":"quicwg","id":22631371,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjMxMzcx","avatar_url":"https://avatars3.githubusercontent.com/u/22631371?v=4","gravatar_id":"","url":"https://api.github.com/users/quicwg","html_url":"https://github.com/quicwg","followers_url":"https://api.github.com/users/quicwg/followers","following_url":"https://api.github.com/users/quicwg/following{/other_user}","gists_url":"https://api.github.com/users/quicwg/gists{/gist_id}","starred_url":"https://api.github.com/users/quicwg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quicwg/subscriptions","organizations_url":"https://api.github.com/users/quicwg/orgs","repos_url":"https://api.github.com/users/quicwg/repos","events_url":"https://api.github.com/users/quicwg/events{/privacy}","received_events_url":"https://api.github.com/users/quicwg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/quicwg/base-drafts","description":" Internet-Drafts that make up the base QUIC specification","fork":false,"url":"https://api.github.com/repos/quicwg/base-drafts","forks_url":"https://api.github.com/repos/quicwg/base-drafts/forks","keys_url":"https://api.github.com/repos/quicwg/base-drafts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/quicwg/base-drafts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/quicwg/base-drafts/teams","hooks_url":"https://api.github.com/repos/quicwg/base-drafts/hooks","issue_events_url":"https://api.github.com/repos/quicwg/base-drafts/issues/events{/number}","events_url":"https://api.github.com/repos/quicwg/base-drafts/events","assignees_url":"https://api.github.com/repos/quicwg/base-drafts/assignees{/user}","branches_url":"https://api.github.com/repos/quicwg/base-drafts/branches{/branch}","tags_url":"https://api.github.com/repos/quicwg/base-drafts/tags","blobs_url":"https://api.github.com/repos/quicwg/base-drafts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/quicwg/base-drafts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/quicwg/base-drafts/git/refs{/sha}","trees_url":"https://api.github.com/repos/quicwg/base-drafts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/quicwg/base-drafts/statuses/{sha}","languages_url":"https://api.github.com/repos/quicwg/base-drafts/languages","stargazers_url":"https://api.github.com/repos/quicwg/base-drafts/stargazers","contributors_url":"https://api.github.com/repos/quicwg/base-drafts/contributors","subscribers_url":"https://api.github.com/repos/quicwg/base-drafts/subscribers","subscription_url":"https://api.github.com/repos/quicwg/base-drafts/subscription","commits_url":"https://api.github.com/repos/quicwg/base-drafts/commits{/sha}","git_commits_url":"https://api.github.com/repos/quicwg/base-drafts/git/commits{/sha}","comments_url":"https://api.github.com/repos/quicwg/base-drafts/comments{/number}","issue_comment_url":"https://api.github.com/repos/quicwg/base-drafts/issues/comments{/number}","contents_url":"https://api.github.com/repos/quicwg/base-drafts/contents/{+path}","compare_url":"https://api.github.com/repos/quicwg/base-drafts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/quicwg/base-drafts/merges","archive_url":"https://api.github.com/repos/quicwg/base-drafts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/quicwg/base-drafts/downloads","issues_url":"https://api.github.com/repos/quicwg/base-drafts/issues{/number}","pulls_url":"https://api.github.com/repos/quicwg/base-drafts/pulls{/number}","milestones_url":"https://api.github.com/repos/quicwg/base-drafts/milestones{/number}","notifications_url":"https://api.github.com/repos/quicwg/base-drafts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/quicwg/base-drafts/labels{/name}","releases_url":"https://api.github.com/repos/quicwg/base-drafts/releases{/id}","deployments_url":"https://api.github.com/repos/quicwg/base-drafts/deployments","created_at":"2016-11-15T05:30:30Z","updated_at":"2018-06-20T11:32:11Z","pushed_at":"2018-06-20T22:08:19Z","git_url":"git://github.com/quicwg/base-drafts.git","ssh_url":"git@github.com:quicwg/base-drafts.git","clone_url":"https://github.com/quicwg/base-drafts.git","svn_url":"https://github.com/quicwg/base-drafts","homepage":"https://quicwg.github.io/","size":52028,"stargazers_count":258,"watchers_count":258,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":63,"mirror_url":null,"archived":false,"open_issues_count":132,"license":null,"forks":63,"open_issues":132,"watchers":258,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/1465"},"html":{"href":"https://github.com/quicwg/base-drafts/pull/1465"},"issue":{"href":"https://api.github.com/repos/quicwg/base-drafts/issues/1465"},"comments":{"href":"https://api.github.com/repos/quicwg/base-drafts/issues/1465/comments"},"review_comments":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/1465/comments"},"review_comment":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/1465/commits"},"statuses":{"href":"https://api.github.com/repos/quicwg/base-drafts/statuses/0d675544aaa5263bbfa2c0a3e1879e18dc71200e"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"MikeBishop"}}