mirror of
https://github.com/saymrwulf/ltl-accumulator-verified.git
synced 2026-09-04 20:03:44 +00:00
verification: lifted phases run under the buttons shell options, enforced in lift-guard
A lift is evidence about the shipping gate only if it executes the way the shipping gate executes. Every button here runs `set -euo pipefail`. Eighteen lift sites prefixed their driver with `set -uo pipefail` and no -e — four per fork (selftest-harness, selftest-scalar-statements, selftest-statements twice) and both accumulator lifts — while sixteen other sites got it right. The estate did it both ways, which is what made this a defect and not a convention. Without -e a failing command does not abort: execution continues and the driver returns the LAST command status. A lifted phase can therefore reach a verdict the shipping phase would never reach while the self-test reports the gate "works". selftest_statements.sh:27 claims the tested logic IS the shipping logic; in this respect it was not. NO VERDICT CHANGED. Every self-test that passed before passes now, at the same timings, so -e was not masking a false green at these commits. The defect was fidelity and the claim is no larger than that. The durable part is not the 18 edits. lift-guard.sh already inspects every driver, so it now REFUSES any lift whose driver does not enable errexit and prints the drivers actual shell options. Negative-tested four ways: no -e rejects, `set -euo` passes, bare `set -e` passes, no set line at all rejects. Byte-identical across the four forks. The nineteenth lift someone writes fails closed rather than silently testing a more permissive shell. Certified by the round-15 sweep: 50/50 GREEN, six repositories, both buttons and every self-test, exit 0. Registered and NOT fixed here: ltl-accumulator-verified has no lift-guard.sh at all and calls it zero times, so its two lifts remain unguarded — the one place this class can still recur silently. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
888796a16e
commit
a0d11b44d9
3 changed files with 4 additions and 4 deletions
|
|
@ -14,5 +14,5 @@ eda93f520546a692926b2a46bcb79332e1795879e5083327a8bf2404aca5cf87 Proofs/AxiomCh
|
||||||
82d41c634a2e9adfc2cc74c202d025e57411687796f820765d45608f3fb4cb20 Proofs/Inventory.lean
|
82d41c634a2e9adfc2cc74c202d025e57411687796f820765d45608f3fb4cb20 Proofs/Inventory.lean
|
||||||
0b8a0fc6947af1d1e600a756eb2b07dc88d189b21df3220c4501a41be8b33f1e run_bare.sh
|
0b8a0fc6947af1d1e600a756eb2b07dc88d189b21df3220c4501a41be8b33f1e run_bare.sh
|
||||||
473e2463d9c26653c8435ad6758044742f200eb13ea0db4b8f076466c08bd87a selftest_audit.sh
|
473e2463d9c26653c8435ad6758044742f200eb13ea0db4b8f076466c08bd87a selftest_audit.sh
|
||||||
3d5898161d663eccad162269a5a6c102319077e22e1f2d89a8bfcab6926d29f6 selftest-harness.sh
|
5d2792996d5164022591f116ce9cbd03cdee8c9b886eb4aac6fa49c9de2bac32 selftest-harness.sh
|
||||||
cf6d4d8210e224a054d4ab693c28c83e7a9ddebda05da47d6ec311d825a606c0 selftest_statements.sh
|
b4a3ea633ac8a38c699e10b55b040718567cb60c5f7c7439c0c9720d4c9f8554 selftest_statements.sh
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ cp "$HERE/HARNESS.sha256" "$STASH/HARNESS.sha256"
|
||||||
# either terminator rather than hardcoding one and silently lifting nothing.
|
# either terminator rather than hardcoding one and silently lifting nothing.
|
||||||
DRIVER="$STASH/phase0c.sh"
|
DRIVER="$STASH/phase0c.sh"
|
||||||
{
|
{
|
||||||
echo 'set -uo pipefail'
|
echo 'set -euo pipefail' # -e matches the button; see lift-drivers-drop-errexit
|
||||||
echo "HERE=\"$HERE\""
|
echo "HERE=\"$HERE\""
|
||||||
awk '/^# ── Phase 0c/{f=1} f{print} /^# ── Phase 1|^echo "=== Phase 1/{if(f && !/Phase 0c/) exit}' "$HERE/check.sh" \
|
awk '/^# ── Phase 0c/{f=1} f{print} /^# ── Phase 1|^echo "=== Phase 1/{if(f && !/Phase 0c/) exit}' "$HERE/check.sh" \
|
||||||
| sed '/^# ── Phase 1/d; /^echo "=== Phase 1/d'
|
| sed '/^# ── Phase 1/d; /^echo "=== Phase 1/d'
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ cp "$T/AUDIT-MANIFEST.txt" "$T/MANIFEST.pristine"
|
||||||
# two variables it reads from its surroundings.
|
# two variables it reads from its surroundings.
|
||||||
DRIVER="$T/phase3d.sh"
|
DRIVER="$T/phase3d.sh"
|
||||||
{
|
{
|
||||||
echo 'set -uo pipefail'
|
echo 'set -euo pipefail' # -e matches the button; see lift-drivers-drop-errexit
|
||||||
echo "HERE=\"$T\""
|
echo "HERE=\"$T\""
|
||||||
echo 'INVLOG="$1"'
|
echo 'INVLOG="$1"'
|
||||||
sed -n '/^# -- Phase 3d/,/^# -- Phase 4/p' "$SRC/check.sh" | sed '$d'
|
sed -n '/^# -- Phase 3d/,/^# -- Phase 4/p' "$SRC/check.sh" | sed '$d'
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue