Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
301 commits
Select commit Hold shift + click to select a range
fddcddb
fix(query): let recursing parts() and wholes() follow earlier traversals
pdlug Sep 23, 2026
00901e9
refactor(store): restore one owner for hop-bounded reachable CTEs
pdlug Sep 23, 2026
81b906c
docs: state the exact-kind surfaces and the updateWhere candidate rule
pdlug Sep 23, 2026
7160f58
fix(identity): diff replaced closures by member so every absorbed cla…
pdlug Sep 23, 2026
10917c0
fix(graph-merge): import the assertion policy label through the inter…
pdlug Sep 23, 2026
285ba55
style(identity): sort barrel exports
pdlug Sep 23, 2026
99b4410
fix(identity): name engine-native ownership when refusing identity re…
pdlug Sep 23, 2026
7b27825
fix(provenance): route fact currency close and reopen through the nod…
pdlug Sep 23, 2026
d35bb33
fix(identity): note a window-end transition when a node's window is r…
pdlug Sep 23, 2026
be74f5a
fix(identity): capture an evolve's identity preflight notes on histor…
pdlug Sep 23, 2026
c9e48a0
fix(backend): ship the identity transition log as one base-schema rel…
pdlug Sep 23, 2026
5fcd19c
docs(changeset): state the identity transition log's base-schema upgrade
pdlug Sep 23, 2026
1bc5ca4
docs(changeset): cover subgraph composition on tx, batch refusal, and…
pdlug Sep 23, 2026
72ba897
fix(query): type parts() and wholes() depth and path like recursive()
pdlug Sep 23, 2026
d5ab586
fix(store): read a composition subgraph at one current instant
pdlug Sep 23, 2026
a21c1ca
docs(queries): point qualified-path readers at endpoint filters
pdlug Sep 23, 2026
669edb4
docs(query): describe the recursive selection pass's per-stage invariant
pdlug Sep 23, 2026
db2e8e0
test(query): assert parts() option result types as readonly rows
pdlug Sep 23, 2026
9316e92
fix(store): observe direct subgraph statements with query hooks
pdlug Sep 23, 2026
bd862df
fix(store): refuse required composition parts in writeNodeUpsertBatch
pdlug Sep 23, 2026
f92b048
fix(schema): run the tightening preflight on adopted evolutions
pdlug Sep 23, 2026
7a7955d
fix(graph-merge): judge evolution merge orphans under the resulting s…
pdlug Sep 23, 2026
b1fe153
fix(graph-merge): record the same identity decision from both plan ap…
pdlug Sep 23, 2026
f1037f2
fix(graph-merge): refuse pre-v2 merge reviews as an unsupported version
pdlug Sep 23, 2026
a3e41c8
fix(graph-merge): keep identity and composition plans off native dura…
pdlug Sep 23, 2026
3496f72
fix(schema): check tightenings when rolling back to a stricter schema
pdlug Sep 23, 2026
649b490
test(schema): cover a loosening rollback without the preflight flip
pdlug Sep 23, 2026
a9e0ef2
fix(graph-merge): clone required composition parts through one import…
pdlug Sep 23, 2026
c95086f
chore(api): re-baseline API reports and the surface ledger on 0.68.1
pdlug Sep 23, 2026
8bc7499
chore: drop exports and helpers no caller reaches
pdlug Sep 23, 2026
4311ea6
fix(schema): capture recorded history for standalone schema commits o…
pdlug Sep 23, 2026
fd4e0a2
fix(schema): route rollbackSchema through the composed commit preflight
pdlug Sep 23, 2026
08e5797
test(schema): cover a rollback that re-keys a populated edge kind
pdlug Sep 23, 2026
6caf30d
refactor(store): compose removeKinds' schema commit through the share…
pdlug Sep 23, 2026
ac23f32
docs(changeset): record schema, merge, and import refusals from the r…
pdlug Sep 23, 2026
8fe8500
fix(schema): report the rollback target on an edge re-key refusal
pdlug Sep 23, 2026
e80df09
test: reconcile the column inventory and engine parity capture after …
pdlug Sep 23, 2026
ec3af2c
style: format files touched by the review fixes
pdlug Sep 23, 2026
aa97ae3
test: pair subgraph query hook ends with starts regardless of complet…
pdlug Sep 23, 2026
fd27a71
feat(identity): separate the history page cursor from the recorded wi…
pdlug Oct 5, 2026
b862aeb
docs: drop the roadmap shorthand from query-default comments and rewr…
pdlug Oct 5, 2026
8df92f1
fix(search): type expanded search hits by the stated expansion axis
pdlug Oct 5, 2026
10a4492
feat(composition): nest the whole under the attachment and give repar…
pdlug Oct 5, 2026
52f1538
fix(search): accept the expansion axis when the kind generic is spell…
pdlug Oct 5, 2026
10a08a1
fix(composition): apply or refuse every stated attachment option
pdlug Oct 5, 2026
138974f
refactor(graph-merge): remove discretionary identity arbitration from…
pdlug Oct 5, 2026
157e785
refactor(store): drop unread conflict-as-data scaffolding from resolv…
pdlug Oct 5, 2026
0ccb39d
Merge scope637/cut
pdlug Oct 5, 2026
b2060fa
Merge scope637/attach
pdlug Oct 5, 2026
1c84438
Merge scope637/cursor
pdlug Oct 5, 2026
b0c6b19
Merge scope637/search
pdlug Oct 5, 2026
661e96d
Merge main into integration/ontology-semantics
pdlug Oct 5, 2026
19ef4ae
Bring the merged tree to a green baseline
pdlug Oct 5, 2026
40c91d8
Add failing audit probes
pdlug Oct 5, 2026
9780087
fix(composition): verify a stated attachment window and refuse one th…
pdlug Oct 5, 2026
a5b1128
fix(store): probe batch edge acyclicity before the insert
pdlug Oct 5, 2026
ad2a9ad
fix(schema): probe every edge endpoint admission loss before committi…
pdlug Oct 5, 2026
49650fe
fix(composition): refuse an upsert that would restore a required part…
pdlug Oct 5, 2026
6a2de37
fix(store): probe cardinality before a durable-identity edge create w…
pdlug Oct 5, 2026
2f98911
fix(graph-merge): one node write phase for every merge apply path
pdlug Oct 5, 2026
f296ec3
fix(composition): reach every create-time attachment refusal before t…
pdlug Oct 5, 2026
c7b75de
fix(schema): compare property schemas across projection spellings
pdlug Oct 5, 2026
74e42ac
fix(store): probe one whole per part relation-wide on the portable path
pdlug Oct 5, 2026
2398e58
fix(composition): judge every cascade delete before the first row is …
pdlug Oct 5, 2026
2fcf10a
fix(core): refuse edge integrity options stated outside their domain
pdlug Oct 5, 2026
d46c62d
fix(identity): refuse a prune watermark beyond the recorded clock
pdlug Oct 5, 2026
f334581
fix(postgres): give working-copy relations distinct names and guard t…
pdlug Oct 5, 2026
1b0b780
fix(graph-merge): carry the base store's queryDefaults onto a cloned …
pdlug Oct 5, 2026
1c4952f
fix(store): refuse a stated preserve on a backend that cannot clear p…
pdlug Oct 5, 2026
ba1baf5
fix(identity): keep a departed member's lineage discoverable
pdlug Oct 5, 2026
7943a3c
fix(ontology): validate composition declaration options where they ar…
pdlug Oct 5, 2026
673acf7
fix(query): read traversal endpoint admission from the edge registration
pdlug Oct 5, 2026
ada731e
fix(store): answer unbounded from changesSince across an identity write
pdlug Oct 5, 2026
e3b2d01
fix(query): validate the store-wide default expansion at construction
pdlug Oct 5, 2026
31155f5
fix(interchange): judge imported required parts on the rows that were…
pdlug Oct 5, 2026
400eb69
fix(schema): fold nested unions of bare primitives across projection …
pdlug Oct 5, 2026
ae5de46
docs(store): scope the working-copy queryDefaults claim to copies all…
pdlug Oct 5, 2026
789e4a7
fix(graph-merge): plan artifacts carry a reopened validity window
pdlug Oct 5, 2026
cffadc3
fix(identity): let a prune reach restored transitions above the desti…
pdlug Oct 5, 2026
d7e56dc
fix(query): page traversal queries by result row
pdlug Oct 5, 2026
7a8363f
chore(composition): settle lint on the regression tests and drop an e…
pdlug Oct 5, 2026
6fb3fca
fix(store): refuse a caller-stated coordinate on StoreView reads
pdlug Oct 5, 2026
a55d591
fix(store): refuse unregistered kinds on subgraph and algorithm reads
pdlug Oct 5, 2026
71b0671
style: format the StoreView sealed-coordinate test
pdlug Oct 5, 2026
85e1848
docs: drop insert-then-probe wording for the batch acyclicity fence
pdlug Oct 5, 2026
374f748
fix(composition): plan a batch delete against what earlier items remo…
pdlug Oct 5, 2026
b0b9a3e
fix(store): probe edge batches whole before any write, seal StoreView…
pdlug Oct 5, 2026
0a913be
Merge fix637/composition into integration/ontology-semantics
pdlug Oct 5, 2026
780aeb3
Merge fix637/schema-ontology into integration/ontology-semantics
pdlug Oct 5, 2026
99de033
Merge fix637/identity into integration/ontology-semantics
pdlug Oct 5, 2026
ca19d39
Merge fix637/merge into integration/ontology-semantics
pdlug Oct 5, 2026
7421c9c
Merge fix637/edges-query into integration/ontology-semantics
pdlug Oct 5, 2026
345b074
Merge fix637/infra into integration/ontology-semantics
pdlug Oct 5, 2026
ecb9ff7
Bring the merged fix lanes to a green baseline
pdlug Oct 5, 2026
80aa076
Simplify pass and comment hygiene
pdlug Oct 6, 2026
ae85931
fix(registry): resolve every reached composition kind through subsump…
pdlug Oct 6, 2026
b3b3483
fix(store): make the composition cascade read fresh rows and a fresh …
pdlug Oct 6, 2026
f891674
fix(store): refuse resurrecting a required part under a tombstoned whole
pdlug Oct 6, 2026
c43d9f3
fix(store): keep ended oneActive composition rows out of the acyclici…
pdlug Oct 6, 2026
f95a76c
fix(graph-merge): replay composition writes as a unit and judge orpha…
pdlug Oct 6, 2026
8127510
fix(store): apply the born-ended exemption to a composition re-entry
pdlug Oct 6, 2026
12db773
docs: state bulkReparent's per-item writes and the composition union'…
pdlug Oct 6, 2026
b404b6d
fix(graph-merge): read the ledger, not the readiness memo, for the se…
pdlug Oct 6, 2026
2317bac
fix(graph-merge): keep the reserved target stand-in out of a direct i…
pdlug Oct 6, 2026
3cb3257
fix(graph-merge): end a surviving retraction at a standing contributi…
pdlug Oct 6, 2026
c9be53f
fix(query): one row per traversal path, parent-typed polymorphic fiel…
pdlug Oct 6, 2026
828694f
fix(graph-merge): keep recorded namespace-fork proofs verifiable when…
pdlug Oct 6, 2026
7c3b1b5
fix(store): slice the batch acyclicity probe to the bind budget and h…
pdlug Oct 6, 2026
c16660f
fix(store): report a taken id before preparing a part's composition edge
pdlug Oct 6, 2026
68a4785
fix(interchange): write deferred edge rows in document order
pdlug Oct 6, 2026
8c7d4e3
fix(identity): note a window-end transition only after its row write …
pdlug Oct 6, 2026
e0290be
fix(interchange): run the identity window-end owner on the import upd…
pdlug Oct 6, 2026
94e501e
test(interchange): hoist window-end helpers out of the test callbacks
pdlug Oct 6, 2026
a1ca176
fix(store): adopt base-schema storage before evolve checks identity s…
pdlug Oct 6, 2026
83bfa30
fix(interchange): report every edge a required-part purge removes and…
pdlug Oct 6, 2026
4ec9b92
fix(interchange): report composition_unsupported from trusted import
pdlug Oct 6, 2026
4156cfb
fix(interchange): refuse an archived transition revision no recorded …
pdlug Oct 6, 2026
d132770
fix(interchange): decide a restore's destination freshness once, befo…
pdlug Oct 6, 2026
66cc5e2
Align changesets with the final branch
pdlug Oct 6, 2026
c14c1cc
Fix schema-classification and identity-log review findings
pdlug Oct 6, 2026
964754d
Decide structural propertyNames identity through the shared reference…
pdlug Oct 6, 2026
92df0c0
fix(query): name the kinds that leave a fulltext alias without search…
pdlug Oct 6, 2026
1bcec32
Reset every graph relation between PostgreSQL integration tests, read…
pdlug Oct 6, 2026
898ae97
Skip unprojectable kinds in the subsumption check and floor a streame…
pdlug Oct 6, 2026
049302e
fix(store): release a deleted node's unique keys from the row as tomb…
pdlug Oct 6, 2026
bc27dda
fix(identity): withdraw a window-end note when its row write is refused
pdlug Oct 6, 2026
62aec87
Correct the remaining default-expansion and claim-backed wording in t…
pdlug Oct 6, 2026
40613a9
Pin the schema diff summary for every modified ontology entry
pdlug Oct 6, 2026
532458d
test(store): pin the post-tombstone read a constrained cascade member…
pdlug Oct 6, 2026
36b196b
fix(store): reach every bulkReparent verdict before the first move
pdlug Oct 6, 2026
9da213f
test(store): cover the remaining routes of the composition and acycli…
pdlug Oct 6, 2026
68a7bdc
Attribute identity transitions to the class they leave behind and ref…
pdlug Oct 6, 2026
2547112
fix(query): keep parent-typed fulltext and embedding accessors from s…
pdlug Oct 6, 2026
cc5da25
docs: state the merge commit's isolation caveat for acyclic relations…
pdlug Oct 6, 2026
3aa7af3
test(graph-merge): replay composition writes into a history-capturing…
pdlug Oct 6, 2026
07bf6f6
fix(graph-merge): honor a merged branch's own different assertion in …
pdlug Oct 6, 2026
3eba735
fix(interchange): refuse a required part nothing can attach before it…
pdlug Oct 6, 2026
bf1b9c5
fix(store): keep an acyclic declaration's full population on a oneAct…
pdlug Oct 6, 2026
c443c8b
fix(store): judge a whole's own delete before a cascade removes a dea…
pdlug Oct 6, 2026
6d70129
test(store): pin the bind-budget slicing of an already-inserted acycl…
pdlug Oct 6, 2026
2924f30
docs: state that an acyclic declaration keeps counting ended rows of …
pdlug Oct 6, 2026
877b15c
style: format the standalone-acyclic population test
pdlug Oct 6, 2026
ebe09e1
fix(interchange): take a refused import row's window-end identity not…
pdlug Oct 6, 2026
c30cae0
Merge branch 'rfix637/store' into integration/ontology-semantics
pdlug Oct 6, 2026
12b82b2
Merge branch 'rfix637/schema-identity' into integration/ontology-sema…
pdlug Oct 6, 2026
bec93d6
Merge branch 'rfix637/merge-interchange' into integration/ontology-se…
pdlug Oct 6, 2026
9e92acd
Merge branch 'rfix637/query-backend' into integration/ontology-semantics
pdlug Oct 6, 2026
0fa1859
Merge branch 'rfix637/docs-tests' into integration/ontology-semantics
pdlug Oct 6, 2026
b6135c3
Reconcile the merged review-fix lanes and refresh the API ledgers
pdlug Oct 6, 2026
51212cc
Align changesets with the final branch
pdlug Oct 6, 2026
db751c1
Return the exhaustive closure from parts() and wholes() when no maxHo…
pdlug Oct 6, 2026
fde88e0
Restore historical merge review format constants, unexport IdentityRe…
pdlug Oct 6, 2026
3ae45d0
Make the exhaustive/bounded decision single-owned and refuse contradi…
pdlug Oct 6, 2026
15c551c
Decide every matched item of a bulk get-or-create before its first write
pdlug Oct 6, 2026
4d39d27
Refuse cursor pagination over a recursive traversal
pdlug Oct 6, 2026
64b6c86
Document the recursive pagination refusal in the error catalogue and …
pdlug Oct 6, 2026
5a30866
Refuse schema commits that strand uniqueness enforcement
pdlug Oct 6, 2026
515e818
Guard the candidate-scope revalidation refusal and tighten candidate …
pdlug Oct 6, 2026
ce24215
Decide a bulk get-or-create batch's whole set before its first write
pdlug Oct 6, 2026
24c395c
fix(store): advance the graph's fence row so a stale snapshot cannot …
pdlug Oct 6, 2026
7206e1e
Close the remaining gaps in the uniqueness claim gate
pdlug Oct 6, 2026
fa5ed97
refactor(graph-merge): remove the historical review format constants
pdlug Oct 11, 2026
e595ca1
fix(store): advance the fence row only for lock-only decisions
pdlug Oct 11, 2026
7126de6
Merge origin/main into integration/ontology-semantics
pdlug Oct 11, 2026
5b4cebd
Merge branch 'corr637/api-rulings' into integration/ontology-semantics
pdlug Oct 11, 2026
9468279
Merge branch 'corr637/recursive-pagination' into integration/ontology…
pdlug Oct 11, 2026
3889cfa
Merge branch 'corr637/parts-exhaustive' into integration/ontology-sem…
pdlug Oct 11, 2026
f3459ec
Merge branch 'corr637/uniqueness-migration' into integration/ontology…
pdlug Oct 11, 2026
6cd8ce8
Merge branch 'corr637/bulk-attach' into integration/ontology-semantics
pdlug Oct 11, 2026
a0ae9db
Merge branch 'corr637/fence' into integration/ontology-semantics
pdlug Oct 11, 2026
8285d8d
Reconcile the merged correction lanes and refresh the API ledgers
pdlug Oct 11, 2026
7468452
Take the write fence per write in transactions that expose raw SQL
pdlug Oct 12, 2026
e0c9379
Merge remote-tracking branch 'origin/main' into integration/ontology-…
pdlug Oct 21, 2026
0529482
Probe schema commits over every non-deleted row, including rows of a …
pdlug Oct 21, 2026
08eaa47
Judge subsumption on the Zod constraints the JSON Schema projection d…
pdlug Oct 21, 2026
bb03cf2
Refuse unindexed search expansions, the removed includeSubClasses opt…
pdlug Oct 21, 2026
d455462
Keep tx.sql the only raw SQL handle a transaction context carries
pdlug Oct 21, 2026
97e0573
Run PostgreSQL schema writes at read committed
pdlug Oct 21, 2026
f3a1414
Fix graph merge identity, apply-order and composition refusals
pdlug Oct 21, 2026
46ebf01
Scope identity history to membership, harden archival transition rest…
pdlug Oct 21, 2026
bbf627e
Close provenance parts with any whole whose currency moves, refuse ex…
pdlug Oct 21, 2026
14d52c9
Order the uniqueness claim axis and the split gate by one code-point …
pdlug Oct 21, 2026
ddb7e1c
Derive the active schema hash from the stored document, not the hash …
pdlug Oct 21, 2026
ff796f5
Persist a composition partSide only when it decides the relation
pdlug Oct 21, 2026
9572341
Refuse an identity-changing rollback with its own code on any backend
pdlug Oct 21, 2026
a47ee4c
Decide every bulk write's items before its first write
pdlug Oct 21, 2026
13ab104
Keep a member's history across a later kind drop or same-id profile c…
pdlug Oct 21, 2026
7038fb1
Refuse an adopted schema write before it touches the caller's transac…
pdlug Oct 21, 2026
f4e8288
Scope the composition orphan docs to each cause and fix the moved ref…
pdlug Oct 21, 2026
a66e99c
Hash the stored schema document as written and mark pattern flags on …
pdlug Oct 21, 2026
44dcc90
Type the representative unique constraints in the stored-hash test
pdlug Oct 21, 2026
203ec18
Give composition membership one owner and refuse future composition w…
pdlug Oct 21, 2026
8c31489
Decide a created node's identity fold before its insert
pdlug Oct 21, 2026
0f61045
Audit composition occupancy when a schema commit makes ended rows count
pdlug Oct 22, 2026
4ceb56d
Merge branch 'fix637/schema' into integration/ontology-semantics
pdlug Oct 22, 2026
1764baf
Merge branch 'fix637/fence' into integration/ontology-semantics
pdlug Oct 22, 2026
dcd0fb3
Merge branch 'fix637/identity' into integration/ontology-semantics
pdlug Oct 22, 2026
42f40c7
Merge branch 'fix637/query' into integration/ontology-semantics
pdlug Oct 22, 2026
fd00cc4
Merge branch 'fix637/merge' into integration/ontology-semantics
pdlug Oct 22, 2026
7e228cf
Merge branch 'fix637/batch' into integration/ontology-semantics
pdlug Oct 22, 2026
ae8303b
Merge branch 'fix637/membership' into integration/ontology-semantics
pdlug Oct 22, 2026
0ef4e65
Judge a template and an instantiated target an earlier release stored…
pdlug Oct 22, 2026
56a104e
Bring the source inventories and one test graph in line with the merg…
pdlug Oct 22, 2026
c106452
Accept decision options on in-transaction merge apply in the type tes…
pdlug Oct 22, 2026
e25a8da
Skip the two caught bulkReplaceById refusal cases on the postgres-js …
pdlug Oct 22, 2026
f557b8d
Refuse a schema commit that makes rows with a future window compositi…
pdlug Oct 22, 2026
b819eb9
Count the durable reopen's base-schema adoption in the reasoned acces…
pdlug Oct 22, 2026
b614e72
Merge branch 'fix637/futurerows' into integration/ontology-semantics
pdlug Oct 22, 2026
480201a
Decide a restored node's identity fold before the row comes back
pdlug Oct 22, 2026
b615b17
Merge branch 'fix637/foldresidue' into integration/ontology-semantics
pdlug Oct 22, 2026
bfc5d32
Judge a reparent's move instant against the attachment it ends
pdlug Oct 23, 2026
0143a2a
Refuse a merge that loses one branch's composition attachment to anot…
pdlug Oct 23, 2026
7eb887a
Merge branch 'fix637/backclock' into integration/ontology-semantics
pdlug Oct 23, 2026
3322395
Admit only a resolved move instant to a move's edge writes
pdlug Oct 23, 2026
a66b1b5
Merge branch 'fix637/backclock' into integration/ontology-semantics
pdlug Oct 23, 2026
eea61b7
Refuse a merge that loses a branch's re-attachment through an ended c…
pdlug Oct 23, 2026
80007d7
Document that a merged reopen of a composition row loses to a deletio…
pdlug Oct 23, 2026
bdf4260
Merge branch 'fix637/xbranch' into integration/ontology-semantics
pdlug Oct 23, 2026
d91dd9c
Link the reopen-versus-delete merge limitation to its tracking issue
pdlug Oct 23, 2026
703165a
fix(search): accept the library's own search option types in store.se…
pdlug Oct 24, 2026
2961bc9
Compare unconvertible fields per node and gate custom relation removal
pdlug Oct 24, 2026
faaeda1
feat(identity): report page completeness on transitionsOf and replay
pdlug Oct 24, 2026
935fed1
Add planDelete delete previews and carry whole and edge kind on casca…
pdlug Oct 24, 2026
de8668f
Pin the merge composition-orphan refusal for an edge dropped as endpo…
pdlug Oct 24, 2026
6c86534
Report candidate planning scope as a decision with a reason
pdlug Oct 24, 2026
b6dd241
Expand list sources like single kinds and refuse expansions the compi…
pdlug Oct 24, 2026
6ada722
feat(store): type edge endpoints through subsumption and add getNodeB…
pdlug Oct 24, 2026
9e2b4e8
Merge branch 'fix637/identity' into integration/ontology-semantics
pdlug Oct 24, 2026
0688248
Merge branch 'fix637/merge' into integration/ontology-semantics
pdlug Oct 24, 2026
5d525d2
Merge branch 'fix637/composition' into integration/ontology-semantics
pdlug Oct 24, 2026
592ac98
Merge branch 'fix637/scope' into integration/ontology-semantics
pdlug Oct 24, 2026
af01e6c
Merge branch 'fix637/typing' into integration/ontology-semantics
pdlug Oct 24, 2026
8b7e33e
Recompute forgotten-export debt after merging the API review fixes
pdlug Oct 24, 2026
70a52a9
Refuse a transactional planDelete inside a read-only transaction
pdlug Oct 24, 2026
f553d7b
Keep candidate validation and plan capability out of the planning-sco…
pdlug Oct 24, 2026
75a4832
fix(identity): report class members history capture never saw in tran…
pdlug Oct 24, 2026
230450a
Type stated-subclasses search hits polymorphically and refuse list so…
pdlug Oct 24, 2026
3cc9240
fix(store): accept widened endpoint references on the next-hop reads
pdlug Oct 24, 2026
99b84cf
Align the subsumption pre-flight with the live check and refuse custo…
pdlug Oct 24, 2026
56f62a3
Merge branch 'fix637/schema' into integration/ontology-semantics
pdlug Oct 24, 2026
b73689d
Merge branch 'fix637/identity' into integration/ontology-semantics
pdlug Oct 24, 2026
44867d8
Merge branch 'fix637/merge' into integration/ontology-semantics
pdlug Oct 24, 2026
3e035b6
Merge branch 'fix637/composition' into integration/ontology-semantics
pdlug Oct 24, 2026
3ed129a
Merge branch 'fix637/scope' into integration/ontology-semantics
pdlug Oct 24, 2026
7ee2b1a
Merge branch 'fix637/typing' into integration/ontology-semantics
pdlug Oct 24, 2026
33798a7
Recompute forgotten-export debt after the review fixes and fix a rena…
pdlug Oct 24, 2026
8a0c503
Type bulk edge reads' echoed reference as the input it accepted and m…
pdlug Oct 29, 2026
3f1b1db
Guard composition deletes with an expected plan and document an undo …
pdlug Oct 30, 2026
1e3aa35
Correct guarded-delete isolation docs, refuse options on hardDelete a…
pdlug Oct 30, 2026
e27facd
Merge remote-tracking branch 'origin/main' into integration/ontology-…
pdlug Oct 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 9 additions & 0 deletions .changeset/bulk-write-verdicts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@nicia-ai/typegraph": patch
---

