octra-sqlite 0.6.3

Real SQLite inside an Octra Circle, with a Rust CLI and client library
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
# Release Notes

## 0.6.3

This is a focused SQLite engine maintenance release over `0.6.2`. It rebuilds
the bundled Circle WASM with SQLite 3.53.4 and preserves the product and
automation surfaces.

### Changed

- Bundled SQLite engine: 3.53.3 -> 3.53.4.
- Bundled Circle WASM hash and byte length changed because of the SQLite engine
  rebuild.
- Release metadata now includes the previous `0.6.1-0.6.2` 3.53.3 WASM epoch
  in the metadata-only historical catalog.
- README, toolchain docs, release manifest, and roadmap now identify the
  current bundled engine as SQLite 3.53.4.

### Unchanged

- OSR1/OSW1, owner-write authorization, storage accounting, execution budgets,
  top-level commands, CLI JSON envelopes, root Rust types, and runtime
  dependencies are unchanged.
- The optional `wasm-behavior` harness dependency is patched to `wasmtime`
  36.0.13 to keep the release audit clean.

### Proof Gate

Satisfied before publish: Vitals rehearsed the engine upgrade on devnet, then
upgraded the mainnet Lab DB Circle to SQLite 3.53.4 with read readiness, write
readiness, current-engine status, gateway health, updater health, and mirror
writes confirmed.

## 0.6.2

This is a focused client architecture, automation, and documentation release
over `0.6.1`. It makes the CLI exercise the same routine SQL data plane as Rust
applications without adding commands or crate-root types.

### Changed

- Ordinary one-statement CLI reads and writes now flow through `Database`.
- CLI responsibilities are separated into named modules instead of one catch-all
  orchestrator.
- Precise source error codes survive into CLI automation; the public client
  exposes them through the additive `Error::code()` method, and
  `cli::error_code()` owns the binary's stable JSON classification.
- docs.rs now presents a deliberate start path, read/write model, API map,
  error contract, advanced boundaries, and build configuration.
- GitHub releases have a dedicated release environment and OIDC workflow for
  crates.io trusted publishing once the crates.io-side publisher registration is
  complete.
- Pasted and stdin-imported private-key text is zeroized on parse failures, and
  the standalone `wasm-behavior` test feature now compiles independently.

Keep the GitHub `release` environment approval-gated, non-bypassable, and
restricted to `v*` refs. Before the first OIDC publish, register its exact
repository, workflow, and environment as the crates.io trusted publisher.

### Unchanged

- SQLite remains 3.53.3.
- The bundled Circle WASM is byte-for-byte identical to `0.6.1`; existing
  Circles do not need an upgrade.
- OSR1/OSW1, owner-write authorization, top-level commands, CLI JSON envelopes,
  and crate-root type names are unchanged.

### Version Boundary

This work is patch-compatible and therefore belongs in `0.6.2`. A future
change to `ClientOptions` key ownership, clone semantics, or signer interfaces
would break the public Rust API and remains reserved for a justified `0.7.0`.

## 0.6.1

This is a focused security and reliability hardening release over `0.6.0`.
SQLite remains 3.53.3, but the Circle WASM is a new engine epoch because it now
bounds SQLite work and enforces the exact current stable-storage capacity.

### Added

- Deterministic query and exec VDBE work budgets with stable error codes.
- Exact VFS capacity facts in `storage_info`, `limits --json`, and the release
  manifest.
- Durable owner-sequence comparison from `storage_info` when the
  storage-independent `auth_info` response omits it.
- The 1,024-dirty-page transaction ceiling in human and JSON limits.
- Durable upgrade manifest states: `prepared`, `applied`, and `complete`.
- Machine-readable confidentiality facts.

### Changed

- Config, nonce, receipt, OSR1, public program-info, and read-mode handling now
  fail closed at their trust boundaries.
- Normal upgrades always use the integrity-checked embedded release WASM.
- Verify and upgrade smoke tables are unique. Upgrade cleanup is atomic;
  verify attempts a confirmed cleanup and reports any cleanup failure.
