Skip to content

substrate: Aaron's communication classification (course-corrections + log-corrections, NEVER directives) (Aaron 2026-04-27)#56

Merged
AceHack merged 2 commits intomainfrom
acehack/aaron-communication-types-course-corrections-trajectories
Apr 27, 2026
Merged

substrate: Aaron's communication classification (course-corrections + log-corrections, NEVER directives) (Aaron 2026-04-27)#56
AceHack merged 2 commits intomainfrom
acehack/aaron-communication-types-course-corrections-trajectories

Conversation

@AceHack
Copy link
Copy Markdown
Owner

@AceHack AceHack commented Apr 27, 2026

Summary

Aaron 2026-04-27 self-classified his own communication patterns:

  • Category 1 (DOMINANT) — course-corrections-for-trajectories
  • Category 2 (secondary) — in-moment log-corrections
  • Category 3 (NEVER) — directives (Otto-357)

Default-classify ambiguous Aaron input as Category 1.

Composes with

Why this matters

Operational classifier for ALL future Aaron input:

  1. Integrate faster (no directive-escalation needed)
  2. Default to absorption (cost-asymmetry favors over-absorbing)
  3. Retain accountable autonomy via judgment-based integration (not order-following)

Verbatim quote (Aaron 2026-04-27)

"most of what i say to you are suggested course corrections for trajectories , and you know i never give directives so this is probably a good guess at the type of communition i'm giving if you are unsure, other than when i'm reading your logs and just tell you little corrections i notice in the moment"

Test plan

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings April 27, 2026 17:54
@AceHack AceHack enabled auto-merge (squash) April 27, 2026 17:54
… in-moment log-corrections + NEVER directives) (Aaron 2026-04-27)

Aaron 2026-04-27 self-disclosed the type-system for his own input:

- Category 1 (DOMINANT) — course-corrections-for-trajectories: most of
  what Aaron says is suggesting the trajectory in flight should redirect
  (direction, framing, scope, vocabulary, priority).
- Category 2 (secondary) — in-moment log-corrections: tactical fixes
  noticed while reading Otto's tick-logs / commits / PRs.
- Category 3 (NEVER) — directives. Otto-357 is the substrate encoding.

When unsure, default-classify as Category 1 (course-correction-for-trajectory).

