commit - 2bc69aedf0c572e1dd76c84c1a3e686d34b33ec9
commit + 90c588541e98eb7d71db2a6fb4f2da7cf15f5143
blob - a992054c8ba290d4dcd1983807e2d7cd318e216c
blob + 293d4950c17fbcc9aa75311535f6428d92327496
--- docs/release-live-checks.md
+++ docs/release-live-checks.md
environment, or command output. Temporary evidence is removed when the target
exits.
+The Codex Tool check also isolates the Journal created by that invocation and
+requires a committed `responses-continuity` Provider-state envelope for the
+fixed profile and model. It checks only the envelope metadata; the backend's
+opaque encrypted-state bytes are neither assumed nor printed.
+
The opt-in must run as the ordinary Owner account, never root. Record the date
and profile identifier in the release transcript; do not record request
content, raw provider output, the token, or the account id.
blob - 9bdb10dcbfd56e37f14e68124b364e4c34e539a2
blob + 5e8f971090ff39eb92103d3e209588bbbda0a1dd
--- scripts/live-check
+++ scripts/live-check
grep -F -q "\"is_error\":$is_error"
}
+# Prove that a successful Codex Tool Turn committed opaque continuation state
+# without depending on the backend's encrypted-state bytes. The envelope is
+# fixed by the compatibility profile; its data object deliberately stays
+# opaque to this release check.
+codex_continuity_present()
+{
+ journal=$1
+ marker='"provider_state":"{\"provider\":3,\"profile\":\"chatgpt-codex-2026-07-17\",\"model\":\"gpt-5.5\",\"kind\":\"responses-continuity\",\"data\":'
+
+ [ -f "$journal" ] || return 1
+ grep -F '"t":"msg","role":"assistant"' "$journal" 2>/dev/null |
+ grep -Fq "$marker" || return 1
+ grep -F '"t":"turn-end"' "$journal" 2>/dev/null |
+ grep -Fq '"outcome":"ok"'
+}
+
# Return 0 when absent, 1 when leaked, and 2 when the scan could not run.
secret_absent()
{
chmod 0700 "$tmp"
artifacts=$tmp/artifacts
live_home=$tmp/home
+ journals=$live_home/.fugu/sessions
project=$tmp/project
mkdir -p "$artifacts" "$live_home" "$project"
chmod 0700 "$artifacts" "$live_home" "$project"
if [ "$subscription" -eq 1 ]; then
live_workdir=$project
printf '%s\n' "LIVE-SUBSCRIPTION-TOOL-$$" >"$project/profile.txt"
+ subscription_before=$tmp/subscription-journals-before
+ subscription_after=$tmp/subscription-journals-after
+ find "$journals" -type f -name '*.ndjson' -print 2>/dev/null |
+ sort >"$subscription_before"
credentialed_run -p \
'Use read exactly once on profile.txt, then reply exactly: live subscription tool ok' \
-o ndjson >"$artifacts/subscription-tool.out" \
grep -Fq "$subscription_marker" \
"$artifacts/subscription-tool.err"
ok "subscription startup warns that the profile is experimental" $?
+ if [ "$expect_provider" = codex ]; then
+ find "$journals" -type f -name '*.ndjson' -print \
+ 2>/dev/null | sort >"$subscription_after"
+ subscription_journal=$(comm -13 "$subscription_before" \
+ "$subscription_after")
+ n=$(printf '%s\n' "$subscription_journal" |
+ sed '/^$/d' | wc -l)
+ [ "$n" -eq 1 ] &&
+ codex_continuity_present "$subscription_journal"
+ ok "Codex Tool turn commits its opaque continuity envelope" $?
+ fi
fi
live_workdir=$project
grep -q "$report_a" "$artifacts/subagent.out" &&
grep -q "$report_b" "$artifacts/subagent.out"
ok "both bounded agent reports return successfully" $?
- journals=$live_home/.fugu/sessions
grep -R -q '"name":"agent"' "$journals" 2>/dev/null &&
grep -R -q "$report_a" "$journals" 2>/dev/null &&
grep -R -q "$report_b" "$journals" 2>/dev/null