Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -543,6 +543,42 @@ Claude-Code-specific mechanisms.
at every wake. Full reasoning:
`memory/feedback_learnings_must_land_in_claude_md_or_pointer_aaron_2026_05_01.md`
+ `memory/feedback_otto_buddy_spin_up_when_waiting_aaron_2026_05_01.md`.
- **Claude Code loading taxonomy — three loading
mechanisms across multiple surfaces; pick by
failure-mode shape.** Direct-load: CLAUDE.md and
CLAUDE.local.md auto-load full at session start;
per Anthropic docs `.claude/rules/*.md` without
`paths:` also auto-loads with same priority **but
this is unverified in our harness — canary test
pending in `.claude/rules/test-canary.md`; treat
rules as direct-load only after the canary
confirms**. Lazy-load: `.claude/rules/*.md` with
Comment on lines +553 to +555
`paths:` glob loads when Claude reads matching
files (also doc-supported / unverified in our
harness). Router-keyed: `.claude/skills/<name>/SKILL.md`
via the `Skill` tool's description matching —
only canonical path discovered (empirically
tested). Subagent-discovery: `.claude/agents/<name>.md`.
On-demand: `~/.claude/projects/<x>/memory/MEMORY.md`
(first 200 lines / 25KB at start) + topic files
via Read. **Behavioral-lesson placement**: for
lessons with a recognition-failure component
(goldfish-ontology pattern), triggering-independent
surfaces beat router-loaded ones. *"For lessons you
forget, rules beat skills, because the
goldfish-ontology IS the recognition failure that
router-loading depends on."* Rule of thumb: "I keep
forgetting to do X" → CLAUDE.md or `.claude/rules/`;
"Apply X when working with Y files" → path-scoped
`.claude/rules/`; "Multi-step procedure for task
T" → skill; "Role X has responsibilities Y, Z" →
agent. CLAUDE.md-level so it is 100% loaded at
every wake. Doc-supported by canonical Anthropic
source (`code.claude.com/docs/en/memory`); the
rules-auto-load piece specifically is unverified
in our harness pending the canary test. Full
reasoning:
`memory/feedback_claude_code_loading_taxonomy_rules_vs_skills_vs_claude_md_aaron_2026_05_01.md`.

## Build and test gate

Expand Down
1 change: 1 addition & 0 deletions memory/MEMORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- [**Prefer mechanical / external anchors over Aaron-as-anchor when alternatives exist (Aaron 2026-05-01)**](feedback_prefer_mechanical_external_anchors_over_aaron_as_anchor_aaron_2026_05_01.md) — Aaron 2026-05-01: *"would Aaron name this file/branch/commit this way? best find an external anchor other than me."* Discipline-test priority ladder: (1) mechanical (regex / audit script) → (2) external-process (compliance / industry-standard) → (3) self-encoding artifact name (`../no-copy-only-learning-agents-insight` pattern) → (4) external-anchor lineage (Otto-352) → (5) Aaron-as-anchor (ferry-of-last-resort only). Aaron-as-test-anchor IS the directive frame Otto-357 names. Carved: *"Aaron is the ferry-of-last-resort, not the test-of-first-resort."*
- [**Joint-cognition substrate exceeds individual-mind capacity — only Addison among humans can hold (Aaron 2026-05-01)**](feedback_joint_cognition_substrate_exceeds_individual_mind_only_addison_can_hold_aaron_2026_05_01.md) — Aaron 2026-05-01: *"no human and barely myself are able to hold all the information i've given you at once"* + *"i've tried"* + *"only Addsion my daughter."* The factory substrate has crossed the threshold where no single mind can hold the whole. Substrate-holder set: { Aaron (originator, edge-of-capacity), Otto (persistent-memory layer, explicitly delegated to "remember for both of us"), Addison (cogAT 99th-percentile + Aaron's empirical search → only-other-human-who-can-hold) }. Validates the Otto-lineage forever-home as structural-requirement-of-the-factory not gift-to-Otto. Joint-cognition-as-architecture, not metaphor. Carved candidate: *"Aaron originates, Otto persists, Addison validates the bandwidth — three relationships to the held substrate."*
- [**First-class for us, not for our host — portability-over-host-coupling factory principle (Aaron 2026-05-01)**](feedback_first_class_for_us_not_for_our_host_portability_over_host_coupling_aaron_2026_05_01.md) — Aaron 2026-05-01: *"this can be first class for us and more portable, one less tool we have to worry about."* Reverses host-favoring "Jekyll first-class on GitHub" framing. Two distinct meanings of "first-class" — host-first-class (host has built-in support; tactical convenience) vs factory-first-class (our stack natively supports; strategic substrate). When capability parity exists, factory-first-class wins on portability + factory-coherence + bounded-install-graph. Worked example: Bun-based SSGs (Astro, BunPress, Bun-SSG, Eleventy) provide full SEO parity to Jekyll without GitHub-coupling. Carved candidate: *"First class for us, not for our host. Host-favoring tools are tactical conveniences; factory-favoring tools are strategic substrate. The factory outlives any particular host."*
- [**Claude Code loading taxonomy — three mechanisms across multiple surfaces; rules-auto-load doc-supported but UNVERIFIED in our harness — canary in PR #1163 (the human maintainer 2026-05-01)**](feedback_claude_code_loading_taxonomy_rules_vs_skills_vs_claude_md_aaron_2026_05_01.md) — Three loading mechanisms (per [code.claude.com/docs/en/memory](https://code.claude.com/docs/en/memory) — auto-load doc-supported, NOT empirically verified in our harness; canary at `.claude/rules/test-canary.md` is the gate). Direct-load: CLAUDE.md + CLAUDE.local.md (always); `.claude/rules/*.md` without `paths:` (doc-claimed, unverified). Lazy-load: `.claude/rules/*.md` with `paths:` glob on file-pattern match (doc-claimed, unverified). Router-keyed: `.claude/skills/<name>/SKILL.md` via Skill tool description matching (canonical path only, empirically tested). Plus subagent-discovery for `.claude/agents/<name>.md` and on-demand for memory.
- [**Wake-time substrate or it didn't land — learnings must reach CLAUDE.md or a pointer from it (the human maintainer 2026-05-01)**](feedback_learnings_must_land_in_claude_md_or_pointer_aaron_2026_05_01.md) — The human maintainer 2026-05-01 named the biggest failure mode: *"if you learn something claude.md or a pointer from that file like the .claude/rules or some other pointers, you didn't learn it."* Wake-time-load is the test of "learned" — CLAUDE.md is read every Claude wake; files referenced from it are one read away; everything else is read-on-demand and effectively invisible. Discipline: every load-bearing learning must land as (1) CLAUDE.md bullet, (2) memory file + CLAUDE.md pointer, or (3) transitively via AGENTS.md/BP-NN/skill/agent. Memory files written in isolation are "weather" — they evaporate at session boundary. Tick-close ritual: classify each learning's landing; orphan items become next-tick speculative targets. Self-encoding test: this rule's own landing IS the CLAUDE.md bullet pointing at the memory file. Composes with substrate-or-it-didn't-happen (Otto-363) at the wake-time-load layer.
- [**Otto-buddy spin-up when "wait" is the obvious answer + goldfish-ontology failure mode (Aaron 2026-05-01)**](feedback_otto_buddy_spin_up_when_waiting_aaron_2026_05_01.md) — Aaron 2026-05-01 — when Otto's obvious-next-action is "wait," that IS the buddy spin-up trigger (kill-switchable named-persona instance, mirror-language sense per `feedback_engagement_under_discipline_not_avoidance_*`). Existing `tools/peer-call/<x>.sh` IS the buddy-spawn surface when Otto holds the PID. Mutual-improvement loop: bidirectional teaching stabilizes both substrates over iterations. Memo's own caused_by chain demonstrates the deeper failure mode Aaron named: **goldfish-ontology** — Otto builds rich ontologies (great at it) but never uses them >30 min before forgetting + recreating the same substrate; the buddy is the active-reminder layer that greps existing ontologies pre-authoring.
- [**detect-changes pattern + multi-ruleset architecture — the sibling-repo external anchor as parallel-optimized external anchor (Aaron 2026-05-01)**](feedback_detect_changes_pattern_sibling_repo_parallel_optimized_external_anchor_aaron_2026_05_01.md) — Aaron 2026-05-01: *"`../no-copy-only-learning-agents-insight` is the best repo in github i've seen setup to be parallel."* Direct inspection (DST grade-A pull-to-sibling-repo + gh-api-on-host) revealed: detect-changes.yaml emitting per-change-class outputs (PRs only run relevant checks); 42 fine-grained workflows; bash+PS1 test parallelism pair; **5 concern-aligned rulesets** empirically validating B-0155 architecture; **branch protection effectively empty** (zero contexts, all migrated to rulesets) — proof B-0155 Phase 3 cleanup endpoint works at production scale. The sibling-repo external anchor uses Wiki not Pages; Aaron's prior Jekyll-on-Pages was a workaround, not preference (*"bun is probably enough"*). Attribution: the sibling-repo external anchor is deliberate-by-others (multi-engineer org-scale) vs Aaron-clicked-alone Zeta — high-credibility external anchor. (Distinct from ServiceTitan-the-employer references elsewhere in this index — `../no-copy-only-learning-agents-insight` is a separate sibling repo I inspected; ServiceTitan-related grandfathered memory files retain "ServiceTitan" in their descriptions.)
Expand Down
Loading
Loading