Repository navigation
fix: stale sign-off pins block first publication, and calculator entries survive a resize - #3575
Conversation
…in is stale The first-publication plan checked only that reviewedContentSha256 looked like a SHA-256. It now recomputes the pin through the clinical:review contract (forms against data/forms-catalog.json, services against the curated records) and refuses any record edited since its sign-off. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016imb8DCuk85z3FWRDDyZx5
…breakpoint The calculator page mounts ClinicalMathPanel in the sidebar at 1280px and wider, and in the mobile column below that. Each mount had its own state, so resizing across the breakpoint wiped everything entered. The page now holds one in-memory state and passes it to whichever panel is mounted. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016imb8DCuk85z3FWRDDyZx5
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
There was a problem hiding this comment.
BigSimmo has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.
🤖 CodeAnt AI — Review Status
|
Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude encountered an error after 2s —— View job I'll analyze this and get back to you. |
PR Summary by QodoReject stale publication sign-offs and preserve calculator entries on resize
AI Description
Diagram
High-Level Assessment
Files changed (5)
|
🏁 CodeAnt Quality Gate ResultsCommit: ✅ Overall Status: PASSEDQuality Gate Details
|
|
Warning Review limit reachedYour organization has reached its usage spending cap. Adjust your spending cap in the billing tab. Next included review available in 41 minutes. View limit details
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
Code Review by Qodo
No findings for this group No findings for this group No findings for this group Resolved findings 1.
|
There was a problem hiding this comment.
All reported issues were addressed across 5 files
You’re at about 91% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
|
Auto-fix isn't included in your plan ↗ |
A review matched by slug alias could carry a current pin for a different record. The plan now requires the review's own id (service) or code (form) to be the record being published. The curated service records are loaded from the repository root rather than the working directory. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016imb8DCuk85z3FWRDDyZx5
CodeAnt PR Risk: Low Risk
Assessed commit: |
|
Code review by qodo was updated up to the latest commit a7e6bc1 |
- Reject unsigned merged service details - Require matching reviewed record identities - Resolve curated data from project root - Separate missing-content errors from real drift
Qodo Fixer✅ Committed (6) · ☑ Fixed (6) Commits pushed directly to this PR — no separate fix PR opened. Process — 6 fixed
|
…ollow-ups The bot's search-page change gave each layout its own calculator state again, so entries were lost across the 1280px resize (the fix this PR exists for), and its publish-script rewrite changed refusal behaviour (a new legacy-cost refusal) without review. Restores the reviewed a7e6bc1 code. Reverts 5ebcb55, 11f5961 and 11d42e2. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016imb8DCuk85z3FWRDDyZx5
|
Reverted the three Qodo Fixer commits (5ebcb55, 11f5961, 11d42e2) in cfcffe1, which restores the reviewed a7e6bc1 tree exactly.
With the revert, the two regression suites pass 14 of 14 locally. Generated by Claude Code |
Code Review ✅ Approved 2 closed / 2 findings🔴 High risk · Recomputing sign-off pins changes the clinical-content publication gate; incorrect checks could block approved guidance or allow stale clinical content to publish. Sign-off checks now recompute each first-publication content pin, refusing stale or unverifiable records, and the calculator page keeps a single state across the 1280 px breakpoint. Two issues from this session were resolved: calculator state is reset at the breakpoint again, and the form identity check falls back to ✅ 2 closed✅ Bug: Calculator state is reset at the breakpoint again
✅ Security: Form identity check falls back to review.id when code is missing
VerificationRules No rules evaluated Functional validation Not enabledAuto-approval Approved For more verification details, comment OptionsAuto-apply is off → Gitar will not commit updates to this branch. Comment with these commands to change the behavior for this request:
Important Your trial ends in 5 days — upgrade now to keep code review, CI analysis, auto-apply, custom automations, and more. Was this helpful? React with 👍 / 👎 | Gitar |
|
Production UI (3) failed one test on cfcffe1: I don't think this PR caused it. The PR only changes the first-publication script, the bedside calculator panel and the calculators search page. Nothing here touches the tools launcher or services routing, and the failure is a hydration timeout, not an assertion about content. I'll re-run the failed job once to confirm. Generated by Claude Code |
Main carries #3574 (squash of this branch's earlier commits) and #3575, which already ships a stricter sign-off pin check. This merge keeps main's pin check, adds this branch's --execute credential guard, drops a broken bot commit (b0adab7), and repairs two others (stray JSX after the handover page's last line, and a setState-in-effect lint error in the note editor). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016imb8DCuk85z3FWRDDyZx5
User description
Summary
These are the two follow-ups the owner approved from PR #3574.
reviewedContentSha256looked like a SHA-256, so a record edited after its sign-off could still be planned for publication. After, the plan works out each pin again through theclinical:reviewcontract and refuses any record whose content changed since sign-off. Forms are checked againstdata/forms-catalog.jsonand services against the curated records. A service whose curated records cannot be loaded is also refused. All 54 form pins and all 21 reviewed service pins in the repository still match.Areas touched: App experience, Clinical reference content, Answer engine
Verification
npx vitest runon 7 suites (calculators, clinical math, first-publication CLI):Test Files 7 passed (7) Tests 119 passed (119)Tests 1 failed (1)) and passes with it.npm run typecheck:[gate-receipts] recorded a pass for "typecheck:internal" (10176 input files).npx eslint --max-warnings=0on the changed files: cleannpm run check:diff-integrity -- --base origin/main:PASS — 2 changed test file(s), 10 -> 13 test case(s)npm run check:calculator-content:CALCULATOR_CONTENT_PASS sources=ok golden-vectors=ok rights=ok--kind form):First-publication plan ready: 54 record(s) across 1 batch(es)Risk and rollout
Notes
🤖 Generated with Claude Code
https://claude.ai/code/session_016imb8DCuk85z3FWRDDyZx5
Generated by Claude Code
Summary by cubic
Fixes two follow-ups from PR #3574: stale sign-off pins now block first publication, and bedside calculator entries survive window resizes.
Changes
clinical:reviewcontract — forms againstdata/forms-catalog.json, services against curated records loaded from the repository root — and refuses any record whose content changed since sign-off, any service pin whose content cannot be loaded, and any service record carrying legacy cost fields not covered by the sign-off.Written for commit cfcffe1. Summary will update on new commits.
CodeAnt-AI Description
Prevent outdated clinical approvals from publishing changed content and preserve calculator entries during resizing
What Changed
Impact
✅ Changed clinical content cannot rely on an outdated approval✅ Calculator entries survive desktop and mobile resizing💡 Usage Guide
Checking Your Pull Request
Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.
Talking to CodeAnt AI
Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:
This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.
Example
Preserve Org Learnings with CodeAnt
You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:
This helps CodeAnt AI learn and adapt to your team's coding style and standards.
Example
Retrigger review
Ask CodeAnt AI to review the PR again, by typing:
Check Your Repository Health
To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.
Summary by CodeRabbit