Repository navigation
gramatico-loop: approved issues become pull requests, as pirsig-2nd-brain - #3
Merged
Merged
Conversation
…rain One step at a time: wait on the open pull request, repair it, or start the next issue. A code owner's label starts work, the harness checks the diff, the repository's CI is the checker, and a person merges. Attempts are comments posted before the model runs, capped per issue and per day, and a setting cannot raise a limit past its ceiling. Off without the App's credentials, so it can ship before the App exists. The model edits a copy with file tools only, and its git directory lives outside the model's reach: a hook or core.fsmonitor in repo/.git would run as code in a pod that holds the App's key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fake GitHub gains issue events, labels and runs by commit, and each gate, rejection and repair has a scenario. 123 checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
What
agent gramatico-loopruns one step of a loop on piabrota/gramatico: a code owner labels an issue, the model edits a copy, the harness checks the diff, gramatico's CI is the checker, and a person merges. A failed check gets a repair on the same branch. At the attempt cap, it stops and asks a person.It acts as a new GitHub App, pirsig-2nd-brain, that a maintainer still has to create. Until then it logs that it is off and exits 0, so this is safe to merge first. The README has the full design and the setup steps.
Design
loop/pronto, added by someone inLOOP_APPROVERS, on an issue by a trusted author. The author matters because anyone can edit their own issue after the label.AGENTS.md, locks, dependency manifests and the plugin's binaries and hooks stay with people. Also rejected: deleted files, symlinks, binaries, fewer tests, fewer⚠, and a document without its mirror.loop/pareon any open issue.mainhas no required review. The App has noworkflowsoradministrationpermission.Security:
.gitis out of the model's reachThe model has file tools. A hook or
core.fsmonitorwritten intorepo/.gitwould run as code when the harness callsgit add, in a pod that holds the App's key. So the git directory moves outside the model's directory, and every git call names it. A test plants both. With the protection removed (a mutation run), exactly that test fails.⚠
deploy-doctorandmirror-keeperstill rungit addinside a.gitthe model'sEdittool may reach. They have noWrite, but.git/configalready exists. Whether Claude Code's own protections block this was not checked, and this PR does not change them. It needs a look.What came from ouroboric
The README has the table. Taken: hard gates no config can switch off, attempts capped against the "flaky test all night" failure, a checker that is not the agent grading itself, protected paths and the shrink guard, a bot with no merge rights, and never arming auto-merge without a required approval.
lib/github-app.shalready minted tokens the wayas-bot.shdoes.Not taken: the graph engine, a sandboxed implementer that can run the build, and a separate reviewer model. Nothing can be built in this pod, so a wrong change only meets CI and a person.
Other changes
lib/common.sh,lib/github-app.sh: two error messages now name the App in use, notpiabrota-ops.test/fake_github.py: issue events, labels, runs by commit, closed pull requests.Tested
test/run.sh: 123 checks pass, inubuntu:24.04on arm64.shellcheck,shfmt,ruffand radon pass.claude. The loop has never run against the real Claude Code or real GitHub.claude --helpat 2.1.316 shows no turn limit, so the only limit inside a run isLOOP_TIMEOUT(1200 s).Before the first label
apps/pirsig-2nd-brain.jsonand install it on gramatico only.PIRSIG_APP_IDandPIRSIG_APP_PRIVATE_KEY_B64toagents.env.loop/prontoandloop/pareto gramatico'sISSUE_LABELS.md.main: today it has no branch protection, and the App will have contents write.🤖 Generated with Claude Code