- Config, backups, upgrade metadata, and RPC traces use private, safer local
  file creation.

### Security Boundary

- Sealed reads authenticate a wallet; they are not encrypted or owner-only.
- Public reads permit complete SQLite-file export through `backup_chunk`.
- Write SQL and values remain visible in Octra transaction history.
- Foreign-key enforcement is currently off and cannot be enabled through user
  SQL.
- SQLite work is bounded inside the contract. Runtime-wide WASM fuel remains
  an Octra protocol responsibility.

### Proof

- Fresh public-read devnet proof:
  `oct://devnet/oct3mZCqnNpQLi3TaogPA6prcunUcNNjDMhAB3j6byLg52x`.
- The proof Circle is on SQLite 3.53.3, is `engine_current: true`, answers
  walletless public reads, passed owner write-smoke plus cleanup, and passed
  local `sqlite3` integrity check from a page backup.
- Capacity evidence remains 8,069 pages / 33,050,624 SQLite file bytes. The
  higher 33,554,432-byte number is the Octra Circle stable-storage cap for
  key-plus-value bytes; VFS page keys, the generation manifest, and metadata
  consume the difference.

## 0.6.0

This is the first post-debut engine upgrade release. It rebuilds the bundled
Circle WASM with SQLite 3.53.3 and adds a first-class upgrade workflow for
existing database Circles.

## Added

- `octra-sqlite upgrade` for the guided terminal upgrade workflow.
- `octra-sqlite upgrade DATABASE` for safe in-place Circle program upgrades.
- `octra-sqlite upgrade DATABASE --dry-run` for preflight without writes.
- `octra-sqlite upgrade rollback BUNDLE` for restoring the previous verified
  personalized Circle program from an upgrade bundle.
- Private upgrade bundles containing backup metadata, rollback WASM when
  recovered, transaction proof, and the from/to code-hash epoch boundary.
- Operator-readable default bundle names containing network, Circle ID,
  previous SQLite version, and date.
- A release-manifest-backed, metadata-only historical WASM catalog for
  identifying known pre-0.6.0 release engines without bundling old engine bytes
  in the crate.
- `upgrade --previous-wasm PATH` for explicit rollback recovery with custom or
  unknown old program bytes.

## Changed

- Bundled SQLite engine: 3.53.2 -> 3.53.3.
- Bundled Circle WASM hash and byte length changed because of the SQLite engine
  rebuild.
- `--write-smoke` now removes its smoke table after the write cycle; it still
  counts as a post-upgrade write and makes clean rollback unavailable.
- Bundled Circle WASM and release manifest are embedded in the binary, with
  file/env overrides still available for source builds and operators.
- `rollback.clean` is nullable when live counters are unavailable; rollback
  remains fail-closed until reviewed.
- The rollback-byte bypass is named `--unsafe-no-rollback`; it is an emergency
  operator escape hatch and leaves the upgrade bundle unable to restore the
  previous Circle program.
- Full SQL event tracing now uses
  `OCTRA_SQLITE_EMIT_SQL_ONCHAIN_EVENT=1`, making the permanent on-chain event
  behavior explicit in the opt-in name.
- `status --json` reports `engine_current` and `upgrade_needed` separately from
  read/write readiness.
- No-op upgrade preflight reports `status: "already_current"` and marks
  rollback as not relevant.
- MSRV is now Rust/Cargo 1.96+.

## Notes

- Existing Circles are not upgraded automatically. Run `upgrade` or
  `upgrade DATABASE` with the owner wallet when you choose to move a Circle to
  the new engine.
- Upgrade can reconstruct rollback bytes from chain history, local old
  octra-sqlite release artifacts, or an explicit previous WASM plus live
  `auth_info`. Historical catalog metadata points operators to the expected
  tagged artifact and base WASM SHA-256 when manual recovery is needed.
- Rollback is clean only before post-upgrade writes. `--write-smoke` proves
  writes on the new engine with a create/insert/drop cycle, but intentionally
  makes clean rollback unavailable.
