You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Three changes that together let the driver dispatch real upstream work.
Per-lane journal worktrees. Each lane now operates in its own detached
worktree under journal-worktrees/<lane>/ that shares the primary
journal/'s .git database. Each worktree has its own
.git/worktrees/<lane>/{HEAD,index}, so concurrent
git mv / reset / rebase / commit across lanes no longer share an index
— the bash-level shared-worktree race that mangled claim attempts is
eliminated. ensure_lane_worktree at startup self-heals: if the
per-lane worktree is missing it runs `git worktree add --detach` from
the primary at origin/journal and propagates the bot identity from
the primary's local git config. The primary journal/ remains a
human-inspectable clone of kriskowal/garden:journal; lanes never
touch it directly. /journal-worktrees/ is gitignored. /journal.git/
removed from gitignore — the local bare repo it referred to is no
longer needed now that origin = git@github.com:kriskowal/garden.git.
Gamut workflow. `verb: gamut` and `verb: pr-creation` both map to a
new dispatch_gamut_workflow. Minimal Phase 2 body: at `initial` the
lane escalates once via the gardener-inbox mechanism naming the PR
and the lane, then advances to `in-flight`; in-flight it polls
`gh pr view` each tick and reaches terminal when GitHub reports
MERGED or CLOSED. Substantive next-stage advancement (builder →
cleaner → barrister → fixer-loop → appellate → un-draft) is
delegated to claude via the escalation; the driver provides the
deterministic frame.
Claim filter. try_claim_one now skips jobs whose `verb:` the driver
does not implement (driver_handles_verb) and whose `eligible_roles:`
list does not name `driver` (job_eligible_for_driver). Without this
the first sync of a populated upstream inbox claimed the oldest
steward-only jobs whose workflows the driver could not run, then
stranded the claims in the claimed/ directory. Filtering at claim
time leaves those jobs for the right consumer.
post_job's exit-code propagation (already landed in dfd2d29) and
sync_upstream_jobs (briefly added when the driver had a standalone
local journal) net out of this diff — the driver now operates
directly against a shared clone of kriskowal/garden:journal, so the
sync routine was deleted, and the post_job fix was already in place.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments