Repository navigation
Conversation
brainrake
force-pushed
the
martonboros/manifest-diff-tooling
branch
from
September 13, 2026 19:08
31b2aa9 to
5990729
Compare
Runs as a stage2 provisioner (same pattern as ansible.log), deleted before the instance is imaged. Both legs read the resulting /tmp/ami-manifest.txt: testinfra-ami-build.yml uploads it as a build artifact, ami-release-nix.yml (amd64) caches it to S3 as the develop baseline. Replaces the prior SSH-based capture, which blew the existing 10-minute test timeout hashing the whole filesystem over a remote shell. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
brainrake
force-pushed
the
martonboros/manifest-diff-tooling
branch
from
September 30, 2026 23:48
784032c to
98904bd
Compare
mtree is the standard tool for a path/mode/owner/hash directory fingerprint. Also fixes a real bug: the old find+sha256sum loop never excluded /dev or /sys, so sha256sum would hang forever on /dev/zero or /dev/random. Verified end to end against ubuntu:24.04 (11s, libarchive-tools installed then purged, clean exit). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
brainrake
marked this pull request as ready for review
October 1, 2026 00:07
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
brainrake
marked this pull request as draft
October 1, 2026 00:07
Key the S3 path by arch so amd64/arm64 don't clobber each other's latest.txt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The AMI build instance has no package index cache; install failed with 'Unable to locate package'. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Matches postgres#2450's version-diff pattern: per-leg diff artifact, one job downloads all of them, find-comment + create-or-update-comment instead of a new comment per push. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
AMI manifest diff15-amd64: changed (baseline: pr-4777ac3b383a21e8876aa818e3e581f6f31d4f6a)... 11 unchanged
-./boot/grub/grub.cfg mode=600 gid=0 uid=0 type=file sha256digest=296f40b4cdfda7d6a42b1c82ca3fedf197dd5a4fe0e1f7ceb6c07f6c6edbb62f
+./boot/grub/grub.cfg mode=600 gid=0 uid=0 type=file sha256digest=b3813a4f032f9395262cec57fb359939c0bfa5fd0cf8293b30c6c4b3dd7e40ce
... 294 unchanged
-./boot/initrd.img-7.0.0-1014-aws mode=644 gid=0 uid=0 type=file sha256digest=4a641f3a750016b3e74151662a017ce8d2728e8abdc55e306d9e58e71c0f6336
+./boot/initrd.img-7.0.0-1014-aws mode=644 gid=0 uid=0 type=file sha256digest=ae8d200064cc204a1b4ad60166f870aa409f40f177fd1994fd7ab07150775e03
... 8 unchanged
-./etc/.updated mode=644 gid=0 uid=0 type=file sha256digest=f0ecbe7c005ad3456696dc6575062ec70da3032c5149c57f82b794028a4ff663
+./etc/.updated mode=644 gid=0 uid=0 type=file sha256digest=a1faaf701001abfd5847d089094cfd9fb3948a2c3fad28df73153e9a789f3f6c
... 803 unchanged
-./etc/fstab mode=644 gid=0 uid=0 type=file sha256digest=406a4417175d5be6a3a6421d638ff5bc08b373455ebb1d26535f629494fa4036
+./etc/fstab mode=644 gid=0 uid=0 type=file sha256digest=82b036954adc16683c55b54b2e97099d7d9f7fcc91980a74c3451cac88ffc4f0
... 29 unchanged
-./etc/hostname mode=644 gid=0 uid=0 type=file sha256digest=b1a20a678538198ebe310df56fa7a680f56ce11492b958842745d4d8a4bec363
+./etc/hostname mode=644 gid=0 uid=0 type=file sha256digest=44c9710c80648f1fe154fa59d038ad632b1fe74d832cc73d6b8d391c33edcfde
... 127 unchanged
-./etc/machine-id mode=444 gid=0 uid=0 type=file sha256digest=6a23d6ad885500f46244fe752c9d3930c458eb9d9f6e7a01abe7fa5e3d6d37fc
+./etc/machine-id mode=444 gid=0 uid=0 type=file sha256digest=095d5932a570445a11a16fceef8abc2a1ea2bc96313d32524d85604019d4d107
+./etc/manifest-diff-test mode=644 gid=0 uid=0 type=file sha256digest=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
... 25 unchanged
-./etc/netplan/50-cloud-init.yaml mode=600 gid=0 uid=0 type=file sha256digest=dc9018c28ecd1fd7170760f97c3ddecce6e1a76772fb5e9916d2e448e3cecb8d
+./etc/netplan/50-cloud-init.yaml mode=600 gid=0 uid=0 type=file sha256digest=56686b4dab021680dd1f7bbf2f10655551b3a0d3f803f995e2ad7272d5607745
... 251 unchanged
-./etc/ssh/ssh_host_ecdsa_key mode=600 gid=0 uid=0 type=file sha256digest=8b1bff4193ad1be6b3f6f2c4a764dfb28cdea7e27be89b27ac5d0b435a28c1e9
-./etc/ssh/ssh_host_ecdsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=c104cbe0862aa73cce0244869b6b2479559bc2ab08fbab88c12357a753ccbae4
-./etc/ssh/ssh_host_ed25519_key mode=600 gid=0 uid=0 type=file sha256digest=fd3552c4336acbcec0fc99b30814d13d76847ea5b95c56e19be89891970edf24
-./etc/ssh/ssh_host_ed25519_key.pub mode=644 gid=0 uid=0 type=file sha256digest=6531291b773a1b005352738d96f2a7ce37994419738b46ec0d25d54a8d312296
-./etc/ssh/ssh_host_rsa_key mode=600 gid=0 uid=0 type=file sha256digest=6309dd1327a39cfadfc2705cf08d0bccb3a9e44e6b3e74f640af8f5b3c081d97
-./etc/ssh/ssh_host_rsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=9d9c2d7835d4d91ff4d4e25afdc80a2cb8f8584540137d63f533c5ea31cc2809
+./etc/ssh/ssh_host_ecdsa_key mode=600 gid=0 uid=0 type=file sha256digest=6ad12b00f8d00046ca0dc9b721eca6431da639aed87eb54e23e9f7110b9f5faf
+./etc/ssh/ssh_host_ecdsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=48578ccf5e3edad816817f7844d86de08332c1317a22ecf7d8855e2bc65fc906
+./etc/ssh/ssh_host_ed25519_key mode=600 gid=0 uid=0 type=file sha256digest=657d98fb489c90f65a10204291cc0eab161431a9f99a7ed9f9f88f7ac752d4ff
+./etc/ssh/ssh_host_ed25519_key.pub mode=644 gid=0 uid=0 type=file sha256digest=40e4526582bdd88bd9b650e9b418e7a54acb179c28d4079c63841564c063b3de
+./etc/ssh/ssh_host_rsa_key mode=600 gid=0 uid=0 type=file sha256digest=c00750b3db77bade7d841818a8313e662189120ff46b15db66b0b9ee237817f7
+./etc/ssh/ssh_host_rsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=ab2c302a93c9b60ef2c66fced2418bb65a1c4df49690a47a7b490b56d9f7ffb9
... 259 unchanged
-./etc/sudoers.d/90-cloud-init-users mode=440 gid=0 uid=0 type=file sha256digest=5c8073bd9bf060e36be0f70be2c81b8192f58b63f212ec426eef0346d2f9de28
+./etc/sudoers.d/90-cloud-init-users mode=440 gid=0 uid=0 type=file sha256digest=a1664c5f76bd4e450c8a833e9bfaeef29c60396bdc9d008919e8dfe80da5d9e8
... 255 unchanged
-./home/pgbouncer/.cache/nix/eval-cache-v6/13436e9c89167e90319a205a51e2489f3568d7820df1b249730afe9c0eb8d29e.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=b6b0c9e23f73c096276bb2d8c8d3b6c28fc0398afc316a93af437e27453ae17f
-./home/pgbouncer/.cache/nix/fetcher-cache-v4.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=bdb4dec6f766dcaf55684e4967c45b4f5fc555817fefb9a37d7464b59e25ec3f
+./home/pgbouncer/.cache/nix/eval-cache-v6/f65af1bd183196db6570eed51d3918f964f658ddb6b4a0f4665b0ed7fb4e49e2.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=b6b0c9e23f73c096276bb2d8c8d3b6c28fc0398afc316a93af437e27453ae17f
+./home/pgbouncer/.cache/nix/fetcher-cache-v4.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=3e07b4001290a4a6f877d1f5fad11c19f15539d6d987e35779053f6e2372bce2
... 11 unchanged
-./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-0168a91d3f0d89af82cc5ce8b7f4fbef2b3e8b66.idx mode=444 gid=1003 uid=1000 type=file sha256digest=ef4cfbeb07a2109675bb5091962820677d5631da2bd5abf9bddf9e83460eec50
-./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-0168a91d3f0d89af82cc5ce8b7f4fbef2b3e8b66.pack mode=444 gid=1003 uid=1000 type=file sha256digest=1348f92ef8c09cd436b27964e9b0dafa8ade7334d09202f94efb90714d620109
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-038f8c78932b497bf00aa6836eabb92116dae69c.idx mode=444 gid=1003 uid=1000 type=file sha256digest=86a89f160280264052ceac3fae48fd252cddcca63bb19136f19ab2acd3376486
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-038f8c78932b497bf00aa6836eabb92116dae69c.pack mode=444 gid=1003 uid=1000 type=file sha256digest=1b1b42c5c019b68f4a281072ad73a3d1fb00dd61089c9d8db5d76e863942b554
... 2 unchanged
-./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-074ef2671dc22c00cb4009af8b4954c0ff447fcd.idx mode=444 gid=1003 uid=1000 type=file struncated, full output 17-amd64: changed (baseline: pr-4777ac3b383a21e8876aa818e3e581f6f31d4f6a)... 11 unchanged
-./boot/grub/grub.cfg mode=600 gid=0 uid=0 type=file sha256digest=b4091540d0b3779a6eaf16e29126fd6dc76cacc9b036e0458821cb0f35eecfab
+./boot/grub/grub.cfg mode=600 gid=0 uid=0 type=file sha256digest=96788c20720398699b39041624da6b4f0736235432403aaf675ef08a1cf8d862
... 294 unchanged
-./boot/initrd.img-7.0.0-1014-aws mode=644 gid=0 uid=0 type=file sha256digest=0e4a0f2fc3bbb590fbc8fbcd5e772909cd062b5d9724b7c92839078e2610273c
+./boot/initrd.img-7.0.0-1014-aws mode=644 gid=0 uid=0 type=file sha256digest=993348a126e6845a35ba1571b2f7babd3e6db05240f34ed25e44166aca6e7614
... 8 unchanged
-./etc/.updated mode=644 gid=0 uid=0 type=file sha256digest=c62605420df43d3dc32ac8d7ad365c6f2a5c37a46b1eae3a287795ef1dcee31d
+./etc/.updated mode=644 gid=0 uid=0 type=file sha256digest=5149f8df1866ff1fa6313564d913551c2ace8f385d1b314aeaeb2d6e9f035b33
... 803 unchanged
-./etc/fstab mode=644 gid=0 uid=0 type=file sha256digest=310f8752f55284c3ca8e9d067fe1c328365ce7969465fa416c954added34c314
+./etc/fstab mode=644 gid=0 uid=0 type=file sha256digest=f23f1d0c1f8083b700be642f477c39ea45a52190248adf46b09134775b2b8041
... 29 unchanged
-./etc/hostname mode=644 gid=0 uid=0 type=file sha256digest=78e6dfcd6f2dd6fbc1c2c0eb80387e471e0bd64e7dcccb57f3398da2ca5362da
+./etc/hostname mode=644 gid=0 uid=0 type=file sha256digest=85583d7758d5dc204f22c8c11a0721893fce9af6b2851b2aa6b99e4d73450b2c
... 127 unchanged
-./etc/machine-id mode=444 gid=0 uid=0 type=file sha256digest=1de2320f0d6a390787995e0d749f90ed6cfb45954d101f575424b6656d7036c8
+./etc/machine-id mode=444 gid=0 uid=0 type=file sha256digest=e89481083e438dea3263994b16bf812405e7105d184726ab3626e909c2484131
+./etc/manifest-diff-test mode=644 gid=0 uid=0 type=file sha256digest=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
... 25 unchanged
-./etc/netplan/50-cloud-init.yaml mode=600 gid=0 uid=0 type=file sha256digest=0bffd74276c50e8e1b77a4ea5ee2b83a01f30f31a79f5f3198c3818a13fb8ba6
+./etc/netplan/50-cloud-init.yaml mode=600 gid=0 uid=0 type=file sha256digest=6562b7ea749116cf77b33fd1c5e6aead5b91b546a593bbf2fa589fce24562c46
... 251 unchanged
-./etc/ssh/ssh_host_ecdsa_key mode=600 gid=0 uid=0 type=file sha256digest=5cedbb5c4127b25dad05a046ae547257bc6efd82bff56e7fe9ab979889e53ee3
-./etc/ssh/ssh_host_ecdsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=f0af1f3e40385cc865c0e4c0f076dd7ad336def80d22c8cae9df13fcc42ce52c
-./etc/ssh/ssh_host_ed25519_key mode=600 gid=0 uid=0 type=file sha256digest=ae8687ef098282a5e6be42241aa77b30ad88c4b884f381bcb8d2dbd7b34d5990
-./etc/ssh/ssh_host_ed25519_key.pub mode=644 gid=0 uid=0 type=file sha256digest=e0fb8c6fbf97027ccc6f2dac304f046bc1ea6b96e9b792798e1608556ce30fd5
-./etc/ssh/ssh_host_rsa_key mode=600 gid=0 uid=0 type=file sha256digest=e010694a0351226c9d4b347d5325cbddc512c065ccdbc610a71993ea202ac3ba
-./etc/ssh/ssh_host_rsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=98c1b0760f01202e7cfb56805f508d4b7b749d93ab735d1ee91e49c4c0211f67
+./etc/ssh/ssh_host_ecdsa_key mode=600 gid=0 uid=0 type=file sha256digest=614b1e09c5e1bcc9312479b5974a82d176f25b53df4bafd46726702ba006dd65
+./etc/ssh/ssh_host_ecdsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=c86347cab6738bdc28b42700396f7636529341cd9f1b992189ebde073c63d2bc
+./etc/ssh/ssh_host_ed25519_key mode=600 gid=0 uid=0 type=file sha256digest=b2551c793c7647555b4ca9de4a5f43ec324bad89390d2c974dd4871980e05bd2
+./etc/ssh/ssh_host_ed25519_key.pub mode=644 gid=0 uid=0 type=file sha256digest=d06c9d787938caabf0925f52e15d8f02ff60619702b45d030b81c1370a89ed05
+./etc/ssh/ssh_host_rsa_key mode=600 gid=0 uid=0 type=file sha256digest=fa6d17f84d081837312ad767b84ad250733b737a9b19c4542ddfca14cf3843ba
+./etc/ssh/ssh_host_rsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=0e4b88db3e3cbe7d45d6c685c8a5e7c81dd98543f2f22088f34e0b63f9c49777
... 259 unchanged
-./etc/sudoers.d/90-cloud-init-users mode=440 gid=0 uid=0 type=file sha256digest=64450cca57ca21b803a5aa1703a1c7ed1cdbc921669b25de92c15c2365bc1a5d
+./etc/sudoers.d/90-cloud-init-users mode=440 gid=0 uid=0 type=file sha256digest=e1f56c0744b2a32e1c265b3ceb479638f4aa36d7f280f0f3ec8d720f779f1f49
... 255 unchanged
-./home/pgbouncer/.cache/nix/eval-cache-v6/13436e9c89167e90319a205a51e2489f3568d7820df1b249730afe9c0eb8d29e.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=b6b0c9e23f73c096276bb2d8c8d3b6c28fc0398afc316a93af437e27453ae17f
-./home/pgbouncer/.cache/nix/fetcher-cache-v4.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=a6a012d640b8d04600dfa8dadd5bd6b5b2d602ef085b8b4fd118d58cd2c463d5
+./home/pgbouncer/.cache/nix/eval-cache-v6/f65af1bd183196db6570eed51d3918f964f658ddb6b4a0f4665b0ed7fb4e49e2.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=b6b0c9e23f73c096276bb2d8c8d3b6c28fc0398afc316a93af437e27453ae17f
+./home/pgbouncer/.cache/nix/fetcher-cache-v4.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=f5df6eb3f0e5f9f8c4b020c2fdfadc7e93ea99ca53621ff53cd4aa61133d19c5
... 11 unchanged
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-01049244db5d638444634564a36a2f6145f8dd73.idx mode=444 gid=1003 uid=1000 type=file sha256digest=7a9cc7c69ce8acbbe897e7fd1efd639a9f52043e375d0341c33450e9a5119061
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-01049244db5d638444634564a36a2f6145f8dd73.pack mode=444 gid=1003 uid=1000 type=file sha256digest=b82b0fc5b8e8aaca91f9480e5e9edaa56a606db0fc3e8e169029dc6fcef26e9a
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-01f8554979d32eb365c3f1ffdd08a81a304b9dd9.idx mode=444 gid=1003 uid=1000 type=file sha256digest=5e4adce76ff2738abfde07fbfe5f7c20cb4b2e38bc3e3d4084ededdf034ebbc0
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-01f8554979d32eb365c3f1ffdd08a81a304b9dd9.pack mode=444 gid=1003 uid=1000 type=file sha256digest=b69b9a1ba1b92441895e897e1b142a549efa61fb0f48bd81c5149d69914c9c36
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-03fc8a09745c2f032031b312f89874310e63d89b.idx mode=444 gid=1003 uid=1000 type=file sha256digest=1695truncated, full output orioledb-17-amd64: changed (baseline: pr-4777ac3b383a21e8876aa818e3e581f6f31d4f6a)... 11 unchanged
-./boot/grub/grub.cfg mode=600 gid=0 uid=0 type=file sha256digest=4307c4abc667341667a5d6dcc5dd5030757438c27fbe3d7741e2eec07603cd9c
+./boot/grub/grub.cfg mode=600 gid=0 uid=0 type=file sha256digest=b49f06772550d57d8e93ff07016f467f7c23fdad4da5249a76374ff0c0189817
... 294 unchanged
-./boot/initrd.img-7.0.0-1014-aws mode=644 gid=0 uid=0 type=file sha256digest=b9989e96df95e18d614a1dac8eaba164125fffa4e7b5c5209b33a6b632d4eaff
+./boot/initrd.img-7.0.0-1014-aws mode=644 gid=0 uid=0 type=file sha256digest=29a75eec76b3dca73d1c652a37031778a8d78d0e80e02db443a68b067e670be1
... 8 unchanged
-./etc/.updated mode=644 gid=0 uid=0 type=file sha256digest=6ac8707b2c3299996c16424aa2227b8cf4f3cc56e4ce60025130eb72cc738378
+./etc/.updated mode=644 gid=0 uid=0 type=file sha256digest=03d8b40424fbfd7518097764f4e6d1749f0834013d97cbb6c311d60de962ec08
... 804 unchanged
-./etc/fstab mode=644 gid=0 uid=0 type=file sha256digest=dd6624f6cff47c6e8595f9211bad47aa899f6e7dba8dc47e8675d9cb6acf1203
+./etc/fstab mode=644 gid=0 uid=0 type=file sha256digest=d30f66ac94138a3594e1b421b76bf232f41442600d4f5938a7204888b26bf768
... 33 unchanged
-./etc/hostname mode=644 gid=0 uid=0 type=file sha256digest=be2eebbc60ada3f5078bcb28f45fdeabdca8e92acc39469ba28e9d318816aacd
+./etc/hostname mode=644 gid=0 uid=0 type=file sha256digest=0e8330a0ab385e8c848289f97316188001b3dd0e2076931e22f99a551d4ab8d5
... 127 unchanged
-./etc/machine-id mode=444 gid=0 uid=0 type=file sha256digest=b529f0db0957c51abc0353c8e4ae7b0e9580fb654f2271eaab469e25ba9875a6
+./etc/machine-id mode=444 gid=0 uid=0 type=file sha256digest=7c7a947b4079e25c78c9862f8040286c1352e8dfcdfbb82fda87f72620b22d4c
+./etc/manifest-diff-test mode=644 gid=0 uid=0 type=file sha256digest=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
... 25 unchanged
-./etc/netplan/50-cloud-init.yaml mode=600 gid=0 uid=0 type=file sha256digest=9b9522e0348a1ca3d90c9d34dab181ae2e59e8306419d890daa3d73edfb4708b
+./etc/netplan/50-cloud-init.yaml mode=600 gid=0 uid=0 type=file sha256digest=f1be9bd11ce423f881cfe03d92d90283c6a8fb7479e9488afd6af2941eba4964
... 251 unchanged
-./etc/ssh/ssh_host_ecdsa_key mode=600 gid=0 uid=0 type=file sha256digest=bd1ae21f08f57cff27f454c437def9a30daabe06cf29c573bf870cf370c64ba3
-./etc/ssh/ssh_host_ecdsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=0df1b5b1b19bdd1536178cb406e5d18dab8db03fbb26dca4636071efb7fd8873
-./etc/ssh/ssh_host_ed25519_key mode=600 gid=0 uid=0 type=file sha256digest=13d38a68f55f102000e38ea2b4aaa681f592031f86ad0cb52515a7b0d5947b89
-./etc/ssh/ssh_host_ed25519_key.pub mode=644 gid=0 uid=0 type=file sha256digest=d0fd236783a298d7859267f931adc0c219ffac4752d9e9bd8feb0e92e8fe2705
-./etc/ssh/ssh_host_rsa_key mode=600 gid=0 uid=0 type=file sha256digest=d0d065da4f45b2f6ea091d5976997fda5eadf307b14c5a915de36dc379a4f315
-./etc/ssh/ssh_host_rsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=a61e7100abfbcb1ea494141ce36df9f79abeb94c13167376322be65af3950053
+./etc/ssh/ssh_host_ecdsa_key mode=600 gid=0 uid=0 type=file sha256digest=89b56990fc59683af4c5e7767277c85e828799b156d6a9fb211046cf9d236f5c
+./etc/ssh/ssh_host_ecdsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=6d12f1108ec8f8254b88a7f11d3e4eb6f230cd6c0298f25f010222037e525b45
+./etc/ssh/ssh_host_ed25519_key mode=600 gid=0 uid=0 type=file sha256digest=35bdbff0bad62ca9101e7f5723d9ee6d1327d5905137b752b80edf36142c1e04
+./etc/ssh/ssh_host_ed25519_key.pub mode=644 gid=0 uid=0 type=file sha256digest=63f4a901cd74c3b71c3579e647bf91728078c673e45784e8b15b835ab9478e06
+./etc/ssh/ssh_host_rsa_key mode=600 gid=0 uid=0 type=file sha256digest=96b481f09ca9a9324da59b9cb9691071818d581ac0ae0491d237a41f38825ce0
+./etc/ssh/ssh_host_rsa_key.pub mode=644 gid=0 uid=0 type=file sha256digest=58b10839a2d13c0603a2553b0beb73ff7924de760584cfee88133059593e68dc
... 259 unchanged
-./etc/sudoers.d/90-cloud-init-users mode=440 gid=0 uid=0 type=file sha256digest=315a98ea3c014c51557ee9710a88efff2e0a023ac0ca9eb1781f6cf7c791e197
+./etc/sudoers.d/90-cloud-init-users mode=440 gid=0 uid=0 type=file sha256digest=7e70b3ed0c8f57668754b484d4dce7ff64ccf675f51a2a51347967168faf9a6b
... 266 unchanged
-./home/pgbouncer/.cache/nix/eval-cache-v6/13436e9c89167e90319a205a51e2489f3568d7820df1b249730afe9c0eb8d29e.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=b6b0c9e23f73c096276bb2d8c8d3b6c28fc0398afc316a93af437e27453ae17f
-./home/pgbouncer/.cache/nix/fetcher-cache-v4.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=a7a36577fad80f925ab07cf9330f2d47c8012df96fa4d466066357e77692738b
+./home/pgbouncer/.cache/nix/eval-cache-v6/f65af1bd183196db6570eed51d3918f964f658ddb6b4a0f4665b0ed7fb4e49e2.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=b6b0c9e23f73c096276bb2d8c8d3b6c28fc0398afc316a93af437e27453ae17f
+./home/pgbouncer/.cache/nix/fetcher-cache-v4.sqlite mode=644 gid=1003 uid=1000 type=file sha256digest=985214091cb4624343982cc58fed860856ff9e9dfd111cb002241600288b81ae
... 11 unchanged
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-01f8554979d32eb365c3f1ffdd08a81a304b9dd9.idx mode=444 gid=1003 uid=1000 type=file sha256digest=5e4adce76ff2738abfde07fbfe5f7c20cb4b2e38bc3e3d4084ededdf034ebbc0
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-01f8554979d32eb365c3f1ffdd08a81a304b9dd9.pack mode=444 gid=1003 uid=1000 type=file sha256digest=b69b9a1ba1b92441895e897e1b142a549efa61fb0f48bd81c5149d69914c9c36
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-037c8c6e61fc4ab1b64817ed707c44f8d7c32b1f.idx mode=444 gid=1003 uid=1000 type=file sha256digest=614200435ce8de059574c22e5b45ca54baf187ce80597dbe4f13dbf3118e9088
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-037c8c6e61fc4ab1b64817ed707c44f8d7c32b1f.pack mode=444 gid=1003 uid=1000 type=file sha256digest=db18d916c39301ebadff0fa9e2e0f1086f3b58c525c352f8b8c9ef12a6b895b7
+./home/pgbouncer/.cache/nix/tarball-cache-v2/objects/pack/pack-05188a5c0142b1264cd2ed3acce792fb6dd72cb6.idx mode=444 gid=1003 uid=1000 type=file sha256digest=c969truncated, full output |
6 legs x 20000 bytes exceeded the ~65536 char comment limit, silently dropping orioledb-17's two sections entirely. 6000/leg keeps the worst case (all legs differ) comfortably under it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
brainrake
marked this pull request as ready for review
October 1, 2026 14:32
This comment has been minimized.
This comment has been minimized.
mmlb
reviewed
Oct 1, 2026
Per review: GH-managed GC, no ARTIFACTS_BUCKET secret threading. restore-keys prefix match gets the latest develop-side save. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
mmlb
requested changes
Oct 2, 2026
Co-authored-by: Manuel Mendez <708570+mmlb@users.noreply.github.com>
Drop unused github.sha from restore key (never hits, confusing). Explain always() on manifest-diff-comment. Fix diff description: baseline is the last built AMI, not develop HEAD (cache only updates on ami-release-nix runs). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
It was inside the ```diff fence, so GitHub rendered it as literal text, not a link. Close the fence first. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
No more '354k lines all added' when the cache is empty: short note instead, naming what publishes the baseline. Baseline version comes from a header line stamped into the manifest at save time, shown per-leg since each PG version/arch has its own. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Mixing a # with ${{ }} directly inside a quoted shell string broke
actionlint's shellcheck pass. Use env: like every other step in this
file.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
sed -i "1i # ..." still broke actionlint's shellcheck pass even through an env var, reproduced with actionlint directly, cause unclear; prepend via printf+cat instead. Also drop useless echo around cat (SC2005). Verified clean with actionlint against both files. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
brainrake
marked this pull request as draft
October 5, 2026 10:59
cache-ami-manifest (develop-side save), diff-ami-manifest (PR-side restore+diff), post-ami-manifest-comment (assemble+post), matching the repo's existing .github/actions/ convention. Net -106 lines across the two workflow files. Verified with actionlint and a functional check of the parameterized annotate logic. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
brainrake
marked this pull request as ready for review
October 5, 2026 19:34
brainrake
marked this pull request as draft
October 5, 2026 19:35
Rename cache/diff/post-ami-manifest-* to cache/diff/post-manifest, parameterized by key_prefix/publish_hint/marker/title/description instead of AMI-specific inputs, so docker builds can reuse them. Cache key is now sha256 of the annotated manifest, not the nix store path: the nix path only reflects the postgres package, so ansible or apt drift with the same package version would silently collide and skip saving a new baseline. Content hash catches any real change. manifest-snapshot.sh now installs bsdtar via apk when apt-get isn't present, for Alpine-based docker images. Verified on both ubuntu:24.04 and alpine:3.23. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Reuses manifest-snapshot.sh (via docker run, not a Packer provisioner) and the generalized cache/diff/post-manifest actions. - docker-image-test.yml (runs on every PR): snapshot + diff + comment, keyed by image name (e.g. docker-manifest-17). - dockerhub-release-matrix.yml (push to develop/release): snapshot + cache the baseline. Only the arm64 leg, since docker-image-test.yml only builds/tests arm64 per PR (large-linux-arm runner) — no amd64 leg to compare against. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
snapshot-docker-manifest replaces the copy-pasted docker run block in both docker-image-test.yml and dockerhub-release-matrix.yml. Raw ami-manifest/docker-manifest artifacts weren't consumed by anything downstream (only the diff artifacts are) — dropped. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Docker image manifest diffCompares each Docker image's rootfs manifest between this PR and the last published image. |
nix run .#manifest-diff / .#manifest-comment, following the repo's own image-size-analyzer/docker-image-test convention, instead of bash embedded in composite-action YAML. Verified for real: nix build (writeShellApplication's shellcheck caught a real SC2295 quoting bug) and nix run with representative inputs for all three diff states (no baseline / unchanged / changed) plus the comment assembly. Testing also caught a real logic bug predating this refactor: the cached baseline carries a '# version:' header line that the current build's manifest never has, so every comparison showed a spurious 1-line diff removing it, even with zero real changes. Strip the header from both sides before diffing. manifest-snapshot.sh stays a plain script (not a nix package): it runs inside the AMI/container being snapshotted, which has no nix. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
PostgreSQL Extension Dependency Analysis: PR #2447
SummaryNo extensions had dependencies with MAJOR version updates. Full Analysis ResultsPostgreSQL 15 Extension DependenciesPostgreSQL 17 Extension DependenciesOrioleDB 17 Extension Dependencies |
PostgreSQL Package Dependency Analysis: PR #2447
SummaryNo packages had MAJOR version updates. Full Analysis ResultsPostgreSQL 15 Dependency ChangesExtracting PostgreSQL 15 dependencies...
Runtime Closure Size
Raw Dependency ClosurePostgreSQL 17 Dependency ChangesExtracting PostgreSQL 17 dependencies...
Runtime Closure Size
Raw Dependency Closure |
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…m/supabase/postgres into martonboros/manifest-diff-tooling
Package version diff: none (aarch64-linux, x86_64-linux) |
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This reverts commit 58469f2.
This comment has been minimized.
This comment has been minimized.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Captures a filesystem manifest of the AMI and the Docker images, caches it on publish, and diffs it against each PR build in one PR comment per target.
bsdtar --format=mtree(path, mode, owner, hash) plus units, users, groups, nft, and sysctl. Capture istestinfra/manifest-snapshot.sh, run by a Packer provisioner for the AMI anddocker runfor images.ami-release-nix.ymlanddockerhub-release-matrix.yml(arm64) save the manifest withcache-manifest. The key is<prefix>-<sha256 of the manifest>.testinfra-ami-build.ymlanddocker-image-test.ymlrestore the newest entry for the prefix and diff withdiff-manifest. Unchanged lines collapse to... N unchanged.nix run .#manifest-diffand.#manifest-comment.Temporary: the "TEMP seed baseline" step in
testinfra-ami-build.ymlseeds the cache from this PR's build. Remove it before merge.MPG-117