fix: tool bugs found in review audit

repl:  env var was dead code (hardcoded 2s), empty frame gave misleading error
check-tangle: show full SBCL output on compile failure, not filtered
verify-repl: blacklist now configurable via VERIFY_REPL_EXCLUDE env var;
  regex tightened to ';; +REPL-VERIFIED:' from ';;.REPL.VERIFIED:' (ambiguous)
org-eval: 1-based indexing to match repl-block; errors on out-of-range; errors on <1
This commit is contained in:
2026-05-13 13:09:50 -04:00
parent 34b26a4fde
commit 18b289dff8
4 changed files with 32 additions and 9 deletions

View File

@@ -69,7 +69,7 @@ if echo "$OUTPUT" | grep -q ":OK"; then
echo "OK: $ORG_FILE compiles cleanly" >&2
exit 0
else
echo "$OUTPUT" | grep -v '^;' | grep -v '^$' | head -5
echo "FAIL: $ORG_FILE — compilation error" >&2
echo "$OUTPUT"
exit 1
fi

View File

@@ -1,14 +1,16 @@
#!/usr/bin/env bash
# Evaluate an org src block using Emacs batch mode
# Usage: org-eval <org-file> [block-index]
# If block-index is not provided, evaluates all blocks
# block-index is 1-based (first block = 1).
# If omitted, evaluates ALL blocks.
set -e
if [ $# -lt 1 ]; then
echo "Usage: org-eval <org-file> [block-index]"
echo " Evaluates src blocks in the org file"
echo " If block-index is omitted, evaluates ALL blocks"
echo " block-index is 1-based (first block = 1)"
echo " If omitted, evaluates ALL blocks"
exit 1
fi
@@ -23,15 +25,23 @@ fi
echo "Evaluating: $ORG_FILE"
if [ -n "$BLOCK_INDEX" ]; then
# 1-based indexing: subtract 1 for Emacs' dotimes (0-based)
if [ "$BLOCK_INDEX" -lt 1 ]; then
echo "Error: block-index must be 1 or greater" >&2
exit 1
fi
SKIP=$((BLOCK_INDEX - 1))
# Evaluate specific block
emacs --batch \
--load org \
--eval "(setq org-confirm-babel-evaluate nil)" \
--eval "(with-current-buffer (find-file-noselect \"$ORG_FILE\") \
(goto-char (point-min)) \
(dotimes (_ $BLOCK_INDEX) \
(dotimes (_ $SKIP) \
(org-babel-next-src-block)) \
(org-babel-execute-src-block))"
(if (org-in-src-block-p t) \
(org-babel-execute-src-block) \
(error \"Block $BLOCK_INDEX not found\")))"
else
# Evaluate all blocks
emacs --batch \

View File

@@ -30,7 +30,7 @@ my $sock = IO::Socket::INET->new(
PeerHost => $HOST,
PeerPort => $PORT,
Proto => "tcp",
Timeout => 2
Timeout => $TIMEOUT
) or die "Cannot connect to $HOST:$PORT: $!\n";
sub read_frame {
@@ -58,7 +58,11 @@ write_frame($sock, $msg);
# Read response
my $response = read_frame($sock);
if ($response) {
if (defined $response) {
if ($response eq "") {
print STDERR "Daemon returned empty response\n";
exit 1;
}
if ($response =~ /:VALUE "([^"]*)"/s) {
print "$1\n";
} elsif ($response =~ /:message "([^"]*)"/s) {

View File

@@ -22,7 +22,9 @@ VIOLATIONS=0
FILES_CHECKED=0
# Blacklist: files exempt from REPL verification (core infrastructure, tests)
BLACKLIST=(
# Override with $VERIFY_REPL_EXCLUDE (space-separated filenames).
# Example: VERIFY_REPL_EXCLUDE="setup.org package.lisp" verify-repl org/
DEFAULT_BLACKLIST=(
"core-defpackage.org"
"core-manifest.org"
"core-skills.org"
@@ -31,6 +33,12 @@ BLACKLIST=(
"setup.org"
)
if [ -n "${VERIFY_REPL_EXCLUDE:-}" ]; then
IFS=' ' read -ra BLACKLIST <<< "$VERIFY_REPL_EXCLUDE"
else
BLACKLIST=("${DEFAULT_BLACKLIST[@]}")
fi
is_blacklisted() {
local fname
fname=$(basename "$1")
@@ -75,7 +83,8 @@ check_file() {
def_count=0
has_repl_verify=0
# Check for REPL-VERIFIED comment on previous line(s)
if echo "$prev_line" | grep -qE ';;.REPL.VERIFIED:'; then
# Matches ";; REPL-VERIFIED:" or ";; REPL-VERIFIED:" etc.
if echo "$prev_line" | grep -qE ';; +REPL[-_]VERIFIED:'; then
has_repl_verify=1
fi
# Check for prose requirement: was there a headline before this block?