Skip to content

playground - #1565

Draft
hayes wants to merge 124 commits into
mainfrom
mh--playground
Draft

playground#1565
hayes wants to merge 124 commits into
mainfrom
mh--playground

Conversation

@hayes

@hayes hayes commented Dec 6, 2025

Copy link
Copy Markdown
Owner

No description provided.

@changeset-bot

changeset-bot Bot commented Dec 6, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 26342f9

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercel Bot commented Dec 6, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pothos Ready Ready Preview, Comment Jul 7, 2026 11:52pm

@pkg-pr-new

pkg-pr-new Bot commented Dec 6, 2025

Copy link
Copy Markdown

Open in StackBlitz

@pothos/core

npm i https://pkg.pr.new/@pothos/core@1565

@pothos/plugin-add-graphql

npm i https://pkg.pr.new/@pothos/plugin-add-graphql@1565

@pothos/plugin-complexity

npm i https://pkg.pr.new/@pothos/plugin-complexity@1565

@pothos/plugin-dataloader

npm i https://pkg.pr.new/@pothos/plugin-dataloader@1565

@pothos/plugin-directives

npm i https://pkg.pr.new/@pothos/plugin-directives@1565

@pothos/plugin-drizzle

npm i https://pkg.pr.new/@pothos/plugin-drizzle@1565

@pothos/plugin-errors

npm i https://pkg.pr.new/@pothos/plugin-errors@1565

@pothos/plugin-example

npm i https://pkg.pr.new/@pothos/plugin-example@1565

@pothos/plugin-federation

npm i https://pkg.pr.new/@pothos/plugin-federation@1565

@pothos/plugin-grafast

npm i https://pkg.pr.new/@pothos/plugin-grafast@1565

@pothos/plugin-mocks

npm i https://pkg.pr.new/@pothos/plugin-mocks@1565

@pothos/plugin-prisma

npm i https://pkg.pr.new/@pothos/plugin-prisma@1565

@pothos/plugin-prisma-utils

npm i https://pkg.pr.new/@pothos/plugin-prisma-utils@1565

@pothos/plugin-relay

npm i https://pkg.pr.new/@pothos/plugin-relay@1565

@pothos/plugin-scope-auth

npm i https://pkg.pr.new/@pothos/plugin-scope-auth@1565

@pothos/plugin-simple-objects

npm i https://pkg.pr.new/@pothos/plugin-simple-objects@1565

@pothos/plugin-smart-subscriptions

npm i https://pkg.pr.new/@pothos/plugin-smart-subscriptions@1565

@pothos/plugin-sub-graph

npm i https://pkg.pr.new/@pothos/plugin-sub-graph@1565

@pothos/plugin-tracing

npm i https://pkg.pr.new/@pothos/plugin-tracing@1565

@pothos/plugin-validation

npm i https://pkg.pr.new/@pothos/plugin-validation@1565

@pothos/plugin-with-input

npm i https://pkg.pr.new/@pothos/plugin-with-input@1565

@pothos/plugin-zod

npm i https://pkg.pr.new/@pothos/plugin-zod@1565

@pothos/tracing-newrelic

npm i https://pkg.pr.new/@pothos/tracing-newrelic@1565

@pothos/tracing-opentelemetry

npm i https://pkg.pr.new/@pothos/tracing-opentelemetry@1565

@pothos/tracing-sentry

npm i https://pkg.pr.new/@pothos/tracing-sentry@1565

@pothos/tracing-xray

npm i https://pkg.pr.new/@pothos/tracing-xray@1565

commit: 26342f9

@hayes
hayes force-pushed the mh--playground branch from 04ee2b4 to ed913d4 Compare May 7, 2026 00:10
@hayes
hayes force-pushed the mh--playground branch from 34ac589 to b97d7eb Compare May 7, 2026 20:56
- ledger S15-S18 (stay on topic, no edge-case options on mainline pages,
  explicit optionality, don't enumerate unused API surface) + U5 (no
  Next:/See-also callouts; next/prev buttons already exist)
