···34343535For advice on how to create a good reproducer, please see:
36363737-https://github.com/cuelang/cue/wiki/Creating-test-or-performance-reproducers
3737+https://github.com/cue-lang/cue/wiki/Creating-test-or-performance-reproducers
3838-->
39394040
···5959 commit_author:
6060 name: cue-bot
6161 email: noreply@cuelang.org
6262- homepage: "https://github.com/cuelang/cue"
6262+ homepage: "https://cuelang.org"
6363 description: "CUE is an open source data constraint language which aims to simplify tasks involving defining and using data."
6464 test: |
6565 system "#{bin}/cue version"
+4-3
CONTRIBUTING.md
···2020## Code reviews
21212222All submissions, including submissions by project members, require review. We
2323-use Gerrit code reviews at https://cue-review.googlesource.com for this purpose.
2424-Please read the [Contributing Guide](./doc/contribute.md)
2525-before reading patches.
2323+use [Gerrit code
2424+reviews](https://review.gerrithub.io/q/project:cue-lang%252Fcue) for this
2525+purpose. Please read the [Contributing Guide](./doc/contribute.md) before
2626+reading patches.
26272728## Code of Conduct
2829
+7-6
README.md
···1414 limitations under the License.
1515-->
1616[](https://pkg.go.dev/cuelang.org/go)
1717-[](https://github.com/cuelang/cue/actions)
1818-[](https://golangci.com/r/github.com/cuelang/cue)
1717+[](https://github.com/cue-lang/cue/actions)
1818+[](https://golangci.com/r/github.com/cue-lang/cue)
1919[](https://golang.org/dl/)
2020[]()
2121···95959696#### Release builds
97979898-[Download](https://github.com/cuelang/cue/releases) the latest release from GitHub.
9898+[Download](https://github.com/cue-lang/cue/releases) the latest release from GitHub.
9999100100#### Install using Homebrew
101101···146146147147### Contributing
148148149149-Our canonical Git repository is located at https://cue.googlesource.com.
149149+Our canonical Git repository is located at
150150+https://review.gerrithub.io/q/project:cue-lang%252Fcue.
150151151152To contribute, please read the [Contribution Guide](./doc/contribute.md).
152153153154To report issues or make a feature request, use the
154154-[issue tracker](https://github.com/cuelang/cue/issues).
155155+[issue tracker](https://github.com/cue-lang/cue/issues).
155156156157Changes can be contributed using Gerrit or Github pull requests.
157158···160161161162You can get in touch with the cuelang community in the following ways:
162163163163-- Ask questions via [GitHub Discussions](https://github.com/cuelang/cue/discussions)
164164+- Ask questions via [GitHub Discussions](https://github.com/cue-lang/cue/discussions)
164165- Chat with us on our
165166 [Slack workspace](https://join.slack.com/t/cuelang/shared_invite/enQtNzQwODc3NzYzNTA0LTAxNWQwZGU2YWFiOWFiOWQ4MjVjNGQ2ZTNlMmIxODc4MDVjMDg5YmIyOTMyMjQ2MTkzMTU5ZjA1OGE0OGE1NmE).
166167
-74
_scripts/copy.bara.sky
···11-# Copyright 2021 The CUE Authors
22-#
33-# Licensed under the Apache License, Version 2.0 (the "License");
44-# you may not use this file except in compliance with the License.
55-# You may obtain a copy of the License at
66-#
77-# http://www.apache.org/licenses/LICENSE-2.0
88-#
99-# Unless required by applicable law or agreed to in writing, software
1010-# distributed under the License is distributed on an "AS IS" BASIS,
1111-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212-# See the License for the specific language governing permissions and
1313-# limitations under the License.
1414-1515-# The copybara configuration for the cuelang/cue repository
1616-#
1717-# When used in conjunction with the cueckoo/copybara Docker image this
1818-# configuration can be run in two modes:
1919-#
2020-# github
2121-# github-pr N
2222-#
2323-# The first mode mirrors Gerrit to GitHub. The second mode imports PR #N from
2424-# GitHub to Gerrit.
2525-#
2626-# See the CUE-defined copybara workflow defined in internal/ci for an example
2727-# of how to pass in Gerrit and GitHub credentials when running an instance of
2828-# the cueckoo/copybara image.
2929-3030-github_url = "https://github.com/cuelang/cue.git"
3131-gerrit_url = "https://cue-review.googlesource.com/cue"
3232-3333-origin_github_pr = git.github_pr_origin(
3434- baseline_from_branch = True,
3535- use_merge = True,
3636- url = github_url,
3737- )
3838-3939-origin_gerrit = git.origin(
4040- url = gerrit_url,
4141- ref = "master",
4242- )
4343-4444-destination_gerrit = git.gerrit_destination(
4545- url = gerrit_url,
4646- fetch = "master",
4747- push_to_refs_for = "master%hashtag=github-pr",
4848- )
4949-5050-# Mirror from Gerrit -> GitHub
5151-git.mirror(
5252- name = "github",
5353- origin = gerrit_url,
5454- destination = github_url,
5555- refspecs = ["refs/*"],
5656- prune = False,
5757- )
5858-5959-# Import a PR from GitHub to Gerrit
6060-core.workflow(
6161- name = "github-pr",
6262- origin = origin_github_pr,
6363- destination = destination_gerrit,
6464- authoring = authoring.pass_thru("CUE team <no-reply@google.com>"),
6565- transformations = [
6666- metadata.replace_message(
6767- "${GITHUB_PR_TITLE}\n\n" +
6868- "${GITHUB_PR_BODY}\n\n" +
6969- "Closes #${GITHUB_PR_NUMBER}\n" +
7070- "https://github.com/cuelang/cue/pull/${GITHUB_PR_NUMBER}",
7171- ),
7272- ],
7373- mode = "CHANGE_REQUEST",
7474- )
···137137 if k != diff.Identity {
138138 diff.Print(os.Stdout, script)
139139 fmt.Println("Aborting trim, output differs after trimming. This is a bug! Use -i to force trim.")
140140- fmt.Println("You can file a bug here: https://github.com/cuelang/cue/issues/new?assignees=&labels=NeedsInvestigation&template=bug_report.md&title=")
140140+ fmt.Println("You can file a bug here: https://github.com/cue-lang/cue/issues/new?assignees=&labels=NeedsInvestigation&template=bug_report.md&title=")
141141 os.Exit(1)
142142 }
143143 }
···989989%v
990990991991You could file a bug with the above information at:
992992- https://github.com/cuelang/cue/issues/new?assignees=&labels=NeedsInvestigation&template=bug_report.md&title=.
992992+ https://github.com/cue-lang/cue/issues/new?assignees=&labels=NeedsInvestigation&template=bug_report.md&title=.
993993`
994994 cg := &ast.CommentGroup{Doc: true}
995995 msg := fmt.Sprintf(format, name, err, p, v)
+1-1
doc/cmd/cue.md
···66describes the `cue` command's support for various file types.
7788We do plan to provide a web-based version of these various help topics,
99-something that is tracked by [#9](https://github.com/cuelang/cue/issues/9).
99+something that is tracked by [#9](https://cuelang.org/issue/9).
+110-128
doc/contribute.md
···1616The first step is registering as a CUE contributor and configuring your environment.
1717Here is a checklist of the required steps to follow:
18181919-2020-- **Step 0**: Decide on a single Google Account you will be using to contribute to CUE.
2121-Use that account for all the following steps and make sure that `git`
2222-is configured to create commits with that account's e-mail address.
2323-- **Step 1**: [Sign and submit](https://cla.developers.google.com/clas) a
2424-CLA (Contributor License Agreement).
2525-- **Step 2**: Configure authentication credentials for the CUE Git repository.
2626-Visit
2727-[cue.googlesource.com](https://cue.googlesource.com), click
2828-on "Generate Password" (top right), and follow the instructions.
2929-- **Step 3**: Register for Gerrit, the code review tool used by the CUE team,
3030-by [visiting this page](https://cue-review.googlesource.com/login/).
3131-The CLA and the registration need to be done only once for your account.
3232-- **Step 4**: Install `git-codereview` by running: `GO111MODULE=on go get
1919+- **Step 0**: Decide which email address you want to use for contributions.
2020+- **Step 1**: Read and prepare for asserting a Developer Certificate of Origin.
2121+- **Step 2**: Set up a [GerritHub](http://gerrithub.io/) account.
2222+- **Step 3**: Install `git-codereview` by running: `GO111MODULE=on go get
3323 golang.org/x/review/git-codereview` (or just `go install
3424 golang.org/x/review/git-codereview@latest` if you are using Go 1.16)
35253636-<!-- Keep the above steps in sync with cmd/cue/cmd/testdata/script/contributing_install*.txt -->
3737-3838-3939-<!-- TODO
4040-If you prefer, there is an automated tool that walks through these steps.
4141-Just run:
4242-4343-4444-```
4545-$ go get -u cuelang.org/x/tools/cmd/cue-contrib-init
4646-$ cd /code/to/edit
4747-$ cue-contrib-init
4848-```
4949---->
2626+Note that if you plan to contribute via GitHub, only Steps 0 and 1 are required.
50275151-The rest of this chapter elaborates on these instructions.
5252-If you have completed the steps above (either manually or through the tool), jump to
5353-Before contributing code.
2828+The rest of this chapter elaborates on these instructions. If you have
2929+completed the steps above (either manually or through the tool), jump to "Before
3030+contributing code."
54315555-5656-### Step 0: Select a Google Account
5757-5858-A contribution to CUE is made through a Google account with a specific
5959-e-mail address.
6060-Make sure to use the same account throughout the process and
6161-for all your subsequent contributions.
6262-You may need to decide whether to use a personal address or a corporate address.
6363-The choice will depend on who
6464-will own the copyright for the code that you will be writing
6565-and submitting.
6666-You might want to discuss this topic with your employer before deciding which
6767-account to use.
3232+### Step 0: Decide which email address you want to use for contributions
68336969-7070-Google accounts can either be Gmail e-mail accounts, G Suite organization accounts, or
7171-accounts associated with an external e-mail address.
7272-For instance, if you need to use
7373-an existing corporate e-mail that is not managed through G Suite, you can create
7474-an account associated
7575-[with your existing
7676-e-mail address](https://accounts.google.com/SignUpWithoutGmail).
7777-3434+A contribution to CUE is made through a specific e-mail address. Make sure to
3535+use the same account throughout the process and for all your subsequent
3636+contributions. You may need to decide whether to use a personal address or a
3737+corporate address. The choice will depend on who will own the copyright for the
3838+code that you will be writing and submitting. You might want to discuss this
3939+topic with your employer before deciding which account to use.
78407941You also need to make sure that your Git tool is configured to create commits
8080-using your chosen e-mail address.
8181-You can either configure Git globally
8282-(as a default for all projects), or locally (for a single specific project).
8383-You can check the current configuration with this command:
4242+using your chosen e-mail address. You can either configure Git globally (as a
4343+default for all projects), or locally (for a single specific project). You can
4444+check the current configuration with this command:
844585468647```
···9657$ git config user.email name@example.com # change local config
9758```
98596060+If the copyright holder for the code you are submitting changes—for
6161+example, if you start contributing code on behalf of a new company—please
6262+send mail to the [CUE Owners](mailto:owners@cuelang.org). This will let us know
6363+the situation so we can make sure an appropriate agreement is completed and
6464+update the `AUTHORS` file.
9965100100-### Step 1: Contributor License Agreement
6666+### Step 1: Read and prepare for asserting a Developer Certificate of Origin
10167102102-Before sending your first change to the CUE project
103103-you must have completed one of the following two CLAs.
104104-Which CLA you should sign depends on who owns the copyright to your work.
6868+Contributions to the CUE project must be accompanied by a [Developer Certificate
6969+of Origin](https://developercertificate.org/), the text of which is reproduced
7070+here for convenience:
105717272+```
7373+Developer Certificate of Origin
7474+Version 1.1
10675107107-- If you are the copyright holder, you will need to agree to the
108108-[individual contributor license agreement](https://developers.google.com/open-source/cla/individual),
109109-which can be completed online.
110110-- If your organization is the copyright holder, the organization
111111-will need to agree to the
112112-[corporate
113113-contributor license agreement](https://developers.google.com/open-source/cla/corporate).
7676+Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
7777+1 Letterman Drive
7878+Suite D4700
7979+San Francisco, CA, 94129
11480115115-You can check your currently signed agreements and sign new ones at
116116-the
117117-[Google Developers Contributor License Agreements](https://cla.developers.google.com/clas?pli=1&authuser=1) website.
118118-If the copyright holder for your contribution has already completed the
119119-agreement in connection with another Google open source project,
120120-it does not need to be completed again.
8181+Everyone is permitted to copy and distribute verbatim copies of this
8282+license document, but changing it is not allowed.
1218312284123123-If the copyright holder for the code you are submitting changes—for example,
124124-if you start contributing code on behalf of a new company—please send mail
125125-to the [`cue-dev` mailing list](mailto:cue-dev@googlegroups.com).
126126-This will let us know the situation so we can make sure an appropriate agreement is
127127-completed and update the `AUTHORS` file.
8585+Developer's Certificate of Origin 1.1
128868787+By making a contribution to this project, I certify that:
129888989+(a) The contribution was created in whole or in part by me and I
9090+ have the right to submit it under the open source license
9191+ indicated in the file; or
13092131131-### Step 2: Configure git authentication
9393+(b) The contribution is based upon previous work that, to the best
9494+ of my knowledge, is covered under an appropriate open source
9595+ license and I have the right under that license to submit that
9696+ work with modifications, whether created in whole or in part
9797+ by me, under the same open source license (unless I am
9898+ permitted to submit under a different license), as indicated
9999+ in the file; or
132100133133-The remaining two steps only apply if you wish to contribute through Gerrit,
134134-which is the source of truth for the CUE project. You can also send Pull
135135-Requests to the mirror at https://github.com/cuelang/cue.
101101+(c) The contribution was provided directly to me by some other
102102+ person who certified (a), (b) or (c) and I have not modified
103103+ it.
136104137137-The main CUE repository is located at
138138-[cue.googlesource.com](https://cue.googlesource.com),
139139-a Git server hosted by Google.
140140-Authentication on the web server is made through your Google account, but
141141-you also need to configure `git` on your computer to access it.
142142-Follow this steps:
105105+(d) I understand and agree that this project and the contribution
106106+ are public and that a record of the contribution (including all
107107+ personal information I submit with it, including my sign-off) is
108108+ maintained indefinitely and may be redistributed consistent with
109109+ this project or the open source license(s) involved.
110110+```
143111112112+All commit messages must contain the `Signed-off-by` line with an email address
113113+that matches the commit author. When commiting, use the `--signoff` flag:
144114145145-- Visit [cue.googlesource.com](https://cue.googlesource.com)
146146-and click on "Generate Password" in the page's top right menu bar.
147147-You will be redirected to accounts.google.com to sign in.
148148-- After signing in, you will be taken to a page with the title "Configure Git".
149149-This page contains a personalized script that when run locally will configure Git
150150-to hold your unique authentication key.
151151-This key is paired with one that is generated and stored on the server,
152152-analogous to how SSH keys work.
153153-- Copy and run this script locally in your terminal to store your secret
154154-authentication token in a `.gitcookies` file.
155155-If you are using a Windows computer and running `cmd`,
156156-you should instead follow the instructions in the yellow box to run the command;
157157-otherwise run the regular script.
115115+```
116116+git commit -s
117117+```
158118159159-### Step 3: Create a Gerrit account
119119+### Step 2: Setup a GerritHub account
120120+121121+If you have not used GerritHub before, setting up an account is a simple
122122+process:
123123+124124+- Visit [GerritHub](http://gerrithub.io/).
125125+- Click "First Time Sign In".
126126+- Clickt the green "Sign In" button, to sign in using your GitHub
127127+ credentials.
128128+- When prompted "Which level of GitHub access do you need?", choose
129129+ "Default" and then click "Login."
130130+- Click "Authorize gerritforge-ltd" on the GitHub auth page.
131131+- Confirm account profile details and click "Next."
160132161161-Gerrit is an open-source tool used by CUE maintainers to discuss and review
162162-code submissions.
133133+If you want to use SSH for authentication, SSH keys can be [configured in your
134134+user profile](https://review.gerrithub.io/settings/#SSHKeys).
163135136136+For HTTP Credentials, [generate a password via your user
137137+profile](https://review.gerrithub.io/settings/#HTTPCredentials). Then use an
138138+existing HTTP authentication mechanism like `.netrc`, macOS KeyChain, or some
139139+other [crendential helper](https://git-scm.com/docs/gitcredentials). If you have
140140+any troubles with this step, please [raise an
141141+issue](https://github.com/cue-lang/cue/issues/new).
164142165165-To register your account, visit
166166-[cue-review.googlesource.com/login/](https://cue-review.googlesource.com/login/)
167167-and sign in once using the same Google Account you used above.
143143+Then visit https://review.gerrithub.io/admin/repos/cue-lang/cue, then click
144144+"HTTP" or "SSH" then copy the corresponding "Clone" command.
168145169146170170-### Step 4: Install the git-codereview command
147147+### Step 3: Install the git-codereview command
171148172172-Changes to CUE must be reviewed before they are accepted, no matter who makes the change.
173173-A custom `git` command called `git-codereview`
174174-simplifies sending changes to Gerrit.
149149+Changes to CUE must be reviewed before they are accepted, no matter who makes
150150+the change. A custom `git` command called `git-codereview` simplifies sending
151151+changes to Gerrit.
175152176153<!-- Keep the following in sync with cmd/cue/cmd/testdata/script/contributing_install*.txt -->
177154···203180`git-codereview.exe` is in your `git` exec-path.
204181Run `git --exec-path` to discover the right location then create a
205182symbolic link or just copy the executable from $GOPATH/bin to this directory.
206206-207183208184209185## Before contributing code
···223199### Check the issue tracker
224200225201Whether you already know what contribution to make, or you are searching for
226226-an idea, the [issue tracker](https://github.com/cuelang/cue/issues) is
202202+an idea, the [issue tracker](https://github.com/cue-lang/cue/issues) is
227203always the first place to go.
228204Issues are triaged to categorize them and manage the workflow.
229205···247223248224- Issues that need investigation:
249225 [`is:issue is:open label:NeedsInvestigation`](
250250- https://github.com/cuelang/cue/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsInvestigation)
226226+ https://github.com/cue-lang/cue/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsInvestigation)
251227- Issues that need a fix:
252252- [`is:issue is:open label:NeedsFix`](https://github.com/cuelang/cue/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsFix)
228228+ [`is:issue is:open label:NeedsFix`](https://github.com/cue-lang/cue/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsFix)
253229- Issues that need a fix and have a CL:
254254- [`is:issue is:open label:NeedsFix "cuelang.org/cl"`](https://github.com/cuelang/cue/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsFix+%22golang.org%2Fcl%22)
230230+ [`is:issue is:open label:NeedsFix "cuelang.org/cl"`](https://github.com/cue-lang/cue/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsFix+%22golang.org%2Fcl%22)
255231- Issues that need a fix and do not have a CL:
256256- [`is:issue is:open label:NeedsFix NOT "cuelang.org/cl"`](https://github.com/cuelang/cue/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsFix+NOT+%22golang.org%2Fcl%22)
232232+ [`is:issue is:open label:NeedsFix NOT "cuelang.org/cl"`](https://github.com/cue-lang/cue/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsFix+NOT+%22golang.org%2Fcl%22)
257233258234### Open an issue for any new problem
259235···342318This is an overview of the overall process:
343319344320345345-- **Step 1:** Clone the CUE source code from cue.googlesource.com
346346-and make sure it's stable by compiling and testing it once:
321321+- **Step 1:** Clone the CUE source code from GerritHub. Visit
322322+https://review.gerrithub.io/admin/repos/cue-lang/cue, then click
323323+"SSH" or "HTTP" dependending on which authentication mechanism you configured
324324+above. Then copy and run the corresponding "Clone" command.
325325+326326+Then make sure it's stable by compiling and testing it once:
327327+347328```
348348-$ git clone https://cue.googlesource.com/cue
349329$ cd cue
350330$ go test ./...
351331$ go install ./cmd/cue
···395375checked out from the correct repository.
396376You can check out the CUE source repo onto your local file system anywhere
397377you want as long as it's outside your `GOPATH`.
398398-Either clone from
399399-`cue.googlesource.com` or from GitHub:
378378+379379+Visit https://review.gerrithub.io/admin/repos/cue-lang/cue, then click
380380+"SSH" or "HTTP" dependending on which authentication mechanism you configured
381381+above. Then copy and run the corresponding "Clone" command.
400382383383+Then make sure it's stable by compiling and testing it once:
401384402385```
403403-$ git clone https://github.com/cuelang/cue # or https://cue.googlesource.com/cue
404386$ cd cue
405387$ go test ./...
406388# go install ./cmd/cue
···486468487469```
488470remote: New Changes:
489489-remote: https://cue-review.googlesource.com/99999 math: improved Sin, Cos and Tan precision for very large arguments
471471+remote: https://review.gerrithub.io/99999 math: improved Sin, Cos and Tan precision for very large arguments
490472```
491473492474If you get an error instead, check the
···596578the fully-qualified syntax supported by GitHub to make sure the change is
597579linked to the issue in the main repository, not the subrepository.
598580All issues are tracked in the main repository's issue tracker.
599599-The correct form is "Fixes cuelang/cue#159".
581581+The correct form is "Fixes #159".
600582601583602584···756738Files in the CUE repository don't list author names, both to avoid clutter
757739and to avoid having to keep the lists up to date.
758740Instead, your name will appear in the
759759-[change log](https://cue.googlesource.com/cue/+log) and in the
741741+[change log](https://review.gerrithub.io/plugins/gitiles/cue-lang/cue/+log) and in the
760742[`CONTRIBUTORS`](../CONTRIBUTORS) file and perhaps the
761743[`AUTHORS`](../AUTHORS) file.
762744These files are automatically generated from the commit logs periodically.
···938920939921940922```
941941-$ git fetch https://cue.googlesource.com/review refs/changes/21/13245/1 && git checkout FETCH_HEAD
923923+$ git fetch https://review.gerrithub.io/a/cue-lang/cue refs/changes/67/519567/1 && git checkout FETCH_HEAD
942924```
943925944926To revert, change back to the branch you were working in.
+3-3
doc/tutorial/kubernetes/README.md
···12691269```
1270127012711271The complete top-level model definitions can be found at
12721272-[doc/tutorial/kubernetes/manual/services/cloud.cue](https://cue.googlesource.com/cue/+/master/doc/tutorial/kubernetes/manual/services/cloud.cue).
12721272+[doc/tutorial/kubernetes/manual/services/cloud.cue](https://review.gerrithub.io/plugins/gitiles/cue-lang/cue/+/refs/heads/master/doc/tutorial/kubernetes/manual/services/cloud.cue).
1273127312741274The tailorings for this specific project (the labels) are defined
12751275-[here](https://cue.googlesource.com/cue/+/master/doc/tutorial/kubernetes/manual/services/kube.cue).
12751275+[here](https://review.gerrithub.io/plugins/gitiles/cue-lang/cue/+/refs/heads/master/doc/tutorial/kubernetes/manual/services/kube.cue).
127612761277127712781278### Converting to Kubernetes
···1301130113021302Mapping deployments is a bit more involved, though analogous.
13031303The complete definitions for Kubernetes conversions can be found at
13041304-[doc/tutorial/kubernetes/manual/services/k8s.cue](https://cue.googlesource.com/cue/+/master/doc/tutorial/kubernetes/manual/services/k8s.cue).
13041304+[doc/tutorial/kubernetes/manual/services/k8s.cue](https://review.gerrithub.io/plugins/gitiles/cue-lang/cue/+/refs/heads/master/doc/tutorial/kubernetes/manual/services/k8s.cue).
1305130513061306Converting the top-level definitions to concrete Kubernetes code is the hardest
13071307part of this exercise.
···150150 if v.status < Finalized && v.state != nil {
151151 // TODO: errors are slightly better if we always add addNotify, but
152152 // in this case it is less likely to cause a performance penalty.
153153- // See https://github.com/cuelang/cue/issues/661. It may be possible to
153153+ // See https://cuelang.org/issue/661. It may be possible to
154154 // relax this again once we have proper tests to prevent regressions of
155155 // that issue.
156156 if !v.state.done() || v.state.errs != nil {