8000 Mission goals and the Aladdin handoff (M9.11) by adeelahmad · Pull Request #79 · adeelahmad/aloop · GitHub
[go: up one dir, main page]

Skip to content

Mission goals and the Aladdin handoff (M9.11) - #79

Merged
adeelahmad merged 4 commits into
masterfrom
claude/m9-ethics-principles-goals-a6hfmm
Oct 20, 2026
Merged

adeelahmad merged 4 commits into
masterfrom
claude/m9-ethics-principles-goals-a6hfmm

Conversation

@adeelahmad
@adeelahmad adeelahmad commented Oct 20, 2026 •
Copy link
Copy Markdown
Owner

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 derive turns the latest evaluation's gaps into a goal, goal check gates it on the mission's approval and on mission and goal ethics, goal intents hands each gap to Aladdin as an Intent Contract (intent new --source mission --goal --gap, zero tokens), goal next feeds them one sprint at a time, and goal close marks the goal met once an evaluation of it says so. events trace walks 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 NAME is 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.completed and intent.received are gate-owned and carry the content sha256, so events emit cannot forge the records a goal is derived and closed from. A hand-written state that mission evaluate accepted is still refused.
  • goal check, intents, next and close hold a goal to the content its goal.derived recorded: a crafted or edited-and-resealed goal file is never handed off or closed.
  • derive takes only the latest eval; close only an active goal (a blocked goal never closes; a second close is a no-op).
  • The intent tool runs the goal gate for a mission intent, checks it against its own intent.received, and in the goal's autonomy.
  • A hard ethics line holds its gaps by id as well as by words, so the loop moves on instead of re-deriving them.
  • goal next makes 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.derived and goal.met are now ledger records (M.record, subject: the goal file), which is what the Evaluator's active_goal reads; derive and close refuse to decide past a broken ledger, and "already met" is read from the goal.met record, not the status field.

How: one area module (plugin/mission/goal.py), schemas/goal.json, the intent tool's mission source, events trace, and one field each in assess/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-hosts exit 0, claude plugin validate ./plugin --strict passes.

🤖 Generated with Claude Code

https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA

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
@adeelahmad adeelahmad self-assigned this Oct 20, 2026
… 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
adeelahmad merged commit d93f95f into master Oct 20, 2026
5 checks passed
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0