- first-server: GraphQLSchema compatibility phrasing, arg nullability
  teaching cut
- schema-builder: generic entries explicitly optional; Defaults v3 and
  notStrict coverage cut
- queries: queryType second argument unmentioned
- Next:/See-also callouts removed across getting-started + batch-1 pages

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rewritten through the calibrated pipeline (dossiers, draft, adversarial
fact-check, slop screen, orchestrator read):
- objects: Character-first (was Race); new options-split section (F3);
  backing model's single teaching home; three definition styles as
  equals with working variant switcher; instanceof affordance (F4);
  builder-types described as centralizing definitions (F2)
- fields: expose helpers, computed fields, lists, objectField(s);
  new nullability section — v4 fields verified nullable by default
  from source (builder.ts defaultFieldNullability)
- bundles rewritten on the canonical cast sheet with region markers

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… sugar-order

- objects: type references taught generically (S19); backing model carried
  by the reference in all forms and fully separate from the GraphQL shape
  (S20); plain array data, single-type returning example (S21); per-style
  framing (S22); no orphan intro (S25); objectType's accepted params
  (class | ref | registered name) verified from type-params.ts
- fields: reordered to sugar progression (S23) — t.field, scalar builders
  as t.field with type preset, expose helpers as scalar builders with a
  synthesized property resolver (verified in fieldUtils); rename example
  now visible in snippet (S24)
- ledger S19-S25 + U6; tab-button report: renders identically at HEAD,
  only real difference is client-side mount of inactive tabs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rewritten through the calibrated pipeline (dossiers, drafts, adversarial
fact-check, slop screen, orchestrator read):
- resolvers: executor behavior attributed to graphql-js (ledger F6);
  honest info paragraph grounded in cited prisma/drizzle usage; real
  async data-access example
- context: teaching home for the factory + narrowing idiom; ctx.user
  canonical; initContextCache claim un-inverted (stable key survives
  context copying — verified against context-cache.ts)
- args: fixed verified-wrong readonly string[] claim (list args are
  mutable); optional-by-default stated explicitly; sugar-order framing
- new dossiers: resolvers, context, args, inputs, mutations; ledger F6

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rewritten through the calibrated pipeline:
- inputs: real nested + recursive (inputRef) examples; isOneOf documented
  (maps to graphql-js @OneOf, exactly-one-key TS shape); same-options
  referral to Arguments instead of re-teaching
- mutations: false 'exactly once' rule fixed; serial execution of root
  mutation fields added with executor attribution; row-level ownership
  as the page's core teaching; return-the-entity convention
- subscriptions: subscriptionType taught explicitly as the third root;
  unverified subscribe-before-resolve callout dropped; addCharacter now
  publishes and returns the entity; honest playground validate-only note
- new dossier: subscriptions

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rewritten through the calibrated pipeline:
- interfaces: home of resolveType (string return — the ref-return path
  verified NOT to work for interfaces) and isTypeOf with the class
  instanceof example; Pothos's interface-field auto-merge verified
  (build-cache getObjectFields) and taught accurately; two-check split
  (backing-model assignability vs graphql-js field compatibility)
- unions: resolveType referral to its interfaces home; members
  object-only; unions-vs-interfaces stated once, factually; search demo
  now returns a genuine mix of member types
- new dossiers: interfaces, unions

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Preserving pass against the ledger: See-also callouts removed (U5);
snap contrasts, mic-drops, aphorisms, over-advising trimmed; F6
attributions corrected. Fact fixes found and verified:
- circular-references: invented thunk form (type: () => [Faction])
  replaced with the real builder-types string-name alternative
- default-nullability: false claim that DefaultFieldNullability affects
  argument requiredness removed (separate slot)
- handling-errors: plugin-errors types option takes error classes, not
  object refs; 'logged once' corrected to errors-array entry
- reusable-fields: invented shared Ref<Types, T> type removed
- circular-references bundle: plain arrays + real ids (S9/S21)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
hayes and others added 2 commits July 7, 2026 11:42
…plete)

