Repository navigation
feat(ledger): a layout number, written at creation and checked at open, replaces the shape checks - #281
Merged
Conversation
…n, replaces the shape checks Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…e the layout found and kept Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…t refuses the older ledger Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
rami-hatoum
pushed a commit
that referenced
this pull request
Oct 22, 2026
🤖 I have created a release *beep* *boop* --- ## [0.17.0](v0.16.0...v0.17.0) (2026-10-22) ### Features * **api:** the instructions and the playbook tools claim a request for a playbook ([#288](#288)) ([e4e6f86](e4e6f86)) * **connections:** a client names the scopes it may ask, and a way takes the one covering its scope ([#289](#289)) ([e05a127](e05a127)) * **connections:** a connect link names what its page cannot know, and the agent shows it as a link ([#290](#290)) ([8d1de91](8d1de91)) * **definitions:** the overview is its author's markdown, and a read names what uses a definition ([#287](#287)) ([7c1c637](7c1c637)) * **ledger:** a layout number, written at creation and checked at open, replaces the shape checks ([#281](#281)) ([a48be0e](a48be0e)) ### Bug Fixes * **operations:** a version 7 uuid made in the same millisecond as the last sorts after it ([#285](#285)) ([846a36d](846a36d)) * **prediction:** a model loads with the telemetry of onnxruntime off, so its process leaves nothing ([#283](#283)) ([ea1a6d8](ea1a6d8)) * **server:** the start's waits run on Effect's clock and the restart mark names its port ([#282](#282)) ([db6c858](db6c858)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: beonautobot[bot] <298957281+beonautobot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Before launch nothing stored is carried over: a ledger made in another layout of its tables is refused at start, and the person deletes it. Until now that rule was enforced table by table, for the content tables and
kept_secretsalone, by comparing their columns with the columns this server keeps, while every other table and index the ledger makes was created withIF NOT EXISTSand never checked, and a refusal named columns, which nobody can act on.Now one number names the layout of everything the ledger makes.
ledgerLayoutis one constant in the ledger, raised by hand with any change to a table or an index the ledger itself creates. A test pins the catalog of a fresh SQLite ledger, every table and index that is the ledger's own with its statement, Emmett's left out as its own schema's concern, and fails in words that say to raise the number and pin again, so a change to the layout cannot pass unnumbered.PRAGMA user_version, as the first step of the store'smigrate; PostgreSQL in the one row ofledger_layout, inside Emmett's migration transaction right after the advisory lock is taken, so servers that start together agree and a refusal rolls everything back.LedgerLayoutRefused, which carries the layout found, or none, and the layout kept. The per-table column checks and the test fakes that answered column queries are gone.DATABASE_URLat an empty database.Every ledger made before this release carries no number, so the first start on it refuses it with the notice that names the files to delete, or the database to empty. The word is layout, since shape names the JSON Schema of a definition's output and version names the runtime's release in the same sentence.
Tests
kept_secrets.Checklist
feat(reasoning): .... It becomes the squash commit and the changelog entry.pnpm checkpasses locally, with every file at 100% coverage.