`bulkUpsertById` and `bulkReplaceById` on nodes, and `bulkUpsertById` and `bulkGetOrCreateByEndpoints` on edges, now reach every verdict their items can raise by reading before their first write, so a refusal caught inside `store.transaction(...)` leaves none of the batch written. They wrote their creates first and then each update in turn, so a later item refused for a unique key it loses, a validity window that ends before it starts, a cardinality or target-cardinality allowance a resurrection or reopened window would exceed, a restore whose id a disjoint kind holds, an identity fold or window end the identity rules refuse, or a required composition part an edge write would detach left the earlier creates and updates committed when the caller caught it. The update half is now prepared in full before the creates are written and judged as the state the batch produces in write order, so a later item may still take a key or an allowance an earlier one gives up, and is refused one an earlier one takes or a new row of the same batch claims. When a row's stored window moves between the batch's read and its write, the batch converges as a single update does and prepares every remaining item again before writing the next; a refusal that preparation reaches follows the items already written. A concurrent writer the per-graph write fence does not exclude can still claim a key or remove a row between the reads and the writes, and that refusal comes from the write.

`bulkGetOrCreateByEndpoints` re-ran the whole batch once on a `CardinalityError`, also inside a caller's transaction after a create or update of the batch had been written there; it now re-runs only when the refusal left nothing of the batch written (the call opened its own transaction, or no write had run), so a raced batch inside `store.transaction(...)` reports the refusal instead of applying its writes a second time.

