fix: exec beads provider CRUD passthrough to bd#685
Open
quad341 wants to merge 2 commits intogastownhall:mainfrom
Open
fix: exec beads provider CRUD passthrough to bd#685quad341 wants to merge 2 commits intogastownhall:mainfrom
quad341 wants to merge 2 commits intogastownhall:mainfrom
Conversation
The gc-beads-bd lifecycle script is set as GC_BEADS by the controller and inherited by managed sessions. But it only implemented lifecycle operations (start/stop/health/probe), causing all CRUD operations (get/list/create/update/close) to silently fail with exit code 2. This broke mail delivery, session resolution, and any store operation running inside a managed session — including handoff mail which was created but never delivered because gc mail check couldn't resolve the session identity. Three changes: 1. gc-beads-bd: Add CRUD operation handlers that forward to bd with JSON format transforms (bd_to_gc/bd_list_to_gc). The script now implements the full exec beads provider protocol. GC_DOLT=skip now only skips lifecycle ops, not CRUD. 2. exec store Get: Return ErrNotFound on empty output (safety net for scripts that don't implement all operations). 3. exec store List: Pass --type and --assignee filters to the script so backends that partition by type return the correct subset. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2 tasks
quad341
commented
Apr 13, 2026
| *) exit 2 ;; # Unknown operation — forward compatible. | ||
|
|
||
| # --- CRUD operations (forwarded to bd) --- | ||
| get) |
Contributor
Author
There was a problem hiding this comment.
i will say i kinda hate explicitly calling out every option.
That said
- this is the pattern in the k8s script
- there likely needs to be a
gcchange to update the verbs anyway, so they just need to be kept in sync
bd doesn't have a --from flag, so passing it as a CLI arg caused "unknown flag" errors that silently broke mail delivery and handoff. Store from in metadata instead, matching BdStore.Create in Go. Add conformance tests for from-field round-trip and multiline description round-trip to prevent regression. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
gc-beads-bd(exec beads provider script) only implemented lifecycle ops (start/stop/health/probe)Changes
gc-beads-bd— Added CRUD handlers that forward tobdwith JSON transformsexec.goGet — ReturnsErrNotFoundon empty output (safety net)exec.goList — Passes--type/--assigneefilters to scriptNightly CI impact
The Tier C nightly (
TestGastown_MayorDispatchPipeline) fails intermittently with:These are the exec store CRUD returning empty output for Get operations — exactly what this PR fixes.
Test plan
projectwrenunity-gradispatched and completed🤖 Generated with Claude Code