Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions docs/implementation-plan.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
# ProChat website implementation plan

Status: implementation, validation evidence, merge, deployment, live route checks, and safe cleanup of fully-contained branches/worktrees are complete. Feature commit `f09f92aab3327b3672df0d593e50040171cc1295` was merged to production as `f63dd3374c2acd4ecfbc837bfe899569eb4a3a23`; workflow [36573913919](https://github.com/prochattools/prochat/actions/runs/36573913919) succeeded and live `/api/version` continues to report that runtime revision. Closeout documentation was merged in PR #6 without a deployment; the Mastermind source worktree was then fast-forwarded to current `origin/main`. Fresh local browser QA is approval-gated on its one-time gstack utility build, and Mastermind's registered branch metadata and persisted index remain stale with no supported refresh/reindex operation exposed. These are the remaining closeout blockers.
Status: **website milestone complete**. Implementation, validation evidence, merge, deployment, live route checks, current-main source verification, fresh local browser QA, and safe cleanup of fully-contained branches/worktrees are complete. Feature commit `f09f92aab3327b3672df0d593e50040171cc1295` and renderer-sampling correction PR #8 are deployed as runtime `59a9c61550ca37586091c43f146cfd83023a455c`; main workflow [36602012728](https://github.com/prochattools/prochat/actions/runs/36602012728) succeeded and live `/api/version` matched `origin/main` at deployment. The closeout change is documentation-only, so `main` advances without a runtime redeployment. The correction raises sampling to 24fps / up to 240 frames at 384px and hands off only a complete cache. Fresh local Playwright QA against the merged implementation passed across eight public routes and seven target widths, including reduced motion, responsive navigation/form, and scroll/reversal checks. Mastermind source metadata/index remain stale; a supported dashboard Reindex endpoint exists but the configured local API is unavailable and no Mastermind connector/tool is exposed in this session. This is separate infrastructure follow-up, not a website-closeout blocker.

Last reviewed: 2026-09-29.

## Current source contract

Canonical public routes: `/`, `/evermind`, `/nevermind`, `/mastermind`, `/docs`, `/contact`, `/privacy`, and `/terms`. Product truth is governed by Mind at `mind/organizations/prochat/brand/`; the current identities are Evermind, Nevermind, and Mastermind. ProChat Memory for QA is paused/historical.

The first four routes use a shared cinematic implementation: `HomeV2` or `CinematicProductFunnel` supplies page data to `CinematicMarketingPage`; the shared page uses `CinematicMarketingShell`, one final cinematic reference stylesheet, and `ScrollVideoBackground`. The renderer samples a 24fps source into at most 120 cached frames (12fps) at up to 540px width, blends adjacent available frames, draws candidates to an offscreen staging canvas, retains the last good visible frame on failure, and stops its RAF loop when settled. Route content must not reintroduce extra headers, a footer, opaque SaaS cards, or competing route-level overrides.
The first four routes use a shared cinematic implementation: `HomeV2` or `CinematicProductFunnel` supplies page data to `CinematicMarketingPage`; the shared page uses `CinematicMarketingShell`, one final cinematic reference stylesheet, and `ScrollVideoBackground`. The renderer samples the ~10.04s, 24fps source into at most 240 cached frames at up to 384px width (previously 120 frames/~12fps at 540px), blends adjacent available frames, draws candidates to an offscreen staging canvas, retains the last good visible frame on failure, and stops its RAF loop when settled. This keeps the approximate cached-pixel budget while doubling temporal density; handoff waits for a complete cache. Route content must not reintroduce extra headers, a footer, opaque SaaS cards, or competing route-level overrides.

Contact, Docs, Privacy, and Terms use the shared static utility shell: one transparent full-width nav, atmospheric poster treatment, Golos display headings, selective translucent glass, and no footer. Contact form handling and legal body copy are preserved. Docs uses current Evermind/Nevermind/Mastermind terminology and avoids animated video/canvas content behind reading material.

## Active work gates
## Completed implementation and validation gates

### A. Renderer and motion

- Root cause reproduced against deployed `c6731140191791e407a2fb6eb27ac96711883e32`: the previous renderer cleared/resized the visible canvas before drawing a candidate and then swallowed draw errors, so a failed candidate could leave that visible canvas transparent. In a production-page browser session, three controlled draw failures took the visible sample alpha sum from 85,680 to 0 while CSS opacity remained 1. This was an injected browser-only failure (not a server mutation); ordinary scroll alone did not reproduce it deterministically. The candidate stages frames offscreen and presents only successful draws; its regression test confirms the last-good pixel checksum is unchanged when a candidate draw fails.
- The old cache capped sampling at 72 frames with `duration * 10` (about 7.2 frames/second for the 10.04-second asset). The current renderer samples up to 120 frames at 12 frames/second while reducing per-frame width from 720px to 540px, keeping the raw cached-pixel budget approximately constant and improving temporal density. It blends neighboring available frames rather than rounding progress to one frame index.
- The historical cache capped sampling at 72 frames with `duration * 10` (about 7.2 frames/second for the 10.04-second asset). The later 120-frame/~12fps cache still visibly quantized slow scroll. Current production samples up to 240 frames at 24 frames/second and limits each frame to 384px width, keeping the raw cached-pixel budget approximately constant while doubling temporal density. It blends neighboring available frames rather than rounding progress to one frame index; full-cache handoff avoids a sparse-to-complete cache transition mid-scroll.
- Reproduce slow/fast forward and reverse scroll in a real H.264-capable browser.
- Prove cache and bootstrap handoffs do not expose blank frames; stage candidate frames offscreen, retain the last good frame after draw failures, blend neighboring frames, and stop painting when settled.
- Keep temporal sampling at 12fps (120 frames for the current 10.04-second media) within a roughly constant raw bitmap pixel budget by limiting each frame to 540px width.
- Keep temporal sampling at 24fps (up to 240 frames for the current ~10.04-second media) within a roughly constant raw bitmap pixel budget by limiting each frame to 384px width.
- Confirm the requested background demonstrably changes with scroll and chapter activation follows reading order.
- Under reduced motion, freeze to one stable media/poster layer, disable scrubbing, preserve all content/links, and retain geometry.

Expand All @@ -34,11 +34,11 @@ Contact, Docs, Privacy, and Terms use the shared static utility shell: one trans

LiquidGlass evaluation (2026-09-29, local Chrome 153, 1440×900): the prototype used the real page's scroll-rendered canvas, copied/invalidation only when that canvas repainted, and tested the hero context card and Section Two capability panel independently. Baseline page RAF cadence was 16.62ms average / 16.8ms p95; context-panel prototype was 16.48ms / 16.8ms and capability-panel prototype 16.50ms / 16.8ms. LiquidGlass reported 61fps and 60fps respectively; initialization took 66.0ms and 65.8ms, with 96 changed source frames during each measured scroll sequence and no console errors. This does not reproduce the earlier claimed 11–15fps; that earlier figure is superseded by this instrumented run. Visual inspection rejected adoption: the package added an inset second glass surface/seam to both existing CSS panels and did not improve the composition enough to justify another WebGL context and frame-copy/invalidation path. Keep the existing CSS fallback and add no package dependency. Screenshots: `/tmp/prochat-liquidglass-real-context-measured.png` and `/tmp/prochat-liquidglass-real-capability-measured.png`.

Local Chrome 153 recorded 89 visible canvas paints in 1.47s (59.99fps), with 87 distinct sampled outputs and a 17.6ms longest paint gap. A four-route run exercised slow and rapid down/up movement plus three additional reversal cycles per route; each route produced over 500 distinct sampled outputs, remained in the 120-frame cache state, had no transparent visible-canvas samples, and logged no browser errors. The strengthened focused Playwright suite passed 10/10 in system Chrome with H.264 enabled. Bundled CI Chromium skips only the H.264-specific fine-scroll case because that binary has no decoder; bootstrap, continuity, and reduced-motion coverage remain active there.
The pre-correction local Chrome 153 diagnostic recorded 89 visible canvas paints in 1.47s (59.99fps), with 87 distinct sampled outputs and a 17.6ms longest paint gap. Its four-route run exercised repeated forward/reverse movement in the then-120-frame cache. The merged 24fps correction was separately tested with local Playwright to full 240-frame readiness, reversal, reduced motion, and responsive checks. The focused suite passed in system Chrome with H.264 enabled. Bundled CI Chromium skips only the H.264-specific fine-scroll case because that binary has no decoder; bootstrap, continuity, and reduced-motion coverage remain active there.

### C. Validation and release

**Release complete (2026-09-29):** feature commit `f09f92aab3327b3672df0d593e50040171cc1295` was reviewed and merged through PR #3 to production `main` at `f63dd3374c2acd4ecfbc837bfe899569eb4a3a23`. Workflow [36573913919](https://github.com/prochattools/prochat/actions/runs/36573913919) succeeded: CI, docs-integrity, browser evidence, API security, `build-and-deploy`, and `Verify production deployment` passed. Production `/api/version` reports revision/image SHA `f63dd3374c2acd4ecfbc837bfe899569eb4a3a23`; live checks on 2026-09-29 returned HTTP 200 for `/`, `/evermind`, `/nevermind`, `/mastermind`, `/contact`, `/docs`, `/privacy`, `/terms`, and `/api/version`. PR #6 merged docs-only changes; its CI passed, deployment was skipped, and production SHA remained `f63dd337…`. Five fully-contained branches and two clean worktrees were removed; their test/evidence are preserved in `/Users/Office/.codex/attachments/prochat-cinematic-housekeeping-evidence-2026-09-29.tar.gz` (303 archive entries). Unique/unverified worktrees and branches were retained. The protected dirty checkout was verified unchanged. Mastermind's `prochat` worktree tracks current main cleanly, and the old blocked run is closed, but registered `branchName` and persisted index (`00b6473ac23124c45ffa421dd4bff01120dde47d`) remain stale. Fresh local browser QA still awaits approval for its one-time gstack utility build; GitHub browser evidence passed 108/108. No unsupported Mastermind-owned state was edited.
**Release complete (2026-09-29):** feature commit `f09f92aab3327b3672df0d593e50040171cc1295` was followed by renderer-correction PR #8 and deployed to production `main` at `59a9c61550ca37586091c43f146cfd83023a455c`. Main workflow [36602012728](https://github.com/prochattools/prochat/actions/runs/36602012728) succeeded: CI, docs-integrity, browser evidence, API security, `build-and-deploy`, and `Verify production deployment` passed. Production `/api/version` reports that exact revision; live checks returned HTTP 200 for all eight public routes and `/api/version`. The production renderer samples up to 240 frames at 24fps and hands off only the complete cache. Prior housekeeping evidence is preserved at `/Users/Office/.codex/attachments/prochat-cinematic-housekeeping-evidence-2026-09-29.tar.gz` (303 entries); unique-history worktrees/branches remain preserved. The protected dirty checkout was verified unchanged. The canonical Mastermind source path is `/Users/Office/Repos/prochattools/web/prochat-mastermind-runtime`; it tracks `origin/main` on `codex/prochat-main-runtime-2026-09`. The persisted index snapshot remains at `00b6473ac23124c45ffa421dd4bff01120dde47d`; the supported dashboard Reindex route is inaccessible here because the configured local API is unavailable and no Mastermind connector/tool is exposed. The old blocked ProChat run is confirmed completed. Local Playwright QA against the merged implementation passed full-cache readiness, route reversal, responsive, and reduced-motion checks; CI browser evidence passed. No Mastermind-owned state was edited.

## Known implementation/build debt

Expand All @@ -50,4 +50,8 @@ In the release workflow's mobile-simulated canonical performance evidence (2026-

## Completion evidence

Release and cleanup evidence is recorded above. Before calling the closeout complete, obtain authorization for the one-time browser utility build, complete fresh browser QA, and use the supported Mastermind source-management operation to refresh registered branch metadata and the persisted index. Final audit must again confirm the protected checkout fingerprint and production revision. Then read this roadmap top-to-bottom and hand off its named next goal: investigate and bring canonical public-route LCP under 2.5 seconds without reducing cinematic fidelity.
On 2026-09-29, focused local Playwright QA against the merged implementation used repository-installed Playwright/Chromium without a browser utility build or global install. Across all eight routes and widths 1440, 1280, 1024, 768, 430, 390, and 360 CSS pixels, pages had one nav, one H1, zero footers, and no horizontal overflow. Display headings resolved through `--font-brand` (Golos Text). Core-route tests reached the full 240-frame cache, confirmed background changes during forward/reverse scrolling, and verified reduced-motion poster/content visibility while scrubbing was suppressed. Mobile navigation and Contact controls worked; there were no console/runtime errors. Production checks independently confirmed deployed routes, cache readiness, visible forward/reverse progression, and heading font family.

The protected checkout `/Users/Office/Repos/prochattools/web/prochat` remained on `main` at `a28ab34eae077f1b2de6dfa072800c1398e4c815`, with five modified tracked files and diff fingerprint `88d4d903c3a89000ca394da41c3359ff51fa8904eb58611404655182afeb2345`. Production runtime is `59a9c61550ca37586091c43f146cfd83023a455c`; it matched `origin/main` at deployment, verified by workflow [36602012728](https://github.com/prochattools/prochat/actions/runs/36602012728). The closeout documentation merge will advance `main` without changing the deployed runtime. Mastermind index synchronization is handed off as separate infrastructure work; do not edit its owned state or keep the website milestone open for it.

**PROCHAT WEBSITE QUALITY PASS / CINEMATIC SITE MILESTONE = COMPLETE.** The next website roadmap goal is to investigate and bring canonical public-route LCP under 2.5 seconds without reducing cinematic fidelity. Do not begin that goal in this closeout.
Loading
Loading