@polymorphism-tech/morph-spec 8.26.0 → 8.27.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
@@ -3,7 +3,7 @@
3
3
  > Spec-driven development framework for multi-stack projects. Turns feature requests into implementation-ready code through structured, AI-orchestrated phases.
4
4
 
5
5
  **Package:** `@polymorphism-tech/morph-spec`
6
- **Version:** 8.26.0
6
+ **Version:** 8.27.0
7
7
  **Requires:** Node.js 22+, Claude Code
8
8
 
9
9
  ---
@@ -173,7 +173,7 @@ morph-spec archive {feature} # Archive WITHOUT integrating (le
173
173
 
174
174
  `finish` is the normal close for both flows: it archives (committing the move inside `morph/{feature}`), then integrates — `--merge` merges `--no-ff` into the default branch locally; `--pr` pushes the branch and runs `gh pr create` (needs `origin` + authenticated `gh`) — and tears down the worktree if there is one. Plain `archive` is reserved for legacy features (born before every feature had a `morph/{feature}` branch) and cleanup.
175
175
 
176
- Task progress within a feature is tracked with the native `TaskCreate`/`TaskUpdate` tools, persisted to `tasks.json` — there is no separate CLI command for starting or completing a task.
176
+ Task progress within a feature is recorded in `tasks.json` — Claude writes the mutable `status`/`outputs`/`notes` fields as it goes, and there is no separate CLI command for starting or finishing a task.
177
177
 
178
178
  ### Validation
179
179
 
@@ -368,4 +368,4 @@ Code generated by morph-spec (contracts, templates, implementation output) belon
368
368
 
369
369
  ---
370
370
 
