Root cause: bin/garc uses set -euo pipefail. Any command substitution
$(...) that returns exit 1 caused the entire garc process to exit
immediately with no output, making errors look silent.
Fixes:
- ingress.sh: add || true to all _find_queue_file $() assignments
so set -e does not silently kill the process on missing queue items
- ingress.sh: _ingress_update_status returns 1 silently (callers
print their own error); _ingress_done/fail print "Queue item not
found" exactly once
- ingress.sh: _ingress_next result also guarded with || true
- drive.sh: garc drive info with no args now shows GARC workspace
folder info instead of printing usage and exiting
- garc-core.py: replaced 210-line duplicate with a 3-line re-export
from garc_core.py to prevent future divergence
Verified: verify/done/fail all print clear error on bad ID (exit 1),
drive info no-arg shows workspace folder, no regressions.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
_ingress_update_status returns 1 when queue file not found, but
_ingress_done and _ingress_fail were ignoring the return code and
printing success messages anyway. Now both commands propagate the
error with a clear message: "Queue item not found: <id>"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ingress.sh: pass status-update note via argv instead of triple-quoted
heredoc to prevent Python syntax error when note contains quotes
- ingress.sh: warn clearly when AGENT_CONTEXT.md missing (bootstrap
not run) instead of silent failure in garc ingress context
- daemon.sh: replace export$(xargs) with set -a/source/set +a so
config.env values containing spaces are loaded correctly
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Permission-first AI agent runtime for Google Workspace.
Ports the LARC/OpenClaw governance model (disclosure chain,
execution gates, queue/ingress) to Gmail, Calendar, Drive,
Sheets, Tasks, and People APIs with Claude Code as the
execution engine.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>