task-pipeline-skill 0.17.1 → 1.0.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,166 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.0.0 — 2026-07-28
4
+
5
+ **1.0.** Eighteen releases in ten days added a stage, a requirement spine, a
6
+ decomposition pass and a loop guard; this one adds nothing and instead makes the
7
+ whole thing coherent enough to depend on. Every file was read against every other
8
+ file, the contradictions between them are fixed, and the repo now carries the
9
+ surface a stranger needs before they trust it.
10
+
11
+ What 1.0 promises: the stage flow (0 intake + 1→10), `pipeline.schema.json`, the
12
+ artifact layout in `references/artifacts.md`, and the two install paths are stable.
13
+ Breaking any of them means a 2.0.
14
+
15
+ ### Fixed — contradictions between doctrine files
16
+ - **Two names for one idea.** `brainstorm.md` told the agent to split an oversized
17
+ task into "sub-projects", each with its own spec→plan→build cycle;
18
+ `decomposition.md` — the file that actually owns the procedure — calls them
19
+ **modules**, cuts them at the end of stage 2, and runs stages 3→10 per module
20
+ against a committed module map. An agent that read the first file ran a
21
+ decomposition the second file's gate could not check. Brainstorm now hands off to
22
+ `decomposition.md` by name.
23
+ - **The same split, invented twice.** `planning.md` independently told stage 4 to
24
+ "split the spec into one plan per subsystem" — a second, unrecorded decomposition
25
+ two stages after the one with the gate and the map. A plan now covers exactly one
26
+ spec; a multi-subsystem spec arriving at stage 4 is a missed stage-2
27
+ decomposition and goes back there.
28
+ - **A hardcoded `main`.** `build.md` and `review.md` both built the final
29
+ whole-branch review package with `git merge-base main HEAD`, in a pipeline whose
30
+ stage-0 brief records the base branch precisely because it is not always `main`.
31
+ On any repo with a `master`, a `develop` or a stacked base, the final review saw
32
+ the wrong diff. Both now read the brief's base.
33
+ - **A five-status set that claimed to have four.** `acceptance.md` listed four
34
+ statuses, declared "there is no fifth status", then named `unknown` in the next
35
+ clause. Reworded so the mechanism is legible: four ways to close, and anything
36
+ that fits none of them is `unknown`, which fails the gate.
37
+ - **A version pin on someone else's contract.** The README and `stages.md` both
38
+ pinned super-ux's scenario format at "ux-contract v4" — the exact cross-repo
39
+ version skew this project ported its own doctrine in-house to avoid. Both now
40
+ point at the contract super-ux itself ships, with no version named here.
41
+ - **A blockquote where a sentence should be.** In `knowledge-sources.md` the
42
+ precedence chain `code > host docs and ADRs > the wiki > memory` wrapped so the
43
+ second line *began* with `>`, which Markdown renders as a block quote —
44
+ the rule about which source wins was visually broken in the file that defines it.
45
+ - **`skills[]` entries that resolve to nothing.** `pipeline.example.json` names
46
+ `task-pipeline:grill` and `host:lint` beside real skills, with no key anywhere for
47
+ the two prefixes. A host copying the example had no way to tell a notional label
48
+ from an installable skill. The convention is now stated in the config and in
49
+ `SKILL.md`: `task-pipeline:<name>` is this skill's own `references/<name>.md`,
50
+ `host:<name>` is the host project's command per `conventions.md`, everything else
51
+ is a real skill. Stage 3 also gained the `/ux` entry point and `/ux-lint`, which
52
+ the doctrine mandates and the config had omitted.
53
+ - **A repo tree that had drifted.** `references/artifacts.md`'s map of this
54
+ repository listed `templates/` outside the tree and missed several files.
55
+ - A broken ordered list in the Cursor rule (`3a.` is not a list marker) and a
56
+ `references/` index in `SKILL.md` that never mentioned `templates/`.
57
+
58
+ ### Added — the open-source surface
59
+ - `CONTRIBUTING.md` — dev setup, the repository layout, and **the nine invariants**
60
+ written out with the failure each one prevents: four-way version sync, the stage
61
+ list living on three machine-checked surfaces, every human-facing description
62
+ having to name the flow's final stage last, no hardcoded vendor model ids, no
63
+ unreachable reference file, no external provider in the default flow, stage 0 and
64
+ stage 10 staying manual, the frontmatter budget, and resolving links.
65
+ - `SECURITY.md` — what the executable surface actually is (two installers, a
66
+ validator, two workflows), private reporting with a 72-hour acknowledgement, and
67
+ an explicit scope: doctrine that would lead an agent to exfiltrate secrets, push
68
+ to an unnamed repo or deploy without a go **is** a security bug here.
69
+ - `CODE_OF_CONDUCT.md`, GitHub issue forms (bug / doctrine change, with routing to
70
+ super-ux and obsidian-wiki), and a pull-request template whose checklist is the
71
+ list of surfaces that drift.
72
+ - `CLAUDE.md` — house rules for any agent working in this repo, which is also what
73
+ this pipeline's own stage-0 harvest reads first: the commands, the branch and
74
+ commit policy, the invariants, and the docs that must be updated in the same
75
+ change. The project now dogfoods the convention it asks of every host.
76
+ - **Two validator guards, each with a CI negative self-test:** the open-source root
77
+ files must exist, and `npm test` must actually run the validator. A documented
78
+ check nobody can run is a check nobody runs.
79
+
80
+ ### Changed
81
+ - **README rewritten.** Same substance, ordered so it can be read: a one-paragraph
82
+ statement of the problem, a Mermaid diagram of the flow with gate types coloured,
83
+ the gate table, *what you get*, then a quickstart — before the deep sections.
84
+ Configuration, install/update and a documentation map now live in their own
85
+ places instead of interleaved with doctrine.
86
+ - Package, marketplace and plugin descriptions rewritten — shorter, and all three
87
+ now say the same thing about the same ten stages.
88
+ - npm metadata: a `test` script (`npm test`), a `bugs` URL, `homepage` at the README.
89
+ - `.worktrees/` is git-ignored — stage 5 creates them.
90
+
91
+ > The open-source surface above shipped in v0.18.1, hours earlier the same day;
92
+ > it is restated here because it is part of what 1.0 means.
93
+
94
+ ## v0.18.1 — 2026-07-28
95
+
96
+ Open-source hygiene pass — the repo is public, so the files a first-time
97
+ contributor looks for now exist, and the validator keeps them there.
98
+
99
+ ### Added
100
+ - `CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`, issue forms and a
101
+ pull-request template.
102
+ - `CLAUDE.md` — house rules for any agent working in this repo: the commands, the
103
+ branch and commit policy, and the invariants that drift most often.
104
+ - The validator now requires the open-source root files, with a CI negative
105
+ self-test that deletes `CONTRIBUTING.md` and proves the check fails.
106
+
107
+ ### Changed
108
+ - npm metadata: a `test` script, a `bugs` URL, and `homepage` pointing at the
109
+ README. Package, marketplace and plugin descriptions rewritten so all three say
110
+ the same thing about the ten stages.
111
+ - `.worktrees/` is ignored — the pipeline creates them during stage 5.
112
+
113
+ ## v0.18.0 — 2026-07-28
114
+
115
+ The grill stops opening cold. Stage 0 now reads what the project already knows
116
+ about the task **before** the first question, checks every answer against it, and
117
+ stage 9 updates the same list at the end — the loop the pipeline was missing.
118
+
119
+ ### Added
120
+ - **Stage 0 phase 1: the knowledge harvest** (`references/knowledge-sources.md`).
121
+ Before question one, query what the project already knows about *this* task —
122
+ the code, `CLAUDE.md`/`AGENTS.md`, `CONTEXT.md` + `docs/adr/`, `docs/` and
123
+ `docs/ux/`, previous pipeline briefs and their carry-over ledgers, **the
124
+ knowledge wiki when one is installed**, and **any other repository or hosted doc
125
+ system the project names as its docs**. It is retrieval scoped by the task's own
126
+ nouns, not a read of everything: query, follow one hop, stop when the terms
127
+ return nothing new. Nothing is ever fetched on a guess — a doc repo is in scope
128
+ because the project names it.
129
+ - **The source ledger** — a required `## Knowledge sources` section in the brief
130
+ (source, what it says about this task, freshness, authority, "stale after this
131
+ run?"). `none found` is a valid, useful row: it tells the next run the search
132
+ happened and came back empty. Silence doesn't.
133
+ - **Answers are validated against the harvest** (`grill.md` → *Domain awareness*).
134
+ The cheap win is not re-asking what an ADR already answers. The one that matters:
135
+ **an answer nobody can check is a recollection** — people answer from memory
136
+ about systems they wrote a year ago, and a false premise adopted at stage 0 makes
137
+ every later gate pass honestly on it. So the grill quotes the source instead:
138
+ *"the March ADR says X, you just described Y — has it changed?"* The operator
139
+ **outranks every document, but only out loud** — an override quoted against its
140
+ source is a recorded decision, an unquoted one is an undetected divergence.
141
+ Precedence when sources disagree: **code > host docs/ADRs > wiki > memory.**
142
+ - **obsidian-wiki is the recommended knowledge base**
143
+ (https://github.com/ar9av/obsidian-wiki — Karpathy's LLM-wiki pattern), detected
144
+ via `~/.obsidian-wiki/config` or a resolving `wiki-query`/`wiki-update`.
145
+ Installed → queried in the harvest, synced with `wiki-update` at stage 9. Absent
146
+ → the preflight prints `pip install obsidian-wiki` / `obsidian-wiki setup --vault
147
+ <path>` **once** and the run continues. A recommendation, never a gate; a project
148
+ whose `CLAUDE.md` names a different knowledge base wins.
149
+ - **Stage 9 closes the loop:** the stage-0 ledger *is* its work list. Every source
150
+ the harvest read gets updated if this run changed or disproved it — including the
151
+ docs the grill already proved stale, which is why those conflicts are logged in
152
+ phase 2 instead of only being settled out loud. Docs living in **another
153
+ repository** are outward: propose the edit and get an explicit go, or carry it
154
+ over with the exact change written down. Never a direct push to a repo the task
155
+ didn't name.
156
+ - **Autonomy-sweep row** for doc sources beyond this repo, and whether stage 9 may
157
+ write to them — decided at intake, like every other outward action.
158
+ - **Three validator guards, each with a CI negative self-test:** the brief template
159
+ must keep its `## Knowledge sources` section; the stage-0 gate must require the
160
+ harvest *and* its ledger before the interview; the stage-9 gate must name that
161
+ ledger as its work list. A harvest with nowhere to land degrades silently back
162
+ into asking from memory, which is precisely the failure it exists to stop.
163
+
3
164
  ## v0.17.1 — 2026-07-28
4
165
 
5
166
  A full-repo consistency audit. v0.16.0 added a third review verdict and a tenth