doxa-maps/documentation/needs-eyes
Doxa Maps 2eaea5cedf P (repo): neutral wording in the gates and docs, and no private-process checks
Comments, messages and docs only; no check logic changes.
- The role-word gate is renamed check-no-internal-role-nouns (and its baseline fixture). Same
  logic: it builds the word from parts so the file does not carry it, and a planted line in
  title case and in capitals still fails it while WebDriver and "GPU driver" do not.
- public-hygiene-check: the two role patterns are built from parts (the regexes are byte-
  identical), the header loses the forge and date wording, and the prayer comment loses its
  decision date. Its output on the tree is identical in normal and --strict modes.
- landing-preconditions, check-no-public-binds, check-published-tree-weight: no fleet tool
  name, no "this box", no forge name in comments and messages.
- Removed: check-backlog-refs, check-backlog-status-enum, check-done-evidence,
  check-verification-tags and check-dxlife-untouched (they police a private backlog and
  workspace), with their scripts, docs, gate-list entries and orphan-baseline entry, and the
  committed needs-eyes pages (check-embedded-rtl --emit writes them on demand).
- package.json docs: no agent names. Docs: the stale check mentions and the snapshot
  references are gone (the snapshots themselves leave in the studio P commit).
gates:pre: PASS 115, FAIL 0, NOT MEASURED 1 (browser seat).
2026-10-01 00:25:38 +00:00
..
README.md P (repo): neutral wording in the gates and docs, and no private-process checks 2026-10-01 00:25:38 +00:00

needs-eyes — partner-embed fixtures

A check that can only be seen has to be openable by someone else, not a construct that lives inside one gate's process. These pages are generated on demand and are not committed; write them with:

node internal/check-embedded-rtl.mjs --emit

check-embedded-rtl builds its partner page on two ephemeral ports inside its own process. That is fine for a headless assertion and useless for a human: "open a partner page at a foreign origin" was not a thing anyone but the gate could do. --emit writes the same page to disk so the needs-eyes item is reproducible.

What each file is for

file channel under test open it as
partner-poster-wall.html profile-config.locale — the channel a host sets plain
partner-upg-100-mfe.html same, on the composite plain
partner-poster-wall-lang-ar.html ?lang= — the channel a reader follows with ?lang=ar

⚠ The ?lang=ar file deliberately carries no locale in its profile-config (1100 bytes vs 1114). The two channels reach the document-direction code by different routes, and detectLocale() reads the URL first. If the config also supplied the locale, a reader could believe the URL had done it when it had not — and the defect this fixture exists for only fires on the URL channel. An earlier version of the emit produced all three files byte-identical, which would have handed a reviewer three pages they could not tell apart.

How to use it

Two terminals, and the origins must differ — same-origin hides the bug:

# 1) the tree, WITH CORS (a partner embed uses crossorigin="anonymous", so the
#    browser demands Access-Control-Allow-Origin; `bun run serve` does not send it,
#    a real CDN does)
npx http-server public -p 47395 --cors -s

# 2) these fixtures
npx http-server documentation/needs-eyes -p 47393 -s

# 3) open
http://127.0.0.1:47393/partner-poster-wall-lang-ar.html?lang=ar

What to look at

The partner page's own heading — "Partner page" — must stay left-aligned and the document's <html> must carry no dir, while the plugin below it mirrors right-to-left.

If the heading jumps to the right, the embedded plugin flipped its host's whole page and the check has failed. That was the real defect: an RTL locale was written to document.documentElement.dir whenever it resolved, so a reader following a ?lang=ar link to a partner's site got the partner's headings, nav and footer flipped. The fix (window.MAP_OWNS_PAGE, packet/vertical 2a502dd8) is that only a page the generator wrote may have its direction set; absence of the flag means restraint.