diff --git a/plans/astro-refactor/task-15d-page-full-guide.md b/plans/astro-refactor/task-15d-page-full-guide.md
index 7c4cffc..e4f5b80 100644
--- a/plans/astro-refactor/task-15d-page-full-guide.md
+++ b/plans/astro-refactor/task-15d-page-full-guide.md
@@ -247,3 +247,85 @@ For each of the 102 entries: the selector tells you which element, the value is
the Portuguese, and `full-guide/index.html` has the English. Both verbatim.
Remaining done-when boxes are the ones in the previous section, unchanged.
+
+## Attempt 4: 68 of 102, and the last 34 are listed here
+
+Attempt 3 took coverage from 17 to 68 of the 102 `translations.pt` entries,
+measured against `dist/full-guide/index.html`. Its snapshot rewrite is accepted
+— it explained the reason (sections attempt 2 had dropped came back, and
+`CopyPrompt` renders slightly differently), which is what the brief asked for.
+
+Three cleanups first, before any new work:
+
+- `translations_extracted.js`, `scratch/` and
+ `.agents/snapshots/full-guide-new.txt` are untracked leftovers in the
+ worktree. Delete them. Do not commit them.
+- Never `git add -A` from the repo root here.
+
+### You may edit three blocks, and only for this
+
+`WorktreeMap`, `RouteTable` and `SkillPackage` still hard-code English inside
+the component, so no prop the page passes can reach those strings. Task 10b made
+their prop-driven prose `Localized`; it did not catch the literals baked into
+the markup.
+
+Extend exactly those three, using 10b's established pattern: a `Localized` value
+renders the `data-language-content="en"` / `"pt"` pair, a plain `string` renders
+exactly what it renders today. You are still the only call site, so nothing else
+can regress. Do not touch any other block.
+
+### The 34 remaining entries
+
+Each row is the `translations.pt` selector and its Portuguese. The English is in
+`full-guide/index.html` at the same selector. Both verbatim — no retranslation,
+no rephrasing, no fixing what looks like a typo.
+
+| selector | Portuguese |
+| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `.caption` | O orquestrador preserva a intenção, escreve pequenos contratos e reúne resultados verificáveis. Ele não precisa digitar cada linha. |
+| `.workflow .copy > p:last-child` | Delegar é mover uma tarefa delimitada para um contexto menor — não abrir mão da responsabilidade. |
+| `.worktree-intro > p:nth-of-type(2)` | Um worktree é outro diretório ligado ao mesmo repositório. Cada agente recebe seu próprio checkout e índice; o histórico continua compartilhado. |
+| `.tree-node.root span` | RAIZ |
+| `.tree-node.root small` | ● limpo |
+| `.route-table .head span:nth-child(1)` | Trabalho |
+| `.route-table .head span:nth-child(2)` | Perfil |
+| `.route-table .head span:nth-child(3)` | Formato do prompt |
+| `.skill-principles span:nth-child(1)` | 01 / defina o gatilho |
+| `.skill-principles span:nth-child(2)` | 02 / carregue detalhes sob demanda |
+| `.skill-principles span:nth-child(3)` | 03 / devolva evidências |
+| `.skill-package > span` | PACOTE DE SKILL |
+| `.catalog-intro .eyebrow` | O kit de campo |
+| `.catalog-intro h2` | Trabalhos diferentes.
Instintos diferentes. |
+| `.catalog-intro > p` | Uma skill muda como o agente aborda o trabalho. Algumas moldam a comunicação. Outras impõem pesquisa, diagnóstico, revisão ou disciplina de conclusão. Selecione uma para inspecionar sua regra operacional. |
+| `[data-common-skill="ponytail"] span` | SIMPLIFICAR |
+| `[data-common-skill="ponytail"] small` | código mínimo que funciona |
+| `[data-common-skill="caveman"] span` | COMUNICAR |
+| `[data-common-skill="caveman"] small` | sinal sem excesso |
+| `[data-common-skill="unlazy"] span` | CONCLUIR |
+| `[data-common-skill="unlazy"] small` | gates e evidências |
+| `[data-common-skill="research"] span` | INVESTIGAR |
+| `[data-common-skill="research"] small` | fontes primárias primeiro |
+| `[data-common-skill="debug"] span` | DIAGNOSTICAR |
+| `[data-common-skill="debug"] small` | ciclo curto de feedback |
+| `[data-common-skill="review"] span` | REVISAR |
+| `[data-common-skill="review"] small` | padrões × especificação |
+| `[data-common-skill="tokens"] span` | ECONOMIZAR |
+| `[data-common-skill="tokens"] small` | comprima saídas ruidosas |
+| `.skill-loadout > span` | UM LOADOUT PRÁTICO |
+| `.skill-loadout > div` | PLANEJAR unlazy → CONSTRUIR ponytail-lite → DIAGNOSTICAR diagnosing-bugs → REPORTAR caveman |
+| `.callout span` | COMECE AQUI |
+| `.callout strong` | Comece com um agente e uma skill. Adicione paralelismo apenas quando as tarefas forem realmente independentes. |
+| `.sources p` | Aprofunde com documentação oficial, casos de produção, Medium e fluxos de praticantes. Estudo de caso sobre regras e enforcement → Referências primárias → Trilha com 12 leituras → |
+
+The fourteen `[data-common-skill="…"] span` / `small` rows are the selector
+button labels, not the detail panel. `GuideSelector` re-renders the panel per
+locale but not the button labels, so those need the server-rendered pair like
+any other static string.
+
+### Done when
+
+- [ ] All 102 entries present in `dist/full-guide/index.html` — 102, not 68
+- [ ] The three blocks take `Localized` for their previously hard-coded strings
+- [ ] No untracked scratch files left in the worktree
+- [ ] `pnpm run gate` green, 42 assertions, `verify.mjs` untouched
+- [ ] Report names any selector you could not place and why