Skip to content

Price Claude bare model IDs via first-party vendor fallback - #3002

Closed
Yuxin-Qiao wants to merge 5 commits into
steipete:mainfrom
Yuxin-Qiao:fix/claude-bare-model-first-party-pricing
Closed

Price Claude bare model IDs via first-party vendor fallback#3002
Yuxin-Qiao wants to merge 5 commits into
steipete:mainfrom
Yuxin-Qiao:fix/claude-bare-model-first-party-pricing

Conversation

@Yuxin-Qiao

@Yuxin-Qiao Yuxin-Qiao commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Claude spend pricing now looks up bare model IDs in first-party models.dev catalogs (Anthropic, OpenAI, Google, Moonshot, MiniMax, DeepSeek) instead of Anthropic-only.
  • Prefixed routes such as opencode-go/deepseek-v4-flash stay on that route and never fall through to another vendor's official price.
  • Pi cache fingerprints and unknown-price refresh now use that same vendor list, so a newly downloaded DeepSeek/MiniMax rate invalidates cache and retriggers a foreground rescan.
  • This prices local Claude Code sessions that record deepseek-v4-flash / kimi-for-coding without inventing a $0.

Policy

A Claude transcript that records only an unqualified model ID is estimated at that vendor's first-party models.dev list price. Prefixed routes stay on that route. This is not a claim about which bill the session actually hit.

Evidence

Current-head local scan (CodexBarCLI cost --provider claude --days 365 --format json, source=local, no prompts or keys):

date bare model tokens estimated USD
2026-07-12 MiniMax-M3 326,175,382 $38.04
2026-07-29 deepseek-v4-pro 53,369,127 $0.53
2026-07-31 deepseek-v4-flash 85,196 $0.0064

kimi-for-coding stays unpriced (not on the first-party vendor list). Full redacted JSON: https://raw.githubusercontent.com/Yuxin-Qiao/CodexBar/fix/claude-bare-model-first-party-pricing/.github/pr-proof/claude-bare-id-cost.json

Local Claude Code JSONL on this machine (~/.claude/projects, 11 files, no prompts or keys):

window model rows
last 30d deepseek-v4-pro 419
last 30d deepseek-v4-flash 23
last 30d kimi-for-coding 10
older MiniMax-M3 1356 (2026-07-12, outside 30d)

All of those IDs are bare (no vendor/ prefix). That is the live transcript shape this PR prices.

Focused after-fix on fbe70c3e9 (claude cost prices bare first-party model IDs from vendor catalogs):

claudeCostUSD("deepseek-v4-flash", input=100, output=5)
  == (100 * 0.14e-6) + (5 * 0.28e-6)
  == 0.0000154 USD
claudeCostUSD("opencode-go/deepseek-v4-flash", …) stays on the opencode-go rate (0.07 / 0.14)
claudeModelsDevPricingTargets("deepseek-v4-flash") includes deepseek

Test plan

  • make check
  • make test (74/74 groups)
  • Local Claude transcripts use bare deepseek-v4-flash / kimi-for-coding / deepseek-v4-pro
  • Prefixed opencode-go/... stays on that route in claudeCostUSD tests
  • Pi fingerprint and unknown-price refresh reuse Claude first-party vendor IDs
  • CodexBarCLI cost --provider claude --days 365 prices bare MiniMax-M3 / DeepSeek IDs
  • Fetcher stale-catalog refresh prices deepseek-v4-flash
  • Pi cache invalidates when DeepSeek first-party rates change
  • Open native Usage & Spend after this lands with Show partial spend totals when some subscriptions lack prices #3001 so Claude can show a dollar amount

Co-authored-by: Cursor <cursoragent@cursor.com>
@clawsweeper

clawsweeper Bot commented Aug 17, 2026

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

@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: e0b22be9a4

ℹ️ 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 on lines +860 to +863
"google",
"moonshot",
"minimax",
"deepseek",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Include Claude fallback vendors in the Pi pricing key

When a Pi/OMP Claude session uses one of these newly supported bare IDs, PiSessionCostScanner persists the per-message cost and prefers that complete cached cost in buildReport. Its pricing key still fingerprints only the Codex providers plus anthropic (PiSessionCostScanner.swift:255-259), so a rate change under google, moonshot, minimax, or deepseek does not force unchanged session files to be repriced and the displayed spend can remain obsolete indefinitely. Include this fallback vendor set in the pricing fingerprint and cover the invalidation path with a focused Pi scanner test.

AGENTS.md reference: AGENTS.md:L5-L5

