task-pipeline-skill 1.10.0 → 1.10.2

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,62 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.10.2 — 2026-08-03
4
+
5
+ ### Fixed — the list of invariants was eight guards behind, and now checks itself
6
+
7
+ A fifth audit pass, on two axes never used before: **the consumer's view** (unpack the
8
+ published package and run its installer in an isolated HOME — clean install works, the
9
+ refuse-on-plugin path fires, all 58 files present) and **one class swept end to end**:
10
+ every claim of enforcement against the guard that supposedly makes it true.
11
+
12
+ The doc map's six *Checked by* cells all resolved. `CONTRIBUTING.md` did not.
13
+ It states plainly that its invariants are *"what the validator enforces"*, and it had
14
+ sixteen while the validator enforced eight more concepts it had never heard of —
15
+ adoption, the exclusion clause, the opt-out, the input map, portability, the routing
16
+ template, the README-reach rule and the seeded-template Contents rule.
17
+
18
+ **The previous round fixed this class in one instance and not as a class.** The reach
19
+ guard shipped last release covers *references → README and manifest*; nothing covered
20
+ *guard → CONTRIBUTING*. `references/learned.md` rule 6 — sweep the class, not the
21
+ finding — applied to the sweep itself.
22
+
23
+ So the list is now **self-verifying**: invariants 17–24 name the new guards, and every
24
+ invariant that cites a guard cites a **literal this validator actually prints**. A
25
+ claim of enforcement is checked like any other claim. One discovered constraint is
26
+ stated with it: a cited literal must lie inside a *single* string in `test/validate.py`,
27
+ because the check reads that file as text — a quote straddling a line-continuation is
28
+ a citation nothing can find, which is how the first three citations failed.
29
+
30
+ ## v1.10.1 — 2026-08-03
31
+
32
+ ### Fixed — four surfaces that never heard about the last two releases
33
+
34
+ A fourth audit pass, on a fourth axis: **the claims of the last three releases,
35
+ checked against the tree.** All four findings are the same shape — a file shipped and
36
+ the surfaces that tell a reader it exists were never walked. Reachability from
37
+ `SKILL.md` was green throughout, because that check proves an agent can *find* a file,
38
+ not that anybody was *told* about it.
39
+
40
+ - **The Cursor rule was two releases behind** — and it is the surface that travels,
41
+ copied into foreign projects and required to be self-contained. It knew the
42
+ documentation track and nothing about adoption, the entry audit, portability, the
43
+ routing boundary or the opt-out phrase: an agent reading it in another repository
44
+ had no idea when the pipeline applies. Measured `0` for each. Now current.
45
+ - **The README's documentation map** listed `adoption.md` and named neither
46
+ `setup.md` nor `portability.md` — and had never named `learned.md` at all.
47
+ - **The portability manifest covered 14 of 26 references.** It claims *every workflow
48
+ decision*, and the twelve stage doctrines — spec, build, planning, review,
49
+ acceptance, brainstorm, decomposition, tdd, conventions, companion-skills,
50
+ knowledge-graph, model-tiering — had no row. The guard could not see it: it checked
51
+ that every listed path resolves, which is the direction that cannot find an absence.
52
+ - **Two seeded templates over 100 lines had no `## Contents`** — the doc map (eight
53
+ sections) and the brief (nine). The rule was scoped to `references/` while the files
54
+ a host project actually reads were outside it.
55
+
56
+ **Two new guards, and they are the point.** Every reference must appear in the README
57
+ map *and* in the manifest; every seeded template over 100 lines carries its own
58
+ Contents. Both check the direction that finds absences, and both were watched failing.
59
+
3
60
  ## v1.10.0 — 2026-08-03
4
61
 
5
62
  ### Added — the entry audit, and a boundary that keeps the workflow portable
package/CONTRIBUTING.md CHANGED
@@ -142,6 +142,40 @@ omitted row reads as "does not apply".
142
142
  **16. The evaluation suite covers all five dimensions** and `evals/run.py` accepts
143
143
  it. Running it is a human step; the suite existing is not.
144
144
 
