{"number":150,"title":"A subrepo at its pinned state is unmodified on any bookmark (#147)","body":"Closes #147 (metalgear feedback). The snapshot re-encoded a subrepo's pin from disk with the disk's bookmark name, so heads equal to the pin's on another bookmark read as modified and `oxy bookmark switch` refused. New `Pin::same_state` (same repository and heads in any order, or the same Git commit); the snapshot keeps the recorded pin when the state matches, and the switch check and subrepo sync use it. Test a_subrepo_at_its_pinned_state_on_another_bookmark_is_unmodified, which fails without the fix. Hub side: oxygenhub#332. Gate passes.","author":"andymccall","state":"landed","target":"main","source":{"kind":"bookmark","bookmark":"subrepo-pin-state"},"changes":[{"hash":"b5e98094eb8fc7123b7331db9a051e6deb771db299e8ab60b6d3e5312d1e6dd3","message":"A subrepo at its pinned state is unmodified on any bookmark (closes #147)","author":{"name":"Andy McCall","email":"mailme@andymccall.co.uk","key":"d89664ced1fc407fd11aa9c2e51e119f55f617e6eb838c5c0cf8a5594ff150fd","account":null,"note":"signed by a key not linked to any account; its owner links it under Settings → Keys (/settings/keys)"},"when_ms":1793035776598,"deps":["4dee277c327ae9e908daff85af60474484fb0ccbc9fdf4262a754b607aa3e6f9","72484195899a701003ba873ec0b443b786474ed8428768d65cf04f88163447db","75167672ebcdfc798181db598f9e72a4987236c9c376e5db1f8fde30ec031fc7","767ac6cd0545ed1a1ef3f45bbfdd1bebcff222df95616f20491d0bb68c188570","7b9809e67c3d5b6272bc211863db5c7853535b8f95b41afdc5bccab86e6e3715","80b069facc699214ba6ae4ad9f9c943df79f1089d3502c4b0fe19082098b3252","8fd78eb52ad2aaac80470949fa2b6bbe79ef04a19c14b830eae56d0adcfb1f71","982864068a598f2092b46c1fc9f1a9d4ea3f078266fadede4e710f76109dd5db","e4595038502a2a70b39cedbd575a9282e6ee2a50bc147b094f8f35d8519fa6d6"],"head":false,"signature":{"status":"valid","key":"0358d6693a8f0873fe58d207683b80080d50e92f04a37a011a1cb9d7ee732dfc","sealed":true,"revoked":false},"via":{"name":"agent:claude@andymccall","key":"0358d6693a8f0873fe58d207683b80080d50e92f04a37a011a1cb9d7ee732dfc","scope":"changes,refs,seal","expires_ms":1793036379946,"revoked":false}},{"hash":"7a3cc5149a1462290d018fa2b022c6dadfc89ce48dd3222db48712431fcc1ab6","message":"Merge main into subrepo-pin-state: keep both changelog entries","author":{"name":"Andy McCall","email":"mailme@andymccall.co.uk","key":"d89664ced1fc407fd11aa9c2e51e119f55f617e6eb838c5c0cf8a5594ff150fd","account":null,"note":"signed by a key not linked to any account; its owner links it under Settings → Keys (/settings/keys)"},"when_ms":1793042709829,"deps":["642fa213de80028beaac55764ddb218936e6ee784f3c884ff7533308ec5edcf8","80b069facc699214ba6ae4ad9f9c943df79f1089d3502c4b0fe19082098b3252","8fd78eb52ad2aaac80470949fa2b6bbe79ef04a19c14b830eae56d0adcfb1f71","b5e98094eb8fc7123b7331db9a051e6deb771db299e8ab60b6d3e5312d1e6dd3","e4595038502a2a70b39cedbd575a9282e6ee2a50bc147b094f8f35d8519fa6d6"],"head":false,"signature":{"status":"valid","key":"c97169c73205ddbfde597644a4aa5d25a707f8bae7d670dd60e273c7a4196959","sealed":true,"revoked":false},"via":{"name":"agent:claude@andymccall","key":"c97169c73205ddbfde597644a4aa5d25a707f8bae7d670dd60e273c7a4196959","scope":"changes,refs,seal","expires_ms":1793044100992,"revoked":false}},{"hash":"fa53a2849de8c3e11ee3504c97eaae90de7bb38578d4c6ce04ce27572edab824","message":"Merge main into subrepo-pin-state: keep both changelog entries","author":{"name":"Andy McCall","email":"mailme@andymccall.co.uk","key":"d89664ced1fc407fd11aa9c2e51e119f55f617e6eb838c5c0cf8a5594ff150fd","account":null,"note":"signed by a key not linked to any account; its owner links it under Settings → Keys (/settings/keys)"},"when_ms":1793059210780,"deps":["78b49d4d01f02cf8dbb613b49369c7d6eb82ed3a8218dcdbe0bb65960ad33bf0","7a3cc5149a1462290d018fa2b022c6dadfc89ce48dd3222db48712431fcc1ab6","80b069facc699214ba6ae4ad9f9c943df79f1089d3502c4b0fe19082098b3252","8fd78eb52ad2aaac80470949fa2b6bbe79ef04a19c14b830eae56d0adcfb1f71","e4595038502a2a70b39cedbd575a9282e6ee2a50bc147b094f8f35d8519fa6d6"],"head":false,"signature":{"status":"valid","key":"7ec6cc10c1bc3479120940f009ab88402bd3a9c638e54ff26ae34af3176fa2b0","sealed":true,"revoked":false},"via":{"name":"agent:claude@andymccall","key":"7ec6cc10c1bc3479120940f009ab88402bd3a9c638e54ff26ae34af3176fa2b0","scope":"changes,refs,seal","expires_ms":1793060020994,"revoked":false}},{"hash":"aa137bb8e77d7078508373ca5864ec23cc072164b9cd2c10407798ee85a8bc3e","message":"CHANGELOG: one #148 entry (the merge kept both sides' copy)","author":{"name":"Andy McCall","email":"mailme@andymccall.co.uk","key":"d89664ced1fc407fd11aa9c2e51e119f55f617e6eb838c5c0cf8a5594ff150fd","account":null,"note":"signed by a key not linked to any account; its owner links it under Settings → Keys (/settings/keys)"},"when_ms":1793059221640,"deps":["8fd78eb52ad2aaac80470949fa2b6bbe79ef04a19c14b830eae56d0adcfb1f71","fa53a2849de8c3e11ee3504c97eaae90de7bb38578d4c6ce04ce27572edab824"],"head":false,"signature":{"status":"valid","key":"7ec6cc10c1bc3479120940f009ab88402bd3a9c638e54ff26ae34af3176fa2b0","sealed":true,"revoked":false},"via":{"name":"agent:claude@andymccall","key":"7ec6cc10c1bc3479120940f009ab88402bd3a9c638e54ff26ae34af3176fa2b0","scope":"changes,refs,seal","expires_ms":1793060020994,"revoked":false}}],"projected_heads":["0912a0337a955864e1038da409ef794f111dd80f7fc7b050c989c74d588a4600","0a45ba84393a414958a777d344221d68fcd00cf1ae560dbdccb5a8b3c92dbb01","11c958021e1ac07456b98ec07bdcba77fca6d8e957276082c97b73257c9b834d","11e2b98a3a3991fea689a5458f7fb26b249dc6067d5cea967af0581fc7171818","141b1fb2ebe91e4ebe083fbe919785bab6cd42ad4a597c3e06e879d5f738dde9","192b06f8c6d08f8262d1f550300caeb08718a479c604d2fcae14427a7841c58f","2cd6bf89adb40edea6e55e0254b24e00c44f47e9b7b6b5901d223d5665000788","30d5fac7560dea15f032e006ddd6d00a693ff81a8b1eb33875be65836fee74c2","30fc48081b941a61eb77e97b8e816a5458716fea7019ec9295e3f3525864269e","37f1914b62a82076d723fc4ece9a6ab745908f160d5842dfecf8d5e6bf307ae4","396891fd2dda456eea4460d8a1c83c852873c64254fb6cffc862b98387991850","3d7120efe04a01af36050193cedae1e21359375635e20b5f348974f387a16312","4afab467e35f35023c84f531f79824cb10e31c242baa279de8b934177f8c84f1","4f22a8fd0ed4632a2791f76e2ff490f6331a911135a90c8c07832452755ace05","51d4862a16d8de259898ae8d07a48ad1887fc810ee30de0e46b1cddaa8f6e95e","543bbf64d127d15e7be2d6692d8f5c8e155f48cc555c4f53dbaf89f07957e749","5ad2b56544c58c4ae28564f1e8bc6758eaabb4b97ae37d2c6304a65d1e5e155e","5f661562b3a40a970261ee737f225c646ce7f918bdac7ad5d8b2ccde1bde8f53","60a1223c894fc10e022c0ce16abdbdf27064ca478400353c117f8d8f70caf951","6a9414d6a966abc9f944842291a46e5403947fe3f09c6aa19ae75f91778460aa","733ea16a97015ecb5ff67ee729582786169fbcd577e3e27cfc9392d23e2daae7","73d592e763abec60d9d504caf0407322a8401fdf2fd9c4c8dc9aa5d26f1fd4ce","74b4a3c62ea49a14291109dfc144c7f840f6af35c6a9e8f150ce53528fdf6e04","7df9007b163c8b03c6f89e9d1b93aab6d66f76d5f18f51b41746a1f845a2a25a","8177f8177a07410928f06692eeb2ffb9d53c5949c4a9ed99cfb1770dadb8ccb5","82739cfbafe29cdcabc52aee6ffe481a2a6ae7c7565707e9636452c0a21c11ce","8349c327fe830af77bf0a837f70ad5dee39ef26819619b06be67aeb3b8364165","89a1d0243544537006a3c66ba182443c1c6edfbdb8b68ef29a97d19b2bef0aab","8b7986dd3cb0152e7e433b24701abaea443209e81be3effd7cdcb6457431b5ce","8e9c64d16ded10f83455c73635f23906f0098ce76eb0760b15fed866715a1e00","930e5f3f16823c4b878fd19597948548f9a8f9b6c75080b3524a08b900e01892","94cdbc576ce181f578a696089134a0c52f5d91057d9e80c8553d9ea4d889a0f2","99cdbaeea274a3fb2e503f36fb928dea63ba2cc9dd5c7b2d790de467397d9983","99e3e0af08df756ceeb08da32e0c1d5aed950cb1606339cdc94a8295a4691cf9","9aec107d1071104cac89c32434f29b484a7389cb8b9bfd8f943bbda5116ca102","a451982b1d34e567b7200db20846faf5a3d8fa1497159efffb3a66f905d35b47","aa137bb8e77d7078508373ca5864ec23cc072164b9cd2c10407798ee85a8bc3e","abaa8d517631ec656cc019738283b6c4dceeea9b6f9e1d8423936b8dbd5c4daa","ac4af91530fc84e9bf7046bc313a902afa2b07d6c5226db2c51e959baa3509d9","ad2496f7e608641053085dd305d3a7e821d7aaebf4ca47f5a4b170837437af85","adec9a0796b863e2dc79a20917011fd4e5bd733068b0bfe54bf7a441a2fe526b","b0a0c9afae2d5c2af470c2ce8a932d5e7438b2416e7bcc929214d0c873f17938","b288cd254343a8c981e7c891d9cbd4472d208a1cb643e9be69c71c479b4c3fa8","b4fa2bc1ca6aabed7a2a89cc41b8d9b83993164eba99008d2a1bd74374784dce","b63fc7a77fc6e79d1acf216a9a0bc47bfeccd51b96e9a0337d16dec00bfeb4a7","b9bf7eec1f2d11a8260d422b2f8d03c74572b0fa2b0b87784f13a98ad17dd2ff","bbe654f95806a1c7a59671d7bef45801e5b12398161b48ea42733a257d74b4f7","bd445775b94e79c197aace767807c4c63d7b11e1dcce111cd1bb20656dbff36b","bdd894b548e4a5754c62fb1342a480eb0d7a5d411935bb3567d8caa991ea10db","c2e1d09047db8ed90b2f4ccf0bcdb26a2b1f5df68962ee04b5fa914604ac8112","c6e69e4b8d8f6fe6e7bec5dabc9d471c19c32bc457e05de8975a45100349af44","c96354484bd96287c36037349c6bd02e0018bf790bfc04663f8c4efb894d0c13","d2e3c39da1b150343bde2a7956571b058c46a912286fba8dfa73285b02f2b3f3","dfe1658773454ebdcebc24bf1492064f02ff2dfdd0c44dc3c221bf847133cd07","e0d56dfca51d391b5cdf8acd3bc3ce489c307dfac17b865a48462d93380114e6","e10ba80000e10f8a410cc4e22471a10263bc6c2ad81c8c4b8dbf454bbb8c3e97","e30c081a50647168556fe693b88e934f0fff3ec6039a7562af7c18d77080ff61","e5f8920bc8d0acad095a8d2b3b747481bd148e01456a7505967158dbff1fae8d","e8c8b34d8348f3bda78b1d5ef63e8b19d929c6a55e0d0974876e96e928650096","ef26f9a287909e999d87d7aa269e357d85c99115ddea145f9f4a20ab61f379ee","f0406c3b40ed1bbaa0b43a820106cf033f1c636d9805b06882d4bb0f2a8406d2","f57bf6702628cfd73668d771071a01c34e4a363eb9029e74b434799743df934b","f5bd79d06f5cfb33b21a731e54175a0d3a820972dd3b4ca0d82b645c7bc69c87","f9eab8117787cc06db5850e157c1a241aa0f1ccb8969ded4ba9684e8caceadc4","faa9cd0579d37845979389ccc2816e166c7907359a3975e23942dd8f7634f252"],"projected_state":"b5f1c3e183540616a04034f886408de9db9113437c6ee95ff9592c5c6b7f3e73","conflicted":false,"approvals":[],"landable":false,"blockers":[],"created_ms":1793035799028,"updated_ms":1793060003080,"url":"https://oxygenhub.io/andymccall/oxygen/proposal/150","repository_url":"https://oxygenhub.io/andymccall/oxygen","source_url":null,"landed":{"by":"andymccall","via":"when its checks passed (set by andymccall)","when_ms":1793060003080},"auto_land":null,"requested_reviewers":[],"labels":[{"name":"bug","colour":"#c62d47","description":"Something does not work"}]}