Useful? React with 👍 / 👎.

"deepseek",
]

private static func claudeModelsDevPricingTargets(for rawModel: String) -> [(providerID: String, modelID: String)] {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reuse Claude pricing targets for unknown-model refresh

For a foreground load where the cached catalog is less than 24 hours old but more than 15 minutes old and lacks a bare model that now exists only under one of these first-party vendors, the initial scan is unpriced and unknownPricingRefreshRequest still requests only anthropic/<model>. The refresh downloads the global catalog but then checks availability under anthropic, returns .unavailable, and skips the recursive rescan, so this load remains unpriced despite the newly downloaded vendor rate. Expose and reuse claudeModelsDevPricingTargets in the fetcher, with a focused foreground-refresh test.

AGENTS.md reference: AGENTS.md:L5-L5

Useful? React with 👍 / 👎.

@clawsweeper clawsweeper Bot added 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. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Aug 17, 2026
@clawsweeper

clawsweeper Bot commented Aug 17, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed August 17, 2026, 11:24 AM ET / 15:24 UTC.

ClawSweeper review

What this changes

This PR estimates costs for bare Claude transcript model IDs from selected first-party models.dev vendor catalogs, while retaining explicit-route pricing and synchronizing cache and refresh targets.

Merge readiness

⚠️ Ready for maintainer review - 3 items remain

Keep open for maintainer product-direction review. The implementation and real CLI proof are coherent, but the fallback intentionally changes CodexBar’s documented provider-scoped pricing rule for Claude transcripts.

Priority: P2
Reviewed head: b66dd62cfbe36aa3fba591cb29330a94bf57a526
Owner decision: Required. See Decision needed.

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) The patch is focused, repairs the earlier refresh/cache gaps, and includes credible after-fix CLI evidence; only product-policy approval remains.
Proof confidence 🐚 platinum hermit (4/6) ✨ media proof bonus Sufficient (linked_artifact): A redacted current-head CLI JSON artifact shows bare MiniMax and DeepSeek Claude transcript IDs resolving to observed estimates while an unsupported Kimi ID remains unpriced.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (linked_artifact): A redacted current-head CLI JSON artifact shows bare MiniMax and DeepSeek Claude transcript IDs resolving to observed estimates while an unsupported Kimi ID remains unpriced.
Evidence reviewed 6 items Current documented contract: Current main says pricing is scoped by provider and model ID to avoid accidental cross-provider pricing, and maps Claude logs to Anthropic.
Current-main behavior: Current main resolves Claude catalog prices only through the Anthropic provider before falling back to bundled Claude pricing.
Proposed fallback policy: The branch searches Anthropic, OpenAI, Google, Moonshot, MiniMax, and DeepSeek for bare IDs, in that order; prefixed IDs use the existing explicit-route target resolver.
Findings None None.
Security None None.

How this fits together

CodexBar scans local Claude and Pi session transcripts, resolves model prices from models.dev, then exposes estimated spend through its CLI and Usage & Spend views. This change sits between parsed model IDs and the price/cache layer.

flowchart LR
  A[Local session transcripts] --> B[Claude model identifier]
  B --> C{Bare or prefixed route?}
  C -->|Bare| D[Selected first-party catalogs]
  C -->|Prefixed| E[Explicit route catalog]
  D --> F[Cost estimate and cache key]
  E --> F
  F --> G[CLI and Usage Spend output]
Loading

Decision needed

Question Recommendation
Should CodexBar replace its documented Anthropic-only, provider-scoped Claude pricing with a selected-vendor first-party price heuristic for bare transcript IDs? Preserve provider-scoped pricing: Keep bare Claude IDs unpriced until transcript data can identify the actual billing route.

Why: The branch deliberately changes what an existing user’s historical spend estimate means; source cannot establish whether that policy tradeoff is acceptable.

Before merge

  • Resolve merge risk (P1) - Current documentation promises provider-scoped pricing to avoid cross-provider collisions; this PR instead assigns bare Claude IDs to the first selected vendor catalog that contains the name, changing estimates for existing local histories without recorded route provenance.
  • Complete next step (P2) - A maintainer must decide whether bare Claude model IDs may cross vendor boundaries for estimated pricing; this is policy rather than a mechanical repair.
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Production versus tests production +62/-4, tests +288/-16, proof artifact +53 The production change is narrowly concentrated in lookup, refresh, and cache-key behavior and is accompanied by focused regression coverage.

Merge-risk options

