Repository navigation
docs(release): align the docs with marfa v0.0.18 - #524
Conversation
aicayzer
left a comment
There was a problem hiding this comment.
Review: ready to merge
Summary. The docs now match marfa v0.0.18: the release sync, a v0.0.18 changelog entry, and the pages whose rules changed, each checked against the contract and code at the tag.
First draft: 3/5. Two review rounds found 22 statements that were untrue or overbroad against the contract, mostly where the docs restated a rule with many conditions (approval and consent, the stuck-write rule, URL and folder rules), and four user-facing changes missing from the changelog. All fixed; the rules with many conditions now state the plain rule in a sentence or two and link to the contract statement for the exact conditions.
Checked.
- True: every Marfa name, code, status, rule and number the pull request adds or changes, against the contract and code at v0.0.18; the Swift names against marfa-swift at the release.
- Done: the changelog covers every user-facing change from v0.0.17 to v0.0.18 and nothing CI-only; the generated files match the sync byte for byte;
pnpm test,pnpm buildandpnpm types:checkpass.
Found.
- Overbroad or untrue rules on the queue, folders, URLs and numbers, approval and consent, confirming a sign-in, webhooks, the CLI's scopes. Fixed in 2ac3073 and 81b38df.
True - Changelog missing four changes (#2216, #2212, #2226, #2231). Fixed.
Done
Quick fixes. 5 applied by the reviewer.
Reviewed by withmarfa-reviewer on Codex GPT-6-Astra. This review may contain mistakes.
Summary
Aligns the docs with marfa v0.0.18: the release sync, a v0.0.18 changelog entry, and the guide changes the release's pull requests call for. The release changes what the owner sees (approval choices, a confirm dialog, Home, key and account pages), how Marfa treats numbers, URLs and tags, and how a device sets aside a failing write.
Changes
scripts/sync-from-marfa.shwithMARFA_ROOTset to a detached worktree of marfa at thev0.0.18tag (commita8497e40a). Generated files are as the sync wrote them.POST /auth/confirm, attempt windows, what a program sees), Start from Home (Home at/, the sign-in redirect, the older management page) and What the owner chooses (levels per type, Choose types, Already allowed, powers,access_denied). The recent-sign-in section now describes the dialog instead of a redirect.POST /keysanswersCache-Control: no-store;narrow_onlyonPATCH /keys/{id}; the sample output shows the access words.marfa loginand the key andwhoamicommands print access in the approval page's words; the device-code sample uses the new format.400 invalid_properties), the tag rule for.and.., and updated troubleshooting entries for403 forbidden("Sign in again to perform this operation") and400 invalid_properties.failing_alone, how a device decides on it, and the last answer thatmarfa device queueprints.422 idempotency_result_not_retainedand the device's reading of a2xxdetails.original_status.GET /for a browser, and the approval wording.Testing
pnpm test: 28 files, 354 tests passed (after one fix: the glossary lint caught "white space" and "integration data").pnpm build,pnpm build:statusandpnpm types:checkpassed. All throughTools/heavy-run/heavy-run. After the review rounds,pnpm test(354 tests),pnpm build,pnpm build:statusandpnpm types:checkpassed again.dist/: the v0.0.18 changelog is in the built page and inllms-full.txt, and every anchor the new links name exists as a heading (#confirm-its-you,#start-from-home,#what-the-owner-chooses,#when-approval-needs-a-recent-sign-in,#sign-in-as-the-owner,#a-missing-or-unreadable-directory,#use-the-api-keys-page,#narrow-a-key,#change-what-a-webhook-sends,#retry-with-an-idempotency-key,#verdicts,#check-what-a-command-will-use). TheupdateWebhookoperation page exists.Checked against
Every claim was read against the contract at the tag (
git diff v0.0.17 v0.0.18 -- conformance/spec/),openapi.json, and the code at the tag:keys-and-oauth/approval-*,consent-page-confirm,consent-recent-needed,device-code-lifetime,authorize-narrowed-types,consent-nothing-denies): contract. Row titles and wording fromroutes/access-choices,consentandpages/registry.ts.authentication/confirm-*,keys-and-oauth/sign-in-end-self,sign-in-end-recent,revoke-recent): contract. The dialog's wording and the client gate are inpages/client/confirm.ts,account.tsandpasskey.ts, in the code only.instance/root-home*,authentication/console-*): contract. The groups Home lists in this release (Access, You, the older management page) come fromroutes/home-page.tsxandpages/registry.ts.keys-and-oauth/update-narrow-only*,manage-narrows-only,app-key-narrows-only,plaintext-no-store): contract; page layout fromroutes/key-pages.tsxandpages/client/keys.ts.core/marfa-cli/src/access.rsandcommands/{login,keys,whoami}.rs, against the glossary's access words.items/property-number-exact*,property-number-kept,tag-dot-segment,types/url-*,device/number-exact,url-trimmed,url-idna-unassigned,tag-bound): contract.queue-and-verdicts/stuck-write-*,streak-*,failing-alone-*,queue-shows-last-failure,release-clears-streak,not-retained-accepted) anderrors/idem-not-retained*: contract;core/marfa-core/src/drain.rs.folders/file-item-doc-name-*,registry-root-identity,registry-replaced-kept,watch-every-root-returns): contract.events/cancel-unselected): contract; the cancel text is the error string in the code.enginesin the rootpackage.jsonat the tag.core/marfa-core/src/lock.rs, code only.Pages read
(reference)/api-reference/errors.mdx,api-reference/index.mdx,typescript-sdk.mdx,guides/connector-pull-and-push.mdx,(overview)/items-and-types.mdx,guides/define-a-type.mdx,catalog/your-own-types.mdx,guides/audit-log.mdx,guides/keep-in-sync.mdx,guides/back-up-and-restore.mdx(the restore's five-minute rule is unchanged),guides/settings.mdx,guides/upgrade.mdx,(reference)/folder-watch-record.mdx, the glossary page.Notes for reviewers
failing_alone(streak spacing, the independent write, the resend,429), a retained2xx(not a create with noid),narrow_only(theenforcement_overridelimit applies only with it), URL hosts (special schemes, IDNA, the device exception), approval with nothing newly chosen, Choose types, held levels in approval,revoke_keys,POST /auth/confirmfrom a program, a wrong password on confirmation, the password change,/for a browser that is signed out, and the watch resuming for the original directory. The changelog gains the--no-keychainchange, approval rows told apart by identifier, Sign out on a phone, and the destructive-action card with Save shown after a change. Also corrected: the webhook change text ("before it answers" belongs to narrowing), the tag message, and the CLI's requested scopes (it asks for every scope an owner can grant, fromOWNER_SCOPESincore/marfa-cli/src/auth.rs).queue-and-verdicts/stuck-write-suspect,stuck-write-test-refused: the run needs at least five minutes since it began and no gap over 15 minutes, and a credential refusal of the test parks the queue instead of resending the suspect), whether approval asks the owner to confirm (it follows the access the owner turns on that the app does not already hold,keys-and-oauth/consent-recent-needed,confirm-gate.ts,pages/client/confirm.ts; the403follows the same condition), what a form may post (approval-beyond-shown,approval-types-beyond), the held scopes (approval-held-now),access_denied(consent-nothing-denies), and the CLI's requested scopes (OWNER_SCOPESincore/marfa-cli/src/auth.rs, which leaves outprofile:writeamong others, so the page now names the list instead of saying "every"). The same wording replaced the older restatements in Access, Troubleshooting, Connect a web page and the Swift streak row.(reference)/swift-sdk.mdxandguides/swift-app.mdxare unchanged: I did not confirm the Swift names forfailing_aloneor the last answer, so the Swift pages do not mention them. A reviewer who knows the Swift surface should say whether they need a line.guides/run-a-connector.mdxstill says Node.js 22.13 or later. It was already there, and the connector's own requirement was not checked here.Checklist
v0.0.18