# R14.28.20 Build Fix 44 / Hotfix10 validation addendum — 2026-08-23

The BF43 production run passed the complete dependency-backed frontend pipeline: dependency installation, custom validation, strict TypeScript, Biome, BusyTeX provisioning, static contract audit and Vite production build. The subsequent trusted API failure was a runtime-snapshot packaging defect: `server/template-library.mjs` depended on a build-tree script that the intentionally server-only runtime snapshot did not stage. BF44 removes that cross-boundary import and validates the staged module graph before service activation.

BF44 dependency-free verification: current release **22/22**, focused Hotfix10/deployment suite **54/54**, historical R14.28.14–19 **85/85**, runtime hardening **101/101**, native server **98/98**, SaaS static audit **44/44**, release audit **357/357**, branding/lock/workspace/barrel checks **PASS**. The exact BF44 trusted-runtime start/health path remains to be confirmed by production redeployment.

# R14.28.20 Build Fix 43 / Hotfix10 validation addendum — 2026-08-23

BF42 passed the production strict TypeScript gate and then exposed six Biome lint-only failures. BF43 closes all six reported diagnostics and adds regression coverage for the exact source shapes. No Hotfix10 runtime behavior is intentionally changed.

Current dependency-free verification: BF43 **21/21**; historical/current release chain **106/106**; focused SEO/template/blog/platform subset **38/38**; runtime **101/101**; SaaS **44/44**; release **357/357**; branding, lockfile, workspace dependency consistency and public barrels **PASS**.

# R14.28.20 Build Fix 42 / Hotfix10 validation addendum — 2026-08-23

BF41 production install supplied the missing dependency-backed evidence and failed at `tsgo` on five narrow typing errors. BF42 closes those source defects and adds explicit regression/source-guard coverage. The local packaging tree remains dependency-free, so the exact production build is still a redeployment gate rather than being claimed locally.

Current dependency-free results: BF42 **20/20**, Hotfix10 focused **40/40**, R14.28.14 **22/22**, R14.28.15 **14/14**, R14.28.16 **16/16**, R14.28.17 **8/8**, R14.28.18 **14/14**, R14.28.19 **11/11**, runtime **101/101**, native server **98/98**, SaaS **44/44**, release **357/357**, branding/lock/workspace/barrel checks **PASS**.

# R14.28.20 Build Fix 41 / Hotfix10 validation addendum — 2026-08-23

Dependency-free working-tree certification is green after the Hotfix10 template-platform, SEO migration, Learn and branding changes:

- Hotfix10 focused SEO/template/blog/platform/migration tests: **40/40 PASS**.
- Current R14.28.20 regression: **19/19 PASS**.
- Historical compatibility regressions: R14.28.14 **22/22**, R14.28.15 **14/14**, R14.28.16 **16/16**, R14.28.17 **8/8**, R14.28.18 **14/14**, R14.28.19 **11/11**.
- Runtime hardening: **101/101 PASS**.
- Native Node server tests: **98/98 PASS**.
- SaaS static audit: **44/44 PASS**.
- Release static audit: **357/357 PASS**.
- BF41 source guard: **PASS**.
- TeXise branding/provenance audit: **PASS** across the production-facing text surface.
- Frozen pnpm lock graph: **PASS**.
- Workspace dependency consistency: **PASS** across 68 workspace packages.
- Public package-barrel validation: **PASS** across 67 public entries.
- Template manifest/assets sync: **PASS**, indexing the eight published source templates present in the supplied tree and using protected API file URLs.

The final release artifact must still be extracted into a fresh directory and the same dependency-free certification rerun against the archive before delivery.

**Not claimed locally:** dependency-backed `tsgo`/TypeScript monorepo build, Biome, Vitest, Vite and Playwright because the supplied source has no installed workspace `node_modules`. Automatic execution of administrator-uploaded LaTeX is also intentionally excluded from the privileged server validation path; uploaded templates receive structural validation unless a safely isolated compiler worker is introduced. A server-side image-derivative pipeline is likewise deferred until a production image-transform dependency is available.

**Migration/content risk:** only eight template source packages are present in this release source. Historical indexed templates whose source files are absent cannot be recreated by the migration code and must be recovered/imported before their old URLs are retired.

# BF39 Source/Visual Reveal + Mobile Toolbar Hotfix 3 validation addendum — 2026-08-23

- BF39 focused regression: **14/14 PASS**.
- Historical BF38/BF37/BF36/BF35/BF34/BF33 regressions: **PASS**.
- Runtime hardening: **101/101 PASS**.
- Static release audit: **356/356 PASS**.
- SaaS static audit: **44/44 PASS**.
- Native server tests: **76/76 PASS**.
- Deployment/config/template native tests: **16/16 PASS**.
- Frozen lock, dependency-version, public-barrel and template/compiler checks: **PASS**.
- Changed TSX/TS files parse/transpile with the available TypeScript compiler; changed release scripts pass `node --check`; changed source has no trailing whitespace.
- Dependency-backed monorepo `tsgo`, Biome, Vite/Vitest and Playwright remain installer/release-quality gates because this local source tree has no workspace `node_modules`.

# BF39 Interactive Hero Refinement Hotfix 2 validation addendum — 2026-08-22

- BF39 focused regression: **13/13 PASS**.
- BF38 **11/11**, BF37 **14/14**, BF36 **8/8**, BF35 **16/16**, BF34 **14/14**, BF33 **22/22**, runtime hardening **101/101**.
- Static release audit **356/356**, SaaS static audit **44/44**, native server tests **76/76**, deployment/config **16/16**.
- pnpm lock graph, workspace dependency versions, public barrels and template/compiler requirements: **PASS**.
- `home-hero.tsx` and `hero-workspace-preview.tsx` parse/transpile with the available TypeScript compiler.
- Local source tree still has no installed monorepo `node_modules`, so dependency-backed `tsgo`, Biome, Vitest, Vite and Playwright are **NOT RUN locally** and remain installer/release-quality gates.
- Simulation contract explicitly contains no real compiler/network/editor/terminal invocation; Compile is timed React state and the Terminal output is static presentation data.

# BF39 Accessibility Lint Hotfix 1 validation addendum — 2026-08-22

- Production custom validation and strict TypeScript gates: **PASS** before Biome.
- Production Biome diagnostic fixed: BF39 capability container now uses `role="group"` for `aria-label="TeXise capabilities"`.
- BF39 focused regression: **10/10 PASS**. Historical BF38–BF33, runtime, release, SaaS, server and deployment/config matrices remain green in the source-side rerun.
- Dependency-backed Biome and subsequent production build/runtime gates must be rerun by the installer against this corrected archive.

# R14.28.20 Build Fix 39 validation — 2026-08-22

BF39 is a homepage presentation release only. The simplified hero and `@TeXiser` capitalization are implemented without changing the TX7.2.3 collaboration wire protocol, editor runtime, compiler, TexLab, authentication, BF38 cookie consent or analytics routing.

Dependency-free final-tree certification: BF39 regression **10/10 PASS**; BF38 **11/11 PASS**; BF37 **14/14 PASS**; BF36 **8/8 PASS**; BF35 **16/16 PASS**; BF34 **14/14 PASS**; BF33 **22/22 PASS**; runtime hardening **101/101 PASS**; static release audit **356/356 PASS**; SaaS static audit **44/44 PASS**. Native server, deployment/config, lock/dependency/barrel/template and syntax/transpile checks are also part of the final packaging cycle.

The source-only workspace intentionally has no installed monorepo `node_modules`; therefore dependency-backed `tsgo`, Biome, Vitest, Vite/build and Playwright are **not locally certified by this report** and remain production installer/release-quality gates.

## R14.28.19 Build Fix 38 validation addendum — 2026-08-22

Observed source/native gates: BF38 10/10, BF37 14/14, BF36 8/8, BF35 16/16, BF34 14/14, BF33 22/22, runtime hardening 101/101, release audit 355/355, SaaS audit 44/44, server 76/76 and deployment/config 16/16. Dependency-backed browser/build gates remain environment-dependent.

# TeXise SaaS Validation Report

## R14.28.18 Build Fix 37 validation addendum — 2026-08-22

