project-tiny-context-harness 0.8.3 → 0.8.4
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 +18 -6
- package/assets/README.md +15 -11
- package/assets/README.zh-CN.md +18 -8
- package/assets/agents/AGENTS_CORE.md +1 -1
- package/dist/lib/migrations.js +64 -0
- package/dist/lib/profiles.js +0 -2
- package/package.json +1 -1
- package/assets/skills/normal-long-task/SKILL.md +0 -12
package/README.md
CHANGED
|
@@ -64,10 +64,18 @@ No-install preview:
|
|
|
64
64
|
|
|
65
65
|
`project_context/**` preserves small durable facts across sessions. The default workflow reads graph-relevant Context, supplements that route with one bounded Context search before `Context Delta`, and uses the platform's internal plan. For explicit long work, `long-task-delivery-v2` adds one complete Contract authority, fail-closed Source ownership, Control/applicability closure, semantic Counterfactuals, a one-time user model choice after Authority Lock, scoped progress and a protected-input-recompiled Live Final Gate.
|
|
66
66
|
|
|
67
|
-
Minimal Context preserves durable facts, the Workflow Contract governs ordinary work, and the Long-Task Workflow adds explicit machine completion authority.
|
|
68
|
-
|
|
69
67
|
Tiny Context does not invoke or switch models, create agents, branches or worktrees, merge, push, create PRs, deploy, or replace project tests and human acceptance.
|
|
70
68
|
|
|
69
|
+
## Capability Model
|
|
70
|
+
|
|
71
|
+
| Capability | When and how to use it | What it owns |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| **Minimal Context** | Installed by default. Every delivery route reads and updates `project_context/**` as needed. | Durable goals, ownership, architecture/interface/state boundaries and repeatable verification/deployment facts; never a test-pass claim. |
|
|
74
|
+
| **Workflow Contract** | Default after `init`. Give ordinary work to the current coding Goal; there is no slash command and no `delivery-contract.yaml`. | Context discovery, Architecture Deliberation, one `Context Delta`, implementation, project checks, Contract Conformance and Context drift. |
|
|
75
|
+
| **Long-Task Workflow** | Enable the profile once, then explicitly invoke `/long-task-workflow`, or resume a valid existing binding. Task size alone does not activate it. | One Source-bound Delivery Contract, Authority Lock, recoverable scoped progress, protected revision and a current-snapshot Live Final Gate. |
|
|
76
|
+
|
|
77
|
+
Every delivery uses Minimal Context. Ordinary delivery uses the default Workflow Contract; an explicitly selected Long-Task uses `/long-task-workflow` as the sole long-task execution and completion carrier. `/design-system-authoring` and `/design-resource-authoring` are independent optional upstream Skills, not Long-Task stages. Their selected outputs may feed either route.
|
|
78
|
+
|
|
71
79
|
## Install And Initialize
|
|
72
80
|
|
|
73
81
|
```powershell
|
|
@@ -89,8 +97,12 @@ Enabling Long-Task additionally installs `/long-task-workflow`, the retired `/so
|
|
|
89
97
|
|
|
90
98
|
## Recommended Usage
|
|
91
99
|
|
|
92
|
-
|
|
93
|
-
|
|
100
|
+
Start from either a concise product request or a detailed initial proposal authored elsewhere, including Web GPT. That input does not require design authoring or Long-Task; choose the execution route independently.
|
|
101
|
+
|
|
102
|
+
- **Ordinary delivery, no new design resources:** give the request directly to the current coding Goal; the default Workflow Contract applies automatically.
|
|
103
|
+
- **Long delivery, no new design resources:** invoke `/long-task-workflow` with the request or proposal. It authors the Source-bound Contract Draft; design authoring is not a prerequisite.
|
|
104
|
+
- **Delivery that needs new design resources:** run `/design-system-authoring` only when Design Authority is absent, then `/design-resource-authoring` to select and freeze resources and emit the validated residual handoff. Send the result to either the default Workflow Contract or `/long-task-workflow`, based on recovery and completion-authority needs.
|
|
105
|
+
- **Design-resource-only request:** stop after `/design-resource-authoring`; do not create a Long-Task Contract unless implementation delivery was also selected.
|
|
94
106
|
|
|
95
107
|
The design-system Skill is normally used at cold start but never auto-runs. Only style-bearing resource work is gated; low-fidelity structure, IA/flow and semantics-only state studies remain available. A legacy Source Plan remains ordinary input, not a recommended intermediate service.
|
|
96
108
|
|
|
@@ -144,7 +156,7 @@ npm ci
|
|
|
144
156
|
npm run smoke:quickstart
|
|
145
157
|
npm run preview:pack
|
|
146
158
|
cd /path/to/your/test-repo
|
|
147
|
-
npm install -D /path/to/project-tiny-context-harness/tmp/ty-context/source-preview/package/project-tiny-context-harness-0.8.
|
|
159
|
+
npm install -D /path/to/project-tiny-context-harness/tmp/ty-context/source-preview/package/project-tiny-context-harness-0.8.4.tgz
|
|
148
160
|
npx --no-install ty-context init --adopt
|
|
149
161
|
make validate-context
|
|
150
162
|
```
|
|
@@ -375,7 +387,7 @@ make validate-harness
|
|
|
375
387
|
|
|
376
388
|
The modularity gate is `ty-context check-modularity`. Scoped waivers require `owner`, `introduced_at`, `reason`, `tracking_issue` and `expiry_condition`.
|
|
377
389
|
|
|
378
|
-
The synchronized local preview tarball is named `project-tiny-context-harness-0.8.
|
|
390
|
+
The synchronized local preview tarball is named `project-tiny-context-harness-0.8.4.tgz`.
|
|
379
391
|
|
|
380
392
|
## Community And Further Reading
|
|
381
393
|
|
package/assets/README.md
CHANGED
|
@@ -73,11 +73,15 @@ It does not launch or switch models, spawn agents, create branches or worktrees,
|
|
|
73
73
|
|
|
74
74
|
## Capability Model
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
| Capability | When and how to use it | What it owns |
|
|
77
|
+
|---|---|---|
|
|
78
|
+
| **Minimal Context** | Installed by default. Agents read and update `project_context/**` on every delivery route. | Durable goals, ownership, architecture/interface/state boundaries and repeatable verification/deployment facts. It never claims that implementation or tests passed. |
|
|
79
|
+
| **Workflow Contract** | The default after `init`. Ask the coding agent to do ordinary work normally; there is no slash command and no `delivery-contract.yaml`. | The lightweight loop: Context discovery, Architecture Deliberation, one `Context Delta`, implementation, project checks, Contract Conformance and Context drift. |
|
|
80
|
+
| **Long-Task Workflow** | Enable the `long-task` profile once, then explicitly invoke `/long-task-workflow`, or resume an existing valid binding. Task size alone never activates it. | One Source-bound Delivery Contract, Authority Lock, recoverable scoped progress, protected revision and one current-snapshot Live Final Gate. |
|
|
81
|
+
|
|
82
|
+
The relationship is deliberately one-of-two at execution time: every delivery consumes Minimal Context, then ordinary work uses the default Workflow Contract while an explicitly selected Long-Task uses `/long-task-workflow` as its execution and completion carrier. Long-Task Final Gate carries the final architecture and selected-design closure instead of duplicating the default Contract Conformance closure.
|
|
79
83
|
|
|
80
|
-
The base managed set also provides two explicitly triggered Open Design adapters: `/design-system-authoring` generates/selects/adopts project Design Authority at cold start, while `/design-resource-authoring` commissions task-local resources.
|
|
84
|
+
The base managed set also provides two explicitly triggered Open Design adapters: `/design-system-authoring` generates/selects/adopts project Design Authority at cold start, while `/design-resource-authoring` commissions task-local resources. They are optional upstream Skills, not a fourth mechanism and not stages inside Long-Task. Their selected outputs may feed either execution route, and `/long-task-workflow` is the only active long-task execution Skill. `/source-plan-authoring` remains only as a retired compatibility pointer because Long-Task inputs now enter one Source-bound Contract Draft loop directly.
|
|
81
85
|
|
|
82
86
|
Default profiles are `core-portable` and `workflow-default`. Enable the opt-in profile with:
|
|
83
87
|
|
|
@@ -89,10 +93,12 @@ This additionally installs `/long-task-workflow`, the `/source-plan-authoring` c
|
|
|
89
93
|
|
|
90
94
|
## Recommended Usage
|
|
91
95
|
|
|
92
|
-
Start from
|
|
96
|
+
Start from the delivery request: either concise product intent or a detailed initial proposal authored elsewhere, including Web GPT. That input does not imply design authoring or Long-Task; choose the execution route independently of whether design resources are involved:
|
|
93
97
|
|
|
94
|
-
- **
|
|
95
|
-
- **
|
|
98
|
+
- **Ordinary delivery, no new design resources:** ask the current coding Goal to implement the request. The default Workflow Contract applies automatically; no workflow Skill or Contract file is needed.
|
|
99
|
+
- **Long delivery, no new design resources:** enable the profile once, invoke `/long-task-workflow` with the request or proposal, and let that Skill author the Source-bound Contract Draft. Design authoring is not a prerequisite.
|
|
100
|
+
- **Delivery that first needs design resources:** explicitly run `/design-system-authoring` only if project Design Authority is absent, then use `/design-resource-authoring` to generate/select resources, completely freeze an implementation-level source when needed, reconcile accepted decisions once and emit a validated residual `design-resource-handoff-v1`. Feed the revised proposal plus selected immutable resources to either the default Workflow Contract or `/long-task-workflow`, based on recovery and completion-authority needs.
|
|
101
|
+
- **Design-resource-only request:** stop after `/design-resource-authoring`; do not create a Long-Task Contract unless implementation delivery was also explicitly selected.
|
|
96
102
|
|
|
97
103
|
The design-system step is user-invoked, normally at project cold start; no command or downstream Skill runs it automatically. `/design-resource-authoring` gates only style-bearing work when Design Authority is unconfigured. Low-fidelity structure, IA/flow and semantics-only state studies remain available without that gate. A legacy Source Plan is accepted as ordinary input, but it is no longer a recommended intermediate service.
|
|
98
104
|
|
|
@@ -146,7 +152,7 @@ The smoke packs the local workspace, installs it into a disposable repo and vali
|
|
|
146
152
|
|
|
147
153
|
```sh
|
|
148
154
|
cd /path/to/your/test-repo
|
|
149
|
-
npm install -D /path/to/project-tiny-context-harness/tmp/ty-context/source-preview/package/project-tiny-context-harness-0.8.
|
|
155
|
+
npm install -D /path/to/project-tiny-context-harness/tmp/ty-context/source-preview/package/project-tiny-context-harness-0.8.4.tgz
|
|
150
156
|
npx --no-install ty-context init --adopt
|
|
151
157
|
make validate-context
|
|
152
158
|
```
|
|
@@ -583,8 +589,6 @@ Version 0.6.0 defined the first public V2 semantics while retaining the `long-ta
|
|
|
583
589
|
|
|
584
590
|
The current V2 semantic-assurance closure additionally requires full Context, an architecture-classified Source obligation, atomic applicability dimensions, explicit target and blocker capabilities, applicability-bound Control-relation closure, Population universe carriers, claim-local semantic mutation, per-method/condition record and primary-observation artifacts, and the supported direct-literal verifier dependency closure. An older V2 Contract missing those meanings reports the indexed manual migration `long-task-v2-semantic-drift-authority`; re-author them from Source. Upgrade never infers those semantics or imports old Progress/Receipts as passing evidence.
|
|
585
591
|
|
|
586
|
-
`/normal-long-task` is also a retirement pointer to `/long-task-workflow`; it creates no checklist, prompt, audit, matrix, verdict or second authority.
|
|
587
|
-
|
|
588
592
|
### Package update modes
|
|
589
593
|
|
|
590
594
|
After updating the package, run `ty-context upgrade`. Use `ty-context upgrade --check` first when you need a read-only plan.
|
|
@@ -614,7 +618,7 @@ make validate-harness
|
|
|
614
618
|
|
|
615
619
|
The modularity gate is `ty-context check-modularity`. Scoped waivers require `owner`, `introduced_at`, `reason`, `tracking_issue` and `expiry_condition`.
|
|
616
620
|
|
|
617
|
-
`npm run preview:pack` produces a local preview named `project-tiny-context-harness-0.8.
|
|
621
|
+
`npm run preview:pack` produces a local preview named `project-tiny-context-harness-0.8.4.tgz` under the preview output directory.
|
|
618
622
|
|
|
619
623
|
## Community And Further Reading
|
|
620
624
|
|
package/assets/README.zh-CN.md
CHANGED
|
@@ -10,14 +10,22 @@ Project Tiny Context Harness 是给 AI coding agents 用的轻量项目记忆层
|
|
|
10
10
|
|
|
11
11
|
编码 Agent 同时需要两类能力:跨会话仍然可靠的少量项目事实,以及长任务经历多轮修改或上下文压缩后仍可信的完成检查。
|
|
12
12
|
|
|
13
|
-
Tiny Context
|
|
14
|
-
|
|
15
|
-
1. **Minimal Context**:`project_context/**` 保存产品归属、架构、契约和可重复验证等耐久事实。
|
|
16
|
-
2. **Workflow Contract**:普通任务使用 Context-first 的轻量默认循环和平台内部计划,不要求计划文件。
|
|
17
|
-
3. **Long-Task Workflow**:显式使用 `long-task-delivery-v2`、编译期 Claim Coverage、一次 Authority Lock 后的模型选择、滚动修复验证与 Live Final Gate。
|
|
13
|
+
Tiny Context 将这些能力保持为窄边界。
|
|
18
14
|
|
|
19
15
|
它不会启动或切换模型,不会创建 Agent、分支或 worktree,不会 merge、push、创建 PR 或部署,也不会取代项目测试和人工产品验收。
|
|
20
16
|
|
|
17
|
+
## 三个机制如何配合
|
|
18
|
+
|
|
19
|
+
| 机制 | 何时、如何使用 | 负责什么 |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| **Minimal Context** | 默认安装;每种交付路径都会读取并按需更新 `project_context/**`。 | 保存目标、归属、架构/接口/状态边界和可重复验证/部署等耐久事实;不声称实现或测试已经通过。 |
|
|
22
|
+
| **Workflow Contract** | `init` 后默认生效。普通任务直接交给当前 coding Goal;没有 slash command,也不创建 `delivery-contract.yaml`。 | 执行轻量循环:Context 发现、Architecture Deliberation、唯一 `Context Delta`、实现、项目检查、Contract Conformance 与 Context drift。 |
|
|
23
|
+
| **Long-Task Workflow** | 先启用一次 `long-task` profile,再显式调用 `/long-task-workflow`;已有有效绑定时恢复。不能因为任务看起来很长就自动启用。 | 持有一份 Source-bound Delivery Contract、Authority Lock、可恢复的局部进度、受保护修订和当前快照 Live Final Gate。 |
|
|
24
|
+
|
|
25
|
+
三者的关系是:每个任务都使用 Minimal Context;普通任务走默认 Workflow Contract;只有显式选择或恢复有效绑定时,才由 `/long-task-workflow` 承担执行与完成权威。Long-Task 的 Final Gate 承载最终架构与选定设计闭环,不再重复默认 Contract Conformance。
|
|
26
|
+
|
|
27
|
+
`/design-system-authoring` 与 `/design-resource-authoring` 是基础 Profile 中独立、可选的上游设计 Skill,不是第四个机制,也不是 Long-Task 的阶段。其选定产物可以进入默认或 Long-Task 任一路径;当前唯一活跃的长程执行 Skill 是 `/long-task-workflow`。
|
|
28
|
+
|
|
21
29
|
## 快速开始
|
|
22
30
|
|
|
23
31
|
```powershell
|
|
@@ -48,10 +56,12 @@ ty-context enable long-task
|
|
|
48
56
|
|
|
49
57
|
## 推荐用法
|
|
50
58
|
|
|
51
|
-
|
|
59
|
+
初始输入可以是简要产品意图,也可以是 Web GPT 等外部服务给出的详细初始方案。该输入本身不要求设计 authoring 或 Long-Task;应按交付需要选择执行路径,不要把“是否需要设计资源”和“是否需要 Long-Task”绑定在一起:
|
|
52
60
|
|
|
53
|
-
-
|
|
54
|
-
-
|
|
61
|
+
- **普通交付、不需要新设计资源:** 直接把需求交给当前 coding Goal;默认 Workflow Contract 自动生效,不需要 Workflow Skill 或 Contract 文件。
|
|
62
|
+
- **长程交付、不需要新设计资源:** 启用一次 Profile 后,直接用需求或初始方案调用 `/long-task-workflow`;该 Skill 会建立 Source-bound Contract Draft,设计资源不是前置条件。
|
|
63
|
+
- **交付前确实需要设计资源:** 项目缺少 Design Authority 时才显式调用 `/design-system-authoring`,再用 `/design-resource-authoring` 生成/选择资源、按需完整冻结实现级 Source、一次性回改已接受决策并生成通过校验的残余 `design-resource-handoff-v1`。随后根据恢复与完成权威需求,把修订方案和选定资源交给默认 Workflow Contract 或 `/long-task-workflow`。
|
|
64
|
+
- **只需要设计资源:** 在 `/design-resource-authoring` 完成后结束;除非还明确选择了实现交付,否则不创建 Long-Task Contract。
|
|
55
65
|
|
|
56
66
|
设计系统通常在项目冷启动时确定,但该 Skill 只由用户调用,`init`、`sync` 与下游 Skill 都不会自动执行。`/design-resource-authoring` 只对高保真、品牌化、视觉处理等 style-bearing 资源设门禁;低保真结构、IA/流程与纯语义状态研究不受此门禁。旧 Source Plan 仍可作为普通输入,但不再是推荐中间服务。
|
|
57
67
|
|
|
@@ -37,7 +37,7 @@ Do not infer long-task mode from duration, complexity, file count or agent prefe
|
|
|
37
37
|
|
|
38
38
|
1. A valid Git common-dir active record plus matching worktree Git-config marker resumes through `ty-context long-task resume <workdir>` and `/long-task-workflow` in the current native Goal.
|
|
39
39
|
2. Explicit `/long-task-workflow` authors or resumes exactly one complete `long-task-delivery-v2` Contract for the selected delivery.
|
|
40
|
-
3.
|
|
40
|
+
3. Otherwise remain on the default Workflow Contract, even when work appears long.
|
|
41
41
|
|
|
42
42
|
Raw/revised proposals, selected design resources and mixed attachments enter one Source-bound Contract Draft loop immediately. Source inventory, refinement, provenance, markers and Contract mapping converge in the same non-authoritative `delivery-contract.yaml` until Preflight is ready and formal Compile creates Authority Lock; there is no prior or internal Source-authoring stage. Every non-empty line in declared Markdown Source belongs to one Material Item, the one validated formal handoff block or a closed-grammar background block containing only text-free anchors/horizontal rules or fixed-field `ty-source-provenance` comments; text-bearing headings, free-form provenance, arbitrary background prose and unclassified text fail closed unless classified as Material. At least one technical-obligation Source Item has `aspect=architecture` and maps to an independently provable architecture obligation. A legacy Source Plan remains ordinary input. Candidate resources authorize no fidelity Claim. A selected implementation handoff must pass the shared design-resource preflight; its marked residual handoff enters `task.source_paths`, its handoff and source-profile entry/dependencies enter target Check `verification_inputs`, and Long-Task Preflight/Compile requires exact target/condition/file equality, complete fact/resource closure, covered Source Claims, one independent positive Assertion plus typed `design_method` evidence, exact `fact_refs`, a distinct record path and primary-observation path/current digest for every method × condition cell, and blocker Source-item/method/capability lineage before Authority Lock. Playwright emits method evidence only when every project instance explicitly attaches both cell artifacts, and runtime fact refs must equal the compiled cell. After lock, resource changes use Authority Revision.
|
|
43
43
|
|
package/dist/lib/migrations.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
1
2
|
import path from "node:path";
|
|
2
3
|
import { promises as fs } from "node:fs";
|
|
3
4
|
import { CONTEXT_MANIFEST_PATH, contextManifestFromExistingAreas, } from "./context-manifest.js";
|
|
@@ -13,6 +14,8 @@ import { semanticDriftMigrationFields } from "./long-task-semantic-drift-migrati
|
|
|
13
14
|
async function verifyNoop() {
|
|
14
15
|
return;
|
|
15
16
|
}
|
|
17
|
+
const REMOVED_NORMAL_LONG_TASK_SKILL = "normal-long-task";
|
|
18
|
+
const REMOVED_NORMAL_LONG_TASK_SKILL_SHA256 = "7a4f755da9a32e07f258d6c7fc5e5c70395257c72efb8a9ad4995cddcc4c73ba";
|
|
16
19
|
export const migrations = [
|
|
17
20
|
legacySdlcHarnessMigration,
|
|
18
21
|
{
|
|
@@ -25,6 +28,17 @@ export const migrations = [
|
|
|
25
28
|
detect: detectLongTaskSemanticDriftAuthority,
|
|
26
29
|
verify: verifyNoop,
|
|
27
30
|
},
|
|
31
|
+
{
|
|
32
|
+
id: "remove-normal-long-task-skill",
|
|
33
|
+
introducedIn: "0.8.4",
|
|
34
|
+
description: "Remove the obsolete normal-long-task compatibility Skill; long-task-workflow is the sole explicit Long-Task execution Skill.",
|
|
35
|
+
scope: "<harnessRoot>/skills/normal-long-task",
|
|
36
|
+
risk: "safe",
|
|
37
|
+
manualMessage: "The same-name directory differs from the former package-owned compatibility Skill. Preserve any user-authored content elsewhere, then remove the directory manually.",
|
|
38
|
+
detect: detectRemovedNormalLongTaskSkill,
|
|
39
|
+
apply: migrateRemovedNormalLongTaskSkill,
|
|
40
|
+
verify: verifyRemovedNormalLongTaskSkill,
|
|
41
|
+
},
|
|
28
42
|
{
|
|
29
43
|
id: "long-task-v1-retirement",
|
|
30
44
|
introducedIn: "0.6.0",
|
|
@@ -131,6 +145,56 @@ async function detectLongTaskSemanticDriftAuthority(projectRoot, _root, migratio
|
|
|
131
145
|
item(migration, "manual_required", ".long-task/delivery-contract.yaml", `The active/draft V2 Contract predates semantic-drift authority and is missing: ${fields.slice(0, 12).join(", ")}${fields.length > 12 ? `, +${fields.length - 12} more` : ""}. Re-author these meanings from Source; do not synthesize them from old passing evidence.`),
|
|
132
146
|
];
|
|
133
147
|
}
|
|
148
|
+
async function detectRemovedNormalLongTaskSkill(projectRoot, root, migration) {
|
|
149
|
+
const skill = removedNormalLongTaskSkillPath(projectRoot, root);
|
|
150
|
+
const state = await removedNormalLongTaskSkillState(skill);
|
|
151
|
+
if (state === "absent")
|
|
152
|
+
return [];
|
|
153
|
+
const relative = path.relative(projectRoot, skill).split(path.sep).join("/");
|
|
154
|
+
return [
|
|
155
|
+
item(migration, state === "package-owned" ? "safe_pending" : "manual_required", relative, state === "package-owned"
|
|
156
|
+
? "Remove the exact obsolete package-owned compatibility Skill."
|
|
157
|
+
: "The obsolete Skill directory contains modified or additional content; preserve any user-authored material elsewhere and remove it manually."),
|
|
158
|
+
];
|
|
159
|
+
}
|
|
160
|
+
async function migrateRemovedNormalLongTaskSkill(projectRoot, root, report) {
|
|
161
|
+
const skill = removedNormalLongTaskSkillPath(projectRoot, root);
|
|
162
|
+
const state = await removedNormalLongTaskSkillState(skill);
|
|
163
|
+
const relative = path.relative(projectRoot, skill).split(path.sep).join("/");
|
|
164
|
+
if (state === "absent") {
|
|
165
|
+
report.skipped.push("remove-normal-long-task-skill");
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (state !== "package-owned") {
|
|
169
|
+
throw new Error(`${relative} changed after upgrade planning; rerun upgrade and resolve the manual_required item`);
|
|
170
|
+
}
|
|
171
|
+
await fs.rm(skill, { recursive: true, force: true });
|
|
172
|
+
report.changed.push(relative);
|
|
173
|
+
}
|
|
174
|
+
async function verifyRemovedNormalLongTaskSkill(projectRoot, root) {
|
|
175
|
+
if (await pathExists(removedNormalLongTaskSkillPath(projectRoot, root))) {
|
|
176
|
+
throw new Error("remove-normal-long-task-skill migration verification failed");
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
function removedNormalLongTaskSkillPath(projectRoot, root) {
|
|
180
|
+
return path.join(projectRoot, root, "skills", REMOVED_NORMAL_LONG_TASK_SKILL);
|
|
181
|
+
}
|
|
182
|
+
async function removedNormalLongTaskSkillState(skill) {
|
|
183
|
+
if (!(await pathExists(skill)))
|
|
184
|
+
return "absent";
|
|
185
|
+
const files = await listFiles(skill);
|
|
186
|
+
if (files.length === 0)
|
|
187
|
+
return "package-owned";
|
|
188
|
+
if (files.length !== 1 ||
|
|
189
|
+
path.relative(skill, files[0]).split(path.sep).join("/") !== "SKILL.md") {
|
|
190
|
+
return "modified";
|
|
191
|
+
}
|
|
192
|
+
const normalized = (await readText(files[0])).replace(/\r\n/g, "\n");
|
|
193
|
+
const digest = createHash("sha256").update(normalized).digest("hex");
|
|
194
|
+
return digest === REMOVED_NORMAL_LONG_TASK_SKILL_SHA256
|
|
195
|
+
? "package-owned"
|
|
196
|
+
: "modified";
|
|
197
|
+
}
|
|
134
198
|
async function detectLongTaskV1Retirement(projectRoot, root, migration) {
|
|
135
199
|
const items = [];
|
|
136
200
|
const hook = path.join(projectRoot, root, "hooks", "long-task-hook.mjs");
|
package/dist/lib/profiles.js
CHANGED
|
@@ -58,8 +58,6 @@ export function enabledManagedSkillNames(config) {
|
|
|
58
58
|
"design-system-authoring",
|
|
59
59
|
"design-resource-authoring",
|
|
60
60
|
]);
|
|
61
|
-
if (isProfileEnabled(config, "workflow-default"))
|
|
62
|
-
names.add("normal-long-task");
|
|
63
61
|
if (isProfileEnabled(config, "long-task")) {
|
|
64
62
|
names.add("long-task-workflow");
|
|
65
63
|
names.add("source-plan-authoring");
|
package/package.json
CHANGED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: normal-long-task
|
|
3
|
-
description: Retired compatibility pointer for users who explicitly invoke /normal-long-task. Direct them to /long-task-workflow and do not create legacy checklist, prompt, audit, matrix, verdict, or plan artifacts.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Retired: Normal Long Task
|
|
7
|
-
|
|
8
|
-
`/normal-long-task` no longer defines a second long-task artifact workflow.
|
|
9
|
-
|
|
10
|
-
Use `/long-task-workflow` for one Canonical Delivery Contract, the current platform-native Goal, rolling implementation in the current workspace, targeted repair verification, a same-snapshot Final Gate and Stop freshness.
|
|
11
|
-
|
|
12
|
-
Do not create a preserved-source/checklist pair, target-mode prompt, Local Audit, matrix, verdict or second plan from this compatibility invocation.
|