CLAUDE.md declares mirror parity CRITICAL, but the entire issue layer under .agent/scripts/ has drifted from plugins/autocoder/scripts/. The Antigravity /fix workflow is broken end to end as a result.
The mirror calls verbs its own library does not define
.agent/workflows/fix.md calls three verbs that .agent/scripts/issue-fns.sh never defines:
| verb |
called at |
defined in .agent? |
issue_any_claimable |
fix.md:320 |
❌ |
issue_claim |
fix.md:532, fix.md:648 |
❌ |
issue_release |
fix.md:575, fix.md:681, fix.md:1479 |
❌ |
Verified live:
$ source .agent/scripts/issue-fns.sh
defined: issue_list
defined: issue_get
MISSING: issue_claim
MISSING: issue_release
MISSING: issue_any_claimable
Consequence: Antigravity /fix exits at preflight, every run
fix.md:319-323:
issue_any_claimable
case $? in
0) ;; # work exists; fall through
1) echo "No claimable issues. Nothing to do."; exit 0 ;;
*) echo "Backend error while checking for claimable issues"; exit 1 ;;
Undefined function → exit 127 → falls to *) → exit 1. The workflow never reaches any issue. This is not a degraded path; /fix on Antigravity cannot run at all.
Second break: --state blocked is unsupported
.agent's _ifns_gh_list passes --state straight through to gh:
$ source .agent/scripts/issue-fns.sh; issue_list --state blocked --limit 2
invalid argument "blocked" for "-s, --state" flag: valid values are {open|closed|all}
That breaks .agent/workflows/list-needs-feedback.md:43 and .agent/workflows/approve-proposal.md:85.
Third: no backend-level blocking-label filter
.agent's inline _ifns_gh_list applies no label exclusion at all — it never had the no:label bug from #57 because it has no filter whatsoever. Per the 9-verb contract, list --state open is supposed to mean "claimable". The command-layer jq/python filters happen to compensate today, but the backend contract is not honoured.
Scope of the drift
| file |
status |
issues-gh.sh |
absent from .agent/ entirely |
issues-file.py |
438 differing lines; lacks claim/release/any-claimable and the bucket layout (3 bucket refs vs 30) |
issue-fns.sh |
180 differing lines; inline gh impl vs dispatcher |
issue-config.sh |
4 differing lines |
.agent/scripts/issues-file.py was last touched 2026-05-19; the plugins copy has moved on since.
Fix
Sync the issue layer forward — these are meant to be identical shared infrastructure, and the plugins copy is the maintained one (it implements the full 9-verb contract the mirror's own workflows already assume):
- copy
issues-gh.sh into .agent/scripts/
- replace
.agent/scripts/issue-fns.sh with the dispatcher version
- refresh
.agent/scripts/issues-file.py and issue-config.sh
Then assert all 9 verbs resolve and --state blocked works.
Out of scope, noted
.agent/workflows/fix.md.backup and fix-loop.md.backup are stale editor backups committed to git.
🤖 Found by autonomous fix workflow
CLAUDE.md declares mirror parity CRITICAL, but the entire issue layer under
.agent/scripts/has drifted fromplugins/autocoder/scripts/. The Antigravity/fixworkflow is broken end to end as a result.The mirror calls verbs its own library does not define
.agent/workflows/fix.mdcalls three verbs that.agent/scripts/issue-fns.shnever defines:.agent?issue_any_claimablefix.md:320issue_claimfix.md:532,fix.md:648issue_releasefix.md:575,fix.md:681,fix.md:1479Verified live:
Consequence: Antigravity /fix exits at preflight, every run
fix.md:319-323:Undefined function → exit 127 → falls to
*)→exit 1. The workflow never reaches any issue. This is not a degraded path;/fixon Antigravity cannot run at all.Second break:
--state blockedis unsupported.agent's_ifns_gh_listpasses--statestraight through togh:That breaks
.agent/workflows/list-needs-feedback.md:43and.agent/workflows/approve-proposal.md:85.Third: no backend-level blocking-label filter
.agent's inline_ifns_gh_listapplies no label exclusion at all — it never had theno:labelbug from #57 because it has no filter whatsoever. Per the 9-verb contract,list --state openis supposed to mean "claimable". The command-layer jq/python filters happen to compensate today, but the backend contract is not honoured.Scope of the drift
issues-gh.sh.agent/entirelyissues-file.pyclaim/release/any-claimableand the bucket layout (3 bucket refs vs 30)issue-fns.shissue-config.sh.agent/scripts/issues-file.pywas last touched 2026-05-19; the plugins copy has moved on since.Fix
Sync the issue layer forward — these are meant to be identical shared infrastructure, and the plugins copy is the maintained one (it implements the full 9-verb contract the mirror's own workflows already assume):
issues-gh.shinto.agent/scripts/.agent/scripts/issue-fns.shwith the dispatcher version.agent/scripts/issues-file.pyandissue-config.shThen assert all 9 verbs resolve and
--state blockedworks.Out of scope, noted
.agent/workflows/fix.md.backupandfix-loop.md.backupare stale editor backups committed to git.🤖 Found by autonomous fix workflow