A node `create`, `bulkCreate` or `bulkInsert` on an identity graph (`sameIdAcrossKinds: "fold"`) whose caller-chosen id the identity fold refuses now writes nothing: the fold's `IdentityContradictionError` verdict is read before the insert or tombstone resurrection, where it used to follow it, so a refusal caught inside `store.transaction(...)` left the created rows committed. The create half of `bulkUpsertById` and `bulkReplaceById` takes the same path, and so do the single writes that bring a tombstone back, `upsertById` and `getOrCreateByConstraint` on a tombstone and a fact `unRetract` reopens, each of which left the row live when its fold was refused. `importGraph` still folds its nodes after writing them, since a fold can join two rows of the same document, and a refused fold rolls back the import's own transaction.
11 changes: 11 additions & 0 deletions .changeset/candidate-planning-scope.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"@nicia-ai/typegraph": minor
---

**Candidate planning reports the scope it planned in.** `planCandidateWriteSet()` stages a candidate from its own rows when the target allows it and from a clone of the whole target otherwise. That choice was a silent boolean; it is now a decision with a reason, returned beside the plan as `planningScope`: `{ scope: "candidate" }`, or `{ scope: "whole-target", reason }` where `reason` is one of `composition`, `acyclic-relation`, `target-side-cardinality`, `missing-active-source-read`, `missing-match-identity-read`, `missing-scoped-identity-reads`, `match-identity-owner-not-clone-visible` or `planned-evolution`. Both scopes produce the same plan, so the scope is not part of the merge plan artifact or its digest and `MERGE_PLAN_FORMAT_VERSION` is unchanged. The new `CandidatePlanningScope`, `CandidatePlanningScopeReason`, `WholeTargetPlanningScope` and `CandidateWriteSetPlan` types are exported from `@nicia-ai/typegraph/graph-merge`.