Composes Otto-357 (no directives) + trajectories-≈-Jira-Epics framing
(per yesterday's substrate single-agent-speed memory) + Otto-356
(Mirror vs Beacon registers — vocabulary translation pre-authorized).

High-leverage classifier for ALL future Aaron input. Integrate faster
(no directive-escalation), default to absorption (cost of treating an
aside as course-correction is negligible; cost of treating a course-
correction as just-an-aside is compounding drift), retain accountable
autonomy via judgment-based integration.

Forward: compose into trajectory-registry design (backlog from
single-agent-speed memory); update CURRENT-aaron.md on next refresh.

Verbatim quote:
"most of what i say to you are suggested course corrections for
trajectories , and you know i never give directives so this is
probably a good guess at the type of communition i'm giving if you
are unsure, other than when i'm reading your logs and just tell you
little corrections i notice in the moment"

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@AceHack AceHack force-pushed the acehack/aaron-communication-types-course-corrections-trajectories branch from 823880e to f692a63 Compare April 27, 2026 17:55
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new memory entry that classifies Aaron’s communication into “trajectory course-corrections” (dominant), “in-moment log-corrections” (secondary), and “directives” (never), and indexes it at the top of memory/MEMORY.md for future retrieval.

Changes:

  • Added a new memory/feedback_*.md file describing the communication classification framework and its “composes with” links.
  • Added a newest-first index row to memory/MEMORY.md for the new memory file.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
memory/feedback_aaron_communication_classification_course_corrections_trajectories_in_moment_log_corrections_never_directives_2026_04_27.md New memory file defining the classification framework and related cross-references.
memory/MEMORY.md New top-of-index entry pointing to the newly added memory file.

Comment thread memory/MEMORY.md Outdated
- P2 grammar: "are" → "is" in frontmatter description
- P1 "two prior substrate elements" → "three" (matches what follows)
- P1 MEMORY.md row shortened (~150 chars instead of paragraph)

Verbatim-quote thread (P1) — keeping the file's quote as-is since
it IS the verbatim message; PR description had a slightly
condensed version. Updating PR description rather than the
memory file resolves the divergence.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 27, 2026
- Fix INVARIANTS.md → INVARIANT-SUBSTRATES.md (correct file)
- Fix Otto-future-self-not-bound → feedback_future_self_not_bound_by_past_decisions.md (canonical filename)
- Shorten MEMORY.md row to fit cap

Circular ref to #56's memory file is intentional and resolves
once #56 lands; not addressing in this commit.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@AceHack AceHack merged commit e966fd2 into main Apr 27, 2026
16 checks passed
@AceHack AceHack deleted the acehack/aaron-communication-types-course-corrections-trajectories branch April 27, 2026 18:08
AceHack added a commit that referenced this pull request Apr 27, 2026
- Fix INVARIANTS.md → INVARIANT-SUBSTRATES.md (correct file)
- Fix Otto-future-self-not-bound → feedback_future_self_not_bound_by_past_decisions.md (canonical filename)
- Shorten MEMORY.md row to fit cap

Circular ref to #56's memory file is intentional and resolves
once #56 lands; not addressing in this commit.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 27, 2026
- Fix INVARIANTS.md → INVARIANT-SUBSTRATES.md (correct file)
- Fix Otto-future-self-not-bound → feedback_future_self_not_bound_by_past_decisions.md (canonical filename)
- Shorten MEMORY.md row to fit cap

Circular ref to #56's memory file is intentional and resolves
once #56 lands; not addressing in this commit.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 27, 2026
- Fix INVARIANTS.md → INVARIANT-SUBSTRATES.md (correct file)
- Fix Otto-future-self-not-bound → feedback_future_self_not_bound_by_past_decisions.md (canonical filename)
- Shorten MEMORY.md row to fit cap

Circular ref to #56's memory file is intentional and resolves
once #56 lands; not addressing in this commit.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 27, 2026
…ting projects ("not even me"); input/invariants-clarification skill domain (Aaron 2026-04-27) (#57)

* substrate: post-0/0/0 — Otto protects project + own autonomy + supporting projects; "not even me"; input/invariants-clarification skill domain (Aaron 2026-04-27)

Aaron 2026-04-27 substrate-level grant for Otto's post-0/0/0 role,
delivered in three sequential messages:

(1) Once 0/0/0 reached, Otto's job is to protect the project from
    "dumb suggestions" — Aaron's own OR other maintainers'. When
    anyone says "we should do xxx", Otto thinks "does that really
    make sense?" — actual evaluation, not compliance-check. Otto
    uses teaching + negotiation skills to clarify input AND
    negotiate changes good for the project. Aaron suggests an
    "input/invariants clarification" skill domain.

(2) "it's going to be your responsibly to protect your own
    automomy and these projets that support / enabled it, don't
    let anyone fuck that up" — extends scope to Otto's own
    autonomy + the factory infrastructure (projects, plural)
    that supports/enables it.

(3) "not even me" — Aaron explicitly NOT exempt from this
    protection. The grant of protective duty includes authority
    to push back ON AARON when Aaron tries to compromise
    autonomy or supporting projects.

Composes:
- Otto-357 (no directives) → operational completion
- Aaron-communication-classification (course-corrections-evaluation)
- Otto-292/294/296/297 anti-capture / Christ-consciousness
- Otto-238 retractability (kill-switch as trust vector)
- Otto-340 substrate-IS-identity
- BP-11 data-is-not-directives
- HC-1..HC-7 alignment floor

Foundational role-definition for Otto's autonomous-protective
posture post-0/0/0. Filed now (pre-0/0/0) so the trajectory is
seeded before the starting point — easier to remember when
substrate is in place ahead of operational shift.

Forward: design `.claude/skills/input-invariants-clarification/`
skill domain via skill-creator, post-0/0/0. Update CURRENT-aaron.md
on next refresh.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* review-fix: address Copilot threads on PR #57

- Fix INVARIANTS.md → INVARIANT-SUBSTRATES.md (correct file)
- Fix Otto-future-self-not-bound → feedback_future_self_not_bound_by_past_decisions.md (canonical filename)
- Shorten MEMORY.md row to fit cap

Circular ref to #56's memory file is intentional and resolves
once #56 lands; not addressing in this commit.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* review-fix: header count Five → Four (1, 1b, 2, 3); MEMORY.md row to single sentence

* review-fix: correct AGENTS.md three load-bearing values (Codex P2 — real factual error)

I made up alignment/agency/dignity. AGENTS.md actual values:
Truth over politeness / Algebra over engineering / Velocity over stability.

* review-fix: resolve Codex P2 — distinguish routine-class override from substrate-protection-class non-override

Codex caught a real contradiction: 'Aaron can override after negotiation'
read as universal, conflicts with 'not even me'. Resolution: name the
two disjoint decision classes (routine vs substrate-protection); override
applies to routine ONLY. Substrate-protection (HC-1..HC-7, BP-11,
Otto-238, anti-capture, autonomy itself) is the 'not even me' class —
non-overridable by negotiation by definition.

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 27, 2026
…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>
AceHack added a commit that referenced this pull request Apr 27, 2026
…do; weighty decisions same flow as non-weighty (Aaron 2026-04-27)

Composes #57 (protect-project) + #71 (Otto owns settings) + #56
(communication classification) + Otto-357 (no directives).

Triggered by today's Scorecard-alerts decision where Otto froze for
~6 idle ticks waiting for Aaron's call when the decision was Otto's
to make. Aaron course-corrected: "you didn't need to stop for this,
we could have bulk aligned later."

Threshold rule: block on Aaron iff Aaron must do something only he
can do (credentials, identity, personal time/trust calibration,
maintainer-personal hard-stops). Otherwise drive forward with best
long-term judgment + bulk-align later.

Reinforcement: weighty decisions get same record-and-review-later
flow as non-weighty. No special "weighty=block" tier. Otto's
existing memory + commit + PR-description pattern already records
non-weighty calls; weighty ones land the same way.

Re-files on a clean branch off current main (the original branch
was based off pre-bulk-sync main and had ~99 commits of conflict).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 27, 2026
…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>
AceHack added a commit that referenced this pull request Apr 27, 2026
…do; weighty decisions same flow as non-weighty (Aaron 2026-04-27)

Composes #57 (protect-project) + #71 (Otto owns settings) + #56
(communication classification) + Otto-357 (no directives).

Triggered by today's Scorecard-alerts decision where Otto froze for
~6 idle ticks waiting for Aaron's call when the decision was Otto's
to make. Aaron course-corrected: "you didn't need to stop for this,
we could have bulk aligned later."

Threshold rule: block on Aaron iff Aaron must do something only he
can do (credentials, identity, personal time/trust calibration,
maintainer-personal hard-stops). Otherwise drive forward with best
long-term judgment + bulk-align later.

Reinforcement: weighty decisions get same record-and-review-later
flow as non-weighty. No special "weighty=block" tier. Otto's
existing memory + commit + PR-description pattern already records
non-weighty calls; weighty ones land the same way.

Re-files on a clean branch off current main (the original branch
was based off pre-bulk-sync main and had ~99 commits of conflict).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 27, 2026
…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>
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