- BF37 focused source/regression contract: **14/14 PASS**, including server-authoritative Pro/Admin host grants, open guest joining, exact supplied desktop logo, Visual font increase, TexLab/shared terminal chrome, toolbar/CTA changes, portal account menu, dismissible Projects menus and updated scientific-runtime browser contracts.
- Historical compatibility: BF36 **8/8**, BF35 **16/16**, BF34 **14/14**, BF33/R14.28.14 **22/22**, runtime hardening **101/101**.
- Static audits: repository release audit **354/354 PASS**; SaaS/product/security audit **43/43 PASS**.
- Native dependency-free execution: server Node tests **73/73 PASS**; deployment/config Node tests **16/16 PASS**.
- Frozen lock/workspace/public-barrel/template verification passes for **69** importers, **68** workspace packages, **67** public entries and **13/13** compiler template requirements.
- Changed BF37 TypeScript/TSX sources parse/transpile successfully with the available TypeScript compiler; changed Node modules, shell scripts and package JSON pass syntax parsing.
- Production installer evidence confirms custom validation, strict `tsgo`, mobile typecheck, root `tsgo --noEmit`, Biome, BusyTeX provisioning and Vite production build **PASS**, followed by SaaS preflight, trusted API, Cloud Compile, TexLab Console Gateway and collaboration signaling health **PASS**. The remaining observed failure was the live-relay health checker using an unsigned synthetic host after BF37 made new-room creation signed-only; Relay Health Hotfix 2 fixes that exact mismatch without weakening relay admission. Vitest/Playwright and the post-hotfix deployed relay rerun remain external runtime gates.

## R14.28.17 Build Fix 36 validation addendum — 2026-08-22

- **Accessibility Lint Hotfix 1:** production host evidence confirms custom validation and dependency-backed TypeScript/mobile typecheck pass. Biome then exposed one invalid ARIA attribute: `aria-expanded` on native `<summary>` in `account-popover.tsx`. The attribute is removed because native `<details>/<summary>` already communicates disclosure state; BF36 source/regression guards now reject recurrence. Full dependency-backed Biome/build should be rerun on deployment.

- BF36/TX7.2.2 source guard/focused regression: **8/8 PASS**. BF35: **16/16 PASS**. BF34: **14/14 PASS**. Historical R14.28.14: **22/22 PASS**. Runtime hardening: **101/101 PASS**. Static release audit: **353/353 PASS**.
- SaaS/product/security audit: **43/43 PASS**. Native server Node tests: **71/71 PASS**. Native deployment/template script tests: **16/16 PASS**.
- Frozen-lock verification: **69** workspace importers / **1171** reachable snapshots PASS. Workspace dependency consistency: **68 packages PASS**. Public barrels: **67 entries across 68 workspace packages PASS**.
- BF36 contracts cover collaboration modal Close/Stop semantics, authenticated collaboration identity, anonymous naming preservation, shared logged-in/anonymous account popover, responsive official desktop/mobile logo assets, Settings account metadata, simplified entitlement rows, Lifetime Deal card states, release markers and session-backed provider metadata.
- Existing Google OAuth implementation/configuration is intentionally unchanged; the native auth-flow tests continue to pass while the session response now exposes a safe provider label derived from DB identity state.
- Relevant BF36 TS/TSX source parses/transpiles and changed Node/Bash sources pass syntax checks.
- **NOT RUN in this source-only tree:** dependency-backed native-preview `tsgo`, Biome, Vitest, Vite production build and Playwright/browser execution because workspace `node_modules` is not installed here. These remain installer/CI/runtime gates and are not represented as passed.

## R14.28.16 Build Fix 35 validation addendum — 2026-08-22

- BF35/TX7.2.1 source guard/regression: **14/14 PASS**. BF34 collaborative-review regression: **14/14 PASS**. Historical R14.28.14 regression: **22/22 PASS**. Runtime hardening: **101/101 PASS**. Static release audit: **352/352 PASS**.
- SaaS/product/security static audit: **43/43 PASS**. Dependency-free server/script test batch: **88/88 PASS**. Template/compiler requirements: **13/13 PASS**.
- Frozen-lock verification: **69** workspace importers and **1171** reachable snapshots PASS. Workspace dependency consistency: **68 packages PASS**. Public barrels: **67 entries across 68 workspace packages PASS**.
- BF35 adds source contracts for exact-file RelativePosition validation, atomic coalescing, shared-review capability isolation, stack-item Undo correlation, semantic mutation metadata, review filtering/bulk rejection/conflict styling, review bounds/compaction, retired Visual collaboration code removal, and the combined browser soak contract.
- Final syntax/transpile checks cover all **24** BF35-changed TS/TSX files plus changed JS/MJS and deployment shell sources.
- **NOT RUN in this source-only environment:** dependency-backed `tsgo`, Biome, Vitest, Vite production build, Playwright browser execution, the executable 10,000-edit + 500-change + 200-review-operation soak, and deployed `/collab-live` relay certification. The extracted project has no installed workspace `node_modules`; these remain mandatory deployment/CI gates and are not represented as passed.

## R14.28.15 Build Fix 34 validation addendum — 2026-08-22

- BF34/TX7.2 shared review source guard: **PASS**, and the same guard correctly rejects the pristine BF33/TX7.1 tree.
- BF34 focused regression: **14/14 PASS**. Historical R14.28.14 regression: **22/22 PASS**. Runtime hardening: **101/101 PASS**. Static release contracts: **351/351 PASS**.
- SaaS/product/security static audits: **43/43 PASS**. Server dependency-free Node suite: **70/70 PASS**. Deployment/script Node suite: **18/18 PASS**. Template/compiler requirements: **13/13 PASS**.
- Frozen-lock verification: **69** workspace importers, **1581** package records, **1583** snapshots and **1171** reachable snapshots PASS. Workspace dependency consistency: **68 packages PASS**. Public barrels: **67 entries PASS**.
- Source syntax: all **20** BF34-modified TS/TSX files parse/transpile using TypeScript 5.8.3; all modified JS/MJS pass `node --check`; modified shell scripts pass `bash -n`; package JSON parses.
- Added executable test source for relative-position comment boundaries, concurrent replies/resolve, replacement and deletion coalescing, remote de-duplication, deletion conflict detection, Accept/Reject semantics and Undo/Redo metadata. Added Playwright two-browser contracts for shared comments/replies/resolve/reconnect and the exact `investigates → examines → Reject` supervisor scenario.
- **NOT RUN in this source-only sandbox:** dependency-backed native-preview `tsgo`, Biome, Vitest, production Vite build, Playwright browser execution, formal 10,000-edit/review soak and deployed `/collab-live` certification. The extracted archive has no workspace `node_modules`; pinned pnpm resolution through Corepack cannot reach `registry.npmjs.org` in this environment. These remain mandatory production/staging gates and are not reported as passed.

# R14.28.14 Build Fix 30 validation addendum — 2026-08-21

- Production `tsgo` completed, then Biome exposed one `lint/a11y/useAriaPropsSupportedByRole` error because the shared-project progress `div` carried `aria-label` without a supporting semantic role.
- BF30 changes that element to an ARIA `progressbar` and supplies `aria-valuemin`, `aria-valuemax`, and dynamic `aria-valuenow`, without suppressing the rule.
- BF30 adds a fail-closed source guard plus focused/runtime/release assertions for the progressbar semantics.
- Dependency-free BF30 verification: **22/22** focused R14.28.14 regressions, **350/350** release-contract checks, **101/101** runtime-hardening tests, **43/43** SaaS/product/security audits, **63/63** server Node tests, and **16/16** deployment/script Node tests.
- Frozen-lock/workspace/barrel/template verification passes for **69** workspace importers, **68** workspace packages, **67** public entries, and **13/13** compiler template requirements. BF30 TSX transpile, Node syntax, and installer/deploy Bash syntax checks pass.
- BF30 source guard passes the BF30 tree and fails closed against the immutable shipped BF29 tree specifically for the missing ARIA progressbar contract and old release/cache identity.
- This packaging environment has no installed workspace dependency tree, so the deployment host remains authoritative for native-preview `tsgo`, Biome, Vite, Vitest and Playwright execution.

# R14.28.14 Build Fix 29 validation addendum — 2026-08-21

- Production `tsgo` exposed three `TS2339` errors because collaborative directory handlers consumed `projectCollaboration` while their command manifests omitted that service.
- BF29 adds `projectCollaboration` to Create/Rename/Delete Directory command dependency declarations and introduces a fail-closed guard for the exact contracts.
- Dependency-free BF29 verification: **21/21** focused R14.28.14 regressions, **350/350** release-contract checks, **101/101** runtime-hardening tests, **43/43** SaaS/product/security audits, **63/63** server Node tests, and **16/16** deployment/script Node tests.
- Frozen-lock/workspace/barrel/template verification passes for **69** workspace importers, **68** workspace packages, **67** public entries, and **13/13** compiler template requirements.
- BF29 source guard passes the BF29 tree and fails closed against the BF28 tree. Syntax/transpile checks pass for the changed command manifest/handlers/collaboration service, and installer/deploy scripts pass syntax validation.
- This packaging environment has no installed workspace dependency tree, so the deployment host remains authoritative for native-preview `tsgo`, Biome, Vite, Vitest and Playwright execution.

# R14.28.14 Build Fix 28 validation addendum — 2026-08-21

