Repository navigation
A project stop survives a fresh clone: the stop is a mission ledger row (M10.4) - #116
Merged
Merged
Conversation
…ssion ledger rows (M10.4) With a mission ledger, `aloop stop` and `aloop stop --clear` also append hash-chained ledger rows, and the stop flag reader falls back to the ledger's newest stop row, so a clone (another machine, a scheduled run) is refused by the hooks and answered STOPPED by mission tick until the human clears it there. project-stop.test.py check 8 (red on master). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015QxyVf3NgwsgRyYpBgDDTC
adeelahmad
marked this pull request as ready for review
October 20, 2026 18:09
adeelahmad
pushed a commit
that referenced
this pull request
Oct 20, 2026
…sh-clone stop) into the M9.31 branch ROADMAP: the M9 row keeps this branch's done/open lists and adds M9.42 (done in #114) and M9.48 (open); the M10 row takes master's fresh-clone stop and says the OpenCode plugin exports ALOOP_AGENT_SHELL since M9.31. aloop.js: the SubagentStart comment names both the core principles and the artifact gate's per-task start. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA
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.
Requested by Adeel · project thread
Before:
aloop stopset a flag in.aladdin/state/STOP, which is git-ignored run data. A fresh clone, such as another machine or a scheduled mission run, did not see it and ran as if nothing had been stopped.After: in a project with a mission ledger, the stop and its clear are also hash-chained ledger rows (
run.stopped,run.resumed). A clone is refused by the hooks on every host and gets STOPPED frommission tickuntil the human runsaloop stop --clearin their own terminal there. That clear is a ledger row as well. This closes the last open item for M10.4 ("recorded as a ledger row like the budget stop").How:
_stop.readfalls back toledger_stop, which reads the ledger's newest stop or resume row. It counts only intact rows, and it parses the ledger only when the file contains"run.stopped", because this check runs on every tool call.run.stoppedandrun.resumedare added toLEDGER_EVENTS.stopwrites the row through_mission.record, which also emits the event, so each stop still produces exactly one event.--clearrefuses to run and says to restore the ledger. The local flag still stops the project.Evidence:
scripts/test/project-stop.test.pycheck 8 fails on master (no ledger row) and passes now.--clearis refused in an agent shell, the human's clear works, and the original checkout keeps its own stop until it is cleared there.make ci: 82/82 checks pass.Generated by Claude Code