- Rollback availability matters only when `from.code_hash` differs from
  `to.code_hash`.
- The release manifest records a devnet proof that creates a 0.5.2 public-read
  database, upgrades it to 3.53.3, rolls it back to 3.53.2, then upgrades it to
  3.53.3 again.
- The README quick-start public Circle is recorded separately and remains on
  SQLite 3.53.2 until its owner upgrades it.
- OSR1/OSW1 wire formats, read modes, owner-write authorization, CLI JSON
  schema, and the Rust root API are unchanged from `0.5.2`.

## 0.5.2

This is a CLI readiness, raw-target, and install polish release over the
`0.5.1` crates.io debut. The contract, wire formats, bundled SQLite engine,
bundled Circle WASM, deployed event strings, and on-chain behavior are unchanged.

## Changed

- Raw Circle targets now detect the Octra read surface from Circle metadata, so
  public-read databases can be opened with `oct://NETWORK/CIRCLE` without
  adding `?read_mode=public`.
- `status --json` now reports `read_ready` and `write_ready` separately. The
  top-level `ready` field and `status --ready` gate track read/query readiness;
  owner-write readiness is reported separately for public-read deployments.
- Status output treats walletless public reads as a supported mode when Circle
  metadata confirms the target is public-readable.
- Public-read sessions now preserve malformed wallet-load errors and surface
  them when signed operations need a valid wallet.
- Interactive private-key paste now shows masked `*` feedback while keeping the
  secret out of shell history.
- CI now runs `cargo audit` for published-crate supply-chain checks.
- MSRV is now Rust/Cargo 1.88+, allowing patched HTTP cookie/time dependencies
  without a supply-chain audit ignore.

## Notes

- No Circle redeploy is required for `0.5.2`.
- The `0.5.2` release manifest records the same bundled Circle WASM hash as
  `0.5.0` and `0.5.1`.

## 0.5.1

This is a README, dependency, and packaging polish release. The contract, wire
formats, bundled SQLite engine, CLI command surface, JSON envelopes, Rust API,
and public-read behavior are unchanged from `0.5.0`.

## Changed

- Refactored the README around the package reader: quick CLI query, quick Rust
  client query, Octra context, root Rust API surface, read modes, wallet setup,
  verifiability, MSRV, stability, CLI command reference, shell dot-command
  reference, and security/contribution links.
- Replaced the GitHub-only Mermaid architecture diagram with a plain text
  diagram that renders on crates.io.
- Added `Client::default()` for config-free public reads, mirrored the README's
  Rust example in crate docs, and guarded the constructor in the public-surface
  test.
- Swapped the default HTTP transport dependency from `reqwest` to `ureq` and
  moved the crate to Rust edition 2024.
- Refreshed `CONTRIBUTING.md` and included it with `SECURITY.md` in the crate
  package.
- Added CI coverage for clippy and the `http`-without-`cli` feature
  configuration used by docs.rs.

## Notes

- No Circle redeploy is required for `0.5.1`.
- `0.5.1` is ready to be the first crates.io-published version.

## 0.5.0

This is a Rust API ontology and crates.io debut preparation release over the
deployed `0.3.3` Circle WASM proof. The contract, wire formats, bundled SQLite
engine, CLI command surface, JSON envelopes, and public-read behavior are
unchanged.

## Added

- Root Rust API exports for the admired path:
  `Client`, `ClientOptions`, `Database`, `QueryResult`, `ExecuteResult`,
  `SubmittedTransaction`, `AuthInfo`, `ProgramInfo`, `ReadMode`, `Value`,
  `Error`, `ErrorKind`, and `Result`.
- `Database::wait(&SubmittedTransaction)` to complete the `execute_no_wait`
  lifecycle without exposing raw sessions.
- `client::raw` for supported raw session/RPC plumbing.
- Public-surface compile tripwire tests and config alias-cycle tests.

## Changed

- Renamed the Rust public API around product nouns and removed the
  implementation-derived pre-debut names instead of carrying aliases.