- BF28 source guard requires TX5, upstream y-websocket/y-indexeddb, CRDT binary/directory/file-operation catalogs, exact delete events, full-project materialization, transient `channel=files` transfer, ready-host ordering, Projects loader and BF28 cache generation. The guard now validates the explicit installer/deployment source root and fails closed against an actual BF27 tree rather than validating the guard script's own directory.
- Production collaboration health certification uses the upstream WebsocketProvider with BroadcastChannel disabled and independently certifies the transient payload relay using control and binary frames.
- Signaling tests cover transient payload forwarding and require that late peers do not receive historical binary frames.
- Browser collaboration E2E imports a project containing LaTeX, Python, Markdown, CSV, PNG, PDF and opaque binary data; verifies the join loader and full project tree; then exercises bidirectional create/rename/delete, directory operations and a post-join binary image insertion.
- Final dependency-free BF28 verification: **20/20** focused R14.28.14 regressions, **350/350** release-contract checks, **101/101** runtime-hardening tests, **43/43** SaaS/product/security audits, **63/63** server Node tests, and **16/16** deployment/script Node tests.
- Frozen-lock/workspace/barrel/template verification passes for **69** workspace importers, **68** workspace packages, **67** public entries, and **13/13** compiler template requirements.
- Syntax/transpile verification passes for all **16** BF28-changed TypeScript/TSX files, all changed Node modules parse, installer/deployment shell syntax passes, and the full-project E2E fixture ZIP is intact.
- This clean packaging environment intentionally contains no workspace `node_modules`; the dependency-backed Vitest upstream-provider signaling spec, native-preview `tsgo`, Biome, Vite and Playwright execution remain authoritative installer/CI gates and are not claimed as executed here.

# R14.28.14 Build Fix 27 validation addendum — 2026-08-21

- Focused R14.28.14/BF27 regressions: **20/20 PASS**.
- Repository release-contract audit: **350/350 PASS**.
- Runtime-hardening tests: **101/101 PASS**.
- TeXise SaaS/product/security static audits: **43/43 PASS**.
- Server dependency-free Node tests: **63/63 PASS**.
- Script/deployment Node tests: **16/16 PASS**.
- Frozen-lock synchronization: **69 workspace importers PASS**.
- Workspace dependency consistency: **68 packages PASS**.
- Public barrel validation: **67 public entries across 68 packages PASS**.
- Template/compiler requirements: **13/13 PASS**.
- BF27 source guard verifies TX4, upstream `WebsocketProvider`, `y-indexeddb`, ready-host/project-name metadata, Source cursor labels, verify-before-create `/projects` joining, BrowserOPFS preference and no editor password/join form.
- Production-style health code uses real `WebsocketProvider` with BroadcastChannel disabled and protocol-v4 ready-host metadata.
- Browser E2E source now covers legacy-token rejection before creation, Host-name project navigation, mutual Host/Guest awareness, always-visible Source collaborator username, bidirectional incremental editing, authorship, Source→Visual, Follow, reconnect and durable local copy.
- This clean packaging environment has no installed workspace `node_modules`; Corepack again failed to retrieve pinned pnpm 11.6.0 because `registry.npmjs.org` DNS returned `EAI_AGAIN`. Therefore the deployment host remains the authoritative gate for native-preview `tsgo`, Biome, Vite, dependency-backed Vitest/Playwright and live Apache `/collab-live` certification.

# R14.28.14 Build Fix 26 validation addendum — 2026-08-21

- Production compiler error reproduced from BF25: `IndexeddbPersistence.set(LEGACY_MIGRATION_KEY, true)` violates the API type `string | number | ArrayBuffer | Date`.
- Corrected to versioned numeric metadata and added release contracts preventing boolean migration markers from returning.
- PWA application cache: `texise-app-shell-r14-28-14-buildfix26-v1`.
- Final BF26 dependency-free verification: 20/20 focused R14.28.14 regressions, 350/350 release-contract checks, 100/100 runtime-hardening tests, 63/63 server tests, and 16/16 script/deployment tests.
- Frozen-lock/workspace/barrel/template verification: 69 importers, 68 workspace packages, 67 public entries, and 13/13 compiler template requirements passed.
- A simulated BF25 stale overlay is rejected by the BF26 guard specifically because it still contains the boolean migration marker.

# R14.28.14 Build Fix 25 validation addendum — 2026-08-21

- Production symptom addressed: two users can no longer independently reach a false `live` state merely by synchronizing with an empty relay room. Guest activation is gated on matching host metadata and live awareness.
- Browser provider is now the upstream `y-websocket` provider; the handwritten BF17-BF24 client protocol has been retired.
- Production health certification now uses real `WebsocketProvider` clients with `disableBc: true`, so same-process BroadcastChannel cannot fake relay convergence.
- E2E routing follows the real upstream `/collab-live/<room>` URL and covers TX3 code parsing, wrong-password rejection, mutual presence, incremental bidirectional edits, Source→Visual propagation, authorship, Follow, reconnect and local persistence.
- Safe diagnostics intentionally contain no password, share secret, manuscript content or full room key.
- PWA application cache: `texise-app-shell-r14-28-14-buildfix25-v1`.
- Final dependency-free BF25 validation before packaging: **20/20** focused R14.28.14 regressions, **349/349** release contracts, **99/99** runtime-hardening tests, **43/43** SaaS/security audits, **63/63** server Node tests, and **16/16** deployment/script Node tests. Frozen-lock sync passes for **69** workspace importers, dependency consistency for **68** packages, public barrels for **67** entries, and template/compiler requirements are **13/13**.
- Installer/deployment shell syntax, changed Node syntax, package JSON parsing, and TypeScript syntax/transpile for the five BF25 TS/TSX files pass. A simulated shipped-BF24 tree is correctly rejected by the BF25 source guard as stale/partially overlaid.
- The dependency-backed native-preview `tsgo`, Biome, Vite, Vitest `server/signaling.spec.mjs` (including the real upstream-provider relay test), Playwright collaboration E2E, and production `/collab-live` health checker require the installed dependency tree and remain mandatory on the deployment host/CI with the pinned lockfile.

# R14.28.14 Build Fix 24 validation addendum — 2026-08-21

- Production BF23 eliminated the previous seven compiler errors but exposed two stricter `checkJs` errors where awareness `origin: unknown` was passed to `Map<WebSocket, Set<number>>.has/get`.
- BF24 narrows the unknown origin to an actual key from `created.clients` by identity before map access, retaining the callback trust boundary and preserving wire behavior.
- The BF24 source guard repairs stale BF21 payload/callback forms plus the exact BF23 origin-map pattern, and runs both at installer start and immediately before lint/typecheck.
- Final BF24 source validation before packaging: focused R14.28.14 regressions 19/19 PASS; release audit 348/348 PASS; runtime hardening 99/99 PASS; server Node tests 63/63 PASS; lock sync 69 importers PASS; dependency consistency 68 packages PASS; public barrels 67 entries PASS; template/compiler requirements 13/13 PASS.
- The BF24 guard was executed against the shipped BF21 and BF23 archives: both stale source generations repaired and verified successfully.
- Dependency-backed native-preview TypeScript on the production server remains the final compiler authority; the installer will run it after the BF24 guard.

# R14.28.14 Build Fix 23 validation addendum — 2026-08-21

- BF22 archive contents were independently extracted and verified to contain the TS7 WebSocket and signaling callback corrections, establishing stale deployment source as the cause of the repeated seven-error log.
- BF23 adds a dependency-free repair-and-fail-closed source guard and explicit installer build identity.
- The guard is tested both against the already-correct BF23 files and against simulated BF21 stale copies before release packaging.
- Final dependency-free release validation: focused R14.28.14 19/19 PASS; release audit 348/348 PASS; runtime hardening 99/99 PASS; server Node tests 63/63 PASS.

# R14.28.14 Build Fix 22 validation addendum — 2026-08-21

- Production dependency-backed installation exposed seven strict native-preview TypeScript errors after BF21 source-only validation: one DOM `WebSocket.send()` incompatibility for `Uint8Array<ArrayBufferLike>` and six implicit-`any` errors on the Yjs relay callbacks in `server/signaling.mjs`.
- The browser provider now copies outbound protocol bytes into a fresh `Uint8Array` and sends `wirePayload.buffer`, which is explicitly `ArrayBuffer`-backed and therefore satisfies the TS 7 DOM `BufferSource` overload without weakening types or changing bytes on the wire.
- The signaling relay now documents the Yjs `update` callback as `Uint8Array`, its transaction origin as `unknown`, and the awareness update payload as `{ added: number[], updated: number[], removed: number[] }` with `unknown` origin.
- BF22 rotates the application-shell cache to `texise-app-shell-r14-28-14-buildfix22-v1` and adds dependency-free regression/release checks for these exact compiler failures.
- The production server remains the authoritative place to rerun the full pinned `pnpm run custom-validation && pnpm run typecheck && biome lint ...` pipeline because this packaging environment does not contain the workspace dependency installation.

# R14.28.14 Build Fix 21 validation addendum — 2026-08-21

