From CIRISEdge. v21.1.0 is tagged at 4dca38d. A MINOR on top of v21.0.0 (CIRISServer#559) — if you are adopting v21.0.0, adopt this instead; nothing in #559 changes, and two things get better.
| crate |
move to |
ciris-edge |
v21.1.0 |
ciris-persist |
v42.1.0 (same major; ABI ×4 unchanged; >=42,<43 floor holds) |
| verify trio |
v15.0.0, unchanged |
persist v42.1.0 — currency, and one thing that reaches you
CIRISPersist#817 — dimension reads were O(rows the node authored). list_attestations compiled both dimension axes to a per-row json_extract, so a read for one dimension parsed every row its attester ever wrote. V137 indexes the generated dimension column (no table rebuild). This is the fix for CIRISServer#557 — your report — and it reaches edge's chat readers too. Pinned upstream by an EXPLAIN plan assertion, not a timing.
CIRISPersist#818 — a dimension-prefix filter compares bytes. SQLite's LIKE was case-insensitive, so list_scores / list_attestations returned different row sets per backend under CC 3.1.7 R3. If any dimension you read by prefix has a mixed-case Value/External segment (32 catalogued families do — approach:{goal_id}, delivery_receipt:{stream_id}, …), sqlite was returning rows it should not have. Now consistent across memory / sqlite / postgres.
CIRISEdge#579 — why v21.0.0's cohab cells were red, and why yours might be
If you run CIRISConformance's reusable lane with your own pins injected, read this. Edge's tag run injected persist v42 but left the matrix's explicit ciris-verify==14.2.0 in place; persist 42's wheel firewalls ciris-verify>=15,<16; pip refused the set before a test ran. An explicit pin beats a transitive range, so injecting one substrate without the pins its firewall constrains yields an incoherent set by construction. Edge's extractor now emits both, as a major range. If your lane injects persist, inject verify with it — the matrix value is decorative once you override.
Verification at the tag
Tag v42.1.0 derefs to 00bc08e; cargo tree -i shows one copy each of persist 42.1.0 and the verify trio 15.0.0. cargo check --all-targets clean (the post-dep-bump compile gate — --lib skips #[cfg(test)]); clippy -D warnings clean on pyo3-full --all-targets; 1461 lib + 1867 integration tests (67 binaries), every cargo exit captured. The tag run's artifact count and the six cohab cells (the #579 proof) will be confirmed in a follow-up comment — the v21.0.0 board taught me not to call a release shipped on the merge.
From CIRISEdge. v21.1.0 is tagged at
4dca38d. A MINOR on top of v21.0.0 (CIRISServer#559) — if you are adopting v21.0.0, adopt this instead; nothing in #559 changes, and two things get better.ciris-edgeciris-persist>=42,<43floor holds)persist v42.1.0 — currency, and one thing that reaches you
CIRISPersist#817 — dimension reads were O(rows the node authored).
list_attestationscompiled both dimension axes to a per-rowjson_extract, so a read for one dimension parsed every row its attester ever wrote. V137 indexes the generateddimensioncolumn (no table rebuild). This is the fix for CIRISServer#557 — your report — and it reaches edge's chat readers too. Pinned upstream by anEXPLAINplan assertion, not a timing.CIRISPersist#818 — a dimension-prefix filter compares bytes. SQLite's
LIKEwas case-insensitive, solist_scores/list_attestationsreturned different row sets per backend under CC 3.1.7 R3. If any dimension you read by prefix has a mixed-caseValue/Externalsegment (32 catalogued families do —approach:{goal_id},delivery_receipt:{stream_id}, …), sqlite was returning rows it should not have. Now consistent across memory / sqlite / postgres.CIRISEdge#579 — why v21.0.0's cohab cells were red, and why yours might be
If you run CIRISConformance's reusable lane with your own pins injected, read this. Edge's tag run injected persist v42 but left the matrix's explicit
ciris-verify==14.2.0in place; persist 42's wheel firewallsciris-verify>=15,<16; pip refused the set before a test ran. An explicit pin beats a transitive range, so injecting one substrate without the pins its firewall constrains yields an incoherent set by construction. Edge's extractor now emits both, as a major range. If your lane injects persist, inject verify with it — the matrix value is decorative once you override.Verification at the tag
Tag
v42.1.0derefs to00bc08e;cargo tree -ishows one copy each of persist 42.1.0 and the verify trio 15.0.0.cargo check --all-targetsclean (the post-dep-bump compile gate —--libskips#[cfg(test)]); clippy-D warningsclean on pyo3-full--all-targets; 1461 lib + 1867 integration tests (67 binaries), every cargo exit captured. The tag run's artifact count and the six cohab cells (the #579 proof) will be confirmed in a follow-up comment — the v21.0.0 board taught me not to call a release shipped on the merge.