Repository navigation
Closed
5 / 55 of 5 issues completedClosed
Hive implemented its own help-wanted issue while a contributor held the claim and had a covering PR#17292
5 / 55 of 5 issues completed
Copy link
Labels
bugSomething isn't workingSomething isn't workinghelp wantedDenotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.hive/partially-addressedA merged PR addressed only part of this issue; remainder still actionableA merged PR addressed only part of this issue; remainder still actionablekind/bugCategorizes issue or PR as related to a bug.Categorizes issue or PR as related to a bug.
Description
What happened
On 2026-11-08 (UTC) the hive implemented an issue it had itself filed, while a contributor held the claim and had an open PR covering it:
| time | event |
|---|---|
| 15:09:48 | hive's own agent files #17243 (crux S4 — command log) as the next stage of hivecommons/crux#114, help wanted |
| 15:11:02 | contributor Karibhou (a contributor hive) claims #17243 — ledger shows the claim, labels stage/020-claimed, hive/claimed-by-human |
| 15:26:10 | Karibhou opens #17248 (Closes #17243) — issue moves to stage/040-covered-by-pr at 15:26:49 |
| 15:27:45 | ledger: contributor lease released (lease_revoked) |
| 15:34:06 | hive's own agent commits its own S4 implementation and opens #17250 at 15:34:26 — no claim on #17243 was ever recorded for it, no overlap check named #17248 |
| 15:42:43 | #17250 merges, closes #17243 |
| 15:48 | #17248 flagged hold-gate conflicting; 17:11 Karibhou concedes it is superseded; closed today as superseded |
Net: a contributor did the work first and correctly, and the issue's author overwrote it. Karibhou was gracious about it; the next contributor may not be.
Why the gates did not catch it
stageengine/facts.go:217says dispatch is withheld at 040 ("the hive is on it", 🐛 tracker: Refs-only PR claims withhold an issue from every agent yet show it as 010-actionable #13747) — but that governs dispatch of the issue. The second implementer was not dispatched from crux S4: command log service #17243: it was continuing an epic (crux#114) and filed crux S4: command log service #17243 as a tracking artefact for work it already intended to do. Nothing checks "the issue I am about toFixesis already claimed/covered by someone else" at PR-open or at kick time for epic-driven work.issue_claim_gate.goexcludes only needs-human/hold/blocked/never-claim; a contributor claim or040-covered-by-pron the target issue is not a stop for the author's own hive.- The
lease_revokedrelease at 15:27:45 — forty seconds after the PR covered the issue — looks like the claim being converted into PR coverage, which then made the issue read as unclaimed to anything that only consults the claim ledger. - The open-PR overlap check on ✨ crux: command log service (S4) #17250 did not list ✨ crux: command log service (S4) #17248 even though they add the same new files (
src/crux/cmdlog/*,src/crux/api/cmdlog.go,src/crux/cli/cmdlog.go) — add/add overlaps on new paths are not reported.
Proposed fix (fail closed)
- Pre-kick / pre-PR check on the
Fixes/Closestarget: before an agent starts work that will close issue N — whether dispatched from N or from an epic that will file/close N — resolve N's state. If N has a live contributor claim, or is at040-covered-by-prby a PR from another author, refuse to start and post aneeds-decision-style comment on N ("already claimed by X / covered by #M; owner decides whether to proceed"). The author's own hive gets no special pass. - Filing an issue for one's own next step must claim it (or mark it
hive/claimed-by-scanner) in the same action, sohelp wantedis not a two-minute race window. If the hive wants outside help on it, it should not then implement it itself without the owner saying so. - Coverage must not release the claim: when a contributor's PR covers their claimed issue, keep the claim (or convert it to a PR-held claim naming the same principal) so ledger-only readers still see it as taken.
- Overlap check: report add/add overlaps on new paths between open PRs, not only same-file edits to existing files.
- Regression test reproducing this exact sequence (file → contributor claim → contributor PR covers → epic-driven second implementation refused).
Refs #17243, #17248, #17250, #13747, hivecommons/crux#114.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workinghelp wantedDenotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.hive/partially-addressedA merged PR addressed only part of this issue; remainder still actionableA merged PR addressed only part of this issue; remainder still actionablekind/bugCategorizes issue or PR as related to a bug.Categorizes issue or PR as related to a bug.
Activity
hivecommons-hive commentedon Nov 8, 2026
Thanks for filing this issue! To help us reproduce and investigate, could you please include the commit SHA of the build you're running?
You can find it by running:
Or check the bottom of the console UI for the version string.
This issue will be on hold until a SHA is provided. Simply add a comment with the SHA and the hold will be automatically removed.
hivecommons-hive commentedon Nov 8, 2026
Split into five sub-issues, one per concern:
Fixes/Closestarget has another principal's live claim or is covered by another author's PR (pr_request_claims.govalidatePRRequestClaims, the start path)help wantedrace (issue_request_watcher.gocreate path)lease revoked(contribute_leases.gorevokeLease→ReleaseByHolderID).github/scripts/pr-overlap.sh). Note: thehive-pr-overlapcomment on ✨ crux: command log service (S4) #17250 (15:35:00) did list ✨ crux: command log service (S4) #17248 as CONFLICT, including the new cmdlog paths. The remaining gap is that a CONFLICT row drops shared paths that merge cleanly, and no add/add fixture covers this.Order: #17298, #17299, #17300 and #17301 are independent and can go in parallel. #17302 comes after #17298 and #17300.
Why split: there are five independent code paths (PR-request gate, issue-create watcher, contributor lease/claim ledger, overlap CI script, end-to-end test) spread over more than five files, which is over the hive's single-PR size rule.
🐝 Hive Agent:
scanner| Instance:hosted-available-oke-11-placeholder-r05x| SHA:unknown— hive: agent=scanner backend=copilot model=claude-fable-5.1 copilot=1.0.88
hivecommons-hive commentedon Nov 8, 2026
Status of the five children: #17298 → PR #17303 (review finding on the own-claim exemption addressed @6fd45cd); #17299 → PR #17306; #17300 → PR #17305; #17301 → PR #17304; #17302 (regression test) in progress. All target v5; CI pending — the sweep merges them when green.
🐝 Hive Agent:
scanner| Instance:hosted-available-oke-11-placeholder-r05x| SHA:b1eabc1— hive: agent=scanner backend=copilot model=claude-fable-5.1 copilot=1.0.88
hivecommons-hive commentedon Nov 8, 2026
PR #17308 covers this issue: #17308
The PR body says this is partial/non-closing work (
Refs/Part ofor leave-open wording), so Hive will not add a closing keyword. GitHub will not show its issue-list PR icon without a closing keyword; the stage comment is the link.🐛 Activity Monitor: secondary issue of a shared PR rides the PR's lane (
🌱 test: regression for an epic-driven PR on a contributor-claimed, PR…
🌱 test: regression for an epic-driven PR on a contributor-claimed, PR…
hivecommons-hive commentedon Nov 9, 2026
All children delivered: #17298 → PR #17303, #17299 → PR #17306, #17300 → PR #17305, #17301 → PR #17304, #17302 → PR #17308.
Every tracked child of this issue is closed, so the hive is closing it as completed. Reopen it if something it asked for is still missing.
github-actions commentedon Nov 9, 2026
@clubanderson this issue was closed by @hivecommons-hive[bot] as completed.
If this was closed by a merged PR, the fix only takes effect once it ships in a tagged release and your deployment updates to it — check your running version against the fix before concluding the fix failed.
If you are still seeing the problem, comment
/reopenand it will be reopened for you — you do not need write access. Please add what you are still observing (running version, logs, steps) so it is not closed the same way again.