**`planningScope: "candidate"` makes the candidate scope a requirement.** Passed to `planCandidateWriteSet()`, it refuses with the new `CandidatePlanningScopeError` (`GRAPH_MERGE_CANDIDATE_PLANNING_SCOPE`, `details.planningScope.reason`) instead of planning against the whole target, before any staging backend is created. A candidate the target's schema refuses still reports its own validation error (`CandidateWriteSetError`) under the option, as it does without it; and a target that cannot carry a public merge plan at all (no revision tracking, or no interactive transactions) is refused with `MergePlanCapabilityError` before any staging backend is created, with or without the option. `planCandidateWriteSetForEvolution()` always stages the whole resulting graph, so it reports `planned-evolution` and takes no `planningScope` option. The review entry points forward it to planning. A refused candidate-scoped review (`details.reason: "candidate-scope-ineligible"`) now also carries `details.planningScope` naming the cause.

### Breaking

- `planCandidateWriteSet()` and `planCandidateWriteSetForEvolution()` now resolve to `Result<CandidateWriteSetPlan, MergeError>`, `{ plan, planningScope }`, instead of the bare `MergePlanArtifact`. Read the artifact from `result.data.plan`, for example `const { plan } = unwrap(await planCandidateWriteSet(args))`.
9 changes: 9 additions & 0 deletions .changeset/clear-preserve-refusal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@nicia-ai/typegraph": patch
---

