@nickmeriano/task 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -68,8 +68,10 @@ a lock. `task claim` is that lock, built out of things git already guarantees:
68
68
 
69
69
  ```bash
70
70
  task claim TAS-21 # claim it: branch + status flip + push
71
+ task claim TAS-21 --lock-only # just the lock — the checkout stays put
71
72
  task list --claimable # the queue: what a worker may pick up next
72
73
  task claim --release TAS-21 # abandon a claim cleanly
74
+ task sweep # janitor: delete claims whose tickets are finished
73
75
  ```
74
76
 
75
77
  - **The claim is the work branch.** `task claim TAS-21` branches
@@ -102,6 +104,76 @@ task claim --release TAS-21 # abandon a claim cleanly
102
104
  agent will skip it. `task list --claimable` shows `todo` tickets in position
103
105
  order minus blocked and already-claimed — the top entry is what an
104
106
  autonomous worker takes next, which makes column order your priority queue.
107
+ - **Pinned to a branch? Take just the lock.** Plain `claim` bundles three
108
+ roles — the lock (the branch ref on origin), the workspace (the checkout
109
+ switch), and the delivery branch (where the work lands). For the scheduled
110
+ worker they coincide; for a session whose harness handed it a provisioned
111
+ branch (Claude web sessions, CI jobs) they don't — it can't switch branches
112
+ without breaking its contract, and working outside the lock is how two
113
+ workers collide. `task claim <id> --lock-only` takes the same atomic lock
114
+ without touching the checkout: the `in_progress` flip commit is built
115
+ against origin's default branch in a temporary index and pushed with the
116
+ same must-not-exist lease, and it carries a `delivered_by: <branch>` trailer
117
+ naming the branch the work will actually land on. Exit codes and
118
+ `--release` are identical to plain claim.
119
+ - **Releases are verified, and `task sweep` is the janitor.** Some
120
+ environments silently drop branch-deletion pushes — git reports success
121
+ while the ref survives — so `--release` re-checks with `ls-remote` and
122
+ fails loudly instead of reporting a release that didn't happen. The
123
+ systemic healer is `task sweep`: delete every claim branch on origin whose
124
+ ticket is done, canceled, or missing on the current checkout, across all
125
+ the repo's boards, verifying each deletion; it exits non-zero if a deletion
126
+ was attempted and failed. Its jurisdiction is exactly the names `claim`
127
+ mints — `<namespace><prefix>-<valid key>`; a branch under the namespace
128
+ that doesn't fit (a pre-migration numeric claim, a hand-made branch) is
129
+ reported and left alone, because it may be an open PR's head and deleting
130
+ what claiming didn't create is a judgment call, not janitorial work. Pure
131
+ git and zero judgment by design — the trigger belongs to a runner, not an
132
+ agent (see below).
133
+
134
+ ### Environment requirements for agent runners
135
+
136
+ The claim protocol is plain git, so any harness — Claude, Codex, CI, a
137
+ laptop cron — can drive it if its environment meets this contract:
138
+
139
+ - **Git identity**: `user.name`/`user.email` set (the flip commit needs an
140
+ author).
141
+ - **Push rights to the claim namespace** (`claims.branchPrefix`): creating a
142
+ branch there *is* claiming.
143
+ - **Branch deletion rights** for a full-service worker — or accept degraded
144
+ release: environments that can't delete remote branches get a loud error
145
+ from `task claim --release` instead of a silent lie, and a `task sweep`
146
+ running somewhere capable heals the stale locks once tickets finish.
147
+ - **A branch-pinned harness** (the session must deliver its work on an
148
+ assigned branch) claims with `--lock-only`; a free harness uses plain
149
+ `claim` and works on the claim branch. The harness supplies the fact, the
150
+ shipped skill supplies the rule — no vendor detection anywhere.
151
+
152
+ The reference sweep trigger is ~10 lines of GitHub Actions — push-to-main
153
+ plus a daily cron, deliberately deterministic (no agent, no judgment):
154
+
155
+ ```yaml
156
+ # .github/workflows/task-sweep.yml
157
+ name: Task sweep
158
+ on:
159
+ push:
160
+ branches: [main]
161
+ schedule:
162
+ - cron: "17 4 * * *"
163
+ permissions:
164
+ contents: write # branch deletion
165
+ jobs:
166
+ sweep:
167
+ runs-on: ubuntu-latest
168
+ steps:
169
+ - uses: actions/checkout@v4
170
+ - uses: actions/setup-node@v4
171
+ with: { node-version: 22 }
172
+ - run: npx @nickmeriano/task sweep
173
+ ```
174
+
175
+ Any runner that can `git push --delete` works identically — a laptop cron
176
+ running `npx @nickmeriano/task sweep` is the same janitor.
105
177
 