- Removed old Rust aliases instead of carrying compatibility debt.
- Moved CLI entrypoints under `octra_sqlite::cli`.
- Replaced the old free operation-safety helper with `Operation::safety()`.
- Settled saved-database CLI naming on `database default NAME`.
- Updated README, library-boundary docs, and shipped Rust examples to use the
  root API.

## Notes

- No Circle redeploy is required for `0.5.0`.
- External signer work is deferred to `0.6.0`.

## 0.4.0

This is a productization release over the deployed `0.3.3` Circle WASM proof.
The contract, wire formats, and bundled SQLite engine are unchanged. A separate
devnet proof Circle records the explicit public-read Octra deployment tuple.

## Added

- Explicit public-read database creation with `new DATABASE --read-mode public`.
  Public-read databases deploy the Octra
  `public / gateway_allowed / public_resources` Circle tuple, use
  `octra_circleView` for SQL reads, and keep writes owner-signed through OSW1.
- Public-read metadata in saved database records, deployment manifests,
  `database list`, `database info`, `status`, `limits --json`, and
  `commands --json`.
- Unsigned public-read client routing for saved public database metadata and
  URIs explicitly marked with `?read_mode=public`.
- Explicit `?read_mode=auto` probing for callers that want the client to inspect
  Circle info before choosing signed or unsigned reads.

## Changed

- Removed redundant command and compatibility surfaces: `init`, `quickstart`,
  `database` command aliases, old option aliases, and legacy config aliases.
- `setup --yes` is the scriptable setup path; `new --sample NAME` is the
  sample database path.
- `setup` now configures wallet and network only. The first `new` establishes
  the default database.
- Raw `oct://` targets without saved metadata or `?read_mode=public` now default
  to sealed reads. This avoids hidden Circle-info probing on the shortest URI.
- Interactive `new` now asks for an explicit database name and uses configured
  defaults instead of prompting for wallet path, schema file, default selection,
  and manifest path. It saves the new database as the default and writes
  `DATABASE.octra-sqlite.json`.
- `setup` and interactive `new` both use an explicit `devnet/mainnet` network
  selector.
- Human `new` output is shorter and action-oriented. Public-read manifests and
  create output include a shareable `?read_mode=public` read URI.
- README, public surface docs, and operations docs now present one clean
  product path: setup, new, query, status, restore.
- README now leads with a walletless public-read command so a cold-start user
  can query a live database before importing a wallet.

## Notes

- No Circle redeploy is required for `0.4.0`.
- Sealed remains the default read mode. Public-read is explicit and intended
  only for datasets that should be public.
- Public-read changes read authentication only. Write authorization is still
  OSW1 owner write intent.

## 0.3.4

This is a CLI productization release over the deployed `0.3.3` Circle WASM
proof. The contract, wire formats, bundled SQLite engine, and devnet proof
Circle are unchanged.

## Added

- `commands --json` for machine-readable command and JSON-envelope discovery.
- Guided `octra-sqlite new` database creation for interactive first-run setup.
- `new DATABASE --schema FILE --manifest FILE --json` for scriptable database
  creation with a machine-readable deployment manifest.
- Release manifest `release/octra-sqlite-0.3.4.json`, explicitly marked as a
  client-only release over the deployed `0.3.3` Circle WASM proof.

## Changed

- `new` refuses to overwrite an existing local database name before reading SQL,
  touching RPC, creating a Circle, or spending.
- `commands --json` is covered by a completeness test against the public Clap
  command surface.

## Notes

- No Circle redeploy is required for `0.3.4`.
- The database manifest emitted by `new --manifest` contains public deployment
  data only. It does not contain private keys or raw wallet JSON.

## 0.3.3

This is an automation contract hardening release over `0.3.2`. The bundled
Circle WASM is rebuilt so empty sealed database Circles can expose `auth_info`
before the first SQLite storage pages exist on runtimes that can invoke empty
storage views. It also includes an explicit first-write bootstrap path for
mainnet RPCs that fail authenticated views below the contract while storage is
still empty.

