task-pipeline-skill 1.64.0 → 1.65.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,31 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.65.0 — a decision is not debt
4
+
5
+ **`open` is work not done, `dropped` is an idea abandoned, and neither fits a deliberate
6
+ *no*.** Putting a decision in `open` has a cost that only appears later: **it accrues age
7
+ exactly like debt and eventually outranks real work.**
8
+
9
+ Measured on 2026-08-16. Two rows in the family umbrella recorded decisions on 2026-08-06 —
10
+ one waiving a UX chain in favour of fixtures, one keeping a skill an audit because another
11
+ router carries the design-time rule. Both sat `open`. The moment the age term started being
12
+ computed they reached the **top** of that board at 2.67 each, and the next run spent itself
13
+ re-deriving two decisions that were correct when made and are still correct.
14
+
15
+ So `waived` is a state: not counted open, no priority (`—`), and it must name what would
16
+ bring it back. **The `revisit:` clause is mandatory and gated** — a waiver with no trigger
17
+ is a row nobody will reconsider, and the trigger has to be something a later run can
18
+ measure. *"The command surface grows past what the fixtures describe"* is checkable; *"if
19
+ it becomes a problem"* is not.
20
+
21
+ The doctrine also requires the condition to be **re-derived when the row is touched**, like
22
+ any other claim. Both umbrella rows were re-measured before being waived — 8 CLI commands
23
+ with 0 uncovered by fixtures, and a router that still states the rule — because a waiver
24
+ resting on a condition nobody has checked is the same expired claim in a quieter voice.
25
+
26
+ Guards: 349 → **351**. Both new plants watched rejecting their defect: a waived row that
27
+ keeps its priority, and a waiver that names no trigger.
28
+
3
29
  ## v1.64.0 — the exposure line reported a clean bill on ledgers it could not read
4
30
 
5
31
  **The exposure command reported a clean bill on ledgers it could not read.** Shipped two
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.64.0 |
15
+ | **Version** | 1.65.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.64.0",
3
+ "version": "1.65.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.64.0",
5
+ "version": "1.65.0",
6
6
  "author": {
7
7
  "name": "ssheleg",
8
8
  "url": "https://x.com/sshlg93"
@@ -20,6 +20,7 @@ exactly one seam, and that seam already existed as a dangling pointer.
20
20
  - Seeded or picked up
21
21
  - A row that says work exists names where it lives
22
22
  - Priority is computed, not assigned
23
+ - A decision is not debt — `waived`
23
24
  - What a loop iteration does with it
24
25
  - Rationalizations
25
26
 
@@ -120,6 +121,39 @@ Two consequences worth stating, because both are the point:
120
121
  `sev` and `blast` are judgement, and they are written down *as* judgement: two small
121
122
  integers a reader can disagree with, rather than a ranking they can only accept.
122
123
 
124
+ ## A decision is not debt — `waived`
125
+
126
+ `open` is work not done. `dropped` is an idea abandoned. Neither fits a deliberate **no**
127
+ that could be revisited, and putting one in `open` has a cost that only shows up later:
128
+ **a decision accrues age exactly like debt, and eventually outranks real work.**
129
+
130
+ Measured in this family on 2026-08-16. Two rows recorded deliberate decisions on
131
+ 2026-08-06 — one waiving a UX chain in favour of fixtures, one keeping a skill an audit
132
+ because another router carries the design-time rule. They sat `open`. The moment the age
133
+ term started being computed they reached the **top** of the board at 2.67 each, and the
134
+ next run spent itself re-deriving two decisions that were correct when made and are still
135
+ correct.
136
+
137
+ So:
138
+
139
+ ```
140
+ | B-NNN | … | … | 1 | 7 | 3 | — | waived — revisit: <the condition, and how to measure it> |
141
+ ```
142
+
143
+ - **Not counted open.** It is not queued work and must not appear as any.
144
+ - **No priority.** The cell reads `—`; ranking a decision puts it above things to do.
145
+ - **`revisit:` is mandatory.** A waiver with no trigger is a row nobody will reconsider,
146
+ and the trigger must be something a later run can **measure** — *"the command surface
147
+ grows past what the fixtures describe"* is checkable; *"if it becomes a problem"* is not.
148
+ - **Still disclosed every run.** A waiver that becomes invisible is how a decision outlives
149
+ the reason for it. It is printed beside the verdict, never counted in it.
150
+
151
+ **And the revisit condition is re-derived when the row is touched**, like any other claim
152
+ ([`knowledge-sources.md`](knowledge-sources.md)). Both of the rows above were re-measured
153
+ before being waived — 8 commands with 0 uncovered by fixtures, and a router that still
154
+ states the rule — because a waiver resting on a condition nobody has checked since 2026 is
155
+ the same expired claim in a quieter voice.
156
+
123
157
  ## What a loop iteration does with it
124
158
 
125
159
  At the **top** of an iteration, one command: count the open rows and read the top few.
@@ -15,6 +15,7 @@
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
17
  | B-004 | Retry/backoff on the upload path | `2026-07-28-export` / 5 Dev | M | 2 | 2 | 4 | **4** | parked — feat/upload-retry | — |
18
+ | B-005 | Per-tenant rate limits | `2026-07-28-export` / 2 Brainstorm | L | 1 | 1 | 9 | — | waived — revisit: a tenant exceeds 1k req/min in `docs/metrics.md` | — |
18
19
 
19
20
  ## Columns
20
21