# Draft: l10n(pipeline): refresh English source into the pt-BR line, third pass [DOC-6059]

## 1. What this is

Third English refresh, picking up the Thailand corridor release and everything else
that landed on `main-enterprise-product-docs` since the second refresh. Two things
dominate:

- **15 corridor pages were withdrawn from v2026.03** (CN-CNY, HK, ID, MY, PH, SG, VN,
TR, each with its parent country page). Their pt-BR translations are finished work
that will not publish.
- **13 corridor pages were restructured rather than edited.** Every real heading
changed in all 13.
- Branch: `l10n/pt-br/english-refresh-3`, based on `l10n/pt-br/bootstrap`.
- Target: `l10n/pt-br/bootstrap`. Neither merges to the default branch.
- Merge commit `680adf5b1`, 200 commits inherited, conflict-free.


## 2. Scope of this MR

Pipeline and manifest only. **No pt-BR content changes.** The `@l10n` tree object hash
is byte-identical before and after the merge (`ab6c29758...`), so every QC delta
reported below is attributable to the English side alone.

The content repair is deliberately *not* here. It is Phase B, and it is sized in §15.

## 3. Files changed

| File | Change |
|  --- | --- |
| `.l10n-sync/scope.json` | 146 entries → 131 live + 15 declared under `withdrawnSources` |
| `.l10n-sync/generate-manifest.mjs` | Withdrawn sources report as orphans instead of throwing |
| `.l10n-sync/manifest.json` | Regenerated: 146 files / 1026 sections → 131 / 1049 |
| `CLAUDE.md` | §8.2d documents the withdrawal mechanism |


## 4. English source reference

`origin/main-enterprise-product-docs` merged at `680adf5b1`. 57 in-scope English files
changed. The withdrawals land via `e1b9f4a24` (PH), `ce3ab7da7`, `84dfdfa8e`,
`e18df40ed`, `ed223910f`, `5eca69348` and related commits.

## 5. Mirrored-OpenAPI render check

n/a — the OpenAPI spec is out of scope (CLAUDE.md §11, handoff §4.8).

## 6. Structural preservation

No pt-BR file was touched, so structure is preserved by construction. The structural
*gate* now reports 187 findings across 28 files, which is the English having moved
underneath the translations rather than any damage to them. Measured baseline: the
same gate reported **0 findings** on the pre-merge tree.

## 7. Terminology and termbase

No new termbase entries proposed. `qc-terminology` goes from 45 findings to 206
(165 new, 4 resolved). The 165 are concentrated in the 13 restructured corridor pages
and are untranslated-English artifacts, not wording disputes. The 45 that predate this
MR are unchanged by it.

## 8. Reviewer attention items (CLAUDE.md §3)

1. **The orphan policy.** 15 finished pt-BR pages will not publish. They are retained
on disk per §8.2d, not deleted. Confirm that is the call you want.
2. **The failure-mode change.** A declared withdrawal no longer fails the build; an
*undeclared* missing source still does. That boundary is the part worth scrutiny.
3. **Nothing to read for prose quality.** This MR contains no Portuguese.


## 9. English-screenshot gap log

No change. Decision of 2026-09-17 stands: ship with English screenshots.

## 10. Source defects found (CLAUDE.md §9)

Five pt-BR pages carry links that do not resolve. **All five are equally broken in the
English source and all five predate this refresh**, so they are reported, not fixed:

- `api-docs/get-started/base-urls.md` → `pagination.md`
- `user-interface/beneficiaries.md` → `bank-ids.md`
- `user-interface/payments.md` → `tutorials/send-an-individual-payment.md`
- `user-interface/settings.md` → `settings/ip-allowlist.md`
- `user-interface/settings/originator-management.md` → `bank-ids.md`


`settings/ip-allowlist.md` has no English page to point at, which is consistent with IP
allowlisting not being an RPD2 feature.

## 11. Config changes

`redocly.yaml` is untouched by this MR. Its `l10n` block remains seven lines (42-48) and
is still absent from the default branch.

## 12. Translation memory

No harvest. Harvesting is blocked while 40 pages carry stale sections (handoff §4.9), and
`harvest-tm.mjs` has no `existsSync` guard, so regenerate the manifest before any harvest.

## 13. Pipeline / manifest

|  | before | after |
|  --- | --- | --- |
| manifest | 146 files / 1026 sections | 131 files / 1049 sections |
| structure findings | 0 | 187 across 28 files |
| terminology findings | 45 | 206 (165 new, 4 resolved) |
| stale sections | 0 | 239 across 40 files |
| removed sections, live files | 0 | 69 across 14 files |
| live pages fully current | 146 | 91 |
| untranslated live pages | 0 | 0 |


`selftest.mjs` passes. `generate-manifest.mjs --check` is clean against the committed
manifest. Regeneration is deterministic apart from the `generatedAt` stamp.

## 14. Review gate

Draft until a native pt-BR reviewer approves. Not self-approved, not self-merged.
**DO NOT SQUASH** — the payload is a merge commit, and squashing it severs the ancestry
link to the default branch (handoff §6).

## 15. Open items and human calls

**Phase B, the content repair, is scoped but not started.** For the 13 restructured
pages: 1,237 distinct translatable segments, of which **736 (59%) are unchanged English
whose approved pt-BR carries across mechanically**, leaving **501 new segments, roughly
4,252 words**. Do not estimate this off TM hit rate — the TM covers 19 of the 1,237 (2%)
because it is scoped to the twelve reviewed pages.

**Highest-value item in Phase B is not translation.** Three pt-BR index pages still list
withdrawn corridors: `apac.md` (Hong Kong, Indonesia, Malaysia, Philippines, Singapore,
Vietnam), `apac/cn.md` (CN-CNY), `emea.md` (Turkey). Eight list entries to remove.

**Unverified risk, needs a browser.** The `redocly.yaml` redirects for the withdrawn
pages are written against unprefixed English paths with no locale segment. Whether
Redocly applies them to `/pt-br/` paths is unconfirmed. If it does not, a pt-BR reader
could reach documentation for a withdrawn corridor. Test on preview:
`/pt-br/products/payments-direct-2/api-docs/integration-resources/apac/ph`.