Conversation
Lead with boundary-friendly serializable error data while keeping Result ergonomics as the normal TypeScript handling model. Record the approved audience, Epicenter attribution policy, Hono scope, and verify-before-delete allowlist.
Pin the Mint CLI, run documentation checks from the site directory under Node 24, and add non-mutating lint and format gates. Apply the minimal existing formatting fixes required for the repository-wide format check.
Add canonical learning examples plus strict type, packed-consumer, and runtime fixtures. Exercise all nine published subpaths under Bun and supported Node jobs while keeping root imports and the TanStack prerequisite explicit.
Lead with boundary-friendly error data and keep the JSON-compatibility limitation explicit. Add checked installation, quick-start, migration, and contributor paths without cutting over or deleting legacy owners.
Document error vocabulary design, Result composition, service boundaries, and conditional JSON preservation. Ground public examples in attributed Epicenter patterns while keeping runtime validation and static typing distinct.
Add one authoritative reference owner for each package subpath and correct misleading public comments without changing runtime behavior or signatures. Record implementation-facing exports and observed mismatches as deferred API work.
Document current TanStack adapters, runtime brand validation, and Hono's independent shape, validation, and static-typing contracts. Reconcile distributable skills with current APIs and conditional serialization.
Record the Result shape limit, named plain-object error contract, explicit propagation tradeoffs, and nested brand representation without carrying forward unsupported metrics or superiority claims.
Derive exact export coverage from declarations, reject unsupported public claims with explicit legacy exclusions, and require canonical snippet sources, targets, and owner imports. Run all passing gates in CI.
Replace legacy navigation with the 24-route start, guide, reference, integration, and decision architecture. Preserve old files for proof while removing current-path dependence and recording the migration ledger.
This branch has not been deployed
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.
Rebuilds wellcrafted's public documentation around plain, boundary-friendly error data and the familiar
{ data, error }Result shape, while retiring 23 overlapping documentation owners only after their durable material was migrated or deliberately rejected.The old documentation had useful ideas, but they were spread across competing tutorials, philosophy essays, source-folder READMEs, integration pages, and user-facing agent skills. That made it difficult to know which page owned a claim, and several pages mixed current API guidance with stale names, unsupported reliability or productivity claims, and unconditional serialization language. We chose a smaller set of canonical owners because readers need one trustworthy route from application task to exact API contract.
The positioning is intentionally qualified: wellcrafted errors can move through JSON, HTTP, workers, IPC, logs, and UI without an error-class transformation layer when every field is JSON-compatible.
defineErrorsdoes not type-enforce that condition, arbitrary fields do not serialize perfectly, and preserving a JSON shape is not the same as runtime validation or end-to-end static typing.What this adds
4d438c0, plus runnable local examples and synchronized public snippets.Deletion audit
Every deletion below was approved before removal, verified while the old file still existed, and committed only after its replacement owners and the full proof suite passed.
Getting started and migration
docs/getting-started/installation.mdx/start/installation.docs/getting-started/quick-start.mdx/start/quick-startand is synchronized with the runnable quick-start example.docs/migration/from-try-catch.mdx/start/migrating-from-try-catch.Core tutorials and patterns
docs/core/result-pattern.mdxOk(null)/Err(null).docs/core/error-system.mdxErrwrapper.docs/core/brand-types.mdxdocs/patterns/optional-keys.mdxdocs/patterns/real-world.mdxdocs/patterns/service-layer.mdxPhilosophy essays
docs/philosophy/err-null-is-ok-null.mdErr(null)collision, validOk(null), non-null error convention, and falsy-error handling moved to the Result decision and composition guide.docs/philosophy/error-api-evolution.mdxdocs/philosophy/rust-inspiration.mdxthiserroranalogy moved to the error-contract decision.docs/philosophy/why-name-and-message.mdxnameand human-facingmessagemoved to the error-contract decision.docs/philosophy/brand-implementation.mdxdocs/philosophy/for-the-pragmatic-fp-developer.mdxdocs/philosophy/from-effect-to-pragmatic-errors.mdxdocs/philosophy/production-reliability.mdxdocs/philosophy/developer-experience.mdxdocs/philosophy/design-principles.mdxSource-folder READMEs
src/README.mdsrc/error/README.mdsrc/query/README.mddefineKeys, reactive snapshots, cache ownership, and package prerequisite moved to the TanStack integration and Query reference.What was deliberately kept
docs/integrations/hono-serialization.mdxremains as a compatibility notice that points readers to the canonical Hono guide; it was not in the deletion allowlist.onceafter a throwing first call,extractErrorMessageedge cases, the@tanstack/query-coreprerequisite, and runtime requirements aroundObject.groupBy,AsyncDisposable, andSymbol.asyncDispose.What this does not change
There is no public API change and no new claim that serialization is enforced by TypeScript. Enforcing JSON-safe error fields would require a separate API proposal. This PR also does not add the missing Query peer dependency, change runtime behavior, publish documentation, or deploy anything.
Verification
No open GitHub issue directly corresponds to this documentation pass.