Skip to content

Commit daabaf7

Browse files
awksedgreepclaude
andcommitted
release: prepare v0.5.0
Advance both workspaces to the 0.5 compatibility line for the codec-8 template compression feature: databases optimized by 0.5.0 contain rich-log blocks that pre-0.5.0 extensions refuse to decode, which is a new stored-data forward-compatibility line, not a patch. Per the pre-1.0 policy the pairing floors move with the line: the extension now floors servers at 0.5.0 and the servers floor extensions at 0.5.0 (release-line guard tests updated with them). Data ABI 1, SQL-surface generation 1, and all batch/frame formats are unchanged. Records the 0.5.0 changelog entry with its Compatibility section, updates the compatibility inventory (validated by query-harness contracts), and adds the codec-8 rollback note to the upgrade guide. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent ea72542 commit daabaf7

9 files changed

Lines changed: 60 additions & 26 deletions

File tree

CHANGELOG.md

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,14 @@ capability document remains authoritative for a particular binary pairing.
1010
See the [compatibility statement](docs/COMPATIBILITY.md) and
1111
[upgrade guide](docs/UPGRADE.md).
1212

13-
<!-- release-target: 0.4.2 -->
13+
<!-- release-target: 0.5.0 -->
1414

1515
## [Unreleased]
1616

17+
No changes recorded after `0.5.0`.
18+
19+
## [0.5.0] — 2026-08-08
20+
1721
### Added
1822

1923
- CLP-style template compression for rich log message columns
@@ -27,6 +31,24 @@ See the [compatibility statement](docs/COMPATIBILITY.md) and
2731
when the metadata envelope dominates. Ingest/flush is unchanged; all
2832
prior codecs remain decodable.
2933

34+
### Compatibility
35+
36+
- This minor selects a new compatibility line because of stored-data
37+
forward compatibility: after this extension runs rich-logs `optimize()`,
38+
the database contains codec-8 blocks that pre-`0.5.0` extensions refuse
39+
to decode (they fail loudly, matching the codec-6/7 posture). Reading
40+
older databases is unaffected — every prior codec stays decodable, and
41+
no migration runs at open.
42+
- Storage data ABI 1, SQL-surface generation 1, and the batch/frame
43+
formats are unchanged. The extension/server pairing floors advance with
44+
the line, as the pre-1.0 policy requires: the `0.5.0` extension floors
45+
servers at `0.5.0` and the `0.5.0` servers floor extensions at `0.5.0`,
46+
so a compatibility set upgrades as one unit. Servers load the extension
47+
in-process, so any handshake-accepted pairing decodes codec 8 through
48+
the loaded extension; the rollback caveat is a pre-`0.5.0` extension
49+
pointed at a database already optimized by `0.5.0` (see the upgrade
50+
guide).
51+
3052
## [0.4.2] — 2026-08-08
3153

3254
### Fixed
@@ -209,7 +231,8 @@ Hardened statement atomicity, savepoints, multi-process series identity,
209231
attached schemas, transactional drop, filesystem compaction, deadlock
210232
avoidance, extreme timestamps, and performance parity.
211233

212-
[Unreleased]: https://github.com/awksedgreep/timeless-libsql/compare/v0.4.2...HEAD
234+
[Unreleased]: https://github.com/awksedgreep/timeless-libsql/compare/v0.5.0...HEAD
235+
[0.5.0]: https://github.com/awksedgreep/timeless-libsql/compare/v0.4.2...v0.5.0
213236
[0.4.2]: https://github.com/awksedgreep/timeless-libsql/compare/v0.4.1...v0.4.2
214237
[0.4.1]: https://github.com/awksedgreep/timeless-libsql/compare/v0.4.0...v0.4.1
215238
[0.4.0]: https://github.com/awksedgreep/timeless-libsql/compare/v0.3.0...v0.4.0

