# v0.17.0 Research Navigator State, Accessibility, and Performance Validation
<a id="v0170-research-navigator-state-performance-validation"></a>

## Scope

This validation covers the v0.17.0 refinement of `/research/navigator/`. The release adds bounded shareable search/filter state, explicit reset and active-state affordances, a keyboard search-focus shortcut, and a lower-markup reference-domain presentation while preserving the v0.16.0 metadata/evidence model and all durable research authority.

No live deployment was performed.

## Query-state and canonical-identity checks

The local validation exercised the canonical Navigator response plus multiple `q`/`type` combinations, including ordinary text, an invalid result type, markup-like input, and a query longer than the accepted visible limit.

Verified behavior:

- optional `q` and `type` state does not change the canonical URL;
- Open Graph URL remains the clean canonical Navigator URL;
- page title and meta description remain query-independent;
- the JSON-LD graph remains query-independent and parses successfully;
- user search text does not enter the document `<head>` metadata surface;
- markup-like search text is HTML-escaped in visible form state rather than emitted as executable markup;
- control/state parsing restricts `type` to `all`, `report`, `topic`, `glossary`, or `domain`;
- invalid `type` state falls back to `all`;
- visible query state is normalized and capped to 120 Unicode characters;
- every query-state response still server-renders all 576 Navigator entries and all four result groups.

Native JavaScript passed `node --check` and contains the accepted clear/reset, visible-state update, `history.replaceState` URL synchronization, and `/` focus shortcut guarded against editable controls. Direct interactive browser automation was not established in this environment, so keyboard execution is supported by syntax/static code review rather than claimed field-browser proof.

## No-JavaScript and accessibility boundary

The Navigator remains server-rendered. Search/filter state is progressive enhancement rather than a content gate. The page includes an explicit no-JavaScript explanation, search labeling/described-by relationships, pressed-state filter buttons, a visible current-filter sentence, a live result-count region, and a canonical clear link that also works as a normal navigation reset when JavaScript is unavailable.

## Rendering-cost measurement

The same local response measurement method was applied to the v0.16.0 baseline and v0.17.0 implementation:

- v0.16.0 Navigator HTML: 348,275 bytes; 3,674 HTML start tags;
- v0.17.0 Navigator HTML: 299,225 bytes; 2,581 HTML start tags;
- reduction: 49,050 bytes, approximately 14.1%;
- start-tag reduction: 1,093 tags, approximately 29.7%.

The reduction comes primarily from removing repeated per-card type labels and rendering the 525 reference-domain entries as compact rows while retaining each domain name, URL/report count summary, occurrence count, deterministic search key, and stable `/research/references/` fragment link. CSS `content-visibility` and intrinsic-size hints provide an additional progressive off-screen rendering optimization where supported.

All 525 reference-domain links remain present in server-rendered Navigator HTML.

## Full repository checks

The focused repository validation completed with zero errors:

- 106 PHP files passed `php -l`;
- native JavaScript passed syntax checking;
- 85 canonical sitemap routes returned HTTP 200;
- all 85 routes have unique page titles and unique meta descriptions;
- all canonical and Open Graph URLs match their clean route identity;
- one parseable JSON-LD graph is present on every canonical route;
- 182 missing-slash, explicit `index.php`, homepage `index.php`, and legacy root-PHP redirect assertions passed;
- 709 rendered local targets/fragments across 152 unique paths resolved;
- 199 repository-local Markdown links were checked;
- 65 durable UAIX pointer records and 89 declared section/review destinations were checked;
- the exact required UAIX setup/update URL remains present once in each required owning record;
- handoff intake contains inert placeholders only;
- active taboo-rule leakage is zero;
- prior paternalistic catchphrase leakage is zero;
- lightweight private-key/token-marker scanning found zero candidates.

During the link/pointer sweep, four durable documentation files that were already being addressed by historical fragment links were given explicit first-party anchor elements. This is a navigation repair only; it does not change research substance or historical validation conclusions.

## Research-authority preservation

All 25 manifest-backed curated reports are byte-identical to v0.16.0. All 25 curated SHA-256 values match the report manifest, and all 25 original source attachments available in the task environment match their recorded source SHA-256 identities. `report-manifest.json` is byte-identical to v0.16.0, and the accepted glossary registry is byte-identical to v0.16.0.

The Navigator still searches only accepted report metadata, manifest topic labels, accepted glossary titles/direct definitions, and normalized reference-domain names. It does not add a report-body search index, database, external HTTP fetch/crawler, source-quality score, authority ranking, or third-party search runtime.

## External and production state not established

This validation does not establish production DNS/TLS/rewrite/cache behavior, live indexing or webmaster-console state, field Core Web Vitals, external-reference reachability/currentness/authority, current legal/scientific facts, or independently verifiable machine-execution provenance. Those remain separate verify-before-use or deployment concerns.

## Packaging note

The release is packaged for direct web-root extraction. Final archive clean-extraction checks and archive SHA-256 are performed after this report is written; the hash is supplied in the release handoff rather than embedded here so recording it cannot mutate the archive it describes.
