Repository navigation
A typed fact is as confirmed as the statement it was built from - #37
Merged
Merged
Conversation
Materialize copies a statement's evidence onto the typed row it builds, and a re-push that states the statement again gives only the statement the new chunk. The typed row kept the old, superseded copy and went to Review as unconfirmed although its statement was current: 71,025 such rows in one base. UNCONFIRMED_FACT now leaves out a typed row while one of its source statements is live, open and backed by a live chunk; graph::stale_facts reads the same fragment instead of its own copy (RC-005).
gedaiu
added a commit
to re-cinq/lore
that referenced
this pull request
Oct 24, 2026
Bumps `utopia_image_tag` to `0.1.0-re.23` and `utopia_image_digest` to `sha256:86591a57...`, the multi-arch index digest checked against ghcr. re.23 judges a typed fact as confirmed while the statement it was built from is still stated (re-cinq/utopia#37, RC-005): a re-push gives only the statement its new evidence, so typed rows kept a stale copy and looked unconfirmed, 71,025 of them in lore's base. It also keeps every rewrite of an open statement a statement (re-cinq/utopia#38: a merge undone and a corrected interval). No new migration since re.22. After merge: `terraform apply` from main. Related: #3413. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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.
Materialize copies a statement's evidence onto the typed row it builds. When a statements source re-pushes an item that states the same thing again, the statement gets evidence on the new chunk and the typed row does not: it keeps the old copy, whose chunk is now superseded, and Review lists it as unconfirmed although its statement is current. In one production base that is 71,025 typed rows. RC-004's close leaves typed rows that have a statement source to their statement, so nothing ever cleared them.
UNCONFIRMED_FACTkeeps its three clauses and adds one: a typed row is not unconfirmed while one of its source statements (typed_fact_sources) is live, open and has evidence on a chunk that is not superseded. Open statements and typed rows with no statement source are judged as before. The lookups go through the primary keys oftyped_fact_sources,factsandfact_evidence.graph::stale_factshad its own copy of the old clauses and now reads the fragment, so the list and the counts agree. The decision is RC-005;web/src/docs/ingest.mdgains one sentence.Not changed here: readers of a typed row's own evidence (
graph::fact_evidence) still see the old copy, and rows a rule implies from a statement (implied_fact_sources) are not covered. RC-005 names both as follow-ups.Tests:
a_typed_fact_is_unconfirmed_only_once_its_statement_is(new, failed before the fix with(2, [lone, typed])), RC-004's and the review tests;cargo test -p utopia-storeandcargo test --bin utopia-servergreen on a fresh migrated database; fmt and clippy-D warningsclean.🤖 Generated with Claude Code