Skip to content

Promote the Unattended Worker's Read-Then-Act Fixes to Main - #2639

Merged
ptr727 merged 1 commit into
mainfrom
develop
Oct 9, 2026
Merged

ptr727 merged 1 commit into
mainfrom
develop

Conversation

@ptr727

@ptr727 ptr727 commented Oct 9, 2026

Copy link
Copy Markdown
Owner

Promotes the one change develop holds over main: unattended-handoff "The Worker" step 3 notes the time in UTC before its blocked-promotion read, repeats that read before each head of a promotion merges with --state all and closedAt rather than a search query, and parks where a decision blocking that promotion closed in between. backlog-burndown "Assembling the Promotion Body" builds each amendment from a fresh read and re-checks the whole Fixes set a freshly fetched range calls for (#2638).

Fixes #2617

🤖 Generated with Claude Code

…Step (#2638)

## Summary

Closes the two read-then-act windows #2617 names in `unattended-handoff`
"The Worker" step 3.

- **The blocked-promotion read now repeats before each head of the
promotion merges**, a head `merge-and-release` re-gates included. The
time is noted in UTC before the first read runs. The repeat runs with
`--state all` and `state,closedAt` in `--json`, never a `--search`
query, since search can lag a close. An open blocker narrows the round
to develop as the first read does. A blocker of that promotion with a
`closedAt` at or after the noted time parks, its `decision` issue asking
whether the answer lets the promotion merge.
- **The promotion-body read-modify-write rule lives at its source**,
`backlog-burndown` "Assembling the Promotion Body", which both skills
defer to. Each amendment is built from a body read immediately before
the write, keeping every line, then re-read and repeated where the body
lacks a `Fixes` line a freshly fetched range calls for.
- Generated copies rebuilt with `scripts/build_dist.py`, and
`build_dist.py --check` is clean.

#2614 covers adjacent gaps in the same step (a failed decision read, an
answer landing between rounds, non-choice parks). This change
deliberately leaves those for that issue.

## Local review

Six recorded `local-strict-review` passes. Rounds 1 to 3 raised 5, 1,
and 2 findings, fixed by 51c619c. Round 4 raised none. Round 5, on
CodeRabbit's fix, raised 3 (the closed-since park was not scoped to the
blocking decision, its question read as an ask, and the body check did
not re-derive the whole set), fixed in 3f6e86e. Round 6 raised none.

Sentence-length flags on the other touched lines (`unattended-handoff`
step 3's 28- and 40-word sentences, `backlog-burndown` line 471) are on
sentences whose wording this change did not alter.

## Verification

- `scripts/prose_lint.py --diff origin/develop`: clean.
- markdownlint and editorconfig-checker via `scripts/docker_lint.py`:
clean.
- `scripts/repo_gate.py --check eol`, `spec/validate.py`,
`tests/test_build_dist.py`: clean.

Closes on promotion: #2617

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings October 9, 2026 09:38
@coderabbitai

coderabbitai Bot commented Oct 9, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Repository: ptr727/ProjectTemplate/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 4470cd60-4b91-4dc6-88de-ac9904f43775

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔵 Needs a closer look

The changes require final human review because they are too complex or risky for automated approval.

0 open findings

What changed in this PR

Promotes fixes for promotion-time blocker checks and promotion-body race windows.

Changes:

  • Rechecks blockers immediately before promotion merges.
  • Preserves and verifies Fixes lines during body amendments.
  • Regenerates skill distributions and digests.
File Description
.github/​skills/​unattended-handoff/​SKILL.md Updated as part of this pull request.
.github/​skills/​backlog-burndown/​SKILL.md Updated as part of this pull request.
.claude-plugin/​fleet-skills/​skills/​unattended-handoff/​SKILL.md Updated as part of this pull request.
.claude-plugin/​fleet-skills/​skills/​backlog-burndown/​SKILL.md Updated as part of this pull request.
.claude-plugin/​fleet-skills/​.source-digests/​unattended-handoff Updated as part of this pull request.
.claude-plugin/​fleet-skills/​.source-digests/​backlog-burndown Updated as part of this pull request.
.agents/​skills/​unattended-handoff/​SKILL.md Updated as part of this pull request.
.agents/​skills/​backlog-burndown/​SKILL.md Updated as part of this pull request.

🧠 Review effort: Lite


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@codecov

codecov Bot commented Oct 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 59.34%. Comparing base (f10164a) to head (11ad234).
⚠️ Report is 345 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2639   +/-   ##
=======================================
  Coverage   59.34%   59.34%           
=======================================
  Files          16       16           
  Lines        8282     8282           
=======================================
  Hits         4915     4915           
  Misses       3367     3367           
Flag Coverage Δ
python-3.13 59.34% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ptr727

ptr727 commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Answer to the verdict headline of the Copilot round on head 11ad234e (review), which counts (0) findings and names its flag in the headline alone:

The changes require final human review because they are too complex or risky for automated approval.

No change needed. The headline names a caution rather than a defect: it points at no file, line, or behavior, and the round states 0 open findings with its file table naming all 8 changed files. The content is prose in two skills (unattended-handoff "The Worker" step 3 and backlog-burndown "Assembling the Promotion Body") plus their regenerated copies. It reached develop through #2638, which carried six recorded local strict-review passes, a Copilot round, and a CodeRabbit round, every finding from them fixed or declined with evidence in that pull request's threads. The human sign-off this caution asks for is the maintainer's merge permission, which this unattended run holds under the main scope the maintainer named when invoking it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Close the Read-Then-Act Windows in the Unattended Worker's Promotion Step

2 participants