fix: herdr target source, changelog-owner check; test: clean-room tolerant reader; chore: dependabot labels - #532
Conversation
activate() switched menuMode on the raw list index. With a filter applied, "1" or enter on the only visible row ran whatever sat first in the unfiltered menu (Pick). It now switches on SelectedItem(), the same filter-aware pattern hubMode and leavesMode use since #490. Closes #496 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wfuj7jLb8eNvEHdxurJgt9
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Essentials Run ID: 📒 Files selected for processing (8)
Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour. Your free on-demand review promotion remains active until October 9, 2026 at 6:00 PM UTC. 📝 WalkthroughWalkthroughThe pull request updates filtered TUI menu activation, recipe target-source reporting, breadcrumb workspace checks, and changelog ownership comparisons. Tests cover the menu selection, target resolution, workspace refusal, and changelog comparison changes. ChangesTUI menu activation
Recipe target source reporting
Breadcrumb workspace guard
Changelog ownership guard
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Bug fix · Severity of issue fixed: Low Merge Risk: ⚪ Minimal · up to The supplied evidence identifies no issue that needs resolution before merge. 🚥 Pre-merge checks | ✅ 2 | ❌ 3❌ Failed checks (3 warnings)
✅ Passed checks (2 passed)
Full details: Out of Scope Changes checkExplanation The PR contains changes unrelated to Full details: Docstring CoverageExplanation Docstring coverage is 53.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 15 functions across 9 files. (1 skipped: 1 unsupported.) Full details: Title checkExplanation The title names several real changes, including the Herdr target source and changelog-owner check. However, it omits the primary filtered-menu fix, includes an unsubstantiated Dependabot-label change, and is too long for a concise summary.
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
A rabbit taps the filtered row, Comment |
The #475 allowlist rejects a malformed target, but the error named only the value. A bad HERDR_PANE_ID left the operator no path back to the variable. resolveRecipeHerdrTarget now returns where the target came from (--target, HERDR_PANE_ID, HERDR_ACTIVE_PANE_ID) and the error names it. Closes #464 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wfuj7jLb8eNvEHdxurJgt9
The check diffed BASE_SHA against the PR merge commit, which also holds every main commit since the branch point, so a release cut landing on main failed every open PR. It now diffs BASE_SHA...<PR head>, taking the head from HEAD_SHA or the merge commit's second parent. Closes #458 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wfuj7jLb8eNvEHdxurJgt9
…tightening recordedWorkspaceFor reads breadcrumbs without the strict decoder, so a newer forgectl's record still refuses its clean room. Nothing tested that: routing the reader through decodeBreadcrumbRecord allowed the path with the suite green. The new test seeds a record the strict decoder rejects, outside $TMPDIR, and goes red under that mutation. Both tolerant readers now point at each other. Closes #504 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wfuj7jLb8eNvEHdxurJgt9
Dependabot's default dependencies and github_actions labels are folded into kind:chore by the estate label rollout, so every Dependabot PR recreated them. The updates entry now sets kind:chore directly. refs cameronsjo/cadence-ecosystem#553 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wfuj7jLb8eNvEHdxurJgt9
The new-findings lint gate flagged the fixture's 0o755 workspace and the os.ReadFile of the breadcrumb it just wrote. Use 0o750 and note why the read is safe. refs #504 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wfuj7jLb8eNvEHdxurJgt9
|
This PR now conflicts with One follow-up from #531: the secret masking in |
# Conflicts: # internal/tui/tui.go # internal/tui/tui_test.go
…hangelog check Review follow-up on #458. The three-dot diff trusted a merge base: a criss-cross history could pick one that hid a CHANGELOG edit, and with HEAD_SHA unset the HEAD^2 guess named main, not the PR, so an edit behind a merge-from-main passed. The check now diffs HEAD^1..HEAD only when HEAD is GitHub's merge commit whose second parent is HEAD_SHA, and otherwise falls back to BASE_SHA..HEAD, which can over-block but never passes a PR's own edit. A non-commit base still fails closed. Tests pin HEAD_SHA explicitly and add the merge-from-main negative control. refs #458 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wfuj7jLb8eNvEHdxurJgt9
|
Cause: sops writes Proposed patch (not applied here, to keep the PR on its issues): assert which lines changed rather than how many. // internal/sops/driver_test.go, replacing the `changed != 3` check
changed := changedKeys(beforeLines, afterLines)
must := map[string]bool{"llm_key_hermes": true, "mac": true}
may := map[string]bool{"lastmodified": true} // second resolution: unchanged when both steps share a second
for _, k := range changed {
if !must[k] && !may[k] {
t.Errorf("unexpected changed line %q: %v", k, changed)
}
delete(must, k)
}
for k := range must {
t.Errorf("expected %q to change: %v", k, changed)
}I'm re-running the failed job once. No fix for this exists on Generated by Claude Code |
sops stores lastmodified at one-second resolution, so when the fixture's encryption and SetValue land in the same second only the value and mac change. The test counted a fixed 3 changed lines and failed on fast runners. It now requires the value and mac lines to change, allows lastmodified, and rejects any other changed line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wfuj7jLb8eNvEHdxurJgt9
|
Update: the re-run was refused ( Generated by Claude Code |
Summary
main(its typedactenum and its tests), so this PR no longer changesinternal/tui/.resolveRecipeHerdrTargetnow also returns the source (--target,HERDR_PANE_IDorHERDR_ACTIVE_PANE_ID), and the error adds(from HERDR_PANE_ID)or whichever source applied.HEAD_SHA(passed frompull_request.head.sha), the script diffsHEAD^1..HEAD, which is exactly the PR's effect on the current base. A release that landed onmainafter the branch point is no longer blamed on the PR, and no merge base is involved. In every other case it falls back to the previousBASE_SHA..HEADdiff, which can block too much but never passes a PR's own edit. A base that isn't a commit still fails closed.HEAD_SHAunset theHEAD^2guess namedmaininstead of the PR. This design closes both.pr localclean-room guard's tolerant reader is pinned by a test (Closes pr local clean-room guard has no regression test against decoder tightening #504).recordedWorkspaceForreads breadcrumbs without the strict decoder, so a newer forgectl's record still refuses its workspace.local.goandrepair.gonow cross-reference the two tolerant readers. This change is test and comments only.kind:chore(refs cameronsjo/cadence-ecosystem#553).Tests
TestChangelogOwnershipGuardIgnoresMainsOwnReleaseEdit: a release onmainunder a GitHub-style merge commit passes with both base SHAs.TestChangelogOwnershipGuardCatchesAnEditBehindAMergeFromMainis the negative control: a PR that editsCHANGELOG.mdand then mergesmainin is rejected on both the CI path and the fallback path. It fails against the previous three-dot script. Test helpers now setHEAD_SHAexplicitly, so a developer's shell can't change which path runs.TestChangelogOwnershipGuardcases still pass, including the invalid-base, hand-edit and Release Please ones.TestRecipeAfkBadTargetNamesItsSource,TestResolveRecipeHerdrTarget, andTestPrepareLocal_RefusesCleanRoomFromRecordStrictDecoderRejects, which I mutation-checked.gofmt,go vet ./...,go test ./...andgolangci-lintv2.13.1 (0 issues) all pass.code-reviewerandsecurity-reviewerboth returnedCLEANon the earlier head. Their two changelog-check findings are fixed in8cd4cba.Release notes
None.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Wfuj7jLb8eNvEHdxurJgt9
Summary by CodeRabbit