GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — ci: make doc-check reviews smaller and start a new chat per run by bpmct · Pull Request #32061 · coder/coder

Conversation

@bpmct

@bpmct bpmct commented Nov 11, 2026

Copy link
Copy Markdown
Member

doc-check reviews are too big and too slow for the local model, and the job result does not match the review result.

From 2026-11-04 to 11-11 (week report):

  • 613 review turns. The median completed turn took 67 minutes, and a turn with findings took 247 minutes.
  • 489 of 500 failed jobs were the 40-minute wait timing out while the chat still ran. 158 turns ended with no trace.
  • A review starts 1 orchestrator, up to 7 persona chats, and 1 verifier per group of findings. The personas load 113.7k tokens of docs/.style pages, but the pages are only 42.4k tokens without repeats.
  • One chat is reused for every push, so it keeps growing. A PR got 2.3 turns on average, and one got 18.
  • Of 27 PRs with posted findings, 17 were right, 3 mixed, 3 debatable, and 4 wrong. Style nits such as contractions, "often", and a bare "this" were marked blocking, and nobody used them (docs: document EWS03 and EIF01 health codes and guard against undocumented codes #31808). Sibling PRs got different verdicts for the same thing (feat(cli): log database migration progress on server startup #31790 blocking, feat: report database migration outcome #31849 clean).

Changes

Skill (.claude/skills/doc-check/):

  • The 7 personas run in 3 groups: facts (accuracy, coverage), reader (learner, audience, structure), and language (consistency, language). A group loads each rule page once. The persona files keep all their rules.
  • A change with fewer than 150 docs-relevant changed lines runs the groups inline, with no sub-agents.
  • One verifier for 5 or fewer findings. More than that: two verifiers, never more.
  • A style finding that does not change the meaning is a suggestion, never blocking. Blocking stays for wrong facts, missing docs for a new user-facing surface, broken markup, links, and anchors, and failing docs lint. Vale never fails, so a Vale alert is a style finding.
  • A PR in a stack or backport family reads the doc-check comment its siblings got. It keeps the same verdict for the same surface, or says why it differs.
  • The trace gets mode, docs_relevant_lines, groups_run, verifiers, subagents_started, and siblings. The other fields are the same, so old and new runs can be compared.

Workflow (.github/workflows/doc-check.yaml):

  • Each run starts a new chat (force-new-chat) in the PR's existing review workspace (workspace-id). The prompt carries the trace from the previous chat on the PR, so a re-run does not repeat itself.
  • The wait is 5 hours and the job limit is 330 minutes. A chat still running at the end of the wait now ends the job green with a notice and a link to the chat. Other chat errors still fail the job.

Why wait and not end the job when the chat starts: the job has to outlive the chat to stop the workspace when the review ends, and the per-PR concurrency group only keeps two reviews out of one workspace while the job is running. Ending the job early would lose both. The cost is a GitHub-hosted runner that polls for as long as the review takes.

Not tested on live traffic

I checked this with actionlint, zizmor, markdownlint, and a local run of the prompt step with a fake Coder API. It has not run against dogfood. To evaluate it, re-run doc-check on the same 27 PRs from the week report and compare: chats started, time to verdict, job result, and how many of the 17/3/3/4 verdicts change. Also check #31790 and #31849 together, and #31808 for style findings that block.

Overlaps: #31720 changes the same workflow to cancel the run in progress and stop the review chat. #31649 (draft) goes the other way in the skill, with more, narrower sub-agents. Only one of them should merge as is.

Decision log
  • Groups, not new persona files. The persona files stay as they are, so review-personas front matter in docs/.style and the IDs in docs/.style/README.md keep working. Only the Load line and the class rules changed. Rule pages per full review: 113.7k tokens before, 74.6k across the 3 groups, and 42.4k inline.
  • Rule lookup reads front matter only. The old grep -r also matched the example block in docs/.style/README.md.
  • Threshold. Docs-relevant lines are added plus deleted lines, without the no-docs path classes (tests, generated files, lockfiles). The skill has the gh --jq command. 150 is a guess to tune with the evaluation above.
  • The verifier is still a sub-agent in inline mode when findings survive, so the verdict comes from a context that did not write the findings. A clean inline run starts no sub-agents.
  • Consistency findings. A contradiction stays rule. Two terms for one concept is rule only when a reader could take them for two things (the feat(cli): log database migration progress on server startup #31790 case). A UI label that does not match the product is wrong.
  • Posting. A clean run that differs from a sibling's posted verdict posts a summary with only a Sibling PRs section. Every other clean run still posts nothing.
  • Workspace name. The prompt now names doc-check-pr-<number> for a new workspace, so the next run finds it and passes its ID.
  • Risk. A review longer than 5 hours lets the next queued run start a second chat in the same workspace. ci(.github): stop each doc-check review when its run ends #31720's stop script handles that case.

Generated by Coder Agents on behalf of @bpmct.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bpmct
ci: make doc-check reviews smaller and start a new chat per run
305671a
The skill runs its seven personas in three groups (facts, reader,
language). Each group loads each docs/.style rule page once. A change
under 150 docs-relevant lines runs the groups inline with no
sub-agents. Verification uses one verifier for 5 or fewer findings and
never more than two.

A style finding that leaves the meaning unchanged is a suggestion and
never blocks. A PR in a stack or backport family checks the doc-check
verdict its siblings got and keeps it for the same surface, or says why
it differs.

The workflow starts a new chat for each run in the PR's review
workspace, and passes the previous run's trace in the prompt. It waits
up to 5 hours, and a review that is still running at that point no
longer fails the job.
@bpmct
bpmct temporarily deployed to main November 11, 2026 19:55 — with GitHub Actions Inactive
@bpmct
bpmct temporarily deployed to main November 11, 2026 19:55 — with GitHub Actions Inactive
@github-actions github-actions Bot assigned bpmct Nov 11, 2026

This branch was previously deployed

1 inactive deployment
main — 305671a1 Deployed Nov 11, 2026 by bpmct via community-label #254485
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@nickvigilante nickvigilante Awaiting requested review from nickvigilante nickvigilante will be requested when the pull request is marked ready for review nickvigilante is a code owner
@jdomeracki-coder jdomeracki-coder Awaiting requested review from jdomeracki-coder jdomeracki-coder will be requested when the pull request is marked ready for review jdomeracki-coder is a code owner

At least 1 approving review is required to merge this pull request.

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@bpmct bpmct

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@bpmct
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.