145
+ **17. Both adoption walkthroughs ship, with the ratchet-baseline step.** Greenfield
146
+ is the easy half and the one that gets written; brownfield is where a repository
147
+ actually is. *(guard: `adoption without it is a tutorial for the repository nobody has`)*
148
+
149
+ **18. The description states its exclusions, and the opt-out is exercised by an eval.**
150
+ Default-on without a release valve is a trap, and an escape hatch nobody tests is not
151
+ one. *(guard: `no eval exercises the opt-out phrase`)*
152
+
153
+ **19. The stage/artifact relation is mapped in both directions.** What each stage
154
+ writes, and what it reads and from where. *(guard: `must be mapped in BOTH directions`)*
155
+
156
+ **20. Every workflow decision has a home inside the bundle.** The manifest in
157
+ `references/portability.md` names it, and no row may point outside.
158
+ *(guard: `manifest names`)*
159
+
160
+ **21. The routing default ships as a file.** It is a workflow decision, so it travels
161
+ with the bundle instead of being hand-installed into an operator's config.
162
+ *(guard: `must ship as a file rather than be hand-installed`)*
163
+
164
+ **22. Every reference reaches the README map and the manifest.** Reachability from
165
+ `SKILL.md` proves an agent can *find* a file, not that a reader was *told* about it.
166
+ *(guard: `is named nowhere in README.md`)*
167
+
168
+ **23. A seeded template over 100 lines carries its own Contents.** A host project
169
+ reads those files, and a partial read shows whichever sections come first.
170
+ *(guard: `needs the same partial-read protection references get`)*
171
+
172
+ **24. Every invariant above names the guard that enforces it, and that guard exists.**
173
+ This list claims to be *what the validator enforces*; it was eight guards behind when
174
+ an audit measured it. A claim of enforcement is now checked like any other claim.
175
+ *(guard: `whose message does not appear in`)* — and a cited literal must lie inside
176
+ a **single** string in `test/validate.py`: the check reads that file as text, so a
177
+ quote straddling a line-continuation is a citation nothing can find.
178
+
145
179
  ## Adding or changing doctrine
146
180
 
147
181
  - **Change one idea per PR.** These files are read by agents under load; a PR that
package/README.md CHANGED
@@ -777,6 +777,9 @@ recommendation, so you arm the whole run in one exchange. Detail:
777
777
  | [`references/model-tiering.md`](plugins/task-pipeline/skills/task-pipeline/references/model-tiering.md) | model policy, the `/model` reminder, overrides |
778
778
  | [`templates/`](plugins/task-pipeline/skills/task-pipeline/templates/README.md) | brief, carry-over ledger, `CONTEXT.md` and ADR skeletons, the doc map, both registers, the retro and its archive, the seeded `docgate.sh`, a worked hook |
779
779
  | [`references/adoption.md`](plugins/task-pipeline/skills/task-pipeline/references/adoption.md) | the first run in a project: greenfield seeding, and the brownfield walkthrough |
780
+ | [`references/setup.md`](plugins/task-pipeline/skills/task-pipeline/references/setup.md) | the entry audit: seven passes over the docs a project already has, offered once, output as a fix plan |
781
+ | [`references/portability.md`](plugins/task-pipeline/skills/task-pipeline/references/portability.md) | the manifest of workflow decisions and their homes in the bundle, and the boundary against a project's own answers |
782
+ | [`references/learned.md`](plugins/task-pipeline/skills/task-pipeline/references/learned.md) | fifteen rules earned by failure on a real multi-repository build, each with its incident, its check and its exit criterion |
780
783
  | [`SKILL-CARD.md`](SKILL-CARD.md) | the registry entry and risk-tier disclosure a reviewer needs before deploying it |
781
784
  | [`evals/`](evals/RESULTS.md) | the behavioural evaluation suite, its protocol, and what has actually been observed |
782
785
  | [`CHANGELOG.md`](CHANGELOG.md) | every release, with the reasoning behind it |
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.10.0 |
15
+ | **Version** | 1.10.2 |
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. 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 (15 evals, 5 categories). **Never executed** — see [`evals/RESULTS.md`](evals/RESULTS.md) |
@@ -38,7 +38,7 @@ apply.
38
38
  instruction surface, and every one is linked directly from `SKILL.md`.
