Repository navigation
ci: read the ops-cadence price date from price_table.py - #847
Conversation
Since #792, cost.py only aliases LAST_UPDATED to DEFAULT_PRICE_TABLE["last_updated"], so the sed for a literal date printed nothing and every weekday run would post a false "missing or unparseable" price warning. The sed now reads "last_updated" from price_table.py, and the warning and reminder text name that file and its markers. A regression test takes the sed pattern and file from the workflow and checks they give exactly DEFAULT_PRICE_TABLE["last_updated"]. The workflow stays disabled_manually; turning it on is the owner's call. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: f2bfa08f-32ec-44a4-9681-cc28cf06fc84) |
🤖 Claude reviewNo blocking issues. One minor quality note. ReviewCore change —
|
Answers the Claude review note on #847: price_step.py imports yaml, which is not an SDK dependency. The docstring and the proof README now say so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Re the Claude review note on 🤖 Addressed by Claude Code |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: 4c2bf139-6cb0-4c3e-8973-c4383e4b2713) |
🤖 Claude reviewLGTM - no blocking issues. The change is a targeted, correct fix: the One minor observation worth noting for future maintainers, not blocking:
|
|
Re the second Claude review note (the test regex expects a 🤖 Addressed by Claude Code |
Summary
ops-cadence.ymlreads the price-table date from"last_updated"insdk/agentguard/price_table.py. Since Merge the two price tables and fix current-model pricing #792,cost.pyonly hasLAST_UPDATED = DEFAULT_PRICE_TABLE["last_updated"], so the oldsedfor a literal date printed nothing and every weekday run would post a false "missing or unparseable" warning.price_table.pyand theDEFAULT_PRICE_TABLEmarkers (version,last_updated,verified) instead ofcost.pyandLAST_UPDATED.test_ops_cadence_reads_the_price_table_dateinsdk/tests/test_ci_guardrails.py. It takes thesedpattern and file from the workflow and checks that they give exactlyDEFAULT_PRICE_TABLE["last_updated"]. If the date moves again, CI fails.ops/FOLLOWUP.md: the price-check defect entry is replaced by a short note that the workflow stays disabled until the owner turns it on.Goal: a correct price-age check when the workflow runs again. Scope: one
sedline and five message lines inops-cadence.yml, one test, one follow-up note. Non-goals: turning the workflow on, changing prices orprice_table.py, changing the 90-day rule. Done: the check reads the real date, the regression test fails before and passes after, the checks below pass, and the proof is saved (ops/04-DEFINITION_OF_DONE.md).Related Issues
Follow-up recorded in #846 (
ops/FOLLOWUP.md). The date moved in #792.Proof
Saved under
proof/ops-cadence-price-check/(Windows 11, Python 3.13.2, Git Bash 5.2.37;makeis not installed, so each command ran directly).verify.pyon the unchanged workflowsedfinds[]ops-cadence.yml, extracted with PyYAML,ghstubbed (guarded), Monday forcedprice_date=2026-09-26 price_age=9, no warning; +100 days: "109 days since last hand-verify" reminder; key renamed in a copy: warning plus "missing or unparseable"python scripts/sdk_preflight.pypython scripts/review_readiness_guard.pypython scripts/ci_tools_requirements_guard.pypytest sdk/tests/test_architecture.pypytest sdk/tests/test_ci_guardrails.py sdk/tests/test_cost.pyruff checkonsdk/agentguard/and the changed testpython scripts/sdk_release_guard.pypytest sdk/tests/ --cov=agentguard --cov-fail-under=80python proof/ops-cadence-price-check/verify.pyNot run here:
actionlintandshellcheckare not installed on this host. The Actionlint workflow runs both on this PR.showwork session
ops-cadence-price-check: VERIFIED, all checks green, withverify.pyas the declared acceptance check.Review Readiness
sedreads and the issue text change. Trigger (weekday cron plus manual dispatch), permissions, timeouts, concurrency, artifacts and spend do not change. The workflow isdisabled_manually(last run 2026-06-11), so nothing runs until someone turns it on.Risk And Rollback
Low. If
price_table.pychanges the"last_updated"line format, the workflow posts the "missing or unparseable" warning (fail loud), and the new test fails in CI first. To roll back, revert this commit.Tradeoff:
sedon the source line keeps the step free of a Python setup and an SDK import. Reading the value through Python would survive any reformat, but the test already catches a reformat.Scope
ops/FOLLOWUP.md)Checklist
make checkpasses: 1592 passed, 3 skipped, coverage 93%; ruff exit 0make structuralpasses (9 passed)make securitypasses: not run, no SDK runtime code changedverify.py, stubbed workflow-step runs__init__.pyexports changed,ops/02-ARCHITECTURE.mdupdated. N/A.🤖 Generated with Claude Code
Note
Low Risk
CI workflow and guardrail test only; no SDK runtime or pricing logic changes, and the workflow stays disabled.
Overview
Fixes a broken ops-cadence price staleness check: after #792 moved the canonical date to
DEFAULT_PRICE_TABLE["last_updated"]insdk/agentguard/price_table.py, the workflow stillsed'd a literalLAST_UPDATEDline incost.py, got nothing, and would have filed false "missing or unparseable" warnings on every run.The workflow now parses
"last_updated"fromprice_table.pyand updates issue/reminder copy to point atDEFAULT_PRICE_TABLE(version,last_updated,verified) instead ofcost.py/LAST_UPDATED. A regression test intest_ci_guardrails.pymirrors the workflowsedand asserts it matchesDEFAULT_PRICE_TABLE["last_updated"].ops/FOLLOWUP.mdrecords the fix; the workflow remains manually disabled until an owner re-enables it.Proof lives under
proof/ops-cadence-price-check/(verify.py, stubbed Git Bash runs, showwork receipts).Reviewed by Cursor Bugbot for commit 6b90b4a. Bugbot is set up for automated code reviews on this repo. Configure here.