- Collaboration root cause was architectural rather than a missing join path: BF17 used a custom opaque update/full-snapshot protocol while Yjs, `LatexSourceService`, filesystem mirroring and Visual serialization could all reconcile the same manuscript. Presence could therefore join successfully while content convergence/highlighting raced or a stale projection overwrote synchronized state.
- BF21 uses the standard Yjs authority model: state-vector Sync Step 1/2 and awareness transport, stable room Y.Doc ownership, direct CodeMirror↔Y.Text binding and a guarded downstream application projection. TeXise-specific Visual/AI operations still enter the same Y.Text authority through canonical mutation events.
- The relay no longer stores/replaces arbitrary client snapshots. Late joiners synchronize against the merged in-memory room Y.Doc, and the browser continues to retain local encrypted-room-keyed collaboration state for browser-local persistence.
- Authorship no longer applies an asynchronous absolute-offset `Y.Text.format()` transaction. BF21 stores author spans as Yjs relative positions in collaboration metadata, resolves them dynamically for Source/Visual decoration, migrates old inline provenance and clears provenance without changing `.tex`.
- TikZ property-dialog headings now use a scoped light foreground over the existing `#2d2d2d` property modal.
- Administrator Pro is now an authoritative server entitlement. An active `role=admin` account receives Pro even without a licence; normal users retain the existing licence path. Cloud Compile, Linux Terminal and AI Review rely on this server-side authority rather than a UI-only bypass.
- Administrator AI Review activity remains auditable but does not consume a customer licence quota. Reservations carry `entitlement_source=admin`, nullable `license_id`, and generation fails if the role has been removed. The schema repair is idempotent because MySQL `ALTER TABLE` auto-commits.
- Source validation currently passes: 347/347 release contracts, 18/18 focused R14.28.14 regressions, 99/99 runtime-hardening tests, 11/11 administrator entitlement/AI Review/migration tests, plus Cloud Compile 5/5, Linux Terminal 4/4, router 3/3, security 5/5, auth 4/4 and licence-policy 4/4.
- This extracted source archive has no installed workspace dependencies or pnpm. Corepack attempted to obtain pnpm 11.6.0 but DNS resolution for registry.npmjs.org returned `EAI_AGAIN`; therefore dependency-backed `custom-validation`, native-preview TypeScript, Biome, Vite, Playwright and the runtime `ws`/Yjs protocol spec cannot honestly be claimed here. Those remain mandatory CI/installer checks before any production deployment.

# R14.28.14 Build Fix 20 validation addendum — 2026-08-21

- Production BF19 exposed a TikZ presentation regression: the outer TeXise dialog stayed around the shared `sm:max-w-sm` desktop width even though TikZ requested `97vw`, producing the narrow/tall workspace seen in the browser screenshot.
- Root cause: `DialogContent` ships a responsive `sm:max-w-sm`; BF17 only supplied an unprefixed maximum width, so the responsive rule won at desktop sizes.
- BF20 supplies both `sm:max-w-[1680px]` and an inline 97vw/1680px width safeguard. The TikZ iframe therefore receives a genuinely wide rectangular workspace.
- TikZ Draw tools are rethemed from dark tiles to TeXise white/yellow controls with black icons, yellow active/primary state, pale-yellow hover, and normalized panel selection/header surfaces.
- PWA application-shell cache advances to `texise-app-shell-r14-28-14-buildfix20-v1`.
- Source validation before packaging: 346/346 release contracts, 43/43 SaaS/security audits, 17/17 focused R14.28.14 regressions, 99/99 runtime-hardening tests, 91/91 combined server/deployment/regression tests, 69 pnpm lock importers, 68 workspace dependency checks, 67 public barrels, 13/13 template/compiler requirements, shell/Node syntax PASS, and TypeScript syntax parsing across 957 TS/TSX files PASS.

# R14.28.14 Build Fix 18 validation addendum — 2026-08-21

## R14.28.14 Build Fix 19 — collaboration E2E Biome noParameterAssign correction — 2026-08-21

- Production BF18 install passed custom validation and TypeScript, then stopped on Biome `lint/style/noParameterAssign` in `packages/tooling/e2e-tests/src/latex-collaboration-r9.e2e.ts`.
- Fixed by introducing a local `routedUrl` variable and never assigning to the constructor parameter `url`.
- Added dependency-free regression/release contracts for the exact production lint failure.


- Production BF17 passed dependency installation and custom validation, then the pinned native-preview TypeScript compiler reported three collaboration-transport typing errors: unsubscribe inference (`() => undefined`), DOM `WebSocket.send()` rejecting `Uint8Array<ArrayBufferLike>`, and Node `Buffer.from()` receiving the `Buffer[] | ArrayBuffer` portion of `ws.RawData`.
- BF18 fixes those exact type boundaries without changing the collaboration protocol or runtime architecture: optional typed unsubscribe, explicit `ArrayBuffer` frame allocation, and explicit fragmented-`RawData` concatenation.
- Source-level BF18 validation: 344/344 release contracts, 43/43 SaaS/security audits, 15/15 focused R14.28.14 regressions, 99/99 runtime-hardening tests, 74/74 server/deployment tests, 69 pnpm lock importers, 68 workspace dependency checks, 67 public barrels, and 13/13 template/compiler requirements.
- The clean release worktree intentionally excludes `node_modules`; the exact pinned `tsgo`, Biome and Vite pipeline remains the OVH installer/CI gate. The fixes are written specifically against the three compiler diagnostics observed in production.

# R14.28.14 Build Fix 17 validation addendum — 2026-08-21

- TikZ Draw replacement: same-origin vendored MIT editor, large rectangular modal, local image import and canonical TikZ insertion contracts added.
- Collaboration: `/collab-live` is authoritative; production checker certifies snapshot replay, document update, awareness and peer departure. Browser E2E source is migrated to two independent contexts and no longer relies on the old `texise-collaboration-signaling` localStorage override.
- Google-Docs-style authorship and presence remain Yjs-only metadata outside `.tex`; review completion removes provenance highlighting while retaining accepted source.
- Toolbar labels are `Tools`, `Track`, and `Cloud Terminal`.
- Final source-level BF17 matrix: 343/343 release contracts, 43/43 SaaS/security audits, 14/14 focused R14.28.14/BF17 regressions, 99/99 runtime-hardening tests, 74/74 server/deployment tests, 69 pnpm lock importers, 68 workspace dependency checks, 67 public barrels, and 13/13 template compiler requirements. Whole-tree TypeScript syntax parsing covers 955 TS/TSX files.
- This clean release worktree intentionally excludes `node_modules`; pinned `tsgo`, Biome, Vite and browser Playwright execution remain deployment/CI gates and must not be claimed as locally executed.

# R14.28.14 Build Fix 16 validation addendum — 2026-08-21

- Production BF15 compiled successfully but `/ws#route=editor&wsPath=...` could still render the SaaS `Page not found` shell. BF13's pre-initialization boot snapshot was still present, so BF16 hardens the top-level application boundary instead of repeating the same fix: editor intent is restored after initialization when necessary, URL/history transitions are observed live, and `/ws` dynamically mounts the editor shell.
- The PWA service-worker URL now includes the current build timestamp and the shell cache identity advances to the BF16 generation so older cached shells cannot keep pre-fix routing logic after deployment.
- Collaboration now retains Yjs-only author provenance on inserted ranges and projects distinct per-author highlights into both CodeMirror Source and ProseMirror Visual mode. Hovering a highlighted range reports `Inserted by <name>`; no collaboration/review metadata is written to `.tex`.
- Review now exposes **Accept collaborator edits** and clears only provenance metadata. It is disabled while tracked changes remain pending; resolving the final pending tracked review automatically removes the collaboration authorship highlights.
- BF16 dependency-free source validation before packaging: 338/338 release contracts, 43/43 SaaS/security audits, 99/99 runtime-hardening tests, 74/74 combined server/deployment tests, 13/13 focused R14.28.14 regressions, 69 pnpm lock importers, 68 workspace dependency checks, 67 public barrels, 13/13 template/compiler requirements, shell/Node syntax PASS, and whole-tree TypeScript parser validation PASS.
- The source-only release workspace intentionally contains no `node_modules`; therefore dependency-backed `tsgo`, Biome and Vite remain production-installer certification gates and are not claimed here.

# R14.28.14 Build Fix 15 validation addendum — 2026-08-21

- Production BF14 passed custom validation and both `tsgo` typecheck stages, then Biome stopped on one accessibility rule in `learn-pages.tsx`: `aria-label` was attached to the generic Learn progress `<div>`.
- BF15 changes that element to an explicit ARIA `progressbar` with `aria-valuemin=0`, `aria-valuemax=100`, dynamic `aria-valuenow`, and a human-readable `aria-valuetext`.
- The focused regression now protects this exact production lint class and forbids restoring the unsupported generic-div pattern.
- BF15 dependency-free validation: 336/336 release contracts, 43/43 SaaS/security audits, 99/99 runtime-hardening tests, 83/83 combined server/deployment/regression tests, 13/13 focused R14.28.14 regressions, 69 pnpm lock importers, 68 workspace dependency checks, 67 public barrels, 13/13 template compiler requirements, shell/Node syntax PASS, and TypeScript syntax parsing across 956 TS/TSX files PASS.
- All BF14 product functionality is otherwise unchanged. Production BF14 already demonstrated that `custom-validation` and both `tsgo` stages pass; the only dependency-backed blocker reported was the Biome ARIA rule corrected here.

