record etymology mirror and cross-deck consistency rule in GDG agent learnings
Adds a Learnings entry to the GDG presentation agent capturing (1) the etymology line just added to slide 13, (2) the actual data-slide value of the horse-harness analogy slide in this deck so future cross-deck syncs can reference it, and (3) a forward-looking rule for cross-deck mirroring: when an edit lands on the sister best-practices deck and the same slide exists here (i.e. inherited from the original fork), evaluate whether to mirror — generic content mirrors cleanly, event-specific content does not. Also notes that slides should be located by content, not by trusting "slide N", since post-fork drift can shift numbering between the two decks. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -182,4 +182,5 @@ After completing changes, report to the user:
|
||||
- **2026-04-24 context-section concept-intro enrichment (65 → 68 slides)**: (1) Green pill `✅ Fresh every chat` (bg `#2e7d32`) added to slide 41 as the first pill before the 2 existing red pills — visual order green/property first, red/pitfalls after. (2) New slide 42 ("Claude's Brain", `data-level="context"`) and slide 43 ("What Loads at Session Start", `data-level="context"`) inserted between slide 41 and the old Skills section opener (old 42 → 44). Both new slides pull content forward from the old deep-dive slides 49/50 (which become slides 51/52 after the +2 renumber). Both carry full pillar-footers with Context active. Renumber technique: Python sentinel with per-occurrence targeting — `data-slide="42" data-level="skills"` and `data-slide="43">` were each targeted individually before the bulk 44-66→46-68 sweep, because slides 42/43 now have two occurrences each (new context + old skills). The CSS rule `.slide[data-slide="1"]` creates a false-positive when counting `data-slide` occurrences via regex — use `Counter` + ignore the CSS line, or grep for `<div class="slide"` instead. **Redundancy flag on slides 51 and 52**: old "Claude's Brain" (slide 51) and "What Loads at Session Start" (slide 52) are now duplicated by new slides 42 and 43. The old versions sit inside the deep-dive context section (slides 50-54) and will still fire at level=context (they carry no explicit `data-level`, but the section divider at slide 50 fires context and all subsequent slides inherit it until the next level fires). Recommend demoting or removing old 51/52 after presenter confirms new slides are satisfactory. Final section-divider positions: **agents=23, skills=38, context=42 (new), claude-md=55, commands=61, workflow=64**. Total slides: **68**.
|
||||
- **2026-04-24 "Lost in the Middle" research slide inserted at position 44 (68 → 69 slides)**: new slide inserted between slide 43 ("What Loads at Session Start") and old slide 44 (Skills section divider, now 45). Layout: flex two-column — image left (`max-width: 420px`, placeholder `../assets/concepts/context/lost-in-middle.png`), explanation right (`<ol>` with 3 items). Yellow callout div (`background: #fff8e1; border-left: 4px solid #f9a825`) at bottom of right column ties the academic finding to the "dumb-zone problem" vocabulary already established. Image file did NOT exist at insertion time — placeholder path used; user must drop `lost-in-middle.png` into `presentation/assets/concepts/context/`. Renumber method: Python sentinel replacing `data-slide="44"` through `"68"` → `"45"` through `"69"`, with a first-occurrence restore for the new slide's own `"44"` sentinel. New section-divider positions: **agents=23 (unchanged), skills=45, context=51, claude-md=56, commands=62, workflow=65**. Total slides: **69**.
|
||||
- **2026-04-30 removed "How the Harness Reaches the World" (53 → 52 slides)**: slide was confirmed at `data-slide="14"` (content match, not cached number). It carried no `data-level` — journey bar unaffected. Removal rationale: this slide was added after the GDG Kolachi event (Apr 25, 2026) and does not belong in the historical event record. The slide lives on in the forked `presentation/claude-code-best-practice/index.html` (owned by `presentation-claude-code` agent) — the two decks are intentionally divergent from this point. Method: Python line-slice to delete lines 779-790 (banner comment + div + trailing blank), then sentinel renumber for old slides 15-53 → 14-52. No `goToSlide` hardcoded calls exist — no TOC update needed. Final section-divider positions: **agents=23, claude-md=33, skills=38, context=42, workflow=45**. Total slides: **52**. **Deliberate-divergence rule**: when the GDG event deck and the best-practice fork differ on a slide, record the rationale here (event-record vs canonical-reference) so future runs do not re-add the slide to the GDG deck.
|
||||
- **2026-04-30 etymology footnote mirrored from best-practice deck onto horse-harness analogy slide (`data-slide="13"`)**: added `<p style="font-size: 0.95rem; font-weight: 400; color: #666; margin: 16px 0 0; letter-spacing: 0.01em; text-align: center;">The origin is Old French <em>harneis</em> — gear, equipment, armor.</p>` immediately after the red subtitle on slide 13. The user referenced "slide 13" — and in this deck that number is still accurate post-fork (the deleted "How the Harness Reaches the World" slide was at position 14, not 13, so slide 13's numbering was unaffected). Located by content (inline SVG horse + caption pair) to confirm before editing. GDG deck's caption-pair text is identical to the best-practice deck: bold `"A horse harness. A model harness."` and red `"The model is the horse. Raw power, no direction. The harness is everything else."` — no rewording needed. Total slide count (52) unchanged. **Cross-deck mirroring rule**: when an edit lands on the sister best-practices deck and the equivalent slide exists in the GDG deck (inherited from the original fork), evaluate whether to mirror it. Mirror when the change is generic content that fits both decks (etymology of "harness" is universally true); skip when the change is event-specific or when the slides have diverged structurally. Locate by content, not by slide number — post-fork deletions can cause numbers to drift.
|
||||
- **2026-04-24 mass deletion (slides 45-69) + single replacement + image relocation (69 → 45 slides)**: (1) Images `context-window.jpeg` and `context.jpg` moved from `presentation/assets/concepts/` to `presentation/assets/concepts/context/` alongside the already-resident `lost-in-the-middle.png`. All 5 `<img src>` references updated via sed (2 old-path `context-window.jpeg` refs, 2 old-path `context.jpg` refs, 1 `lost-in-middle.png` → `lost-in-the-middle.png` filename fix). (2) Slides 45-69 deleted (all 25 slides + their banner comments, lines 2289-3057 in 1-indexed) by slicing the lines array in Python and re-joining — the Python line-slice approach is the cleanest for deleting a contiguous range; no sentinel needed because no renumbering occurs within the retained block. (3) New slide 45 inserted in the same atomic write: `section-slide` with `data-level="workflow"`, h1 `📘 Workflow`, yellow pill `.claude/commands/`, green pills for Reproducible recipes / Same steps / Team-shareable, and a full pillar-footer with Workflows as the ONLY active card (all four others inactive). **Final state**: 45 slides, contiguous 1-45. data-level assignments: agents=23 (first), claude-md=33 (first), skills=38 (first), context=42 (first), workflow=45. Note: `commands` level is gone from data-level assignments (no remaining command-section slides). `LEVEL_LABELS` in JS still contains `'commands'` as a key — this is harmless (no slides will fire it) but should be removed in a future cleanup pass if desired. **Python line-slice pattern**: `before = lines[:del_start_0idx]`, `after = lines[del_end_0idx + 1:]`, new_content = join(before) + new_html + join(after). Atomic, no collision risk, trivially auditable.
|
||||
|
||||
Reference in New Issue
Block a user