Repository navigation
Rewrite the README in plain English - #10
Merged
Merged
Conversation
The README mixed three readers (a new user, a user who tunes the policy, a contributor) and put design rationale and measurements in the middle of the user guide. A first-time user could not read it once and understand it. Rewrite it in simple-english pragmatic mode, with the heading order and the glossary that every guideme SDK now shares. Rationale, measurements and contributor details were already recorded in docs/design.md, docs/observability.md, docs/contract.md and AGENTS.md; the README links there instead of repeating them. Every Rust block stays self-contained and compiled by the Readme doctest, with no hidden lines. List the TypeScript SDK.
The review found five places where the README taught something the code does not do. The Quick start built a guide per ticket and its fallback could never fire under the default min_confidence. The batch ids ignored BTreeMap key order. "Unsure" came before the numbers and thresholds it depends on. The policy example set min_confidence on a yes/no question, where it has no effect. Fix those, and the minor findings: define option, state, instructions and threshold at first use, list the required derives and the rubric, key and fallback attributes, restore the option and level count rules to the Config row, and narrow the cross-SDK claim to what the golden vectors guarantee. Merge the environment variables into the Configuration table and shorten Observability, Lower layers and Other SDKs.
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 changed
README.mdis rewritten insimple-englishpragmatic mode, with the heading order and glossaryshared by the three guideme SDKs (
guideme-goals/2026-09-22-readme-skeleton.md).Headings: Install, Quick start, Questions, When the model is not sure, Examples and
counterexamples, Several questions in one request, The receipt, Errors, Retries and timeouts,
Testing your code, Observability, Configuration, Lower layers, Other SDKs, Development, License.
"policy", "fallback", "unsure ladder", "setting", "state", "transport", "error kind".
"judgment" appears once, in the intro.
Error::kind(), theerror.typeon a span).Erroris#[non_exhaustive];.detail()drops an earlier.or(..);Levelshas no fallback (use.or(level)); a line break in an example is refused;timeout(..)besidehttp(..)isError::Config;from_envdoes not combine withclient(..);guide.models().guideme.retrywarning fires before every retry wait, including after afailure to connect, not only on a throttle (
api/client.rs,warn_retry)."
@guideme/sdk(not yet on npm)".rustorno_runand self-contained. The two blocks that used#hidden lines (batch, receipt) are rewritten so nothing renders literally on GitHub orcrates.io. The subscriber block that
Cargo.tomlcites and theguideme::api::reqwestpaththat
guideme/tests/batch.rscites both stay.CHANGELOG.md: anUnreleased→Documentationnote. No version bump.What moved where
Nothing needed a new home. Every fact that left the README was already recorded in the repo:
docs/design.md(Decisions, "All three kindstake examples").
docs/contract.md§4 (retry policy), linked from Retries andtimeouts. No prose was added to
docs/contract.md.docs/observability.md.AGENTS.mdandCONTRIBUTING.md, both linked from Development.Dropped, with reasons (from the claim ledger):
Cargo.tomlalternative tocargo add: the same two dependencies.enum.Enumbases,.otherwise,AsyncGuide): thePython README owns it.
Line counts
Before: 483 lines. After: 467 lines, code included. The shared target is "at most about 320".
The review accepted the length: 10 compiled Rust blocks, self-contained because hidden lines are
not allowed, are most of it, and the guide stays one file.
Review fixes (second commit)
Five Majors: the Quick start builds the guide once in
#[tokio::main]and passes&Guide; itsfallback now fires under
.min_confidence(0.6); batch ids followBTreeMapkey order(
ask.rs);p, confidence and threshold are defined before "unsure"; the policy examplepatches
yes_above(0.9), which a yes/no question uses. Plus 38 Minors (definitions at firstuse, required derives, attribute keys, option and level counts in the Config row, a narrower
cross-SDK claim, a merged Configuration table).
Out of scope
The docs.rs front page (
guideme/src/lib.rs//!) is unchanged. The crates.io page keeps the0.2.0 README until the next release.
Verification
cargo test --doc -p guideme: 14 passed, 10 of them the README blocks.cargo package -p guideme --liststill listsREADME.mdat the package root. Theguideme/README.mdsymlink is unchanged.mise run check: fmt, clippy, nextest 35/35, doctests, rustdoc,cargo-deny) passed.
rg -n -i readmeover the repo:AGENTS.md:188-194(symlink rule, unchanged and stilltrue),
guideme/src/lib.rs:64-69(the doctest item; the blocks still compile),guideme/tests/batch.rs:12(the README still namesguideme::api::reqwest),Cargo.toml:29(the subscriber doctest still exists),guideme/Cargo.toml:11(readmekey),
CHANGELOG.md:51(a 0.1.x history entry; the "Testing your code" heading stillexists). No change needed.
semicolons outside code and the rubric block. No should/may/might/could/would,
simply/just/easily, contractions or Latin abbreviations. Every if/when starts its sentence.