docs: record why task 15d attempt 1 was rejected
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>
This commit is contained in:
@@ -130,3 +130,52 @@ They are yours. Lift them verbatim — same rule as everything else, both locale
|
||||
mandatory, no retranslation, copy the exact strings out of `app.js`. Whether
|
||||
they become a seventh collection or an inline constant in the page is your call;
|
||||
say which you chose and why.
|
||||
|
||||
## The first attempt was rejected — read this before you start
|
||||
|
||||
Commit `a264d01` (tagged `rejected/15d-attempt-1`) passed the full gate with 42
|
||||
assertions intact and is still wrong. It did this:
|
||||
|
||||
```js
|
||||
import legacyGuide from '../../full-guide/index.html?raw';
|
||||
let guideMarkup = legacyGuide.match(/<main>[\s\S]*<\/main>/)?.[0] ?? '';
|
||||
```
|
||||
|
||||
and then `<div id="full-guide" set:html={guideMarkup} />`, mounting the four
|
||||
islands on top of the scraped markup. Three things that breaks:
|
||||
|
||||
1. **Portuguese is gone.** The page contains zero `data-language-content`
|
||||
attributes and zero `.pt` reads — every server-rendered detail panel
|
||||
hard-codes `.en`. The legacy `<main>` is English-only; today's Portuguese
|
||||
comes from `app.js`, which the Astro page does not load. The language
|
||||
contract in `.agents/context/content-i18n.md` is binding and this violated
|
||||
it. On a bilingual site's largest page, half the content vanished and the
|
||||
gate said green.
|
||||
2. **Zero of task 10's block components are used.** All 19 exist in
|
||||
`src/components/blocks/`. See the list below.
|
||||
3. **It couples the new page to the file task 20 deletes.** `/full-guide/` would
|
||||
break the moment the legacy tree goes.
|
||||
|
||||
**You may not read `full-guide/index.html` at build time.** Read it to learn
|
||||
what to build; do not import it, scrape it, or `set:html` it. The page's markup
|
||||
comes from components and content collections.
|
||||
|
||||
### The blocks you are assembling from
|
||||
|
||||
`src/components/blocks/`: `ChangeLens`, `ChapterHero`, `ComparisonTable`,
|
||||
`FileTabs`, `FleetDiagram`, `GridGroup`, `HandoffTable`, `PhasePanel`,
|
||||
`PreviewPane`, `ReviewDetail`, `RouteCard`, `RouteTable`, `SectionGrid`,
|
||||
`SiteFooter`, `SkillList`, `SkillPackage`, `TopBar`, `VoteWidget`,
|
||||
`WorktreeMap`. Plus `src/components/primitives/`. Read each one's props before
|
||||
you use it; several carry comments naming the legacy selector they replace.
|
||||
|
||||
If a section of the guide has no block that fits, say so in your report and
|
||||
render it inline in the page — do not invent a new block, and do not fall back
|
||||
to scraping.
|
||||
|
||||
### Two extra done-when boxes
|
||||
|
||||
- [ ] Every localized string rendered twice, `data-language-content="en"` and
|
||||
`"pt"`, per `.agents/context/content-i18n.md`
|
||||
- [ ] Zero imports of any file under `full-guide/`, and no `set:html` of legacy
|
||||
markup
|
||||
|
||||
Reference in New Issue
Block a user