Repository navigation
docs(release): align the docs with marfa v0.0.17 - #518
Merged
Merged
Conversation
aicayzer
commented
Oct 20, 2026
aicayzer
left a comment
Contributor
Author
There was a problem hiding this comment.
Review: ready to merge
Summary. The pass documents what v0.0.17 changed, and every claim in the changelog and the edited guides was checked against the contract and code at the tag.
First draft: 3/5. The fact-check found nine claims that were wrong, overclaimed or unsupported, all fixed in c5a24c6.
Checked.
- True: each name, status and exit code, setting and default, file name and step count against
conformance/spec/, the code andopenapi.jsonat the tag. - Done: the generated files match what
scripts/sync-from-marfa.shwrites against the tag, so none was hand edited. - Nothing left behind: nothing from after the tag and nothing from before v0.0.16 is claimed as new; links and anchors resolve.
Found.
- Restore and an unreachable disk. The 503 applies when the folder exists but its marker is missing or names another store, not when the folder is gone, and the claimed earlier 500 was unsupported. Fixed in c5a24c6.
True - A drive that did not mount. At start the server recreates the folder, so health is
downonly for a folder that disappears while running. Fixed in c5a24c6.True - Overclaims. Edges "as the archive holds it", a 401 for NDJSON exports, "the file doesn't unpack" for both formats, the 503 condition on a blob read, the purge re-run condition and a 409 example that a restore now takes. Fixed in c5a24c6.
True
For an issue.
- A blob folder missing at server start. The server replaces it with an empty store and reports it healthy; filed in withmarfa/marfa.
Reviewed by withmarfa-reviewer on Opus. This review may contain mistakes.
aicayzer
marked this pull request as ready for review
October 20, 2026 02:20
aicayzer
enabled auto-merge (squash)
October 20, 2026 02:20
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
Aligns the docs with marfa v0.0.17: the release sync, a v0.0.17 changelog entry, and the guide changes the release's pull requests call for.
Changes
scripts/sync-from-marfa.shwithMARFA_ROOTset to a detached worktree of marfa at thev0.0.17tag (commit1c1df5f18). The script accepts a tag checkout: it reads committed files and takes the release fromgit describe --tags, which namesv0.0.17there. Generated files are as the sync wrote them: release data, CLI download, server image snippet, settings (MARFA_UPLOAD_IDLE_TIMEOUT_MS), error codes (request_timeoutandblob_store_unavailablewording), the contract index andopenapi.json.marfa export --outputwith missing blobs now say the archive is kept as<path>.incompleteand the path is not touched. A restore takes items and edges of force-deleted types as the archive holds them, refuses an archive without its four files (details.entries), has no time limit while bytes arrive and ends408 request_timeoutafter the idle limit, and judges the owner's recent sign-in when it starts. An export ends with an error when its credential ends or narrows. A copy of the volume older than the bucket needs a prefix of its own, linked to the deployment guide.503 blob_store_unavailableon a download when no store answers.408 request_timeoutentry.Testing
pnpm test: 28 files, 354 tests passed.pnpm build,pnpm build:statusandpnpm types:checkpassed. All throughTools/heavy-run/heavy-run.dist/: the changelog shows v0.0.17, and every anchor the new links name exists (#what-an-export-checks,#restore-an-archive,#when-an-archive-lacks-a-files-bytes,#empty-the-bin,#keep-it-running,#claim-the-instance,#every-environment-setting).Checked against
Every changelog and guide claim was read against the contract at the tag (
git diff v0.0.16 v0.0.17 -- conformance/spec/),openapi.json, and the code at the tag:stores/integrity-unreachable-*,stores/unreachable-read,instance/health-blob-down): contract. The restore503 blob_store_unavailable(was500), replication not ending its run, and the extraction sweep giving the attempt back are in the code only (restore-archive.ts,blob-replicate.ts,sweeper.ts), not the contract.housekeeping/retention-trash-keeps-up): contract. The batch size is not stated in the docs.search-and-filters/restore-rows-*,restore-edges-*,archive-rows-shape-free,archive-edges-*): contract. That the old refusal was409 export_rows_unrestorablecomes from the v0.0.16 contract and changelog.search-and-filters/restore-members): contract, anddetails.entriesinopenapi.json.blobs/upload-*,search-and-filters/restore-*): contract; name, default 60000 and range inconfig.ts,settings.mdandopenapi.json.search-and-filters/export-credential-*,archive-selection-key): contract;controller.errorinroutes/export.tsfor the early end.marfa export --output(search-and-filters/cli-export-*): contract andcore/marfa-cli/src/commands/export.rsat the tag: the file name<path>.incomplete, the hidden.<name>.partial-<pid>file when that name can't be written, the exit1withblobs_missing.instance-claim/claim-*,keys-and-oauth/sign-in-form-limit-wait,sign-in-lockout-page,device-lookup-*): contract. The six steps (SETUP_STEP_COUNTand its comment inpages/setup-words.ts,routes/setup-pages.tsx) and the Forgot password page (routes/auth-pages.ts,forgot-password-page.tsx) are in the code only.Pages read
(overview)/files.mdx,(reference)/api-reference/index.mdx,(reference)/typescript-sdk.mdx(they cite uploads and the export operation, and say nothing the release changes);(overview)/access.mdx,guides/authenticate.mdx,guides/manage-keys.mdx,guides/connect-a-web-page.mdx(sign-in and claim: the password chosen at claim and the passkey sign-in are still true);(overview)/items-and-types.mdx,(overview)/properties-metadata-and-edges.mdx,guides/define-a-type.mdx,guides/list-filter-search.mdx(forced delete and edges: nothing contradicts the new rules);guides/upgrade.mdx(it points to the back-up page);guides/settings.mdx(the settings table is generated and includes the new setting).Notes for reviewers
/setup, the revoked-grant purge's backlog behavior, and the/setup/nameform-only rule.manage-keys.mdxstill gives only the address limit (ten attempts in 15 minutes) for a password lock. The contract also has an account limit across addresses (a hundred in an hour,keys-and-oauth/sign-in-account-limit), which predates this release, so it is not changed here.Checklist
v0.0.17