39
39
  2. Read `templates/docgate.sh` before seeding it; it is the only shipped script a
40
40
  host project will run on its own repository.
41
- 3. Run `npm run test:all` — 59 guards, each with a negative self-test that plants a
41
+ 3. Run `npm run test:all` — 62 guards, each with a negative self-test that plants a
42
42
  defect and requires rejection.
43
43
  4. Run `python3 evals/run.py` for the behavioural protocol, and read
44
44
  `evals/RESULTS.md` for what has actually been observed.
@@ -54,7 +54,7 @@ apply.
54
54
  - **Versions are pinned by git tag** and mirrored into `sshlg-skills`'s catalogue.
55
55
  Rollback is `git checkout v<previous>` or pinning the previous plugin version;
56
56
  the previous version is never deleted.
57
- - **Behavioural evidence is missing, not merely thin.** 59 structural guards prove
57
+ - **Behavioural evidence is missing, not merely thin.** 62 structural guards prove
58
58
  the skill is well-formed. Until `evals/RESULTS.md` carries a dated run, nothing in
59
59
  this repository proves it *behaves* — triggers correctly, stays quiet on a
60
60
  question, or performs the steps it documents.
@@ -423,3 +423,45 @@ JTBD, customer journey maps, user stories) → flows + screens → scenarios (th
423
423
  source of truth) → run its linter. Otherwise still design that chain, get it
424
424
  approved, and trace every user-facing requirement to a scenario before building.
425
425
  Install (Cursor/Claude/others): `npx skills add ssheleg/super-ux`.
426
+
427
+ ## Routing — when this applies at all
428
+
429
+ **Work that CHANGES THE REPOSITORY goes through the pipeline** — a feature, fix,
430
+ refactor, migration, integration, rewrite, adoption or hardening pass, in any
431
+ phrasing. **Not** for a question, an explanation, reading code, a typo or a one-line
432
+ edit. The operator opts out of a qualifying task by saying "без пайплайна" or
433
+ "quick"; when they do, say out loud that the cycle was skipped at their request.
434
+
435
+ A borderline case is named, not silently chosen: state which route you are taking and
436
+ why, in one line.
437
+
438
+ **Escalation while running.** Decide alone while the cost of being wrong stays inside
439
+ the repository and is reversible. Escalate a price, a legal posture, a promise to
440
+ somebody outside the team, anything spending money or reputation, and any irreversible
441
+ outward act. The tell is the cost of being wrong, not the size of the change.
442
+
443
+ ## The first run in a project
444
+
445
+ Two entry conditions, and they are different problems.
446
+
447
+ **A new project:** stage 0 seeds the doc map, the registers and the documentation
448
+ gate before the first interview question. The gate is green on day one because
449
+ sections with nothing to check yet print `dormant`.
450
+
451
+ **An existing project:** offer the **entry audit** once — seven passes over the
452
+ documentation that already exists, *before* building on it: one decision home,
453
+ register integrity, propagation, the matrix's checked-by column, declared terms, the
454
+ UX chain, and the gate itself proven against a planted defect. Findings carry
455
+ `file:line`, the minimal fix and the **seam**, ordered by seam rather than by file.
456
+ It ends in a fix plan and **fixes nothing while reading**.
457
+
458
+ The step that decides whether adoption survives is **baselining the ratchets at
459
+ today**: the propagation floor to the next free id, the residue floor to the measured
460
+ count. A gate that is red on adoption day is switched off on day two. History is
461
+ **not** back-filled — an old decision enters the register the day somebody is about to
462
+ contradict it.
463
+
464
+ **Portability.** A decision about how the pipeline behaves belongs in the skill; a
465
+ decision about what this project decided belongs in the project. The test for a rule
466
+ you are about to write down: does it name a path, a command or a person? If not, it is
467
+ the pipeline's, and leaving it in one repository is a fork nobody named.
package/evals/RESULTS.md CHANGED
@@ -37,9 +37,9 @@ or it belongs in a check.
37
37
  | Dated runs recorded | **0** | 2026-08-03 |
38
38
 
39
39
  The bottom two numbers are the honest state of this skill's behavioural evidence.