`store.clear({ preserveContributionMaterializations: true })` is now refused with `UnsupportedBackendCapabilityError` on a custom backend that does not implement `clearGraphPreservingContributionMaterializations`, before anything is deleted. It previously fell back to `clearGraph` and could delete the markers it was asked to keep. `store.clear()` with the option omitted is unchanged: it prefers the preserving member and otherwise clears through the backend's own `clearGraph`. Bundled backends implement the member and are unaffected.

### Breaking

- A custom backend that does not implement `clearGraphPreservingContributionMaterializations` now refuses `store.clear({ preserveContributionMaterializations: true })` with `UnsupportedBackendCapabilityError`. Implement the member, or drop the option.
5 changes: 5 additions & 0 deletions .changeset/clone-working-copy-query-defaults.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@nicia-ai/typegraph": patch
---

`cloneWorkingCopyStrategy` (the default `branch()` strategy) and the ingestion-branch clone now open the working copy with the base store's `queryDefaults`, as the fork, namespace-fork and PostgreSQL table strategies already did. A base opened with `queryDefaults: { expansion: "exact" }` or a non-default `traversalExpansion` previously got a working copy on the library defaults, so the same query returned different rows on the branch than on the store it was branched from. Hooks, `coalesceUnchangedUpserts` and `autoRefreshStatistics` are still not carried to a clone.
Loading
Loading