Skip to content

docs: rewrite README as a landing page; move reference content into docs/ - #68

Merged
ThomasK33 merged 1 commit into
mainfrom
docs/readme-landing-page
Sep 2, 2026
Merged

docs: rewrite README as a landing page; move reference content into docs/#68
ThomasK33 merged 1 commit into
mainfrom
docs/readme-landing-page

Conversation

@ThomasK33

Copy link
Copy Markdown
Member

Rewrites README.md from a landing page welded to the pre-Diátaxis reference manual into an actual landing page, and relocates every removed reference section into its Diátaxis home under docs/. No information was deleted: sections moved, were deduplicated against what docs/ already said, and were re-verified against the code where the two disagreed.

Before / after

File Before After
README.md 863 204
docs/reference.md 81 653
docs/explanation.md 72 200
docs/README.md 47 51
docs/how-to/deferred-dispatch.md 127 130
documentation_test.go 187 259

New README

Title + badges (CI, pkg.go.dev, latest release — all three verified to render) → one-paragraph value proposition for a Go platform engineer → a complete 45-line hello-world Slack bot (build-checked, see below) → Install (Go 1.26.3, root + state modules) → Features (each bullet links to its how-to or reference section) → Adapters (maturity table, tightened) → Documentation (Diátaxis index) → Relationship to Vercel Chat SDK (3 sentences + link) → Non-goals (5 one-liners linking to the long form) → Status.

Section relocation map

README section (before) New home
Lede / status paragraph / Adapter Maturity README.md (rewritten value proposition; ## Adapters)
Design Goals docs/explanation.md#design-goals
Vercel Chat SDK Alignment (comparison table) docs/explanation.md#vercel-chat-sdk-alignment
Install (package layout) README.md#install; layout in docs/reference.md#modules-and-packages
Examples And Local Services docs/reference.md#examples
Tiny Slack Example replaced by the complete README.md#hello-slack program
Production-Shaped Example folded into docs/reference.md#runtime-construction and #ephemeral-messages (Redis wiring already in docs/how-to/choose-a-state-backend.md)
Core Model docs/reference.md#core-model
Runtime Construction docs/reference.md#runtime-construction
Webhooks docs/reference.md#webhooks
Routing / Command And Interaction Events docs/reference.md#routing, #command-and-interaction-events
Observability docs/reference.md#observability
Dispatch And Acknowledgement docs/reference.md#dispatch-and-acknowledgement
Runtime State docs/reference.md#runtime-state
Dedupe, Locks, And Concurrency docs/reference.md#dedupe-locks-and-concurrency
Messages / Ephemeral Messages docs/reference.md#messages, #ephemeral-messages
Message History docs/reference.md#message-history
Actors And Identity docs/reference.md#actors-and-identity
Adapter Access docs/reference.md#adapter-access
Slack Adapter Status / Linear Adapter Status docs/reference.md#slack-adapter, #linear-adapter (merged with the existing capability table)
Non-Goals README.md#non-goals (short) + docs/explanation.md#non-goals (long form)
Intentional Gaps docs/explanation.md#intentional-gaps
Testing Contract docs/reference.md#testing-contract

docs/README.md index descriptions updated for the expanded reference and explanation pages.

Code-is-truth fixes found while relocating

  • docs/how-to/deferred-dispatch.md said a lost lock lease lets the handler "keep running without exclusivity". runtime.go startLockRefresh cancels the handler with chat.ErrPreempted as the context cause (as the README correctly said). Fixed.
  • Same how-to said interactivity gets a "busy signal" on admission rejection; adapters/slack/interactive.go returns 503 for block_actions and the 200 + busy text only for slash commands. Wording made precise.
  • The relocated Observability text now lists the preempted / admission-rejected span outcomes and the admission_rejected point event (observer.go), which the README omitted.

Tests

  • TestDocumentationCoversIntentionalVercelDifferences and TestDocumentationCoversMessageHistoryCapability: every phrase assertion retained and retargeted to the phrase's new home (README.md keeps "not a TypeScript API port"; docs/reference.md and docs/explanation.md take the rest). No assertion weakened or removed.
  • New TestREADMEMarkedSnippetsBuild: every <!-- build -->-marked Go block in README.md is written into a temporary _readme_snippet_* package under the root module and must go build, so the hello-world can never silently rot. The underscore prefix keeps a stray directory out of ./...; the test is sequential so its go build cannot skew the timing-sensitive dispatch tests.

Validation

  • mise run vet — pass
  • GOFLAGS=-race mise run test — pass
  • Relative link + anchor check across README.md and docs/**/*.md — 30 files, 0 broken (checker negative-tested)
  • Badge URLs return 200 image/svg+xml; release badge shows v0.2.0

Note for the maintainer

The repository has no LICENSE file (GitHub reports license: null), so the README deliberately has no license line rather than inventing one. Worth deciding before promoting the landing page further.


Generated with mux • Model: anthropic:claude-fable-5-1 • Thinking: xhigh

…ocs/

The README was a landing page welded to the pre-Diátaxis reference manual
(863 lines, first code at line 187, a Vercel comparison table before Install).
Rewrite it as a ~200-line landing page: value proposition, a complete
build-checked hello-world Slack bot, install, feature highlights linking into
docs/, adapter maturity, the Diátaxis index, the Vercel relationship in three
sentences, short non-goals, and status.

Relocate every removed reference section into its Diátaxis home: runtime
semantics by concept plus per-adapter status and the testing contract into
docs/reference.md; design goals, the Vercel comparison table, the long-form
non-goals, and the intentional gaps into docs/explanation.md. Dedupe against
existing how-tos rather than paste, and fix two stale how-to claims found on
the way (lost lock lease cancels the handler with ErrPreempted; block_actions
admission rejection is a 503, only slash commands get the busy text).

documentation_test.go: retarget every README phrase assertion to the phrase's
new home (none removed) and add TestREADMEMarkedSnippetsBuild, which compiles
the README's marked Go block against the module.
@ThomasK33

Copy link
Copy Markdown
Member Author

@codex review

@ThomasK33

Copy link
Copy Markdown
Member Author

@codex security review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 2, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-02T10:29:12.977002Z 0a6e1a5 Manual request
🔒 Security Review Completed 2026-09-02T10:30:07.235099Z 0a6e1a5 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit: 0a6e1a5c3d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector

Copy link
Copy Markdown

Security review completed. No security issues were found in this pull request.

Reviewed commit: 0a6e1a5c3d

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@ThomasK33
ThomasK33 merged commit b479006 into main Sep 2, 2026
1 check passed
@ThomasK33
ThomasK33 deleted the docs/readme-landing-page branch September 2, 2026 10:37
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