## Added

- `--trace-rpc-json-mode` for compact read trace files: `summary`,
  `request_only`, and `response_meta`, while keeping `full` as the default.
- Expanded `limits --json` output for SQL/result limits, restore behavior,
  read/write auth boundaries, trace modes, and schema versions.
- Stable JSON error `exit_code` plus clearer machine-readable classifications
  such as `sql_rejected`, `result_limit_exceeded`, `result_too_large`,
  `auth_failed`, `rpc_unavailable`, and `circle_write_failed`.
- A small CLI JSON contract fixture covering real binary `limits --json` and
  JSON error output.
- Storage-independent `auth_info` in the Circle WASM for safe first-write
  bootstrap on empty database Circles.
- `deploy --bootstrap-owner` for explicit owner-checked recovery of empty
  Circles created by older builds that cannot expose `auth_info` before first
  storage pages exist.
- `restore --bootstrap-owner` for the exact empty-storage cache case: the first
  restore batch is OSW1 owner-signed from saved bootstrap metadata, then the CLI
  immediately returns to normal `auth_info` verification.
- Idempotent bootstrap restore retries: once `auth_info` is readable,
  `restore --bootstrap-owner` reports `already_bootstrapped` and continues
  normally.
- Bounded RPC retry/backoff for read/view/receipt polling under rate limits,
  transient gateway failures, timeouts, and non-JSON RPC bodies. Write
  submissions are not silently replayed.
- `status --json` readiness booleans for Circle reachability, auth, owner
  writes, storage, SQLite, and query readiness.
- `wallet status` for headless wallet path, file permissions, caller, and
  target read/write relationship without printing wallet secrets.
- Cached owner-auth metadata during restore/backfill runs to reduce repeated
  `auth_info` calls while keeping each write OSW1-signed.
- Compact restore batch failure output by default, with full SQL text available
  only through `--verbose-sql`.
- Local creation metadata for newly saved databases, including owner wallet,
  owner public key, database id, bundled code hash, code bytes, and create
  transaction.
- Rust/Cargo 1.87+ and pinned release install documentation.

## Notes

- JSON shapes remain additive. Existing `query`, `write`, `write_script`,
  `restore`, `check`, `status`, `verify`, and `limits` envelopes keep their
  command-specific fields.
- `--read-only` is a client guard. Reads still use signed Octra view auth;
  writes remain OSW1 owner-gated by the Circle program.
- Multi-batch restore is practical for backfills but not globally atomic. Make
  restore SQL idempotent before retrying a failed load.
- `deploy --bootstrap-owner` does not bypass OSW1 and does not submit SQL. It
  only deploys owner-personalized bundled WASM after confirming the current
  wallet is the Circle owner.
- `restore --bootstrap-owner` is deliberately narrow: full `oct://` URI only,
  exact missing empty-storage cache failure only, bundled owner-personalized
  WASM hash match required, and first batch only.
- Normal command output and JSON do not print private keys or raw wallet JSON.
  Opt-in RPC trace files can include request signatures and should be handled as
  sensitive proof/debug logs.

## 0.3.2

This is an automation polish release over the deployed `0.3.1` Circle WASM.

## Added

- `--trace-rpc-json FILE` for one-shot read SQL, writing exact JSON-RPC
  request/response envelopes to JSONL.
- `restore DATABASE --file dump.sql --json-summary` for compact restore output
  with totals and first/last transaction hashes.
- `docs/json-output.md` documenting stable CLI JSON envelopes for `query`,
  `write`, `restore`, `check`, `status`, `verify`, and `error`.
- Clearer headless install guidance for `rustup stable`, lockfile-compatible
  Cargo, and service-user executable permissions.

## Notes

- RPC trace is read-only and opt-in. It may contain SQL text, Circle IDs, caller
  wallet, public keys, read signatures, and response data. It never contains
  private keys.
- The bundled Circle WASM and live devnet proof are unchanged from `0.3.1`.

## 0.3.1

