diff --git a/docs/LLMISER_ANALYTICS_CONTROLLER.md b/docs/LLMISER_ANALYTICS_CONTROLLER.md index 2975140..851c08f 100644 --- a/docs/LLMISER_ANALYTICS_CONTROLLER.md +++ b/docs/LLMISER_ANALYTICS_CONTROLLER.md @@ -17,6 +17,10 @@ The dashboard's header can display the old custom domain because it is still one Reference: [Vercel Web Analytics setup](https://vercel.com/docs/analytics/quickstart). Enabling the feature adds its routes after the next deployment. Do not add another Analytics component or install a duplicate package to fix a hosting activation issue. +## Controller acceptance update — 29 October 2026 + +[PR #19](LLMISER_CONTROLLER_PAGINATION.md) now verifies authenticated sign-in/sign-out, paginated job detail reads, complete generated-file signing/downloads and expected 401/409/400 responses with private headers on production. All 73 generated content records and four stored files were retrieved. This supplements the dated login-only checks below; destructive actions, bulk operations and cleanup execution were not tested. + ## Controller access Open [LLMiser controller](https://llmiser.devbehindyou.com/llmiser-controller). diff --git a/docs/LLMISER_CONTROLLER_PAGINATION.md b/docs/LLMISER_CONTROLLER_PAGINATION.md index 8c03d87..cb7f583 100644 --- a/docs/LLMISER_CONTROLLER_PAGINATION.md +++ b/docs/LLMISER_CONTROLLER_PAGINATION.md @@ -1,6 +1,6 @@ # Controller detail pagination -Updated 29 October 2026. Candidate in [PR #19](https://github.com/DevBehindYou/LLMiser/pull/19). Initial pagination source `2f2afb0` passed all seven GitHub CI jobs, including 278 frontend tests and build, but failed the Vercel preview in Next.js's Google font loader. The owner supplied the build log; a bundled-font fix is being validated. Do not merge or claim production acceptance until the updated runtime preview passes. Previously released runtime remains PR #17, `9131a2ac6163f22b630b008b40accb482ed3e0b3`. +Released 29 October 2026 in [PR #19](https://github.com/DevBehindYou/LLMiser/pull/19), production frontend revision **`efbeab60026b0e77a71a3d16822d81bbe6f81f2b`**, source `a156dd7a417b853a1c7cde9d8f604967cfcb4ba9`. All seven CI jobs passed before and after merge, including **279 frontend tests**, lint/consistency checks and production build. All six Vercel production statuses succeeded. Authenticated production pagination, complete generated-file retrieval and bundled-font acceptance passed. No backend runtime revision change is inferred from hosting status alone. Opening a large job previously returned all content nodes, work items, events and registered files. The controller now starts with 50 records per section, with independent **Load more** and retry controls. Counts distinguish loaded rows from the full section total. The tree and status badges explicitly describe loaded records; Refresh restarts every section. Six interface languages are supported; blogs and their visuals are unchanged. @@ -39,11 +39,25 @@ Production baseline: one generated 72-text-file ZIP completed through the public Full local regression: 276 of 278 passed in the sandbox; the two deployment-scope tests could not create temporary Git configurations. Both passed when rerun outside the sandbox. Lint, six dictionaries (637 messages each), SQL consistency, blog consistency and diff whitespace checks passed. The initial lint/build attempt also encountered local filesystem restrictions; elevated lint and production build passed. All seven Linux CI jobs passed; its full frontend run passed all 278 tests and build. React/SSR acceptance does not establish native browser layout, mobile overflow or representative-device performance. -## Remaining release steps +## Hosting fix and deployed acceptance -1. Validate the bundled-font fix in the real frontend preview (`albedo-projects/llmiser`, root `frontend`). The owner's log for the initial failed preview identifies Next.js 14.2.35's Google loader extension regex returning null at `loader.js:112`. Local/CI builds alone did not reproduce it. This is separate from pagination logic. -2. The app now bundles the exact 16 WOFF2 assets from the successful original build, all 25 face declarations, Unicode ranges, weights, fallback metrics and the same three Latin preloads (93,996 bytes). `frontend/app/fonts.css` and `frontend/public/fonts/` replace the Google loader; official pinned SIL licenses and hash manifest accompany the files. No font/framework upgrade, runtime dependency or blog edit is included. Validate a clean build, font-integrity tests, CI and actual Vercel preview, then merge the pinned passing revision under the owner's auto-merge authorization. A documentation-only skipped build is not acceptance. -3. Verify the production frontend, then run the generated authenticated comparison described above. Private `verify-live.mjs after` reuses the recorded generated job, traverses every section, collects ACTIVE files through one-row pages, signs/downloads all files and reopens an assembled ZIP; it also tests 401/409/400 and private headers. It reads configured keys into memory and never prints keys, cookies or signed links. -4. Run the public HTTP/redirect and uncached pool-readiness checks; record actual results and update current handovers to released only after acceptance. No new conversion job is needed if the baseline is still retained; its `auto_delete_at` is 31 October 2026 17:43:53 UTC. +The owner's log for the first preview identified Next.js 14.2.35's Google loader extension regex returning null at `loader.js:112`. Initial local/CI builds did not reproduce that URL-format failure. The fix bundles the exact 16 existing WOFF2 files, all 25 face declarations, Unicode ranges, weights, fallback metrics and three Latin preloads (93,996 bytes). `frontend/app/fonts.css` and `frontend/public/fonts/` replace the Google loader; official pinned SIL licenses and hashes accompany the files. Versioned `/fonts/v1/` assets retain one-year immutable caching. Changed bytes must use a new version path. No font/framework upgrade or runtime dependency was added. + +The final clean local production build passed with invalid HTTP(S) proxies configured and telemetry disabled; there is no Google font import left. Thirteen focused tests passed, including font integrity. Updated CI passed 279/279 frontend tests, all seven jobs and the real Vercel frontend preview. All seven jobs passed again on merged main; all six production Vercel statuses succeeded. The original failed preview remains historical evidence, not an unresolved blocker. + +Production acceptance reused one generated public Storage ZIP job, with 72 text entries and normal 48-hour retention: + +| Section | Initial rows | Full total | Verified traversal | +| --- | --- | --- | --- | +| Registered files | 4 | 4 | 4 one-row pages, exact IDs | +| Content nodes | 50 | 73 | 6 pages at limit 13, exact IDs without gaps/duplicates | +| Work items | 1 | 1 | 1 page, exact IDs | +| Events | 2 | 2 | 2 one-row pages, exact IDs | + +All four ACTIVE files were collected through paginated metadata, individually signed and downloaded, then assembled into a ZIP and reopened with all four entries present. This exercises the shipped collection helper and real API/Storage reads; it is not native browser button/layout acceptance. Old authenticated cached clients received 409, unauthenticated clients 401 and an invalid page limit 400; responses retained no-store/noindex. Sign-in/sign-out and audited file signing passed. No deletion, retention change, bulk operation or cleanup execution was tested. + +All 16 production font responses matched the pinned hashes and immutable cache headers. Production HTML retained three local preloads; delivered CSS used local font URLs without Google font endpoints. All 20 public HTTP/discovery/permanent-redirect checks passed. An uncached POST wake returned normal/OCR/archive each **2/2 ready**. Worker code and settings were unchanged; this acceptance does not recertify backend revision or capacity. + +Private evidence and reproducible operator scripts are in `project-docs/controller-pagination/` (`after.json`, `http-after.json`, `deployment-statuses.json`, CI logs and generated plans). Credentials were read into memory only; no keys, cookies, signed links or user documents were published. The single generated job expires normally on 31 October 2026 at 17:43:53 UTC; no new post-release conversion job or manual cleanup was needed. Native browser/mobile layout acceptance remains separate. Continue the remaining optimization queue rather than reimplementing this slice. PostgREST documents [pagination/count headers and HEAD](https://docs.postgrest.org/en/stable/references/api/pagination_count.html). PostgreSQL explains why [unique ordering is necessary and large offsets remain costly](https://www.postgresql.org/docs/16/queries-limit.html). These contracts guide the cursor design; production measurements must remain separate from local generated evidence. diff --git a/docs/LLMISER_ENVIRONMENT.md b/docs/LLMISER_ENVIRONMENT.md index 534ef07..fac59dc 100644 --- a/docs/LLMISER_ENVIRONMENT.md +++ b/docs/LLMISER_ENVIRONMENT.md @@ -1,5 +1,7 @@ # LLMiser environment and deployment +Current release verified 29 October 2026: frontend `efbeab60026b0e77a71a3d16822d81bbe6f81f2b` (PR #19), controller pagination and exact bundled-font build fix. All seven CI jobs/279 frontend tests and six Vercel production statuses passed; authenticated generated-job traversal/complete file retrieval, 16 font hashes/cache headers and 20 public HTTP checks passed. Uncached normal/OCR/archive readiness was 2/2 each. No SQL, cron, retention or backend setting changed. See [release evidence](LLMISER_CONTROLLER_PAGINATION.md); dated provisioning/deployment notes below retain their original scope. + Updated 26 October 2026. The LLMiser frontend and six conversion services are deployed from `DevBehindYou/LLMiser`. Existing storage/database/Vault/cron and bucket `mdify-pro-files` remain LLMiser dependencies; their `mdify` names are compatibility contracts. The owner plans to delete the old source repositories, so use [the retirement guide](LLMISER_LEGACY_RETIREMENT.md) for backups and source/consumer checks. Repository deletion does not authorize deleting shared infrastructure. **No secret values are in this file or in Git.** **Current release:** PRs #1–#6 are merged; `aa0635433bf520bfddc6edb796c14a74430e64f8` deployed successfully. All pools were 2/2 ready after release. The live frontend is the custom domain; `llmiser.vercel.app` redirects there. The working project root remains `frontend`; the old frontend's replacement root is `legacy-site` in this same repository. Do not depend on an old checkout for credentials or authoring materials, and do not recreate services from the historical setup below. diff --git a/docs/LLMISER_LOCALIZATION.md b/docs/LLMISER_LOCALIZATION.md index bf64963..bd6d383 100644 --- a/docs/LLMISER_LOCALIZATION.md +++ b/docs/LLMISER_LOCALIZATION.md @@ -13,7 +13,7 @@ The full web app supports English (US), German, Japanese, Spanish, Russian and * | File or directory | Responsibility | | --- | --- | | `frontend/lib/i18n/core.js` | Six allowlisted locales; preference key; blog segment matching; owned-copy interpolation | -| `frontend/lib/i18n/messages/*.json` | Six complete dictionaries, currently 628 messages each | +| `frontend/lib/i18n/messages/*.json` | Six complete dictionaries, currently 637 messages each after PR #19 | | `frontend/components/i18n/LanguageProvider.js` | Root state, lazy imports, storage events, document language and display title | | `frontend/components/i18n/I18nContext.js` | Pure context/hooks and English-only embedded blog scope | | `frontend/components/i18n/LanguageSelector.js` | Native labelled selector, loading announcement and native language names | diff --git a/docs/LLMISER_MIGRATION.md b/docs/LLMISER_MIGRATION.md index 42010f3..b277f47 100644 --- a/docs/LLMISER_MIGRATION.md +++ b/docs/LLMISER_MIGRATION.md @@ -1,5 +1,7 @@ # LLMiser deployment and retirement runbook +Current release verified 29 October 2026: frontend `efbeab60026b0e77a71a3d16822d81bbe6f81f2b` (PR #19), controller pagination and exact bundled-font build fix. All seven CI jobs/279 frontend tests and six Vercel production statuses passed; authenticated generated-job traversal/complete file retrieval, 16 font hashes/cache headers and 20 public HTTP checks passed. Uncached normal/OCR/archive readiness was 2/2 each. No SQL, cron, retention or backend setting changed. See [release evidence](LLMISER_CONTROLLER_PAGINATION.md); dated provisioning/deployment notes below retain their original scope. + Updated 26 October 2026. The migration is deployed. This runbook supersedes the initial provisioning/cutover checklist; dated evidence remains in the other migration reports. ## Current deployment diff --git a/docs/LLMISER_OPTIMIZATION_PLAN.md b/docs/LLMISER_OPTIMIZATION_PLAN.md index 07fa48e..f5dd0a4 100644 --- a/docs/LLMISER_OPTIMIZATION_PLAN.md +++ b/docs/LLMISER_OPTIMIZATION_PLAN.md @@ -14,7 +14,7 @@ PR #13 released [a source capacity audit and CSV allocation reduction](LLMISER_P ## Verified starting point -Released [shared conversion deadlines](LLMISER_SHARED_DEADLINES.md), PR #17 at `9131a2ac6163f22b630b008b40accb482ed3e0b3`. Optional authenticated absolute deadlines and monotonic cooperative worker checks preserve legacy callers and durable job/lease rules. All seven CI jobs and six Vercel production statuses passed; all six workers reported the exact revision/readiness. Thirty protocol checks, eight workbook/ZIP comparisons, four post-release Storage conversion/recovery jobs and 20 HTTP checks passed. Native preemption, exact-once writes and capacity tuning remain separate. Controller detail pagination is next. +Released [shared conversion deadlines](LLMISER_SHARED_DEADLINES.md), PR #17 at `9131a2ac6163f22b630b008b40accb482ed3e0b3`. Optional authenticated absolute deadlines and monotonic cooperative worker checks preserve legacy callers and durable job/lease rules. All seven CI jobs and six Vercel production statuses passed; all six workers reported the exact revision/readiness. Thirty protocol checks, eight workbook/ZIP comparisons, four post-release Storage conversion/recovery jobs and 20 HTTP checks passed. Native preemption, exact-once writes and capacity tuning remain separate. Controller detail pagination is released in PR #19. Released [Excel and final-result assembly memory](LLMISER_EXCEL_ASSEMBLY_MEMORY.md), PR #15 at `3db41140521d5cfb1bb3bfd12865feca5a8cc95b`: sequential sheet processing, exact bounded word counts and delayed archive output encoding. Three fresh-process trials per mode preserve complete hashes; local peak reductions are qualified by timing variability/XLS regression. All seven CI jobs passed before/after merge; six production Vercel statuses succeeded; all six N/O/Z workers report the exact revision and readiness. Eight generated multipart probes, two production Storage conversion/recovery checks and 20 HTTP checks passed; all pools are 2/2 ready. No SQL, concurrency, retention or blog changes. @@ -22,9 +22,9 @@ The copied source already contains atomic job startup/finalization, cleanup reco Search migration and public redirects are live; see [search migration](LLMISER_SEARCH_MIGRATION.md). Analytics ingestion is verified; controller login/configuration is verified but authenticated operations are not; see [access and analytics](LLMISER_ANALYTICS_CONTROLLER.md). Keep-warm Vault and cron changes were applied and verified in the earlier cron task. Dependency-aware service retirement remains separate operational work. -## Current slice: controller detail pagination +## Released slice: controller detail pagination -Candidate: PR #19 on `codex/controller-detail-pagination`; see [implementation and evidence](LLMISER_CONTROLLER_PAGINATION.md). Files, nodes, work items and events load 50 rows each, with stable unique cursors, exact live totals, independent retry and refresh/job-switch guards. ZIP exports fetch every matching stored file page. Existing indexes suffice; no SQL change. Initial source `2f2afb0` passed all seven CI jobs/278 tests/build, but Vercel's Google font URL parser failed. The owner supplied the error; identical bundled fonts remove that build dependency. Updated checks/preview and deployed comparison remain before release. +Released in PR #19 at `efbeab60026b0e77a71a3d16822d81bbe6f81f2b`; see [implementation and evidence](LLMISER_CONTROLLER_PAGINATION.md). Details load 50 rows per section with stable unique cursors, exact live totals, independent retries and refresh/job-switch guards. ZIP exports collect every matching ACTIVE file page. Generated plans use existing indexes; no SQL change. The unrelated Google font URL parser failure was resolved with identical licensed bundled assets. CI passed all seven jobs/279 frontend tests before and after merge; production pagination, all generated-file retrieval, exact font hashes/cache headers, 20 HTTP checks and uncached 2/2 readiness passed. Native browser layout and destructive admin/cleanup remain separate. ## Historical slice: retained result recovery @@ -52,7 +52,7 @@ Acceptance: expired link, later-part failure, complete Unicode assembly, restart | Shared statistics and large previews | Counting released in PR #9; browser profiling and large-preview control released in PR #11; measure native input/devices before deeper editor/worker changes | | Backend parser capacity | CSV released in PR #13; Excel/final-result memory released in PR #15 with production XLSX/ZIP Storage acceptance. Profile native/concurrent parsing and whole-result normalization/serialization on representative hosts before queue tuning | | Shared deadline | Released in PR #17; per-invocation propagation/reserves, simulated slow/cold paths and real protocol/OCR/PDF/ZIP Storage acceptance. Preserve cooperative-cancellation and replay-fencing limits | -| Controller detail pagination | Top-level lists already paginate; bound files/tree/events/work-items with stable cursors and truthful totals; query-plan evidence before new indexes | +| Controller detail pagination | Released in PR #19; authenticated full traversal/exports accepted, existing-index plans recorded. Measure representative browser/layout behavior before deeper rendering work | | Replay-stable object identities | Fence attempt-specific writes before deterministic IDs; SQL attempt guards alone do not prevent a stale Storage overwrite; additive rollout for new roots only | | Observability | Allowlisted timing, attempts, cleanup age and cron diagnosis; no content/signed links/secrets; notification destination needs user authorization | | Storage reconciliation | Bounded read-only inventory first; protect active/KEEP/reservation ownership and grace periods; destructive cleanup policy remains conditional | diff --git a/docs/START_HERE.md b/docs/START_HERE.md index addd8b5..19b9e20 100644 --- a/docs/START_HERE.md +++ b/docs/START_HERE.md @@ -4,19 +4,19 @@ Updated 29 October 2026. **LLMiser is the sole working repository and the source ## Current state -Current candidate: [controller detail pagination](LLMISER_CONTROLLER_PAGINATION.md), PR #19 on `codex/controller-detail-pagination`. Initial source `2f2afb0` passed all seven CI jobs (278 frontend tests/build), but Vercel's Google-font URL parser failed. The owner supplied its log. An exact-byte bundled-font fix removes the Google build dependency while retaining existing typography/subsets/preloads; updated validation is in progress. Hold merge until the updated preview passes, then compare the authenticated production baseline. No database migration is required. Production remains the revision below. +Released: [controller detail pagination](LLMISER_CONTROLLER_PAGINATION.md), PR #19 at `efbeab60026b0e77a71a3d16822d81bbe6f81f2b`. Details start at 50 rows per section with exact live totals, independent Load more/retry, safe refresh/job switches and complete ZIP collection. The Google-font build failure was fixed by bundling the exact existing licensed assets. All seven CI jobs passed before/after merge (279 frontend tests); all six Vercel production statuses succeeded. Authenticated traversal, all four generated stored files, 16 font hashes/cache headers and 20 public HTTP checks passed; all pools were 2/2 ready. No database migration or blog change. -The app is live at https://llmiser.devbehindyou.com. PRs #1–#17 are merged; the latest verified runtime revision is `9131a2ac6163f22b630b008b40accb482ed3e0b3` from PR #17. All seven CI jobs passed before and after merge, including 270 frontend tests and Linux OCR; all six production Vercel statuses succeeded. Release checks confirmed that exact revision and readiness on every N/O/Z worker. Thirty protocol checks, eight workbook/ZIP equivalence checks, four post-release Storage conversion/recovery jobs and 20 public HTTP/redirect checks passed; all pools were 2/2 ready. See [shared deadlines](LLMISER_SHARED_DEADLINES.md), [Excel/assembly](LLMISER_EXCEL_ASSEMBLY_MEMORY.md), [CSV capacity](LLMISER_PARSER_CAPACITY.md) and [retirement evidence](LLMISER_LEGACY_RETIREMENT.md). +The app is live at https://llmiser.devbehindyou.com. PRs #1–#19 are merged; the latest verified frontend runtime is `efbeab60026b0e77a71a3d16822d81bbe6f81f2b` from PR #19. Shared conversion-deadline backend behavior remains the earlier PR #17 release; no new backend revision/capacity claim is made by this controller change. See [controller/font release](LLMISER_CONTROLLER_PAGINATION.md), [shared deadlines](LLMISER_SHARED_DEADLINES.md), [Excel/assembly](LLMISER_EXCEL_ASSEMBLY_MEMORY.md) and [retirement evidence](LLMISER_LEGACY_RETIREMENT.md). The full app supports English (US), German, Japanese, Spanish, Russian and Simplified Chinese. The browser remembers the interface language; documents are not translated and OCR languages are unchanged. Blogs remain English. Eight articles, eight banners and forty figures are complete. The Chrome extension source is merged, but native acceptance and store publication remain pending. -Released [large-preview control](LLMISER_LARGE_PREVIEWS.md) pauses automatic formatting above 50,000 characters while retaining complete raw text and exports. Full formatting is available on request. Local/generated browser checks cover editing, document switching and exact full downloads; representative-device/native textarea profiling and deeper native/concurrent parser measurements remain next boundaries. The six interface dictionaries now contain 631 messages each. +Released [large-preview control](LLMISER_LARGE_PREVIEWS.md) pauses automatic formatting above 50,000 characters while retaining complete raw text and exports. Full formatting is available on request. Local/generated browser checks cover editing, document switching and exact full downloads; representative-device/native textarea profiling and deeper native/concurrent parser measurements remain next boundaries. The six interface dictionaries now contain 637 messages each. Released [parser capacity and CSV memory reduction](LLMISER_PARSER_CAPACITY.md) preserves verified upstream CSV output while reducing retained row allocations in both document pools. The audit distinguishes source limits, local generated measurements and live multipart acceptance. Neither it nor the subsequent workbook work justifies a concurrency increase. Released [Excel and final-result memory](LLMISER_EXCEL_ASSEMBLY_MEMORY.md) processes workbook sheets sequentially, bounds temporary word-count allocations and defers ZIP output encoding to the existing upload workers. Local untraced peaks fell about 2% for XLSX, 5% for XLS, 15% for ZIP assembly and 17% for profile finalization, with identical output; timing varies and the XLS median regressed. Production output/recovery equivalence passed. Native/concurrent parser peaks, full normalization/serialization, representative-device input behavior and the shared-deadline queue remain separate work. -Released [shared conversion deadlines](LLMISER_SHARED_DEADLINES.md) let retries share each invocation's remaining time, account for cold-start/transport time and reserve recording/saving time. Optional authenticated worker headers preserve legacy callers. Expiry cannot be hidden as partial PDF/ZIP success. Production checks include real OCR images, an image-containing ZIP and a scanned PDF with exact saved-result recovery. Native parsing/lock waits remain cooperative; this adds no whole-job lifetime or exactly-once Storage guarantee. Controller detail pagination is the next implementation item in the queue. +Released [shared conversion deadlines](LLMISER_SHARED_DEADLINES.md) let retries share each invocation's remaining time, account for cold-start/transport time and reserve recording/saving time. Optional authenticated worker headers preserve legacy callers. Expiry cannot be hidden as partial PDF/ZIP success. Production checks include real OCR images, an image-containing ZIP and a scanned PDF with exact saved-result recovery. Native parsing/lock waits remain cooperative; this adds no whole-job lifetime or exactly-once Storage guarantee. Controller detail pagination is released; replay-safe Storage attempt fencing is the next bounded queue item. ## Legacy frontend replacement is deployed diff --git a/docs/ai-handover/HANDOVER.md b/docs/ai-handover/HANDOVER.md index 661997a..1a3038b 100644 --- a/docs/ai-handover/HANDOVER.md +++ b/docs/ai-handover/HANDOVER.md @@ -4,7 +4,7 @@ Updated 29 October 2026. Start with [START_HERE](../START_HERE.md). This replace ## What the owner wants now -Active implementation: [controller detail pagination](../LLMISER_CONTROLLER_PAGINATION.md), PR #19 on `codex/controller-detail-pagination`. Initial source `2f2afb0` passed all seven CI jobs (278 frontend tests/build); Vercel's Google font URL extension parser failed separately. The owner supplied the log. Exact existing WOFF2 assets, subset declarations/fallback metrics and preloads are now bundled with licenses and hashes; updated checks/preview remain before merge. No connected Vercel tool/CLI session is assumed. Keep complete ZIP traversal, timestamp precision and job/section/filter cursor binding. Counts are separate live reads; Refresh resets all sections. No new SQL/index is needed. Validate the corrected preview, merge under existing authorization, then compare the generated authenticated baseline and public HTTP/wake results. Runtime remains PR #17 until release evidence is recorded. +Latest release: [controller detail pagination](../LLMISER_CONTROLLER_PAGINATION.md), PR #19 at `efbeab60026b0e77a71a3d16822d81bbe6f81f2b`. All seven CI jobs passed before/after merge (279 frontend tests/build), all six Vercel statuses succeeded and actual authenticated production reads/exports passed. Preserve complete ZIP traversal, raw timestamp precision, job/section/filter cursor binding, cached-client 409 negotiation, separate live counts and refresh generation guards. No new SQL/index is needed. The Google loader failure is resolved with identical bundled WOFF2 assets, all subset/weight/fallback declarations, three preloads and versioned immutable caching; changed font bytes require a new URL version. Private evidence/scripts are in `project-docs/controller-pagination/`. The owner resumed the optimization queue after the Excel/assembly release. Shared conversion deadlines are now released in PR #17. Continue from the remaining queue rather than repeating either slice. LLMiser must also remain independently maintainable after MDify and MDify-Pro are deleted. Keep immediate permanent redirects on the old public hosts and the minimal LLMiser-only fallback; repository/service deletion is not being executed here. @@ -14,7 +14,7 @@ The owner resumed the optimization queue after the Excel/assembly release. Share - Eight English blog articles, eight banners and forty supporting figures, rebranded previously. Do not edit them for retirement. - Download recovery through saved job references without a new upload/conversion; source outputs remain separate from edited exports. - Demand-driven cron source and its previously applied live cutover; coalesced wake requests. No fresh SQL setup is required. -- Six interface languages, now 631 messages per pack, local preference persistence, translated complete policies and controller UI. Blog scopes remain English; generated Markdown and source filenames are untouched. +- Six interface languages, now 637 messages per pack, local preference persistence, translated complete policies and controller UI. Blog scopes remain English; generated Markdown and source filenames are untouched. - Product-focused README with screenshots, recorded language demo, steps, format limits and measured-versus-unmeasured keyword notes. - Chrome extension 0.2.0 source: one Converter toolbar popup, file picker/drop, manual Paste into detected AI sites, uploaded-job recovery. No public store release or completed native acceptance is claimed. @@ -64,7 +64,7 @@ The owner asked to continue the optimization plan after the retirement handover. PR #13 released [a parser-capacity audit and bounded CSV memory reduction](../LLMISER_PARSER_CAPACITY.md) at 165d2b0. N/Z use identical `app/csv_converter.py` modules, outside the three-pool shared `common/` package so OCR gains no MarkItDown dependency. Enable only on verified upstream 0.1.8/0.1.9; unknown versions/missing helper retain the original converter. Never expand the version allowlist without output-equivalence tests. Generated before/after hashes match, including synchronized conversions; queue limits and all other parsers stay unchanged. Local suites passed 118 normal/98 archive tests, 25 tests on 0.1.8, and the expected 0.1.7 fallback checks. CI/deployment and post-release generated multipart probes passed. These direct worker probes created no Storage jobs and do not replace browser/Storage-backed acceptance. -Next implementation item: controller detail pagination for files/tree/events/work-items, with stable cursors and accurate totals. Native browser/input profiling, native/concurrent parser peaks, response serialization, replay-safe Storage attempts and other items remain in [the queue](../LLMISER_OPTIMIZATION_PLAN.md). Do not repeat released preview/Excel/deadline changes or truncate outputs. The deadline acceptance includes actual Storage recovery, real multipart OCR and multi-stage image-ZIP/scanned-PDF jobs; authenticated admin and actual cleanup execution were outside it. Earlier unmerged-branch statements in the optimization plan are historical. +Next bounded optimization: audit replay-safe Storage attempt writes before introducing deterministic object identities. SQL attempt guards alone do not prevent a stale worker overwriting Storage; preserve complete exports, durable deadline/lease rules and additive rollout boundaries. Controller detail pagination is released and must not be repeated. Native browser/input profiling, native/concurrent parser peaks, serialization and the other items remain in [the queue](../LLMISER_OPTIMIZATION_PLAN.md). This release verifies authenticated controller detail reads, session handling and generated-file signing/downloads; destructive admin actions, bulk operations and actual cleanup execution remain untested by this slice. Use Node.js 22. From `frontend`: diff --git a/docs/ai-handover/PROGRESS.md b/docs/ai-handover/PROGRESS.md index f62a83a..2c075a3 100644 --- a/docs/ai-handover/PROGRESS.md +++ b/docs/ai-handover/PROGRESS.md @@ -12,19 +12,20 @@ Updated 29 October 2026. This is the current tracker. Earlier phase-specific num | Cron source and live cutover | PR #2 merged; live URL/idle-dispatch changes were applied in the earlier cron task | | Wake request coalescing | PR #3 integrated and released through PR #5 | | Extension source 0.2.0 | PR #4 merged; native acceptance and store publication are still pending | -| Six-language web app | PR #5 released; English US, German, Japanese, Spanish, Russian, Simplified Chinese; now 631 messages each after PR #11 | +| Six-language web app | PR #5 released; English US, German, Japanese, Spanish, Russian, Simplified Chinese; now 637 messages each after PR #19 | | Final display-label fixes | PR #6 merged/deployed; preview labels/tooltips, mobile theme and retention labels | | Public README | Screenshots, recorded demo, steps, formats, profiles, privacy and FAQs; separate keyword evidence | -| Final frontend CI | PR #17 and merged main: 270 tests passed; lint, dictionaries, SQL/blog consistency and production build passed | +| Final frontend CI | PR #19 and merged main: 279 tests passed; lint, dictionaries, SQL/blog consistency and production build passed | | Other CI | Backend N/O/Z, PostgreSQL, edge and extension jobs passed | -| Production deployment | Latest runtime change `9131a2ac6163f22b630b008b40accb482ed3e0b3`; all six Vercel statuses successful; exact revision/readiness confirmed on N1/N2/Z1/Z2/O1/O2 | +| Production deployment | Latest frontend runtime `efbeab60026b0e77a71a3d16822d81bbe6f81f2b` (PR #19); all six Vercel statuses successful; no backend revision change claimed from this frontend-only release | | Shared reader statistics | PR #9 merged/deployed; allocation-bounded counting and shared reader line/status metrics; preserved count semantics; synthetic benchmark and limits documented | | Large-preview control | PR #11 merged/deployed; generated browser profiling, explicit formatting above 50,000 characters, complete raw/copy/download acceptance, six-language notices | | CSV parser memory | PR #13 merged/deployed; verified-version output preservation in N/Z, synchronized generated measurements, and successful pre/post-release multipart CSV/ZIP probes on all four document workers | | Excel and final-result memory | PR #15 merged/deployed; sequential sheets, exact bounded word counts and bounded output encoding; generated multipart and actual Storage/download/recovery acceptance passed | +| Controller detail pagination | PR #19 merged/deployed; bounded reads/exact totals, complete generated-file export and font build fix verified | | Shared conversion deadlines | PR #17 merged/deployed; shared invocation/attempt time, worker checkpoints and OCR/I/O limits; 30 protocol checks and real multi-stage Storage acceptance passed | | Production HTTP audit | 29 October: 20 public-page/discovery/health and permanent-redirect checks passed; documented legacy API routing unchanged | -| Backend readiness | 29 October: all six workers report the released revision and ready; uncached public wake shows normal/OCR/archive each 2/2 | +| Backend readiness | 29 October uncached wake: normal/OCR/archive each 2/2 ready; exact six-worker revision checks remain dated PR #17 evidence | | Browser acceptance | All six languages, persistence, English-only blogs, translated policy/controller login; German 390px viewport had no horizontal overflow | | Search migration | Google accepted Change of Address and canonical sitemap on 21 October; ongoing recrawl/indexing monitoring remains open | @@ -51,9 +52,9 @@ See [release record](../LLMISER_RELEASE_2026-10-26.md), [localization](../LLMISE ## Remaining work -In progress: [controller detail pagination](../LLMISER_CONTROLLER_PAGINATION.md), PR #19. Initial source `2f2afb0` passed all seven CI jobs/278 frontend tests/build, but Vercel's Google font URL parser failed. The owner supplied the diagnostic. The fix bundles identical existing fonts, subset/weight ranges, fallback metrics and preloads with licenses/hashes; updated checks and preview are pending. Pagination has bounded collections, exact live totals, independent retry and complete ZIP collection. Existing-index plans need no migration. Generated authenticated baseline: 73 nodes, four ACTIVE files, one work item and two events, normal 48-hour retention. Do not call this released until updated CI/preview and production comparison pass. Six dictionaries have 637 candidate messages; production still has 631. +Released: [controller detail pagination and font build fix](../LLMISER_CONTROLLER_PAGINATION.md), PR #19 at `efbeab60026b0e77a71a3d16822d81bbe6f81f2b`. All seven CI jobs passed before/after merge, including 279 frontend tests and build; all six Vercel production statuses succeeded. Actual authenticated traversal recovered exact IDs for four files, 73 nodes, one work item and two events; initial nodes were bounded to 50. All four ACTIVE files were signed/fetched and an assembled ZIP reopened with four entries. Old client 409, unauthenticated 401, invalid limit 400 and private headers passed. All 16 font responses matched hashes/immutable headers; HTML/CSS retained local font delivery and three preloads. Twenty HTTP checks passed; uncached wake was 2/2 in all pools. The one generated baseline job retains normal 48-hour cleanup. No native browser layout, destructive admin/cleanup or new backend capacity/revision acceptance is implied. -Released: [shared conversion deadlines](../LLMISER_SHARED_DEADLINES.md), PR #17 at 9131a2a. All seven CI jobs passed before/after merge, all six Vercel statuses succeeded and all six workers reported the exact revision/readiness. Thirty production auth/expired/invalid/valid/legacy protocol requests passed; eight future-header workbook/ZIP comparisons and two Storage baselines retained identical output/counts. Two additional Storage jobs exercised image-ZIP OCR/merge and scanned-PDF OCR/merge with exact recovery. Twenty public HTTP checks passed and all pools were 2/2 ready. Six generated Storage jobs in total across pre/post/multi-stage probes follow existing retention; cleanup was not manually run. Controller detail pagination is next; no whole-job lifetime or exactly-once write guarantee is claimed. +Released: [shared conversion deadlines](../LLMISER_SHARED_DEADLINES.md), PR #17 at 9131a2a. All seven CI jobs passed before/after merge, all six Vercel statuses succeeded and all six workers reported the exact revision/readiness. Thirty production auth/expired/invalid/valid/legacy protocol requests passed; eight future-header workbook/ZIP comparisons and two Storage baselines retained identical output/counts. Two additional Storage jobs exercised image-ZIP OCR/merge and scanned-PDF OCR/merge with exact recovery. Twenty public HTTP checks passed and all pools were 2/2 ready. Six generated Storage jobs in total across pre/post/multi-stage probes follow existing retention; cleanup was not manually run. Controller detail pagination is now released in PR #19; no whole-job lifetime or exactly-once write guarantee is claimed. Released: [Excel conversion and final-result assembly memory](../LLMISER_EXCEL_ASSEMBLY_MEMORY.md), explicitly selected by the owner, PR #15 at 3db4114. Local suites: 144 normal/101 archive tests; installed-version checks passed. All seven Linux CI jobs and six Vercel production statuses passed, with exact revision/readiness verified on all six workers including Render. Eight post-release generated multipart probes and two Storage-backed XLSX/ZIP conversions passed, including all four output objects and exact saved-result recovery. Before/after Markdown, counts and index hashes match; manifest job IDs correctly differ. All 20 HTTP checks passed and all pools were 2/2 ready. Four real jobs across before/after tests follow normal retention; cleanup execution itself was not tested. Local Windows OCR readiness-suite failure is preserved in the report; Linux OCR CI passed.