Skip to content

Sync upstream dev into re-dev (2026-10-19) - #8

Merged
gedaiu merged 20 commits into
re-devfrom
sync/upstream-dev-2026-10-19
Oct 19, 2026
Merged

gedaiu merged 20 commits into
re-devfrom
sync/upstream-dev-2026-10-19

Conversation

@gedaiu

@gedaiu gedaiu commented Oct 19, 2026

Copy link
Copy Markdown

Brings re-dev up to upstream dev at 4c5221ad: 17 commits, among them deeplethe#1307 (the typed recompute plans its whole-base statements for the base), deeplethe#1291, deeplethe#1268, deeplethe#1263, deeplethe#1274, deeplethe#1250, deeplethe#1309 and deeplethe#1310. The dev mirror was fast-forwarded to upstream first.

Reverted first: our interim recompute fix from #3 (SET LOCAL plan_cache_mode). Upstream merged its own version in deeplethe#1307, with the whole-base statements uncached and s.kb_id = $1 in the cleanup, so re-dev now carries upstream's only. materialize.rs is identical to upstream's.

Conflicts. Upstream's version wherever upstream merged the feature. Both sides where a fork-only feature shares the file.

Schema version 103. Upstream added migration 0114 and we carry 9000, so there are 103 migration files. Both sides had bumped CURRENT_SCHEMA_VERSION to 102 independently, which merged without a conflict but was wrong.

🤖 Generated with Claude Code

gedaiu and others added 20 commits October 18, 2026 11:20
…ince both are push-only and a backend mirrors code and docs into a base as plain documents (deeplethe#1274)

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
…eplethe#1255)

* Keep sparse XLSX imports within the grid memory budget

Signed-off-by: dada-yan <BinjunYann@gmail.com>

* Preserve ordinary XLSX imports while bounding sparse grid storage

Signed-off-by: dada-yan <BinjunYann@gmail.com>

* Preserve readable worksheets when another sheet cannot be decoded

Signed-off-by: dada-yan <BinjunYann@gmail.com>

---------

Signed-off-by: dada-yan <BinjunYann@gmail.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
…eeplethe#1258)

* Reject ambiguous email matches so SSO cannot link the wrong account

Signed-off-by: Floating-Y <118035379+Floating-Y@users.noreply.github.com>

* Classify ambiguous SSO accounts as unlinked and record the decision

Signed-off-by: Floating-Y <118035379+Floating-Y@users.noreply.github.com>

---------

Signed-off-by: Floating-Y <118035379+Floating-Y@users.noreply.github.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
…overlap (deeplethe#1259)

* Keep an active system administrator when account removals overlap

Signed-off-by: Floating-Y <118035379+Floating-Y@users.noreply.github.com>

* Serialize administrator removals without blocking foreign key checks

Signed-off-by: Floating-Y <118035379+Floating-Y@users.noreply.github.com>

---------

Signed-off-by: Floating-Y <118035379+Floating-Y@users.noreply.github.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
* The importer reads utopia:temporal on a property

The export has written utopia:temporal on every property that is not a
state since 0031, and the importer never read it back: an ontology that said
a relation is an event came in as a state, and the rule of deeplethe#1242, which binds
a pushed phrase by the declaration only when the relation is not a state,
could never apply to an imported vocabulary.

The turtle projection reads urn:utopia:ns:temporal with one of state, event
or eternal; any other value is reported under the preview's unprojected
predicates and the property stays unset. A new relation is created with the
value, a re-import updates an existing relation's temporal to what the file
says, and a file that says nothing leaves it alone, so a value a person set
on the page survives an unannotated re-import. Attributes stay state.

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>

* The import reports a bad utopia:temporal under its IRI, the export writes state too, and an import that changes temporal moves updated_at

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>

---------

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
)

* An end moved to the end of its period says so on the row

Signed-off-by: Maya Kid <BinjunYann@gmail.com>

* Name the pull request and the close-by-date issue in the 0053 revision

Signed-off-by: Maya Kid <BinjunYann@gmail.com>

* Leave the backfill to its own pull request and keep the mark's rule in one helper

Signed-off-by: Maya Kid <BinjunYann@gmail.com>

---------

Signed-off-by: Maya Kid <BinjunYann@gmail.com>
…s given, and the source cleanup reads only that base's statements. (deeplethe#1307)

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>
…choose between candidates (deeplethe#1309)

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
…ures only for keys not already settled (deeplethe#1310)

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
… seconds instead of three times a second (deeplethe#1311)

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
… reaches, so a service mirroring into Utopia can read its own base back without a person's session (deeplethe#1263)

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
Signed-off-by: Floating-Y <118035379+Floating-Y@users.noreply.github.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
* Propose that a statement's role word follows its newest live evidence instead of the first value written, as of reads included

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>

* Narrow 0070 to supersession, back-fill role words onto every evidence chunk, give a role word its chunk's record time, and point 0037 at it

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>

* Rename 0070 to say that a role word speaks while its chunk is live, now that no ordering decides between live rows

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>

---------

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
… base switcher, the chat scope chip, the token picker and My knowledge bases (deeplethe#1250)

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
…ges (deeplethe#1314)

Signed-off-by: Aschenbath <Aschenbath@users.noreply.github.com>
Co-authored-by: Aschenbath <Aschenbath@users.noreply.github.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
Signed-off-by: Aschenbath <Aschenbath@users.noreply.github.com>
Co-authored-by: Aschenbath <Aschenbath@users.noreply.github.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
…#1268)

* A push that names its external_id keeps that id's document, so identical content under another id is reported as a duplicate instead of renaming the first, vanishing as unchanged, or failing the push

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>

* Tombstone then push renames a declared id, and a duplicate answer leaves no restore or missing-flag change behind

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>

---------

Signed-off-by: Bogdan Szabo <bogdan@re-cinq.com>
Co-authored-by: WaylandYang <145302500+WaylandYang@users.noreply.github.com>
…iven, so a generic plan cannot turn its source cleanup into hours."

This reverts commit 10fa50b.
…#1268 and 15 more

# Conflicts:
#	crates/utopia-server/src/api/mod.rs
#	crates/utopia-server/src/api/sources_statements_tests.rs
#	crates/utopia-server/src/auth.rs
#	crates/utopia-server/src/phrase_alignment.rs
#	docs/decisions/0014-identity-from-the-person-scope-from-the-token.md
#	docs/decisions/0031-an-event-holds-at-the-moment-it-names.md
#	docs/decisions/0054-a-source-may-push-statements-in-the-open-contract.md
#	docs/design/access-and-audit.md
#	web/src/docs/ingest.md
#	web/src/pages/KbMenuList.tsx
@gedaiu
gedaiu merged commit 4858faf into re-dev Oct 19, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants