write_card: treat a blank history_entry as absent on UPDATE and NOOP - #207
Conversation
|
Warning Review limit reachedNext included review available in 7 minutes. View limit detailsLimit details: You’ve used all 2 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review. 📝 WalkthroughWalkthroughThe write-card tool treats empty and whitespace-only Changeshistory_entry handling
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to The change makes blank history entries behave as absent for UPDATE and NOOP while preserving rejection of non-blank entries and unchanged-card behavior; no actionable merge-blocking risk remains beyond normal checks and review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2 files. ✨ Finishing Touches📝 Generate docstrings
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
smixs
left a comment
There was a problem hiding this comment.
Verified. On main the UPDATE/NOOP guard is history_entry !== undefined, so "" / whitespace is a forged-archive refusal and a model that fills every schema field loops. The tool-boundary trim matches how SUPERSEDE already reads the field; a non-blank entry is still refused; ADD still receives the raw value for the journaled noise-drop. Rejected NOOP leaves the card byte-identical — that assertion is why this should land instead of #205 (same production diff, weaker test).
Philosophy: this is deterministic input normalization at the tool contract, not a new mechanism, not a skill. Design closes the class (blank ≡ absent); the test pins it.
Unproven: the live gpt-5.6-luna 300–500-refusal loop (model behaviour). Unicode whitespace is covered by JS trim(). Ready.
70d3752 to
0c63dd9
Compare
Blank history_entry on UPDATE/NOOP is treated as absent (same trim as SUPERSEDE). A non-blank entry is still refused. A rejected NOOP leaves the card byte-identical.
Reproduced on main with a failing test before the fix. Related to #205: the existing PR does not assert the rejected NOOP card is unchanged.
Summary by CodeRabbit
Bug Fixes
Documentation