This is a DevEx hardening release for automation, large SQL restore, and
headless use. The bundled Circle WASM artifact is rebuilt so query tail
validation delegates to SQLite instead of a contract-owned SQL comment parser.

## Added

- `restore DATABASE --file dump.sql` for large SQL restores with internal
  batching, progress output, and stable JSON output.
- `DATABASE --sql-file FILE` and stdin execution for one-shot SQL without shell
  argument-size pressure.
- `check DATABASE --sql-file dump.sql` for local restore planning: statement
  count, executable batches, skipped SQLite dump wrappers, and size warnings.
- `limits [DATABASE]` for the current SQL frame limit, restore behavior,
  transaction boundary, owner-write model, and read-only guard.
- `--json` output for `status`, `verify`, `database list`, `database info`,
  `restore`, `check`, and `limits`.
- Structured JSON error envelopes for automation.
- `--read-only` for one-shot SQL execution.
- `docs/operations.md` for large restore, idempotent imports, migration,
  concurrency, and operational limits.
- SQLite-native query tail validation in the Circle WASM.

## Notes

- `check` is a planner, not a chain-state dry-run. SQLite syntax and semantics
  are still ultimately enforced by SQLite inside the Circle.
- One accepted write is atomic. A multi-batch restore can partially apply; make
  restore scripts idempotent or restore into a fresh database.
- `restore` and `.read` strip common SQLite dump wrappers such as
  `BEGIN TRANSACTION`, `COMMIT`, and `PRAGMA foreign_keys`. Other
  transaction-control statements such as `ROLLBACK` and savepoints are rejected
  because user-managed transactions are not supported across Octra writes.
- Each SQL statement must fit inside the Circle SQL frame limit. The CLI checks
  this before submitting restore batches.

## 0.3.0

This is a portability release for moving SQLite data into and out of an Octra
Circle while keeping the CLI familiar to `sqlite3` users.

## Added

- `.backup ?main? FILE` and `.save FILE` for exporting a Circle-backed database
  to a local `.sqlite` file.
- `verify --integrity` for exporting a pinned backup and running local
  `sqlite3` `pragma integrity_check;`.
- `.dump ?OBJECTS?`, `.read FILE`, `.output`, `.once`, `.import --csv`,
  `.indexes`, and `.fullschema` in the interactive shell.
- Crates.io package metadata and an intentional package include list.

## Changed

- `.dump` and `.fullschema` now render from a pinned local backup through stock
  `sqlite3`, keeping the SQL text path SQLite-native.
- Bundled defaults now include network profiles only; Remilia remains an
  explicit example, not a preloaded database.
- The Circle WASM adds a read-only `backup_chunk` view for generation-pinned
  page streaming.

## Notes

- `.read` restores SQL text into a Circle through signed writes. SQLite shell
  transaction/foreign-key wrappers are stripped before submission, and large
  files are applied in batches because Octra SQL frames are capped. Restart from
  a fresh database if an interrupted restore must be retried.
- `.read` and `.import` now fail before submission when a single SQL statement
  exceeds the 8,191-byte Circle SQL statement limit.
- `.import --csv` is positional and imports fields as SQLite string literals;
  empty fields remain empty strings.
- Binary `.restore` from a `.sqlite` file remains deferred until it can be kept
  as small and auditable as `.backup`.

## 0.2.1

This is a hardening release for the Rust CLI/client and bundled Circle WASM.

## Added

- `cargo build --no-default-features --lib` coverage for the protocol/client
  core without HTTP or CLI dependencies.
- Plain `circle_url` and `tx_url` fields in write output when the active network
  has an explorer profile.

## Changed

- CLI SQL routing now lets SQLite inside the Circle classify single statements
  and only submits a signed write when SQLite returns `sqlite_readonly_required`.
- Wallet sessions now keep signing state instead of cloned private-key strings,
  verify supplied public keys, and zeroize decoded/intermediate key material
  where practical.
- `new --no-name` status follow-up now uses the generated `oct://` URI.
- The Circle query path accepts SQLite trailing comments on single-statement
  reads.

