All 17 playbook findings (P0-P3) resolved.
v0.2.0 includes enterprise hardening, workflow expansion,
multi-tenant profiles, Forms pipeline, and systemd support.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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>
- Add garc_core.py (underscore) alongside garc-core.py (hyphen);
Python cannot import a hyphenated filename as a module, causing
ModuleNotFoundError on every garc command
- Replace invalid scope people.readonly with directory.readonly
in garc-core.py and scope-map.json; people.readonly does not
exist in Google OAuth, causing error 400 invalid_scope on login
Verified working: garc gmail profile, garc calendar today,
garc gmail inbox, garc auth suggest
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>
Added explicit prerequisites section to README and quickstart,
known limitations table with planned versions, and v0.2/v0.3/v0.4
roadmap. CHANGELOG restructured with Keep a Changelog format.
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>