Cargo.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ default-members = [
1717
resolver = "2"
1818

1919
[workspace.package]
20-
version = "0.4.2"
20+
version = "0.5.0"
2121
edition = "2021"
2222
license = "MIT"
2323

crates/timeless-ext/src/capabilities.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ fn document() -> &'static str {
3030
"extension_version": env!("CARGO_PKG_VERSION"),
3131
"data_abi": DATA_ABI,
3232
"sql_surface_version": 1,
33-
"minimum_server_version": "0.4.0",
33+
"minimum_server_version": "0.5.0",
3434
"build": {
3535
"commit": env!("TIMELESS_BUILD_COMMIT_RESOLVED"),
3636
"target": env!("TIMELESS_BUILD_TARGET"),
@@ -185,12 +185,12 @@ mod tests {
185185
"the tagged v0.3.0 artifact predates the capability handshake"
186186
);
187187
assert!(
188-
env!("CARGO_PKG_VERSION").starts_with("0.4."),
189-
"the current extension must remain on the documented 0.4 compatibility line"
188+
env!("CARGO_PKG_VERSION").starts_with("0.5."),
189+
"the current extension must remain on the documented 0.5 compatibility line"
190190
);
191191
assert_eq!(
192-
value["minimum_server_version"], "0.4.0",
193-
"compatible 0.4 patch releases retain the 0.4.0 server floor"
192+
value["minimum_server_version"], "0.5.0",
193+
"compatible 0.5 patch releases retain the 0.5.0 server floor"
194194
);
195195
assert_eq!(value["data_abi"], 1);
196196
assert_eq!(value["sql_surface_version"], 1);

docs/COMPATIBILITY.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ constants that enforce the handshake.
1515

1616
| Contract key | Current value | Meaning |
1717
|---|---:|---|
18-
| `extension_workspace` | `0.4.2` | Current extension/core/dbhealth source line. |
19-
| `server_workspace` | `0.4.2` | Current metrics/logs/traces server source line. |
18+
| `extension_workspace` | `0.5.0` | Current extension/core/dbhealth source line. |
19+
| `server_workspace` | `0.5.0` | Current metrics/logs/traces server source line. |
2020
| `extension_data_abi` | `1` | Stored/public telemetry data compatibility generation. |
2121
| `sql_surface_version` | `1` | Advertised public SQL inventory generation. |
22-
| `extension_minimum_server` | `0.4.0` | Oldest server accepted by the current extension document. |
22+
| `extension_minimum_server` | `0.5.0` | Oldest server accepted by the current extension document. |
2323
| `server_data_schema` | `1` | Additive `_timeless_schema_migrations` ledger generation. |
2424
| `server_required_data_abi` | `1` | Data ABI required by all current signal servers. |
25-
| `server_minimum_extension` | `0.4.0` | Oldest extension semantic version considered by current servers. |
25+
| `server_minimum_extension` | `0.5.0` | Oldest extension semantic version considered by current servers. |
2626

2727
<!-- public-compatibility-versions:end -->
2828

docs/UPGRADE.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,17 @@ Keep the pre-upgrade backup: an older extension is not expected to understand
3737
the additive private schema even though stored block payloads retain their
3838
codec and data-ABI meaning.
3939

40+
Starting with `0.5.0`, rich-logs `optimize()` writes template-compressed
41+
message blocks (codec byte 8). Nothing is rewritten at open — the new codec
42+
appears only as background or scheduled optimize re-encodes rich blocks — but
43+
once it has, a pre-`0.5.0` extension refuses those blocks with a loud decode
44+
error naming the unknown codec; it never returns partial or flattened rows.
45+
Rolling back the extension after a `0.5.0` optimize therefore requires
46+
restoring the pre-upgrade backup (or re-importing through the public batch
47+
contracts with the older binary). Upgrade every binary that opens the same
48+
database file as one set before allowing optimize to run, exactly as the
49+
invariants above require.
50+
4051
## 1. Inventory the current installation
4152

4253
Record the current artifact identities and complete database paths. For a

servers/Cargo.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

servers/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ members = [
88
resolver = "2"
99

1010
[workspace.package]
11-
version = "0.4.2"
11+
version = "0.5.0"
1212
edition = "2021"
1313
license = "MIT"
1414

servers/crates/timeless-api-common/src/lib.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use serde::{Deserialize, Serialize};
2323

2424
pub const DATA_SCHEMA_VERSION: i64 = 1;
2525
pub const REQUIRED_EXTENSION_DATA_ABI: u64 = 1;
26-
pub const MINIMUM_EXTENSION_VERSION: &str = "0.4.0";
26+
pub const MINIMUM_EXTENSION_VERSION: &str = "0.5.0";
2727

2828
#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
2929
#[serde(deny_unknown_fields)]
@@ -540,12 +540,12 @@ mod tests {
540540
"the tagged v0.3.0 artifact predates the release server handshake"
541541
);
542542
assert!(
543-
env!("CARGO_PKG_VERSION").starts_with("0.4."),
544-
"the current servers must remain on the documented 0.4 compatibility line"
543+
env!("CARGO_PKG_VERSION").starts_with("0.5."),
544+
"the current servers must remain on the documented 0.5 compatibility line"
545545
);
546546
assert_eq!(
547-
MINIMUM_EXTENSION_VERSION, "0.4.0",
548-
"compatible 0.4 patch releases retain the 0.4.0 extension floor"
547+
MINIMUM_EXTENSION_VERSION, "0.5.0",
548+
"compatible 0.5 patch releases retain the 0.5.0 extension floor"
549549
);
550550
}
551551

0 commit comments

Comments
 (0)