Repository navigation
Mission goals and the Aladdin handoff (M9.11) - #79
Merged
Merged
Conversation
aloop mission goal options / derive / check / approve / intents / next / close / show turn the Evaluator's gap list (M9.10) into goals bound to the mission, the eval, the principles block and the Aladdin autonomy, gate them on ethics, and hand each gap off as an Intent Contract (intent new --source mission --goal --gap). events trace walks a commit back through intent, goal, eval, ethics and mission to its approver. A review (each finding re-verified) found forgeable records and gates that did not tie a goal to its derivation; all verified findings are fixed with tests: state.assessed, eval.completed and intent.received are gate-owned and carry the content sha256, goal check / intents / next / close require the goal.derived content, derive takes only the latest eval, close only an active goal, the intent tool runs the goal gate, and a hard line holds its gaps by id as well as by words. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA
… under /private) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA
Master (#78) made state.assessed, goal.derived and goal.met ledger events and the Evaluator reads a goal's activity from the ledger. goal.py now records goal.derived and goal.met with M.record (subject: the goal file), reads its derived record from the ledger, refuses to decide past a broken ledger, and leaves the state.assessed check to evaluate's own problems(). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA
adeelahmad
pushed a commit
that referenced
this pull request
Oct 20, 2026
…eck gets its id A derived goal's check waits on its ethics review, which is the Ethics Reviewer's step: area_checks marks those blocks foreign, so the planner's stop notes them instead of blocking. Gap rows renumbered to M9.30/M9.31. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0197nSutKR1QAAqgJhFZ8fPj
adeelahmad
pushed a commit
that referenced
this pull request
Oct 20, 2026
… waits for the human's typed line Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018RxETAY6S1gcmdctBK8a8Z
This was referenced Oct 20, 2026
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: the Evaluator (M9.10) produced a gap list, ethics (M9.4) and principles (M9.7) existed, but nothing turned gaps into work. A mission could measure itself and stop there.
After:
aloop mission goal deriveturns the latest evaluation's gaps into a goal,goal checkgates it on the mission's approval and on mission and goal ethics,goal intentshands each gap to Aladdin as an Intent Contract (intent new --source mission --goal --gap, zero tokens),goal nextfeeds them one sprint at a time, andgoal closemarks the goal met once an evaluation of it says so.events tracewalks a commit back through intent → goal → eval → ethics → mission → the human who approved it.Modes. Autonomous takes the top 3 gaps (in M9.10's own order: regressions, then closest to target). Spoon-fed offers them (
goal options) and the human's--pick … --by NAMEis the goal's approval. The goal carries the principles block for its mode and maps the mode to Aladdin's autonomy (spoon-fed → reviewed).Hardening (from an adversarial review, each finding re-verified). Every verified finding is fixed with a test that failed first:
state.assessed,eval.completedandintent.receivedare gate-owned and carry the content sha256, soevents emitcannot forge the records a goal is derived and closed from. A hand-written state thatmission evaluateaccepted is still refused.goal check,intents,nextandclosehold a goal to the content itsgoal.derivedrecorded: a crafted or edited-and-resealed goal file is never handed off or closed.derivetakes only the latest eval;closeonly an active goal (a blocked goal never closes; a second close is a no-op).intent.received, and in the goal's autonomy.goal nextmakes the intent it hands off the newest file, so gate-intake and the sprint's plan link the right gap.Merged with master (#78).
goal.derivedandgoal.metare now ledger records (M.record, subject: the goal file), which is what the Evaluator'sactive_goalreads;deriveandcloserefuse to decide past a broken ledger, and "already met" is read from thegoal.metrecord, not the status field.How: one area module (
plugin/mission/goal.py),schemas/goal.json, the intent tool'smissionsource,events trace, and one field each inassess/evaluate(the sha256 on their events).Evidence:
mission-goal.test.py(13 checks, on the real journeys → baseline → assess → evaluate pipeline, now also asserting the ledger rows). The new gates were mutation-tested: deleting any of them fails a check. After the merge:make pycheck test-hostsexit 0,claude plugin validate ./plugin --strictpasses.🤖 Generated with Claude Code
https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA