Skip to content

Fix cost not refreshing on menu-open refresh - #2388

Merged
steipete merged 6 commits into
steipete:mainfrom
betive37:menu-open-cost-refresh
Aug 10, 2026
Merged

Fix cost not refreshing on menu-open refresh#2388
steipete merged 6 commits into
steipete:mainfrom
betive37:menu-open-cost-refresh

Conversation

@betive37

@betive37 betive37 commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

When Refresh all providers on menu open is enabled, provider quotas refresh on open but token-cost data previously stayed stale until the automatic cost TTL or manual Refresh.

This change makes the existing opt-in preference refresh cost too:

  • add a refreshTokenCost decision to the menu-open plan only for refresh-all mode with enabled providers
  • schedule the cost pass without awaiting it, so AppKit menu tracking stays responsive
  • coalesce requests into active forced-all or enrichment work
  • queue exactly one forced follow-up behind active non-forced work
  • floor forced all-provider cost scans at one start per 60 seconds, including scans started by manual Refresh

The patch preserves #2848’s idle-efficiency ownership: there is no standalone token timer, and ordinary automatic cost work retains its 15-minute TTL floor.

Validation

  • CODEXBAR_SUPPRESS_TEST_KEYCHAIN_ACCESS=1 swift test --filter 'MenuOpenRefreshPlanTests|UsageStoreManualTokenRefreshTests' — 18/18 passed; repeated five consecutive times after hardening an adjacent timing-sensitive test (90/90)
  • CODEXBAR_SUPPRESS_TEST_KEYCHAIN_ACCESS=1 swift test --filter ProviderArchitectureGatekeeperTests — 38/38 passed
  • full suite — 838 selections across 70 groups completed; the final run had one unrelated SpendDashboardControllerTests auth-rotation fixture recover on retry, while the affected refresh suite remained first-pass clean
  • make check — zero violations
  • structured autoreview — TruffleHog clean; no accepted/actionable findings

Signed-app proof

A Developer-ID-signed DEBUG bundle exercised the actual StatusItemController.scheduleOpenMenuRefreshUsageStore.scheduleForcedTokenRefresh path. codesign --verify --deep --strict passed with:

Identifier=com.steipete.codexbar.debug
Authority=Developer ID Application: Peter Steinberger (Y5PE65HELJ)
TeamIdentifier=Y5PE65HELJ

Peekaboo independently verified each real menu-bar click. A temporary DEBUG-only observer wrote fixed event names and timestamps only—no providers, accounts, costs, paths, or settings values. With isolated empty Codex and Claude history roots so each real scanner pass completed deterministically:

2026-08-10T19:53:08Z request
2026-08-10T19:53:08Z forced-all-start
2026-08-10T19:53:28Z request
2026-08-10T19:53:28Z suppressed-floor
2026-08-10T19:54:33Z request
2026-08-10T19:54:33Z forced-all-start

This proves:

  1. the first menu open starts a forced cost pass;
  2. a rapid reopen 20 seconds later is suppressed and starts no duplicate pass;
  3. an open 85 seconds after the first start begins a second pass.

A real-history run also showed later opens coalescing into a still-active forced scan rather than starting duplicates.

The temporary observer and isolated debug preference were removed before publication, and the worktree was verified clean. The signed proof-bearing commit was c639adbc1084a4dbe3142acf9f8d7ffbb2959e50; final head 8905ccf0 only rebases that unchanged cost-refresh diff over the later Agent Sessions-only main commit and preserves both changelog entries.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 37c272878f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sources/CodexBar/UsageStore+TokenRefreshSequence.swift Outdated
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@betive37

Copy link
Copy Markdown
Contributor Author

@clawsweeper review please

@clawsweeper

clawsweeper Bot commented Jul 26, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jul 26, 2026
@clawsweeper

clawsweeper Bot commented Jul 26, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed August 10, 2026, 4:04 PM ET / 20:04 UTC.

ClawSweeper review

What this changes

This PR extends the existing opt-in all-provider menu-open refresh to schedule a coalesced, rate-limited token-cost scan so displayed costs refresh too.

Merge readiness

⚠️ Ready for maintainer review - 1 item remains

Keep open: the final head implements the maintainer-approved, rate-limited menu-open cost refresh and has sufficient signed-app proof. Likely related people: steipete (high confidence).

Priority: P2
Reviewed head: 8905ccf0f2bc49ac387c58cd636e5531a30e3b5d

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) Strong final behavior proof and focused scheduler coverage support a normal merge decision once required checks finish.
Proof confidence 🦞 diamond lobster (5/6) Sufficient (logs): The PR body provides signed-bundle timestamped output from the final behavior: one forced scan, suppression after 20 seconds, and a new scan after 85 seconds.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (logs): The PR body provides signed-bundle timestamped output from the final behavior: one forced scan, suppression after 20 seconds, and a new scan after 85 seconds.
Evidence reviewed 6 items Current main and release lack the requested refresh: Both current main and v0.49.1 define only provider and Codex-dashboard decisions in the menu-open plan; neither has a token-cost refresh decision.
Branch implementation: The PR adds the plan decision and routes it to a fire-and-forget shared-store forced scan; the scheduler coalesces active forced work, queues one follow-up behind ordinary work, and records the 60-second floor for all forced all-provider scans.
Focused regression coverage: The branch tests direct scheduling, queued follow-up coalescing, active forced-pass coalescing, sub-minute suppression, and post-floor rescheduling.
Findings None None.
Security None None.

How this fits together

When CodexBar’s status menu opens, its refresh plan decides which enabled providers to update. The usage store runs local token-cost scans and publishes fresh snapshots that update the visible cost rows.

flowchart LR
A[Menu opens] --> B[Refresh-all preference]
B --> C[Menu-open refresh plan]
C --> D[Provider quota refresh]
C --> E[Forced cost request]
E --> F[60-second floor]
F --> G[Coalesce or queue]
G --> H[Updated cost snapshot]
Loading

Before merge

  • Resolve merge risk (P1) - Enabling the existing refresh-all-on-open preference now starts an additional local cost scan, although the owner-approved 60-second floor and coalescing paths bound repeated work.
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Production versus test growth production +78, tests +181 Most of the added surface is focused scheduler and plan coverage for a small shared refresh-behavior change.

Merge-risk options

Maintainer options:

  1. Accept the bounded opt-in refresh behavior (recommended)
    Merge the owner-approved behavior change, retaining the 60-second forced-scan floor and coalescing semantics.

Technical review

Best possible solution:

Merge the shared-scheduler implementation with its 60-second floor intact after required checks complete.

Do we have a high-confidence way to reproduce the issue?

Yes. Current main’s plan omits cost refresh, while the final-head proof and source define the initial request, sub-minute suppression, and later allowed scan path.

Is this the best way to solve the issue?

Yes. Extending the existing shared usage-store scheduler is the narrowest maintainable solution and avoids a separate timer or blocking AppKit menu tracking.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 52a092180d35.

Labels

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body provides signed-bundle timestamped output from the final behavior: one forced scan, suppression after 20 seconds, and a new scan after 85 seconds.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (logs): The PR body provides signed-bundle timestamped output from the final behavior: one forced scan, suppression after 20 seconds, and a new scan after 85 seconds.
  • remove status: 📣 needs proof: Current PR status label is status: 👀 ready for maintainer look.
  • remove rating: 🦐 gold shrimp: Current PR rating is rating: 🐚 platinum hermit, so this older rating label is no longer current.

Label justifications:

  • P2: This repairs stale cost display in an existing opt-in menu refresh flow without evidence of an urgent service failure.
  • merge-risk: 🚨 compatibility: Existing users who enabled the refresh-all preference will gain an additional cost-refresh effect.
  • merge-risk: 🚨 availability: Forced local-history scans could affect responsiveness or resource use if the new rate-limit and coalescing behavior regresses.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (logs): The PR body provides signed-bundle timestamped output from the final behavior: one forced scan, suppression after 20 seconds, and a new scan after 85 seconds.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body provides signed-bundle timestamped output from the final behavior: one forced scan, suppression after 20 seconds, and a new scan after 85 seconds.

Evidence

What I checked:

  • Current main and release lack the requested refresh: Both current main and v0.49.1 define only provider and Codex-dashboard decisions in the menu-open plan; neither has a token-cost refresh decision. (Sources/CodexBar/MenuOpenRefreshPlan.swift:18, 52a092180d35)
  • Branch implementation: The PR adds the plan decision and routes it to a fire-and-forget shared-store forced scan; the scheduler coalesces active forced work, queues one follow-up behind ordinary work, and records the 60-second floor for all forced all-provider scans. (Sources/CodexBar/UsageStore+TokenRefreshSequence.swift:29, 8905ccf0f2bc)
  • Focused regression coverage: The branch tests direct scheduling, queued follow-up coalescing, active forced-pass coalescing, sub-minute suppression, and post-floor rescheduling. (Tests/CodexBarTests/UsageStoreManualTokenRefreshTests.swift:308, 8905ccf0f2bc)
  • Maintainer-approved direction: The owner explicitly approved extending the preference to token-cost scans provided forced scans remain at least 60 seconds apart; the final PR body supplies signed-app output for the first pass, rapid suppression, and later allowed pass.
  • Feature provenance: Current-main history attributes the menu-open refresh policy and its Codex-dashboard extension to steipete; the recent cost-efficiency work also owns the scanner constraints this PR preserves. (Sources/CodexBar/StatusItemController+Menu.swift:1136, 1f3bb5804812)
  • Release check: v0.49.1 is an ancestor of current main and predates this open PR; no shipped tag contains the PR head. (ae1111e39912)

Likely related people:

  • steipete: Current-main history shows steipete introduced the menu-open refresh policy and dashboard extension, led the related cost-scan efficiency work, and set the accepted floor for this PR. (role: feature owner and recent area contributor; confidence: high; commits: 8964c65d49e5, 1f3bb5804812, d7934a5f6121; files: Sources/CodexBar/MenuOpenRefreshPlan.swift, Sources/CodexBar/StatusItemController+Menu.swift, Sources/CodexBar/UsageStore+TokenRefreshSequence.swift)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (16 earlier review cycles; latest 8 shown)
  • reviewed 2026-08-03T01:48:52.731Z sha f716c62 :: needs changes before merge. :: [P2] Rebase and reconcile the newer refresh-state fields
  • reviewed 2026-08-03T11:46:49.912Z sha f716c62 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-03T13:53:49.721Z sha f716c62 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-03T15:56:21.113Z sha f716c62 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-03T19:01:19.987Z sha f716c62 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-03T22:39:16.234Z sha f716c62 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-07T21:52:12.483Z sha 29c7f84 :: needs real behavior proof before merge. :: none
  • reviewed 2026-08-10T00:38:51.763Z sha 29c7f84 :: needs real behavior proof before merge. :: none

@betive37

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Addressed the P2 finding in 61ee444: a menu-open forced cost request that arrives while a non-forced token sequence is running is now kept pending and runs as one coalesced forced all-provider pass after that sequence completes, instead of being dropped. Added regression coverage for the queued follow-up and the coalescing cases, and the PR body now includes runtime log proof from a real menu session on this branch's build.

@clawsweeper

clawsweeper Bot commented Jul 26, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels Jul 26, 2026
@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. and removed rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Aug 2, 2026
@clawsweeper clawsweeper Bot added status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Aug 3, 2026
@steipete

steipete commented Aug 5, 2026

Copy link
Copy Markdown
Owner

Maintainer decision (product call resolved): yes — the existing "Refresh all providers on menu open" preference should also force token-cost scans, with a floor: keep a minimum interval (60s) between forced cost scans so rapid menu open/close cycles can't hammer the scanner (we just landed #2646 bounding exactly that subsystem's memory behavior; let's not reintroduce pressure via the UI path).

@betive37 — could you rebase onto current main and add that floor (bypass the TTL on menu open only if the last forced scan is >60s old)? With that, this is mergeable. If you don't have time, say so and we'll carry the rebase over the line with credit preserved.

@betive37
betive37 force-pushed the menu-open-cost-refresh branch from f716c62 to 29c7f84 Compare August 7, 2026 21:47
@betive37

betive37 commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

Rebased onto current main (ported to the ProviderInstanceID migration) and added the floor in 29c7f84: scheduleForcedTokenRefresh() now drops the menu-open request — it neither runs nor queues a pending pass — unless the last forced all-provider scan started more than 60s ago (forcedTokenRefreshMinInterval).