Maintainer options:

  1. Keep provider-scoped estimates (recommended)
    Do not merge the cross-vendor fallback unless a supported source can identify the billing route.
  2. Approve the estimate policy
    Accept the vendor-priority heuristic and document that bare IDs represent a first-party list-price estimate rather than a confirmed bill.

Technical review

Best possible solution:

Keep provider-scoped estimates unless a maintainer explicitly adopts the bare-ID heuristic; if adopted, update the public pricing contract to explain vendor order, estimate limitations, and cache refresh behavior.

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

Not applicable as a bug reproduction: this is new estimation behavior, and the current-head JSON artifact directly demonstrates bare IDs receiving prices in a local CLI scan.

Is this the best way to solve the issue?

Unclear: the implementation is internally consistent, but it intentionally replaces the documented provider-scoped contract with a vendor-priority heuristic that needs product approval.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 2fe9de487f8a.

Labels

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient. A redacted current-head CLI JSON artifact shows bare MiniMax and DeepSeek Claude transcript IDs resolving to observed estimates while an unsupported Kimi ID remains unpriced.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (linked_artifact): A redacted current-head CLI JSON artifact shows bare MiniMax and DeepSeek Claude transcript IDs resolving to observed estimates while an unsupported Kimi ID remains unpriced.
  • remove status: 📣 needs proof: Current PR status label is status: 👀 ready for maintainer look.
  • remove rating: 🦪 silver shellfish: Current PR rating is rating: 🐚 platinum hermit, so this older rating label is no longer current.

Label justifications:

  • P2: This is a bounded change to spend-estimation behavior for locally recorded Claude sessions.
  • merge-risk: 🚨 compatibility: Existing Claude histories can gain different displayed estimates based on a new vendor-selection policy.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (linked_artifact): A redacted current-head CLI JSON artifact shows bare MiniMax and DeepSeek Claude transcript IDs resolving to observed estimates while an unsupported Kimi ID remains unpriced.
  • proof: sufficient: Contributor real behavior proof is sufficient. A redacted current-head CLI JSON artifact shows bare MiniMax and DeepSeek Claude transcript IDs resolving to observed estimates while an unsupported Kimi ID remains unpriced.

Evidence

What I checked:

Likely related people:

  • Peter Steinberger: Current main’s pricing and documentation lines are attributed to this area’s latest main history. (role: recent main-path contributor; confidence: medium; commits: dc3ea3206c70, 2fe9de487f8a; files: Sources/CodexBarCore/Vendored/CostUsage/CostUsagePricing.swift, docs/model-pricing.md)
  • Yuxin Qiao: Recent main history includes provider-qualified model pricing and refresh work by this contributor, beyond the proposed branch. (role: recent cost-pricing contributor; confidence: medium; commits: 728ca278d440, 2371835a13d4; files: Sources/CodexBarCore/Vendored/CostUsage/CostUsagePricing.swift, Sources/CodexBarCore/CostUsageFetcher.swift)

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Obtain a maintainer decision on the bare-ID estimation policy and align the published pricing contract with that decision.

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 (6 earlier review cycles)
  • reviewed 2026-08-17T06:48:43.492Z sha e0b22be :: needs real behavior proof before merge. :: [P2] Include fallback vendors in the Pi pricing key | [P2] Reuse Claude targets for unknown-model refresh
  • reviewed 2026-08-17T08:24:21.815Z sha e0b22be :: needs real behavior proof before merge. :: [P2] Fingerprint all Claude fallback vendors | [P2] Reuse Claude targets for unknown-price refresh
  • reviewed 2026-08-17T11:00:02.115Z sha fbe70c3 :: needs real behavior proof before merge. :: none
  • reviewed 2026-08-17T13:09:47.063Z sha 576f6a0 :: needs real behavior proof before merge. :: none
  • reviewed 2026-08-17T13:21:24.303Z sha 576f6a0 :: needs real behavior proof before merge. :: none
  • reviewed 2026-08-17T14:10:07.731Z sha f4f211e :: needs real behavior proof before merge. :: [P2] Cover the fallback refresh and Pi cache paths

@Yuxin-Qiao

Copy link
Copy Markdown
Contributor Author

After-fix proof

Local Claude Code JSONL on this machine (~/.claude/projects, 11 files; no prompts or keys):

  • last 30d: deepseek-v4-pro 419, deepseek-v4-flash 23, kimi-for-coding 10
  • older: MiniMax-M3 1356 on 2026-07-12 (outside 30d)
  • all of those IDs are bare (no vendor/ prefix)

That is the transcript shape this PR prices. Focused tests on e0b22be9a:

  • claude cost prices bare first-party model IDs from vendor catalogs passed
  • claude cost does not cross charge a prefixed route onto first-party rates passed

