diff --git a/mobile/rpc-foundation/support-floor.json b/mobile/rpc-foundation/support-floor.json new file mode 100644 index 00000000000..975f46bb077 --- /dev/null +++ b/mobile/rpc-foundation/support-floor.json @@ -0,0 +1,2305 @@ +{ + "schemaVersion": 1, + "constants": [ + { + "file": "src/shared/protocol-version.ts", + "sourceSha": "5868fdc9e3ad9efd27a265b3af51f59b6815c6a8", + "sha256": "d7d734816f9981575697b9c18c6230fbdf7322e03a999be10412223681f57279", + "constants": { + "RUNTIME_PROTOCOL_VERSION": 3, + "MIN_COMPATIBLE_RUNTIME_CLIENT_VERSION": 2, + "MIN_COMPATIBLE_RUNTIME_SERVER_VERSION": 2, + "DESKTOP_PROTOCOL_VERSION": 3, + "MIN_COMPATIBLE_MOBILE_VERSION": 2 + } + }, + { + "file": "mobile/src/transport/protocol-version.ts", + "sourceSha": "4b7c9b7213f058c05cb46858fabfdf1b14caa62b", + "sha256": "4c1656b357225caddfb7151e9443b281801c818fdce9000efb181bb367b69986", + "constants": { + "MOBILE_PROTOCOL_VERSION": 3, + "MIN_COMPATIBLE_DESKTOP_VERSION": 2 + } + } + ], + "retirementDecision": { + "text": "2026-09-09: desktop ≤ v1.4.4 and mobile ≤ v0.0.7 (protocol 2) retired; all three minimums → 3", + "decidedBy": "Jinwoo" + }, + "directions": { + "mobileToHost": "host protocol >= mobile MIN_COMPATIBLE_DESKTOP_VERSION AND mobile protocol >= host minimum accepted client", + "hostToMobile": "mobile protocol >= host MIN_COMPATIBLE_RUNTIME_CLIENT_VERSION AND host protocol >= mobile minimum accepted desktop", + "runtimeClientToServer": "server protocol >= MIN_COMPATIBLE_RUNTIME_SERVER_VERSION AND client protocol >= server minimum accepted client" + }, + "selection": "version-sorted tags within each namespace; both compatibility directions must hold", + "floors": [ + { + "namespace": "desktop-stable", + "consideredTags": [ + "v0.0.1", + "v1.0.1", + "v1.0.2", + "v1.0.3", + "v1.0.4", + "v1.0.5", + "v1.0.6", + "v1.0.7", + "v1.0.8", + "v1.0.9", + "v1.0.10", + "v1.0.11", + "v1.0.12", + "v1.0.13", + "v1.0.14", + "v1.0.15", + "v1.0.16", + "v1.0.17", + "v1.0.18", + "v1.0.19", + "v1.0.20", + "v1.0.21", + "v1.0.22", + "v1.0.23", + "v1.0.24", + "v1.0.25", + "v1.0.26", + "v1.0.27", + "v1.0.28", + "v1.0.29", + "v1.0.30", + "v1.0.31", + "v1.0.32", + "v1.0.33", + "v1.0.34", + "v1.0.35", + "v1.0.36", + "v1.0.37", + "v1.0.38", + "v1.0.39", + "v1.0.40", + "v1.0.41", + "v1.0.42", + "v1.0.43", + "v1.0.44", + "v1.0.45", + "v1.0.46", + "v1.0.47", + "v1.0.48", + "v1.0.49", + "v1.0.50", + "v1.0.51", + "v1.0.52", + "v1.0.53", + "v1.0.54", + "v1.0.55", + "v1.0.56", + "v1.0.57", + "v1.0.59", + "v1.0.60", + "v1.0.61", + "v1.0.62", + "v1.0.63", + "v1.0.64", + "v1.0.65", + "v1.0.66", + "v1.0.67", + "v1.0.68", + "v1.0.69", + "v1.0.70", + "v1.0.71", + "v1.0.72", + "v1.0.73", + "v1.0.74", + "v1.0.75", + "v1.0.76", + "v1.0.77", + "v1.0.78", + "v1.0.79", + "v1.0.80", + "v1.0.81", + "v1.0.82", + "v1.0.83", + "v1.0.84", + "v1.0.85", + "v1.0.86", + "v1.0.87", + "v1.0.88", + "v1.0.89", + "v1.0.90", + "v1.0.91", + "v1.0.92", + "v1.0.93", + "v1.0.94", + "v1.0.95", + "v1.0.96", + "v1.0.97", + "v1.0.98", + "v1.0.99", + "v1.0.100", + "v1.1.0", + "v1.1.1", + "v1.1.2", + "v1.1.3", + "v1.1.4", + "v1.1.5", + "v1.1.6", + "v1.1.7", + "v1.1.8", + "v1.1.9", + "v1.1.10", + "v1.1.11", + "v1.1.12", + "v1.1.13", + "v1.1.14", + "v1.1.15", + "v1.1.16", + "v1.1.17", + "v1.1.18", + "v1.1.19", + "v1.1.20", + "v1.1.21", + "v1.1.22", + "v1.1.23", + "v1.1.24", + "v1.1.25", + "v1.1.26", + "v1.1.27", + "v1.1.28", + "v1.1.29", + "v1.1.30", + "v1.1.31", + "v1.1.32", + "v1.1.33", + "v1.2.0", + "v1.2.1", + "v1.2.2", + "v1.3.0", + "v1.3.1", + "v1.3.2", + "v1.3.3", + "v1.3.4", + "v1.3.5", + "v1.3.6", + "v1.3.7", + "v1.3.8", + "v1.3.9", + "v1.3.10", + "v1.3.11", + "v1.3.12", + "v1.3.13", + "v1.3.14", + "v1.3.15", + "v1.3.16", + "v1.3.17", + "v1.3.18", + "v1.3.19", + "v1.3.20", + "v1.3.21", + "v1.3.22", + "v1.3.23", + "v1.3.24", + "v1.3.25", + "v1.3.26", + "v1.3.27", + "v1.3.28", + "v1.3.29", + "v1.3.30", + "v1.3.31", + "v1.3.32", + "v1.3.33", + "v1.3.34", + "v1.3.35", + "v1.3.36", + "v1.3.37", + "v1.3.38", + "v1.3.39", + "v1.3.40", + "v1.3.41", + "v1.3.42", + "v1.3.43", + "v1.3.44", + "v1.3.45", + "v1.3.46", + "v1.3.47", + "v1.3.48", + "v1.3.49", + "v1.3.50", + "v1.3.51", + "v1.4.0", + "v1.4.1", + "v1.4.2", + "v1.4.3", + "v1.4.4", + "v1.4.5", + "v1.4.6", + "v1.4.7", + "v1.4.8", + "v1.4.9", + "v1.4.10", + "v1.4.11", + "v1.4.12", + "v1.4.13", + "v1.4.14", + "v1.4.15", + "v1.4.16", + "v1.4.17", + "v1.4.18", + "v1.4.19", + "v1.4.20", + "v1.4.21", + "v1.4.22", + "v1.4.23", + "v1.4.24", + "v1.4.25", + "v1.4.26", + "v1.4.27", + "v1.4.28", + "v1.4.29", + "v1.4.30", + "v1.4.31", + "v1.4.32", + "v1.4.33", + "v1.4.34", + "v1.4.35", + "v1.4.36", + "v1.4.37", + "v1.4.38", + "v1.4.39", + "v1.4.40", + "v1.4.41", + "v1.4.42", + "v1.4.44", + "v1.4.45", + "v1.4.46", + "v1.4.47", + "v1.4.48", + "v1.4.49", + "v1.4.50", + "v1.4.51", + "v1.4.52", + "v1.4.53", + "v1.4.54", + "v1.4.55", + "v1.4.56", + "v1.4.57", + "v1.4.58", + "v1.4.59", + "v1.4.60", + "v1.4.61", + "v1.4.62", + "v1.4.63", + "v1.4.64", + "v1.4.65", + "v1.4.66", + "v1.4.67", + "v1.4.68", + "v1.4.69", + "v1.4.70", + "v1.4.71", + "v1.4.72", + "v1.4.73", + "v1.4.74", + "v1.4.75", + "v1.4.76", + "v1.4.77", + "v1.4.78", + "v1.4.79", + "v1.4.80", + "v1.4.81", + "v1.4.82", + "v1.4.83", + "v1.4.84", + "v1.4.85", + "v1.4.86", + "v1.4.87", + "v1.4.88", + "v1.4.89", + "v1.4.90", + "v1.4.91", + "v1.4.92", + "v1.4.93", + "v1.4.94", + "v1.4.95", + "v1.4.96", + "v1.4.97", + "v1.4.98", + "v1.4.99", + "v1.4.100", + "v1.4.101", + "v1.4.102", + "v1.4.103", + "v1.4.104", + "v1.4.105", + "v1.4.106", + "v1.4.107", + "v1.4.108", + "v1.4.109", + "v1.4.110", + "v1.4.111", + "v1.4.112", + "v1.4.113", + "v1.4.114", + "v1.4.115", + "v1.4.116", + "v1.4.117", + "v1.4.118", + "v1.4.119", + "v1.4.120", + "v1.4.121", + "v1.4.122", + "v1.4.123", + "v1.4.124", + "v1.4.125", + "v1.4.126", + "v1.4.127", + "v1.4.128", + "v1.4.129", + "v1.4.130", + "v1.4.131", + "v1.4.132", + "v1.4.133", + "v1.4.134", + "v1.4.135", + "v1.4.136", + "v1.4.137", + "v1.4.138", + "v1.4.139", + "v1.4.140", + "v1.4.141", + "v1.4.142", + "v1.4.143", + "v1.4.144", + "v1.4.145", + "v1.4.146", + "v1.4.147", + "v1.4.148", + "v1.4.149", + "v1.4.150", + "v1.4.151", + "v1.4.152", + "v1.4.153", + "v1.4.155", + "v1.4.156", + "v1.4.157", + "v1.4.158", + "v1.4.159", + "v1.4.160", + "v1.4.161", + "v1.4.162", + "v1.4.163", + "v1.4.164", + "v1.4.165", + "v1.4.166", + "v1.4.167", + "v1.4.168", + "v1.4.169", + "v1.4.170", + "v1.4.171", + "v1.4.172", + "v1.4.173", + "v1.4.174", + "v1.4.175", + "v1.4.176", + "v1.4.177", + "v1.4.178", + "v1.4.179", + "v1.4.180", + "v1.4.182", + "v1.4.183", + "v1.4.184", + "v1.4.185", + "v1.4.186", + "v1.4.187", + "v1.4.188", + "v1.4.190", + "v1.4.191", + "v1.4.192", + "v1.4.193", + "v1.4.194", + "v1.4.195", + "v1.4.196", + "v1.4.197", + "v1.4.198", + "v1.4.199" + ], + "minimum": 2, + "floor": { + "tag": "v1.3.51", + "sha": "75a28bb9606c3ee98705d6417c866fac892aba0e", + "protocol": 2, + "peerMinimum": 2, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + "atMinimum3": { + "tag": "v1.4.5", + "sha": "74876aebbc10c893751d36ee29c016e66c18fb29", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "RUNTIME_PROTOCOL_VERSION" + }, + "inspected": [ + { + "tag": "v0.0.1", + "sha": "637e7c5bec694f488c38a9d5f6aefdc5ce6784a3", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.1", + "sha": "80d005dd147978acc32728ed6071222335f00b84", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.2", + "sha": "e74bdf444782208d986efd34d6383f16e0785805", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.3", + "sha": "ecd9f745841f99deb6f910cd8a4e90f018e8729d", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.4", + "sha": "4c6f1d9dbf483e3671535f30517f7e956d30154d", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.5", + "sha": "ea9543fdba2217791fc5515591206491d9105377", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.6", + "sha": "34e3ba1d26e422254b6c3ebeeccf58d391301155", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.7", + "sha": "36bea970808c54874803ce70ec2d62cdcb1f36d2", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.8", + "sha": "f07dd4c6ede485df2b99f07acf0dc52eeacf1d5c", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.9", + "sha": "899e607baaeb68c1a46db6b90a2b348c8b298a23", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.10", + "sha": "50595fbced282bfce1152a7fb9bd2d836d329a60", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.11", + "sha": "665be09ba8ace9f79027c7fb0b15485dab8fd0bd", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.12", + "sha": "16ca710c3496c18c5c5aeea6b8b4f0bee37fa6fc", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.13", + "sha": "abcdc6d451e83f0eb634a2bfd22c79a395b16236", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.14", + "sha": "97080fc03f651e77f34200d3d5f28b7c8d0b8094", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.15", + "sha": "7905535a18b8222bf1209a161ed9ed5afef2adeb", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.16", + "sha": "9cda05e230af316469a7267071f665b42643891c", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.17", + "sha": "514978040df901c53bdb193eeccdb440b8ed5986", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.18", + "sha": "1f34ab93376ec72261703a1396fdf1a563adcc7b", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.19", + "sha": "84c1dea7e41e7972d002ff1adc370d8803323b20", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.20", + "sha": "c9a9e06a0dbb6b09447a188a8ccf4d0d65098db4", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.21", + "sha": "8d95548c443531e337158c9a0c1f017893d483ab", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.22", + "sha": "0a88bea0e678f56a80d0a20249ff5f0c6ab13250", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.23", + "sha": "83cf02105f54183230696e8d1d473e5b8ec58820", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.24", + "sha": "ef79af969e018d9643fd71d0a123098fc71b3254", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.25", + "sha": "dfc01a8903bcb0c88ceea723eb5b1928d896d08d", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.26", + "sha": "3c582a6ff53f3a6bb29e56e62920d2df7920d52f", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.27", + "sha": "f3aaa952f9bc65ee6d794aa64f23b3c22ad9ea8f", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.28", + "sha": "051c25f90e5263b6caf0ef2f5e3c2e301378f870", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.29", + "sha": "b02a4a6d1a3d6bbe9acbf835ab0b2a4d910b9536", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.30", + "sha": "75e9b4b79a5aec01cdd13d3af12b7301c53e87c1", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.31", + "sha": "aed7a6c1f6e9f3471888d3dba36e1319be995bdf", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.32", + "sha": "c7f7fb87e2f507c77b0b06f24ad8a4f2d720e38b", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.33", + "sha": "2ef0a64cfa8031239de1c415f59c1405faa404af", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.34", + "sha": "c1f6d843922b503b3705b1bbe5bdd9187b276883", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.35", + "sha": "a4ef06b18f76e12ffd99b552834a742efe1b6795", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.36", + "sha": "b4ce46971153980a78ce1336ee28eed5c80733f3", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.37", + "sha": "56dda7a637eb864180112c96fb3b80051d458468", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.38", + "sha": "2ea8fa3a02f59abc852fccfd093a57a505107c69", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.39", + "sha": "431c14d0a4f81750a2587aa9399cc038335648ea", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.40", + "sha": "8da05ff386e324ec362135658a6eb8b9f2a54d41", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.41", + "sha": "a53903ffb5d91b82498a95cc61fb2e66083236f1", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.42", + "sha": "951ab72d7b7608473dbfe232844fba2b189471a6", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.43", + "sha": "c04275a5f2a85ac8f3728be864f4c7fed430fd00", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.44", + "sha": "00f82f9004ab286b63664ab9967c9edd73ec4b21", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.45", + "sha": "c3d5b62644f91dfc88db19216d2387df7503ac81", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.46", + "sha": "0100a98bfc808818622c7b35c8d9a8f11c27ec0c", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.47", + "sha": "bad6ad51a94b22cabeec117c31aabbe0646a7d81", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.48", + "sha": "605aba900bda433c141ddef6779f79beeb9dc6e7", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.49", + "sha": "30c01f4c29570337c7da3bab2612c55e6632c93b", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.50", + "sha": "1a10fbfbe6c298d0ded3ec4b4732ee9e677ab3fe", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.51", + "sha": "c34267607490f8cc1bd4d82787ea9f310acd3e35", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.52", + "sha": "056c5e0781b03318ea5feaa1dcd4eef704574c47", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.53", + "sha": "00332fbd3edfc0516bd5b060125219dfde7b2d64", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.54", + "sha": "004c98c959c0635b5f7efc124d9e90ec284d29b3", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.55", + "sha": "dfe488a536e9a7f2b0f1dac737dfae797816b70e", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.56", + "sha": "5b40e604b1971bd8c2696847c9526466ebc42752", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.57", + "sha": "33ff96a54d58907a46b29846c7253313fb24f380", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.59", + "sha": "bbff77622f1c47c30943411e07a88d273cf1c46a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.60", + "sha": "dc8e6d007cf67e7b15a44fca8182a2b2fad22bfd", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.61", + "sha": "fdd11e3e8c3b41a9dfc21ab605ac8101368c1e7a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.62", + "sha": "66b8b187d051e4d0c0f0ea02b58afa154eb2c634", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.63", + "sha": "745f90b13faa030d2f1a53c3a1f28118b042d5cb", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.64", + "sha": "348b42a22e8b38813939f787f497a8e1895abd68", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.65", + "sha": "d4ec4cd91258ecea961cc32be789c683d8374ab2", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.66", + "sha": "61998ed4648aec3e3f5ae51391f3396ad4a5a172", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.67", + "sha": "82581cc7fa7f7941f3411f01ad012ae3a15cdf87", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.68", + "sha": "7087bc7e33135d0b8909dfc596c6da972589b40a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.69", + "sha": "1e7956bd30035e183b8957e5e37623834b46b636", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.70", + "sha": "6f77e8b2c67af2fa08685db1b18d70b34459fdda", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.71", + "sha": "918e72b49a8849d8cd9d1f4cd468879ab807306f", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.72", + "sha": "11c65ab3a79c908461083a21f8c25bbaab9f1844", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.73", + "sha": "2d7c597e82445ebd3dabc18ad581801ca2227e00", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.74", + "sha": "cf579d5c8f628ba085e3b06ae6045d68dd6d20bc", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.75", + "sha": "bf15a5ae8402d19d52c2999ec961d4960018ce54", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.76", + "sha": "3e22aaf16a83f6879affee16553138813dcd367e", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.77", + "sha": "6016b6ef5b966ac3e73723beceeedfeb22e6d15b", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.78", + "sha": "8f67e28e2294e55982c24fec28a9c822707b75c7", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.79", + "sha": "b55f54ecaa9a208b05374c49c08d703b585ae6e4", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.80", + "sha": "84f316b6acc92042f33a8698a2b555d3fb5ec280", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.81", + "sha": "cb32f017aabde89823f27128e45643fac4eb06b2", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.82", + "sha": "f59361316387603a19648fceb647f61ad9c5668e", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.83", + "sha": "c6381d9acd2f89b4b496495c3779c32101060aa0", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.84", + "sha": "942d533230b6b80716d1ee4e6ec34e6b695f6267", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.85", + "sha": "e32d8c3e0c9ceff5bfa9ae61f59f8ebe0ee4ff80", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.86", + "sha": "6754fa22f9a929d1f72eec2e9f8ef0764be45e8a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.87", + "sha": "df43248761438b4befa5ca22338cc665864f096c", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.88", + "sha": "0651fa1a311228b3a8f33d9d5b8ab4592569ef1a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.89", + "sha": "deec6409df0579f43c818eea0538ac26d1991a56", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.90", + "sha": "4a319d9e0526123abc38d95c658c4e883f071634", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.91", + "sha": "73ef6281d611a4269d86a75dd9a13365a9db2e5a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.92", + "sha": "39b972fc64b250d0da9317119818eeee160587a6", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.93", + "sha": "c2da8124e9b45df3bf311fde7a1b12f681008aa1", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.94", + "sha": "9236cd70b64b416572cc69c4c430edb20b27f478", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.95", + "sha": "0736f4fd15da4031e99a706b77b239bda3794141", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.96", + "sha": "0f1a2b48920d4f9dde8ba73099f0425d069a0c23", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.97", + "sha": "d652a6c30a5a9a265ec9092d855902aa92b8297a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.98", + "sha": "cb8da7174924b4f14ea37daea79d0500904efd9a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.99", + "sha": "900adb16c7358c6a6b4eebe683bfc7b414916e15", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.0.100", + "sha": "019fb5fc502daf3e2a674648122f1fc8f8836b70", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.0", + "sha": "2ff0f107e86046c279451e01a8d68ebc88cc014b", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.1", + "sha": "60353a4c9c4f3e3aa93349d2ebf7a09f8ea704d4", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.2", + "sha": "42e6aef006a77ec76f2daeee781f6e7786b05081", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.3", + "sha": "35dd7fe2d2fe01458a20bc247c132bd66ef9d5e5", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.4", + "sha": "0d6f7c3976147f06aea2b0ceccb9b4df9d6f6821", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.5", + "sha": "f86e41f06f98bf2b868896da2effe0f279e52ea5", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.6", + "sha": "d5a8ab5aba6c29c64b2c531afe64f47d89612175", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.7", + "sha": "5c0d97ebf92b372f16fa18184937a5d7d414e3b5", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.8", + "sha": "d0cee5f83e9c39a5581703918333d00bb2061afb", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.9", + "sha": "6631047b95636465e3dc953a12f8fcbb04a7489e", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.10", + "sha": "d8a8d3a19cef4aa002379b02bf41a9df5477c5fb", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.11", + "sha": "1fbdeb9bb49fd11ebcbe89c474cbd8db37b12989", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.12", + "sha": "31041c117d500987844ee065c3dfd80024b20112", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.13", + "sha": "0e697e374042f1e767ce1925a825e748658b4e00", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.14", + "sha": "0336f13ac6c2cbbbe964c4f4aa590cf38cbd37ad", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.15", + "sha": "db7eadf4e8cf452fb6d1b5a7cd802dd6e0ae826f", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.16", + "sha": "7cb57470f1866dfa418e3c8b668c30b1636074b3", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.17", + "sha": "845ee56059e766f418c91112277090a8e9cdf387", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.18", + "sha": "86e48ef86d0448750fb182613de689448f17fe20", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.19", + "sha": "c9462de1256a3d9786ca59eb65556b15436ab097", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.20", + "sha": "4766c9468ef610c143ce6358ea8ebbed87bc822d", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.21", + "sha": "1263481380ee3a89d61062f225af1469d06526e5", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.22", + "sha": "0dd6cd9ec9b40df3cfcf80d2300b80a98394c3f8", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.23", + "sha": "d62e8b2c7b32b77d7837b20163e0fa9c9f7a19a0", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.24", + "sha": "d3748e1c82ba173866506c9412e49e8d5d8de901", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.25", + "sha": "70ce38ce6e1e3010f4f47c01186d47449ad0960d", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.26", + "sha": "a8a4e087a2ee2f1a39b12b51d19fda6431e61267", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.27", + "sha": "82fe7826bb9fc975ff1e2d98780b2fdbcd531ef8", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.28", + "sha": "b4c27bc37a50a46e1199425eb9181ffc1db784a0", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.29", + "sha": "c163682a76ccb9b3ab5448ee93ac87ce64e15584", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.30", + "sha": "e3844cb46f5eee84c18c7f8d862ad33b5e15b3fd", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.31", + "sha": "7a40d72bfaabc831726c03234928cde2385166a1", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.32", + "sha": "e342b64e789170a158b14d81d127fb1cd129ac55", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.1.33", + "sha": "d5f44f535a85924bb64a55a2c3693556267d7e56", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.2.0", + "sha": "d22a466ecec9e7268af01fef7e44e83326dba34b", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.2.1", + "sha": "3c237d1f4d2595e27624e41a18e4bbc92418273d", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.2.2", + "sha": "0a29512996f8ee896c97dbaed1b663e8ca270dad", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.0", + "sha": "203c3a161771950de98a0507a586c1371069a35d", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.1", + "sha": "2deaf9a052efc70fade85a99d4099056684f8741", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.2", + "sha": "50b63c09284898c6c8ec52c633713904510375b5", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.3", + "sha": "eacdc2b946ba8593638c7ea1e3faf96e013fcb9a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.4", + "sha": "d320b51a895a0ed8a7affabd0137739e42b006af", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.5", + "sha": "76d4b9a435f15ec2495ba97a11d880414e11b4a5", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.6", + "sha": "c47b651f2d7e79c5ca22737334495a953a9c2c11", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.7", + "sha": "a02fce9106ba7ab86029499d0b9daefb0cf55c4a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.8", + "sha": "ecd64ace9097aa70a1bfbd53d928fc0de396f8db", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.9", + "sha": "4a702a4c14e50dd2a6b4e998615fe24293d8b49d", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.10", + "sha": "5266eaed5fe1e8bedfc631e10f1a159d452814ef", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.11", + "sha": "cfe1714e61ed06451cf2b6c5c8d6f7ad1fe7c455", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.12", + "sha": "b8dc27a3d845085f3fad6b81befcdcaac4ccdd06", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.13", + "sha": "ae0f52109ffe6048a0aa834a63184295dc0cfc45", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.14", + "sha": "243f68d6d8949a83309cc1414e0e6c1d11af4be8", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.15", + "sha": "d52e4eae9699195d7a917819688168a236392998", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.16", + "sha": "6d2ff605ff72af0995757067e411824fffb561ca", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.17", + "sha": "005963192c4625c5341027246a875630fb05ba26", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.18", + "sha": "7ea0e8d0d1f37fe0aeccc46bbf457b558511bf01", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.19", + "sha": "51c87a14598401e17ca651046524d3cad27d8e24", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.20", + "sha": "738a08b7121e1b27e439654e26aeaa0af4f9f913", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.21", + "sha": "3b82e5a3cbe6f361b9d50948b9f062b6fd959642", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.22", + "sha": "4563d753bfbc6a8bfbce5d05ae020bfd298abea5", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.23", + "sha": "a01d94abbff79cc06e63dc882795011bc5c87ba6", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.24", + "sha": "aec56be96ed4a34f88f63890f4bad7d846227a30", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.25", + "sha": "73ce1d4af76e8d9ffa91d019a8abda6f529bd6c5", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.26", + "sha": "fe1788810436977a816dde015bcb8e4b7992bfa7", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.27", + "sha": "dfee883f8ad56d101453b067c3a2485d3cd6a4e4", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.28", + "sha": "5dc7fbdabc892c6244b9272deb159de59764274b", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.29", + "sha": "e2447dc961c845612b2d517fbac1b97d4e52d11a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.30", + "sha": "d71c6eef6e882d82d6b16fa0fc0e670e48d72baf", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.31", + "sha": "20b7456fedc89f00e4b4fc429ce5f9eb25a0048a", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.32", + "sha": "1f99e81be3e6c61f5fedd92bd7e7bfc3f6f0e9fb", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.33", + "sha": "82eda06540b6f08681195d89bc1af89ef107c5cc", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.34", + "sha": "a6694fcfbb3da95860d1c5fd2c0df41fd804e3e1", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.35", + "sha": "83130c69e54f816e21626938429363f776072a52", + "excluded": "protocol constant file absent" + }, + { + "tag": "v1.3.36", + "sha": "6e4e668cb349c199351694cd92589335b83cc9f7", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.37", + "sha": "f8b19bb33d994cb3f1a2556c68916772044ee934", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.38", + "sha": "6de0954be0c96e7b856133b2b383bb9180bad841", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.39", + "sha": "ace5c567144da92a7b8b651671c9bd9240d2e4a1", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.40", + "sha": "343624d765e51ee7caec5978ac82e2877ea98e86", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.41", + "sha": "06c63b26cf74e9553e4d2cbb27b7ec7708d98282", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.42", + "sha": "2e2d9892d864609f6a57a1ea4a2ef022507efaf4", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.43", + "sha": "6d4b28e06278ebf44154be3e78f3536c262db422", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.44", + "sha": "e602decf1d35dc54c84eea516fc2b9afdc065cce", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.45", + "sha": "8151069816530b797ad389069f027e13f0223f18", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.46", + "sha": "8f9c734be366945a24083b50a514e74d5b3e0c64", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.47", + "sha": "f94f9b0c7925822ecdc6aa9b697435d74d5a7525", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.48", + "sha": "2247435c96922fff5d03328169be49d5e844a916", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.49", + "sha": "a895b7d1ab47178cdfdc060521856f20b0dfa775", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.50", + "sha": "cde4321e76210f031871b676195f6d2f65c8a363", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.3.51", + "sha": "75a28bb9606c3ee98705d6417c866fac892aba0e", + "protocol": 2, + "peerMinimum": 2, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.4.0", + "sha": "21b6f013fe075d2c51b7bcba31033e4de7ea2245", + "protocol": 2, + "peerMinimum": 2, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.4.1", + "sha": "7b182bef5e2eb05b7b674052204b0cddf56ed3c8", + "protocol": 2, + "peerMinimum": 2, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.4.2", + "sha": "05667ed9d9281556f268d41d6098d31fb2282d1d", + "protocol": 2, + "peerMinimum": 2, + "protocolConstant": "DESKTOP_PROTOCOL_VERSION" + }, + { + "tag": "v1.4.3", + "sha": "9f47ae0c6c4ef05f9a059f2cb9910d08987a0188", + "protocol": 2, + "peerMinimum": 2, + "protocolConstant": "RUNTIME_PROTOCOL_VERSION" + }, + { + "tag": "v1.4.4", + "sha": "975528513247f31ec7fdea10a06b60e44de3b22f", + "protocol": 2, + "peerMinimum": 2, + "protocolConstant": "RUNTIME_PROTOCOL_VERSION" + }, + { + "tag": "v1.4.5", + "sha": "74876aebbc10c893751d36ee29c016e66c18fb29", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "RUNTIME_PROTOCOL_VERSION" + } + ] + }, + { + "namespace": "desktop-rc", + "consideredTags": [ + "v0.0.1-rc.0", + "v0.0.1-rc.1", + "v0.0.1-rc.2", + "v1.0.92-rc.0", + "v1.0.92-rc.2", + "v1.0.92-rc.3", + "v1.0.94-rc.0", + "v1.0.94-rc.1", + "v1.0.94-rc.2", + "v1.0.95-rc.0", + "v1.0.97-rc.0", + "v1.1.1-rc.0", + "v1.1.1-rc.1", + "v1.1.1-rc.2", + "v1.1.6-rc.0", + "v1.1.8-rc.0", + "v1.1.10-rc.0", + "v1.1.11-rc.0", + "v1.1.17-rc.0", + "v1.1.23-rc.0", + "v1.1.23-rc.1", + "v1.1.23-rc.2", + "v1.1.26-rc.0", + "v1.1.27-rc.0", + "v1.1.28-rc.0", + "v1.1.28-rc.1", + "v1.1.33-rc.0", + "v1.1.33-rc.1", + "v1.1.33-rc.2", + "v1.1.33-rc.3", + "v1.1.33-rc.4", + "v1.2.2-rc.0", + "v1.2.2-rc.1", + "v1.2.2-rc.2", + "v1.2.2-rc.3", + "v1.2.3-rc.0", + "v1.2.3-rc.1", + "v1.2.3-rc.2", + "v1.2.3-rc.3", + "v1.2.3-rc.4", + "v1.2.3-rc.5", + "v1.2.3-rc.6", + "v1.2.3-rc.7", + "v1.2.3-rc.8", + "v1.2.3-rc.9", + "v1.2.3-rc.10", + "v1.3.1-rc.0", + "v1.3.1-rc.1", + "v1.3.1-rc.2", + "v1.3.1-rc.3", + "v1.3.1-rc.4", + "v1.3.2-rc.0", + "v1.3.2-rc.1", + "v1.3.2-rc.2", + "v1.3.2-rc.3", + "v1.3.2-rc.4", + "v1.3.3-rc.0", + "v1.3.3-rc.1", + "v1.3.3-rc.2", + "v1.3.4-rc.0", + "v1.3.4-rc.1", + "v1.3.4-rc.2", + "v1.3.4-rc.3", + "v1.3.5-rc.0", + "v1.3.5-rc.1", + "v1.3.5-rc.2", + "v1.3.6-rc.0", + "v1.3.6-rc.1", + "v1.3.7-rc.0", + "v1.3.7-rc.1", + "v1.3.7-rc.2", + "v1.3.8-rc.0", + "v1.3.8-rc.1", + "v1.3.8-rc.2", + "v1.3.8-rc.3", + "v1.3.8-rc.4", + "v1.3.10-rc.0", + "v1.3.10-rc.1", + "v1.3.12-rc.0", + "v1.3.12-rc.1", + "v1.3.12-rc.2", + "v1.3.12-rc.3", + "v1.3.12-rc.4", + "v1.3.14-rc.0", + "v1.3.14-rc.1", + "v1.3.17-rc.0", + "v1.3.17-rc.1", + "v1.3.17-rc.2", + "v1.3.17-rc.3", + "v1.3.17-rc.4", + "v1.3.17-rc.5", + "v1.3.19-rc.0", + "v1.3.19-rc.1", + "v1.3.19-rc.2", + "v1.3.19-rc.3", + "v1.3.19-rc.4", + "v1.3.19-rc.5", + "v1.3.19-rc.6", + "v1.3.19-rc.7", + "v1.3.19-rc.8", + "v1.3.19-rc.9", + "v1.3.19-rc.10", + "v1.3.19-rc.11", + "v1.3.19-rc.12", + "v1.3.19-rc.13", + "v1.3.21-rc.0", + "v1.3.21-rc.1", + "v1.3.21-rc.2", + "v1.3.21-rc.3", + "v1.3.21-rc.4", + "v1.3.21-rc.5", + "v1.3.21-rc.6", + "v1.3.22-rc.0", + "v1.3.22-rc.1", + "v1.3.22-rc.2", + "v1.3.22-rc.3", + "v1.3.22-rc.4", + "v1.3.22-rc.5", + "v1.3.22-rc.6", + "v1.3.23-rc.0", + "v1.3.23-rc.1", + "v1.3.23-rc.2", + "v1.3.24-rc.0", + "v1.3.24-rc.1", + "v1.3.24-rc.2", + "v1.3.24-rc.3", + "v1.3.25-rc.0", + "v1.3.25-rc.1", + "v1.3.25-rc.2", + "v1.3.25-rc.3", + "v1.3.25-rc.4", + "v1.3.25-rc.5", + "v1.3.25-rc.6", + "v1.3.25-rc.7", + "v1.3.25-rc.8", + "v1.3.25-rc.9", + "v1.3.25-rc.10", + "v1.3.25-rc.11", + "v1.3.25-rc.12", + "v1.3.25-rc.13", + "v1.3.25-rc.14", + "v1.3.25-rc.15", + "v1.3.26-rc.0", + "v1.3.26-rc.1", + "v1.3.26-rc.2", + "v1.3.26-rc.3", + "v1.3.26-rc.4", + "v1.3.28-rc.0", + "v1.3.29-rc.0", + "v1.3.29-rc.1", + "v1.3.30-rc.0", + "v1.3.30-rc.1", + "v1.3.31-rc.0", + "v1.3.31-rc.1", + "v1.3.32-rc.0", + "v1.3.33-rc.0", + "v1.3.33-rc.1", + "v1.3.33-rc.2", + "v1.3.33-rc.3", + "v1.3.34-rc.0", + "v1.3.34-rc.1", + "v1.3.35-rc.0", + "v1.3.35-rc.1", + "v1.3.35-rc.2", + "v1.3.35-rc.3", + "v1.3.35-rc.4", + "v1.3.35-rc.5", + "v1.3.35-rc.6", + "v1.3.35-rc.7", + "v1.3.36-rc.0", + "v1.3.37-rc.0", + "v1.3.37-rc.1", + "v1.3.37-rc.2", + "v1.3.37-rc.3", + "v1.3.37-rc.4", + "v1.3.38-rc.0", + "v1.3.38-rc.1", + "v1.3.38-rc.2", + "v1.3.38-rc.3", + "v1.3.40-rc.0", + "v1.3.41-rc.0", + "v1.3.42-rc.0", + "v1.3.42-rc.1", + "v1.3.43-rc.0", + "v1.3.43-rc.1", + "v1.3.46-rc.0", + "v1.3.46-rc.1", + "v1.3.46-rc.2", + "v1.3.46-rc.3", + "v1.3.46-rc.4", + "v1.3.46-rc.5", + "v1.3.46-rc.6", + "v1.3.46-rc.7", + "v1.3.46-rc.8", + "v1.3.47-rc.0", + "v1.3.48-rc.0", + "v1.3.48-rc.1", + "v1.3.48-rc.2", + "v1.3.48-rc.3", + "v1.3.49-rc.0", + "v1.3.49-rc.1", + "v1.3.49-rc.2", + "v1.3.50-rc.0", + "v1.3.50-rc.1", + "v1.3.51-rc.0", + "v1.3.51-rc.1", + "v1.3.51-rc.2", + "v1.3.51-rc.3", + "v1.3.51-rc.4", + "v1.3.51-rc.5", + "v1.3.51-rc.6", + "v1.3.51-rc.7", + "v1.3.51-rc.8", + "v1.3.52-rc.0", + "v1.3.52-rc.1", + "v1.3.52-rc.2", + "v1.3.52-rc.3", + "v1.4.1-rc.0", + "v1.4.1-rc.1", + "v1.4.1-rc.2", + "v1.4.1-rc.3", + "v1.4.1-rc.4", + "v1.4.1-rc.5", + "v1.4.2-rc.0", + "v1.4.2-rc.1", + "v1.4.2-rc.2", + "v1.4.2-rc.3", + "v1.4.2-rc.4", + "v1.4.2-rc.5", + "v1.4.2-rc.6", + "v1.4.2-rc.7", + "v1.4.2-rc.8", + "v1.4.2-rc.9", + "v1.4.2-rc.10", + "v1.4.3-rc.0", + "v1.4.3-rc.1", + "v1.4.3-rc.2", + "v1.4.3-rc.3", + "v1.4.4-rc.0", + "v1.4.5-rc.0", + "v1.4.5-rc.1", + "v1.4.5-rc.2", + "v1.4.5-rc.3", + "v1.4.5-rc.4", + "v1.4.7-rc.0", + "v1.4.7-rc.1", + "v1.4.7-rc.2", + "v1.4.8-rc.0", + "v1.4.9-rc.0", + "v1.4.9-rc.1", + "v1.4.10-rc.0", + "v1.4.10-rc.1", + "v1.4.10-rc.2", + "v1.4.10-rc.3", + "v1.4.11-rc.0", + "v1.4.12-rc.0", + "v1.4.13-rc.0", + "v1.4.13-rc.1", + "v1.4.13-rc.2", + "v1.4.14-rc.0", + "v1.4.16-rc.0", + "v1.4.18-rc.0", + "v1.4.18-rc.1", + "v1.4.18-rc.2", + "v1.4.18-rc.3", + "v1.4.18-rc.4", + "v1.4.18-rc.5", + "v1.4.18-rc.6", + "v1.4.20-rc.0", + "v1.4.21-rc.0", + "v1.4.21-rc.1", + "v1.4.21-rc.2", + "v1.4.23-rc.0", + "v1.4.23-rc.1", + "v1.4.23-rc.2", + "v1.4.23-rc.3", + "v1.4.24-rc.0", + "v1.4.27-rc.0", + "v1.4.27-rc.1", + "v1.4.28-rc.0", + "v1.4.28-rc.1", + "v1.4.28-rc.2", + "v1.4.28-rc.3", + "v1.4.28-rc.4", + "v1.4.28-rc.5", + "v1.4.28-rc.6", + "v1.4.28-rc.7", + "v1.4.29-rc.0", + "v1.4.30-rc.0", + "v1.4.30-rc.1", + "v1.4.31-rc.0", + "v1.4.31-rc.1", + "v1.4.31-rc.2", + "v1.4.31-rc.3", + "v1.4.33-rc.0", + "v1.4.33-rc.1", + "v1.4.33-rc.2", + "v1.4.35-rc.0", + "v1.4.35-rc.1", + "v1.4.36-rc.0", + "v1.4.36-rc.1", + "v1.4.36-rc.2", + "v1.4.36-rc.3", + "v1.4.36-rc.4", + "v1.4.36-rc.5", + "v1.4.36-rc.6", + "v1.4.36-rc.7", + "v1.4.36-rc.8", + "v1.4.36-rc.9", + "v1.4.36-rc.10", + "v1.4.36-rc.11", + "v1.4.36-rc.12", + "v1.4.36-rc.13", + "v1.4.36-rc.14", + "v1.4.36-rc.15", + "v1.4.36-rc.16", + "v1.4.39-rc.0", + "v1.4.39-rc.1", + "v1.4.40-rc.0", + "v1.4.40-rc.1", + "v1.4.41-rc.0", + "v1.4.42-rc.0", + "v1.4.42-rc.1", + "v1.4.42-rc.2", + "v1.4.42-rc.3", + "v1.4.42-rc.4", + "v1.4.42-rc.5", + "v1.4.42-rc.6", + "v1.4.42-rc.7", + "v1.4.42-rc.8", + "v1.4.43-rc.0", + "v1.4.46-rc.0", + "v1.4.47-rc.0", + "v1.4.47-rc.1", + "v1.4.49-rc.0", + "v1.4.49-rc.1", + "v1.4.49-rc.2", + "v1.4.51-rc.0", + "v1.4.51-rc.1", + "v1.4.51-rc.2", + "v1.4.51-rc.3", + "v1.4.51-rc.4", + "v1.4.51-rc.5", + "v1.4.51-rc.6", + "v1.4.51-rc.7", + "v1.4.51-rc.8", + "v1.4.51-rc.9", + "v1.4.51-rc.10", + "v1.4.52-rc.0", + "v1.4.52-rc.1", + "v1.4.52-rc.2", + "v1.4.53-rc.0", + "v1.4.53-rc.1", + "v1.4.54-rc.0", + "v1.4.54-rc.1", + "v1.4.55-rc.0", + "v1.4.59-rc.0", + "v1.4.59-rc.1", + "v1.4.60-rc.0", + "v1.4.61-rc.0", + "v1.4.61-rc.1", + "v1.4.61-rc.2", + "v1.4.64-rc.0", + "v1.4.64-rc.1", + "v1.4.64-rc.2", + "v1.4.65-rc.0", + "v1.4.65-rc.1", + "v1.4.65-rc.2", + "v1.4.65-rc.3", + "v1.4.66-rc.0", + "v1.4.66-rc.1", + "v1.4.66-rc.2", + "v1.4.67-rc.0", + "v1.4.70-rc.0", + "v1.4.70-rc.1", + "v1.4.71-rc.0", + "v1.4.71-rc.1", + "v1.4.71-rc.2", + "v1.4.72-rc.0", + "v1.4.72-rc.1", + "v1.4.72-rc.2", + "v1.4.72-rc.3", + "v1.4.73-rc.0", + "v1.4.73-rc.1", + "v1.4.73-rc.2", + "v1.4.73-rc.3", + "v1.4.74-rc.0", + "v1.4.78-rc.0", + "v1.4.78-rc.1", + "v1.4.78-rc.2", + "v1.4.78-rc.3", + "v1.4.78-rc.4", + "v1.4.78-rc.5", + "v1.4.78-rc.6", + "v1.4.80-rc.0", + "v1.4.80-rc.1", + "v1.4.80-rc.2", + "v1.4.80-rc.3", + "v1.4.81-rc.0", + "v1.4.81-rc.1", + "v1.4.81-rc.2", + "v1.4.81-rc.3", + "v1.4.81-rc.4", + "v1.4.81-rc.5", + "v1.4.81-rc.6", + "v1.4.89-rc.0", + "v1.4.89-rc.1", + "v1.4.89-rc.2", + "v1.4.90-rc.0", + "v1.4.90-rc.1", + "v1.4.90-rc.2", + "v1.4.90-rc.3", + "v1.4.91-rc.0", + "v1.4.92-rc.0", + "v1.4.92-rc.1", + "v1.4.94-rc.0", + "v1.4.94-rc.1", + "v1.4.94-rc.2", + "v1.4.95-rc.0", + "v1.4.96-rc.0", + "v1.4.96-rc.1", + "v1.4.96-rc.2", + "v1.4.97-rc.0", + "v1.4.98-rc.0", + "v1.4.98-rc.1", + "v1.4.98-rc.2", + "v1.4.98-rc.3", + "v1.4.98-rc.4", + "v1.4.98-rc.5", + "v1.4.98-rc.6", + "v1.4.98-rc.7", + "v1.4.98-rc.8", + "v1.4.98-rc.9", + "v1.4.98-rc.10", + "v1.4.102-rc.0", + "v1.4.102-rc.1", + "v1.4.103-rc.0", + "v1.4.103-rc.1", + "v1.4.103-rc.2", + "v1.4.103-rc.3", + "v1.4.103-rc.4", + "v1.4.104-rc.0", + "v1.4.104-rc.1", + "v1.4.104-rc.2", + "v1.4.104-rc.3", + "v1.4.104-rc.4", + "v1.4.104-rc.5", + "v1.4.104-rc.6", + "v1.4.105-rc.0", + "v1.4.105-rc.1", + "v1.4.105-rc.2", + "v1.4.105-rc.3", + "v1.4.105-rc.4", + "v1.4.107-rc.0", + "v1.4.108-rc.0", + "v1.4.108-rc.1", + "v1.4.109-rc.0", + "v1.4.110-rc.0", + "v1.4.111-rc.0", + "v1.4.111-rc.1", + "v1.4.111-rc.2", + "v1.4.111-rc.3", + "v1.4.112-rc.0", + "v1.4.112-rc.1", + "v1.4.112-rc.2", + "v1.4.114-rc.0", + "v1.4.115-rc.0", + "v1.4.115-rc.1", + "v1.4.115-rc.2", + "v1.4.115-rc.3", + "v1.4.115-rc.4", + "v1.4.115-rc.5", + "v1.4.116-rc.0", + "v1.4.117-rc.0", + "v1.4.117-rc.1", + "v1.4.117-rc.2", + "v1.4.117-rc.3", + "v1.4.118-rc.0", + "v1.4.118-rc.1", + "v1.4.118-rc.2", + "v1.4.118-rc.3", + "v1.4.118-rc.4", + "v1.4.118-rc.5", + "v1.4.118-rc.6", + "v1.4.119-rc.0", + "v1.4.120-rc.0", + "v1.4.120-rc.1", + "v1.4.120-rc.2", + "v1.4.120-rc.3", + "v1.4.120-rc.4", + "v1.4.120-rc.5", + "v1.4.120-rc.6", + "v1.4.121-rc.0", + "v1.4.121-rc.1", + "v1.4.121-rc.2", + "v1.4.121-rc.3", + "v1.4.121-rc.4", + "v1.4.121-rc.5", + "v1.4.121-rc.6", + "v1.4.122-rc.0", + "v1.4.122-rc.1", + "v1.4.122-rc.2", + "v1.4.122-rc.3", + "v1.4.122-rc.4", + "v1.4.123-rc.0", + "v1.4.123-rc.1", + "v1.4.124-rc.0", + "v1.4.124-rc.1", + "v1.4.124-rc.2", + "v1.4.124-rc.3", + "v1.4.124-rc.4", + "v1.4.124-rc.5", + "v1.4.124-rc.6", + "v1.4.124-rc.7", + "v1.4.124-rc.8", + "v1.4.124-rc.9", + "v1.4.125-rc.0", + "v1.4.125-rc.1", + "v1.4.125-rc.2", + "v1.4.126-rc.0", + "v1.4.127-rc.0", + "v1.4.127-rc.1", + "v1.4.127-rc.2", + "v1.4.127-rc.3", + "v1.4.127-rc.4", + "v1.4.127-rc.5", + "v1.4.129-rc.0", + "v1.4.129-rc.1", + "v1.4.129-rc.2", + "v1.4.129-rc.3", + "v1.4.129-rc.4", + "v1.4.129-rc.5", + "v1.4.129-rc.6", + "v1.4.129-rc.7", + "v1.4.130-rc.0", + "v1.4.131-rc.0", + "v1.4.131-rc.1", + "v1.4.131-rc.2", + "v1.4.132-rc.0", + "v1.4.132-rc.1", + "v1.4.133-rc.0", + "v1.4.135-rc.0", + "v1.4.135-rc.1", + "v1.4.135-rc.2", + "v1.4.135-rc.3", + "v1.4.135-rc.4", + "v1.4.135-rc.5", + "v1.4.136-rc.0", + "v1.4.136-rc.1", + "v1.4.137-rc.0", + "v1.4.137-rc.1", + "v1.4.138-rc.0", + "v1.4.138-rc.1", + "v1.4.138-rc.2", + "v1.4.138-rc.3", + "v1.4.138-rc.4", + "v1.4.138-rc.5", + "v1.4.138-rc.6", + "v1.4.138-rc.7", + "v1.4.139-rc.0", + "v1.4.139-rc.1", + "v1.4.139-rc.2", + "v1.4.140-rc.0", + "v1.4.142-rc.0", + "v1.4.142-rc.1", + "v1.4.142-rc.2", + "v1.4.142-rc.3", + "v1.4.142-rc.4", + "v1.4.142-rc.5", + "v1.4.142-rc.6", + "v1.4.142-rc.7", + "v1.4.143-rc.0", + "v1.4.144-rc.0", + "v1.4.144-rc.1", + "v1.4.144-rc.2", + "v1.4.144-rc.3", + "v1.4.144-rc.4", + "v1.4.145-rc.1", + "v1.4.145-rc.2", + "v1.4.145-rc.3", + "v1.4.146-rc.0", + "v1.4.147-rc.0", + "v1.4.147-rc.3", + "v1.4.147-rc.4", + "v1.4.148-rc.0", + "v1.4.148-rc.1", + "v1.4.148-rc.2", + "v1.4.149-rc.0", + "v1.4.149-rc.2", + "v1.4.150-rc.0", + "v1.4.151-rc.0", + "v1.4.151-rc.1", + "v1.4.151-rc.2", + "v1.4.153-rc.0", + "v1.4.153-rc.1", + "v1.4.153-rc.2", + "v1.4.153-rc.3", + "v1.4.153-rc.4", + "v1.4.156-rc.0", + "v1.4.156-rc.1", + "v1.4.156-rc.2", + "v1.4.157-rc.0", + "v1.4.157-rc.1", + "v1.4.159-rc.0", + "v1.4.159-rc.1", + "v1.4.160-rc.0", + "v1.4.160-rc.1", + "v1.4.160-rc.2", + "v1.4.160-rc.3", + "v1.4.160-rc.4", + "v1.4.160-rc.5", + "v1.4.161-rc.0", + "v1.4.162-rc.0", + "v1.4.162-rc.1", + "v1.4.163-rc.0", + "v1.4.163-rc.1", + "v1.4.163-rc.2", + "v1.4.163-rc.3", + "v1.4.164-rc.0", + "v1.4.164-rc.1", + "v1.4.164-rc.2", + "v1.4.164-rc.3", + "v1.4.165-rc.0", + "v1.4.168-rc.0", + "v1.4.168-rc.1", + "v1.4.168-rc.2", + "v1.4.168-rc.3", + "v1.4.168-rc.4", + "v1.4.169-rc.0", + "v1.4.174-rc.0", + "v1.4.176-rc.0", + "v1.4.176-rc.1", + "v1.4.176-rc.2", + "v1.4.177-rc.0", + "v1.4.177-rc.1", + "v1.4.177-rc.2", + "v1.4.177-rc.3", + "v1.4.177-rc.4", + "v1.4.178-rc.0", + "v1.4.178-rc.1", + "v1.4.178-rc.2", + "v1.4.180-rc.0", + "v1.4.181-rc.0", + "v1.4.182-rc.0", + "v1.4.182-rc.1", + "v1.4.183-rc.0", + "v1.4.184-rc.0", + "v1.4.191-rc.0", + "v1.4.191-rc.1", + "v1.4.191-rc.2", + "v1.4.191-rc.3", + "v1.4.191-rc.4", + "v1.4.192-rc.0", + "v1.4.192-rc.1" + ], + "minimum": 2, + "floor": { + "tag": "v0.0.1-rc.0", + "sha": "11526e8ffa7ea785a472adc2cfa363acfdadc504", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "RUNTIME_PROTOCOL_VERSION" + }, + "atMinimum3": { + "tag": "v0.0.1-rc.0", + "sha": "11526e8ffa7ea785a472adc2cfa363acfdadc504", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "RUNTIME_PROTOCOL_VERSION" + }, + "inspected": [ + { + "tag": "v0.0.1-rc.0", + "sha": "11526e8ffa7ea785a472adc2cfa363acfdadc504", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "RUNTIME_PROTOCOL_VERSION" + } + ] + }, + { + "namespace": "mobile-v*", + "consideredTags": [ + "mobile-v0.0.1", + "mobile-v0.0.2", + "mobile-v0.0.3", + "mobile-v0.0.5", + "mobile-v0.0.6", + "mobile-v0.0.7", + "mobile-v0.0.8", + "mobile-v0.0.9", + "mobile-v0.0.10", + "mobile-v0.0.11", + "mobile-v0.0.12", + "mobile-v0.0.13" + ], + "minimum": 2, + "floor": { + "tag": "mobile-v0.0.7", + "sha": "85dfb8e2526a944d22f62fe0c022ed49b7856a8e", + "protocol": 2, + "peerMinimum": 2, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + }, + "atMinimum3": { + "tag": "mobile-v0.0.8", + "sha": "8b9340dcb793d5f7265135470627c2bdcb71e99e", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + }, + "inspected": [ + { + "tag": "mobile-v0.0.1", + "sha": "6e13bc6d945d530c62166dc50f5e466fb506ead6", + "excluded": "protocol constant file absent" + }, + { + "tag": "mobile-v0.0.2", + "sha": "d1b26e2eb705303070963ce6dadad4ecb79a4554", + "excluded": "protocol constant file absent" + }, + { + "tag": "mobile-v0.0.3", + "sha": "7f2f39b8047134169c79efd87379597a8bb6c968", + "excluded": "protocol constant file absent" + }, + { + "tag": "mobile-v0.0.5", + "sha": "e83d92eede5498e734a0b00c0261f7801fa4b3a9", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + }, + { + "tag": "mobile-v0.0.6", + "sha": "66df0e461a6c54c7173790aa47583a62f224204c", + "protocol": 1, + "peerMinimum": 0, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + }, + { + "tag": "mobile-v0.0.7", + "sha": "85dfb8e2526a944d22f62fe0c022ed49b7856a8e", + "protocol": 2, + "peerMinimum": 2, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + }, + { + "tag": "mobile-v0.0.8", + "sha": "8b9340dcb793d5f7265135470627c2bdcb71e99e", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + } + ] + }, + { + "namespace": "mobile-ios-v*", + "consideredTags": ["mobile-ios-v0.0.15", "mobile-ios-v0.0.26", "mobile-ios-v0.0.27"], + "minimum": 2, + "floor": { + "tag": "mobile-ios-v0.0.15", + "sha": "26493072c1c39dc4690d31d7663d80d2794e6768", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + }, + "atMinimum3": { + "tag": "mobile-ios-v0.0.15", + "sha": "26493072c1c39dc4690d31d7663d80d2794e6768", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + }, + "inspected": [ + { + "tag": "mobile-ios-v0.0.15", + "sha": "26493072c1c39dc4690d31d7663d80d2794e6768", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + } + ] + }, + { + "namespace": "mobile-android-v*", + "consideredTags": [ + "mobile-android-v0.0.14", + "mobile-android-v0.0.15", + "mobile-android-v0.0.16", + "mobile-android-v0.0.17", + "mobile-android-v0.0.18", + "mobile-android-v0.0.19", + "mobile-android-v0.0.21", + "mobile-android-v0.0.22", + "mobile-android-v0.0.24", + "mobile-android-v0.0.25", + "mobile-android-v0.0.26", + "mobile-android-v0.0.27", + "mobile-android-v0.0.30", + "mobile-android-v0.0.31", + "mobile-android-v0.0.32", + "mobile-android-v0.0.36", + "mobile-android-v0.0.37", + "mobile-android-v0.0.41", + "mobile-android-v0.0.42", + "mobile-android-v0.0.43", + "mobile-android-v0.0.44", + "mobile-android-v0.0.46", + "mobile-android-v0.0.47", + "mobile-android-v0.0.48" + ], + "minimum": 2, + "floor": { + "tag": "mobile-android-v0.0.14", + "sha": "0ed63216c6f2ae2404357ac3d869a8d3b9766e08", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + }, + "atMinimum3": { + "tag": "mobile-android-v0.0.14", + "sha": "0ed63216c6f2ae2404357ac3d869a8d3b9766e08", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + }, + "inspected": [ + { + "tag": "mobile-android-v0.0.14", + "sha": "0ed63216c6f2ae2404357ac3d869a8d3b9766e08", + "protocol": 3, + "peerMinimum": 2, + "protocolConstant": "MOBILE_PROTOCOL_VERSION" + } + ] + } + ] +} diff --git a/mobile/scripts/rpc-support-floor.mts b/mobile/scripts/rpc-support-floor.mts new file mode 100644 index 00000000000..809a584e784 --- /dev/null +++ b/mobile/scripts/rpc-support-floor.mts @@ -0,0 +1,139 @@ +import { readFileSync } from 'node:fs' +import { join } from 'node:path' +import { createHash } from 'node:crypto' +import { emit, git, root } from './rpc-artifact-io.mts' + +const desktopPath = 'src/shared/protocol-version.ts' +const mobilePath = 'mobile/src/transport/protocol-version.ts' +function constants(source: string): Record { + const result: Record = {} + for (const match of source.matchAll( + /export const ((?:RUNTIME|DESKTOP|MOBILE)_PROTOCOL_VERSION|MIN_COMPATIBLE_(?:RUNTIME_CLIENT|RUNTIME_SERVER|MOBILE|DESKTOP)_VERSION)\s*=\s*(\w+)/g + )) { + const value = /^\d+$/.test(match[2]) ? Number(match[2]) : result[match[2]] + if (value !== undefined) result[match[1]] = value + } + return result +} +const current = [] +for (const file of [desktopPath, mobilePath]) { + const source = readFileSync(join(root, file), 'utf8') + current.push({ + file, + sourceSha: await git('log', '-1', '--format=%H', '--', file), + sha256: createHash('sha256').update(source).digest('hex'), + constants: constants(source) + }) +} +const desktop = current[0].constants, + mobile = current[1].constants +for (const value of [ + desktop.RUNTIME_PROTOCOL_VERSION, + desktop.MIN_COMPATIBLE_RUNTIME_CLIENT_VERSION, + desktop.MIN_COMPATIBLE_RUNTIME_SERVER_VERSION, + mobile.MOBILE_PROTOCOL_VERSION, + mobile.MIN_COMPATIBLE_DESKTOP_VERSION +]) + if (!Number.isInteger(value)) throw new Error('Missing protocol gate constant') +const tags = ( + await git( + 'tag', + '--list', + 'v*', + 'mobile-v*', + 'mobile-ios-v*', + 'mobile-android-v*', + '--sort=version:refname' + ) +).split('\n') +const namespaces = [ + { + name: 'desktop-stable', + pattern: /^v\d+\.\d+\.\d+$/, + file: desktopPath, + protocol: 'RUNTIME_PROTOCOL_VERSION', + minimum: mobile.MIN_COMPATIBLE_DESKTOP_VERSION + }, + { + name: 'desktop-rc', + pattern: /^v\d+\.\d+\.\d+-rc(?:[.-]?\d+)?$/, + file: desktopPath, + protocol: 'RUNTIME_PROTOCOL_VERSION', + minimum: mobile.MIN_COMPATIBLE_DESKTOP_VERSION + }, + ...['mobile-v', 'mobile-ios-v', 'mobile-android-v'].map((prefix) => ({ + name: `${prefix}*`, + pattern: new RegExp(`^${prefix}\\d+\\.\\d+\\.\\d+(?:-rc[.-]?\\d+)?$`), + file: mobilePath, + protocol: 'MOBILE_PROTOCOL_VERSION', + minimum: desktop.MIN_COMPATIBLE_RUNTIME_CLIENT_VERSION + })) +] +const floors = [] +for (const namespace of namespaces) { + const candidates = tags.filter((tag) => namespace.pattern.test(tag)) + if (!candidates.length) throw new Error(`No tags for ${namespace.name}`) + const inspected = [] + let floor: unknown, atMinimum3: unknown + for (const tag of candidates) { + const sha = await git('rev-parse', `${tag}^{commit}`) + let source: string + try { + source = await git('show', `${sha}:${namespace.file}`) + } catch { + inspected.push({ tag, sha, excluded: 'protocol constant file absent' }) + continue + } + const values = constants(source) + const version = values[namespace.protocol] ?? values.DESKTOP_PROTOCOL_VERSION + if (!Number.isInteger(version)) throw new Error(`Missing protocol at ${tag}:${namespace.file}`) + const peerMinimum = + namespace.file === desktopPath + ? (values.MIN_COMPATIBLE_RUNTIME_CLIENT_VERSION ?? values.MIN_COMPATIBLE_MOBILE_VERSION) + : values.MIN_COMPATIBLE_DESKTOP_VERSION + if (!Number.isInteger(peerMinimum)) throw new Error(`Missing peer minimum at ${tag}`) + const clientProtocol = + namespace.file === desktopPath + ? mobile.MOBILE_PROTOCOL_VERSION + : desktop.RUNTIME_PROTOCOL_VERSION + const evidence = { + tag, + sha, + protocol: version, + peerMinimum, + protocolConstant: + values[namespace.protocol] === undefined ? 'DESKTOP_PROTOCOL_VERSION' : namespace.protocol + } + inspected.push(evidence) + if (!floor && version >= namespace.minimum && clientProtocol >= peerMinimum) floor = evidence + if (!atMinimum3 && version >= 3 && clientProtocol >= peerMinimum) atMinimum3 = evidence + if (floor && atMinimum3) break + } + if (!floor || !atMinimum3) throw new Error(`No compatible floor in ${namespace.name}`) + floors.push({ + namespace: namespace.name, + consideredTags: candidates, + minimum: namespace.minimum, + floor, + atMinimum3, + inspected + }) +} +emit('support-floor', { + schemaVersion: 1, + constants: current, + retirementDecision: { + text: '2026-09-09: desktop ≤ v1.4.4 and mobile ≤ v0.0.7 (protocol 2) retired; all three minimums → 3', + decidedBy: 'Jinwoo' + }, + directions: { + mobileToHost: + 'host protocol >= mobile MIN_COMPATIBLE_DESKTOP_VERSION AND mobile protocol >= host minimum accepted client', + hostToMobile: + 'mobile protocol >= host MIN_COMPATIBLE_RUNTIME_CLIENT_VERSION AND host protocol >= mobile minimum accepted desktop', + runtimeClientToServer: + 'server protocol >= MIN_COMPATIBLE_RUNTIME_SERVER_VERSION AND client protocol >= server minimum accepted client' + }, + selection: 'version-sorted tags within each namespace; both compatibility directions must hold', + floors +})