ReviewOS

also looking at this

stacks/buddy

feat(setup): make the presets deliver their descriptions, and delete the mode nothing could reach

#1440
Merged glennmichael123 wants to merge chore/decisions into main
8 files +99 -50
9 days ago

The two remaining audit decisions, both decided this session: preset behavior follows the descriptions, and restrictedMode goes.

Presets: the description is now the contract

Six presets declared strategy: 'all' against their own descriptions, and since #1412 wired presets that data is live — a fresh buddy setup on Standard ("Daily patch updates, weekly minor updates, monthly major updates") proposed majors three times a week.

The mechanism: the generated workflow's scheduled tick now tells the update job which strategy fired. schedulePlan folds the preset's custom cadences in as real schedule slots (they previously reached only the generated config, where nothing in the unified workflow read them), each slot records its strategy, determine-jobs surfaces it as a new update_strategy output, and the update job's strategy resolution becomes inputs.strategy || update_strategy || preset default.

The data, per preset:

PresetBeforeAfter
standardone Mon/Wed/Fri slot, alldaily patch, weekly-minor (Mon), monthly-major (1st)
minimalone weekly slot, allweekly patch + monthly-updates catch-all
high-frequencyevery-6h all slot beside its four documented slotsthe four slots are the cadence (patch 6/12/18h, minor at midnight); the catch-all that double-ran with a wider strategy is gone
securityevery-4h all + a security-patches slot duplicating itevery-4h patch + weekly-minor; the duplicate is gone

docker / monorepo / custom / testing promise no tiers and are unchanged. Also corrects docs/cli/setup.md's claim that "the workflow it writes is the same either way" — true before #1412, false since.

restrictedMode: deleted

Documented in docs/ai/agent.md as "what a run triggered by someone without write access gets" — and no code path could ever select it: its only reference was the package re-export, because checkPermission refuses non-collaborators every agent-running command before a mode is chosen. The mode, its registry entry, its export and its docs row are gone; the docs paragraph now describes the gate that actually fires. The reads-only-tier test repoints at plan, which has the same tier list and is reachable.

Tests

New per-slot update strategies describe pins: every standard slot carries its strategy, the dispatch emits update_strategy on the right cron, high-frequency is exactly its four slots, security no longer duplicates its cadence. Updated the assertions that pinned the old data. bun test: 2236 pass / 0 fail; typecheck, pickier, check-docs green.

🤖 Generated with Claude Code

8 changed files on the files tab, with 0 review threads.

Sign in to comment on this pull request.