Skip to content

Onboarding: replace the one-size Conway first-doc with a per-user bio page (fixes global-slug collision) #244

Description

@yayashuxue

Summary

The first-doc onboarding tells every new user to build the same doc — "Conway's Game of Life" (FIRST-DOC.md Step 2). Because the hosted slug namespace on tdoc.dev is global, the second person to run onboarding collides on the default slug and the publish is rejected with not_doc_owner (403) / slug_taken (409). This is not a corner case — it happens to the N-1th of every N onboarding users.

We should rethink onboarding so that (a) it doesn't collide by construction, and (b) the first doc is something the user actually wants to keep.

The bug (reproduced with Mike)

Mike ran onboarding today. Sign-in succeeded (xmike565-ai), but the upload was rejected:

  • conways-game-of-life was already claimed by another account.
  • not_doc_owner (403) = the slug already has meta owned by a different hosted account; the tdoc.dev slug namespace is global, so ownership can't be overwritten.
  • The workaround was to re-publish under a distinct slug — but a brand-new user hitting a 403 on their very first publish is a broken first run.

Source: FIRST-DOC.md Step 2 hardcodes the Conway's Game of Life doc for everyone; worker/worker.js returns not_doc_owner on cross-account slug writes. Global namespace + shared default slug = guaranteed collision.

The product take

Everyone making their own Conway's Game of Life doesn't really make sense — it's a nice demo of the mechanics (live artifact + commentable board), but it's throwaway and identical across users, which is exactly what causes the slug collision.

We don't necessarily need Conway. What we probably do want is a community version: the first doc is a personal bio / blog page — LinkedIn + GitHub + whatever makes sense for them — that they'd actually keep and share.

Proposed:

  • First doc = a personal bio page, not Conway's Game of Life.
  • Slug is namespaced to the user's GitHub handle: tdoc.dev/d/<github-account>-bio. This sidesteps the global-namespace collision by construction (each account gets a unique default slug) and doubles as a durable landing page / mini-blog for that person.
  • Keep the onboarding lesson (leave a comment → ask your agent to fix it → new version → replies → share the link) — just attach it to a doc worth keeping instead of a throwaway.

Evidence this format has legs

Real users are already producing substantial docs on tdoc. Fiona wrote a ~150-page long-form piece — her "绩点效应 / singularity-effect" paper:

https://tdoc.dev/d/singularity-effect/v/1#h-%E6%91%98%E8%A6%81

Open questions

  • Bio content: seed from GitHub profile automatically vs. ask the user a couple of prompts?
  • Do we retire the Conway doc entirely, or keep it as an optional "show me the interactive-artifact trick" second step?
  • Slug collision fallback if <github-account>-bio is somehow taken (e.g. re-publish, versioning).

cc @serenatan

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingenhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions