ltl-accumulator-verified/verification/run_bare.sh

43 lines
2.4 KiB
Bash
Raw Normal View History

Review round 4: F1* absorbed (lied-size boundary), acceptCons_sound, kit reproducibility Round-3 verdicts: GPT-5.6 conditionally approves (blockers closed, one portability finding); the Claude reviewer's Socratic addendum produced F1*, the strongest finding of the series — deployed verify_consistency and mechanized ConsRec are NOT extensionally equal. Reproduced exactly (witness verify_consistency(1,3,R2,R3,P(2→3))=True vs ConsRec reject; 3,405 divergences n<60; strictly one-sided; power-of-two seeding mechanism confirmed in source). - KNOWN-GAPS gap 14: witness, mechanism, one-sidedness, and the pinned-pair side condition under which Theorem 3 transfers to the deployed verifier (pacta's pin-store flow supplies it by construction). No pacta code change; deployed behavior matches upstream RFC 9162 implementations. - fidelity: lied-size family — 73,573 boundary cases, 3,867 expected divergences PINNED, one-sided direction asserted per case. Banner rescoped: agreement over pinned families, not extensional equality. - Theorem3.lean: acceptCons_sound (F2) — soundness over the named acceptCons predicate, n₀=0 discharged from the non-prefix premise, size bound derived from acceptance via new consRec_some_le. Cones read from #print axioms; CONES/AxiomCheck/allowlist updated (218 → 222 constants, diff = the two theorems + two generated auxiliaries). - F3/GPT§7: verification/lean-toolchain pin + run_bare.sh (reviewer's standalone runner, plain public lean — verified green: 61 cones, 222 constants, gate green) + AENEAS_ENV override in check.sh and selftest_audit.sh. - F4: awk field-equality replaces regex-with-dots in Phase 3b. - F5: git-tracked .pyc removed (worse than reported — it was in the repo, not just the kit); __pycache__ gitignored; round-4 kit ships a corpus MANIFEST.sha256 + pinned commit (also GPT's governance condition). check.sh exit 0, ATTESTATION GREEN; selftest exit 0, 9/9 + control. Live LTL untouched (12 leaves, bcd15f9d…); attestation still gated on ePrint decision + author review + explicit operator order. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 13:07:57 +00:00
#!/usr/bin/env bash
# ─────────────────────────────────────────────────────────────────────────────
# run_bare.sh — REVIEWER's standalone runner (review round 3, Claude F3).
#
# Compiles, axiom-audits, and inventory-gates the corpus with a plain
# public `lean` binary — no lake, no Aeneas checkout, no operator
# environment. The corpus is Mathlib-free and needs only the toolchain
# pinned in ./lean-toolchain (elan users: `elan default $(cat lean-toolchain)`
# or run inside this directory and let elan pick it up).
#
# This runner exists so a reviewer can go from "trust the transcripts"
# to "run the button" on any machine. It is NOT the operator's button:
# check.sh remains the release gate (memory-guarded lean-guard, cone
# table, fidelity phase, ATTESTATION marker). This script covers the
# kernel-facing phases only: compile, #print-axioms audit, inventory
# gate.
# ─────────────────────────────────────────────────────────────────────────────
set -euo pipefail
HERE="$(cd "$(dirname "$0")" && pwd)"
command -v lean >/dev/null || { echo "FATAL: no 'lean' on PATH (want $(cat "$HERE/lean-toolchain"))"; exit 1; }
echo "toolchain: $(lean --version)"
echo "pinned: $(cat "$HERE/lean-toolchain")"
export LEAN_PATH="${LEAN_PATH:+$LEAN_PATH:}$HERE/gen:$HERE"
echo "=== compile (gen + 9 proof modules) ==="
( cd "$HERE/gen" && lean -o LTLAcc/HashExternal.olean LTLAcc/HashExternal.lean )
cd "$HERE"
for m in Basic Completeness Extract Descent Consistency Binding3 Refactor Theorem3 PinStore; do
echo " · Proofs/$m"
lean -o "Proofs/$m.olean" "Proofs/$m.lean"
done
echo "=== axiom audit (#print axioms, compare against check.sh CONES yourself) ==="
lean Proofs/AxiomCheck.lean | tee bare-axcheck.out | grep -c "depends on axioms\|does not depend" \
| xargs -I{} echo " {} cone lines printed (full output: bare-axcheck.out)"
echo "=== inventory gate (environment == allowlist) ==="
lean Proofs/Inventory.lean > bare-inventory.out
"$HERE/inventory_gate.sh" bare-inventory.out "$HERE/inventory-allowlist.txt"
echo "=== BARE RUN GREEN (compile + axiom print + inventory gate) ==="