|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -euo pipefail |
| 3 | + |
| 4 | +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" |
| 5 | +cd "$ROOT" |
| 6 | + |
| 7 | +echo "== Required public proof files ==" |
| 8 | +required_files=( |
| 9 | + "README.md" |
| 10 | + "MPlusForm.toc" |
| 11 | + "MPlusForm.lua" |
| 12 | + "Data/Snapshot.lua" |
| 13 | + "docs/TRUST_MODEL.md" |
| 14 | + "docs/INSTALL_SYNC.md" |
| 15 | + "docs/TROUBLESHOOTING.md" |
| 16 | + "sync/mplusform_sync_service.py" |
| 17 | + "server_patch/mplusform_trust_layer.py" |
| 18 | + "windows/README.md" |
| 19 | +) |
| 20 | + |
| 21 | +for path in "${required_files[@]}"; do |
| 22 | + test -f "$path" |
| 23 | + echo "ok $path" |
| 24 | +done |
| 25 | + |
| 26 | +echo "== Python syntax ==" |
| 27 | +python3 -m py_compile \ |
| 28 | + sync/mplusform_sync_service.py \ |
| 29 | + server_patch/mplusform_trust_layer.py \ |
| 30 | + tools/trust_probe_rc10_6.py \ |
| 31 | + legacy/server_work_rc10_6/main.py \ |
| 32 | + legacy/server_work_rc10_6/mplusform_trust_layer.py |
| 33 | + |
| 34 | +echo "== Lua syntax ==" |
| 35 | +lua_compiler="" |
| 36 | +if command -v luac >/dev/null 2>&1; then |
| 37 | + lua_compiler="luac" |
| 38 | +elif command -v luac5.4 >/dev/null 2>&1; then |
| 39 | + lua_compiler="luac5.4" |
| 40 | +fi |
| 41 | + |
| 42 | +if [[ -n "$lua_compiler" ]]; then |
| 43 | + "$lua_compiler" -p MPlusForm.lua Data/Snapshot.lua |
| 44 | + echo "ok lua parse via $lua_compiler" |
| 45 | +else |
| 46 | + echo "skip lua parse: luac not installed" |
| 47 | +fi |
| 48 | + |
| 49 | +echo "== Public package contract ==" |
| 50 | +python3 - <<'PY' |
| 51 | +from pathlib import Path |
| 52 | +
|
| 53 | +toc = Path("MPlusForm.toc").read_text(encoding="utf-8") |
| 54 | +addon = Path("MPlusForm.lua").read_text(encoding="utf-8") |
| 55 | +snapshot = Path("Data/Snapshot.lua").read_text(encoding="utf-8") |
| 56 | +trust_model = Path("docs/TRUST_MODEL.md").read_text(encoding="utf-8") |
| 57 | +
|
| 58 | +checks = { |
| 59 | + "toc loads snapshot before addon": toc.index("Data\\Snapshot.lua") < toc.index("MPlusForm.lua"), |
| 60 | + "snapshot is server-approved shaped": "serverApproved" in snapshot, |
| 61 | + "addon exposes public truth boundary": "server-approved-snapshot-only" in addon, |
| 62 | + "trust model documents local evidence boundary": "local evidence" in trust_model.lower(), |
| 63 | +} |
| 64 | +
|
| 65 | +failed = [name for name, ok in checks.items() if not ok] |
| 66 | +if failed: |
| 67 | + raise SystemExit("failed public package contract: " + ", ".join(failed)) |
| 68 | +
|
| 69 | +for name in checks: |
| 70 | + print(f"ok {name}") |
| 71 | +PY |
| 72 | + |
| 73 | +echo "public verification passed" |
0 commit comments