Repository navigation
✨ [feat] lanes: headless Build, QA and Review on Antigravity (run --agy) - #83
Draft
danielegaleazzi92 wants to merge 6 commits into
Draft
danielegaleazzi92 wants to merge 6 commits into
danielegaleazzi92 wants to merge 6 commits into
Conversation
…g host - super-board-host.sh answers agy on ANTIGRAVITY_AGENT=1 (observed on agy 1.4.6), after the Codex ids and OPENCODE, before CLAUDECODE; SUPER_BOARD_HOST and config host take agy - setup check accepts host agy; schema, onboard and run-workflow name it (no lane backend yet: the run halts like opencode) - docs/hosts.md: agy row, detection step and env evidence; tests for the sign, the override, the config key and the empty/id-only cases Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…vity (--hosts agy) - hooks/agy-hook-adapter.py translates Antigravity PreToolUse payloads, runs the unchanged guard-*.py and answers deny/ask/allow; hooks/agy-hooks.json wires it - install.sh --hosts agy: entry merged into .agents/hooks.json (other entries kept, --protect-push with --protect-main and kept on re-install, python on Windows), host detected from config/host.sh/an existing entry, no link folder, adapter not counted as a guard - scripts/super-board-agy-permissions.py writes the lane profile (command/read_file/write_file * + deny rules for dangerous forms and secret paths) or --from-allowlist regex rules; dry run, --apply with backup - tests: test-agy-hook-adapter.sh, test-agy-permissions.sh, test-install.sh scenario 25; CLAUDE.md install contract Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- the agy install line names it, the SCRIPTS list did not carry it Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This was referenced Oct 23, 2026
danielegaleazzi92
force-pushed
the
feat/agy-lane
branch
from
October 23, 2026 20:28
e5fa211 to
aba9e99
Compare
…ithout one - agy 1.4.6 rewrites its settings.json with a UTF-8 BOM and then loads permissions=<nil>: every lane tool call denied until the file is rewritten; --apply now strips it (test 7) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…run --agy) - scripts/super-board-agy-lane.sh: brief file + `agy -p --output-format json --json-schema`, model from --agy=/agy.model/agy.ladder, effort from agy.effort or the tier x grade ladder (review high; none when the slug names one), agy.timeout; result = structured_output validated like the Codex lane; raw run kept under inflight/ on failure; quota exhaustion halts (79); denied_actions named in detail - scripts/super-board-codex-wave.sh takes --codex|--agy and picks the launcher and router (agy.router_model at effort low); process groups and bash resolution work on Windows; super-board-agy-wave.sh is the entry point - super-board-skills-ready.py knows host agy (.agents/skills up to the repo root, .claude/skills, ~/.agents/skills) - config-schema: agy block and usage_fallback agy; tests: fake_agy fixture, test-agy-lane.sh, test_agy_lane_schema.py Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… not stdin - a PowerShell here-string was the one form the lane kept using for it and the permission check kept refusing; the brief now names .claude/super-board/inflight/agy-<n>-<lane>.card.json, removed with the brief Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
danielegaleazzi92
force-pushed
the
feat/agy-lane
branch
from
October 23, 2026 20:28
aba9e99 to
7687885
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
⏳ Draft · slice 3 of #80 (Antigravity host) · stacked on #82 (which stacks on #81): merge in order, the diff shows the earlier slices until then
Problem
scripts/super-board-codex-wave.sh, the lane launchers,scripts/super-board-skills-ready.py/super-board run --agy: there is no lane launcher that speaksagy -p, and the wave engine only knows Codexusage_fallback: "agy")Solution
scripts/super-board-agy-lane.sh, the Codex lane's twin: same brief, same lane schema, same exit protocol (9 / 10 / 79 / 78 / 1); the brief goes in a file underinflight/andagy -pgets a pointer (Windows caps a command line at 8 KB) and so does the card JSON, which the brief hands to the first skills check as a file rather than via stdin (a here-string was the one shell form the lane kept reaching for);--output-format json --json-schema <lane schema> --print-timeout <agy.timeout>; the result is the run'sstructured_output, checked with the sameconformsas Codex. Model:--agy=<model>>agy.model>agy.ladder[tier][grade]> CLI default. Effort:agy.effort> reviewhigh>AGY_EFFORT[tier][grade]; a slug that already names an effort (gemini-3.8-flash-low) gets no--effort, since agy refuses the pair. Over quota (RESOURCE_EXHAUSTED, exit 3) is a halt (79), not a failure;denied_actionsare named indetailwith the permissions command; any other non-result fails closed and keeps the raw run underinflight/agy-<n>-<lane>.last.jsonscripts/super-board-codex-wave.shtakes--codex|--agyand picks the launcher and the router (agy.router_modelat--effort low, else the CLI default); process groups and the bash lookup now work on Windows too (taskkill /T, andshutil.which('bash')because a barebashresolves to WSL's before PATH there).scripts/super-board-agy-wave.shis the entry point that adds--agy; the PID marker, stop path and reconcile contract are sharedscripts/super-board-skills-ready.py --host agy:.agents/skillsfrom the cwd up to the repository root, the project's.claude/skills(the brief tells lanes to read them) and~/.agents/skillsconfig-schema.json: theagyblock (model,ladder,effort,timeout,router_model) andusage_fallback: "agy";install.shships the two scriptstests/fixtures/fake_agy.py(prints the one JSON line agy 1.4.6 prints),tests/test-agy-lane.sh(consent, precedence, ladders, slug rule, failures, wave routing, router, halts, the workflow's summary keys),tests/test_agy_lane_schema.py(pins the lane schema toSTAGE_SCHEMA)Acceptance criteria
--agy(78); the brief pins the reviewed head to the merge gate and forbidsinvoke_subagent↳ verified:
tests/test-agy-lane.shhigh, an effort suffix in the slug suppresses--effort,agy.timeoutreaches--print-timeout↳ verified:
tests/test-agy-lane.shladder table (9 cells) and slug case; live on Windows with the fixture against a real repo: build lane--model gemini-3.8-flash --effort high --print-timeout 60mstructured_outputfails with the raw run kept; run statusERRORfails with its error; quota exhaustion halts (79); denied tool calls are named; every malformed result is refused and valid ones print unchanged↳ verified:
tests/test-agy-lane.shqalabels skip Build, a pinned model skips the router, the router usesagy.router_modelat--effort low, halts stop dispatch (79 / 9), the summary carries the workflow's keys↳ verified:
tests/test-agy-lane.sh; live on Windows: one cardbuild:advanced → qa:advanced → review:advancedwith effortslow, low, highon--tier low, and a quota runreview:halted, exit 79, no PID marker or lock leftinstall.sh --hosts agy --protect-main), agy 1.4.6 /gemini-3.8-flashon Windows 11, 2026-10-23: card feat: dynamic-workflow worker backend (worker_backend: "workflow") #3 of the playground went Ready → Done, ✨ [feat] cart: clearCart empties the cart and drops its discount danielegaleazzi92/super-board-agy-playground#4 (squashcc1b8ef), Build 8.5 min, QA + Review 19 min, every lane returning a valid structured result. The one lane that failed in between was denied on its first command because agy had rewritten its own settings file with a UTF-8 BOM and loaded no permissions from it; the helper now strips it (✨ [feat] install: guard hooks and permissions for Antigravity (agy) #82).gemini-3.8-flash(✨ [feat] host: run the board on Google Antigravity (agy) #80, ✨ [feat] cart: percentage discount applied to the total danielegaleazzi92/super-board-agy-playground#2); the two lane-result losses seen there (work done, nostructured_output) are what the raw-run file is forIteration history
Risk
🟡 Medium · a new backend; the shared wave engine changes for Codex too.
kill_groupandBASHare the only shared lines)super-board-codex-wave.shfor every Codex run (covered bytest-codex-lane.shandtest-codex-wave-contract.sh, unchanged) · the new lane path for Antigravity runs onlyPart of #80 (slice 3 of 4), stacked on #82. Note on tests: written on Windows Git Bash, where the stubbed
ghof these suites cannot be executed by Windows Python (the same reasontest-codex-lane.shexits 79 there onmain), sotest-agy-lane.shwas exercised piecewise against a real repository with the fixture; the schema pin passes; the CI matrix is the check for the suite.🤖 Generated with Claude Code