Skip to content

chore: update tend workflows (0.1.13 → 0.1.14) - #3749

Merged
max-sixty merged 1 commit into
mainfrom
tend/update-workflows
Aug 7, 2026
Merged

chore: update tend workflows (0.1.13 → 0.1.14)#3749
max-sixty merged 1 commit into
mainfrom
tend/update-workflows

Conversation

@worktrunk-bot

Copy link
Copy Markdown
Collaborator

Automated nightly regeneration of tend's workflow files.

tend version: 0.1.13 → 0.1.14

Notable changes

Full compare: max-sixty/tend@0.1.13...0.1.14

@worktrunk-bot worktrunk-bot added the nightly-cleanup Issues found by nightly code quality sweep label Aug 6, 2026
@max-sixty
max-sixty merged commit 6ad0439 into main Aug 7, 2026
47 checks passed
@max-sixty
max-sixty deleted the tend/update-workflows branch August 7, 2026 05:59
@max-sixty max-sixty mentioned this pull request Aug 7, 2026
max-sixty added a commit that referenced this pull request Aug 7, 2026
Release v0.72.0 — 55 commits since v0.71.0.

Minor bump: `cargo semver-checks` reports 5 breaking library changes, so
patch is disallowed pre-1.0.

## Headline changes

- **`wt merge` / `wt step push` no longer autostash the target
worktree** (#3703). Both strategies now advance the target through one
`advance_target` — a compare-and-swap `update-ref`, then `read-tree -m
-u` in the target worktree — so `refs/stash` is never entered and staged
changes stay staged.
- **Forge classification returns to brand-in-hostname** (#3673),
reverting the exact-DNS-label rule 0.71.0 shipped.
`github-enterprise.acme.com` and friends resolve again with no config.
- **`[projects."…"]` keys match by `*` pattern and carry forge
settings** (#3701), so one user-config entry covers every repository on
a self-hosted host.
- **A published JSON Schema for `wt list --format=json` schema 2**
(#3747), plus machine-readable approval state and `branch_outcome`
(#3710).

Full detail in `CHANGELOG.md`.

## One fix made during the release cut

The release audit surfaced a gap this release's own `advance_target`
rewrite introduced, fixed here rather than deferred:

**`wt merge` / `wt step push` now refuse a target worktree parked
mid-operation.** The target sync is a two-tree merge, which refuses an
unmerged index but *not* a stopped cherry-pick or rebase whose conflict
has already been staged. A target paused between steps could therefore
have the push range written into it, and the user's `--continue` would
commit the synced tree as the step's result. The old fast-forward path
got this check for free from `receive.denyCurrentBranch=updateInstead`,
which refused any unclean target outright; both strategies now ask
directly, and the refusal names the worktree holding the operation.

`test_push_refuses_target_mid_operation` covers it in both shapes a
stopped operation can take, and both are mutation-verified. With the
gate disabled, the push succeeds and writes `feature.txt` into the
mid-cherry-pick worktree.

The rebase case was added in response to review feedback on this PR, and
pins a second dependency. A rebase detaches HEAD, so `git worktree list
--porcelain` reports the target with no branch and `worktree_for_branch`
finds it only because `finalize_worktree` backfills from
`rebase-merge/head-name`. That makes the rebase arm the one place this
guarantee rests on a helper of ours rather than on git — the
fast-forward path it replaced got the refusal from `find_shared_symref`.
With the backfill disabled, `wt step push` succeeds against a worktree
parked mid-rebase while the cherry-pick case still passes, so the gap
was real.

## Validation

- Local gate green: `cargo run -- hook pre-merge --yes` — 4570 tests,
clippy, fmt, doc sync.
- Cross-platform nightly green on the cut-from tip `3817df079` (run
31133551751): full nextest matrix on linux/macOS/Windows,
feature-powerset, all three release triples, nix-flake,
minimal-versions, unused-deps, crate-build, link-check.
- Changelog verified entry-by-entry against the diffs by an independent
pass; every one of the 55 commits either maps to an entry or is a
documented skip.
- `main` advanced during the CI wait. #3762 ships in this release and
now has a changelog entry; the other two commits that landed (#3758,
#3749) touch only `.github/`.
- Data-loss surface reviewed by four independent finders over the
cumulative diff. One further finding — a pre-0.72 `approvals.toml` key
containing `*` being reinterpreted as a wildcard on upgrade — was
reviewed and accepted as out of scope for this release.

> _This was written by Claude Code on behalf of max-sixty_

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
max-sixty pushed a commit that referenced this pull request Aug 7, 2026
Nightly sweep finding: the last paragraph of "Environment protection" in
`.github/CLAUDE.md` describes a gap that closed the same night it was
written.

#3748 added the paragraph saying the generated `tend-*.yaml` files
"still carry the bare `environment: tend`" and that `tend check`'s
`environment-deployments` "fails until a `uvx tend@latest init` regen
lands them on tend ≥ 0.1.14". #3749 merged 3 hours later and did exactly
that regen — every generated job now reads `{name: tend, deployment:
false}`, and tonight's `tend check` reports `environment-deployments` as
`PASS`. Left as-is, the file tells the next reader to expect a failure
that no longer happens and a regen that already ran.

The rewrite keeps the durable half — the generated files aren't
hand-edited, because `uvx tend@latest init` overwrites them — and states
the resolution instead of the pending action.

<details><summary>Evidence</summary>

Current state of the generated files (all eight are identical in shape):

```
$ grep -A2 'environment:' .github/workflows/tend-nightly.yaml
    environment:
      name: tend
      deployment: false
```

Tonight's `tend check`, run by the nightly sweep:

```
  PASS  environment-deployments — No job files a deployment for the 'tend' environment
```

The three checks still failing (`credential-environments`,
`claude-auth`, `repo-secret-allowlist`) are tracked in #3729 and are
repository-settings changes, unrelated to this file. #3760 edits the
same section but not these lines, so the two don't conflict.

</details>

No test accompanies this — it's a documentation-only change to a file no
test reads.

Co-authored-by: worktrunk-bot <254187624+worktrunk-bot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

nightly-cleanup Issues found by nightly code quality sweep

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants