Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
688 commits
Select commit Hold shift + click to select a range
add7870
docs: conversation resolution is off — record it, and why to read rev…
BunsDev Aug 2, 2026
6a66577
Merge branch 'main' into feat/cave-wisp-10f-three-next-paths
CompleteDotTech Aug 2, 2026
676f8b6
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 2, 2026
c59a7f8
Merge branch 'feat/cave-2x1em-root-tilde'
BunsDev Aug 2, 2026
fc51c7e
Merge branch 'fix/cave-dpwf4-standalone-budget'
BunsDev Aug 2, 2026
6d5e35c
Update bead interaction history
BunsDev Aug 2, 2026
4daeab5
update code reading design
BunsDev Aug 2, 2026
d9c4471
fix(github): row hand-off goes through the user's own familiar picker…
BunsDev Aug 2, 2026
5642426
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 2, 2026
4bc21c2
Read code blocks against the working tree (cave-f6mu9) (#4197)
BunsDev Aug 2, 2026
cfbebe1
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 2, 2026
9d8eacf
fix(github): keep the row's accent on the hand-off slot (#4205)
BunsDev Aug 2, 2026
1c06da3
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 2, 2026
e83869e
fix(x): hide the X surfaces until their routes land (cave-lsj8u) (#4206)
BunsDev Aug 2, 2026
8f07c34
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 2, 2026
46455d3
chore(beads): recover rejected interaction history (#4204)
BunsDev Aug 2, 2026
f1dade1
test(lifecycle): make the patrol test's ten silent minutes legible an…
BunsDev Aug 2, 2026
cb29b58
docs(release): finalize v0.2.2 changelog
BunsDev Aug 2, 2026
a03b6ee
fix(projects): surface local-only creation failures
CompleteDotTech Aug 2, 2026
6d68459
Merge branch 'main' into fix/project-local-only-error
CompleteDotTech Aug 2, 2026
4d5acde
Merge branch 'main' into fix/project-local-only-error
CompleteDotTech Aug 2, 2026
3cfcdd7
fix(projects): preserve local-only creation errors
CompleteDotTech Aug 2, 2026
062c8eb
fix(projects): surface local-only picker failures
CompleteDotTech Aug 2, 2026
f7a6e13
fix(projects): keep local-only error guidance readable
CompleteDotTech Aug 2, 2026
fab7105
Merge branch 'main' into fix/project-local-only-error
CompleteDotTech Aug 2, 2026
b050855
fix(projects): support throwing-only picker creators
CompleteDotTech Aug 2, 2026
7d312a2
Merge branch 'main' into fix/project-local-only-error
CompleteDotTech Aug 2, 2026
307e34e
Merge pull request #4202 from OpenCoven/fix/project-local-only-error
CompleteDotTech Aug 2, 2026
81f2627
fix(release): allow explicit hidden-X recovery (#4211)
BunsDev Aug 2, 2026
f447bbe
fix(github): safe merge asks which familiar instead of taking the fir…
BunsDev Aug 2, 2026
bfe261f
fix(release): overlay hidden-X recovery tooling (#4212)
BunsDev Aug 2, 2026
89c3a4e
fix(git): allow maintainer-authorized branch cleanup (#4214)
BunsDev Aug 2, 2026
e63df4d
feat(composer): promote a session model to the familiar default (cave…
BunsDev Aug 2, 2026
617609e
fix(worktrees): use an eight-hour retirement cooldown (#4215)
BunsDev Aug 2, 2026
02d9014
fix(git): retain squash PR heads without global scans (#4216)
BunsDev Aug 2, 2026
abfe590
fix(release): accept v0.2.2 Windows runtime (#4217)
BunsDev Aug 2, 2026
251a593
fix(windows): recover transient sidecar cache activation
CompleteDotTech Aug 2, 2026
c950774
fix(projects): keep local registrations visible before familiar setup…
CompleteDotTech Aug 2, 2026
3e54ecd
fix(ios): sustain chat connectivity
BunsDev Aug 3, 2026
2f44d4f
docs: refresh branch protection notes (#4213)
BunsDev Aug 3, 2026
909f188
Merge branch 'main' into fix/cave-kw434-ios-chat-connection
CompleteDotTech Aug 3, 2026
8a973b3
Merge branch 'main' into feat/cave-wisp-10f-three-next-paths
CompleteDotTech Aug 3, 2026
4f82ce3
fix(ios): recover new chat setup
BunsDev Aug 3, 2026
5bf9b5f
docs(worktrees): align workflow retirement cooldown
BunsDev Aug 2, 2026
4f3cb37
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
ca905d8
Update interactions.jsonl
BunsDev Aug 3, 2026
ee1dfc7
fix(composer): render the promote row from the composer's model chip …
BunsDev Aug 3, 2026
69beb07
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
4d5e3ad
chore(beads): land the cave-vmmlf status interaction record (#4225)
BunsDev Aug 3, 2026
1c38a26
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
67cd519
docs(chat): align follow-up cap comment
BunsDev Aug 3, 2026
f1d6618
Compact chat suggested next steps (#4188)
BunsDev Aug 3, 2026
b9097e9
chore(beads): backfill 16 uncommitted interaction records (#4227)
BunsDev Aug 3, 2026
bf9add6
docs(worktrees): align workflow retirement cooldown (#4223)
BunsDev Aug 3, 2026
61b965d
fix(chat): stretch partial follow-up rows
BunsDev Aug 3, 2026
494539c
fix(familiars): stop three surfaces picking a familiar the user never…
BunsDev Aug 3, 2026
17550f5
fix(beads): remove 20 duplicate interaction records (cave-1poit) (#4229)
BunsDev Aug 3, 2026
56c7fdc
fix(reviewer): announce bucket filters outside state updates (#4226)
BunsDev Aug 3, 2026
f873e38
feat(beads): guard against duplicate record ids in .beads/*.jsonl (#4…
BunsDev Aug 3, 2026
e1a7e5c
fix(patrol): retry transient inventory drift instead of failing closed
BunsDev Aug 3, 2026
bfe331c
feat(chat): refine the conversation siderail (#4218)
BunsDev Aug 3, 2026
8ee9c4c
docs(patrol): describe an attempt accurately
BunsDev Aug 3, 2026
bdee5bf
fix(chat): boot-compose asks which familiar instead of picking one (#…
BunsDev Aug 3, 2026
3795bc2
fix(patrol): retry transient inventory drift instead of failing close…
BunsDev Aug 3, 2026
cb463b2
fix(omnigent): open session UI in system browser (#4234)
BunsDev Aug 3, 2026
9c615cb
Merge remote-tracking branch 'fork/codex/propose-fix-for-auto-reply-v…
BunsDev Aug 3, 2026
131e763
Merge remote-tracking branch 'fork/codex/fix-vulnerability-in-release…
BunsDev Aug 3, 2026
6dcf035
feat(x): land the src/app/api/x/ route handlers (#4235)
BunsDev Aug 3, 2026
e8bc3fd
Merge branch 'fix/cave-8syxt-follow-up-review'
BunsDev Aug 3, 2026
235c6b6
Move follow-ups to composer footer band
BunsDev Aug 3, 2026
9ea1c4c
fix(test): match the AppImage strip step by shape, not exact title
BunsDev Aug 3, 2026
65b8c5a
Merge branch 'fix/cave-v59dk-patrol-determinism'
BunsDev Aug 3, 2026
f835628
Update interactions.jsonl
BunsDev Aug 3, 2026
b1f56df
Merge branch 'fix/cave-v991k-patrol-merge-regression'
BunsDev Aug 3, 2026
2c5aa2a
fix: resolve stash-pop conflict markers committed in chat-view
BunsDev Aug 3, 2026
42150eb
fix(ci): use the release step's current name, unbreaking main (#4240)
BunsDev Aug 3, 2026
03ee771
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
eacff5f
fix(test): match the AppImage strip step by shape, not exact title
BunsDev Aug 3, 2026
c8a6c25
Merge branch 'docs/cave-wqzf2-orchestration-spec'
BunsDev Aug 3, 2026
c2be766
fix(beads): replace merge=union with a union-by-record-id merge drive…
BunsDev Aug 3, 2026
c375509
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
b173f04
chore(marketplace): delete the orphaned skill detail drawer and its d…
BunsDev Aug 3, 2026
614de36
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
d4841db
fix(patrol): scope inventory drift to the units it can affect (cave-6…
BunsDev Aug 3, 2026
3b9406a
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
74b5046
fix(hooks): stop the installer disabling the hooks it does not own (#…
BunsDev Aug 3, 2026
bdb9840
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
b3179c0
fix(sidecar): compare allowed roots and candidates in the same namesp…
BunsDev Aug 3, 2026
664ccd2
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
5350c60
docs: record admin push on main as the owner's standing setting
BunsDev Aug 3, 2026
86ad1ec
Merge branch 'feat/cave-wisp-10f-three-next-paths'
BunsDev Aug 3, 2026
f5c2ca9
Update interactions.jsonl
BunsDev Aug 3, 2026
7b4af3b
Merge branch 'fix/retirement-cooldown-workflow-doc'
BunsDev Aug 3, 2026
24286b2
fix(sidecar): restore the 5,887 file-count budget reverted onto main
BunsDev Aug 3, 2026
f0e830e
Merge branch 'fix/cave-kw434-ios-chat-connection'
BunsDev Aug 3, 2026
9804184
Merge branch 'fix/cave-ewnel-strip-step-pin'
BunsDev Aug 3, 2026
8748ed9
Merge branch 'fix/cave-etfnv-conflict-markers'
BunsDev Aug 3, 2026
f1f1d9b
docs(sidecar): record the 5,874/5,877 measurement beside the budget
BunsDev Aug 3, 2026
a50fb82
Merge branch 'main' into fix/restore-sidecar-budget-5887
CompleteDotTech Aug 3, 2026
6d6f5f3
Merge branch 'main' into docs/admin-push-standing
CompleteDotTech Aug 3, 2026
31916a0
fix(build): exclude temporary standalone artifacts
BunsDev Aug 3, 2026
b6851dd
docs: qualify the owner branch-protection exemption
BunsDev Aug 3, 2026
c59d418
Update interactions.jsonl
BunsDev Aug 3, 2026
67d1016
fix(ios): pin the reconnect re-probe by behaviour, unbreaking main
BunsDev Aug 3, 2026
c7738e0
fix(test): assert the iOS reconnect ticker by contract, not by syntax
BunsDev Aug 3, 2026
ddc3630
fix(sidecar): restore the 5,887 file-count budget reverted onto main
BunsDev Aug 3, 2026
ffd8faa
docs(sidecar): record the 5,874/5,877 measurement beside the budget
BunsDev Aug 3, 2026
3fa5067
fix: unblock main — restore the sidecar budget and unpin the iOS reco…
BunsDev Aug 3, 2026
6a283ff
Merge branch 'main' into docs/admin-push-standing
BunsDev Aug 3, 2026
63796cb
Merge branch 'fix/unblock-main-ios-pill-shape'
BunsDev Aug 3, 2026
7da4346
docs: record admin push on main as the owner's standing setting (#4248)
BunsDev Aug 3, 2026
6394b72
Update interactions.jsonl
BunsDev Aug 3, 2026
e7df5ff
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
f17f511
Merge branch 'docs/admin-push-standing'
BunsDev Aug 3, 2026
1a2f825
feat(model-capabilities): unify runtime inventory, defaults, and cont…
CompleteDotTech Aug 3, 2026
f80391d
fix(onboarding): extract official Node archives safely (#4239)
lmvdz Aug 3, 2026
f897b36
fix(ios): one-probe reconnect via last-good URL, short-circuit the sw…
BunsDev Aug 3, 2026
6cebccb
fix(sidecar): bundle missing macOS Piper dylib closure (#4252)
BunsDev Aug 3, 2026
5c5e78f
feat(chat): Thread Signal card becomes a triage surface (#4256)
BunsDev Aug 3, 2026
78f496e
test(mobile): lock Coven Memory response contract
BunsDev Aug 3, 2026
1234e2a
feat(chat): rebuild the Expand reader as Reader.dc.html frame 3a
BunsDev Aug 3, 2026
0010a7b
fix(chat): pay the reader's weight on open, not on every visit to /
BunsDev Aug 3, 2026
202e25d
test(chat): admit askAboutFor to the transcript handler-bag pin
BunsDev Aug 3, 2026
f1a47c2
test(chat): widen the reply pin for quotes, register the reader as a …
BunsDev Aug 3, 2026
a1d9c48
test(chat): name the reader as a consumer of the shared tool tints
BunsDev Aug 3, 2026
c0cada7
test(chat): pin the facade contract on the @import, not a substring
BunsDev Aug 3, 2026
630f17f
fix reader review feedback
Copilot Aug 3, 2026
8ef43d5
Update interactions.jsonl
BunsDev Aug 3, 2026
7f47e20
Merge branch 'main' into feat/cave-zhmto-reader-3a
BunsDev Aug 3, 2026
ecd8c52
feat(chat): rebuild the Expand reader as Reader.dc.html frame 3a (#4255)
BunsDev Aug 3, 2026
e70c4a0
fix(ios): batch bulk reminder actions and stop reverting the whole ba…
BunsDev Aug 3, 2026
320ecb4
chore(beads): record the cave-zhmto close in the interactions log
BunsDev Aug 3, 2026
251fd4a
fix(ios): stop refetching every session each time a threads view appe…
BunsDev Aug 3, 2026
89a1c38
fix(mobile): require HTTPS native pairing
BunsDev Aug 3, 2026
fa6d6c5
chore(beads): record the cave-zhmto close in the interactions log (#4…
BunsDev Aug 3, 2026
a709d40
fix(mobile): prevent refresh response caching
BunsDev Aug 3, 2026
76f30b5
fix(settings): one search-index entry per destination (#4262)
BunsDev Aug 3, 2026
9fe5425
feat(worktrees): auto-lock worktrees holding unrecoverable work (#4260)
BunsDev Aug 3, 2026
9143b0a
fix(chat): render the cited body in the reader, not raw footnote plum…
BunsDev Aug 3, 2026
948749b
fix(chat): render the cited body in the reader, not raw footnote plum…
BunsDev Aug 3, 2026
2a62f13
fix(chat): give the reader real citation chips, not bare links
BunsDev Aug 3, 2026
910c809
fix(chat): give the reader real citation chips, not bare links (#4265)
BunsDev Aug 3, 2026
14c47e0
fix(ios): make destructive swipes recoverable and status writes cance…
BunsDev Aug 3, 2026
50fbc9f
docs: fix the managed worktree command in both agent guides
BunsDev Aug 3, 2026
0d7fa2c
docs: name the real managed worktree directory, not .worktrees/<branch>
BunsDev Aug 3, 2026
5b1077a
docs: fix the managed worktree command in both agent guides (#4266)
BunsDev Aug 3, 2026
6df7d85
fix(lifecycle): stop treating squash-merged PR associations as malformed
BunsDev Aug 3, 2026
5b3b3db
fix(lifecycle): stop treating squash-merged PR associations as malfor…
BunsDev Aug 3, 2026
2fa3e5e
feat(api): persist chat pin as server state so it reaches other clien…
BunsDev Aug 3, 2026
7b2ae0e
Merge remote-tracking branch 'origin/fix/ios-reconnect-pill-pin'
BunsDev Aug 3, 2026
811de8d
test(e2e): cover the Expand reader by rendering it (#4274)
BunsDev Aug 3, 2026
d76e842
Merge branch 'fix/reader-cited-body'
BunsDev Aug 3, 2026
aaf53fc
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
33990a3
Merge branch 'fix/reader-citation-chips'
BunsDev Aug 3, 2026
d1f0c4a
Merge branch 'chore/cave-zhmto-beads-log'
BunsDev Aug 3, 2026
5639079
Merge branch 'docs/cave-l52dt-managed-worktree-command'
BunsDev Aug 3, 2026
d50a036
Merge branch 'feat/cave-zhmto-reader-3a'
BunsDev Aug 3, 2026
b63e717
fix(lifecycle): scope the create gate to errors that can affect creat…
BunsDev Aug 3, 2026
a1a038a
Merge branch 'feat/cmem-ios-p4-cave'
BunsDev Aug 3, 2026
18bd9fe
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
894656e
feat(analytics): rebuild familiar analytics as a dock + stage workbench
BunsDev Aug 3, 2026
0fd37e6
fix(chat): keep Claude tool bubbles through the rate-limit usage noti…
AIalliAI Aug 3, 2026
4fd1207
fix: show role rooms in All familiar scope (#4253)
CompleteDotTech Aug 3, 2026
9fdd7d3
fix(notify): keep the OS banner when the notification sound is Silent…
AIalliAI Aug 3, 2026
92bca4f
fix(analytics): keep one focus trap live and retire away-facing panel…
BunsDev Aug 3, 2026
34f557b
feat(chat): echo the prompt that produced the answer, with edit & rer…
BunsDev Aug 3, 2026
21d3c2e
fix(analytics): fold the dock in a band, and fill the confidence panel
BunsDev Aug 3, 2026
6456fef
fix(analytics): announce the hero trust ring, and stop calling the pu…
BunsDev Aug 3, 2026
316fccc
feat(ios): persist thread archive, pin and delete to the server
BunsDev Aug 3, 2026
6f6af7f
Update interactions.jsonl
BunsDev Aug 3, 2026
7316804
feat(analytics): rebuild familiar analytics as a dock + stage workben…
BunsDev Aug 3, 2026
46892d0
fix(analytics): align scoped workbench evidence
BunsDev Aug 3, 2026
0907e8d
fix(ios): count chats actually removed in the bulk-delete toast
BunsDev Aug 3, 2026
0c83f22
Merge remote-tracking branch 'origin/main' into fix/cave-ioswipe6-ios…
BunsDev Aug 3, 2026
50f43ca
Initial plan
Copilot Aug 3, 2026
7b9509d
docs(design): ledger every Claude Design frame against what landed
BunsDev Aug 3, 2026
ded40b3
fix(notch): keep pill visible across spaces and over fullscreen apps;…
Copilot Aug 3, 2026
8da06a4
feat(chat): give a worktree citation its own source card (SourceCard.…
BunsDev Aug 3, 2026
841e3da
fix(ios): reconcile partial thread deletes
BunsDev Aug 3, 2026
d285b82
Update interactions.jsonl
BunsDev Aug 3, 2026
598ba8e
Merge branch 'fix/cave-c4f97-squash-pr-association'
BunsDev Aug 3, 2026
27ae9b6
Merge branch 'docs/cave-pqi7n-design-ledger'
BunsDev Aug 3, 2026
00e7ba0
fix(windows): keep the notch and quick chat visible across spaces and…
AIalliAI Aug 3, 2026
716a210
feat(ios): remove familiar reordering from the Chats screen (#4280)
BunsDev Aug 3, 2026
b6a08ba
Update interactions.jsonl
BunsDev Aug 3, 2026
1fc0181
fix(chat): make the source card's Open a real action, and the ledger …
BunsDev Aug 3, 2026
6f2389c
fix(ios): show a tool call's argument instead of a bare "{" (#4281)
BunsDev Aug 3, 2026
ae28865
feat(research): render infographic generations as SVG/PNG stat poster…
BunsDev Aug 3, 2026
389562b
fix(research): normalize ~N and word+word for speech; trim per-segmen…
BunsDev Aug 3, 2026
3fd23a4
fix(chat): normalize pseudo-lists and strip orphan footnote refs (cav…
BunsDev Aug 3, 2026
1f75e34
test(e2e): stop the reader spec racing its own cold-start budget (#4286)
BunsDev Aug 3, 2026
b8f0eee
fix(research): hex palette for video renderer — sharp/librsvg renders…
BunsDev Aug 3, 2026
d9cdcc6
test(windows): stop the native-browser fixture flaking on a 15s budge…
BunsDev Aug 3, 2026
6308151
docs: design redundant chat chrome removals
BunsDev Aug 3, 2026
fd38d66
docs: plan redundant chat chrome removals
BunsDev Aug 3, 2026
fbbaef0
fix(chat): remove solo participant header cluster
BunsDev Aug 3, 2026
f675114
fix(ios): remove locked project band from chats
BunsDev Aug 3, 2026
2819c69
docs(chat): correct familiar drag guidance
BunsDev Aug 3, 2026
75d93d1
fix(ios): revert only the card that failed, not the whole task list
BunsDev Aug 3, 2026
3bde7b0
Add /auto mission mode with status and feedback
BunsDev Aug 3, 2026
fe24938
docs(contributing): tell contributors not to merge main into their br…
BunsDev Aug 3, 2026
b318513
Merge branch 'main' of https://github.com/OpenCoven/coven-cave
BunsDev Aug 3, 2026
2178f97
docs: design marketplace brand logos
BunsDev Aug 3, 2026
817476a
feat(ios): familiars-first chat home with session selection in the co…
BunsDev Aug 3, 2026
7d0dadc
test(ios): repoint the task-revert pins and close a hole in one of them
BunsDev Aug 3, 2026
d3e6e5a
Merge remote-tracking branch 'origin/main' into fix/cave-rlmot-per-ca…
BunsDev Aug 3, 2026
644379b
feat(research): render a podcast script as a screenplay, not a flat list
BunsDev Aug 3, 2026
2a8694e
docs(design): Writer Workspace and AnswerFlow are a different product
BunsDev Aug 3, 2026
a411e3b
feat(voice): live call transcript with a spoken-word highlight and in…
BunsDev Aug 3, 2026
cc71ecc
test(chat): unstick the turn-split assertion from the marker chain's …
BunsDev Aug 3, 2026
ddcf499
Merge branch 'feat/cave-zr9dx-live-call-transcript'
BunsDev Aug 3, 2026
95ce680
feat(chat): Rewrite the answer in the reader — Full / Condense / ELI5
BunsDev Aug 3, 2026
b71c697
Merge branch 'feat/cave-xailn-reader-rewrite'
BunsDev Aug 3, 2026
a994ab6
fix(ci): raise the sidecar file budget for the rewrite route, wire a …
BunsDev Aug 3, 2026
141804e
Merge branch 'fix/cave-rlmot-per-card-revert'
BunsDev Aug 3, 2026
8d08a85
feat(settings): centralize voice configuration
BunsDev Aug 3, 2026
af24606
Merge branch 'feat/cave-5i04y-marketplace-brand-logos'
BunsDev Aug 3, 2026
99d3719
fix(ci): restore the auto-status-blocks registration the rebase dropped
BunsDev Aug 3, 2026
98bdea4
fix(ios): Select All should cover only the visible sessions (cave-2qyqu)
BunsDev Aug 3, 2026
baa41ac
fix(ios): mirror /auto into the slash catalog, unbreaking main
BunsDev Aug 3, 2026
c408148
Merge remote-tracking branch 'origin/main' into fix/cave-2qyqu-select…
BunsDev Aug 3, 2026
20fcb32
fix(ios): catalogue /auto so the cross-platform slash contract passes
BunsDev Aug 3, 2026
198b4b2
test: repair two more wiring pins /auto mission mode left red on main
BunsDev Aug 3, 2026
0e2344b
Merge branch 'feat/cave-q00l6-podcast-page'
BunsDev Aug 3, 2026
727bffc
Merge branch 'feat/cave-zr9dx-live-call-transcript'
BunsDev Aug 3, 2026
5a528fd
Merge branch 'feat/cave-l4ttp-analytics-workbench'
BunsDev Aug 3, 2026
a9e897d
Merge branch 'feat/cave-xailn-reader-rewrite'
BunsDev Aug 3, 2026
a429b7a
Merge branch 'fix/ios-catalog-auto'
BunsDev Aug 3, 2026
23c492c
Merge remote-tracking branch 'origin/main' into fix/cave-2qyqu-select…
BunsDev Aug 3, 2026
0e8834e
Merge branch 'feat/cave-ti4j9-voice-settings'
BunsDev Aug 3, 2026
389348b
chore(sidecar): raise the runtime file-count budget to 5,915 for the …
BunsDev Aug 3, 2026
4612ab7
Merge branch 'feat/cave-zr9dx-live-call-transcript'
BunsDev Aug 3, 2026
81ea2d5
Merge branch 'fix/cave-2qyqu-select-all-query'
BunsDev Aug 3, 2026
8b643af
Merge remote-tracking branch 'origin/copilot/fix-code-comments'
BunsDev Aug 3, 2026
611f646
fix(ios): drop the duplicate /auto slash entry
BunsDev Aug 3, 2026
c9ebc46
docs(search): define global search foundation
BunsDev Aug 3, 2026
e6bfa96
Merge branch 'fix/cave-8nndo-spoken-text-pacing'
BunsDev Aug 3, 2026
51f0149
feat(settings): centralize voice configuration
BunsDev Aug 3, 2026
f6c9e4a
Merge branch 'feat/cave-ychtl-global-search-foundation'
BunsDev Aug 3, 2026
8661f8e
Merge branch 'fix/ios-dedupe-auto'
BunsDev Aug 3, 2026
cbfc4c1
Merge branch 'fix/cave-cqll3-remove-solo-participants'
BunsDev Aug 3, 2026
426839c
Merge branch 'fix/cave-olkpe-chat-readability'
BunsDev Aug 3, 2026
50ca1d1
Harden /auto mission flow and prompt context
BunsDev Aug 3, 2026
a0abfbc
Merge branch 'feat/cave-ti4j9-voice-settings'
BunsDev Aug 3, 2026
cb56775
Update interactions.jsonl
BunsDev Aug 3, 2026
bf039d7
chore(release): stamp v0.2.3 (#4304)
BunsDev Aug 3, 2026
8063a0a
feat(canvas,voice): playable sketches, a waiting-room arcade, and iOS…
BunsDev Aug 3, 2026
3206ce4
feat(code): rebuild the Coding Room as a three-zone workbench (#4311)
BunsDev Aug 4, 2026
77fbc9e
fix(voice): snap the call overlay's spacing to the scale, bank the hi…
BunsDev Aug 4, 2026
8c7fafd
Add fast local worktree status dashboard (#4313)
BunsDev Aug 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
127 changes: 99 additions & 28 deletions .agents/skills/branch-curator/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,42 @@ Preserve a branch or worktree when any of these signals apply:
- Any non-closed Bead names the branch, worktree, surface, or owner.
- It heads an open or draft pull request, or its CI is still running.
- It is a same-day backup, rescue, archive, or WIP snapshot without a disposition.
- Its tip or reflog changed in the last 24 hours. Recency is unconditional;
- Its tip or reflog changed in the last 8 hours. Recency is unconditional;
known ownership does not override it.
- It contains local or remote commits whose disposition is not proven.
- Its local branch ref is symbolic rather than a direct commit ref.

Treat `main`, the default branch, Beads/Dolt sync refs such as
`__dolt_remote_info__`, and other tool-owned refs as protected infrastructure.

## Prevent accumulation
Managed worktrees require one active Bead, structured
owner/purpose/disposition metadata, and one registered worktree per Bead by
default. Warn at 12 worktrees or 30 local branches. Exceeding a budget never
authorizes deletion; new managed work requires safe retirement or a bounded
owner/reason/expiry exception.

Use `pnpm beads:worktrees:create -- --bead cave-123 --branch
fix/cave-123-example --owner kitty --purpose "Repair example"` for managed
creation. Raw `git worktree add` remains available but is not universally
intercepted; it does not exempt the resulting worktree from lifecycle policy.

Recovery and archive dispositions require an owner, reason, and review date.
An overdue review creates follow-up work and never changes the item into a
deletion candidate.

## Routine lifecycle patrol
Use `pnpm beads:worktrees` for the read-only inventory. It covers registered
worktrees and branch-only refs. Treat `retire-after-gate` as cleanup-ready, not
as deletion authorization.

`pnpm beads:worktrees:apply` may retire local state only when its capability
report proves the full Coven, Beads, GitHub, and local maintenance transaction
is enforced. `gate-incomplete` is a successful safety decision: preserve every
candidate. Automatic apply retires at most three units unless you pass an
explicit `--max-retire` value from 1 through 10. Automatic mode never deletes
remote refs; report proposals only.

## Start with durable coordination
In a Beads repository:
```bash
Expand Down Expand Up @@ -80,6 +108,14 @@ while IFS= read -r -d '' branch; do
{ printf '%s\n' 'PRESERVE - branch inventory failed'; exit 1; }
local_ref="refs/heads/$branch"
printf 'branch=%q\n' "$branch"
case "$local_ref" in
refs/heads/main|refs/heads/__dolt_remote_info__)
printf '%s\n' 'PRESERVE - protected or tool-owned ref'
continue
;;
refs/heads/*) ;;
*) printf '%s\n' 'PRESERVE - invalid local branch ref'; continue ;;
esac
if symbolic_target=$(git symbolic-ref -q "$local_ref"); then
printf 'PRESERVE - symbolic ref -> %s\n' "$symbolic_target"
continue
Expand All @@ -101,6 +137,10 @@ done < <(
)
```
Do not parse displays back into commands; the loop variable is authoritative.
This early structural filter is not deletion authority. The normative deletion
proof resolves the live remote default branch and reruns its executable
protected/tool-owned ref guard immediately before every destructive
transaction.
For every listed worktree, bind its literal path as `worktree_path`, then run:
```bash
worktree_status=$(git -C "$worktree_path" \
Expand Down Expand Up @@ -349,6 +389,18 @@ esac
An open matching PR or active workflow makes the branch live. Query failure
makes it uncertain.

When GitHub has squash-merged the exact candidate and auto-deleted its source
branch, do not turn a full remote namespace scan into deletion evidence. The
manual profile may select one exact merged-PR retention source only after the
fresh PR inventory identifies the candidate head, the PR detail endpoint
confirms `closed` + merged state on the repository default branch, and
`refs/pull/<number>/head` advertises the audited OID. Pass that repository,
remote, PR number, and base to the strict guard. The guard independently
reauthenticates all of them, fetches only that one source ref, and rechecks it
for drift. Any missing, open, mismatched, malformed, or moving PR proof is
uncertainty. Generic branch/tag retention keeps its existing bounded scan; a
large unrelated ref namespace is never a reason to raise or bypass that bound.

For other candidates, inspect unique work using fully qualified refs:
```bash
local_ref="refs/heads/$branch"
Expand All @@ -375,30 +427,43 @@ Use exactly one decision for each local branch:

If every branch is live, recovery, or uncertain, delete nothing and say so.

## Require an exclusive deletion gate
Read-only inventory and PR creation may run alongside other sessions. Ref or
worktree deletion may not. Final checks and deletion otherwise form a
check-then-act race: a new session, claim, task, PR, CI run, or dirty file can
appear without changing the audited branch OID.

Before classifying anything as `DELETE`, require a documented repository-wide
cleanup gate that:
1. quiesces every existing repository writer, including harnesses, worktrees,
hooks, automation, and external clients;
2. prevents new sessions, claims, worktree writes, task ownership/status
changes, PR creation/reopening, workflow dispatches, and other ownership or
liveness transitions;
3. is respected by every supported harness, launcher, task system, Git host
client, and workflow trigger;
4. has one auditable owner and bounded lifetime; and
5. remains held from the final ownership/state checks through all local and
remote mutations and post-action verification.

A branch claim, Bead assignment, PID snapshot, advisory claim file, or verbal
"nobody is using it" does not provide exclusion. If the repository has no
enforced gate, preserve deletion candidates and report that cleanup is blocked
on an exclusive maintenance window. Do not invent a lock file that other tools
do not honor.
## Choose the deletion profile

Read-only inventory and PR creation may run alongside other sessions. Before
classifying anything as `DELETE`, choose exactly one profile and record it in
the owning Bead. Never silently fall from the automatic profile into the manual
profile.

### Automatic retirement

Unattended retirement requires the full repository-wide maintenance gate. It
must quiesce and exclude every supported local and remote writer, have one
auditable owner and bounded lifetime, and remain held from final checks through
postcondition verification. If any enforcement plane is absent, automatic
retirement remains proposal-only. Automatic retirement never deletes remote
refs.

### Maintainer-authorized manual cleanup

A current maintainer may explicitly authorize a bounded manual cleanup in the
current task. Record the instruction, repository, exact candidate set,
local-only or local-and-remote scope, Bead, session, branch, worktree, and
audited default-branch OID before mutation. Historical, standing, inferred, or
unbounded permission is insufficient, and local cleanup authority does not
imply remote deletion.

The manual profile substitutes current authorization plus exact fail-closed
proof for the unavailable cross-system transaction. It still must acquire and
retain the local maintenance lease, rerun every Beads, GitHub, process,
worktree, ref, recency, archive, and recovery check immediately before each
mutation, and stop on any query failure, new or changed candidate-owning owner
or activity, drift, or uncertainty. It must run and never bypass
`worktree-guard`.

Authorization expires when the batch ends, the local lease is lost, an audited
OID or owner changes, or task context changes. It never permits direct pushes
to `main`, protected-ref mutation, forced worktree removal, deletion of unique
work, or continuation after a failed or uncertain postcondition.

## Open a PR only for PR-shaped work
A branch is PR-shaped only when all of these are true:
Expand Down Expand Up @@ -439,9 +504,15 @@ and do not open or describe a PR as verified.
## Delete only after proof
Before any worktree or ref deletion, read and follow
[Deletion proof](references/deletion-proof.md) in full. It is normative and
must run under the exclusive gate. If the file, a proof, a parse, or a
postcondition is unavailable or uncertain, preserve. Never bypass
`worktree-guard` merely to finish a sweep.
must run under the recorded automatic or manual profile. If the profile,
authorization, local lease, worktree guard, a proof, a parse, or a postcondition
is unavailable or uncertain, preserve. Never bypass `worktree-guard` merely to
finish a sweep.

If a strict worktree-guard refusal appears to be a false positive, stop the
cleanup. Fix the guard in a separate task with a regression test, verify both
strict and legacy behavior, then begin a new cleanup batch with fresh inventory
and authorization; never retry the refused removal in the current batch.
## Preserve at-risk work without touching its source
When unowned work needs a safety copy, leave the source worktree unchanged.
Create the snapshot from the source HEAD in a separate worktree, reproduce only
Expand Down
Loading
Loading