Rule handbook metadata
- Rule
DET.STUDIO.TITLE_NAV_MATCH· lanedeterministic- Page status
- current
- page_version
0ec643185b306af74e2a5bfc821af6fd0e0fd2249a940be66f6d3cdb0b4db714- generated_at
- 2026-08-13T00:00:00.000Z
- registry_fingerprint
aef1de6082cf0f50d463783c843dee0ffb9132fbd5ed4ea6e5bb3f031f359c72
How this rule is fixed
Not in the deterministic fixer pilot registry (stub or not yet wired). Use the After example below as the target state and remediate manually or extend pilot-registry.json.
Detection module: docs/design/ux-audit/deterministic-design-rules.md#det-studio-title_nav_match. Scroll down for Before / After examples and Evidence and remediation steps.
Purpose
Forge Studio SPAs use a persistent app rail (.fc-app-rail) plus a workspace H1. When the rail says Watchlists but the H1 says Tickers, operators lose sense of place and automated PDCA scoring flags a critical identity defect.
DET.STUDIO.TITLE_NAV_MATCH compares normalized text from h1 and the active rail label (.fc-app-rail__btn--active .fc-app-rail__label or [aria-current="page"]). Rail subtitle mismatches are minor at most when H1 already matches the active destination.
Plan: Walk each route in the Studio manifest. Do: Rename H1 to match the active rail label; keep mechanism detail in the lead paragraph. Check: page.json shows matching h1 and active_rail_label. Adjust: If marketing copy needs a longer title, shorten H1 and move prose to p below.
Passing signals
h1text equals active rail label after lowercasing and stripping punctuation (e.g. both Watchlists).data-testidon page header and rail active state for Playwright (DET.STUDIO.TESTID).- Breadcrumb or tab selection agrees with H1 when present.
Failing signals
- H1 Tickers with rail Watchlists (classic Forge Market defect).
- H1 empty while rail shows a label (
DET.STUDIO.H1may also fire). - H1 names a sub-tab job while rail names the parent hub without tabs demoting the mismatch.
Before example
Before (failing example)
Tickers
Harvest EDGAR filings into the pipeline API.
After example
After (passing example)
Watchlists
Review and compare the issuers you are tracking.
Evidence and remediation
- Studio UX PDCA:
tools/studio-ux-pdca/score-page.mjsonpage.jsonfromcapture-page.mjs. - Remediation: rename H1 in the React page component; prefer KS
Capshell header slot. - Related axis:
page_identityinassessment.json.
Related rules
DET.STUDIO.H1— visible heading required before match can pass.DET.APP.PERSISTENT_CHROME— rail must persist across routes.AI.APP.WORKFLOW_CONTINUITY— judgment when chrome is stable but headings still confuse.