task-pipeline-skill 1.61.0 → 1.62.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/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.62.0 — a board row that says work exists names where it lives
4
+
5
+ **`open` claims nothing exists. `parked` claims something does — and now has to say
6
+ where.** B-58: a row read as ready-to-merge for two days while its artifacts had already
7
+ been deleted. It said *"built and parked … held at `scratchpad/b29-exposure/`"*, a
8
+ session-scoped temp directory, and when a run finally went to land it nothing on disk, in
9
+ git history, in a stash or in a dangling object held any of it. **A board cannot tell a
10
+ claim about a filesystem from a claim about a repository**, and that row was the first
11
+ kind while reading like the second.
12
+
13
+ The status cell of a parked row now carries a branch or a commit, and two rules gate it:
14
+ an open row may not home its work in a per-session directory, and a `parked` status
15
+ without a ref is refused.
16
+
17
+ **A prose detector was written first and thrown away.** Matching *"parked"*, *"is built"*,
18
+ *"ready to merge"* in the description cell fired on **three rows out of 187 and every one
19
+ was false** — two closed rows narrating this incident and the row that asked for the rule.
20
+ A check whose every current hit is wrong teaches evasion; what ships reads the status
21
+ cell, which is never prose, and both rules measured **zero** across 191 rows including the
22
+ templates.
23
+
24
+ The first draft of the guard read `cells[-2]`, which is the status in an eight-column
25
+ board and the *Home* column in the ten-column template — so the parked rule examined the
26
+ wrong cell and reported nothing, fifty lines below the comment explaining why positional
27
+ reads fail on this corpus. It is position-free now, and the plant that was silently
28
+ passing is the one that proved it.
29
+
30
+ Guards: 347 → **349**. Property checks: 9 → 9.
31
+
3
32
  ## v1.61.0 — the command that was built, parked, and lost
4
33
 
5
34
  **The exposure command lands, two days after it was declared built.** B-43 recorded
package/SKILL-CARD.md CHANGED
@@ -12,7 +12,7 @@ harmless.
12
12
  |---|---|
13
13
  | **Purpose** | Runs a substantial task through ten gated delivery stages — intake grill, docs study, brainstorm, spec, plan, subagent build, tests, lint/deploy, post-deploy, docs+registers, acceptance — refusing to advance until each gate passes |
