Attempt 3 reached 68 of 102 translations.pt entries in the built page.
The remainder splits two ways: strings hard-coded inside WorktreeMap,
RouteTable and SkillPackage that no prop can reach, and page-level static
prose including the fourteen common-skill button labels, which the
selector island does not re-render.
Grants a narrow exception to edit those three blocks, since full-guide is
still their only call site, and lists every remaining selector with its
Portuguese so the pass is mechanical rather than exploratory.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Task 10b landed the Localized props that attempt 2 stopped on. Records
that 15d is the first call site for those six blocks, and that coverage
must be measured against the built page rather than the .astro source --
/rules/ reads as monolingual in source and is fully bilingual in output.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Attempt 2 got the structure right and said plainly it had only done the
hero, stat and thesis regions in both locales. The remaining static prose
is the 102-entry `translations.pt` selector map in app.js, which is what
gives today's /full-guide/ its Portuguese.
Also records that the 55 `.en` reads in the selector detail panels are
correct and must not be changed: GuideSelector re-renders those per locale
on languagechange, so the server render only needs the initial locale.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The attempt passed the gate and dropped Portuguese from the largest page
on a bilingual site: it scraped the legacy full-guide <main> at build
time with `?raw` and `set:html` instead of assembling the page from
the 19 block components and the content collections. That also couples
the new page to a file task 20 deletes.
Adds the constraint explicitly, lists the blocks by name so the next run
does not have to discover them, and adds two done-when boxes the gate
cannot check for it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>