371
- *morph-spec v8.26.0 by [Polymorphism Tech](https://polymorphism.tech)*
371
+ *morph-spec v8.27.0 by [Polymorphism Tech](https://polymorphism.tech)*
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "morph-spec",
3
- "version": "8.26.0",
3
+ "version": "8.27.0",
4
4
  "displayName": "MORPH-SPEC Framework",
5
5
  "description": "Spec-driven development with 38 agents and 8-phase workflow for .NET/Blazor/Next.js/Azure",
6
6
  "publisher": "polymorphism-tech",
@@ -185,4 +185,4 @@ Never edited directly — go through CLI commands or `morph-spec update` instead
185
185
 
186
186
  ---
187
187
 
188
- *morph-spec v8.26.0 by Polymorphism Tech*
188
+ *morph-spec v8.27.0 by Polymorphism Tech*
@@ -85,7 +85,7 @@ At this point, planning is complete:
85
85
  ```
86
86
 
87
87
  Claude reads `spec.md`, `mandate.md`, and `tasks.json`, then implements task by task with auto-advance (no pause between tasks unless there's a blocking ambiguity):
88
- - Tracks task progress with the native `TaskCreate`/`TaskUpdate` tools, persisted to `tasks.json`
88
+ - Records task progress in `tasks.json`, writing the mutable `status`/`outputs`/`notes` fields
89
89
  - Runs the validators relevant to your stack after each task (e.g. `architecture`/`packages`/`contract-compliance` for .NET, `nextjs-component`/`css`/`design-system` for Next.js) via `morph-spec verify`
90
90
  - Applies `morph-eval` after each task — a score below 9 triggers an autonomous correction loop, not a pause
91
91
  - Generates `3-implement/recap.md` on completion, then Gate 3 review (`4-review/`)
@@ -106,7 +106,7 @@ Approve the current gate and scaffold the next phase folder in one step:
106
106
  morph-spec advance my-feature
107
107
  ```
108
108
 
109
- Task progress is tracked with the native `TaskCreate`/`TaskUpdate` tools and persisted to `tasks.json` — there is no separate CLI command for marking a task done.
109
+ Task progress is recorded in `tasks.json` — Claude writes the mutable `status`/`outputs`/`notes` fields directly, and there is no separate CLI command for marking a task done.
110
110
 
111
111
  Run validators at any time:
112
112
 
@@ -249,4 +249,4 @@ morph-spec doctor
249
249
 
250
250
  ---
251
251
 
252
- *morph-spec v8.26.0 by Polymorphism Tech*
252
+ *morph-spec v8.27.0 by Polymorphism Tech*
@@ -5,49 +5,22 @@ stacks:
5
5
 
6
6
  # MORPH-SPEC Task Tracking
7
7
 
8
- > Session tasks are MANDATORY in every MORPH-SPEC phase. They track real progress and must be
9
- > created BEFORE any phase work begins.
10
-
11
- ## Rules
12
-
13
- 1. **Every phase skill MUST create session tasks** using `TaskCreate` before reading files or generating outputs
14
- 2. **Tasks are dynamic** — analyze the phase workflow and create tasks that reflect YOUR actual planned actions for this session
15
- 3. **Every task MUST be updated**: `in_progress` before starting, `completed` after finishing
16
- 4. **Pipeline orchestrators** (`/morph-proposal`, `/morph-apply`) MUST create master tasks for each phase
17
- 5. **Never skip task creation** — even if resuming mid-phase, create tasks for remaining steps
18
- 6. **Granularity**: minimum 2, typically 3-7 tasks per phase — adjust to complexity
19
- 7. **For iterative work** (clarification rounds, quality loops): update task `subject` with round/score progress
20
-
21
- ## Task Update Pattern
22
-
23
- ```
24
- TaskUpdate(taskId, status="in_progress") // before starting the step
25
- // ... do the work ...
26
- TaskUpdate(taskId, status="completed") // after step finishes
27
- ```
28
-
29
- For iterative tasks:
30
- ```
31
- TaskUpdate(taskId, subject="Round 3 — score 82/100")
32
- ```
8
+ > Progress lives in `tasks.json` — nowhere else. There is no CLI command to mark a task done and
9
+ > no session-level checklist to keep in sync: this file IS the record of what happened.
33
10
 
34
11
  ## Persisting Progress to `tasks.json`
35
12
 
36
- > **Dois sistemas, dois vocabulários.** Tudo acima desta linha é sobre as *session
37
- > tasks* nativas do Claude Code (`TaskCreate`/`TaskUpdate`), cujo status terminal é
38
- > `completed`. Tudo abaixo é sobre o `tasks.json` do morph-spec, governado por
39
- > `.morph/framework/schemas/tasks.schema.json`, cujo status terminal é `done` —
40
- > **`completed` não existe nesse enum** e o hook `protect-spec-files` rejeita a
41
- > gravação. Não misture os dois.
42
-
43
- Native session tasks (`TaskCreate`/`TaskUpdate`) track your live work. To persist
44
- task progress for the feature, write `.morph/features/{feature}/2-plan/tasks.json`,
13
+ To record task progress for the feature, write `.morph/features/{feature}/2-plan/tasks.json`,
45
14
  touching ONLY the mutable fields:
46
15
 
47
16
  - `status` — `pending` → `in_progress` → `done` (também: `skipped`, `blocked`)
48
17
  - `outputs` — the files the task produced
49
18
  - `notes` — free-text record (deviations, context, resolved blockers)
50
19
 
20
+ > **O status terminal é `done`.** `completed` **não existe** no enum de
21
+ > `.morph/framework/schemas/tasks.schema.json` — é vocabulário de outro sistema, e o hook
22
+ > `protect-spec-files` rejeita a gravação.
23
+
51
24
  The plan contract — `title`, `description`, `dependencies`, `effort`, `doneCriteria`,
52
25
  `group`, `agent`, `standards` — is frozen after Gate 2. Any attempt to change it is
53
26
  blocked by the `protect-spec-files` hook. `agent` (persona id, no `morph-` prefix)
@@ -59,6 +32,10 @@ as long as it touches only `status`, `outputs`, and `notes`. State is then synce
59
32
  automatically by the `state-sync` PostToolUse hook; you do not call a CLI to mark
60
33
  output.
61
34
 
35
+ Update each task as you go — `in_progress` when you pick it up, `done` when it is finished —
36
+ rather than batching every write to the end of the phase. `morph-spec status`, `dag`, `verify`
37
+ and the dashboard all read this file, so a stale `tasks.json` is a blind orchestrator.
38
+
62
39
  ## Deviation Tracking
63
40
 
64
41
  When completing a task differently than originally planned, record the reason in the
@@ -215,7 +215,7 @@ task turns out to be bigger than estimated, three different situations resolve t
215
215
 
216
216
  | Situation | Path |
217
217
  |-----------|------|
218
- | **Small addition**, still inside the task's scope | Record it in the task's `notes` (a mutable field) and track the sub-steps with native `TaskCreate`/`TaskUpdate` for this session |
218
+ | **Small addition**, still inside the task's scope | Record it in the task's `notes` (a mutable field) — no gate to revoke, no contract to amend |
219
219
  | **Error of fact**: the spec asserts something about the code that the code contradicts, with no scope change | Append an `## Errata` block at the END of the file. Body untouched, append-only, accepted by `protect-spec-files` **without revoking the gate** — freezing the CONTRACT is not freezing an ERROR OF FACT (MORPH.md §3) |
220
220
  | **The scope itself changed**: the contract no longer describes the work | `morph-spec unapprove {feature} plan --reason "..."`, amend the plan, then re-approve. There is no shortcut around the gate for this one |
221
221
 
@@ -4,7 +4,7 @@ description: Guia a criação de uma landing page nova ponta-a-ponta a partir do
4
4
  version: core
5
5
  when-to-invoke: ao iniciar um novo projeto de LP com o template Umbraco genérico
6
6
  user-invokable: true
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  stacks:
9
9
  - umbraco
10
10
  ---
@@ -4,7 +4,7 @@ description: Migra uma landing page existente (React/Vite, Next.js estático ou
4
4
  version: core
5
5
  when-to-invoke: ao receber instrução "use /migrate-lp-to-umbraco {projeto}" do usuário, ou quando o usuário descrever necessidade de migrar uma LP para Umbraco
6
6
  user-invokable: true
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  stacks:
9
9
  - umbraco
10
10
  ---
@@ -4,7 +4,7 @@ description: Orquestra a execução autônoma de tasks de uma feature morph-spec
4
4
  version: core
5
5
  when-to-invoke: após Gate 2 aprovado, ao receber instrução "use /morph-apply" ou "implementar feature"
6
6
  user-invokable: true
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  ---
9
9
 
10
10
  # morph-apply
@@ -158,8 +158,8 @@ dispatch Agent (subagent_type: "morph-{id}") with prompt:
158
158
  (que é cortesia best-effort e pode não chegar inteira). NÃO chame
159
159
  SendMessage.
160
160
  2. NÃO toque em tasks.json, feature.json, state.json nem no board de
161
- sessão (TaskCreate/TaskUpdate) — todo estado (status de task, scores,
162
- gates) é gravado exclusivamente pelo orquestrador.
161
+ sessão — todo estado (status de task, scores, gates) é gravado
162
+ exclusivamente pelo orquestrador.
163
163
  3. Verificação condicional ao isolamento:
164
164
  - Batch SEM isolamento (working tree compartilhada): NÃO rode build/test da
165
165
  suíte compartilhada — edições concorrentes quebram o build umas das outras;
@@ -4,7 +4,7 @@ description: Entende o negócio, os usuários e a arquitetura antes de qualquer
4
4
  version: core
5
5
  when-to-invoke: ao receber um novo request de feature, antes de morph-plan
6
6
  user-invokable: true
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  ---
9
9
 
10
10
  # morph-brainstorming
@@ -4,7 +4,7 @@ description: Avalia a qualidade de uma tarefa ou fase com rubricas graduadas 0-1
4
4
  version: core
5
5
  when-to-invoke: ao completar uma tarefa ou ao finalizar uma fase de implementação
6
6
  user-invokable: false
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  ---
9
9
 
10
10
  # morph-eval
@@ -4,7 +4,7 @@ description: ADW cirúrgico de hotfix — resolve uma queda/bug crítico de prod
4
4
  version: core
5
5
  when-to-invoke: ao receber "/morph-hotfix {feature}", quando a morph-proposal classifica o pedido como workType hotfix (Passo 0), ou o usuário diz "produção caiu / hotfix / urgente"
6
6
  user-invokable: true
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  ---
9
9
 
10
10
  # morph-hotfix
@@ -4,7 +4,7 @@ description: Guia a execução de cada tarefa de implementação com standard e
4
4
  version: core
5
5
  when-to-invoke: ao iniciar cada task de implementação listada em tasks.json
6
6
  user-invokable: false
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  ---
9
9
 
10
10
  # morph-implement
@@ -4,7 +4,7 @@ description: Guia a produção dos artefatos de planejamento de uma feature (use
4
4
  version: core
5
5
  when-to-invoke: ao iniciar a fase plan de uma feature, após o Gate 1 (proposal aprovado)
6
6
  user-invokable: true
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  ---
9
9
 
10
10
  # morph-plan
@@ -4,7 +4,7 @@ description: Orquestra a fase de proposta+plano de uma feature morph-spec. Encad
4
4
  version: core
5
5
  when-to-invoke: ao receber instrução "use /morph-proposal" do usuário, ou ao iniciar uma nova feature
6
6
  user-invokable: true
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  ---
9
9
 
10
10
  # morph-proposal
@@ -4,7 +4,7 @@ description: Conduz a fase de revisão e produz o review-report.md para o Gate 3
4
4
  version: core
5
5
  when-to-invoke: ao iniciar a fase review, após todas as tasks de tasks.json estarem com status `done`
6
6
  user-invokable: true
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  ---
9
9
 
10
10
  # morph-review
@@ -4,7 +4,7 @@ description: Varre o codebase existente, detecta stack atual, compara com o stac
4
4
  version: core
5
5
  when-to-invoke: ao iniciar uma feature em projeto brownfield (codebase já existente)
6
6
  user-invokable: true
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  ---
9
9
 
10
10
  # morph-stack-scan
@@ -4,7 +4,7 @@ description: Localiza um standard específico via busca server-side (morph-spec
4
4
  version: core
5
5
  when-to-invoke: quando precisar consultar um standard específico durante a implementação
6
6
  user-invokable: true
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  ---
9
9
 
10
10
  # morph-standards
@@ -4,7 +4,7 @@ description: Conduz a fase opcional de UI/UX — design system, mockups, compone
4
4
  version: core
5
5
  when-to-invoke: ao tomar o ramo uiux (morph-spec advance --design), depois do Gate 1 e antes do morph-plan
6
6
  user-invokable: true
7
- cliVersion: "8.26.0"
7
+ cliVersion: "8.27.0"
8
8
  ---
9
9
 
10
10
  # morph-uiux
@@ -76,10 +76,10 @@ morph-spec archive <feature>
76
76
  morph-spec doctor
77
77
  ```
78
78
 
79
- > **Task tracking is native.** During the implement phase Claude tracks its own
80
- > work with the `TaskCreate`/`TaskUpdate` tools and persists progress by writing
81
- > `tasks.json` (only the `status`, `outputs`, and `notes` fields). State is synced
82
- > automatically by the `state-sync` hook — task tracking is native, not a CLI command.
79
+ > **Task tracking lives in `tasks.json`.** During the implement phase Claude records
80
+ > progress by writing `tasks.json` directly (only the `status`, `outputs`, and `notes`
81
+ > fields). State is synced automatically by the `state-sync` hook — there is no CLI
82
+ > command to mark a task done.
83
83
 
84
84
  ---
85
85
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polymorphism-tech/morph-spec",
3
- "version": "8.26.0",
3
+ "version": "8.27.0",
4
4
  "description": "MORPH-SPEC: NLH (Natural Language Harness) for spec-driven development with Claude Code",
5
5
  "keywords": [
6
6
  "claude-code",