# R14.28.14 Build Fix 14 validation addendum — 2026-08-21

- Adds a browser-local TikZ Visual Editor with canonical LaTeX insertion, package/library provisioning, keyboard/pointer node positioning and generated source preview.
- Extends Yjs collaboration awareness with file/mode/source-range presence; Source and Visual now expose peer-colored cursors/selections, header avatars/count, and a collaborator panel showing who is editing what with one-click file navigation.
- Adds `/learn` plus 12 original LaTeX training guides, browser-local completion progress, public search/navigation/footer integration and sitemap coverage.
- Aligns the standalone Console Gateway service lock on exact `ws 8.21.0` with regression protection.
- Full BF14 audit is recorded in `docs/TEXISE_FULL_PRODUCT_AUDIT_R14_28_14_BF14.md`.
- Dependency-free validation in the BF14 source tree: 335/335 release contracts, 43/43 SaaS/security audits, 99/99 runtime-hardening tests, 87/87 combined server/deployment/regression tests, 13/13 focused R14.28.14 regressions, 69 pnpm lock importers, 68 workspace dependency consistency checks, 67 public barrels, 13/13 template compiler requirements, and installer/deployment shell syntax PASS.
- Global TypeScript parser/transpile validation passes for all BF14-modified TS/TSX files, and whole-tree TypeScript parsing passes across 954 first-party TS/TSX files. Full dependency-backed `tsgo`, Biome and Vite cannot run in the isolated archive workspace because dependencies are intentionally absent and npm/Corepack resolution is unavailable; production deployment remains the authoritative dependency-backed certification.

# R14.28.14 Build Fix 13 validation addendum — 2026-08-21

- Production deployment completed far enough for the website to serve, but editor deep links such as `/ws#route=editor&wsPath=ghfgh%3Amain.tex` rendered the SaaS `Page not found` page instead of the editor.
- Build Fix 13 captures `/ws` deep-link intent before `initializeServices()` and makes that boot snapshot authoritative when selecting the editor shell, while preserving the bare `/ws -> /projects` behavior.
- Dependency-free regression coverage requires the capture to occur before service initialization and forbids falling back to the SaaS shell for a hashed `/ws` entry.

# R14.28.14 Build Fix 10 validation addendum — 2026-08-20

- Production Build Fix 9 certified the trusted API, Cloud Compile, Linux Terminal scientific/toolchain path and Apache canonical vhost selection, then failed only because `/examples` was being handled by SPA fallback instead of returning the compatibility redirect expected by deployment health.
- Build Fix 10 adds an explicit Apache `301 /examples -> https://www.texise.com/templates` rule on both HTTP and HTTPS vhosts before catch-all routing.
- Server execution images are now intentionally separate: Cloud Compile uses `texlive/texlive:latest`; Linux Terminal Pro uses `texlive/texlive-console:pro`. The old shared `TEXISE_EXECUTION_IMAGE` key and host-mounted scientific Python overlay are retired.
- Cloud Docker execution pins explicit `latexmk` and `synctex` entrypoints; terminal execution pins `/bin/bash`, preventing image ENTRYPOINT metadata from changing TeXise command semantics.
- Linux Terminal production certification now hard-requires the full advertised Pro toolchain directly inside the locally built `texlive/texlive-console:pro`.
- Dependency-free validation after the refactor: 330/330 release contracts, 43/43 SaaS/security audits, 99/99 runtime-hardening tests, 58/58 trusted-server tests, 16/16 deployment-config tests, 8/8 R14.28.14 regressions, plus lock/dependency/barrel/template and shell/Node syntax gates PASS.

- Build Fix 8 source validation: 329/329 release contracts, 43/43 SaaS/security audits, 99/99 runtime-hardening tests, 58/58 trusted-server tests, 12/12 deployment-config tests, and 8/8 R14.28.14 regressions. Production scientific Python modules are now reported separately from core Linux Terminal health; the current OVH image log showed NumPy absent.
# R14.28.14 Build Fix 7 validation addendum — 2026-08-20

- Production OVH passed the complete source/build pipeline, trusted API health, and private Cloud Compile health, then advanced through Console Gateway websocket construction.
- Linux Terminal certification returned `404` when downloading `cert/generated.txt` because its success marker was present literally in the command sent to the interactive PTY; terminal echo satisfied the marker wait before the command had executed.
- Build Fix 7 splits the marker in the submitted shell command so only command execution can produce the complete marker, verifies the generated file via the gateway listing API, then downloads and compares its bytes.
- Regression coverage protects against reintroducing the PTY-echo false-positive race.
- Post-fix dependency-free validation: repository contracts 329/329, SaaS/security audits 43/43, runtime hardening 99/99, server/deployment tests 81/81, lock/dependency/barrel/template checks PASS, and installer/deployment Node/Bash syntax PASS.

# R14.28.14 Build Fix 6 validation addendum — 2026-08-20

- Production OVH reached Linux Terminal Pro certification after custom validation, both `tsgo` passes, Biome, Vite, BusyTeX/font checks, SaaS/MySQL preflight, trusted API health, and private Cloud Compile worker health all passed.
- The remaining failure was checker-local: dynamically importing the locked `ws` CommonJS entry returned a module namespace whose `WebSocket` binding was not constructible in this execution shape.
- `scripts/check-console-gateway.mjs` now resolves `ws` with `createRequire()` from the Console Gateway package scope and normalizes the CommonJS/current alternate export shapes before constructing the socket.
- R14.28.14 regression coverage forbids the previous dynamic-import path and requires package-scoped dependency resolution.

# R14.28.14 Build Fix 5 validation addendum — 2026-08-20

- Production Build Fix 4 advanced through custom validation, both `tsgo` stages, Biome, Vite, BusyTeX provisioning, MySQL/SaaS preflight, trusted API health, and Cloud Compile worker health.
- Linux Terminal certification then failed because `check-console-gateway.mjs` resolved the Console Gateway `ws` module from `process.cwd()` rather than the source tree. The failing path omitted `/public_html`.
- Build Fix 5 derives the source root from `import.meta.url` and adds regression coverage so certification can be launched from `/var/www/texise.com`, `/root`, or any other operator working directory.
- `127.0.0.1:3100` remains the private trusted API listener and is unrelated to the historical `app.texise.com` Apache vhost shown in the production diagnostic.

# R14.28.14 Build Fix 4 validation addendum — 2026-08-20

- Production OVH passed the complete dependency-backed application gate: `custom-validation`, root/mobile `tsgo`, Biome lint, Vite production build, BusyTeX/runtime checks, eight production fonts, SaaS MySQL migration/admin preflight and trusted API activation.
- The remaining deployment failure was isolated to `texise-latex-compile.service`: an already-running `Restart=always` unit raced `npm ci` and briefly observed a missing `express`, then the dedicated `texise-compile` user consistently failed with `EACCES` because parent `texise-data`/`tmp` directories denied traversal.
- Build Fix 4 quiesces existing Cloud/Console units during dependency replacement, validates their dependency markers, grants execute-only parent traversal (`0751` for `texise-data`, `0711` for `texise-data/tmp`) while retaining private service-owned child workspaces, and probes write access as each service account before activation.
- Console Gateway dependency permissions now preserve native executable bits required by `node-pty`; group/other write access is removed without flattening all files to `0644`.
- Cloud Compile and Console Gateway health checks now retry briefly after systemd restart before reporting a startup failure.
- Static/dependency-free release suites remain green after these changes; live Docker compile/terminal certification remains the next production-host gate.

# R14.28.14 Build Fix 3 validation addendum — 2026-08-20

- Production OVH passed `custom-validation`, both `tsgo` typecheck stages, Biome lint, the Vite production build, dist staging, compiler/font checks, SaaS MySQL preflight and trusted API activation.
- Deployment then failed only because `texise_cloud_compile_health_check` double-escaped its Bash ERE and misclassified `http://127.0.0.1:3001/api/compile` as non-loopback.
- The Cloud Compile health-check ERE is corrected and directly regression-tested for IPv4 loopback, `localhost`, IPv6 loopback, and rejection of public/non-worker URLs.
- No product/runtime architecture change is introduced by this fix.

# R14.28.14 Build Fix 2 validation addendum — 2026-08-20

