refactor(platform): retire the convex tree, vocabulary, and packages - #3125
Merged
Conversation
This was referenced Sep 2, 2026
Israeltheminer
added a commit
that referenced
this pull request
Sep 3, 2026
The same text can sit in the corpus twice — one file uploaded as two documents, or a paragraph two documents share. Both copies match, and a bounded result set then spends two of its slots saying one thing while a different answer falls off the end. A caller asking for eight passages can receive seven distinct ones. Deduped on the text a caller actually reads, keyed with the corpus so the same wording found in a document and on a crawled page stays two answers. Whitespace is normalized, so two copies differing only in how their source wrapped lines count as one. Fusion has already sorted by score, so the first occurrence is the best one. The order is load-bearing: this runs AFTER the retrievability filter. Deduping first could keep a copy the caller cannot read and drop the readable one, and the gate would then remove what was kept — losing the passage entirely rather than showing it once. Closes #3061. Supersedes #3105, whose two files #3125 deleted.
This was referenced Sep 4, 2026
Israeltheminer
added a commit
that referenced
this pull request
Sep 4, 2026
A message that advertises an attachment whose bytes are gone offered a download that failed with a browser error and no explanation. Presigning does not prove the object is there — it signs a path. So the read path already re-derived each URL and dropped it when the presign itself failed, but a presign for a missing object succeeds, and the chip went on showing a file size and a download button. The probe rides the presign loop that already walks each attachment, using the existing statOrgBlob rather than a second pass over the same metadata. A probe that THROWS is not evidence of absence — an unreachable store, an unresolved org — so it fails open and the attachment is offered as before. Only a definite miss marks it: url withheld, unavailable stamped, and the chip reads 'No longer available' where the size was. Closes #3017. Supersedes #3104, three of whose files #3125 deleted.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Finishes the 0.5 teardown's last pending ledger row:
services/platform/convex/no longer exists, andconvex/@convex-dev/*/convex-helpersare out of the manifests. Four commits, in the order the inc-137 pause note prescribed.What changed
refactor(platform): retire the convex/values validator vocabulary— the 32 modules still importingv/Infer/GenericIdnow declare their contracts as plain TypeScript. Zero-importer files (sandbox/wire.ts,chat/schema.ts,enterprise_sso/validators.ts) and validator-only shells are deleted or renamed totypes.ts;GenericIdunbrands tostring(nineString()casts fell out as dead conversions); the cast-to-anyhelpers (type_cast_helpers,validators/json,lib/shared/schemas/utils/json-value) are gone with their call sites inlined. TheCommentEventCommentbuild guard the 0.4 comments promised is real again — the backend'scomment.createdemit now types its reconstruction.refactor(platform): move the ported domain logic to backend/core— the whole tree moves (git mv, history preserved) tobackend/core/, besidedomains/: it is the ported logic the doors and jobs drive. Three genuinely shared server utilities relocate intolib/instead (lib/net/safe-fetch.ts,lib/net/host-policy.ts,lib/chat/untrusted-content.ts), solib/imports nothing frombackend/. A resolver-backed rewriter recomputed every relative and@/import (369 files); non-import paths (avi.doMockspecifier, apath.resolvehop count, the shared i18n suite's scan roots) were caught by the suites and fixed. Build and config follow: Dockerfile (core is copied before the vite build — the app imports@/backend/core/*type/constant vocabulary; the runtime/app/convexcopy and deadCONVEX_URL/INSTANCE_NAMEenvs are gone), oxlint override globs, vitest excludes, the e2e cache key, the CLI's embedded reference tree (convex→backend/core), and the last convex-named modules (ctx-shim,product-enums,use-file-upload, WebDAV'sctx.backend/backendApiUrl).refactor(platform): drop the convex packages and dead client remnants—convexand@convex-dev/better-authleavepackage.json, the rootconvex-helpers/@convex-dev/agentpatches go,convex.jsonis deleted, and theconvexcommitlint scope retires. The function-refs proof suite keeps the expected name strings and drops the package comparison, as designed in inc 137. Dead client remnants go with them: theconvexClient()auth plugin (its server half died with the runtime —warmConvexTokenhad been fetching a 404 since cutover), theconvex-token-cache/use-auth-from-better-authbridge modules and their four stale call sites, 16 inertvi.mock('@/convex/…')scaffolds, the orphanedconvexDashboardlocale keys (en/de/fr), and the.convex.cloudallowlist branch in the email preview (strictly narrowing).docs(platform): record the convex teardown in the ledgers— MIGRATION.md's pending row flips to done; the platform and backend READMEs and.agents/repo.mddescribe the tree that actually exists.Deliberately kept
The
convex-datacompose volume name (deployed contract — renaming would orphan operator data; the volume comment says so),SANDBOX_STORAGE_INTERNAL_BASE_URL=http://convex:3210and theSANDBOX_CONVEX_*_DEFAULTconstants (live sandbox-net alias values), thecleanup-pr-imagesGC list, the.convex/gitignore entries,ParsedBlobRef's'convex'arm andconvexStorageId(stored-data format vocabulary), and historical prose in the ledger and code comments.Not in this PR (priced, tracked)
The WebDAV HMAC helper duplication in
lib/webdav/auth.ts↔backend/core/webdav/helpers.tscan now be folded into one copy (the isolate that forced it is gone; the parity test pins both until then), and the docs trees still carry Convex-era prose (data-residency, appDb copy) — the docs sweep inc 145 already booked.Verification