- enums: fixed inverted name-vs-value teaching (keys are the GraphQL
  enum values clients see; 'GOOD'-style strings are internal backing);
  removed as-const ceremony the const type parameter makes redundant
  (verified against 7c191da, which deleted it from the tests)
- scalars: ID taught as the genuine Input/Output asymmetry (verified
  incl. bigint serialization in graphql 17); parsing attributed to
  graphql-js (F6); Using-the-scalar block single-sourced from bundle
- new dossiers: enums, scalars

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Preserving pass against the ledger: See-also callouts + unused imports
removed (U5); over-advising/mic-drops trimmed (S7/A9); objectType param
forms stated neutrally (S1); isTypeOf timing attributed to execution
(F6); design.mdx ORM-slot claim aligned with F2 (generic slots carry
generated type info, not name wiring). api/* signatures spot-verified
against core (all accurate); migrations left in their own register.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Preserving pass against the ledger across all single-page plugins:
See-also callouts removed (U5); selling register stripped (plugin pages
state what the plugin does, they don't pitch); F6 attributions fixed
(DataLoader batching to the library; tracing to server/envelop;
federation/grafast to their runtimes). Every API name verified against
its plugin's source; fixed invented/wrong names on relay (t.nodes ->
t.nodeList; globalConnectionField is a builder method) and the
errors-page intro/table contradiction (errors.types takes classes).
Catalog one-liners in components/plugins/plugins.ts de-sold.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Preserving pass: See-also callouts removed tree-wide (U5), selling
register and em-dash chains trimmed, over-advising softened (S7/S1).
Every API name verified against plugin sources — none invented.
Cross-tree parity mapped for maintainer review: drizzle thinner on
connections (cursor parsing, shared objects, edge extension), relay
missing-records, relations fallback-queries; richer on interfaces and
computed fields; prisma-utils has no drizzle equivalent.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Overview page: last remaining See-also callout removed (U5)
- project-layout: third 'This page walks through' stem varied (A4)
- scope-auth: viewer naming retired page-wide for the canonical ctx.user
- .claude/docs-review-guide.md: grouped review guide for the maintainer

Full gates green: 65 playground refs, test:docs, 48 example tests,
next build (172 pages).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codified from maintainer review as ledger S26-S38: trust the reader (no
over-explaining the obvious, no docs-about-the-docs, no prior-page
restatements), one idea per sentence, examples over narrative,
concept-level descriptions, no naming-convention opinions, inputs
declared like refs, initContextCache in every factory example,
recommend scope-auth plainly, omit throwing semantics for now.

NEW: automated slop lint (website/tests/docs-slop-lint.test.ts, wired
into test:docs) — banned-phrase regexes, max 2 prose em-dashes per
page, opener-stem and ctx.viewer checks. Baseline was 87 failing
pages; now 0.

All ~35 round-6 comments addressed across objects/fields/resolvers/
context/args/inputs. Investigations settled two challenged facts:
isTypeOf is NOT auto-derived for classes (core's own tests write it),
and the recursive input shape is CORRECT (inputRef recursively
null-normalizes optional fields — now documented in one sentence).
Resolvers' Throwing section removed (S36). UI: 72ch paragraph cap
removed (full-width regression) and description restyled as a muted
subtitle bound to the title.

Gates: 66 refs, test:docs 239 passed, 48 example tests, next build.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Deeper smell-family sweep across the 18 plugin prose pages (hedge
filler, editorializing, self-characterization, reader-feelings meta,
rhetorical triads). The hand-found patterns are now lint regexes per
S38: 'which is useful/helps', 'the cleanest/best/right way', 'pays
off', 'worth it when', 'for exactly this'.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Section/title/description now differ by role, not just size: accent
uppercase kicker for the section (matches the plugins-index pattern),
weight/tracking-led 42px title, muted 60ch description, hairline rule
bounding the header from the article. Header height 198px -> 157px;
fixes an unmanaged first-h2 margin and a mobile sticky-TOC overlap.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant