From 959b8c8871d88bed94e8332eaf7b8624b0d25944 Mon Sep 17 00:00:00 2001 From: Svrnty Date: Sun, 24 May 2026 17:32:38 -0400 Subject: [PATCH] =?UTF-8?q?fix(install):=20R1=20=E2=80=94=20COLUMNS=3D200?= =?UTF-8?q?=20+=20untruncated=20awk=20parser=20for=20hermes=20skills=20lis?= =?UTF-8?q?t=20=E2=80=94=20Wave=207.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause: hermes 0.14 table renderer truncates skill names at column width with unicode '…' suffix. Awk parser stripped '…' but couldn't recover the truncated trailing chars (e.g., 'baoyu-article-illustr…' lost 'ator'). Fix: COLUMNS=200 env prefix forces wide table render → awk sees full names. Affects both F2 (denylist write) and subrepo pre-push hook (drift check). Re-run install.sh to refresh both per-profile config.yaml denylist + .git /hooks/pre-push body. Co-Authored-By: Claude Opus 4.7 (1M context) --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index b85e67a..a64f443 100755 --- a/install.sh +++ b/install.sh @@ -123,7 +123,7 @@ elif command -v hermes >/dev/null 2>&1 && command -v yq >/dev/null 2>&1; then # Try --json first; fall back to table parse w/ box-draw chars (Wave 5 parser). ALL_BUILTINS=$(hermes skills list --json 2>/dev/null | jq -r '.[] | select(.source=="builtin") | .name' 2>/dev/null || true) if [ -z "$ALL_BUILTINS" ]; then - ALL_BUILTINS=$(hermes skills list 2>/dev/null | awk -F'│' 'NR>3 && /builtin/ {gsub(/^ +| +$/, "", $2); print $2}' || true) + ALL_BUILTINS=$(COLUMNS=200 hermes skills list 2>/dev/null | awk -F'│' 'NR>3 && /builtin/ {name=$2; gsub(/^[[:space:]]+|[[:space:]]+$/, "", name); gsub(/…$/, "", name); print name}' || true) fi ALLOWLIST_BUILTIN=$(yq -r '.disclosure.skills[] | select(.source=="builtin") | .id' "$REPO/manifest.yaml" 2>/dev/null | sort -u) if [ -z "$ALL_BUILTINS" ]; then @@ -270,7 +270,7 @@ PY # 6.a skills drift if command -v hermes >/dev/null 2>&1; then declared=$(yq -r '.disclosure.skills[].id' "$REPO_ROOT/manifest.yaml" 2>/dev/null | sort -u) - live=$(hermes -p "$PROFILE_NAME" skills list 2>/dev/null | awk 'NR>3 && /enabled|│ *enabled/ {for (i=1; i<=NF; i++) if ($i != "│" && $i != "enabled") {print $i; break}}' | sort -u || echo "") + live=$(COLUMNS=200 hermes -p "$PROFILE_NAME" skills list 2>/dev/null | awk -F'│' 'NF>=6 && $(NF-1) ~ /enabled[[:space:]]*$/ {name=$2; gsub(/^[[:space:]]+|[[:space:]]+$/, "", name); gsub(/…$/, "", name); if (name ~ /^[a-z]/) print name}' | sort -u || echo "") if [ -n "$live" ]; then drift=$(diff <(echo "$declared") <(echo "$live") 2>/dev/null || true) [ -n "$drift" ] && fail "skills drift: $drift"