106
178
  ## Git, from the board
107
179
 
package/dist/claim.d.ts CHANGED
@@ -10,7 +10,7 @@
10
10
  * (the implement-task skill, a human).
11
11
  */
12
12
  import { type Store } from "./store.ts";
13
- import type { ProjectConfig, Task } from "./types.ts";
13
+ import type { ProjectConfig, Status, Task } from "./types.ts";
14
14
  /**
15
15
  * The branch namespace claims live under when the board doesn't configure
16
16
  * one. Deliberately vendor-neutral: repos whose workers are Claude Code cloud
@@ -56,6 +56,13 @@ export interface ClaimResult {
56
56
  task: Task;
57
57
  branch: string;
58
58
  base: string;
59
+ /**
60
+ * Where the checkout was before the claim switched it — a branch name
61
+ * usually, a bare sha when HEAD was detached. The CLI uses it to warn a
62
+ * branch-pinned session that a plain claim just moved it off its assigned
63
+ * branch (the `--lock-only` case).
64
+ */
65
+ previous: string;
59
66
  }
60
67
  export interface ClaimOptions {
61
68
  /** Claim past the root board's `claims.maxOpenCount` cap. */
@@ -71,6 +78,36 @@ export interface ClaimOptions {
71
78
  * fast-forward. Leaves the winner checked out on the claim branch.
72
79
  */
73
80
  export declare function claim(store: Store, key: string, options?: ClaimOptions): ClaimResult;
81
+ export interface LockOnlyClaimResult {
82
+ task: Task;
83
+ branch: string;
84
+ base: string;
85
+ /** The checkout's branch at claim time, recorded in the flip commit's `delivered_by:` trailer. */
86
+ deliveredBy: string;
87
+ }
88
+ /**
89
+ * `task claim <id> --lock-only`: mint the claim branch on origin without
90
+ * touching the checkout. For sessions pinned to a provisioned branch (a
91
+ * Claude web session, a CI job) the three roles plain `claim` bundles — the
92
+ * lock, the workspace, and the delivery branch — don't coincide: the session
93
+ * can't switch branches without breaking its harness contract, and working
94
+ * outside the lock is how two workers end up on the same ticket.
95
+ *
96
+ * So this takes just the lock: the `in_progress` flip commit is built against
97
+ * origin's default-branch tree in a temporary index (read-tree → hash-object →
98
+ * update-index → write-tree → commit-tree) and pushed with the same
99
+ * must-not-exist lease plain `claim` uses — the compare-and-swap is identical,
100
+ * only the checkout stays where it is (dirty or pinned, doesn't matter). The
101
+ * flip commit carries a `delivered_by: <branch>` trailer naming the checkout's
102
+ * branch, so a lock-only claim is legible state — anyone reading the claim
103
+ * branch sees where the work will actually land. Exit-code contract and
104
+ * `--release` behave exactly like plain claim.
105
+ *
106
+ * Validation reads the *base tree*, not the checkout: the commit is built on
107
+ * origin's default branch, and the pinned checkout's copy of the ticket may be
108
+ * stale or diverged — a promote that hasn't merged yet isn't claimable yet.
109
+ */
110
+ export declare function claimLockOnly(store: Store, key: string, options?: ClaimOptions): LockOnlyClaimResult;
74
111
  export interface ReleaseResult {
75
112
  branch: string;
76
113
  /** Whether a branch was actually there to delete, per side. */
@@ -83,6 +120,55 @@ export interface ReleaseResult {
83
120
  * revert — the default branch never saw in_progress.
84
121
  */
85
122
  export declare function release(store: Store, key: string): ReleaseResult;
123
+ export interface SweptBranch {
124
+ branch: string;
125
+ /** Display id of the ticket the branch locks — for "missing", the id the branch name claims. */
126
+ ticket: string;
127
+ reason: "done" | "canceled" | "missing";
128
+ }
129
+ export interface SweepResult {
130
+ swept: SweptBranch[];
131
+ kept: {
132
+ branch: string;
133
+ ticket: string;
134
+ status: Status;
135
+ }[];
136
+ /**
137
+ * Branches under the claim namespace whose name the claim protocol could
138
+ * not have minted — no board's `<prefix>-`, or a segment that isn't a valid
139
+ * ticket key (pre-migration numeric claims like `tas-31`, hand-made
140
+ * branches). Deliberately never deleted: sweep's jurisdiction is exactly
141
+ * the branches `task claim` creates, and a name outside the scheme may be
142
+ * an open PR's head or someone's parked work. Reported so a human can
143
+ * clean them up knowingly.
144
+ */
145
+ skipped: string[];
146
+ failed: {
147
+ branch: string;
148
+ error: string;
149
+ }[];
150
+ }
151
+ /**
152
+ * `task sweep`: for every claim branch on origin whose ticket is done,
153
+ * canceled, or missing on the current checkout, delete the branch — with the
154
+ * same deletion verification as `--release`, so a survivor is a failure, never
155
+ * a silent lie. This is the liveness half of the lock: environments that can't
156
+ * delete remote branches leave stale claims behind (`--release` there fails
157
+ * loudly rather than lying), and sweep, run from a runner that *can* delete
158
+ * (CI on push-to-main or cron, a laptop cron), heals them.
159
+ *
160
+ * Deliberately pure git and zero judgment — no vendor awareness, no agent in
161
+ * the loop — and scoped to exactly the branches the claim protocol mints:
162
+ * `<namespace><prefix>-<key>` with a valid ticket key. A branch under the
163
+ * namespace that doesn't fit the scheme (a pre-migration numeric claim, a
164
+ * hand-made branch) is *skipped and reported*, never deleted — it may be an
165
+ * open PR's head, and deleting what claiming didn't create isn't janitorial
166
+ * work, it's a judgment call. Within the scheme, the ticket's status on this
167
+ * checkout decides: done/canceled/missing → delete, anything live → keep.
168
+ * Boards are discovered repo-wide, the way `task serve` finds them, so one
169
+ * sweep covers every board's namespace.
170
+ */
171
+ export declare function sweep(cwd: string): SweepResult;
86
172
  /**
87
173
  * The dispatcher's queue view: `todo` in position order, minus blocked, minus
88
174
  * tickets whose claim branch already exists on origin (one ls-remote for the
@@ -1 +1 @@
1
- {"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../src/claim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,OAAO,EAKL,KAAK,KAAK,EACX,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAErD;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,gBAAgB,CAAA;AAKjD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAgB5D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO7D;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAA;gBACxB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS;CAIzD;AAWD,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAQxE;AAiCD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CA6FxF;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;CACf;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CA6BhE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,CAMnD;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAA;IACV,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAehE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CA+BzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,GAAG,IAAI,CA6BzF"}
1
+ {"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../src/claim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,OAAO,EAML,KAAK,KAAK,EACX,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAE7D;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,gBAAgB,CAAA;AAKjD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAgB5D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO7D;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAA;gBACxB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS;CAIzD;AAWD,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAQxE;AAmDD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CA6FxF;AAYD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,kGAAkG;IAClG,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,YAAiB,GACzB,mBAAmB,CA6JrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;CACf;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CA6BhE;AAID,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,gGAAgG;IAChG,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC1D;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC5C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAkE9C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,CAMnD;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAA;IACV,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAehE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CA+BzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,GAAG,IAAI,CA6BzF"}
package/dist/claim.js CHANGED
@@ -9,10 +9,14 @@
9
9
  * against `origin`. PR/session awareness belongs to whatever drives the claim
10
10
  * (the implement-task skill, a human).
11
11
  */
12
- import { join } from "node:path";
13
- import { FileStore, TICKETS_DIR, openBoard } from "./file-store.js";
12
+ import { rmSync } from "node:fs";
13
+ import { tmpdir } from "node:os";
14
+ import { join, relative, sep } from "node:path";
15
+ import { FileStore, TICKET_FILE, TICKETS_DIR, openBoard } from "./file-store.js";
14
16
  import { GIT_NETWORK_TIMEOUT_MS, defaultBase, git, gitMust, runGit, } from "./git.js";
15
- import { boardConfig, findBoardsByPrefix, findRoot, findScopeRoot, } from "./store.js";
17
+ import { boardConfig, findBoards, findBoardsByPrefix, findRoot, findScopeRoot, } from "./store.js";
18
+ import { isTicketKey } from "./id.js";
19
+ import { parseTicket, parseTicketLenient, serializeTicket } from "./ticket-doc.js";
16
20
  /**
17
21
  * The branch namespace claims live under when the board doesn't configure
18
22
  * one. Deliberately vendor-neutral: repos whose workers are Claude Code cloud
@@ -99,6 +103,21 @@ export function remoteClaims(cwd, namespace) {
99
103
  function remoteBranchExists(cwd, branch) {
100
104
  return gitNetMust(cwd, "ls-remote", "--heads", "origin", branch) !== "";
101
105
  }
106
+ /**
107
+ * Delete a remote branch and verify the ref is actually gone (TAS-8b7s9).
108
+ * Some environments — git egress proxies in cloud sessions, notably — drop
109
+ * branch-deletion pushes while git reports success ("Everything up-to-date"),
110
+ * so trusting the exit code lets `--release` report a release that didn't
111
+ * happen: the branch lives on, occupying a WIP-cap slot and advertising a
112
+ * stale claim to every worker. One bounded ls-remote on a path that already
113
+ * made network calls turns that lie into a loud failure naming the remedies.
114
+ */
115
+ function deleteRemoteBranchVerified(cwd, branch) {
116
+ gitNetMust(cwd, "push", "--quiet", "origin", "--delete", branch);
117
+ if (remoteBranchExists(cwd, branch)) {
118
+ throw new Error(`origin still has ${branch} after a deletion git reported as successful — this environment silently drops branch deletions. Delete it from one that can: locally, \`task sweep\` on a capable runner (CI), or the forge API/UI.`);
119
+ }
120
+ }
102
121
  /** Blockers still in the way — anything not done or canceled still blocks. */
103
122
  function openBlockers(store, task) {
104
123
  return task.blockedBy
@@ -217,7 +236,164 @@ export function claim(store, key, options = {}) {
217
236
  }
218
237
  throw new ClaimError(`${id}: push of ${branch} was rejected (likely a concurrent claim) — ${push.stderr || "no detail from git"}`, "claimed");
219
238
  }
220
- return { task: store.get(key), branch, base };
239
+ return { task: store.get(key), branch, base, previous };
240
+ }
241
+ // ── Lock-only claims ─────────────────────────────────────────────────────────
242
+ /** A file's path relative to the git toplevel — git tree reads speak toplevel paths. */
243
+ function ticketPathFromToplevel(store, key) {
244
+ const toplevel = gitMust(store.root, "rev-parse", "--show-toplevel");
245
+ return [relative(toplevel, store.taskDir).split(sep).join("/"), TICKETS_DIR, key, TICKET_FILE]
246
+ .filter(Boolean)
247
+ .join("/");
248
+ }
249
+ /**
250
+ * `task claim <id> --lock-only`: mint the claim branch on origin without
251
+ * touching the checkout. For sessions pinned to a provisioned branch (a
252
+ * Claude web session, a CI job) the three roles plain `claim` bundles — the
253
+ * lock, the workspace, and the delivery branch — don't coincide: the session
254
+ * can't switch branches without breaking its harness contract, and working
255
+ * outside the lock is how two workers end up on the same ticket.
256
+ *
257
+ * So this takes just the lock: the `in_progress` flip commit is built against
258
+ * origin's default-branch tree in a temporary index (read-tree → hash-object →
259
+ * update-index → write-tree → commit-tree) and pushed with the same
260
+ * must-not-exist lease plain `claim` uses — the compare-and-swap is identical,
261
+ * only the checkout stays where it is (dirty or pinned, doesn't matter). The
262
+ * flip commit carries a `delivered_by: <branch>` trailer naming the checkout's
263
+ * branch, so a lock-only claim is legible state — anyone reading the claim
264
+ * branch sees where the work will actually land. Exit-code contract and
265
+ * `--release` behave exactly like plain claim.
266
+ *
267
+ * Validation reads the *base tree*, not the checkout: the commit is built on
268
+ * origin's default branch, and the pinned checkout's copy of the ticket may be
269
+ * stale or diverged — a promote that hasn't merged yet isn't claimable yet.
270
+ */
271
+ export function claimLockOnly(store, key, options = {}) {
272
+ if (!(store instanceof FileStore)) {
273
+ throw new ClaimError("claiming needs a text-format board — run `npx @nickmeriano/task@0.6 migrate` once", "invalid");
274
+ }
275
+ const cwd = store.root;
276
+ const branch = claimBranch(store.config, key);
277
+ const id = store.displayId(key);
278
+ if (git(cwd, "rev-parse", "--git-dir").status !== 0) {
279
+ throw new ClaimError(`not a git repository: ${cwd}`, "invalid");
280
+ }
281
+ // A local claim branch means some flow here already claimed it the plain way.
282
+ if (git(cwd, "show-ref", "--verify", "--quiet", `refs/heads/${branch}`).status === 0) {
283
+ throw new ClaimError(`${id} is already claimed — ${branch} exists locally (finish it, or \`task claim --release ${id}\`)`, "claimed");
284
+ }
285
+ gitNetMust(cwd, "fetch", "--quiet", "origin");
286
+ const namespace = claimNamespace(store.config);
287
+ const openClaims = remoteClaims(cwd, namespace);
288
+ if (openClaims.has(branch)) {
289
+ throw new ClaimError(`${id} is already claimed — ${branch} exists on origin`, "claimed");
290
+ }
291
+ if (!options.force)
292
+ assertUnderCap(openClaims, cwd, namespace);
293
+ const base = defaultBase(cwd);
294
+ const baseSha = gitMust(cwd, "rev-parse", base);
295
+ const path = ticketPathFromToplevel(store, key);
296
+ const bytes = git(cwd, "show", `${baseSha}:${path}`);
297
+ if (bytes.status !== 0) {
298
+ throw new ClaimError(`no such task on ${base}: ${id} — a lock-only claim is built on origin's default branch, so the ticket must exist there`, "invalid");
299
+ }
300
+ // Strict parse first — it carries unknown frontmatter through, so the flip
301
+ // commit can't silently drop a hand-added field — falling back to lenient
302
+ // for bytes another checkout or an older CLI wrote oddly (branch reads
303
+ // degrade, they don't refuse the tree).
304
+ let doc;
305
+ try {
306
+ doc = parseTicket(bytes.stdout, `${base}:${path}`);
307
+ }
308
+ catch {
309
+ doc = parseTicketLenient(bytes.stdout);
310
+ }
311
+ if (!doc) {
312
+ throw new ClaimError(`${id} on ${base} isn't a readable ticket file`, "invalid");
313
+ }
314
+ if (doc.status !== "todo") {
315
+ throw new ClaimError(`${id} is ${doc.status} on ${base} — only todo tickets can be claimed (a local promote counts once it lands on the default branch)`, "invalid");
316
+ }
317
+ const blockers = doc.blockedBy.filter((blocker) => {
318
+ const raw = git(cwd, "show", `${baseSha}:${ticketPathFromToplevel(store, blocker)}`);
319
+ if (raw.status !== 0)
320
+ return false; // missing blocker doesn't block, as in openBlockers
321
+ const status = parseTicketLenient(raw.stdout)?.status;
322
+ return status !== undefined && status !== "done" && status !== "canceled";
323
+ });
324
+ if (blockers.length) {
325
+ throw new ClaimError(`${id} is blocked by ${blockers.map((b) => store.displayId(b)).join(", ")} — not claimable`, "invalid");
326
+ }
327
+ const deliveredBy = git(cwd, "symbolic-ref", "--quiet", "--short", "HEAD").stdout ||
328
+ gitMust(cwd, "rev-parse", "HEAD");
329
+ const flipped = serializeTicket({
330
+ ...doc,
331
+ status: "in_progress",
332
+ updatedAt: new Date().toISOString(),
333
+ });
334
+ // The temp-index dance claim-io.ts proved out: build the flip commit against
335
+ // the base tree without ever touching the checkout or its index.
336
+ const index = join(tmpdir(), `task-claim-index-${process.pid}-${Date.now()}`);
337
+ const env = { GIT_INDEX_FILE: index };
338
+ let commit;
339
+ try {
340
+ if (runGit(cwd, ["read-tree", baseSha], { env }).status !== 0) {
341
+ throw new Error(`git read-tree failed on ${base}`);
342
+ }
343
+ const blob = runGit(cwd, ["hash-object", "-w", "--stdin"], { input: flipped });
344
+ if (blob.status !== 0)
345
+ throw new Error("git hash-object failed");
346
+ if (runGit(cwd, ["update-index", "--add", "--cacheinfo", `100644,${blob.stdout},${path}`], { env })
347
+ .status !== 0) {
348
+ throw new Error(`git update-index failed for ${path}`);
349
+ }
350
+ const tree = runGit(cwd, ["write-tree"], { env });
351
+ if (tree.status !== 0)
352
+ throw new Error("git write-tree failed");
353
+ const made = git(cwd, "commit-tree", tree.stdout, "-p", baseSha, "-m", `chore(board): claim ${id} → in_progress (lock-only)\n\ndelivered_by: ${deliveredBy}`);
354
+ if (made.status !== 0) {
355
+ throw new Error("git commit-tree failed — is git user.name/user.email configured?");
356
+ }
357
+ commit = made.stdout;
358
+ }
359
+ finally {
360
+ rmSync(index, { force: true });
361
+ }
362
+ // The same compare-and-swap as plain claim: the empty lease means "the ref
363
+ // must not exist", so two concurrent claimers still get exactly one winner.
364
+ const push = runGit(cwd, ["push", "--quiet", "origin", `${commit}:refs/heads/${branch}`, `--force-with-lease=refs/heads/${branch}:`], { timeoutMs: GIT_NETWORK_TIMEOUT_MS });
365
+ if (push.status !== 0) {
366
+ if (remoteBranchExists(cwd, branch)) {
367
+ throw new ClaimError(`${id} is already claimed — ${branch} was just created on origin`, "claimed");
368
+ }
369
+ throw new ClaimError(`${id}: push of ${branch} was rejected (likely a concurrent claim) — ${push.stderr || "no detail from git"}`, "claimed");
370
+ }
371
+ // Keep the remote-tracking ref in step so an immediate read (the inbox, the
372
+ // serve UI) sees the claim without another fetch.
373
+ git(cwd, "update-ref", `refs/remotes/origin/${branch}`, commit);
374
+ // The checkout's copy of the ticket wasn't touched — present the claim as
375
+ // made, preferring the local ticket (asks, relations) when it exists.
376
+ const local = store.get(key);
377
+ const task = local
378
+ ? { ...local, status: "in_progress" }
379
+ : {
380
+ id,
381
+ key,
382
+ title: doc.title,
383
+ description: doc.description,
384
+ status: "in_progress",
385
+ tags: doc.tags,
386
+ goal: doc.goal,
387
+ needsHuman: false,
388
+ asks: [],
389
+ blocks: [],
390
+ blockedBy: doc.blockedBy,
391
+ prs: doc.prs,
392
+ position: doc.position,
393
+ createdAt: doc.createdAt,
394
+ updatedAt: doc.updatedAt,
395
+ };
396
+ return { task, branch, base, deliveredBy };
221
397
  }
222
398
  /**
223
399
  * Abandon a claim cleanly: delete the branch on origin and locally. The status
@@ -247,9 +423,92 @@ export function release(store, key) {
247
423
  const local = git(cwd, "branch", "--quiet", "-D", branch).status === 0;
248
424
  const remote = remoteBranchExists(cwd, branch);
249
425
  if (remote)
250
- gitNetMust(cwd, "push", "--quiet", "origin", "--delete", branch);
426
+ deleteRemoteBranchVerified(cwd, branch);
251
427
  return { branch, remote, local };
252
428
  }
429
+ /**
430
+ * `task sweep`: for every claim branch on origin whose ticket is done,
431
+ * canceled, or missing on the current checkout, delete the branch — with the
432
+ * same deletion verification as `--release`, so a survivor is a failure, never
433
+ * a silent lie. This is the liveness half of the lock: environments that can't
434
+ * delete remote branches leave stale claims behind (`--release` there fails
435
+ * loudly rather than lying), and sweep, run from a runner that *can* delete
436
+ * (CI on push-to-main or cron, a laptop cron), heals them.
437
+ *
438
+ * Deliberately pure git and zero judgment — no vendor awareness, no agent in
439
+ * the loop — and scoped to exactly the branches the claim protocol mints:
440
+ * `<namespace><prefix>-<key>` with a valid ticket key. A branch under the
441
+ * namespace that doesn't fit the scheme (a pre-migration numeric claim, a
442
+ * hand-made branch) is *skipped and reported*, never deleted — it may be an
443
+ * open PR's head, and deleting what claiming didn't create isn't janitorial
444
+ * work, it's a judgment call. Within the scheme, the ticket's status on this
445
+ * checkout decides: done/canceled/missing → delete, anything live → keep.
446
+ * Boards are discovered repo-wide, the way `task serve` finds them, so one
447
+ * sweep covers every board's namespace.
448
+ */
449
+ export function sweep(cwd) {
450
+ const scope = findScopeRoot(cwd);
451
+ const boards = [];
452
+ for (const ref of findBoards(scope)) {
453
+ try {
454
+ boards.push(openBoard(ref.root));
455
+ }
456
+ catch {
457
+ // An unreadable board can't vouch for its branches — skip it.
458
+ }
459
+ }
460
+ if (boards.length === 0) {
461
+ throw new ClaimError("no .task directory found in this directory or any parent — run `task init` first", "invalid");
462
+ }
463
+ // One ls-remote per distinct namespace (normally exactly one — `task check`
464
+ // lints that boards agree), each branch matched to the board whose
465
+ // `<prefix>-` leads its final segment.
466
+ const namespaces = new Map();
467
+ for (const store of boards) {
468
+ let namespace;
469
+ try {
470
+ namespace = claimNamespace(store.config);
471
+ }
472
+ catch {
473
+ continue; // a malformed prefix can't have minted branches worth sweeping
474
+ }
475
+ const list = namespaces.get(namespace) ?? [];
476
+ list.push(store);
477
+ namespaces.set(namespace, list);
478
+ }
479
+ const result = { swept: [], kept: [], skipped: [], failed: [] };
480
+ for (const [namespace, stores] of namespaces) {
481
+ for (const branch of [...remoteClaims(scope, namespace)].sort()) {
482
+ const rest = branch.slice(namespace.length);
483
+ const store = stores.find((s) => rest.startsWith(`${s.config.prefix.toLowerCase()}-`));
484
+ const key = store ? rest.slice(store.config.prefix.length + 1) : null;
485
+ if (!store || !key || !isTicketKey(key)) {
486
+ result.skipped.push(branch);
487
+ continue;
488
+ }
489
+ const task = store.get(key);
490
+ if (task && task.status !== "done" && task.status !== "canceled") {
491
+ result.kept.push({ branch, ticket: task.id, status: task.status });
492
+ continue;
493
+ }
494
+ const entry = task
495
+ ? { branch, ticket: task.id, reason: task.status }
496
+ : { branch, ticket: store.displayId(key), reason: "missing" };
497
+ try {
498
+ deleteRemoteBranchVerified(scope, branch);
499
+ git(scope, "update-ref", "-d", `refs/remotes/origin/${branch}`);
500
+ result.swept.push(entry);
501
+ }
502
+ catch (error) {
503
+ result.failed.push({
504
+ branch,
505
+ error: error instanceof Error ? error.message : String(error),
506
+ });
507
+ }
508
+ }
509
+ }
510
+ return result;
511
+ }
253
512
  /**
254
513
  * The dispatcher's queue view: `todo` in position order, minus blocked, minus
255
514
  * tickets whose claim branch already exists on origin (one ls-remote for the
package/dist/claim.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"claim.js","sourceRoot":"","sources":["../src/claim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claim.js","sourceRoot":"","sources":["../src/claim.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,14 @@
10
10
  * and already-claimed tickets — open asks never exclude a ticket.
11
11
  * 4. `task claim --release` deletes the branch both sides and the ticket is
12
12
  * claimable again.
13
+ * 5. `task claim --lock-only` takes the same lock without touching the
14
+ * checkout — a branch-pinned (even dirty) session can hold it — and
15
+ * `--release` works on it symmetrically.
16
+ * 6. Deletions are verified: against a remote that silently drops deletion
17
+ * pushes (TAS-8b7s9), release and sweep fail loudly instead of lying.
18
+ * 7. `task sweep` deletes claim branches whose tickets are done, canceled or
19
+ * missing on the current checkout, and leaves live ones — and any branch
20
+ * named outside the claim scheme — alone.
13
21
  */
14
22
  export {};
15
23
  //# sourceMappingURL=claim.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claim.test.d.ts","sourceRoot":"","sources":["../src/claim.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
1
+ {"version":3,"file":"claim.test.d.ts","sourceRoot":"","sources":["../src/claim.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}