40
- Everything else in this repository is proven by 59 structural guards that check the
40
+ Everything else in this repository is proven by 62 structural guards that check the
41
41
  *form*; these are the only checks that would speak to the *behaviour*, and they have
42
- not been run yet. Printed here so "59 of 59 green" is never read as "the skill is
42
+ not been run yet. Printed here so "62 of 62 green" is never read as "the skill is
43
43
  known to work".
44
44
 
45
45
  ## Runs
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "task-pipeline-skill",
3
- "version": "1.10.0",
3
+ "version": "1.10.2",
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 must close with evidence, a loop guard that breaks churn, one provider-agnostic model confirmed up front, and an optional super-ux UX track for user-facing work.",
5
- "version": "1.10.0",
5
+ "version": "1.10.2",
6
6
  "author": {
7
7
  "name": "ssheleg",
8
8
  "url": "https://x.com/sshlg93"
@@ -56,6 +56,18 @@ a row pointing outside the bundle is the defect this file exists to catch.
56
56
  | **The routing default and its boundary** | `templates/routing-rule.md` |
57
57
  | The seeded doc map, registers and gate | `templates/docmap.md`, `templates/decisions.md`, `templates/open-questions.md`, `templates/docgate.sh` |
58
58
  | What a stage reads, and which host files bind it | `references/artifacts.md` |
59
+ | The design conversation, its hard gate, UI detection, user paths | `references/brainstorm.md` |
60
+ | Cutting a platform into modules, brick criteria, build order | `references/decomposition.md` |
61
+ | What a spec must lock, the UX-track order, the module dossier | `references/spec.md` |
62
+ | The zero-context plan format, parallel groups, set equality | `references/planning.md` |
63
+ | Workspace isolation, the subagent loop, who may write the register | `references/build.md` |
64
+ | The review rubric, diff packages, the three verdicts | `references/review.md` |
65
+ | The TDD iron law and the suite gate | `references/tdd.md` |
66
+ | The REQ coverage table, evidence rules, the closing question | `references/acceptance.md` |
67
+ | How the host project's own conventions are read | `references/conventions.md` |
68
+ | Which companions exist, what is required, self-currency | `references/companion-skills.md` |
69
+ | The code graph: queries, refresh, the graph↔docs divergence | `references/knowledge-graph.md` |
70
+ | Model policy — tier not id, ask once at preflight | `references/model-tiering.md` |
59
71
  | This boundary | `references/portability.md` |
60
72
 
61
73
  **The routing rule is the row worth watching.** A skill's `description` raises the
@@ -9,6 +9,18 @@
9
9
  - **UI verdict:** yes / no — does this touch a user-facing surface (web/mobile/CLI/TUI)?
10
10
  If yes, the stage-3 super-ux UX track is armed.
11
11
 
12
+ ## Contents
13
+
14
+ - Knowledge sources (the phase-1 harvest — written BEFORE the first question)
15
+ - Documentation (the phase-1b inventory — the four questions)
16
+ - Scope
17
+ - Requirements (the REQ spine — every later stage traces to these IDs)
18
+ - Users & context
19
+ - Decisions locked (the grill's output)
20
+ - Autonomy (the sweep — stages 1→10 read this instead of asking)
21
+ - Done-criteria
22
+ - Open assumptions / risks
23
+
12
24
  ## Knowledge sources (the phase-1 harvest — written BEFORE the first question)
13
25
 
14
26
  What the project already knew about this task, and where it said so. One row per
@@ -10,6 +10,17 @@ elsewhere — where another file already says it, this one holds a **pointer lin
10
10
  not a copy. A doc map that duplicates `AGENTS.md` is the first violation of the
11
11
  rule it publishes.
12
12
 
13
+ ## Contents
14
+
15
+ - Regime
16
+ - Registers
17
+ - Single source of truth
18
+ - Propagation matrix
19
+ - Gates
20
+ - Ratchets
21
+ - Terms
22
+ - Navigation
23
+
13
24
  ## Regime
14
25
 
15
26
  `governed` — established <YYYY-MM-DD> by run `<topic>`, recorded as `DEC-0001`.