The timestamp is recorded when any forced all-provider pass starts, so a manual Refresh resets the floor too — opening the menu right after a manual refresh is a no-op instead of a second scan.

Covered by three new tests in UsageStoreManualTokenRefreshTests (within-floor dropped, elapsed-floor runs again, within-floor doesn't queue behind a running sequence).

@betive37

Copy link
Copy Markdown
Contributor Author

@steipete Could you check the code after the rebase?

@betive37

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Aug 10, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

@clawsweeper clawsweeper Bot added merge-risk: 🚨 availability 🚨 Merging this PR could cause crashes, hangs, restart loops, stalls, or process outages. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed proof: sufficient Contributor real behavior proof is sufficient. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels Aug 10, 2026
betive37 and others added 6 commits August 10, 2026 12:57
scheduleForcedTokenRefresh dropped the menu-open request whenever any
token sequence was in flight, but a non-forced sequence can skip
TTL-fresh providers, so the promised forced rescan was lost until the
next TTL tick or manual refresh. Keep the request pending and run one
coalesced forced all-provider pass when the active sequence completes;
re-requests during an in-flight forced all-provider pass (or the
forced-refresh enrichment tail) still coalesce into that pass.
Menu open bypasses the token fetch TTL, so rapid open/close cycles could
hammer the cost scanner. Record when a forced all-provider pass starts
and drop menu-open requests (including the pending-queue path) while the
last forced scan is under 60 seconds old. Manual Refresh runs the same
forced all-provider pass, so it resets the floor too.
@steipete
steipete force-pushed the menu-open-cost-refresh branch from 29c7f84 to 8905ccf Compare August 10, 2026 20:00
@steipete

Copy link
Copy Markdown
Owner

@clawsweeper re-review

Final maintainer pass is pushed at 8905ccf0f2bc49ac387c58cd636e5531a30e3b5d and the PR body now contains signed-app final-behavior proof for the 60-second floor. The branch preserves #2848’s removed standalone timer and 15-minute automatic TTL. Please review this exact head.

@clawsweeper

clawsweeper Bot commented Aug 10, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Aug 10, 2026
@steipete
steipete merged commit 7119055 into steipete:main Aug 10, 2026
9 checks passed
@steipete

Copy link
Copy Markdown
Owner

Merged as 71190551d2f8cc6bdc7d54eeaa763d68f6596289.

Proof:

  • final PR head: 8905ccf0f2bc49ac387c58cd636e5531a30e3b5d, based on exact then-current main 52a092180d3501e446b33a6c0afd215ae5d59be9
  • focused refresh suites: 18/18 passed; repeated five consecutive times after replacing a timing-sensitive fixed sleep with deterministic gate waits (90/90)
  • provider architecture gatekeeper: 38/38 passed
  • full suite: 838 selections across 70 groups completed; one unrelated Spend Dashboard auth-rotation fixture recovered on retry, while the affected refresh suite remained first-pass clean
  • make check: zero violations
  • structured autoreview: TruffleHog clean; no accepted/actionable findings
  • exact-head CI run https://github.com/steipete/CodexBar/actions/runs/31426888478: lint, both macOS shards, Linux x64/arm64, musl, GitGuardian, and aggregate lint-build-test all passed
  • exact-head ClawSweeper review found no actionable issue and accepted the signed runtime proof

Signed runtime proof used a Developer-ID-signed DEBUG bundle and the real status-menu refresh path. Peekaboo verified each menu click. With isolated empty Codex/Claude history roots, the sanitized event trace was:

2026-08-10T19:53:08Z request
2026-08-10T19:53:08Z forced-all-start
2026-08-10T19:53:28Z request
2026-08-10T19:53:28Z suppressed-floor
2026-08-10T19:54:33Z request
2026-08-10T19:54:33Z forced-all-start

A real-history run additionally confirmed that opens after the floor coalesce into a still-active forced pass rather than starting duplicates. The temporary DEBUG observer, isolated data roots, and debug preference were removed before publication. The branch preserves #2848’s removed standalone timer and 15-minute ordinary automatic cost TTL.

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

Labels

merge-risk: 🚨 availability 🚨 Merging this PR could cause crashes, hangs, restart loops, stalls, or process outages. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants