8000 Mission loop end to end offline (M9.13); a baseline binds the direction (M9.25); ethics rows in the ledger (M9.24) by adeelahmad · Pull Request #91 · adeelahmad/aloop · GitHub
[go: up one dir, main page]

Skip to content

Mission loop end to end offline (M9.13); a baseline binds the direction (M9.25); ethics rows in the ledger (M9.24) - #91

Merged
adeelahmad merged 3 commits into
masterfrom
claude/mission-layer-plan-6re55w
Oct 20, 2026
Merged

adeelahmad merged 3 commits into
masterfrom
claude/mission-layer-plan-6re55w

Conversation

@adeelahmad
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Before: nothing ran the mission layer end to end. Each area had its own suite, but no test proved that mission tick could take a new mission all the way to a met goal. Two gaps also showed up on the way:

  • Raising a mission's budget cap re-approved the mission and so asked for a whole new baseline version, though nothing about "best" had changed.
  • A fresh clone lost every ethics review and hard line, because they lived only in the git-ignored run log.

After: mission-e2e.test.py drives the whole loop offline with zero tokens. Each step is the action mission tick hands out, done through the CLI the way its role or the human does it:

CONFIRM_MISSION → ETHICS_REVIEW → RESEARCH → DEFINE_JOURNEYS → BASELINE → CONFIRM_BASELINE → ASSESS → EVALUATE → DERIVE_GOAL → ETHICS_REVIEW (goal) → PLAN_INTENTS → SPRINT → WAIT → SPRINT → WAIT → ASSESS → EVALUATE → GOAL MET → goal close → RESEARCH (raise the bar)

A raised budget keeps the confirmed baseline, and a fresh clone hands out the same action.

How:

  • M9.25, a baseline binds the mission's direction. M.direction(mission) hashes mission_id, statement, mode and constraints. A baseline and its state carry direction_sha256. A new budget, deadline or cadence keeps the baseline once the mission is approved again. A new direction still asks for a new version, and an unapproved mission decides nothing.
  • M9.24, ethics part. ethics.reviewed and ethics.blocked are written with M.record, so they are ledger rows. Ethics reads M.history(cwd): the ledger's intact rows, plus the run-log events that are not ledger rows. A run-log copy of a ledger row is ignored, whatever it says. ethics.verdict returns broken (exit 2) while the ledger has any problem, so nothing decides from what is left of a cut chain. Open in M9.24: the --force grant and mission.budget_exhausted. Core agent principles and the one-way / two-way door rule (M9.30, M9.38); hard-lined goals retire (M9.29) #86 also moves ethics to the ledger; whichever lands second keeps the stricter rule.
  • Skill. /aloop:mission now says how a grant is made: relay the exact they reply line, and once the human has typed it, run the command the ASK names after "then" (a spoon-fed pick names goal approve).
  • M9.13, offline part. The e2e uses the real research CLI (research new / archive --file / claim / check), and the real Aladdin sprint boundaries: goal next, then ids freeze (which records plan.created for the normalized intent), then stats sprint-close.

Adversarial review before opening (3 reviewers, each finding re-checked by a skeptic). Confirmed and fixed here, each with a test that failed first:

  • An edited run-log line with the same event_id replaced an intact ledger row, which cleared a hard line in the checkout. Now the ledger row wins (mission-ethics check 13).
  • A ledger cut mid-chain let an earlier clear review pass on a fresh clone. Now every verdict is broken (check 13).
  • The skill's "run the same command again" re-derived a new goal on a spoon-fed pick. Reworded, and mission-skill checks it against the messages the CLI prints.

Refuted or out of scope: a raised budget voiding an active goal is older than this diff; it is now ROADMAP M9.43.

Evidence

  • mission-e2e.test.py: 8 checks, 3 of 3 repeat runs green locally.
  • mission-baseline.test.py check 5 (M9.25). mission-ethics.test.py check 12 (a run log moved aside decides the same) and check 13 (the ledger decides).
  • Every mission-*.test.py passes locally on master with Mission layer M9.9: the six fixed roles, their wiring and two gates #74 (15 suites, including mission-roles 32 and mission-scope-bash), plus make pycheck, make json, make version-check, make test-hosts and check-tracking (78 requirements).

Generated by Claude Code

…on (M9.25); ethics rows in the ledger (M9.24)

- mission-e2e.test.py drives `mission tick` from a new mission through
  research, a journey, a confirmed baseline, a gap list, a goal, its intents
  and one sprint per intent to GOAL MET and RESEARCH, with zero tokens.
- A baseline and its state carry direction_sha256 = M.direction(mission),
  so a new budget, deadline or cadence keeps the confirmed baseline.
- ethics.reviewed/ethics.blocked are ledger rows; M.history reads the
  ledger first (a run-log copy of a row is ignored) and a broken ledger
  makes every ethics verdict broken.
- The mission skill relays the human's grant line and the command the
  ASK names after "then".
- ROADMAP M9.43: a goal should bind the direction too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018RxETAY6S1gcmdctBK8a8Z
@adeelahmad adeelahmad self-assigned this Oct 20, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.
8000
com>
Claude-Session: https://claude.ai/code/session_018RxETAY6S1gcmdctBK8a8Z
@adeelahmad
adeelahmad merged commit 6515f52 into master Oct 20, 2026
5 checks passed
adeelahmad pushed a commit that referenced this pull request Oct 20, 2026
…M9.24/M9.25) into the dsh host

README takes the new front page and adds DeepSeek Harness to its host
list, install notes, harness table, CI notes and limitations.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AiLhAWTRtwbgMCDQNJUbea
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