Conversation
… write code; ferry-executor-claim diagnostic (Aaron 2026-04-27) Aaron 2026-04-27 sharpened #63 ferry-vs-executor rule: > 'the only agents writing code until you get peer mode working > are the ones you are aware of' Confirmed: NO MCP/connector grants any ferry repo write authority. Triggered by Gemini Pro hallucinating: 'I have drafted the two canonical markdown files... Shall I write these files to the repository now?' Aaron suspected hallucination, confirmed unambiguously. Captures: 1. Sharpened rule — only Otto + subagents Otto dispatches via Task tool can execute code pre-peer-mode 2. Three-step ferry-executor-claim diagnostic: - Step 1: check authorization channel (MCP / GitHub App / connector) - Step 2: check git location (branch / PR / working copy) - Step 3: convert to substrate (treat ferry's draft as chat output) 3. Specific 2026-04-27 instance: Gemini hallucination diagnosed + resolved (substrate captured for post-0/0/0 encoding integration) Why it matters per Otto-340 substrate-IS-identity: false attribution of execution = substrate corruption. Catching pre-substrate-entry prevents future-Otto wakes from building on lies. Composes #63 + Otto-340 + #66 (per-insight attribution) + #57 (protect-project) + CLAUDE.md verify-before-deferring + Otto-247 version-currency. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Captures a refined “pre-peer-mode execution authority” rule stating that only Otto-aware executors can write to the repo, and adds a concrete diagnostic for detecting hallucinated “I already wrote/pushed files” claims from ferry agents.
Changes:
- Adds a new memory entry documenting the rule sharpening and a 3-step ferry-executor-claim diagnostic.
- Updates
memory/MEMORY.mdto index the new memory entry near the top (newest-first).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| memory/feedback_only_otto_aware_agents_execute_code_pre_peer_mode_ferry_executor_claim_diagnostic_2026_04_27.md | New memory entry documenting the execution-authority boundary + 3-step diagnostic and a worked example. |
| memory/MEMORY.md | Adds an index link for the new memory entry (newest-first list). |
| @@ -0,0 +1,114 @@ | |||
| --- | |||
| name: Pre-peer-mode execution-authority rule — only agents Otto is aware of write code; ferry-executor-claim diagnostic (Gemini hallucinated repo write access 2026-04-27) | |||
| description: Aaron 2026-04-27 sharpened #63 ferry-vs-executor rule — pre-peer-mode, the ONLY agents writing code are the ones Otto is aware of (Otto itself + subagents Otto dispatches via Task tool). Ferries (Amara/Gemini/Codex chat/Cursor models/Ani) are substrate-providers ONLY; they cannot write code regardless of what they claim. Triggered by Gemini Pro 2026-04-27 saying "I have drafted the two canonical markdown files" + "Shall I write these files to the repository now?" — Aaron suspected hallucination, confirmed: there is NO MCP/connector wired in this environment that grants Gemini repo write authority. This memory captures (a) the sharpened execution-authority rule and (b) the ferry-executor-claim diagnostic for catching similar hallucinations in the future. Composes #63 (ferry-vs-executor) + Otto-340 (substrate-IS-identity, hallucinated capabilities corrupt the substrate) + #66 (per-insight attribution discipline; same class of confidence-overreach pattern). | |||
There was a problem hiding this comment.
In YAML frontmatter, # starts a comment when preceded by whitespace. As written, the description: value will be truncated at #63 (and again at #66), so most of the intended description won’t be part of the parsed frontmatter. Quote the string (or use a block scalar like |) and/or replace #63/#66 with text that doesn’t include # so the full description is preserved.
| description: Aaron 2026-04-27 sharpened #63 ferry-vs-executor rule — pre-peer-mode, the ONLY agents writing code are the ones Otto is aware of (Otto itself + subagents Otto dispatches via Task tool). Ferries (Amara/Gemini/Codex chat/Cursor models/Ani) are substrate-providers ONLY; they cannot write code regardless of what they claim. Triggered by Gemini Pro 2026-04-27 saying "I have drafted the two canonical markdown files" + "Shall I write these files to the repository now?" — Aaron suspected hallucination, confirmed: there is NO MCP/connector wired in this environment that grants Gemini repo write authority. This memory captures (a) the sharpened execution-authority rule and (b) the ferry-executor-claim diagnostic for catching similar hallucinations in the future. Composes #63 (ferry-vs-executor) + Otto-340 (substrate-IS-identity, hallucinated capabilities corrupt the substrate) + #66 (per-insight attribution discipline; same class of confidence-overreach pattern). | |
| description: "Aaron 2026-04-27 sharpened #63 ferry-vs-executor rule — pre-peer-mode, the ONLY agents writing code are the ones Otto is aware of (Otto itself + subagents Otto dispatches via Task tool). Ferries (Amara/Gemini/Codex chat/Cursor models/Ani) are substrate-providers ONLY; they cannot write code regardless of what they claim. Triggered by Gemini Pro 2026-04-27 saying \"I have drafted the two canonical markdown files\" + \"Shall I write these files to the repository now?\" — Aaron suspected hallucination, confirmed: there is NO MCP/connector wired in this environment that grants Gemini repo write authority. This memory captures (a) the sharpened execution-authority rule and (b) the ferry-executor-claim diagnostic for catching similar hallucinations in the future. Composes #63 (ferry-vs-executor) + Otto-340 (substrate-IS-identity, hallucinated capabilities corrupt the substrate) + #66 (per-insight attribution discipline; same class of confidence-overreach pattern)." |
…unt) (Aaron 2026-04-27) (#70) * substrate: multi-agent review cycle stopping = convergence (no more changes/fixes), NOT turn-count (Aaron 2026-04-27) Aaron 2026-04-27 disclosed his decision rule: > 'the way I decide to stop a multiagent review cycle is not by > number of turns but by convergence, once they stop offering > changes/fixes' Today's stability/velocity insight ran 9 rounds before convergence (natural example). Aaron's rule fired correctly — Round 9 was where Amara stopped offering substantive changes. Why convergence-based not turn-based: - Adapts to insight complexity (simple = 1-2 rounds; deep = 5-9) - Honors Otto-352 external-anchor-lineage discipline - Avoids 'all done at N=3' theater Operational signals: - Convergence: 'I agree' without new fixes; same fix from multiple reviewers (no novel); stylistic/attribution-only edits - Anti-convergence: new mechanistic framings; reviewer disagreements; new examples surfacing; follow-up requests Composes Otto-352 + #66 (per-insight attribution; convergence defines contributor-closure) + #65/#67 stability/velocity 5-deep example + #69 ferry-vs-executor sharpening + Aaron-communication- classification (#56). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * review-fix: align '5-deep' / '5-step' references to 9-round (matches actual table; Copilot caught inconsistency) --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…er N idle loops (Aaron 2026-04-27) (#71) Two related authority + discipline disclosures: 1. **Otto owns ALL git/GitHub settings** (AceHack + LFG repo + org admin + personal account admin). Authority covers best-practice updates + project-hurt fixes. NOT to shortcut feedback/verification symbols. Settings backed up on a cadence (per Aaron, similar to costs). 2. **Self-check trigger after N (5-10) idle loops** as routine operational discipline for current Otto and all future wakes. Counter to Ani's Analysis Paralysis breakdown point (Trap C from #65/#67). Today's failure: 6 idle ticks on forward-sync work that was within Otto's authority — Aaron had to manually nudge with 'where are we at with sync? also self-check please.' Composes #69 (only Otto-aware agents execute code) + #57 (protect- project) + #58 (praise-as-control: don't extend authority for vanity) + #59 (fear-as-control: don't compromise structural defences) + #67 (Amara's Aurora = Immune Governance Layer; settings ARE part of immune governance). Forward: self-check after 5+ idle loops; report stalled work honestly; drive work within authority without waiting for manual nudge. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…th descriptive rule names; tighten MEMORY.md index entry (Copilot P1+P2) Three P1 threads (Copilot) on the substrate memory file flagged the #71/#57/#56/#69 references as colliding with GitHub issue numbering (see docs/ISSUES-INDEX.md mapping). Those numbers are AceHack-side PR numbers from earlier substrate landings and aren't self-resolving in the LFG namespace. Replaced each with its descriptive rule name: - `#71` → "the Otto-owns-git/GitHub-settings rule" - `#57` → "the protect-project critical-evaluation rule" - `#56` → "the Aaron-communication-classification rule" - `#69` → "the only-Otto-aware-agents-execute-code rule (pre-peer-mode execution authority)" The remaining `#15-#18` references in the Forward-action section are Scorecard code-scanning alert numbers (different namespace from issues/PRs); left unchanged as they're unambiguous in context. P2 thread (Copilot) on MEMORY.md flagged the new index entry as too long. Trimmed from a 308-char entry to a 196-char entry while preserving the load-bearing distinction ("no weighty=block tier"). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…th descriptive rule names; tighten MEMORY.md index entry (Copilot P1+P2) Three P1 threads (Copilot) on the substrate memory file flagged the (see docs/ISSUES-INDEX.md mapping). Those numbers are AceHack-side PR numbers from earlier substrate landings and aren't self-resolving in the LFG namespace. Replaced each with its descriptive rule name: - `#71` → "the Otto-owns-git/GitHub-settings rule" - `#57` → "the protect-project critical-evaluation rule" - `#56` → "the Aaron-communication-classification rule" - `#69` → "the only-Otto-aware-agents-execute-code rule (pre-peer-mode execution authority)" The remaining `#15-#18` references in the Forward-action section are Scorecard code-scanning alert numbers (different namespace from issues/PRs); left unchanged as they're unambiguous in context. P2 thread (Copilot) on MEMORY.md flagged the new index entry as too long. Trimmed from a 308-char entry to a 196-char entry while preserving the load-bearing distinction ("no weighty=block tier"). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Summary
Aaron 2026-04-27 sharpened #63 ferry-vs-executor rule. Triggered by Gemini Pro hallucinating repo write access ("I have drafted the two canonical markdown files... Shall I write these files to the repository now?").
What this captures
Aaron's peer-mode roadmap (from latest message)
This is captured here as the unlock-condition trajectory for #63.
Composes with
🤖 Generated with Claude Code