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
4 changes: 4 additions & 0 deletions docs/LLMISER_ANALYTICS_CONTROLLER.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
26 changes: 20 additions & 6 deletions docs/LLMISER_CONTROLLER_PAGINATION.md
Original file line number Diff line number Diff line change
@@ -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.

Expand Down Expand Up @@ -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.
2 changes: 2 additions & 0 deletions docs/LLMISER_ENVIRONMENT.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
2 changes: 1 addition & 1 deletion docs/LLMISER_LOCALIZATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down
2 changes: 2 additions & 0 deletions docs/LLMISER_MIGRATION.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
8 changes: 4 additions & 4 deletions docs/LLMISER_OPTIMIZATION_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@ 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.

The copied source already contains atomic job startup/finalization, cleanup recovery, upload/active-job/storage-reservation admission, shared archive container checks, bounded PDF page uploads/OCR preparation, lazy Markdown/highlighter loading and current-edit export snapshots. Do not reimplement these based on old “proposed” checklist rows. Their deployment/capacity evidence is distinct from source tests.

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

Expand Down Expand Up @@ -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 |
Expand Down
Loading
Loading