sync: shared fullstack docs
4c004fb
docs: put back on_worker_boot — before_worker_boot crashes Puma 6
An independent audit refuted the previous commit and it was right on both
counts, each re-verified here before this fix.
* The swapped sample was NOT universally valid. puma 6.6.1's dsl.rb
defines on_worker_boot and does not define before_worker_boot at all —
no alias — so a Puma 6 reader copying the block gets a NoMethodError in
config/puma.rb and a server that will not boot. Puma 8 keeps
on_worker_boot as an alias and merely warns. The old spelling is valid
on 6, 7 and 8; the new one is valid on 7 and 8. The block is a
copy-pasteable recipe for the READER's app, and convert_sdk.gemspec
pins no Puma, so Puma 6 readers are in scope by construction. The
demo's >= 8.0.2 floor governs the demo, not them.
* Declining to name the version was evasion, not caution. The previous
commit treated two conflicting in-repo comments as the authority on a
third-party gem's release history. Puma's own History.md settles it in
one lookup: "Rename callback hooks" under 7.0.0, with the old-to-new
table. So demo/rails/config/puma.rb is right and the Gemfile comment
saying "Puma 8" is wrong.
Naming 7.0.0 is also what makes the note actionable — "use whichever your
Puma understands" is unusable advice if the page will not say which Puma
understands which.
The opening sentence goes back to naming on_worker_boot, matching the
root README, which still carries the same sentence verbatim.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
bddb8c3
docs: Puma renamed the worker-boot hook, so stop naming the old one
ForkSafety showed `on_worker_boot { CONVERT_SDK.postfork }` as the
optional belt-and-braces re-arm, in the prose and in the puma.rb sample.
Current Puma calls that hook `before_worker_boot`, which the bundled
Rails demo moved to when it took the Puma 8 security floor.
The sample now uses the current name and a note gives the old one, since
a reader on either Puma needs to recognise both. It also states the part
that makes the rename harmless here: the line is OPTIONAL on both
versions, so an integration that followed the default advice and wrote no
fork-handling code cannot be broken by it — which is exactly what the
demo defines and the release-blocking fork smoke exercises.
The version the rename landed in is deliberately not named: the repo's
own comments disagree (demo/rails/Gemfile says Puma 8, puma.rb says
Puma 7), and an unverified major is not a fact this page should carry.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
b7416eb
docs: link same-wiki pages by name instead of by full GitHub URL
Every same-wiki link was written as a full github.com URL. On GitHub the two
forms are identical -- it resolves a bare page name against the wiki it is
rendering -- but this wiki also ships inside the Convert Claude plugin as a
read-only mirror, and there they are not identical at all: a skill routes an
absolute URL to "external", so the page sitting on disk beside it never gets
opened, and the answer is reconstructed instead of read. This repo is private,
so the fetch that would rescue it returns 404.
Cross-wiki links keep their absolute form -- a bare name would resolve inside
this wiki and land on the wrong page. _Sidebar.md and _Footer.md are untouched:
GitHub nav chrome, absolute by convention, on no skill routing path. Anchors are
preserved.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
fd5db3b
docs: refresh Ruby-specific pages against ruby-sdk @ 732909c
Verified against convertcom/ruby-sdk main (732909cf7038); previous review
watermark 6202c7e84c10. Ruby-specific (SDK-owned) pages only — every shared
full-stack page is left to the backend sync.
- Configuration: add cache_level + debug_token, and a QA-options section
(debug token forces low-cache, disables config caching both ways, is
redacted, and never rides a tracking payload)
- Initialization: config-fetch query-param order; a configured debug_token
makes the fetch always-live and skips the cached-config fallback
- CodeExamples: Context#set_preview and ConvertSdk.parse_preview_param,
with the inert-input and zero-trace contracts
- TrackingControl: preview-vs-tracking-switch matrix; correct the claim that
the bucketing lifecycle event always fires (a preview silences it)
- ReturnTypes: bucketing_allocation is nil for sticky and forced decisions
- Testing: cross-SDK gate now also covers the 59 anchored-bucketing vectors;
spec/staging + spec/support in the layout; fixture provenance
- ForkSafety: debug_token is redacted alongside the sdk keys
- Installation, Changelog: pin examples track the 2.x line
- Home, AI_Index: nav rows for the five shared pages already in _Sidebar;
set_preview + parse_preview_param on the public API surface
0139cd5
sync: shared fullstack docs
1a5f057
sync: shared fullstack docs
a21eb15
sync: shared fullstack docs
e190414
docs: add config-spec drift-control notes to Configuration and Testing
Document the two orthogonal drift-control gates: the build-time CRuby
steep-check probe against the generated RBS, and the daily staging suite
that catches spec-vs-reality drift and JRuby runtime behavior.
5ee9481
docs: mark the Ruby wiki as in the backend sync matrix
The backend sync-to-wikis workflow now targets this wiki (keep_lang: ruby),
so its shared docs are regenerated from the canonical backend source and
carry Ruby fences only. Update CLAUDE.md's Backend Sync Status accordingly.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0edb4ef
docs: bootstrap Convert Ruby SDK wiki
Shared cross-SDK concept docs (copied from the sibling wiki, links rewritten to
this wiki) + Ruby-specific pages (Quickstart, Installation, Initialization,
Configuration, ReturnTypes & Sentinels, CodeExamples, ForkSafety & Runtime
Recipes, TrackingControl, Testing, Changelog) + AI_Index routing table, Home,
sidebar/footer, CLAUDE authoring rules, and sdk-docs-config readme.io mapping.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
8105622