# Hotfix10 / Build Fix 42 Production Typecheck Correction

## Release identity

- Product: TeXise
- Release: **R14.28.20 Build Fix 42 / Hotfix10**
- Date: **2026-08-23**
- Purpose: close the production `tsgo` blockers discovered when the BF41 archive was installed with the pinned workspace dependencies.

## Production evidence from BF41

The BF41 installer successfully completed dependency installation, lockfile validation, workspace dependency consistency and public-barrel validation. The production build then reached `tsgo -b tsconfig.tsgo.json` and failed with five errors:

1. `saas-app.tsx`: Web Share capability used `navigator.share` as a truthiness condition even though the current DOM type declares the function, triggering TS2774.
2. `saas-app.tsx`: the BibTeX `matchAll()` capture was inferred as `string | undefined` under strict/no-unchecked-indexed-access semantics and was passed to `Map<string, number>` and `RegExp.test` without narrowing.
3. `project-templates.spec.ts`: the typed `ProjectTemplateDefinition` test fixture predated Hotfix10's required `degreeLevels`, `requiredPackages` and `features` arrays.

## BF42 corrections

- Web Share availability now uses runtime feature detection with `'share' in navigator` and a single `canNativeShare` value used by both rendering and the native share action.
- `bibtexKeys()` explicitly returns `string[]` and uses `flatMap` to discard an absent RegExp capture before values enter the typed collection pipeline.
- Project-template fixtures now provide `degreeLevels`, `requiredPackages` and `features` explicitly.
- The same fixtures now use the Hotfix10 protected `/api/templates/{slug}/files/...` URLs rather than obsolete raw `texise-templates/free/...` URLs.
- The service-worker cache identity, installer/source guard, deployment guard and collaboration diagnostics were rotated to Build Fix 42 so browsers and deployment diagnostics cannot confuse the corrected bundle with BF41.

## Verification performed in the release workspace

- BF42 source guard: PASS.
- Targeted strict TypeScript semantic check of the Web Share, BibTeX narrowing and required-fixture shapes with TypeScript 5.8.3 + `strict` + `noUncheckedIndexedAccess`: PASS.
- R14.28.20 BF42 regression: **20/20 PASS**.
- Hotfix10 focused SEO/template/blog/platform/migration suite: **40/40 PASS**.
- Historical R14.28.14: **22/22 PASS**.
- Historical R14.28.15: **14/14 PASS**.
- Historical R14.28.16: **16/16 PASS**.
- Historical R14.28.17: **8/8 PASS**.
- Historical R14.28.18: **14/14 PASS**.
- Historical R14.28.19: **11/11 PASS**.
- Runtime hardening: **101/101 PASS**.
- Native Node server tests: **98/98 PASS**.
- SaaS static audit: **44/44 PASS**.
- Release static audit: **357/357 PASS**.
- Branding/provenance, frozen-lock, workspace dependency and public-barrel checks: PASS.

## Production gate still required

This packaging environment does not contain the monorepo's installed `node_modules` and cannot fetch pnpm from the network, so it cannot honestly rerun the exact production `tsgo`/Biome/Vite pipeline locally. BF42 is therefore designed specifically from the production compiler diagnostics and is source/regression certified here, but the deployment environment must rerun the normal installer/build. If a later production-only compiler or lint diagnostic appears, treat it as the next release-blocking defect rather than bypassing the gate.
