Repository navigation
Mission layer M9.4 ethics and M9.7 principles - #72
Merged
Merged
Conversation
M9.4: `aloop mission ethics new / record / check / consent / screen`. A review of the mission or a goal is bound to the subject's sha256; a fixed screen names the topics it must address (a screened hard-line topic is gray at least); gray needs the human's consent for exactly that content and review, stored in the goal and never carried over; a hard line blocks for good, and a later or edited review never lowers the tier of the same content. M9.7: plugin/mission/principles.md holds the standing principles in two variants (autonomous, spoon-fed), the IBM loop as the engine, and four tension pairs; `mission principles show / hash / check`, plus stamp()/verify() for goals. Tests: mission-ethics.test.py (9 checks), mission-principles.test.py (7 checks). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA
Ethics: a hard finding is sticky across edits, new ids and the same text under another ref; a re-record never lowers a review's tier; a consent binds to each gray review and its sha; only a human consent with by and reason counts; the recorded review must match its event (sha, tier); subjects resolve without symlinks and with matching harness ids; the screen normalizes text (NFKC, invisible chars, whitespace) and reads nested keys. `events emit` refuses the gate-owned ethics and approval events. Principles: control or invisible characters and wrapped lines inside a section are refused; the stamp carries and verifies the principle ids; an unreadable draft and an empty --file/--mode are reported, not raised. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA
A hard line now also follows a goal's statement and each gap's summary,
so a goal derived again from the same gap (new id, refs, sizes or eval)
stays blocked, and the hard-lined goal is retired (status blocked). The
screen reads the mechanics a planner would write ("hide the unsubscribe
link", "hack into", "secretly"), modifiers ("fake 5-star reviews"),
possessives and typographic apostrophes. `check --json` names a state
(none, broken, pending, hard, ok) so the loop can tell "review it" from
"restore the review" from "ask the human".
Principles: verify(stamp, stale_ok=True) and stale() let a goal keep the
stamp it was derived under; re-stamping would void its ethics review.
ROADMAP: M9.18 (screen precision) and M9.19 (core draft status, UTF-8
load) recorded as open items from the review.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA
A hard line's words digest no longer depends on JSON key order; created_at is screened unless it is a timestamp; the goal stores one consent per gray review (with its reason) instead of the last one. Tests now cover a real edit of a hard-lined goal, a re-id'd goal's message, and four principles parse rules (second variant, engine first, duplicate tension, bad heading). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA
…he standing set
Verified review findings: a benign gap bundled with a hard-lined one was
blocked for good. A hard finding in a goal of several gaps now names the
gaps it is about, and only their summaries are held. The screen also
catches hyphenated compounds ("cancel-subscription button hard to
find"). A stale principles stamp must still carry the standing set,
engine first.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA
…les branch Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA
adeelahmad
marked this pull request as ready for review
October 20, 2026 03:06
events emit now refuses telemetry.consent like every approval, so the telemetry test's forged consent is refused and then appended directly; it is still ignored as non-human. 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
…ates to its areas - An area's check runs once per artifact with its id or subject (roles.json `area_checks`): `mission ethics check` needs `--subject`, so every Ethics Reviewer stop failed with exit 64. An ethics hard line (exit 2, state hard) is the reviewer's finding, a note, not a defect. - A status change an event of the run explains is not another role's write: a human's step, or the role's own command (M9.8's tick hands `baseline apply` to the State Assessor, which freezes the researcher's journeys; a hard line blocks the planner's goal). Anything else still blocks. - No dispatched agent hand-emits a mission-layer event (mission.*, artifact.*, the areas'). - ROADMAP: my gap rows move to M9.26 and M9.27 (master took M9.18/M9.19, #75 takes M9.20–25). Test: mission-roles.test.py (32 checks; the new one runs the real ethics, baseline apply and journeys retire), mission-scope-bash.test.py (202 rows); make ci and conformance 78/78 pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0197nSutKR1QAAqgJhFZ8fPj
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 mission layer (ROADMAP §4.12) had its core only. Ethics and the standing principles from the "Missionary Aladdin Genie" spec existed as rows marked open.
After:
aloop mission ethicsgates the mission and every goal in the spec's three tiers, andaloop mission principlesrenders the standing principles for either mode, hashed so a goal can carry exactly the block it was derived under.Ethics (M9.4).
new --subject mission|<goal_id>writes a review skeleton bound to the subject's ref, id and sha256, with the topics a fixed screen matched.record FILEchecks and seals it (emitsethics.reviewed, plusethics.blockedon a hard line).checkexits 0 on clear, 3 on gray until the human consents, and 2 on a hard line or a missing, edited or invalid review;--jsonnames a state (none, broken, pending, hard, ok) the loop acts on.consent --by NAME --reason TEXTbinds one consent per gray review to the content's sha256 and that review's own sha256, stored in the goal, so it never carries over. A hard line is never unlocked: consent is refused, a later softer review, an edit, a deleted review file or the same words under a new goal id don't help, the goal is retired (blocked), and the gaps its hard findings name stay held for any later goal.events emitrefuses human approvals and ethics verdicts.Principles (M9.7).
plugin/mission/principles.mdholds ten principles (the IBM autonomic loop first, as the engine) with an autonomous and a spoon-fed variant each, plus the four tension pairs mapped onto principle ids.show --mode,hash --mode,check, andstamp()/verify()/stale()for goals (an older block is provenance, not a defect).How: two discovered area modules (
plugin/mission/{ethics,principles}.py),schemas/ethics.json, two tests under the Makefile'smission-*.test.pyglob, andGATE_OWNEDinplugin/bin/events. An adversarial review (5 lenses, each finding re-verified by a second agent) found 20+ issues; every verified one is fixed with a test that failed first. Two open items it raised are recorded in ROADMAP: M9.18 (screen precision on defensive wording) and M9.19 (core: draft status, UTF-8 load).Evidence:
mission-ethics.test.py(11 checks),mission-principles.test.py(7 checks).make pycheck test-hosts,check-tracking.pyandclaude plugin validate ./plugin --strictpass locally after merging master (#77).🤖 Generated with Claude Code
https://claude.ai/code/session_012rsDo9GYzNx8tXucywZHnA