Repository navigation
v0.22.0 post-publication: digests, published state and marketplace pin - #683
Merged
Merged
Conversation
Add docs/release/v0.22.0-checksums.txt with the published digests, set the v0.22.0 notes to published and recorded, and pin the marketplace file to the v0.22.0 tag commit. The control documents name v0.22.0 as the latest published release and v0.21.1 as the one before it, and the install lines follow. Dated 2026-10-27 updates say beside each marketplace statement of the older notes that main now pins v0.22.0. The known limitations page describes v0.22.0 and states that source embeddings go only to an endpoint on this machine. The v0.22.0 notes test reads both sides of every comparison with v0.21.1 from the tags, so a later change to a migration, a setting or the agent output route on main does not fail a claim about what v0.22.0 shipped.
Update line and sha256 of the cases that point at files this change edits, and the heading text of the case that edits the open list of the limitations page.
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.
Summary
The post-publication change for v0.22.0, modelled on the one for v0.21.1 (#668) and on
RELEASING.md"After Publication". Nothing here tags, publishes or dispatches anything. Two commits: the change, and the refresh of the mutation manifest.docs/release/v0.22.0-checksums.txtrecords the published digests in the v0.21.1 file's exact format (header and layout identical, version replaced).803f466454de8973ed64db47de9e3c366943fc8833ed3ae0b40fbd9a48018fdb(1,977,474 bytes)c2fe674d9d475ad04f6ed56df3ed4d55a1aef96209dbb1f8d86f07bf7634296a(1,736,968 bytes)publishedandrecorded(the only pairRELEASING.mdand the immutability test allow after publication). Line 2 is the only tagged line that changes.Advisory identifier: pending.stays as tagged: the identifier is not assigned yet and a later dated update adds it.v0.22.0as the latest published release andv0.21.1as the immediately prior one (README, ARCHITECTURE, PRODUCT_BRIEF, ROADMAP, RELEASING, CURRENT_STATE,docs/vnext/README.md). Everyv0.22.0release-candidate line is gone. In CURRENT_STATE "Whatv0.22.0Targets" is now "Whatv0.22.0Shipped", thev0.21.1section says it is the immediately prior published release, and thev0.21.0section says it is an earlier one. The README and vNext README release-notes links point at thev0.22.0notes..claude-plugin/marketplace.jsonmoves the plugin entry'sreftov0.22.0andshatoa6a5f49eebb7377f40b388f2ffe07290b05b85fb, the commit of the annotated tag (and the merge of Release v0.22.0 #681). Nothing else in the file changes. The copy inside thev0.22.0tag still pinsv0.21.1and8d0bac27, checked withgit show.v0.21.1now sayv0.22.0(README,docs/integrations/claude-code-plugin.md,plugins/alice-memory/README.md, CURRENT_STATE). The plugin page and CURRENT_STATE also say that thev0.22.0tag carries the file, still pinned to thev0.21.1tag commit.v0.21.1as current now namev0.22.0: README,docs/alpha/headless-ubuntu-install.md(two lines,--tag v0.22.0),docs/alpha/quickstart.md,docs/integrations/reference-paths.md.docs/alpha/known-limitations.mdnow describes v0.22.0 (header, release notes link, theFrommarker sentence and the heading of the open list) and gains one bullet in the SQLite list: from v0.22.0, withALICE_SOURCE_EMBEDDINGS=on(off by default), the chunks of imported and captured notes go only to an embeddings endpoint on this machine, nothing is sent to any other endpoint and the chunks stay pending, and memory embeddings still go to any endpoint you configure. The rule is the one in the "Only to this machine" section of the notes and indocs/alpha/mcp-tools.md. The bullet starts withFrom v0.22.0,and linksmcp-tools.md#embeddings-of-source-chunks. The olderFrom v0.21.0clauses stay, because they still say what changed in v0.21.0 and the header names both markers. Nothing else on the page was reworded. The page is 10,908 characters (it was 10,493, the exact cap), soMAX_PAGE_CHARSmoves to 10,908.Update (2026-10-27)paragraphs, in the blockquote form the earlier updates use. The date is the day of this change.docs/release/v0.22.0-release-notes.md: 1 update beside upgrade step 7, which says the marketplace file onmainpins thev0.21.1tag commit until a change after the release moves it. The tagged sentence stays and the update says the change has been made. This is the one change to the notes beyond line 2; it can be dropped with its test (test_the_notes_say_beside_their_marketplace_step_that_main_now_pins_v0220) if line 2 alone is wanted.docs/release/v0.19.2-release-notes.md, 3 indocs/release/v0.20.0-release-notes.md, 3 indocs/release/v0.20.2-release-notes.md, 1 indocs/release/v0.21.1-release-notes.md. Each saysmainnow pins thev0.22.0tag commit and which older tag still pins which commit.v0.21.0notes (they carry no marketplace statement) and no limitation update is added anywhere: nothing the earlier notes list as open changes in v0.22.0.CHANGELOG.mdis not touched.scripts/derived_label_mutations.json: 15 cases (16 edits) point at a file or line this change moved.lineandsha256are refreshed; the caseretired-limitations-restores-the-graph-exceptionedits the heading of the open list, so itsbeforeandaftertext now sayOpen in v0.22.0. This is a separate commit.Facts and where each was read
All read on 2026-10-26 and 2026-10-27, with GET requests only. No package file was downloaded.
https://pypi.org/pypi/alice-memory/0.22.0/json): version 0.22.0, not yanked, Python>=3.12. Wheel 1,977,474 bytes, uploaded 2026-10-26T23:33:07Z; sdist 1,736,968 bytes, uploaded 2026-10-26T23:33:09Z; the digests are the two above. The simple index in JSON form lists the same digests, sizes and no yank. The first read of the project JSON was a cached copy that still said 0.21.1 (max-age=900); the next read and the simple index say 0.22.0.https://pypi.org/integrity/alice-memory/0.22.0/<file>/provenance), each file: one bundle, publisher GitHub, repositorysamrusani/AliceMemory, workflowpublish-pypi.yml, environmentpypi, one attestation whose subject is the file name and the digest above.gh release view v0.22.0: not a draft, not a prerelease, published 2026-10-26T23:33:23Z, targeta6a5f49eebb7377f40b388f2ffe07290b05b85fb. Assets: the wheel and the sdist with the same sizes and digests as PyPI, andSHA256SUMS(196 bytes, digest3f9a31b1b6e9f7311d80b3b57955dd2a52aa2b21cb9db0055ab48a96f84989b7). The two lines<digest> <name>rebuilt locally from the digests above are 196 bytes and have exactly that SHA-256, so the asset lists both files. It was not downloaded.gh run view 40412311129:Publish to PyPI,workflow_dispatchon the refv0.22.0, heada6a5f49e, success. The verify, stage, publish and finalize jobs succeeded and the three recovery jobs were skipped.refs/tags/v0.22.0is the annotated tag object2aa9e4442f7509eeb7cdf8b9b7dce43b489f909e(gh api repos/samrusani/AliceMemory/git/ref/tags/v0.22.0), which points ata6a5f49e(git rev-parse v0.22.0^{commit}).803f466454de8973ed64db47de9e3c366943fc8833ed3ae0b40fbd9a48018fdb(1,977,474 bytes) andc2fe674d9d475ad04f6ed56df3ed4d55a1aef96209dbb1f8d86f07bf7634296a(1,736,968 bytes), equal to PyPI and toSHA256SUMS(shasum -a 256 -c SHA256SUMS: both OK). The wheel installed offline (pip install --no-deps --no-index --target) reports 0.22.0, and itsrouters/vnext_memories.py,vnext_connectors.pyandsource_embedding_policy.pyare byte-identical to the tag's. The header sentence is therefore true for v0.22.0.Tests
test_v0220_release_notes.pymoves to the published state: 30 tests, 57 cases (it was 27 and 54).published/recordedand the checksums file;refand the tag commitsha, and that the copy inside thev0.22.0tag pinsv0.21.1and its commit (read withgit show);v0.22.0latest,v0.21.1prior, nov0.22.0candidate line, the CURRENT_STATE headings and leads, and the tag history of the plugin pin;release_check.pypasses and that its pre-tag mode refuses the published tree for exactly three reasons, plus the one more reason an Unreleased entry onmainadds.git archiveexportsapps/api/srcandapps/api/alembicofv0.22.0and ofv0.21.1into temporary folders (_export, two module fixtures), and the code of an export runs in a subprocess. This covers:v0.22.0is byte for byte the folder atv0.21.1;ALICE_underapps/api/srcand the flags of everyalice-memorycommand, at each tag;20261011_0097and the vector limits and defaults, all printed by the code of thev0.22.0tag (one subprocess) or read from its folder;blockedtest before the service call, theVNextCaptureValidationErrorin theexcept, the refusal in the connector service and in the MCP and CLI doors, read from the source at each tag with_tagged.Nothing else compared with v0.21.1 reads the working tree, so a migration edited on
mainlater (to repair it for a stricter database owner, say), a new setting, a new tool or a change to the route does not fail a claim about what v0.22.0 shipped.test_credential_marker_lengths.pydoes: the behaviour tests (the endpoint rules, the opt-in values, the policy decision of each request kind, the import against a loopback endpoint, the vault v0.21.1 opens), the version-site check and the packaging check ofpyproject.toml. A later change to that behaviour has to update them.test_v0211_release_notes.py,test_v0210_release_notes.py,test_v0202_release_notes.py,test_v0200_release_notes.py: the marketplace tests requirev0.22.0and its commit. The control-document and install-line tests of the v0.21.1 file are gone (they belong to the v0.22.0 file now); the step 6 test of the v0.21.1 notes pins both dated updates in order; the chains of the v0.20.2 notes shift by one paragraph and new tests pin the 4, 3 and 3 follow-ups of 2026-10-27, each after its 2026-10-23 follow-up.test_claude_code_plugin.pypins the new README and plugin README wording and the plugin page'sv0.22.0tag history.test_readme_facts_live_in_the_docs.pyfollows the README checkout line.test_published_release_notes_stay_immutable.pynow covers the notes and the changelog section ofv0.22.0, so their tagged lines are held and only dated paragraphs can be added.test_known_limitations_page_shape.py,test_unscheduled_promises_docs.py,test_hidden_ids_disclosure_docs.py,test_expired_memories_docs.pyandtest_known_limitations_current_facts.pyfollow the v0.22.0 header and heading. The last has a new test for the bullet: it runssource_embedding_settings(off for an empty environment, on only foron) andendpoint_is_loopback(acceptslocalhost,127.0.0.1and[::1]; refuses a remote name,192.0.2.1and127.1), and pins the same rule inmcp-tools.mdand in the notes.Validation
All on the head of this branch, run with the development Python and
PYTHONPATHset to this checkout'sapps/api/src.python scripts/release_check.py: PASS (alice-memory 0.22.0).python scripts/release_check.py --tag v0.22.0fails on purpose, because--tagapplies the pre-tag rule: both statuses must be pending before the tag, and the checksums file must not exist on the pre-publication tag. It reports those three reasons, and a fourth only because this head is not the tag commit.python scripts/check_control_doc_truth.py: PASS.python scripts/check_commit_authors.py --base origin/main --head HEAD: PASS (2 commits).ruff check apps/api/src/alicebot_api scripts tests eval/longmemeval: clean. No file underapps/changes, so mypy is not run.tests/unitin the five shard selections of.github/workflows/tests.yml, each run as its own process (python -m pytest <selection> -q -p no:cacheprovider). The selections cover all 658 test files once (209, 214, 125, 11 and 99 files).pytest eval/longmemeval: 218 passed.scripts/check_protected_paths.pywith an event payload for this head, hit none. The added lines and the commit messages hold no em or en dash, home path, user name, e-mail address or process wording.Mutations
Each applied alone to a clone of this head, with the selected tests run after a green baseline and the file restored from saved bytes (the digest compared after each).
v0.22.0tag:test_no_migration_the_alembic_folder_at_v0220_is_the_one_at_v0211fails;v0.21.1tag: the same test fails (so both sides are read from the tags);v0.22.0tag: that test and the numbers test (head revision) fail;ALICE_name inconfig.pyat the tag: the settings and flags test fails;blockedguard of the route changed at the tag: the route test fails;DEFAULT_MAX_VECTORSchanged at the tag: the numbers test fails.ALICE_name, the route guard changed,DEFAULT_MAX_VECTORSchanged. The 57 cases oftest_v0220_release_notes.pypass each time. The test as merged onmain(a6a5f49e), run with an edited migration on the working tree, fails.release_check.pyand the truth check run: 43 of 43 killed, each by a test of those files. They cover the notes state either way (2), the checksums file deleted, a digest digit, a file name, the header version (4), the marketplacerefand one digit ofsha(2), the candidate line back in README and ARCHITECTURE (2), the latest or prior release named wrongly in ARCHITECTURE, CURRENT_STATE (heading, lead, tag history, pin sentence), PRODUCT_BRIEF, ROADMAP, RELEASING and the vNext README (9), the three install lines and the README checkout line (4), the plugin README and plugin page pins (3), the step 7 update deleted or naming the wrong pin (2), a tagged line reworded, an undated sentence in the notes and in the changelog section (3), the follow-ups of the v0.19.2, v0.20.0, v0.20.2 and v0.21.1 notes (4), the limitations bullet (3), the page header, heading and notes link (3),planned for v0.22.0beside an item (1), andendpoint_is_loopbackaccepting every endpoint (1). Of these, the truth check or the release check also failed for 16.v0.22.0taken out of the notes list oftest_published_release_notes_stay_immutable.py, a reworded tagged line of the v0.22.0 notes passes it; with it out of the changelog list, an undated sentence added to the section passes it; with it in, both fail.scripts/verify_derived_label_mutations.py --only <name> --output <dir>against the final head28723254(15 names, 15 results): 15 killed, 0 survived, each with a green baseline.Left open
real-host-ci.yml -f job=marketplace-checkis to be dispatched on this branch and again onmainafter the merge. It is not dispatched from this PR. The step "Validate the committed marketplace" reads this branch's file and must showalice-memory@alicememoryat 0.22.0. The later steps that add the marketplace from the HTTPS URL and the shorthand clone the default branch, so before the merge they readmain's file, which still pinsv0.21.1; they read green only onmainafter the merge.gh workflow run real-host-ci.yml --ref docs/v0.22.0-post-publication -f job=marketplace-checkgh workflow run real-host-ci.yml --ref main -f job=marketplace-checkpendingin the notes. A later dated update adds it. The tagged sentenceAdvisory identifier: pending.stays as tagged and the notes test still pins it; the update will need its own test.marketplace-checkdispatched on the branch (first step) and onmainafter the merge (all steps)