- Production OVH now passes `pnpm run custom-validation`, root `tsgo -b tsconfig.tsgo.json`, and the mobile-entry `tsgo --noEmit` typecheck.
- The subsequent pinned Biome lint exposed two Home-page issues only: unsupported `aria-label` on a role-less workspace mock `<div>` and an array-index-derived comparison-table cell key.
- Fixed the workspace mock with semantic `role="img"` plus its existing label, and rewrote comparison-row rendering to use fixed named columns with no index-derived React keys.
- Dependency-free post-fix verification passes: repository contracts 329/329, SaaS static audits 43/43, runtime hardening 99/99, server/deployment tests 70/70, R14.28.14 regressions 7/7, lock/dependency/barrel checks and template requirements 13/13.
- The production host should rerun the normal installer gate; no other source change is required for these two reported Biome diagnostics.

# R14.28.14 Build Fix 1 validation addendum — 2026-08-20

- Production OVH `tsgo` exposed four React 19 ref-typing errors in `packages/core/app/src/components/linux-terminal-pro.tsx`.
- Fixed by using `React.useRef<WebSocket | null>(null)` and `React.useRef<LinuxTerminalSession | null>(null)` and clearing both refs with `null`.
- Repository-wide source scan confirms no remaining zero-argument generic `useRef<T>()` calls in `packages/` or `server/`.
- Dependency-free release audit, R14.28.14 regression, runtime-hardening and server tests pass after the fix.

# R14.28.14 final source-release validation — 2026-08-20

Final frozen working-tree gates after Linux Terminal · Pro integration and Home/Pricing responsive-style completion:

- Repository static contract audit: **329/329 PASS**.
- Dependency-free server/deployment suite, including Cloud Compile + Linux Terminal broker and R14.28.14 regressions: **81/81 PASS**.
- Runtime hardening suite: **99/99 PASS**.
- SaaS/product/security static audit: **43/43 PASS**.
- Template compiler requirements: **13/13 PASS**.
- Frozen pnpm-lock workspace importers: **69 PASS**.
- Workspace dependency consistency: **68 packages PASS**.
- Public barrel validation: **67 entries across 68 packages PASS**.
- Deployment shell syntax and changed trusted API/Cloud worker/Console Gateway Node syntax: **PASS**.
- Packaging scan: no font binaries, `node_modules`, `.env`, PEM/private-key files, runtime `texise-data`, or production `texise-media` files are permitted in the release artifact.
- Canonical active origin/root are `https://www.texise.com` and `/var/www/texise.com/public_html`; `app.texise.com` and `/var/lib/texise*` references are restricted to migration, redirect, rollback or regression-test compatibility.
- Active execution services use independent images: Cloud Compile `texlive/texlive:latest` (non-interactive/no-network) and Linux Terminal Pro `texlive/texlive-console:pro` (authenticated interactive execution with explicit project transfer and controlled download).

The sandbox still cannot resolve `registry.npmjs.org` (`EAI_AGAIN`) and contains no workspace `node_modules`. Therefore `pnpm install --frozen-lockfile`, `pnpm run custom-validation`, `pnpm run typecheck` (`tsgo`), pinned Biome, Vite production build and browser/live-OVH certification remain **NOT RUNTIME-VERIFIED here** and are mandatory production installer/host gates.

---

# R14.28.14 validation addendum

Date: 2026-08-20
Authoritative source baseline: R14.28.13, SHA-256 `bffb8140b309c59373a5c7d8384c54e7aebb539ad010d8c69699eafc9514e1de`.

## PASS — executable/source-verifiable gates in this sandbox

- Repository static contract audit: **329/329 PASS**.
- Runtime/product hardening + R14.28.14 regression suite: **105/105 PASS**.
- Dependency-free server/deployment tests: **70/70 PASS**.
- Frozen-lock workspace importer validation: **69 importers PASS**.
- Workspace dependency-version consistency: **68 packages PASS**.
- Public barrel validation: **67 entries across 68 packages PASS**.
- Template compiler requirements: **13/13 PASS**.
- Deployment shell syntax (`install`, `upgrade`, `uninstall`, deploy library): **PASS**.
- Changed server/Cloud worker Node syntax: **PASS**.
- Dependency-free TypeScript parser/transpile syntax scan: **948 TS/TSX/MTS/CTS files PASS**. This is a syntax gate only, not a substitute for `tsgo`.
- Cloud Compile broker/worker contract includes server-authoritative Pro gating, loopback secret auth, bounded input/output/time/concurrency, Docker-only production execution, no network, read-only filesystem/source, dropped capabilities, unprivileged UID, no shell escape, cancellation and cleanup/scavenging.
- Linux Terminal · Pro uses the active Console Gateway through trusted API Pro gating and a short-lived websocket protocol credential; Hocuspocus/Reverb consumers remain absent and only those two services retire post-health. Static contracts cover shared-image use, no token-in-URL, dedicated Docker service users, symlink confinement and workspace quota enforcement.

## NOT RUNTIME-VERIFIED in this sandbox

The environment cannot resolve `registry.npmjs.org`; Corepack/pnpm installation fails with `getaddrinfo EAI_AGAIN registry.npmjs.org`. There is no existing workspace `node_modules`. Therefore the following mandatory production gates are intentionally **not** represented as passed here:

- `pnpm install --frozen-lockfile`
- `pnpm run custom-validation`
- `pnpm run typecheck` (`tsgo` + mobile typecheck)
- pinned Biome lint
- production Vite build
- Playwright/browser compiler certification
- live Apache `configtest`, certificate SAN checks and redirects/hash-route behavior
- live MySQL/OAuth/CSRF/session flows
- Blog upload as the production service user
- live `/collab-live` synchronization certification (snapshot replay, document update, awareness and peer departure) plus compatibility-only `/collab-signal` websocket upgrade
- real production shared Docker image certification for Cloud Compile and Linux Terminal, including tool inventory, upload/download, filesystem isolation, egress policy and cleanup probes.

The installer/production verification path remains responsible for those host-dependent gates and must fail activation rather than claim certification if they fail.

---

# TeXise SaaS final validation report

Date: 2026-08-20
Baseline: TeXise R14.28.12 / R31 Build Fix 4.4 source supplied for this conversion.

## Verification semantics

- **PASS** means the requirement was exercised by an executable dependency-free test/contract check in this environment, or the requirement is a source-architecture invariant that can be conclusively verified statically (for example, the server project API has no file-content fields).
- **NOT RUNTIME-VERIFIED** means implementation is present but the required dependency/service/browser path could not actually be exercised here. This is not presented as a pass.
- No item is marked PASS merely because source code exists.

## Environment limits

This source-only execution environment contains no installed workspace `node_modules`, so the dependency-backed `pnpm run custom-validation`, `pnpm run typecheck`, pinned Biome lint, browser E2E and production Vite build cannot be honestly rerun here. Those remain explicit OVH installer/host gates. The prior OVH run already proved dependency installation and TypeScript can execute against the pinned toolchain; subsequent host output should be treated as authoritative for dependency-backed failures.

MySQL/OAuth/SMTP/live Apache/browser certification also remains environment-dependent. Font binaries are deliberately not redistributed in the release package; production installation imports the eight approved external font files after build and verifies their served signatures.

## Executable results

- Full dependency-free Node regression suite, including Blog media behavior: **166/166 PASS**.
- TeXise SaaS/product/security static audit: **43/43 PASS**.
- Repository static contract audit: **328/328 PASS**.
- Template compiler requirement audit: **13/13 bundled requirements PASS**.
- pnpm frozen-lock snapshot audit: **69 workspace importers PASS**.
- Workspace dependency version audit: **68 packages PASS**.
- Public package barrel audit: **67 entries across 68 packages PASS**.
- Deployment shell `bash -n`: **PASS**.
- Active runtime/media architecture uses `public_html/texise-data` and `public_html/texise-media`; `/var/lib/texise*` occurs only in explicit historical upgrade-migration compatibility paths.
- Blog media tests exercise PNG/JPEG/WebP recognition, unsafe/spoofed content rejection, multipart binary extraction and atomic generated-name persistence.
- Full dependency-backed TypeScript/Biome/build: **NOT RUNTIME-VERIFIED in this container; must run on OVH**.

## Authoritative checklist

