Skip to content

Keep changes in step with Orca workspaces - #227

Merged
androidand merged 7 commits into
mainfrom
feat/202-orca-workspace-hooks
Nov 10, 2026
Merged

androidand merged 7 commits into
mainfrom
feat/202-orca-workspace-hooks

Conversation

@androidand

@androidand androidand commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner
  • New specsync workspace setup for an orca.yaml setup hook: finds the workspace's change from its branch or, failing that, from the issue Orca linked it to (orca worktree current --json), then sets it active
  • Linked-issue lookup: local ref cache, then the issue's specsync:change= marker naming a local change (bound with adopt, since a fresh worktree has no ref caches and pull would copy and overwrite it), then pull for an issue with no change
  • New specsync workspace archive: finds the change the same way (no pull) and sets its stage back to auto
  • An unrelated workspace exits 0 untouched; Orca is only queried when the branch names no change; -sync and -dry-run on both
  • README "Working with Orca": the orca.yaml recipe (archive -sync, since the stage is per checkout and Orca removes the worktree) and the one-status-writer rule
  • in-flight-work-claims (Claim work in flight so concurrent agents don't collide #78) narrowed: same-worktree and volatile-path detection dropped, since per-change workspaces prevent them
  • agent-help, skill and site/features.json updated

The change lookup lives in workspace_change.go (main has an unrelated workspace.go). Not yet run inside a real Orca install (task 1.11 open); Orca's JSON shape was checked against its source.

Closes #202

set-stage, note and archive can omit the change inside a change's
worktree. The branch's last segment is matched against active changes, so
feat/<issue>-<slug> and Orca's <user>/<slug> both resolve; the default
branch and a detached HEAD never do. Bare sync is unchanged.

Also pins the branch in TestPull_CannotResolveFromBranch, which failed on
any feat/<n>-... checkout.
specsync workspace setup, for an orca.yaml setup hook, finds the
workspace's change from its branch or, failing that, from the issue Orca
linked it to: a local ref cache, then the issue's marker naming a local
change (bound with adopt, since a fresh worktree has no caches and pull
would copy and overwrite it), then a pull for an issue with no change. It
sets the stage active. workspace archive sets it back to auto. An
unrelated workspace exits 0 untouched; -sync and -dry-run on both. The
README documents the orca.yaml recipe and the one-status-writer rule.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

Deploying specsync with  Cloudflare Pages  Cloudflare Pages

Latest commit: 0edd540
Status: ✅  Deploy successful!
Preview URL: https://797f5eea.specsync.pages.dev
Branch Preview URL: https://feat-202-orca-workspace-hook.specsync.pages.dev

View logs

@androidand
androidand deleted the branch feat/200-infer-change-from-branch November 10, 2026 20:27
@androidand androidand closed this Nov 10, 2026
@androidand androidand reopened this Nov 10, 2026
@androidand
androidand changed the base branch from feat/200-infer-change-from-branch to main November 10, 2026 20:27
main moved commands into a registry and added an unrelated workspace.go;
the workspace command is re-registered, and the change lookup moves to
workspace_change.go.
@androidand
androidand merged commit 26e02e8 into main Nov 10, 2026
2 checks passed
@androidand
androidand deleted the feat/202-orca-workspace-hooks branch November 10, 2026 20:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Keep changes in step with Orca workspaces

1 participant