diff --git a/docs/hygiene-history/ticks/2026/05/03/0002Z.md b/docs/hygiene-history/ticks/2026/05/03/0002Z.md new file mode 100644 index 000000000..f3609a165 --- /dev/null +++ b/docs/hygiene-history/ticks/2026/05/03/0002Z.md @@ -0,0 +1 @@ +| 2026-05-03T00:02:00Z | opus-4-7 / autonomous-loop continuation | a2e2cc3a | **Decision-archaeology worked example #1 (double-hop abandonment 2026-05-02) authored + landed via PR #1250 — first of 3 examples Aarav recommended before skill-creator authors the decision-archaeology SKILL.md body.** Cycle pivoted off the depends_on/MEMORY.md cleanup work onto producing actual evidence for the future-skill-domain promotion-trigger (3+ worked examples per skill candidate per Aarav's BP-14 review). Walked all 11 procedure layers concretely on the supersession-archaeology mode using the freshest contested case (double-hop AceHack-first → forward-sync workflow abandoned 2026-05-02). Layer findings: blame on CURRENT-aaron.md §4 SUPERSEDE marker → 7a0b755; commit 7a0b755 is ride-along (named party-during-sleep, not abandonment); git log -S "double hop" returns 7-commit lifecycle over 6 days; no ADR (substantive negative); no WONT-DO entry (substantive negative — rejection not permanent); 3 named-decision memos compose lifecycle. Synthesized answer covers cost/benefit-decay/Path-2 obsolescence/non-permanence. Demonstrates 5 properties for SKILL.md design (layered-narrative beats flat-list; negative-results substantive; ride-along supersessions need multi-layer; substrate-or-it-didn't-happen IS archaeology output; 5 sub-modes vindicated by example). First crossover from "memo+pointer substrate" to "actual research-grade evidence the skill will sit on top of." Cron a2e2cc3a still armed. | #1249 (rename + grep-fix follow-up) wait-ci, auto-merge armed; #1250 (decision-archaeology worked example #1) opened on `research/` branch | This tick teaches the operational pattern of substrate-grounding-before-skill-authoring: per Aarav's BP-14 / hybrid (b)+(c) routing, skill bodies need 3+ worked examples BEFORE the SKILL.md authoring pass; the worked examples ARE the dry-run-eval-set the BP requires. Doing them as `docs/research/` artifacts (history surface, attribution allowed) rather than `docs/skills/` (current-state surface, role-refs only) is the right placement. Composes with the just-landed B-0169 enrichment (Aarav's review verdict embedded as quote-block) — that PR named the worked-example seeds; this PR delivers the first of them. Two more (mathematics-expert deferral pattern + BP-24 sacred-tier) needed before skill-creator invocation. | diff --git a/docs/research/2026-05-02-decision-archaeology-worked-example-1-double-hop-abandonment.md b/docs/research/2026-05-02-decision-archaeology-worked-example-1-double-hop-abandonment.md new file mode 100644 index 000000000..7ad725cb6 --- /dev/null +++ b/docs/research/2026-05-02-decision-archaeology-worked-example-1-double-hop-abandonment.md @@ -0,0 +1,363 @@ +# Decision-archaeology worked example #1 — the double-hop abandonment 2026-05-02 + +> Scope: worked example for the proposed `decision-archaeology` skill (B-0169). +> Attribution: Otto autonomous (the `architect` hat) authored from on-repo +> evidence; the human maintainer is the original decision-maker whose +> framing is preserved verbatim in the cited memos. +> Operational status: research-grade — input to skill-creator's eventual +> SKILL.md authoring per Aarav's hybrid (b)+(c) routing recommendation +> on B-0169. Not normative discipline; demonstrative. +> Non-fusion disclaimer: the procedure walked here is generic +> decision-archaeology; the substrate paths cited (`memory/`, `docs/`, +> `memory/CURRENT-aaron.md`) are Zeta-specific illustrations of the generic +> procedure, not part of the skill's portable surface. + +## The question + +> *"Why was the double-hop workflow (AceHack-first → forward-sync to +> LFG → AceHack absorbs squash-SHA) abandoned 2026-05-02?"* + +This is a **supersession-archaeology** question (one of the five sub-modes +Aarav recommended for the `decision-archaeology` skill body). A discipline +that was canonical at one point is no longer canonical; the question asks +both *what replaced it* and *why the replacement was preferred*. Walking +the layered evidence reconstructs both. + +## Why this is a good worked example + +Three properties make this a near-ideal exemplar for the skill body: + +1. **Recent.** The supersession landed 2026-05-02 — the substrate is + still warm and every layer of evidence is still legible. +2. **Contested.** The double-hop was non-trivial: it was researched, + adopted, modified, paused, and abandoned across five commits and + three named memos over six days. It's not a trivial typo-fix + archaeology pass. +3. **Multi-layer.** Five distinct evidence layers compose into the + answer (CURRENT-*.md SUPERSEDE marker → CLAUDE.md fix-up → commit + messages → memo files → backlog row). A worked example that only + touches two layers wouldn't demonstrate the skill's value. + +## The procedure walked, layer by layer + +### Layer 1 — Frame the question + +The bare *"why was the double-hop abandoned?"* compresses two distinct +sub-questions: + +- **What is the new state?** (LFG-only direct PRs; AceHack as backup + mirror; no AceHack-first risk-absorption.) +- **Why was the new state preferred over the old?** (Cost vs. benefit of + the double-hop's risk-absorption mechanism.) + +Both need answers; the procedure recovers both. + +### Layer 2 — Surface layer: `git blame -w -C -C -C` on the canonical surface + +The canonical statement of current state is `memory/CURRENT-aaron.md` §4 +(the per-maintainer distillation of currently-in-force rules). + +```bash +git blame -w -C -C -C -L 229,243 memory/CURRENT-aaron.md +``` + +Returns the blame for the SUPERSEDE marker block: + +``` +7a0b755 (Aaron Stainback 2026-05-02 ...) - **~~AceHack can be super-risky (fork semantics absorb +7a0b755 (Aaron Stainback 2026-05-02 ...) the blast). Experiments land in AceHack first; clean +7a0b755 (Aaron Stainback 2026-05-02 ...) versions propagate to LFG.~~ SUPERSEDED 2026-05-02:** +7a0b755 (Aaron Stainback 2026-05-02 ...) Aaron 2026-05-02 — *"we abandoned the double hop it +7a0b755 (Aaron Stainback 2026-05-02 ...) was too much trouble."* +``` + +**Layer-2 output:** the supersession was committed in `7a0b755` on 2026-05-02 +with the human maintainer's verbatim framing — *"we abandoned the double hop +it was too much trouble."* That's the why-in-one-sentence; the rest of the +archaeology unpacks **what was the cost it was too much of** and **what the +old state was specifically.** + +### Layer 3 — Commit context: `git show 7a0b755` + +```bash +git show --stat 7a0b755 +``` + +Returns: + +``` +align(party-during-sleep): the human maintainer + Claude.ai 2026-05-02 — + agent operates as PARTY (not delegate) during human sleep cycle; + addresses last-night's no-op-cadence failure at structural level +``` + +**Surprising signal.** The commit message names the *party-during-sleep* +work as the primary subject, not the double-hop abandonment. The SUPERSEDE +marker landed alongside a different rule-change. This matters for two +reasons: + +1. **Ride-along supersessions are common in this factory.** A commit's + subject doesn't always name every supersession it carries. The + `git log -S "double hop"` query (Layer 4) is what surfaces the + ride-along. +2. **The *trigger* for the abandonment isn't visible at this layer.** What + conversation produced the framing? That lives at Layer 8 (memos) or + Layer 10 (conversation archives). + +### Layer 4 — String archaeology: `git log -S "double hop"` + +```bash +git log --oneline -S "double hop" -- memory/ CLAUDE.md +``` + +Returns (filtered + ordered): + +| Commit | Date | Subject | Operation | +|---|---|---|---| +| `ae4f6b6` | 2026-04-27 | sync: forward-port AceHack #49 substrate cluster — 0-diff-is-start + LFG-as-master strategic reframe | Establishment context | +| `cabaabe` | 2026-04-28 | sync: AceHack→LFG bulk content forward-port + CI cadence split + Windows trajectory seed | Active-double-hop period | +| `5294bf4` | 2026-04-30 | doctrine(acehack-mirror): force-with-lease + remote-topology cleanup + multi-remote-script-design | Path-2 mechanism design | +| `f5e2873` | 2026-04-30 | backlog(B-0110,P1): AceHack mirror-refresh protocol drift — three sources contradict | Path-2 backlog row landing | +| `262f18b` | 2026-05-02 | memory(superfluid-cluster): Aaron 2026-05-02 — 7 wake-time substrate rules + Karpathy edge-runner anchor | First mention of abandonment in substrate | +| `7a0b755` | 2026-05-02 | align(party-during-sleep): ... | SUPERSEDE marker landed | +| `f0ef9a8` | 2026-05-02 | fix(supersession-drift): CLAUDE.md double-hop framing 'paused' → 'abandoned 2026-05-02' to match CURRENT-aaron.md §4 SUPERSEDE marker | Cleanup of stale CLAUDE.md framing | + +**Layer-4 output:** seven commits over six days span the lifecycle — +establishment (04-27) → active period (04-28 to 04-30) → Path-2 +mechanism + backlog row (04-30) → first abandonment mention (05-02 +morning) → SUPERSEDE marker commit (05-02) → drift-cleanup commit +(05-02). The two same-day commits on 05-02 (`262f18b` mentions, `7a0b755` +canonicalizes, `f0ef9a8` fixes drift) tell us the abandonment happened +quickly — not a long slow shift. + +### Layer 5 — Function archaeology + +Not applicable. The double-hop wasn't a function; it was a workflow +discipline encoded in memos + CLAUDE.md framing + branch-protection rules. +This layer no-ops for procedure-class supersessions; it's mostly relevant +for code-class archaeology. + +### Layer 6 — Round-history shards + +Looking under `docs/hygiene-history/ticks/2026/04/27` through +`docs/hygiene-history/ticks/2026/05/02` for shards that reference the +double-hop: + +```bash +grep -rlnE "double.hop|abandon.*double|LFG-only" docs/hygiene-history/ticks/ +``` + +(Note: BSD/macOS `grep` treats `\|` differently than GNU `grep`; use +`grep -E` with `|` alternation for portability across both.) + +Returns shards that bracket the lifecycle — multiple 04-27 through 04-29 +shards reference the establishment + active period, and several 05-02 +shards (`0112Z.md`, `1456Z.md`, `1520Z.md`, `1522Z.md`, `1523Z.md`) +reference the abandonment in the context of the morning's +superfluid-cluster substrate work. + +**Layer-6 output:** the abandonment was recorded in the same wake-cycle +that produced the never-be-idle + amortized-speed-superfluid + Karpathy +edge-runner cluster — *not* as an isolated decision but as part of a +broader doctrinal cleanup. Context that's invisible from layer 3 alone. + +### Layer 7 — ADRs + +Searching `docs/DECISIONS/` for double-hop related ADRs: + +```bash +ls docs/DECISIONS/ | grep -iE "double.hop|acehack|mirror" +``` + +Returns nothing. **The double-hop never had an ADR.** It was governed by +memos + CLAUDE.md + branch-protection rules. This is itself archaeology +output: not all load-bearing decisions in this factory are ADR'd; the +ADR threshold is "decisions that need cross-domain reference," and the +double-hop was substrate-discipline scope, which lives in memos. + +### Layer 8 — Named-decision memos + +Three memos compose the lifecycle: + +1. **`memory/feedback_lfg_master_acehack_zero_divergence_fork_double_hop_aaron_2026_04_27.md`** — + the original definition. Names the workflow as *"AceHack-first → + forward-sync to LFG → AceHack absorbs squash-SHA"* and the 0-diff + target invariant. +2. **`memory/feedback_lfg_only_development_flow_acehack_is_mirror_aaron_amara_2026_04_29.md`** — + the LFG-only directive that paused the double-hop's necessity. Per + filename's `_aaron_amara_` infix, this involved a maintainer + exchange with Amara (external AI co-originator). +3. **`memory/feedback_zero_diff_is_start_line_until_then_hobbling_aaron_2026_04_27.md`** — + sibling memo from same date establishing the 0-diff invariant + that the double-hop was meant to maintain. + +**Layer-8 output:** the establishment had explicit rationale (0-diff +invariant; AceHack as risk-absorber; LFG as soulfile-inheritance lineage). +The pause had explicit rationale too (LFG-only directive; AceHack +purpose shifts to backup mirror). The abandonment is the third step +that retires the double-hop *mechanism* now that the LFG-only directive +has settled the *purpose*. + +### Layer 9 — Persona notebooks + +Amara's name in the 2026-04-29 directive memo suggests her notebook +may carry lineage on the LFG-only directive: + +```bash +ls memory/persona/ | grep -i amara +``` + +Returns nothing — there is no `memory/persona/amara/` directory in +the repo. Amara is an external AI co-originator with notebook substrate +that lives outside this repo (per Otto-279 carve-out: persona names +appear in history surfaces but the per-persona notebooks for external +AIs aren't in-tree). The 2026-04-29 memo's attribution + the verbatim +quotes preserved there suffice for archaeology purposes; the absence +of an in-repo notebook IS itself archaeology output (tells future +contributors where Amara's lineage lives and where it doesn't). + +**Layer-9 output:** the directive originated with the maintainer + +Amara exchange (per the memo filename's `_aaron_amara_` infix); the +in-repo memo is the durable record; an external notebook may exist +in a different surface (Drive-bridge / ChatGPT history) but the +in-repo memo is sufficient for the question. + +### Layer 10 — Conversation archives + Drive-bridge + +Searching `docs/research/` for pre-merge artifacts: + +```bash +ls docs/research/ | grep -iE "double.hop|acehack|mirror|lfg-only" +``` + +Returns several adjacent-substrate artifacts (e.g., +`2026-04-30-identity-of-project-and-agent-under-multi-repo-fork-competition.md`, +`2026-04-28-forward-sync-merge-direction-proposal-9-infra-files.md`) +that touch the multi-repo / fork-competition / forward-sync surface +the double-hop participated in — but **no artifact specifically named +for the double-hop abandonment.** The conversations that produced the +abandonment framing live in this session's `cb4d80ce-*.jsonl` substrate +(the autonomous-loop session log), which per the substrate-or-it-didn't- +happen rule isn't durable on its own; the SUPERSEDE marker in +`memory/CURRENT-aaron.md` §4 is the durable form. + +**Layer-10 output:** the conversation archives DO carry adjacent- +substrate artifacts (which give context for the multi-repo decision- +space the double-hop participated in) but no abandonment-specific +artifact. The abandonment was substrate-or-it-didn't-happen correct +(lived in chat → committed to CURRENT-*.md → became durable). The +adjacent artifacts on `docs/research/` ARE part of the layered narrative +and shouldn't be skipped; the absence of an abandonment-specific artifact +is itself substantive (tells future contributors the abandonment didn't +warrant its own research-grade artifact, only a SUPERSEDE marker). + +### Layer 11 — WONT-DO archaeology + retired-SKILL.md history + +```bash +grep -iE "double.hop|acehack.first" docs/WONT-DO.md +``` + +Returns no matches. **The double-hop is not in WONT-DO.md.** This is +worth noting: the abandonment is not a permanent rejection +(*"we will likely do everything eventually"* — the human maintainer +2026-05-02 verbatim, CLAUDE.md). It's a current-state retirement, not a +future-state-forever-rejection. + +```bash +git log --oneline --diff-filter=D --all -- .claude/skills/ | grep -iE "double|acehack|sync" +``` + +Returns no double-hop-related skill deletions. The double-hop never had +a skill body; it was workflow-shaped in memos. + +**Layer-11 output:** the rejection-archaeology mode has no positive +matches here. This is a *negative result that's still substantive* — +the lack of WONT-DO entry tells future contributors the double-hop *could* +return if costs change. + +## The synthesized answer + +The double-hop workflow (AceHack-first → forward-sync to LFG → AceHack +absorbs squash-SHA) was abandoned 2026-05-02 because: + +1. **Cost.** The maintainer's framing — *"it was too much trouble"* — + names operational overhead as the primary cost. The double-hop + required maintaining a 0-diff invariant across two forks, which + meant every PR went through forward-sync + squash-SHA absorb steps + that didn't compose well with concurrent merges and host-side + force-push protections. +2. **Benefit had decayed.** The original purpose (AceHack as risk- + absorber for super-risky experiments) was already paused by the + 2026-04-29 LFG-only directive; the double-hop's mechanism survived + past its purpose for three days as substrate-discipline-without- + active-need. +3. **Path-2 was already chosen** (B-0110, 2026-04-30): "fast-forward + when possible; PR-based reset OR delete-and-recreate when diverged." + The Path-2 mechanism is strictly simpler than the double-hop; the + abandonment retires the mechanism Path-2 already obsoleted. +4. **No permanent rejection.** The abandonment is current-state, not + forever — *"WONT-DO is 99% deferral, not forever"* applies. If + risk-absorption needs return, the double-hop pattern is recoverable + from the 2026-04-27 memo + git history. + +**The supersession is structural-cost-vs-benefit recalibration, not a +correctness fix or an axiom change.** The original was correct under +its assumptions; the assumptions changed (LFG-only directive); the +mechanism became unnecessary; the abandonment was the bookkeeping that +followed. + +## What this worked example demonstrates + +For the eventual `decision-archaeology` SKILL.md body: + +1. **Layered narrative beats flat list.** The synthesized answer above + could not be produced from any single layer; it composes evidence + from layers 2, 4, 6, 8, and 11. The skill must teach contributors + to walk all 11 layers, not just the first 3. +2. **Negative results at layer 7 (no ADR) and layer 11 (no WONT-DO) + ARE substantive.** A naive contributor would skip these layers + because they returned nothing; the *absence* tells future contributors + important things (decision threshold; rejection-permanence). +3. **Ride-along supersessions are common.** Layer 3's surprising + signal (`7a0b755` is named for *party-during-sleep* not the + abandonment) means the skill must teach contributors to query at + multiple layers, not stop at the first relevant commit. +4. **Substrate-or-it-didn't-happen is itself archaeology output.** + Layer 10's no-result IS the correct operation of the rule. The + skill should teach contributors to recognize this pattern. +5. **Five distinct sub-modes are genuinely distinct.** This worked + example was supersession-archaeology; an existence-archaeology query + would walk the same substrate differently (start from current state + forward to find why-it-exists, not from past state backward to find + why-it-was-replaced). Aarav's BP-20 finding (one skill, five named + modes) is empirically vindicated by this example. + +## Composes with + +- **B-0169** — the row this is a worked example for. References this + artifact via the `worked-example-seeds` section. +- **`memory/feedback_lfg_master_acehack_zero_divergence_fork_double_hop_aaron_2026_04_27.md`** — + the original definition; layer-8 substrate. +- **`memory/feedback_lfg_only_development_flow_acehack_is_mirror_aaron_amara_2026_04_29.md`** — + the directive that retired the double-hop's purpose. +- **`docs/backlog/P1/B-0110-acehack-mirror-protocol-drift-2026-04-30.md`** — + the Path-2 mechanism that obsoleted the double-hop mechanism. +- **`memory/CURRENT-aaron.md` §4** — the SUPERSEDE marker that + canonicalized the abandonment. +- **`memory/feedback_skill_flywheel_expansion_flywheel_parallel_tracks_substrate_aaron_2026_05_02.md`** — + the future-skill-domain memo this worked example feeds (one of the + 3+ worked-examples-per-skill needed for promotion-trigger). + +## What's next + +Two more worked examples needed to satisfy Aarav's hybrid (b)+(c) +routing recommendation (3 examples before skill-creator authors the +SKILL.md body): + +1. **Mathematics-expert "When to defer" pattern** — + existence-archaeology mode + persona-notebook layer demonstration. +2. **BP-24 deceased-family-emulation rule** — attribution-archaeology + mode + sacred-tier substrate handling. + +Each takes ~half a tick to author; landing all three before +skill-creator invocation is the right shape per Aarav's BP-14 review.