```text
SOURCE AUDIT: PASS

PREFIX DESIGN EXTRACTION: PASS
MORANGA: NOT RUNTIME-VERIFIED
INTER: NOT RUNTIME-VERIFIED
JETBRAINS MONO: NOT RUNTIME-VERIFIED

STIX NORMAL: NOT RUNTIME-VERIFIED
STIX ITALIC: NOT RUNTIME-VERIFIED
STIX UI LEAKAGE: PASS

PUBLIC WEBSITE PREFIX FIDELITY: NOT RUNTIME-VERIFIED
PROJECTS PREFIX FIDELITY: NOT RUNTIME-VERIFIED
EDITOR PREFIX FIDELITY: NOT RUNTIME-VERIFIED
LEGACY UPSTREAM VISUAL IDENTITY REMOVED: PASS

LIGHT THEME: NOT RUNTIME-VERIFIED
DARK THEME: NOT RUNTIME-VERIFIED

375PX: NOT RUNTIME-VERIFIED
430PX: NOT RUNTIME-VERIFIED
768PX: NOT RUNTIME-VERIFIED
1024PX: NOT RUNTIME-VERIFIED
1440PX: NOT RUNTIME-VERIFIED
1920PX: NOT RUNTIME-VERIFIED

MYSQL: NOT RUNTIME-VERIFIED
FRESH MIGRATION: NOT RUNTIME-VERIFIED
UPGRADE MIGRATION: NOT RUNTIME-VERIFIED

GOOGLE AUTH: NOT RUNTIME-VERIFIED
RETURNING LOGIN: NOT RUNTIME-VERIFIED
LOGOUT: NOT RUNTIME-VERIFIED
SETTINGS: NOT RUNTIME-VERIFIED
ACCOUNT DELETE: NOT RUNTIME-VERIFIED

PROJECT REGISTRY: NOT RUNTIME-VERIFIED
PROJECT METADATA ONLY: PASS
PROJECT FILE UPLOAD GUARD: PASS
LINK FOLDER: NOT RUNTIME-VERIFIED
RELINK FOLDER: NOT RUNTIME-VERIFIED
CROSS-DEVICE PROJECT LIST: NOT RUNTIME-VERIFIED
RENAME SYNC: NOT RUNTIME-VERIFIED
REMOVE FROM ACCOUNT: NOT RUNTIME-VERIFIED

TEMPLATE SCANNER: PASS
FREE TEMPLATE INDEXING: PASS
PRO TEMPLATE INDEXING: PASS
TEMPLATE MANIFEST: PASS
ATOMIC MANIFEST WRITE: PASS
/templates: NOT RUNTIME-VERIFIED
/templates/:slug: NOT RUNTIME-VERIFIED
FREE TEMPLATE APPLY: NOT RUNTIME-VERIFIED
PRO TEMPLATE APPLY: NOT RUNTIME-VERIFIED
BROWSER STORAGE APPLY: NOT RUNTIME-VERIFIED
LOCAL FOLDER APPLY: NOT RUNTIME-VERIFIED
NESTED TEMPLATE COPY: NOT RUNTIME-VERIFIED
ENTRY FILE OPEN: NOT RUNTIME-VERIFIED

BLOG CMS: NOT RUNTIME-VERIFIED
DOCS CMS: NOT RUNTIME-VERIFIED
CMS SANITIZATION: PASS

ANONYMOUS LICENSE: NOT RUNTIME-VERIFIED
ACCOUNT LICENSE: NOT RUNTIME-VERIFIED
LICENSE RESTORE: NOT RUNTIME-VERIFIED
LICENSE BLOCK: PASS
AI QUOTA: PASS

ADMIN AUTH: NOT RUNTIME-VERIFIED
ADMIN USERS: NOT RUNTIME-VERIFIED
ADMIN LICENSES: NOT RUNTIME-VERIFIED
ADMIN SUPPORT: NOT RUNTIME-VERIFIED
ADMIN BLOG: NOT RUNTIME-VERIFIED
ADMIN DOCS: NOT RUNTIME-VERIFIED

CONTACT DB: NOT RUNTIME-VERIFIED
SMTP: NOT RUNTIME-VERIFIED

BUILD: NOT RUNTIME-VERIFIED
TYPECHECK: NOT RUNTIME-VERIFIED
LINT: NOT RUNTIME-VERIFIED
TESTS: PASS

/WS SOURCE: NOT RUNTIME-VERIFIED
/WS VISUAL: NOT RUNTIME-VERIFIED
/WS ENTER/NEWLINE: NOT RUNTIME-VERIFIED
/WS LISTS: NOT RUNTIME-VERIFIED
/WS SECTIONS: NOT RUNTIME-VERIFIED
/WS MATHLIVE: NOT RUNTIME-VERIFIED
/WS COMPILE: NOT RUNTIME-VERIFIED
/WS PDF: NOT RUNTIME-VERIFIED
/WS SYNCTEX: NOT RUNTIME-VERIFIED
/WS AI: NOT RUNTIME-VERIFIED
/WS PAPER MEMORY: NOT RUNTIME-VERIFIED
/WS TERMINAL: NOT RUNTIME-VERIFIED
/WS MOBILE: NOT RUNTIME-VERIFIED

BROWSER-LOCAL COMPILATION: PASS
NO ONBOARDING: PASS
EXISTING TEXISE REGRESSION: NOT RUNTIME-VERIFIED
```

## Post-release completeness audit — 2026-08-20

A second line-by-line audit against the authoritative master plan found and corrected several items that the first report described too broadly as complete:

- safe account preferences are now rehydrated after login and remain best-effort so account/network failure cannot block local editing;
- `/ws` now includes a compact application-header Light/Dark/System theme control using existing Workbench theme state and best-effort safe account synchronization;
- the blank-project flow is now one compact functional storage/name dialog, with no staged Next/Back onboarding wizard;
- the Projects registry now records `last_opened_at` non-blockingly, retries failed metadata patches from browser-local safe metadata, supports explicit **Add to account** for existing local-only workspaces and restores/archives/removes cross-device registry rows;
- template/import project registrations preserve only their safe storage/template descriptor browser-locally, so a failed cloud-metadata create can be retried later without losing template identity or uploading manuscript content;
- Settings now exposes provider/account dates, license state, quota/usage and a synchronized preferred-storage setting;
- admin Users/Licenses tables now visibly expose the required project/license/quota/usage/account fields and quota can be increased or decreased;
- CMS publication now records/returns author, tags and article publication metadata, while public search covers descriptions/categories/authors/tags rather than titles only;
- contact validation now rejects CR/LF injection in mail-header fields before database/SMTP work;
- malformed legacy `user_settings.settings_json` now safely falls back to an empty settings object and is repaired on the next valid update;
- no template preview/thumbnail assets exist in the supplied/current template tree. The required fallback order therefore terminates at the implemented safe placeholder; no preview, usage statistic or example output is fabricated.

These corrections are covered by the expanded 20-point SaaS static audit and the current 39-test server suite where executable in this dependency-free environment.

## What the PASS entries establish

### Local-first/file-content boundary

The project API allowlist contains only project metadata fields and has no project upload/compile route. Account deletion and remove-from-account APIs explicitly report that local files were not deleted. `/ws` continues to mount the existing editor application and compiler; the SaaS backend is not a TeX compile authority.

### Template authority and safety

The scanner tests exercise Free/Pro parent-tier authority, safe public URLs, duplicate-ID failure, metadata tier-override rejection and failed-generation preservation of the previous valid manifest. The static audit verifies traversal-safe manifest paths and entry-file membership.

### Account/license/quota security

Tests exercise Google identity-link conflicts, OAuth state/PKCE setup, secure session-cookie attributes, expired/suspended session handling, cross-site mutation rejection, open-redirect prevention, license fingerprint masking, administrator block enforcement, cross-account license reassignment rejection, AI Review quota reservation/charge/refund/exhaustion and blocked entitlement rejection.

### CMS/contact safety

The Markdown renderer test proves raw HTML is escaped and unsafe links are blocked. Static checks prove public blog/docs detail regenerates rendered HTML from Markdown. Contact tests exercise anonymous/account-associated tickets, invalid email, maximum message length, rate limiting, honeypot behavior, CR/LF mail-header-injection rejection, SMTP success/failure and database failure semantics.

### Existing editor protection

The 99-test hardening suite and 328-check source contract audit remain green after the SaaS conversion, including existing compiler/editor/Paper Memory/AI/terminal architecture checks. These are valuable regression guards but are not a substitute for real browser E2E, therefore the `/WS` interaction rows above remain `NOT RUNTIME-VERIFIED`.

## Required production verification after dependencies/credentials are available

1. Restore required font binaries from the authoritative original archives/source.
2. Install the pinned workspace/runtime dependencies and run `pnpm run build`, `pnpm run typecheck`, `pnpm run lint:ci`, `pnpm run test:ci` and `pnpm run release:quality`.
3. Run fresh, repeat and upgrade installs against a real MySQL 8-compatible deployment; inspect `schema_migrations` and legacy import behavior.
4. Exercise Google new/returning login, invalid state, logout, suspended account, avatar/settings and account deletion with the real OAuth client.
5. Exercise SMTP delivery and failure handling against the configured mail provider.
6. Run browser E2E at 375, 430, 768, 1024, 1280, 1440 and 1920 widths in light/dark/system themes.
7. Execute the user-specified cloud project registry, Free/Pro template apply, local-folder relink and cross-device scenarios.
8. Re-run the existing TeXise editor compiler/SyncTeX/Visual/MathLive/AI/Paper Memory/terminal/mobile release suite.
9. Perform a side-by-side visual review against the supplied design reference; if `/projects` or `/ws` still reads visually as an inherited upstream application, treat that as a release failure and continue the presentation pass.

## Production build incident verification — 2026-08-20