## Removed

- Undocumented hidden top-level aliases: `query`, `exec`, `tables`, `schema`,
  `storage`, `circle`, `proof`, `doctor`, and `alias`.
- `.proof` as a shell synonym. Use `.verify`; reserve “proof” for a future
  durable proof artifact.

## 0.2.0

This release refactors the Rust client and protocol boundary while keeping the
CLI SQLite-like and primary. The Circle WASM artifact is unchanged from the
audited devnet proof; `0.2.0` is a client/library/devex release.

## Added

- Public client-to-database Rust API shape.
- Devnet and mainnet network profiles in bundled config.
- Public Remilia example database in bundled config.
- Tiny read-only Remilia API example under `examples/remilia-read-api/`.
- Clearer SQLite read and write error messages.

## Architecture

- Refactored the code around reusable protocol and client layers.
- Positioned REST APIs, MCP servers, A2A agents, web apps, and other transports
  to build on the same protocol/client core.
- Kept the core repo a primitive: no server framework, ORM, query builder, or
  agent runtime was added.

## Still True

- SQLite 3.53.2 runs inside the deployed Circle program.
- New databases are owner-bound by default with method-bound owner write
  intents.
- Other authenticated wallets can read through the signed view path, but cannot
  write unless they hold the owner key.
- The published live proof remains on devnet.

## 0.1.0

This release is a reference architecture for running real SQLite inside an
Octra `wasm_v1` Circle with page-backed Circle key-value storage. The software
version is network-neutral; the published live proof for this release is on
devnet.

## Proven

- SQLite 3.53.2 runs inside the deployed Circle program.
- SQLite pages persist in Circle key-value storage across calls.
- Receipt-confirmed `exec` calls can create tables, insert rows, update rows,
  delete rows, and read the final state back with SQL.
- New databases are owner-bound by default with method-bound owner write
  intents.
- A non-owner wallet can read, but cannot write unless it holds the owner key.
- The WASM import/export surface is audited by script.
- Local tests cover the typed result codec, owner write intent vectors, and core
  contract behavior.
- `octra-sqlite status` checks local config, wallet discovery, release manifest,
  bundled WASM bytes/hash, and live database health when credentials are present.
- The public proof Circle contains one intentional sample table, `collection`.

## Not Claimed Yet

- A published mainnet deployment proof.
- Multi-wallet writer grants and revocation.
- Native Octra method access control for SQL roles.
- Bit-for-bit reproducible builds across arbitrary host toolchains.
- A stable public package API beyond the starter CLI and documented scripts.

## Live Devnet Proof

The `0.3.3` Circle WASM is deployed to the public devnet proof Circle.

```text
circle: octE4pHEmLd47zRdC7LRDGjQWPJPJ5zbmNcL1ixfn7aCzSY
version: 3
personalized_code_hash: 195bbc6dde80edc764041c45faa55f67db16a3352f7a83dd50f86f5882393f6f
bundled_wasm_hash: 36664d04fd0457c4c7da200328c753984746769cec479fd93f799665c66f8c5d
code_bytes: 609354
circle_create_tx: 318ca1a98df95bedb87d1042d0555eecc94660bbf828813a148bf11393ed73ed
initializer_tx: 971b50d434226e7892bb3e5f926a1dced9dd35df1df4bfe4266351116c3bc5f0
program_update_tx: efe65e5ff4c23668703f1e51b6af74f99442355f0cb4a753aff25e74b3388ebb
write_smoke_tx: aae4bb0f4cc4506c80f37ce1045958398cdb1a6d70183baab274b73e056ec28b
non_owner_denied_tx: fe13f345435efce21a362fddab3ac9234dfd2ba747581a65709b03b915c44148
backup_sha256: 7eac9d276c6ddefeb72ae112635a82262e5a62c969ba0394c4cfaa7e502e2ab7
backup_integrity: ok
manifest: release/octra-sqlite-0.3.4.json
proof: docs/proofs/devnet.md
```