Persist external root bridge state - #291
Conversation
roborev: Combined Review (
|
a357e7e to
f8200d0
Compare
roborev: Combined Review (
|
4b750fb to
cddac0d
Compare
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
|
looking now |
|
i paused on one schema suggestion instead of blindly adding it. I want to avoid bloat. the two Kata fields are
for Notion, that would normally be two separate properties, e.g. Start and Due. the edge case is that today both Kata fields can be mapped to the same Notion property, so reads/writes collapse into one value. the suggested DB constraint would only prevent that within one connector instance: |
- fix: protect external root storage transitions - fix: close external root federation edge cases - fix: handle mapping timestamp row cleanup - fix: validate external root canonical values - fix: keep external timestamps lexically sortable - fix: preserve externally owned federated comments - fix: keep owned comment metadata stable - fix: preserve external root invariants - fix: compile PostgreSQL federation projection - fix: serialize external field mutations - fix: pin connector account identity - fix: serialize mapping upserts and comment time - test: use integer timestamp nanoseconds - test: use waitgroup go for mapping races - fix: preserve sqlite comment timestamp precision - fix: order mixed-precision sqlite comments - fix: preserve local sqlite comment precision - test: cover legacy sqlite comment ordering - fix: preserve external comment frontier precision - fix: order postgres comments by timestamp - ci: retry flaky Windows process test - fix: validate connector collection ordering - fix: preserve federated comment timestamps - fix: reject NUL external root values - test: modernize timestamp retry loop - test: preserve replayed comment precision - fix: preserve bridge ownership on federation delete - fix: align projected comment federation actor - fix: bind external bridge event actors - ci: retry Windows process test - fix: preserve issue sync ownership on replay - fix: reject mismatched connector root responses - fix: validate connector mutation readbacks Generated with Codex Co-authored-by: Codex <codex@openai.com>
3bab7c2 to
79651b3
Compare
roborev: Combined Review (
|
Malformed field writes could omit compare-and-set preconditions when the field keysets differed. Invalid reconciliation checkpoints could also replace durable provider state while releasing an active claim. Require complete field preconditions before connector dispatch or process launch. Reject incomplete or unknown root checkpoints before either database backend mutates the binding. Generated with Codex Co-authored-by: Codex <codex@openai.com>
roborev: Combined Review (
|
Connector authors need the complete compare-and-set (CAS) rule before the protocol's first release. The reference now makes the required precondition and conflict behavior explicit without adding an unused compatibility layer. Generated with Codex Co-authored-by: Codex <codex@openai.com>
roborev: Combined Review (
|
Project-scoped exports must carry connector mapping configuration before the first field state exists. Otherwise a later cutover can retain the binding but lose the active fields it needs. Keep active mappings for bound connector instances while retaining inactive mapping history that the selected project's field states still reference. Generated with Codex Co-authored-by: Codex <codex@openai.com>
What changed
Persisted schema
Both backends add
external_root_bindings,external_field_mappings, andexternal_field_states, with foreign keys, active-binding uniqueness, due-work indexes, typed-field constraints, conflict snapshots, and retry/claim state. PostgreSQL adds migration000026_external_root_bridgesand advances the schema version to 26; SQLite updates its canonical bootstrap schema to the same logical shape.Scope and dependency
This is PR 2 of the delivery sequence tracked in #286 and depends on #287. The branch is cumulative so it builds before #287 merges; after #287 lands, the review diff narrows to storage and migration changes only.
Reconciliation behavior and user-facing daemon/API/CLI surfaces follow in subsequent PRs.
Part of #286.