14
14
  | **Owner** | ssheleg ([github.com/ssheleg/task-pipeline](https://github.com/ssheleg/task-pipeline)) |
15
- | **Version** | 1.61.0 |
15
+ | **Version** | 1.62.0 |
16
16
  | **Surface** | Claude Code (filesystem skill + plugin) and the vercel `skills` CLI. **Not** uploaded to the Skills API; custom Skills do not sync across surfaces |
17
17
  | **Dependencies** | None required. Optional: `context7` (MCP), `figma` (MCP), super-ux, agent-sync, graphify, obsidian-wiki, and **one of two browser channels** — `playwright` (CLI or MCP) or `chrome-devtools` (MCP); either satisfies the browser step and neither is required. Every stage's doctrine ships in-repo; the one conditional requirement is super-ux for the stage-3 UX track on a user-facing task |
18
18
  | **Evaluation status** | Suite authored, 5 categories. One recorded run, **self-observed by the author**; **zero blind runs on zero of three models** — the split, and the numbers, live in [`evals/RESULTS.md`](evals/RESULTS.md) and are computed by `evals/run.py` |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "task-pipeline-skill",
3
- "version": "1.61.0",
3
+ "version": "1.62.0",
4
4
  "description": "Full-cycle delivery pipeline for coding agents: a mandatory built-in intake grill, then 10 gated stages (docs, brainstorm+decompose, spec, plan, build, tests, lint/deploy, post-deploy, docs/wiki, acceptance). Every stage's doctrine ships inside the skill — no companion plugin required. This package is the installer CLI.",
5
5
  "bin": {
6
6
  "task-pipeline": "bin/task-pipeline.js"
@@ -2,7 +2,7 @@
2
2
  "name": "task-pipeline",
3
3
  "displayName": "Task Pipeline",
4
4
  "description": "Runs a substantial task through a mandatory built-in intake grill, then 10 gated stages (docs, brainstorm+decompose, spec, plan, subagent build, tests, lint/deploy, post-deploy, docs/wiki, acceptance). Every stage's doctrine is built into the skill — no companion plugin required — with typed auto/manual gates, a frozen requirement spine that closes with evidence, a work board and a verification ledger that outlive a run, an exposure line naming what shipped unconfirmed, a progress rail computed from the project's own config, a loop guard whose review ceiling measures rather than stops, and stage-3 tracks for what a product does, how it sounds and how it looks. Two modes need no task: `checkup` (what is unverified) and `setup` (audit existing docs). Retro insights can publish upstream as issues, opt-in and redacted.",
5
- "version": "1.61.0",
5
+ "version": "1.62.0",
6
6
  "author": {
7
7
  "name": "ssheleg",
8
8
  "url": "https://x.com/sshlg93"
@@ -18,6 +18,7 @@ exactly one seam, and that seam already existed as a dangling pointer.
18
18
 
19
19
  - The seam the ledger left open
20
20
  - Seeded or picked up
21
+ - A row that says work exists names where it lives
21
22
  - Priority is computed, not assigned
22
23
  - What a loop iteration does with it
23
24
  - Rationalizations
@@ -60,6 +61,42 @@ work on, and only one of them can be appended to.
60
61
  at the top of the run, not from what the last run's report said — the previous run is
61
62
  precisely what invalidated that number ([`learned.md`](learned.md) rule 16).
62
63
 
64
+ ## A row that says work exists names where it lives
65
+
66
+ **`open` claims nothing exists yet. `parked` claims something does — and then has to say
67
+ where.** The status cell of a parked row carries a branch or a commit:
68
+
69
+ ```
70
+ | B-043 | The exposure command … | 2026-08-14 run | 1 | 0 | 1 | 1.0 | parked — feat/exposure |
71
+ | B-044 | The migration script … | 2026-08-15 run | 2 | 0 | 2 | 1.5 | parked — a1b2c3d |
72
+ ```
73
+
74
+ The rule exists because a row read as ready-to-merge for two days while its artifacts had
75
+ already been deleted. It said *"built and parked … held at `scratchpad/b29-exposure/`"* —
76
+ a session-scoped temp directory. When a run finally went to land it, nothing on disk, in
77
+ git history, in a stash or in a dangling object held any of it. **A board cannot tell a
78
+ claim about a filesystem from a claim about a repository**, and that row was the first
79
+ kind while reading like the second.
80
+
81
+ So:
82
+
83
+ - **A scratchpad, `/tmp`, or any per-session directory is not a home.** Work that lives
84
+ only there is not parked, it is unwritten — say `open` and describe what is wanted, not
85
+ what supposedly exists.
86
+ - **Uncommitted work in a working tree is not parked either.** Another agent's checkout,
87
+ a stash, an unpushed branch on one machine: none of them survives the question *"can
88
+ somebody else pick this up?"*, which is the only question the board is answering.
89
+ - **The ref is checkable and that is the point.** `git rev-parse` either resolves it or it
90
+ does not, so a row that has quietly expired can be found before somebody plans around
91
+ it.
92
+
93
+ **A prose detector was tried first and discarded.** Matching *"parked"*, *"is built"*,
94
+ *"ready to merge"* in the description cell fired on **three rows out of 187 and all three
95
+ were false** — two closed rows narrating this very incident and the row that asked for
96
+ this rule. A check whose every current hit is wrong teaches evasion, and this repository
97
+ throws that shape away rather than tuning it. What is gated is the **status cell**, which
98
+ is never prose.
99
+
63
100
  ## Priority is computed, not assigned
64
101
 
65
102
  ```
@@ -14,6 +14,7 @@
14
14
  | B-001 | `export.ts` has no size guard on the write path | `2026-07-28-export` / 5 Review | S | 2 | 1 | 12 | **2** | open | — |
15
15
  | B-002 | XLSX export path | `2026-07-28-export` / 5 Dev | M | 1 | 2 | 12 | 2 | open | LIN-483 |
16
16
  | B-003 | REQ-007 bulk export | `2026-07-28-export` / 2 Brainstorm | L | 1 | 1 | 12 | 1 | dropped | operator 2026-07-28 |
17
+ | B-004 | Retry/backoff on the upload path | `2026-07-28-export` / 5 Dev | M | 2 | 2 | 4 | **4** | parked — feat/upload-retry | — |
17
18
 
18
19
  ## Columns
19
20