betrusted-ed25519-verified/verification
mrwulf 32a21f7d9f lift-guard: close all nine classes the reviewer demonstrated
Round-8 review (Claude, register key `lift-guard-regex-both-directions`).
Every class reproduced here before fixing, and re-tested after.

THREE FALSE NEGATIVES — the payload reads a name and the guard stayed silent,
which is the direction that costs something, because silence is what the tool
exists to prevent:

  echo $((X + 1))     arithmetic expansion reads X without a `$` before the
  (( Y > 0 ))         name, and the read pattern cannot match it: the
                      character after `$` is `(`. Both contexts are now
                      tokenised. `if [ $((inm + ins)) -eq 0 ]` is already live
                      at check.sh:464 — not lifted today, so latent, not absent.

  n=Q; ${!n}          indirect expansion defeats text analysis outright. The
                      guard now REFUSES the lift rather than passing it. Its
                      contract is "does not miss a dependency"; where it cannot
                      honour that it must say so, not shrug.

SIX FALSE POSITIVES — the driver defines the name and the guard cried wolf.
This direction matters too: a guard that raises false alarms gets edited away,
and then it guards nothing.

  case x in a) FOO=1 ;;      `)` added to the assignment delimiters
  if …; else FOO=1; fi       `else` added
  ! FOO=1                    `!` added
  mapfile -t FOO             binds a name with no `=` at all
  readarray -t FOO           likewise
  printf -v FOO "x"          likewise

The banner also over-claimed. It read as a completeness statement about
LIFTING; it is a completeness statement about VARIABLES. A lifted payload also
inherits functions, shell options, traps and a working directory, and this tool
models none of them — loud failures under `set -e`, but the header now says so
rather than implying otherwise.

Verified: all nine classes behave correctly, a genuine missing variable is
still caught by name, and the seven lifting self-tests pass in dalek plus the
four fast ones in each ported fork.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-03 13:14:20 +02:00
..
gen correspondence: a named section is not a namespace; an extra axiom is a failure 2026-08-02 21:29:54 +02:00
Proofs audit: bind the scalar statements, and make the accounting identity mean audit 2026-08-03 12:15:26 +02:00
AUDIT-MANIFEST.txt verification: bind the statements, the specifications, and the model (P1-a) 2026-07-29 00:38:22 +02:00
check-scalar.sh audit: bind the scalar statements, and make the accounting identity mean audit 2026-08-03 12:15:26 +02:00
check.sh audit: bind the scalar statements, and make the accounting identity mean audit 2026-08-03 12:15:26 +02:00
CurveField.llbc PHASE 2 COMPLETE ON BETRUSTED: THE FULL POINT-LEVEL LIFT 2026-07-06 01:53:39 +02:00
CurveSig.llbc PHASE 2 COMPLETE ON BETRUSTED: THE FULL POINT-LEVEL LIFT 2026-07-06 01:53:39 +02:00
driver-allowlist.txt audit: bind the scalar statements, and make the accounting identity mean audit 2026-08-03 12:15:26 +02:00
extract.sh P2-c: classify and pin the extraction boundary 2026-07-31 17:53:31 +02:00
GEN-MODEL.sha256 correspondence: a named section is not a namespace; an extra axiom is a failure 2026-08-02 21:29:54 +02:00
HARNESS.sha256 lift-guard: close all nine classes the reviewer demonstrated 2026-08-03 13:14:20 +02:00
inventory-allowlist-scalar.txt audit: bind the scalar statements, and make the accounting identity mean audit 2026-08-03 12:15:26 +02:00
inventory-allowlist.txt verification: pin the whole declaration surface (P1-b) 2026-07-30 01:20:20 +02:00
inventory_gate.sh audit: bind the scalar statements, and make the accounting identity mean audit 2026-08-03 12:15:26 +02:00
lean-guard Coherence pass 3: post-apex accuracy sweep, hygiene, guard ladder 2026-07-05 11:48:20 +02:00
lift-guard.sh lift-guard: close all nine classes the reviewer demonstrated 2026-08-03 13:14:20 +02:00
model-correspondence.py correspondence: a named section is not a namespace; an extra axiom is a failure 2026-08-02 21:29:54 +02:00
MODEL-CORRESPONDENCE.txt correspondence: a named section is not a namespace; an extra axiom is a failure 2026-08-02 21:29:54 +02:00
SCALAR-AUDIT-MANIFEST.txt audit: bind the scalar statements, and make the accounting identity mean audit 2026-08-03 12:15:26 +02:00
selftest-auditonly.sh verification: --audit-only mode, and the guard that keeps it from becoming evidence (T1) 2026-07-30 19:16:21 +02:00
selftest-axgate.sh verification: derive lift dependencies instead of hand-keeping them 2026-08-02 13:07:28 +02:00
selftest-correspondence.sh verification: derive lift dependencies instead of hand-keeping them 2026-08-02 13:07:28 +02:00
selftest-harness.sh verification: derive lift dependencies instead of hand-keeping them 2026-08-02 13:07:28 +02:00
selftest-inventory.sh verification: pin the whole declaration surface (P1-b) 2026-07-30 01:20:20 +02:00
selftest-scalar-statements.sh audit: bind the scalar statements, and make the accounting identity mean audit 2026-08-03 12:15:26 +02:00
selftest-shapes.sh verification: derive lift dependencies instead of hand-keeping them 2026-08-02 13:07:28 +02:00
selftest-statements.sh verification: derive lift dependencies instead of hand-keeping them 2026-08-02 13:07:28 +02:00
selftest-tiers.sh verification: derive lift dependencies instead of hand-keeping them 2026-08-02 13:07:28 +02:00