Not claimed fixed here: Pi cache fingerprint and unknown-model refresh still Anthropic-only (review P2s). Native Usage & Spend still needs #3001 so a priced Claude row can surface in the group total.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Aug 17, 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 exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Bare DeepSeek IDs now invalidate Pi pricing caches and trigger models.dev refresh on the same vendor list used for lookup.

Co-authored-by: Cursor <cursoragent@cursor.com>
@Yuxin-Qiao

Copy link
Copy Markdown
Contributor Author

After-fix proof

fbe70c3e9 prices a bare deepseek-v4-flash Claude ID from the DeepSeek catalog:

claudeCostUSD(input=100, output=5) == 0.0000154 using DeepSeek 0.14 / 0.28 per million (not Anthropic).

Prefixed opencode-go/deepseek-v4-flash stays on the OpenCode Go rate. claudeModelsDevPricingTargets now feeds unknown-price refresh and Pi cache fingerprints, so those vendors invalidate cache the same way lookup works.

Focused test claude cost prices bare first-party model IDs from vendor catalogs passed.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Aug 17, 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 exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Aug 17, 2026
The pricing-file change left CodexParserHash.generated.swift stale and failed lint.

Co-authored-by: Cursor <cursoragent@cursor.com>
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Aug 17, 2026
@Yuxin-Qiao

Copy link
Copy Markdown
Contributor Author

Lint should be unblocked: regenerated CodexParserHash.generated.swift after the CostUsage pricing change (576f6a01e).

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Aug 17, 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 exact_review_queue).
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. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Aug 17, 2026
Yuxin-Qiao and others added 2 commits August 17, 2026 22:00
…back.

Google is now a Claude first-party pricing vendor, so the unrelated-catalog case uses Groq instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
…scripts.

Document the first-party estimate policy, cover the fetcher/Pi paths, and attach a redacted local cost scan.

Co-authored-by: Cursor <cursoragent@cursor.com>
@Yuxin-Qiao

Copy link
Copy Markdown
Contributor Author

Current-head proof (b66dd62cf):

CodexBarCLI cost --provider claude --days 365 --format json on this machine (local JSONL, no prompts):

  • MiniMax-M3 2026-07-12 → $38.04
  • deepseek-v4-pro 2026-07-29 → $0.53
  • deepseek-v4-flash 2026-07-31 → $0.0064

Policy in CostUsagePricing: unqualified Claude IDs use the first-party models.dev list price; prefixed routes stay on that route.

Coverage added:

  • fetcher reprices a bare Claude first-party model after an on demand catalog refresh
  • pi scanner reprices unchanged claude files when deepseek first-party rates change

Redacted JSON: https://raw.githubusercontent.com/Yuxin-Qiao/CodexBar/fix/claude-bare-model-first-party-pricing/.github/pr-proof/claude-bare-id-cost.json

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Aug 17, 2026

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@clawsweeper clawsweeper Bot removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Aug 17, 2026
@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. labels Aug 17, 2026
@clawsweeper

clawsweeper Bot commented Aug 17, 2026

Copy link
Copy Markdown

ClawSweeper status: review started.

I am starting a fresh review of this pull request: Price Claude bare model IDs via first-party vendor fallback This is item 1/1 in the current shard. Shard 0/1.

This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking.

Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted.

@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: b66dd62cfb

ℹ️ 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".

Self.claudeModelsDevProviderID,
"openai",
"google",
"moonshot",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Resolve the observed bare Kimi alias

For Claude transcripts whose bare model is kimi-for-coding, this list never queries the separate kimi-for-coding models.dev provider already recognized by codexModelsDevPricingTargets; consequently neither direct lookup nor unknown-model refresh can resolve its vendor pricing. The newly added .github/pr-proof/claude-bare-id-cost.json demonstrates the regression remains: that exact model has 209,202 tokens but costUSD: null. Add the Kimi provider and required model-alias mapping to the shared target/fingerprint logic, with a focused test for this observed transcript value.

Useful? React with 👍 / 👎.

steipete added a commit that referenced this pull request Aug 17, 2026
@steipete

Copy link
Copy Markdown
Owner

Thanks @Yuxin-Qiao! This landed via #3012, which carried your commits onto current main and fixed the CI failures (stale parser fingerprint after #2946, shifted gatekeeper anchors, a vendor-collision ordering hazard, and a test shard reading the ambient Codex database). The changelog credits you. Closing as superseded.

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

Labels

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