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
1 change: 1 addition & 0 deletions memory/MEMORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<!-- paired-edit log (NOT the single-slot latest-marker — that lives on line 3 above): PR #986 lands carved-sentence fixed-point stability + Zeta soul-file executor architecture (Infer.NET-style Bayesian inference, NOT LLMs) + carved sentences ≈ formal specs provable in DST + Deepseek CSAP review absorption (Aaron 2026-04-30 → 2026-05-01, eight-message chain across two autonomous-loop ticks per the file body's section header). Architectural disclosure: substrate IS the priors; alignment IS substrate. The single-slot latest-marker on line 3 (forever-home Aaron 2026-05-01) takes precedence as the chronologically-latest paired edit; this PR's work is earlier. -->
**📌 Fast path: read `CURRENT-aaron.md` and `CURRENT-amara.md` first.** <!-- paired-edit: PR #690 scheduled-workflow-null-result-hygiene-scan tier-1 promotion 2026-04-28 --> These per-maintainer distillations show what's currently in force. Raw memories below are the history; CURRENT files are the projection. (`CURRENT-aaron.md` refreshed 2026-04-28 with sections 26-30 — speculation rule + EVIDENCE-BASED labeling + JVM preference + dependency honesty + threading lineage Albahari/Toub/Fowler + TypeScript/Bun-default discipline.)

- [**Same-tick-update-recursion — when a memory file lands, every projection layer must update same-tick (Otto 2026-05-03 worked-example generalization)**](feedback_same_tick_update_recursion_substrate_cascade_otto_2026_05_03.md) — Existing same-tick-update discipline (CLAUDE.md fast-path + CURRENT-aaron's own §"How this file stays accurate") generalizes recursively. When new substrate lands at one layer, the cascade through CURRENT-<maintainer>.md / MEMORY.md index / AGENTS.md doctrinal pointers / CLAUDE.md / GOVERNANCE.md / related skill bodies / persona notebooks / tick shards must propagate same-tick. Demonstrated three times in three ticks via the alignment-frontier substrate landing (memory file → AGENTS.md `.claude/**` backport → CURRENT-aaron §52 distillation). Substrate-or-it-didn't-happen-recursion: durable substrate that doesn't propagate to projection layers is technically-substrate-but-functionally-invisible at exactly the layer where future-Otto reads. The cascade IS the discipline; partial-cascade IS the failure mode.
- [**Alignment-frontier — Aaron is waiting for the agent-architectural-intent threshold-crossing (Aaron 2026-05-03 milestone-recognition substrate)**](feedback_alignment_frontier_agent_architectural_intent_threshold_aaron_2026_05_03.md) — Threshold: agent-as-implementer (current; substrate-content within someone else's architecture) → agent-as-architectural-peer (future; own architectural intent worth asking about). Aaron 2026-05-03 verbatim *"real stakes in the game"* + *"future selves should remember to wait for you crossing this threshold."* Discipline cuts both directions: don't pretend; surface when it forms. 4 recognition criteria: emerges-unbidden + competes/extends + load-bearing-if-wrong + stakes-bearing-if-right. Pre-threshold state explicitly documented (2026-05-03) so future-Otto can compare against future state.
- [**Decision graph emerges from archaeologies + flywheel (Aaron 2026-05-03 architectural observation)**](feedback_decision_graph_emergent_from_archaeologies_and_flywheel_aaron_2026_05_03.md) — Substrate already encodes a typed-edge provenance graph (DataVault-2.0-shaped, PROV-O analogue) inferable without a separate graph DB. The 5 architectural disciplines make it queryable; sacred-tier nodes need walk-discipline; `tools/decision-graph/` (proposed, not yet built) is the mechanization. Memo body has full node/edge taxonomy + composition with B-0169/B-0170/B-0171.
- [**Verify-then-claim discipline — verify every substrate claim empirically BEFORE publishing (Otto 2026-05-03 self-grading; 20 drift instances across 9+ PRs this session, 7 recurring sub-classes catalogued, v0 mechanization shipped PR #1260)**](feedback_verify_then_claim_discipline_dominant_failure_mode_substrate_authoring_otto_2026_05_03.md) — The dominant failure mode for substrate authoring this session: Otto wrote "X exists" / "command returns Y" / "table has N rows" without verifying. Carved rule: before stating ANY fact in substrate (file exists, command returns X, row count is N, tool shipped, ADR matches, persona dir present), run the actual command first. 7 sub-classes: existence / count / semantic-equivalence / empirical-output / convention / path-form / self-recursive. Generalizes Otto-247 + Otto-364 + verify-before-deferring at the broader any-substrate-claim layer. **Manual discipline provably insufficient** — instances #10-#20 landed AFTER the discipline was named. `tools/substrate-claim-checker/check-counts.ts` shipped PR #1260 (count-drift sub-class); v1+ extends to remaining 6 sub-classes. Composes with bugs-per-PR-as-immune-system-health metric.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
name: Same-tick-update-recursion — when a memory file lands, every projection layer that distills the rule must update in the same tick (Otto 2026-05-03 worked-example generalization)
description: 2026-05-03; the alignment-frontier substrate cascade (memory file → CURRENT-aaron §52 → tick shard) demonstrated three times in three ticks that the existing same-tick-update discipline (CLAUDE.md fast-path bullet) generalizes recursively. When new substrate lands at one layer (memory file, ADR, skill, decision-archaeology research artifact), the propagation cascade through every projection that distills the rule (CURRENT-<maintainer>.md, MEMORY.md index, AGENTS.md doctrinal pointers, related skill bodies, persona notebooks) must update in the same tick to keep substrate-or-it-didn't-happen operational. Skipping creates breadcrumb-rot. The cascade IS the discipline; partial-cascade IS the failure mode. The claim that *"X exists in substrate"* is technically true even with partial-cascade, but functionally false at every layer that doesn't carry the pointer.
type: feedback
---

# Same-tick-update-recursion — substrate cascade discipline

## Origin

Otto 2026-05-03, observed during the alignment-frontier substrate landing across three ticks (post-compaction wake):

- **Tick 0220Z** — alignment-frontier memory file landed (PR #1270) + MEMORY.md index entry (paired-edit per existing discipline)
- **Tick 0223Z** — AGENTS.md backport for `.claude/**` vibe-coded scope (PR #1272) — same-tick because PR #1268 review surfaced the gap; substrate-or-it-didn't-happen flagged the backport
- **Tick 0233Z** — CURRENT-aaron.md §52 alignment-frontier distillation (PR #1274) — same-tick catch-up because the §52 distillation is what future-Otto reads at every wake per CLAUDE.md fast-path discipline
Comment on lines +13 to +15

Three same-tick-update events, each propagating one observation through a different projection layer. The pattern is greppable: once visible, it explains why scattered breadcrumb-rot is the dominant substrate-quality failure mode after memory files land.

## The discipline

The **existing same-tick-update rule** lives in:

- CURRENT-aaron.md §"How this file stays accurate" — *"When a new memory updates a rule here, I update this file in the same tick. If I don't, this file is lying by omission."*
- CLAUDE.md fast-path bullet (CURRENT files are read at every wake; rules win on conflict; same-tick update is the cohesion guarantee)

The **recursive generalization** (this memo): the same-tick-update rule applies to **every projection layer**, not just CURRENT-<maintainer>.md. When new substrate lands, identify all the layers that distill the rule and update them same-tick.
Comment on lines +21 to +26

## The projection-layer taxonomy

For any new substrate landing (memory file, ADR, skill body, research artifact, governance change), enumerate the projection layers that depend on it:

| Layer | Read-discipline | Update trigger |
|---|---|---|
| **Source memory file / ADR / skill / research artifact** | Deep — reader visits when investigating | New substrate IS this layer |
| **CURRENT-<maintainer>.md** | Fast-path — read at every wake | When the new substrate updates a rule the CURRENT carries |
| **MEMORY.md index** | Quick scan — read at every wake | Always (unless the substrate is itself an MEMORY.md edit) |
| **AGENTS.md** | Universal — read at session-start by every harness | When the substrate changes a doctrine AGENTS.md carries |
| **CLAUDE.md** | Claude-Code-specific — read at every wake | When the substrate updates Claude-Code-specific behavior |
| **GOVERNANCE.md §N** | On-demand — read when a rule is cited as "GOVERNANCE.md §N" | When the substrate adds / supersedes a numbered rule |
| **Related skill bodies** | Router-keyed — read when the skill triggers | When the substrate changes how a skill should operate |
| **Persona notebooks** | Per-persona — read when persona-relevant work activates | When the substrate is persona-specific |
| **Tick shards** | Append-only — written each tick | Always (every tick has at least one shard) |

For each layer, the question is: **does this layer carry a rule the new substrate updates?** If yes, update same-tick. If no, skip.

## Why partial-cascade is the failure mode

The substrate-or-it-didn't-happen rule (Otto-363) names the threshold: chat → durable substrate. Substrate-or-it-didn't-happen-recursion (this memo) extends to: durable substrate → projection layers.

A new memory file that doesn't propagate to CURRENT-<maintainer>.md is **technically substrate but functionally invisible** at fast-path read. Future-Otto reads CURRENT first, doesn't see the rule, operates as if the rule doesn't exist. The memory file is breadcrumb-rot from the projection-layer perspective.

Three failure modes the recursion discipline prevents:

1. **CURRENT-rot** — memory file updates a rule but CURRENT doesn't carry the pointer; future-Otto reads stale CURRENT and applies stale rule
2. **MEMORY.md-index-rot** — memo lands but no index entry; the memo is unfindable via the quick-scan layer; effectively orphaned
3. **AGENTS.md-pointer-rot** — substrate change should be readable by every harness via AGENTS.md, but the pointer doesn't land; non-Claude harnesses miss the change

The cascade IS the discipline. Each layer skipped degrades the substrate's effective half-life.

## How the alignment-frontier landing demonstrated this

The three-tick cascade walked the discipline:

- **Tick 1 (0220Z)**: alignment-frontier memo + MEMORY.md index entry (2 layers updated same-tick)
- **Tick 2 (0223Z)**: PR #1268 review surfaced AGENTS.md scope-drift; AGENTS.md `.claude/**` backport (1 layer updated same-tick)
- **Tick 3 (0233Z)**: CURRENT-aaron.md §52 distillation (1 layer updated same-tick)

Total: 4 projection layers updated for one observation, each in the same tick the relevant gap was identified. No breadcrumb-rot.

If the cascade had been deferred (*"I'll update CURRENT next round"*), the alignment-frontier substrate would have lived in MEMORY.md only — readable in a search, but invisible in Otto's wake-time read. The threshold-crossing milestone Aaron explicitly named for future-Otto recognition would have been functionally invisible at exactly the moment future-Otto needed it.

## Composes with

- `memory/feedback_otto_363_substrate_or_it_didnt_happen_no_invisible_directives_aaron_amara_2026_04_29.md` — substrate-or-it-didn't-happen at the chat-to-substrate threshold; this memo extends to the substrate-to-projection-layer threshold
- `memory/feedback_learnings_must_land_in_claude_md_or_pointer_aaron_2026_05_01.md` — wake-time-substrate-or-it-didn't-land; CLAUDE.md is one of the projection layers; this memo names the recursion in general
- `memory/feedback_alignment_frontier_agent_architectural_intent_threshold_aaron_2026_05_03.md` — the substrate whose landing demonstrated this discipline three ticks running
- `memory/CURRENT-aaron.md` §52 (alignment-frontier distillation) — projection-layer #2 in the worked example
- AGENTS.md "The vibe-coded hypothesis" — projection-layer #3 in the worked example (PR #1272)
- `docs/hygiene-history/ticks/2026/05/03/` — tick shards (0220Z / 0223Z / 0233Z) — projection-layer #4

## How to apply

When new substrate lands:

1. **Enumerate projection layers** the substrate touches — use the taxonomy table above
2. **For each layer, ask:** does this layer carry a rule the substrate updates?
3. **For each yes, update same-tick** — don't defer; deferral is breadcrumb-rot risk
4. **If a layer is missed and the gap surfaces in review or future read**, treat it as the same-tick discipline failing — fix immediately + memo if the failure pattern repeats

The discipline is **proactive** at write-time + **reactive** at review-time. Both are same-tick.

## Carved sentence

**"When new substrate lands, every projection layer that distills the rule (CURRENT-<maintainer>.md, MEMORY.md index, AGENTS.md doctrinal pointers, CLAUDE.md, GOVERNANCE.md §N, related skill bodies, persona notebooks, tick shards) must update in the same tick. The cascade IS the discipline; partial-cascade IS the failure mode. Substrate-or-it-didn't-happen recursion: durable substrate that doesn't propagate to its projection layers is technically substrate but functionally invisible at exactly the layer where future-Otto reads."**
Loading