Feat/vouch expire stale proposals#136
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThis PR implements the 0.1 surface stabilization with proposal expiration, batch approval, retrieval backend selection, KB synchronization, template-based seeding, and artifact diffing, alongside CLI improvements for output formatting and progress reporting, plus foundational claim validation enforcement and session security hardening. ChangesVouch 0.1 surface stabilization
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related issues
Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Check the comments, other than that LGTM! |
|
Thanks — addressed. This PR is intentionally scoped to #135 only ( |
4adfed3 to
bcff1d6
Compare

What changed
Adds
vouch expire(dry-run by default,--applyto run GC) pluskb.expireon MCP and JSONL. Stale pending proposals (older thanreview.expire_pending_after_days, default 90) are moved fromproposed/todecided/asrejectedwithdecision_reason: expired,decided_by: vouch-expire, and aproposal.expireaudit event. No durable artifacts are written. Starterconfig.yamlfromvouch initnow includesexpire_pending_after_days: 90.Why
The review-gate spec already describes STALE proposal GC and the init template documents
expire_pending_after_days, but nothing enforced it — pending proposals could sit in gitignoredproposed/indefinitely. This closes that gap for multi-agent setups and periodic CI cleanup without bypassing the review gate.Closes #135
What might break
No breaking changes for existing
.vouch/directories:kb.approve/kb.rejectbehavior.vouch expire, newkb.expiremethod (capabilities + JSONL handler list updated).proposed/→decided/when the operator explicitly runsvouch expire --apply(orkb.expirewithapply: true).expire_pending_after_daysin config use the default threshold of 90 days.VEP
Not required — additive CLI/MCP/JSONL surface; on-disk proposal/decided layout and audit event vocabulary already specified in
spec/review-gate.mdandspec/audit-vocabulary.md.Tests
make checkpasses locally (lint + mypy + pytest)tests/test_expire.py)CHANGELOG.mdupdated under## [Unreleased]Summary by CodeRabbit
Release Notes
New Features
vouch approve <id> <id>...with--keep-goingflagvouch review,vouch expire, andvouch diffcommandsvouch init --templatefor template seedingvouch sync-check/sync-applyfor KB directory synchronizationlint,search,pending,expire, anddiffcommandsauto/embedding/fts5/substring)Bug Fixes