@@ -321,12 +321,24 @@ MANAGED_FILES_0138=(
321321FILES_0138=" $( sudo sha256sum " ${MANAGED_FILES_0138[@]} " | sha256sum | cut -d' ' -f1) "
322322echo " released 0.1.38 managed-file fingerprint: captured"
323323# PostgreSQL 18 randomizes the plain-dump psql restrict key by default.
324- # Fix it only for this locally controlled, hash-only test dump so repeated
325- # outputs compare database content rather than transport nonce material.
326- DATABASE_0138=" $( sudo -u agentnet pg_dump \
327- --no-owner --no-privileges \
328- --restrict-key=AgentNetReleasedMarkerState0138 \
329- --dbname=agentnet | sha256sum | cut -d' ' -f1) "
324+ # Fix it only for this locally controlled, hash-only test dump. Core also
325+ # refreshes runtime_leases.heartbeat_at/expires_at while it remains active, so
326+ # exclude only that table's volatile row data and hash its stable custody fields
327+ # separately. Schema plus every other row remain covered by the full dump.
328+ database_fingerprint () {
329+ {
330+ sudo -u agentnet pg_dump \
331+ --no-owner --no-privileges \
332+ --exclude-table-data=public.runtime_leases \
333+ --restrict-key=AgentNetReleasedMarkerState0138 \
334+ --dbname=agentnet
335+ sudo -u agentnet psql -X -Atq --dbname=agentnet -c \
336+ " COPY (SELECT lease_name,owner_id,fence,acquired_at FROM runtime_leases ORDER BY lease_name) TO STDOUT WITH (FORMAT csv, FORCE_QUOTE *)"
337+ } | sha256sum | cut -d' ' -f1
338+ }
339+ LEASE_COUNT_0138=" $( sudo -u agentnet psql -X -Atq --dbname=agentnet -c ' SELECT COUNT(*) FROM runtime_leases' ) "
340+ [[ " $LEASE_COUNT_0138 " =~ ^[1-9][0-9]* $ ]]
341+ DATABASE_0138=" $( database_fingerprint) "
330342echo " released 0.1.38 marker baseline: captured"
331343
332344assert_rejection () {
@@ -357,10 +369,8 @@ assert_released_state_unchanged() {
357369 echo " $phase : marker and state files unchanged"
358370 [[ " $( sudo -u agentnet psql -Atq --dbname=agentnet -c " SELECT value FROM metadata WHERE key='schema_version'" ) " == " $SCHEMA_0138 " ]]
359371 [[ " $( sudo -u agentnet psql -Atq --dbname=agentnet -c ' SELECT COALESCE(MAX(version),0) FROM schema_migrations' ) " == " $MIGRATION_MAX_0138 " ]]
360- [[ " $( sudo -u agentnet pg_dump \
361- --no-owner --no-privileges \
362- --restrict-key=AgentNetReleasedMarkerState0138 \
363- --dbname=agentnet | sha256sum | cut -d' ' -f1) " == " $DATABASE_0138 " ]]
372+ [[ " $( sudo -u agentnet psql -X -Atq --dbname=agentnet -c ' SELECT COUNT(*) FROM runtime_leases' ) " == " $LEASE_COUNT_0138 " ]]
373+ [[ " $( database_fingerprint) " == " $DATABASE_0138 " ]]
364374 echo " $phase : database unchanged"
365375 [[ " $( sudo sha256sum " ${MANAGED_FILES_0138[@]} " | sha256sum | cut -d' ' -f1) " == " $FILES_0138 " ]]
366376 echo " $phase : managed files unchanged"
@@ -387,10 +397,7 @@ plan_setup "$PREFIX_CANDIDATE" "$PLAN_CANDIDATE"
387397DIGEST_CANDIDATE=" $( jq -r ' .request_digest' " $PLAN_CANDIDATE " ) "
388398assert_released_state_unchanged " candidate plan"
389399echo " candidate plan: released state unchanged"
390- [[ " $( sudo -u agentnet pg_dump \
391- --no-owner --no-privileges \
392- --restrict-key=AgentNetReleasedMarkerState0138 \
393- --dbname=agentnet | sha256sum | cut -d' ' -f1) " == " $DATABASE_0138 " ]]
400+ [[ " $( database_fingerprint) " == " $DATABASE_0138 " ]]
394401echo " candidate pre-apply: database unchanged"
395402
396403APPLY_CANDIDATE_EXIT=0
0 commit comments