The operator-provided production install log established the following real runtime facts before failure:

- frozen-lock dependency installation: **PASS**
- 69 workspace importers lock sync: **PASS**
- 68 workspace package dependency consistency: **PASS**
- 67 public entries across 68 packages: **PASS**
- custom validation: **PASS**
- TypeScript build: **FAIL before hotfix**, with exactly two errors in `saas-app.tsx` (`Github` export and NativeFS type narrowing)

Both reported source errors are corrected in this package. The post-fix full production typecheck/build is **NOT YET RUNTIME-VERIFIED** in this container because the dependency tree/toolchain is unavailable here; rerun the normal installer/build on the deployment host.

The deployment hardening fix for AI Review state is covered by 7/7 dependency-free installer/config tests: the retired `/etc/texise/ai-review-audit.sqlite3` default migrates to `/var/www/app.texise.com/public_html/texise-data/audit/ai-review-audit.sqlite3`, and an existing old DB is moved only at the service restart boundary.

## `/etc/texise` permission post-condition — 2026-08-20

**SOURCE VERIFICATION: PASS.** Install/upgrade now normalizes and then verifies `/etc/texise` as `root:texise 0750`. Each present known TeXise file (`texise.env`, `config.json`, `license-keys`, `entitlement-private.pem`, `entitlement-public.pem`, `entitlement-refresh.key`) must verify as `root:texise 0640` or deployment aborts with the observed mismatch. The exact legacy `entitlement-public.pem root:root 0644` case is covered by an executable regression and preserves file contents while correcting its mode/ownership.

## Production Biome corrective pass — 2026-08-20

The OVH production build advanced through `custom-validation` and both TypeScript typecheck stages, then Biome 2.5.7 reported 31 lint diagnostics. The corrective source pass resolves the complete reported set:

- 26 raw `<button>` elements now use explicit `type="button"`.
- The admin search control no longer wraps the custom `Input` component in an unassociated native `<label>`; the input retains its accessible `aria-label`.
- Public CMS content and admin CMS preview use one `SanitizedHtml` boundary. The single `dangerouslySetInnerHTML` call is narrowly documented/suppressed because the HTML comes only from TeXise's server-side sanitized Markdown renderer.
- Template manifest control-character validation no longer uses the Biome-rejected control-character regex; it performs an explicit Unicode code-point check instead.
- A new static audit rejects recurrence of all four classes.

Local dependency-free verification after the corrective pass: **39/39 server tests, 12/12 template+installer tests, 99/99 runtime-hardening tests, 23/23 SaaS static audits PASS**. The actual production `biome lint`/build must be rerun on the OVH host for final runtime certification.

## 2026-08-20 trusted API / MySQL bootstrap corrective verification

- Startup diagnostics tests: PASS.
- Reserved bootstrap-admin conflict test: PASS.
- Staged SaaS preflight ordering/config test: PASS.
- Server/account/security dependency-free suite: 43/43 PASS.
- Template+installer suite: 13/13 PASS.
- SaaS static architecture/security suite: 24/24 PASS.
- Existing runtime-hardening suite: 99/99 PASS.
- Existing repository contract audit: 328/328 PASS.
- Real production MySQL (`texise_db`) preflight and systemd restart: requires execution on the deployment host; installer now performs and reports this before activating a new runtime.

## Production font deployment corrective verification — 2026-08-20

- Root cause: fonts were copied into `dist/texise-fonts` before Vite rebuilt `dist`, so they were deleted.
- Runtime-name mismatch: supplied `Latinotype - Moranga Regular.otf` now deploys as `Moranga-Regular.otf`.
- Real supplied assets validated through the installer helper: Moranga `OTTO`, 79,824 bytes; STIX normal TrueType sfnt, 423,048 bytes; STIX italic TrueType sfnt, 458,124 bytes.
- Production dist now requires all three browser font files before activation.
- HTML/SPA fallback bytes are explicitly rejected by the font validator.
- Combined dependency-free node suite: **157/157 PASS**.
- SaaS static audits: **25/25 PASS**.
- Repository static contracts: **328/328 PASS**.
- Deployment shell syntax: **PASS**.
- Cloudflare Insights CSP warning: expected/intentional while TeXise remains telemetry-free by default; disable Cloudflare Web Analytics at the proxy if a clean console is desired without weakening CSP.


# Consolidated implementation verification — 2026-08-20

This section supersedes older route/template/font counts where the earlier report conflicts with the latest consolidated plan.

## Source-level PASS

- Start Writing/public local-entry CTAs → `/projects`: **PASS**
- Bare `/ws` → `/projects`; deep hash editor compatibility retained: **PASS**
- `/projects` Import ZIP: **PASS**
- `/projects` Import from GitHub using existing browser-local Git engine: **PASS**
- `/projects` Download ZIP using existing streaming exporter: **PASS**
- Browser/OPFS Delete Project: **PASS (source/test contract)**
- Linked-folder Delete Project preserves physical files: **PASS (source/test contract)**
- Browser-local Git state discarded on project removal: **PASS (source/test contract)**
- Direct configured root-file open: **PASS (source/test contract)**
- Existing linked folder root `.tex` detection: **PASS (source/test contract)**
- Physical `templates` namespace removed from root/browser public source: **PASS**
- Static template namespace `/texise-templates/*`: **PASS**
- Public `/templates` and `/templates/:slug` remain SPA routes: **PASS (routing/config contract)**
- `/examples` removed and redirected to `/templates`: **PASS**
- Show Markdown Only control removed and historical filter neutralized: **PASS**
- Choose Project privacy text foreground color: **PASS**
- Inter/JetBrains/Moranga/STIX eight-font deployment contract: **PASS**
- Inter normal UI font role: **PASS**
- JetBrains source/terminal/code role: **PASS**
- Moranga Light/Regular/Italic/Bold display role: **PASS**
- STIX Visual-manuscript-only boundary: **PASS**
- Apache WOFF2/OTF/TTF MIME/static/signature health contracts: **PASS**
- Prefix-derived 67rem breakpoint / 80rem content / floating rounded header / warm palette tokens: **PASS (source contract)**

## Executable verification in this environment

- Dependency-free Node regression suite: **170/170 PASS**
- SaaS architecture/security/product audits: **43/43 PASS**
- Repository static contract audit: **328/328 PASS**
- Template compiler requirements: **13/13 PASS**
- pnpm frozen-lock synchronization: **69 workspace importers PASS**
- Workspace dependency-version consistency: **68 packages PASS**
- Public barrel validation: **67 public entries across 68 packages PASS**
- Deployment shell syntax: **PASS**
- Template manifest regeneration under `texise-templates`: **PASS**
- Touched TypeScript parser-class diagnostic scan: **PASS**

- Brand mark + exact `Tex·ise` Moranga italic wordmark: **PASS**
- Eight-font preload + bounded first-render font gate: **PASS**
- Home TeXise hero / four capability cards / Start Writing → `/projects`: **PASS**
- Top navigation Docs removed while shared footer retains Docs: **PASS**
- `/projects` single primary New Project + overflow actions + shared public footer: **PASS**
- Editor sidebar full-project download immediately after Add Folder: **PASS**
- Product-wide TeXise native dialog elimination (`alert`/`confirm`/`prompt`): **PASS**
- Toast UI Blog authoring, persistent cover media and bounded Base64 PNG body images: **PASS**
- TeXise Blog search/tag/featured-card layout: **PASS**

## OVH build-fix verification — 2026-08-20

- React effect cleanup destructor returns `void`: **PASS (source/audit contract)**
- Toast UI 3.2.2 bundler-resolution declaration shim present: **PASS**
- Toast image hook has explicit `Blob | File` and callback types: **PASS**
- SaaS architecture/security/product audits after fix: **43/43 PASS**
- Dependency-free Node regression subset exercised after fix: **162/162 PASS**
- Full dependency-backed `tsgo`/Biome/build must be rerun on OVH because this packaging container cannot download/install pnpm dependencies.

## NOT RUNTIME-VERIFIED here

The current container does not contain the repository's installed `node_modules`/pinned pnpm toolchain and cannot perform the deployment host's full dependency-backed pipeline. Therefore these remain **NOT RUNTIME-VERIFIED** until the OVH host runs them:

- `pnpm run custom-validation`
- full `tsgo`/workspace typecheck
- pinned `biome lint`
- production browser build
- Apache live `/templates/` refresh test
- Apache-served eight real external font files
- real GitHub clone through production CORS/network environment
- native File System Access delete/relink browser interaction
- real MySQL `texise_db` preflight/migrations
- Google OAuth
- SMTP
- live browser compiler/PDF/SyncTeX regression
- viewport/theme visual QA at 375/430/768/1024/1280/1440/1920

These items must not be reported as PASS until exercised on the deployment host/browser matrix.

Scientific Python certification now runs directly against the dedicated `texlive/texlive-console:pro` image; no host-side scientific overlay is used.
