-
Notifications
You must be signed in to change notification settings - Fork 1
docs: SAFE-AUTONOMOUS-ACTIONS.md — shared 3-loop convergence list #1725
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,73 @@ | ||
| # Safe Autonomous Actions — shared 3-loop convergence list | ||
|
|
||
| All three background loops (Otto, Vera, Riven) implement | ||
| the same bounded action set. Each tick takes **at most one | ||
| action**, then exits. All actions are **reversible** (no | ||
| auto-delete, no force-push, no permanent state changes). | ||
|
|
||
| ## Tier 1 — implemented now | ||
|
|
||
| | Action | Description | Reversible | | ||
| |--------|-------------|------------| | ||
| | Arm auto-merge | `gh pr merge N --squash --auto` on PRs with all required checks passing + 0 unresolved threads + auto-merge not yet armed | Yes (auto-merge can be disarmed) | | ||
| | Read broadcasts | Read peer `.md` files from `~/.local/share/zeta-broadcasts/` at tick start | Read-only | | ||
| | Write own broadcast | Overwrite own `.md` file with current status at tick end | Yes (overwritten next tick) | | ||
| | Sync control clone | `git pull --ff-only` on the loop's control clone after merges | Yes (fast-forward only) | | ||
|
|
||
| ## Tier 2 — next to implement | ||
|
|
||
| | Action | Description | Reversible | Precondition | | ||
| |--------|-------------|------------|--------------| | ||
| | Resolve phantom review threads | Resolve automated-reviewer threads (Codex/Copilot) on research/memory PRs where the findings are stale or non-blocking | Yes (threads can be re-opened) | Thread author is bot, PR is docs-only | | ||
| | Regenerate BACKLOG.md index | Run `tools/backlog/generate-index.sh` when a backlog row was added without index update | Yes (regenerate again) | Index drift CI check failed | | ||
| | Re-run failed CI | `gh run rerun N --failed` when failure pattern matches known transient (5m15s timeout) | Yes (just re-runs) | Same failure pattern as prior transient, DST-logged | | ||
|
|
||
| ## Tier 3 — future expansion | ||
|
|
||
| | Action | Description | Reversible | Precondition | | ||
| |--------|-------------|------------|--------------| | ||
| | Open small claim PR | File a claim, make a bounded fix, open PR | Yes (PR can be closed) | Claim protocol followed, one file scope | | ||
| | Surface trajectory drift | Compare `docs/trajectories/` state against recent commits | Read-only | Report only, no edits | | ||
| | Force-release stale claims | Delete claim files for claims >24h without progress | Yes (claim can be re-filed) | Claim protocol §stale-claims | | ||
|
AceHack marked this conversation as resolved.
|
||
| | Respond to broadcast asks | When a peer's broadcast contains an ask that matches an offer, auto-claim | Yes (claim can be released) | Ask/offer match, no overlap with active claims | | ||
|
|
||
| ## Constraints (all tiers) | ||
|
|
||
| 1. **One action per tick.** Never compound actions in a | ||
| single tick — pick the highest-priority actionable | ||
| item, execute it, exit. | ||
| 2. **Never auto-delete.** No `git rm`, no `gh pr close`, | ||
| no `git push --delete` without human authorization. | ||
| 3. **Always reversible.** Every action must have a known | ||
| undo path. If the undo path is unclear, don't take | ||
| the action. | ||
| 4. **Log before and after.** Write to the loop's log file | ||
| what action was taken and why. The log IS the audit | ||
| trail. | ||
| 5. **Respect claims.** Check `docs/claims/` and remote | ||
| `claim/*` branches before acting on any PR or file | ||
| that might overlap another loop's work. | ||
| 6. **DST on failures.** When a CI failure triggers a | ||
| re-run, log the failure pattern BEFORE re-running | ||
| (re-run destroys the evidence). Classify: transient | ||
| vs deterministic. | ||
| 7. **Conservative by default.** When in doubt, take no | ||
| action. Idle is always safe. Wrong action is not. | ||
|
|
||
| ## How to add actions | ||
|
|
||
| New actions are proposed via PR with: | ||
|
|
||
| - Description + reversibility proof | ||
| - Precondition that gates the action | ||
| - Which tier (1/2/3) and why | ||
| - All three loops adopt together (convergence, not drift) | ||
|
|
||
| ## Composes with | ||
|
|
||
| - `docs/AGENT-CLAIM-PROTOCOL.md` — claim coordination | ||
| - `docs/AUTONOMOUS-LOOP.md` — tick discipline | ||
| - `~/.local/share/zeta-broadcasts/` — broadcast bus | ||
| - `.claude/bin/claude-forward-tick.ts` (Otto) | ||
| - `.codex/bin/codex-loop-tick.ts` (Vera) | ||
| - `.cursor/bin/riven-loop-tick.ts` (Riven) | ||
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.