Skip to content

docs: sync the development guide with the Makefile and tree - #759

Merged
EricAndrechek merged 46 commits into
mainfrom
docs/dev-guide-drift
Oct 8, 2026
Merged

EricAndrechek merged 46 commits into
mainfrom
docs/dev-guide-drift

Conversation

@EricAndrechek

Copy link
Copy Markdown
Member

Summary

Re-derived every item of #444 against the current Makefile and tree. Most had already been fixed; this fixes what was still wrong.

Already fixed before this PR: items 1 (make lint/make verify/make fix rows), 2 (make tools installs misspell/shellcheck/actionlint and sets core.hooksPath), 3 (internal/stream/ is in the tree), 4 (.mdx pointers in CONTRIBUTING.md/SUPPORT.md; dev-policy.yaml no longer exists), 5 (go tool), 6 (golangci-lint auto-download).

Still wrong and fixed here:

  • The pnpm prerequisite row omitted make verify, make lint, make fmt, make fix, make ci and make test-all, all of which run pnpm-install (item 1's hidden requirement; make verify is what the pre-commit hook runs). It now also lists make tools, dev-ts, check-docs and build-all.
  • The Go row listed seven of the nine tool deps in go.mod.
  • development.md said make fmt formats; it only checks, make fix applies. CONTRIBUTING.md says the same.
  • AGENTS.md's make verify/make fix summaries matched neither the Makefile nor development.md; the pre-commit row in claude-code.md now points at the Makefile Targets table instead of repeating a stale list.
  • Make 3.81 is described accurately (GNU, not BSD; it ignores --output-sync, so parallel output interleaves) in development.md and AGENTS.md, and AGENTS.md's tests/e2e/fixtures/ line no longer claims DDL scripts.
  • make tools documents the git config --unset core.hooksPath opt-out.
  • The project tree omitted deployments/nats/.
  • CONTRIBUTING.md's doc-sync list is replaced by a pointer to AGENTS.md §Documentation Sync, which also covers CHANGELOG.md and the build/test-process rows.

Test plan

  • make ci green locally.
  • make lint-md passes; make build-docs exits 0 (22 pages built).
  • Targets needing pnpm checked with make -n <target> for install --frozen-lockfile over every make help target; tool list compared against the tool (...) block in go.mod; internal/ and deployments/ listings compared against the tree.
  • Pre-push review: code ship_it; docs review: MUST fixed, ship_it.

Remaining findings: none.

Related Issues

Closes #444
Part of #740
Stacked on #757 (base build/pin-gotoolchain)

Contains the final heads of its parent stack and today's main; no rebase is needed when the parents merge.

🤖 Generated with Claude Code

EricAndrechek and others added 30 commits October 6, 2026 20:15
The repo's Actions cache sat at the 10 GB cap and evicted continuously.
Entries are readable only from the saving ref and main, so each PR's own
Go caches were dead weight that displaced main's warm ones. Go modules,
Go build objects, the pnpm store and Playwright now save on main pushes
and restore-only elsewhere; main restores gomod without restore-keys so
superseded modules don't accumulate. housekeeping gains a cache-cleanup
job on PR close that deletes the PR refs' caches.

Refs #535

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…failed

GOTOOLCHAIN=auto means max(local, go.mod), so a newer local Go (or runner
image) builds and lints on a different toolchain than CI, and golangci-lint,
built with go.mod's Go, panics on it. The Makefile now exports GOTOOLCHAIN
derived from go.mod's go directive, and setup-env exports the same value for
CI steps that run Go outside make. The setup-env comment that described auto
as resolving go.mod exactly is corrected, and development.md records that
bumping the go directive needs a golangci-lint built with at least that Go.

pnpm-install ran with --reporter=silent, which prints nothing at all on
failure, so a supply-chain policy violation surfaced as a bare Error 1. It now
captures pnpm's default output and replays it only when the install fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pnpm prerequisite row omitted make verify, lint, fmt, fix, ci and
test-all, all of which install pnpm deps (verify is what the pre-commit
hook runs). The Go tool row missed two of nine pinned tools, the verify
row advertised a manual -j, and the project tree skipped deployments/nats.
CONTRIBUTING's doc-sync list also lacked the CHANGELOG row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Address pre-review: the PR-scoped churn came from PRs whose key missed main's, not every PR; two live generations are about 7.8 GiB so this refs #535. Cleanup gets its own concurrency group and tolerates a failed delete; pnpm prune runs on main only; docs and comments follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ten tests in tests/integration bring up servers or containers of their
own (a ClickHouse, a NATS server, a Redis, processes on random ports) and
spend most of their time waiting on leases, handovers and restarts. Run
serially they made up most of the package's 337s on a 4-core machine.
Marked t.Parallel, they overlap each other and the multi-process roles
test, which already ran in parallel.

Each was checked for shared state first: per-test tables and databases on
the shared ClickHouse, no t.Setenv, no captured default logger, no fixed
ports. TestShardClaims_ScaleOneThreeTwo and the tests that share the
wired app stay sequential.

Refs #701

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Stop pnpm's node_modules purge prompt from hanging the captured install, document the GOTOOLCHAIN override and the golangci-lint minor-version coupling, and update the CI comments that still described GOTOOLCHAIN=auto.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pre-push review gate could attest to code no reviewer read.

review-marker.sh keyed the marker to whatever HEAD the session's launch
directory had when the reviewer stopped, so a commit made while a
reviewer ran inherited its ship_it, and a review of a sibling worktree
marked the launch directory's branch instead. Reviewers now end with
`REVIEWED: <sha>` naming the commit they pinned before reading anything.
The hook writes the marker into each worktree on that commit, and only
when that worktree's HEAD reflog shows it on the commit from the start
of the review (the subagent transcript's first timestamp) until now.
Same-commit entries such as `git reset` or `git stash` don't count as
moves. A report delivered through the subagent hand-back leaves only
closing text in last_assistant_message, so the hook reads the
hand-back's message from the transcript. Every decision goes to stderr
and to tmp/review-marker.log, which the push gate prints when it blocks.

agent-bash-gate.sh checked HEAD of the session's launch directory for
every push. It now follows the push to where it runs (the tool call's
cwd, a preceding cd/pushd, git -C), resolves each refspec source to the
commit it publishes, and looks for that commit's markers in every
worktree of the repository. It blocks when it can't tell: a computed
directory or refspec, GIT_DIR, --all/--mirror, a glob refspec, a wrapped
push, or a payload without cwd. A push into another repository with no
reviewer manifest is outside the policy. Pushes through `git -C` and
from a detached HEAD were not gated at all before.

skip-pre-push-review.sh writes to the worktree root when run from a
subdirectory. .claude/hooks/review-gate.test.sh drives both hooks with
synthetic events in a scratch repository with sibling worktrees; it is a
make verify leaf (test-review-gate). Because the pre-commit hook runs it
with GIT_DIR exported, it clears git's repository variables, names every
repository with -C, and refuses to write unless git sees the scratch
directory as outside any repository and creates each scratch repository
where asked. /prepush, the reviewer agents, AGENTS.md and the Claude Code
docs page describe the REVIEWED line and the rule not to move HEAD while
reviewers run.

Closes #454
Closes #565
Closes #659

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Integration job had grown to about 8 minutes and was CI's critical
path. make test-integration now runs two parts, test-integration-app
(tests/integration, with -parallel 8 since its parallel tests mostly
wait) and test-integration-backends (internal/cache, natsspike and
internal/mq's tagged tests), at once. CI runs one matrix job per part:
the changes job reads INTEGRATION_PARTS from the Makefile
(scripts/ci/integration-parts.sh) and hands the coverage job the
fragments and producer jobs to wait for, so a part added to the Makefile
gets its own job, and CI and a local run execute the same commands. Each
part keeps its own build-cache suffix, so no part saves a cache holding
only its own test binaries.

internal/mq's integration tests were chosen by a -run name pattern, so a
new prefix would have been skipped silently. scripts/ci/tagged-tests.sh
run selects the tests that only build with the integration tag, and
tagged-tests.sh check, run before every part, fails while a package with
tagged tests belongs to no part. tagged-tests.test.sh checks the
selection against go test -list on a throwaway module (a verify leaf).

natsspike stays in the suite: it pins the nats-server behavior the
external NATS topology rests on, and it runs beside internal/cache.

Closes #701
Closes #692

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
make fmt only checks; make fix applies. The pnpm row now leads with make tools and covers dev-ts, check-docs and build-all, the hooks opt-out is documented, and AGENTS.md/CONTRIBUTING.md summaries match the Makefile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Make 3.81 ignores a makefile-set --output-sync, it only interleaves output. The hooks opt-out is clone-wide and undone by the next make tools. make verify, not make fmt, is what CI runs. CONTRIBUTING's doc-sync list now points at AGENTS.md instead of duplicating it, and stale tree comments are fixed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Move the close-time cleanup into its own workflow (no always-skipped check, no concurrency trick), make it fail when a delete fails, and correct what a PR still saves (CodeQL, golangci, Astro). Docs: measurements move to the sizing section, units and stale sizes refreshed, prune comment no longer overclaims, AGENTS.md and the dev guide describe the new policy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The cheap filter in agent-bash-gate.sh strips quotes one line at a
time, so a heredoc body, a multi-line quoted string or a comment that
mentions `git push` reached the tokenizer, which correctly found no
push, and the gate then refused the command as one it couldn't follow.
It now refuses only when the tokens hold a `git … push` the walk didn't
gate: behind an unknown wrapper, or inside a command substitution.

The gate runs before the command line does, so in `git commit … && git
push` it judged the commit before the new one. A push that follows a
HEAD-moving git command (commit, merge, rebase, reset, checkout, switch,
cherry-pick, revert, am, pull) on the same line is now blocked with
"push in a separate command". Pushes inside if/while/until/for … do are
followed instead of refused, and the matching refspec `:` (or `+:`) is
blocked like --all instead of being read as a delete.

review-marker.sh uses the hand-back message whenever the final message
lacks either the VERDICT or the REVIEWED line, retries the transcript
read once, and resolves an abbreviated REVIEWED sha that names exactly
one commit. A ship_it without a REVIEWED line, which is what a session
started before this change produces because reviewer definitions load
at session start, logs how to recover, and the gate's block message
says the same and now shows the latest decisions from every worktree's
log.

pre-push-reviewer pins its commit in step 1 with `git -C <path>
rev-parse HEAD`. The docs say the gate checks the commit each refspec
publishes (its tip, or HEAD with no refspec), and the remaining copies
that described a VERDICT-only, HEAD-keyed marker now describe REVIEWED
plus VERDICT and the reviewed commit. The test covers each change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… coupling

Prefer go.mod's toolchain line, require x.y.z, document that a new minor needs a matching golangci-lint (it refuses to load its config, not panics), the go bump command, the pnpm prompt, and the Go prerequisite row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review follow-ups to the integration split.

- scripts/ci/integration-parts.sh read only the first INTEGRATION_PARTS
  line, so a later `+=` or a second assignment changed what make runs but
  not CI's matrix or the coverage job's wait list. It now refuses
  anything but a single `INTEGRATION_PARTS := ...` line, and its --check
  mode, run by check-integration-parts before every part, fails when its
  list differs from make's own. integration-parts.test.sh covers the
  shapes it must refuse (a verify leaf).
- scripts/ci/tagged-tests.sh missed tagged examples and tests whose
  signature wraps across lines. It now takes every top-level func named
  Test*, Fuzz* or Example*, and its test compares the selection with
  every entry `go test -list` prints, with an example and a wrapped
  signature among the fixtures.
- Docs: AGENTS.md's CI summary, the ci.yml comments that still called e2e
  the long pole or counted three fragments, development.md's account of
  the parts and of which tests run in parallel, where a package with both
  unit and tagged tests goes, a fresh cache suffix per job in the README's
  add-a-job recipe, estimates flagged in the timing table, and a
  transition note for purging the retired -integration cache entries.

Refs #701
Refs #692

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	Makefile
#	docs/src/content/docs/development.md
# Conflicts:
#	.github/workflows/README.md
# Conflicts:
#	.github/actions/setup-env/action.yml
#	.github/workflows/README.md
#	AGENTS.md
# Conflicts:
#	docs/src/content/docs/development.md
Make 3.81 parses the Makefile and silently ignores --output-sync, so the cost is interleaved parallel output, not a parse failure. AGENTS.md still called it BSD and said it would not parse, and still described the e2e fixtures as DDL scripts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
agent-bash-gate.sh looked for an unfollowed push only when it had
followed none, so a second push on the same line behind a wrapper or in
a command substitution went unchecked once the first was gated. The
walk now records each simple command it gates, and every other one is
checked. GIT_DIR or GIT_WORK_TREE exported, declared or assigned earlier
on the line now makes the push's repository unknown, the same as the
inline form.

The test requires jq up front, and development.md lists jq among the
prerequisites, since make verify now runs it. pr-review-locally names
the PR worktree's path in its reviewer prompts, because reviewers pin
the worktree their prompt names, else their current directory. The
reviewer agents say an unresolvable REVIEWED sha means no marker, and
the remaining "marker for HEAD" phrasings say "for the commit being
pushed".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A PR saves its own CodeQL dependency cache whenever main has no entry for the key, including after main's entry was evicted; the docs now say so with dated figures. Also restores the base wording of the housekeeping sentence in AGENTS.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Makefile and setup-env each derived the pin and had already drifted. scripts/ci/go-toolchain.sh now owns the derivation and the x.y.z check, with a fixture test as a verify leaf; the Makefile passes the pin to its parse-time go list, and development.md's Go version hints match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The missing-suffix error, the input description and the header comment
still allowed reusing another flavor's suffix when the flags match. Two
jobs on one key race to save it, which is why the integration parts each
take their own. Also restores the blank line the merge dropped before
the test-review-gate rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The #535 sentences had landed between the two-generation budget and the
sentence it explains, so "cached once" read as a consequence of PRs no
longer saving. Move them to the end of the paragraph, and give the
CodeQL row one date and an order for "on main" and "gone".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The parse-time go list used the derived pin directly, so
`make GOTOOLCHAIN=local` still downloaded go.mod's toolchain for it.
$(GOTOOLCHAIN) equals the pin unless overridden on the command line, and
passing it explicitly still covers Make before 4.4, whose $(shell)
doesn't see exported variables.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	docs/src/content/docs/development.md
Four gaps in the push gate, each now covered by review-gate.test.sh:

- Every check fed the command to `grep -q` through a pipe under
  pipefail. Past a pipe buffer (64 KB), grep's early exit sent SIGPIPE
  to the writer and the pipeline read as no match, so a long
  `gh pr create` without --draft, or a push ahead of a long heredoc
  body, went unchecked. The checks now read here-strings.
- An exported GIT_DIR or GIT_WORK_TREE shared a variable with
  "directory unknown", so a later absolute cd, pushd or git -C cleared
  it. It is tracked on its own now; only unset or the end of a subshell
  clears it.
- A HEAD-moving git command counted only when run directly, so
  `timeout 60 git commit … && git push` or
  `out=$(git commit …) && git push` had the push judged on the commit
  before the move. A wrapped or substituted one counts too.
- A push in code handed to a shell (bash -c, sh -c, eval, a heredoc or
  here-string read by a shell) was never seen, and one in a process
  substitution was dropped as a redirect target. The first now blocks
  as a push the gate can't follow; the second is followed like any
  other push.

The Claude Code docs now say what a gating reviewer must end its report
with for its ship_it to write a marker, matching AGENTS.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Three more gaps in the push gate, each covered by review-gate.test.sh:

- A substitution in a here-string or a redirect target was dropped with
  its word, so `grep -q x <<< "$(git -C ../wt-b push)"` or
  `echo hi > "$(git push …)"` went unchecked, and a commit in one didn't
  count as a HEAD move. The tokenizer now keeps the text of every $(…)
  and `…` wherever its word goes, and the push and HEAD-move checks
  scan all of it. A quoted substitution no longer slips past the cheap
  pre-filter either.
- Inside $(…), a here-string's text was glued to `<<<`, so a push in
  `$(sh <<< 'git push')` didn't read as one.
- Code handed to a shell was scanned without joining backslash-newline
  continuations, so a push split across lines in `bash -c` or a heredoc
  read by bash went through.

AGENTS.md, the Claude Code docs and the changelog now say the gate reads
only the command line, list what it blocks, and name the forms it
doesn't follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The last change scanned the text of every $(…) for a push, but with
its quotes already stripped, so `n=$(grep -c 'git push' AGENTS.md)`,
`git commit -m "$(echo 'explain the git push gate')"` and the like were
refused as pushes the gate can't follow. The tokenizer now marks quoted
text inside a $(…), and each substitution is checked with that text
replaced by a placeholder; only a substitution that hands it to a shell
(`$(bash -c '…')`, `$(sh <<<'…')`, `$(eval '…')`) is checked in full.

Two forms the wider pre-filter now tokenizes failed to parse: a heredoc
inside $(…) closed with `EOF)"` on one line, and an `$'…'` string
holding `\'`. Both parse now; an apostrophe in a comment inside $(…)
still doesn't, and the docs say such a line is refused.

The test for the here-string spacing inside $(…) now uses `<<<'…'`
with no space, so it fails without that fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two code paths from the last change had no test: stripping the quote
markers from a word's value, and reading an $'…' string inside $(…).
Each now has cases that fail when it is removed: a substitution's output
handed to eval or bash -c, and an $'…' string in a $(…), pushed or not.

The marker strip also runs in one pass with tr. Under bash 3.2,
${_w//…} took 47 s on a 200 KB substitution holding 200 quoted strings,
past the hook's time limit; it now takes about a second.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
EricAndrechek and others added 5 commits October 7, 2026 13:39
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…lchain versions

go-toolchain.sh matched directives only at column 0, so a go.mod with an indented go line yielded no pin, and its validation checked a prefix, so go1.26.6-custom passed. Allow leading whitespace and anchor the version at the end. Docs and changelog now say the pin is the toolchain line, else the go line.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@EricAndrechek
EricAndrechek changed the base branch from build/pin-gotoolchain to ci/go-cache-main-only October 7, 2026 22:26
@EricAndrechek

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@EricAndrechek

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@EricAndrechek

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@EricAndrechek

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔇 Additional comments (5)
docs/src/content/docs/development.md (1)

17-17: LGTM!

Also applies to: 21-21, 29-29, 45-45, 483-484, 490-490, 496-496, 504-504, 534-534

AGENTS.md (1)

99-100: LGTM!

Also applies to: 123-123, 456-456

CONTRIBUTING.md (1)

44-44: LGTM!

Also applies to: 88-88

docs/src/content/docs/claude-code.md (1)

39-39: LGTM!

CHANGELOG.md-119-119 (1)

119-119: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

⚠️ Unverified finding
Verification ran but could not confirm this finding. It is shown for review, not as a verified issue.

Split the changelog entry into shorter sentences.

The added sentence exceeds 40 words and joins several updates with semicolons. Split it into shorter sentences so readers can scan the entry.

Source: Linters/SAST tools


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 91381d20-059c-42d5-8521-039cb77479dd
📥 Commits

Reviewing files that changed from the base of the PR and between 26f736b and e640adc.

📒 Files selected for processing (5)
  • AGENTS.md
  • CHANGELOG.md
  • CONTRIBUTING.md
  • docs/src/content/docs/claude-code.md
  • docs/src/content/docs/development.md

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Review details
🧰 Additional context used
📚 Code guidelines (5)
docs/src/content/docs/claude-code.md — auto-discovered
CONTRIBUTING.md — auto-discovered
.github/copilot-instructions.md — auto-discovered
AGENTS.md — auto-discovered
docs/src/content/docs/development.md — auto-discovered
📓 Path-based instructions (6)
Source excerpt: To add a command: drop a `.md` file in `.claude/commands/`.

📄 CodeRabbit inference engine (docs/src/content/docs/claude-code.md)

Files:

  • docs/src/content/docs/claude-code.md
Source excerpt: Use [Conventional Commits](https://www.conventionalcommits.org/):

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Files:

  • CONTRIBUTING.md
See [AGENTS.md](../AGENTS.md) for project conventions, architecture notes, and AI agent instructions.

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Files:

  • AGENTS.md
Source excerpt: **WH001 applies to every tracked Markdown file, with no carve-out** — `AGENTS.md`, `CHANGELOG.md`, `.github/` CI docs and `.claude/` agent prompts included.

📄 CodeRabbit inference engine (AGENTS.md)

Files:

  • docs/src/content/docs/claude-code.md
  • CHANGELOG.md
  • CONTRIBUTING.md
  • AGENTS.md
  • docs/src/content/docs/development.md
Source excerpt: **Docs prose**: never hard-wrap Markdown — one paragraph is one line.

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Files:

  • docs/src/content/docs/claude-code.md
  • CHANGELOG.md
  • CONTRIBUTING.md
  • AGENTS.md
  • docs/src/content/docs/development.md
Source excerpt: Run `make fix` to apply them.

📄 CodeRabbit inference engine (docs/src/content/docs/development.md)

Files:

  • docs/src/content/docs/claude-code.md
  • CHANGELOG.md
  • CONTRIBUTING.md
  • AGENTS.md
  • docs/src/content/docs/development.md
🪛 LanguageTool
CHANGELOG.md

[style] ~119-~119: This sentence is over 40 words long. Consider splitting it up, as shorter sentences make the text easier to read.
Context: ...ered with another pick, up to five. - The development guide's pnpm prerequisite list, Go tool list and project tree match the repo again (docs/src/content/docs/{development,claude-code}.md, CONTRIBUTING.md, AGENTS.md): the pnpm row now names make verify, make lint, make fmt, make fix, make ci and make test-all (every one of them installs pnpm deps, and make verify is what the pre-commit hook runs), the Go row lists all nine pinned tool deps, the make verify row no longer advertises make -j verify (a bare make verify parallelizes itself), the tree gains deployments/nats/, make fmt is described as a check (make fix applies), make verify/make fix summaries and the hooks opt-out are spelled out, the Make 3.81 note and stale tree comments are corrected, and CONTRIBUTING's doc-sync list now points at AGENTS.md §Documentation Sync; closes #444. - **A settings directory holding only...

(TOO_LONG_SENTENCE)

docs/src/content/docs/development.md

[style] ~17-~17: This sentence is over 40 words long. Consider splitting it up, as shorter sentences make the text easier to read.
Context: ...fix make)/libexec/gnubinon your PATH. Linux: usually already installed | | **bash** | 4+ recommended | Recipes are pinned tobash; the helper scripts under scripts/useset -euo pipefailand bash arrays | macOS default is bash 3.2 (works for current recipes, butbrew install bash is safer); Linux distros ship 4+ | | **Docker** *(or Podman)* | Engine 20.10+ with the Compose **v2** plugin (docker compose, no hyphen) | Compose stacks under deployments/compose/; the E2E and integration suites boot ClickHouse and a Redis via testcontainers (no compose file), the integration suite also dynamodb-local, and the integration suite also runs the shared cache backend against Redis, Valkey, Dragonfly (pulled from docker.dragonflydb.io) and a one-node Redis Cluster | [Docker Desktop](https://docs.docker.com/get-docker/), [colima](https://github.com/abiosoft/colima), or [Podman](https://podman.io) with podman-compose/ thepodman compose` plugin. The testcontainers Go library also hono...

(TOO_LONG_SENTENCE)


[style] ~20-~20: This sentence is over 40 words long. Consider splitting it up, as shorter sentences make the text easier to read.
Context: ...Runtime for pnpm and the Vitest suites. Pinned to match CI (setup-node uses 22) and to avoid Node-major surprises; older Vitest versions in this repo were known to crash on Node 26 with a V8 heap-allocation abort | nodejs.org or nvm use / fnm use / volta (all read .nvmrc) | | pnpm | 11.21+ (pinned via packageManager in the root package.json) | Package manager for the TypeScript SDK, E2E test harness, and docs site (managed as a single pnpm workspace from the repo root); make tools, make verify, make lint, make fmt, make fix, make ci, make build-ts, make dev-ts, make test-ts, make test-e2e, make test-all, make check-docs, make build-docs, make build-all, make dev-docs, make preview-docs all shell out to pnpm (make tools itself runs pnpm install, and make verify is what the pre-commit hook runs, so a Go-only contributor needs pnpm too) | corepack enable && corepack prepare pnpm@11.21.0 --activate (recommended), or npm i -g pnpm | | git + curl + jq | any recent | git for source + version metadata in builds; curl is used by the Makefile to fetch the pinned golangci-lint and shellcheck binaries into .bin/ and, for make build-ts, the oldest Node that engines.node admits; jq is needed by make verify (the review-gate hook tests) and by the Claude Code hooks | usually preinstalled (jq ships with macOS 15+); otherwise apt install jq / brew install jq | ### Auto-installed by make tools ...

(TOO_LONG_SENTENCE)

@EricAndrechek
EricAndrechek marked this pull request as ready for review October 8, 2026 00:00
coderabbitai[bot]
coderabbitai Bot previously approved these changes Oct 8, 2026
Base automatically changed from ci/go-cache-main-only to main October 8, 2026 19:37
@EricAndrechek
EricAndrechek dismissed coderabbitai[bot]’s stale review October 8, 2026 19:37

The base branch was changed.

@EricAndrechek
EricAndrechek requested review from a team and taitelee October 8, 2026 19:37
@github-actions github-actions Bot added github_actions Pull requests that update GitHub Actions code area/infra CI, build, deploy, Docker, release labels Oct 8, 2026
@github-actions github-actions Bot removed github_actions Pull requests that update GitHub Actions code area/infra CI, build, deploy, Docker, release labels Oct 8, 2026
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown

📚 Docs preview is live → https://c10b1c3a-wavehouse-docs.wave-rf.workers.dev

@EricAndrechek
EricAndrechek merged commit 423f117 into main Oct 8, 2026
@EricAndrechek
EricAndrechek deleted the docs/dev-guide-drift branch October 8, 2026 19:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/docs Documentation, site/, README documentation Improvements or additions to documentation

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

docs: development.md drifted from Makefile; make verify needs pnpm

1 participant