Repository navigation
Address review comments on the Checks and Workspaces docs - #4271
Merged
Merged
Conversation
Match chainctl 0.2.388. A session created with chainctl 0.2.383 or later keeps running after you detach while it's busy, and parks after it's been idle for 10 minutes, no later than 24 hours after you last detach. Document what counts as busy, the busy command, --keep park, the new default detach option, and how list shows busy and idle sessions. Document chainctl develop claude login, status, and logout, the owner credential source, and how a session gets fresh Claude access tokens whether or not you're attached. Update the Google Cloud refresh token rules, add troubleshooting for parks and the held login, and raise the minimum chainctl version to 0.2.386. Name the timed detach options wherever a terminal keeps serving after you detach, since "Detach — keep running while busy" doesn't, and fix other accuracy and wording issues found in review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Address the review comments on #4171 and #4172 that arrived after they merged and that main doesn't already cover. Builds on #4269. Checks: add reference sections for chainctl checks failures and attempts, document cancel --force and that closing a pull request doesn't cancel its run, and describe migrate without --dry. Add how commands run, the variables Chainguard Checks sets, Git in a check's VM, HTTPS interception, the trigger rule for needs and from, check files beside ci.yaml, where packages come from, and a Run Docker section. Fix the services input example, document that a check with an identity keeps its base branch when.expr until the pull request merges, and re-derive the revoke timings. Workspaces: document clipboard copy, laptop sleep, what a park drops, the 6-day renewal, session states, the session's guide for agents, Share from laptop, what the .git sync sends, and gobuild caches in develop.yaml. Say that an unattended agent can push to the checkout's other remotes, and that a pushed workflow's GITHUB_TOKEN can act before anyone reviews it. Say that owner or limited_owner can accept terms and turn on both products, and that init picks your only Starter or Team organization whatever your role. Update text that went stale in production: a run can take two hours, a passing check with nothing to report gets no GitHub check of its own, and a root check can use the Go build cache. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
matthewhelmke
approved these changes
Oct 21, 2026
tylerpaxton
marked this pull request as ready for review
October 21, 2026 15:25
tylerpaxton
added a commit
that referenced
this pull request
Oct 21, 2026
## What This updates the Chainguard Checks pages for two changes to `chainctl checks` and the Checks platform, and for one limit that remains: - `chainctl checks list` lists your organization's pull request runs and runs after merging, not just the runs you started with `chainctl checks run`. - The commands that read runs find a run by a directory or a commit SHA. - During the beta, you still can't rerun checks after merging, either with **Re-run** on GitHub or with `chainctl checks rerun`. The pages now say what you see when you try. ## Why The pages still said "these never find your repositories' runs" and that `chainctl checks list` shows only your own runs. Readers who followed them would skip commands that work. The pages also didn't say that **Re-run** on a postsubmit check leaves it queued, so readers would wait for a run that never starts. ## Stacked on #4271 This branch is stacked on #4271. Merge it after #4271 merges. ## Changes by page - **chainctl checks command reference** - Name a run: adds the directory and commit SHA forms of `REF`, and explains run ID prefixes, including the `post-` prefix of runs after merging. Says that a pull request run or a run after merging from October 16, 2026, or earlier needs its whole ID, which only the commands that read runs accept. Explains which commit to pass to find a pull request's runs. - `chainctl checks list`: describes the runs it lists, the `--ref` and `--trigger` flags, the output columns, and the JSON fields. Notes that `COMMIT` is a short SHA, and that runs started with `chainctl checks run` have `-` under `REF` and `PR`. - `chainctl checks rerun`: `REF` can now be a directory, a commit SHA, or a run ID, as long as it names a pull request's run. Quotes the error the command prints for a run after merging, and documents `--watch` and the JSON output. - `chainctl checks cancel`: after you cancel a run, says how to run a pull request's checks again, and how to run checks after merging again. - **Use Chainguard Checks on GitHub**: says that **Re-run** on **Chainguard Checks (postsubmit)** shows the check as queued, but no run starts and the check stays queued. Also says that `chainctl checks rerun` fails for runs after merging. - **Inspect and run checks with chainctl**: adds the directory and commit SHA forms, and explains how to find the runs you started in `chainctl checks list`. - **Workload identities and trust**: reads the repository ID from a pull request or from a commit that ran checks after merging, because `.` returns no ID when the commit has no run. The example now passes `--parent`, so `chainctl` doesn't prompt for an organization in the middle of the pipe. - **Troubleshoot Chainguard Checks**: lists when a lookup by commit finds no run, including the earlier commits that a merge commit brings in. Links to the reference instead of repeating it. ## How it was checked - Compared every claim with the `chainctl` 0.2.388 source, whose `checks` code matches 0.2.386, the documented minimum version. Also compared it with the Checks server code deployed today. - Live tests of reruns after merging: - `chainctl checks rerun` on a run after merging failed with `cannot rerun: ... is neither a postsubmit Run nor a pull request's`. - **Re-run** on **Chainguard Checks (postsubmit)** marked the check as queued on GitHub. Five minutes later, no run had started, and the check was still queued. - Ran read-only `chainctl checks list` and `chainctl checks status` commands against a test organization. They confirmed the documented columns and JSON fields, and that pull request runs from October 7 and 8 aren't listed. `status` found a run after merging by its full commit SHA and by a `post-` prefix of its ID, and printed the `Repo ID:` line. - Ran the repository's pre-commit hooks and `markdownlint-cli2` 0.23.3 on the changed files. Both pass. - Confirmed that all internal links and anchors on the changed pages resolve. ## For reviewers - The pages don't say what `TRIGGER` shows for a run started with `chainctl checks run`, because it depends on when the run started. Runs from before a server change deployed on October 20, 2026, show `-`, which a read-only `chainctl checks list` confirmed for runs from October 14 and 15. In the `chainctl` 0.2.388 code, newer runs of this kind show `presubmit`, but `--trigger presubmit` doesn't list them. This wasn't tested live, because no newer run of this kind was available and starting one creates a run in production. - In `chainctl` 0.2.388, `chainctl checks rerun --help` says the command reruns a finished postsubmit run, but the server refuses these runs. The pages document what happens today. If reruns after merging start working, the rerun paragraphs on the reference and GitHub pages need an update. - Runs created before about 17:00 UTC on October 16, 2026, aren't in the newer format. The pages say "October 16, 2026, or earlier" to cover that whole day. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
matthewhelmke
added a commit
that referenced
this pull request
Oct 21, 2026
## What Adds a `[[group]]` to `scripts/checks-examples/examples.toml` for the two YAML blocks in the "Run Docker" section of `variations-services-caches.md`: the service definition, `.chainguard/ci/services/docker/docker.yaml`, and the check that uses it, `.chainguard/ci/docker.yaml`. ## Why #4271 added the section. Its blocks only make sense together: the service file alone has no checks, and the check alone names a service that doesn't exist. `validate.py` tests any block the manifest doesn't mention on its own, so it reported both as failures on `main`. The examples themselves are correct. This lists them as a group, the same way the Postgres service examples are listed. ## How it was checked - On `main`, `python3 scripts/checks-examples/validate.py` reports 34 passed, 2 failed, and 4 skipped. With this change, it reports 36 passed, 0 failed, and 4 skipped, and the group's output shows `docker.yaml` validated with the service beside it. - The script counts "no checks configuration" as a failure, so a passing group means `chainctl checks validate` read both files. Checked with `chainctl` 0.2.388. - `python3 -m unittest discover -s scripts/checks-examples` passes all 27 tests, and the pre-commit hooks pass. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR addresses the review comments on #4171 and #4172 that arrived after they merged, except the ones that main already covers. It builds on #4269 and should merge after it. Until #4269 merges, this PR's diff also includes #4269's commit, so review only the last commit on the branch.
Some comments got different wording from what they suggested, because the code changed after the review or works differently than described. Those cases are listed under Not changed.
Changes
Chainguard Checks
chainctl-checks-reference.md:chainctl checks failuresandchainctl checks attemptssections and table rows, and a pointer fromlogs --attempttoattempts.chainctl checks cancelsection:--forcefor runs that GitHub started, who can cancel a run, how to cancel a pull request's run, and what GitHub shows afterward. It replaces the line that said you can't cancel pull request runs.migratetakes an optional--dry, and the section says what running without it does: up to six test runs, which need a role and use the Checks allowance.accept-termssaysownerorlimited_owner, thelimited_ownerparagraph also coversmigratewithout--dry, and the--workflowrows fit both layouts.{#id}on every heading.configuration.md:ci.yaml, and the file table has a row for other.yamlfiles in.chainguard/.requested_checks_agentgoes only inci.yamlorci/env/default.yaml, anddeps.yamljoins thedevelop.yamlrow.needsandfromacross triggers, with an example and a{#triggers}anchor.github.md:chainctl checks cancel --forcestops it.<file>is the defining file's name in either layout.chainctlshows Re-run requested by IDENTITY_ID via chainctl.identity-and-trust.md:when.exprconditions until the pull request merges. This is a new row in "Which runs get an identity," and the paragraph on what a condition protects is rewritten.2for an identity that the default branch doesn't define applies only when the default branch has atrustsection.identities.yamlchange and about 18 minutes after atrustchange. A new paragraph says what happens to the check.variations-services-caches.md: a new "Run Docker" section, awithexample that also setsPGPORTfor the check, the trigger rule forfrom, and arootcheck that can use the Go build cache.troubleshooting.md: a new "A check fails with a certificate error" section, a trigger row that quotesdoes not support trigger,ownerorlimited_ownerin the terms row, a cache row that allowsrootwithgobuild, and "A check stops after two hours" in place of the 50-minute section.overview.md: HTTPS interception, which checks get their own GitHub check, and the two-hour limit.getting-started.md: which checks get their own GitHub check, and why to require only the summary check.migrate-from-github-actions.md: a Background processes row, the two-hour limit, a Go cache row forrootchecks, and a link from the services row to "Run Docker."run-checks.md: forthe guest is held by another controller, attach and runrun-ci, or run the command again after the session parks. A session runs on arm64 only if its resource class pins arm64.Chainguard Workspaces
coding-agents.md:chainctldoesn't copy them.github-as-you.md: a workflow that the session pushes gets aGITHUB_TOKENthat can do what the session can't do directly. "Protect your branches" adds a push ruleset on.github/workflows/**/*and turning off GitHub Actions approvals.manage-sessions.md:--keephold starts when you attach.overview.md: what the.gitsync sends, how it treats symbolic links and special files, where packages come from, and a pointer to clipboard copy.session-environment.md:develop.yamlcan name agobuildcache but notservices, andfromnames only a check file or an environment file.--check.--checksession takes its size from, and arm64 only from a resource class that pins it.chainctl-develop-reference.md: a new "Session states" table that maps each JSONstatevalue to theSTATEcolumn.troubleshooting.md: a new "Returning to a session takes several minutes" section, and themissing: terms.acceptbullet no longer says "only."Get started
set-up.md: accepting terms and--parenttakeownerorlimited_owner.initpicks your only Starter or Team organization whatever your role, then stops withmissing: terms.accept. A new prerequisite covers people who already belong to an organization.how-it-works.md: the 6-day renewal waits while you're attached, which checks get their own GitHub check, HTTPS interception, and the glossary entry for a check.For the reviewer
#a-check-stops-after-two-hours, its one inbound link is updated, and the error row quotes the current message,workflow run exceeded its execution deadline.rootcan use the Go build cache withoutuser: build.coding-agents.mdgoes beyond its comment. The old text said a session never takes your laptop's skills orCLAUDE.md, which is no longer true. Drop the section if you'd rather document the feature separately.{#id}matches the slug Hugo already generates, so no inbound link changes except the renamed two-hour heading.keytoolcommand from the VM's certificate setup, but neither has been run as written in a customer's check. Thatgit commitfails without a Git identity follows from Git's behavior, and wasn't tried in a check's VM.Not changed
viewerrole forsandbox.userteammates (Add Chainguard Workspaces docs #4171, Add Chainguard Checks docs #4172): Drop the viewer step for sandbox.user teammates #4265 already removed it.chainctl checks failuresparagraph ininspect-and-run-checks.md(Add Chainguard Checks docs #4172): Add a CLAUDE.md snippet for Workspaces sessions #4203 already added it, so this PR adds only the reference sections.chainctl develop claude login(Add Chainguard Workspaces docs #4171): Document busy keep-running and the Claude login Chainguard holds #4269 documents it.coding-agents.mdcopy of theheld by another controlleradvice (Add Chainguard Workspaces docs #4171, Add Chainguard Checks docs #4172): Make run-checks.md the one home for run-ci #4259 removed it, so the fix is only inrun-checks.md.chainctlremembers the first attach per laptop, not per session, so the page is right.Rkey (Add Chainguard Workspaces docs #4171): a terminal closes when its command exits, as the page says, soRhas nothing to restart.environment.archis still refused, so arm64 comes only from the resource class.github-actions[bot]reviews (Add Chainguard Workspaces docs #4171): GitHub has no such setting, and turning off GitHub Actions approvals already stops them.migrateflags--ref,--max-proves, and--parity(Add Chainguard Checks docs #4172): they apply only without--dry, which the page advises against during the beta.failuresas the next step afterrun-ci(Add Chainguard Checks docs #4172):run-cicreates no run forfailuresto read.SHELLin the variables table (Add Chainguard Checks docs #4172): checks don't get it, because it's set only for an interactive terminal.CHAINGUARD_andCG_prefixes (Add Chainguard Checks docs #4172): nothing enforces a reservation, so the page advises against the prefixes instead.when.exprrule (Add Chainguard Checks docs #4172): checks get no GitHub token during the beta.guardener.adminin role lists: it also holdsterms.accept, but role lists name onlyownerandlimited_owner.Found but not fixed here
chainctl checks listsection says it lists only runs started withchainctl checks run, and several pages say you can't rerun runs after merging.chainctl0.2.388 lists every run, and Chainguard Checks reruns the newest finished postsubmit run. The fix touchesgithub.md,troubleshooting.md, andinspect-and-run-checks.md, and needs a check of whether Re-run on GitHub works for a postsubmit run.set-up.mdsays a personal email address can't create a Chainguard organization. Production has allowed it since October 10.variations-services-caches.mdsays onlygobuildstores data and thatgobuild: {}takes no settings. Thegomodcache and thekeyandsizesettings are deployed.identity-and-trust.mddoesn't cover AWS workload identities, which are deployed..chainguard/ci/resources/<name>.yamlfiles are deployed but not documented.How this was checked
v0.2.388tag forchainctlcommands, flags, and output, and at the commit deployed to production on October 20 for server behavior, limits, and production settings. On the releasedchainctl0.2.388, only--helpwas run.github-as-you.mdwere checked against GitHub's documentation.pre-commitandmarkdownlint-cli20.23.3 pass, and all 537 internal links and anchors on the Checks, Workspaces, and get-started pages resolve.🤖 Generated with Claude Code