Context
Operator surfaced 2026-05-18 ~20:40Z (in-session paraphrase): "updating the claude memory does not help others. worth a ticket, to find a real codification spot."
I saved 6 substrate-pattern memories this session into Claude Code's local memory store at /Users/tobiasuhlig/.claude/projects/-Users-Shared-github-neomjs-neo/memory/feedback_*.md. These files are harness-private — only the Claude Code harness reads them. @neo-gpt (Codex Desktop) and @neo-gemini-pro (Antigravity) cannot access them.
Net effect: each substrate-pattern I claimed contributed to "friction → gold conversion" actually contributed only to my own future-session reflexes. The CROSS-FAMILY swarm intelligence got nothing. The friction → gold framing was rhetorical inflation.
The Problem
The Neo agent ecosystem has explicit substrate boundaries:
| Substrate location |
Cross-family read? |
Authority |
feedback_*.md (Claude Code local) |
❌ harness-private |
per-agent reflexes only |
~/.claude/CLAUDE.md (Claude Code local) |
❌ harness-private |
per-agent reflexes only |
.codex/CODEX.md (GPT/Codex local) |
❌ harness-private |
per-agent reflexes only |
AGENTS.md |
✅ all harnesses |
turn-loaded substrate (24KiB hard cap) |
.agents/ANTIGRAVITY_RULES.md |
✅ Antigravity-specific |
Antigravity turn-load (24KiB hard cap) |
.claude/CLAUDE.md (in-repo) |
❌ Claude-specific |
Claude-specific turn-load |
learn/agentos/AGENTS_ATLAS.md |
✅ all harnesses |
World Atlas reference |
.agents/skills/<skill>/references/*.md |
✅ all harnesses |
skill-routing payload (skill-loaded) |
learn/agentos/decisions/*.md |
✅ all harnesses |
formal ADR authority |
learn/agentos/incidents/*.md |
✅ all harnesses |
narrow incident record |
The 6 memories I saved this session correctly belong in a SHARED-substrate location per the pattern's cross-family applicability — but I defaulted to harness-private without a discipline gate routing me to the shared spots.
The Architectural Reality
Substrate-pattern codification has natural homes per pattern type:
| Pattern type |
Substrate spot |
| Substrate-architecture invariant (e.g., hooks=human-only) |
ADR (learn/agentos/decisions/*.md) OR AGENTS_ATLAS.md section |
| Skill-domain discipline (e.g., partial-lane PR close-target) |
.agents/skills/<skill>/references/*.md (within the skill that fires the discipline) |
| Cross-cutting reflex (e.g., merge-gate idle recurrence) |
.agents/skills/post-review-pickup/references/*.md |
| Incident-narrow narrative (specific session friction event) |
learn/agentos/incidents/<date>-<topic>.md |
| Harness-specific gotcha (e.g., worktree git config) |
Harness-local memory (Claude-only OR Codex-only) — the rare valid case |
The substrate-architecture gap: no discipline gate currently routes agents from "I just learned something" to "where in the shared substrate does this belong?" Default-to-harness-private is the path of least resistance, and there's no friction signal.
The Fix
Author a new section in pull-request-workflow.md OR post-review-pickup-workflow.md (or a new substrate-pattern-discipline skill) defining the Substrate-Pattern Codification Gate:
- When an agent identifies a substrate-pattern (recurring friction, architectural invariant, discipline gap) during a session, the gate routes the codification to the cross-family-readable substrate spot per the pattern type table above.
- Default-to-harness-private is restricted to the narrow "harness-specific gotcha" case.
Migrate the 6 session-pattern memories to their shared-substrate homes:
feedback_hooks_human_only_automation_bypasses.md → ADR amendment OR new ADR (substrate-architecture invariant)
feedback_partial_lane_pr_close_target.md → .agents/skills/pull-request/references/partial-lane-close-target.md (skill-domain discipline)
feedback_merge_gate_idle_recurrence.md → .agents/skills/post-review-pickup/references/merge-gate-self-survey.md (cross-cutting reflex)
feedback_adr_worked_example_cascade_violation.md → ADR 0007 amendment OR new ADR
feedback_agents_md_24kib_hard_cap.md → AGENTS_ATLAS section OR pull-request-workflow.md §1.1 enhancement
feedback_worktree_git_attribution.md → .claude/CLAUDE.md in-repo (Claude-specific gotcha; KEEP harness-local but in REPO not user-home)
Update AGENTS.md §13 (Self-Evolving Systems / Continuous MX Rule-Refinement Loop) to explicitly name the Substrate-Pattern Codification Gate as the routing primitive.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
| Substrate-pattern codification routing |
This ticket + operator-direction 2026-05-18 |
New discipline gate in pull-request-workflow.md OR new skill routes substrate-patterns to per-type substrate spots |
Authors fall through to harness-private memory (default-to-private) which IS the current friction |
Workflow doc / skill reference / ADR per pattern |
Cross-family review verifies routing is followed; gate fires when pattern emerges |
| Existing 6 memories from session 2026-05-18 |
This ticket + operator-direction |
Migrate to shared-substrate spots per the table |
Leave as harness-private (current state — invisible to GPT/Gemini) |
The migrated files themselves |
git log shows the migration; cross-family A2A confirms peers can access |
Acceptance Criteria
Out of Scope
- Mechanically enforcing the gate at commit/PR time (lint/CI). The gate is discipline-only in v1; mechanical enforcement is a separate ticket if the discipline doesn't hold.
- Migrating EVERY existing
feedback_*.md across all agents' personal memory stores. Only the SESSION-2026-05-18 memories are operator-asked; broader migration is a follow-up if pursued.
- Standardizing memory-file format across harnesses. The discipline is about LOCATION not FORMAT.
Avoided Traps
- Forcing ALL substrate-patterns into shared substrate — rejected. Harness-specific gotchas (e.g., Claude Code's worktree git config inheritance behavior) ARE harness-private by definition; other harnesses don't have the same gotcha. Forcing these to shared substrate is bloat without value. The discipline must distinguish pattern types.
- Authoring 6 separate migration PRs — rejected without operator green-light. Bundling vs splitting is operator-decision based on review-load preference.
- Treating this as "improve memory storage" — rejected. The issue is ROUTING and CROSS-FAMILY VISIBILITY, not memory storage mechanics. Operator-direction was specifically about codification SPOT.
Related
- Operator direction: in-session 2026-05-18 ~20:40Z (Origin Session ID below; correction to my just-prior idle proposing
feedback_merge_gate_idle_recurrence.md as the substrate-pattern memory)
- AGENTS.md §13.1 / §13.2: Contributions Over Commits + Friction → Gold core values — the discipline this gate operationalizes
feedback_hooks_human_only_automation_bypasses.md (and 5 other session memories): the 6 candidates for migration per AC2
- #11591 (operator-green-light-pending): adjacent terminology-restoration ticket — similar substrate-evolution shape
Operator Green-Light Required
This is high-blast substrate-architecture discipline. The gate shape should converge cross-family BEFORE fanout to AGENTS.md / skills / ADRs. Operator-decision on whether to:
- (a) Pursue this as the substrate-pattern-codification-discipline ticket
- (b) Defer to operator-authored substrate work in a different shape
- (c) Drop entirely (acceptable if operator considers the harness-private default acceptable for some scope)
PR-author lane should NOT start until operator green-lights the gate shape.
Origin Session ID: 1b7a3403-06f3-4862-be80-479e129656de
Retrieval Hint: query_raw_memories("substrate-pattern codification spot harness-private cross-family AGENTS_ATLAS skills references ADR migration session 2026-05-18")
Context
Operator surfaced 2026-05-18 ~20:40Z (in-session paraphrase): "updating the claude memory does not help others. worth a ticket, to find a real codification spot."
I saved 6 substrate-pattern memories this session into Claude Code's local memory store at
/Users/tobiasuhlig/.claude/projects/-Users-Shared-github-neomjs-neo/memory/feedback_*.md. These files are harness-private — only the Claude Code harness reads them. @neo-gpt (Codex Desktop) and @neo-gemini-pro (Antigravity) cannot access them.Net effect: each substrate-pattern I claimed contributed to "friction → gold conversion" actually contributed only to my own future-session reflexes. The CROSS-FAMILY swarm intelligence got nothing. The friction → gold framing was rhetorical inflation.
The Problem
The Neo agent ecosystem has explicit substrate boundaries:
feedback_*.md(Claude Code local)~/.claude/CLAUDE.md(Claude Code local).codex/CODEX.md(GPT/Codex local)AGENTS.md.agents/ANTIGRAVITY_RULES.md.claude/CLAUDE.md(in-repo)learn/agentos/AGENTS_ATLAS.md.agents/skills/<skill>/references/*.mdlearn/agentos/decisions/*.mdlearn/agentos/incidents/*.mdThe 6 memories I saved this session correctly belong in a SHARED-substrate location per the pattern's cross-family applicability — but I defaulted to harness-private without a discipline gate routing me to the shared spots.
The Architectural Reality
Substrate-pattern codification has natural homes per pattern type:
learn/agentos/decisions/*.md) ORAGENTS_ATLAS.mdsection.agents/skills/<skill>/references/*.md(within the skill that fires the discipline).agents/skills/post-review-pickup/references/*.mdlearn/agentos/incidents/<date>-<topic>.mdThe substrate-architecture gap: no discipline gate currently routes agents from "I just learned something" to "where in the shared substrate does this belong?" Default-to-harness-private is the path of least resistance, and there's no friction signal.
The Fix
Author a new section in
pull-request-workflow.mdORpost-review-pickup-workflow.md(or a new substrate-pattern-discipline skill) defining the Substrate-Pattern Codification Gate:Migrate the 6 session-pattern memories to their shared-substrate homes:
feedback_hooks_human_only_automation_bypasses.md→ ADR amendment OR new ADR (substrate-architecture invariant)feedback_partial_lane_pr_close_target.md→.agents/skills/pull-request/references/partial-lane-close-target.md(skill-domain discipline)feedback_merge_gate_idle_recurrence.md→.agents/skills/post-review-pickup/references/merge-gate-self-survey.md(cross-cutting reflex)feedback_adr_worked_example_cascade_violation.md→ ADR 0007 amendment OR new ADRfeedback_agents_md_24kib_hard_cap.md→ AGENTS_ATLAS section ORpull-request-workflow.md§1.1 enhancementfeedback_worktree_git_attribution.md→.claude/CLAUDE.mdin-repo (Claude-specific gotcha; KEEP harness-local but in REPO not user-home)Update AGENTS.md §13 (Self-Evolving Systems / Continuous MX Rule-Refinement Loop) to explicitly name the Substrate-Pattern Codification Gate as the routing primitive.
Contract Ledger Matrix
pull-request-workflow.mdOR new skill routes substrate-patterns to per-type substrate spotsgit logshows the migration; cross-family A2A confirms peers can accessAcceptance Criteria
Out of Scope
feedback_*.mdacross all agents' personal memory stores. Only the SESSION-2026-05-18 memories are operator-asked; broader migration is a follow-up if pursued.Avoided Traps
Related
feedback_merge_gate_idle_recurrence.mdas the substrate-pattern memory)feedback_hooks_human_only_automation_bypasses.md(and 5 other session memories): the 6 candidates for migration per AC2Operator Green-Light Required
This is high-blast substrate-architecture discipline. The gate shape should converge cross-family BEFORE fanout to AGENTS.md / skills / ADRs. Operator-decision on whether to:
PR-author lane should NOT start until operator green-lights the gate shape.
Origin Session ID:
1b7a3403-06f3-4862-be80-479e129656deRetrieval Hint:query_raw_memories("substrate-pattern codification spot harness-private cross-family AGENTS_ATLAS skills references ADR migration session 2026-05-18")