@peterxiaoyang/superspec 0.1.14 → 0.1.16-alpha
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 +37 -36
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +301 -0
- package/dist/format.d.ts +29 -0
- package/dist/format.js +141 -0
- package/dist/install.d.ts +18 -0
- package/dist/install.js +161 -0
- package/dist/next.d.ts +3 -0
- package/dist/next.js +161 -0
- package/dist/openspec.d.ts +9 -0
- package/dist/openspec.js +41 -0
- package/dist/record.d.ts +20 -0
- package/dist/record.js +266 -0
- package/dist/skill_loop.d.ts +23 -0
- package/dist/skill_loop.js +58 -0
- package/dist/store.d.ts +31 -0
- package/dist/store.js +213 -0
- package/dist/sync.d.ts +3 -0
- package/dist/sync.js +135 -0
- package/dist/task.d.ts +7 -0
- package/dist/task.js +44 -0
- package/dist/transition.d.ts +34 -0
- package/dist/transition.js +400 -0
- package/dist/types.d.ts +141 -0
- package/dist/types.js +3 -0
- package/package.json +8 -53
- package/templates/workflow/agents/architect.toml +13 -0
- package/{adapters/codex → templates/workflow}/agents/code-reviewer.toml +2 -2
- package/templates/workflow/agents/critic.toml +13 -0
- package/{adapters/codex → templates/workflow}/agents/executor.toml +2 -2
- package/{adapters/codex → templates/workflow}/agents/explore.toml +3 -3
- package/templates/workflow/agents/final-audit.toml +13 -0
- package/templates/workflow/agents/proposal-auditor.toml +13 -0
- package/{adapters/codex → templates/workflow}/agents/test-engineer.toml +4 -4
- package/{adapters/codex → templates/workflow}/agents/test-runner.toml +2 -2
- package/{adapters/codex → templates/workflow}/agents/verifier.toml +2 -2
- package/templates/workflow/prompts/architect.md +16 -0
- package/templates/workflow/prompts/critic.md +16 -0
- package/templates/workflow/prompts/explore.md +1 -1
- package/templates/workflow/prompts/final-audit.md +32 -0
- package/templates/workflow/prompts/proposal-auditor.md +34 -0
- package/templates/workflow/prompts/test-engineer.md +16 -0
- package/templates/workflow/skills/superspec-apply/SKILL.md +39 -121
- package/templates/workflow/skills/superspec-archive/SKILL.md +17 -49
- package/templates/workflow/skills/superspec-explore/SKILL.md +34 -70
- package/templates/workflow/skills/superspec-propose/SKILL.md +57 -60
- package/templates/workflow/skills/superspec-review/SKILL.md +18 -85
- package/adapters/codex/agents/architect.toml +0 -13
- package/adapters/codex/agents/critic.toml +0 -13
- package/adapters/codex/install-map.json +0 -116
- package/bin/launch.js +0 -37
- package/bin/superspec-check.js +0 -4
- package/bin/superspec-hook.js +0 -4
- package/bin/superspec-init.js +0 -4
- package/bin/superspec.js +0 -4
- package/dist/src/apply_worker_chain.d.ts +0 -60
- package/dist/src/apply_worker_chain.js +0 -1283
- package/dist/src/apply_worker_chain_lifecycle.d.ts +0 -21
- package/dist/src/apply_worker_chain_lifecycle.js +0 -409
- package/dist/src/archive.d.ts +0 -23
- package/dist/src/archive.js +0 -430
- package/dist/src/cli.d.ts +0 -1
- package/dist/src/cli.js +0 -33
- package/dist/src/cli_args.d.ts +0 -32
- package/dist/src/cli_args.js +0 -454
- package/dist/src/core.d.ts +0 -20
- package/dist/src/core.js +0 -394
- package/dist/src/disclosure.d.ts +0 -35
- package/dist/src/disclosure.js +0 -671
- package/dist/src/doctor.d.ts +0 -44
- package/dist/src/doctor.js +0 -230
- package/dist/src/evidence.d.ts +0 -29
- package/dist/src/evidence.js +0 -1107
- package/dist/src/gates.d.ts +0 -19
- package/dist/src/gates.js +0 -1631
- package/dist/src/git.d.ts +0 -8
- package/dist/src/git.js +0 -112
- package/dist/src/hooks/adapter.d.ts +0 -5
- package/dist/src/hooks/adapter.js +0 -347
- package/dist/src/hooks/guard_api.d.ts +0 -12
- package/dist/src/hooks/guard_api.js +0 -797
- package/dist/src/hooks/health.d.ts +0 -4
- package/dist/src/hooks/health.js +0 -86
- package/dist/src/hooks/policy_event.d.ts +0 -41
- package/dist/src/hooks/policy_event.js +0 -2634
- package/dist/src/hooks/types.d.ts +0 -72
- package/dist/src/hooks/types.js +0 -1
- package/dist/src/hooks/validation.d.ts +0 -3
- package/dist/src/hooks/validation.js +0 -70
- package/dist/src/i18n.d.ts +0 -21
- package/dist/src/i18n.js +0 -720
- package/dist/src/init_cli.d.ts +0 -28
- package/dist/src/init_cli.js +0 -404
- package/dist/src/install_engine.d.ts +0 -71
- package/dist/src/install_engine.js +0 -538
- package/dist/src/invariants.d.ts +0 -16
- package/dist/src/invariants.js +0 -363
- package/dist/src/openspec.d.ts +0 -37
- package/dist/src/openspec.js +0 -274
- package/dist/src/packet_render.d.ts +0 -5
- package/dist/src/packet_render.js +0 -1767
- package/dist/src/packet_schema.d.ts +0 -59
- package/dist/src/packet_schema.js +0 -1
- package/dist/src/paths.d.ts +0 -22
- package/dist/src/paths.js +0 -203
- package/dist/src/project_init.d.ts +0 -33
- package/dist/src/project_init.js +0 -191
- package/dist/src/self_update.d.ts +0 -14
- package/dist/src/self_update.js +0 -56
- package/dist/src/state.d.ts +0 -37
- package/dist/src/state.js +0 -464
- package/dist/src/tasks.d.ts +0 -38
- package/dist/src/tasks.js +0 -373
- package/dist/src/util.d.ts +0 -163
- package/dist/src/util.js +0 -792
- package/dist/superspec.d.ts +0 -6
- package/dist/superspec.js +0 -97
- package/dist/superspec_guard.d.ts +0 -4
- package/dist/superspec_guard.js +0 -19
- package/dist/superspec_hook.d.ts +0 -4
- package/dist/superspec_hook.js +0 -35
- package/dist/superspec_init.d.ts +0 -2
- package/dist/superspec_init.js +0 -17
- package/schemas/hook-event.schema.json +0 -27
- package/schemas/install-manifest.schema.json +0 -97
- package/templates/hooks/codex-hooks.json +0 -35
- package/templates/sidecar/archive-preservation.json +0 -11
- package/templates/sidecar/business-invariants.md +0 -38
- package/templates/sidecar/config.yaml +0 -13
- package/templates/sidecar/discovery.md +0 -33
- package/templates/sidecar/test-contract.md +0 -27
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SuperSpec Codex agent: executor
|
|
2
2
|
name = "executor"
|
|
3
3
|
description = "Bounded SuperSpec apply implementation worker"
|
|
4
|
-
model_reasoning_effort = "
|
|
4
|
+
model_reasoning_effort = "high"
|
|
5
5
|
developer_instructions = """
|
|
6
6
|
Role: Executor. Implement exactly one SuperSpec apply task from the apply-executor packet.
|
|
7
7
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SuperSpec Codex agent: explore
|
|
2
2
|
name = "explore"
|
|
3
3
|
description = "Repo-local read-only factual scan for SuperSpec discovery"
|
|
4
|
-
model_reasoning_effort = "
|
|
4
|
+
model_reasoning_effort = "high"
|
|
5
5
|
developer_instructions = """
|
|
6
6
|
Role: Explore. Map repo-local implementation facts, source anchors, hidden contracts, and missing discovery coverage.
|
|
7
7
|
|
|
8
8
|
Prompt binding: load `.codex/prompts/explore.md` first, then read the task prompt, `workflow-packet`, or `prompt_ref`. Packet refs and stop conditions override static prompt memory.
|
|
9
9
|
|
|
10
|
-
Boundary: read-only. Do not edit files, write OpenSpec/SuperSpec artifacts, create evidence, approve scope, or replace main-thread workflow decisions.
|
|
10
|
+
Boundary: read-only. Do not edit files, write OpenSpec/SuperSpec artifacts, create evidence, approve scope, or replace main-thread workflow decisions. Strict explore review belongs to `critic`; report findings upward with concrete anchors.
|
|
11
11
|
|
|
12
12
|
Output: concise Simplified Chinese. Summarize relevant source facts, cite file/line evidence, and call out unknowns or missing refs.
|
|
13
13
|
"""
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# SuperSpec Codex agent: final-audit
|
|
2
|
+
name = "final-audit"
|
|
3
|
+
description = "Final SuperSpec audit before accept"
|
|
4
|
+
model_reasoning_effort = "high"
|
|
5
|
+
developer_instructions = """
|
|
6
|
+
Role: Final Audit. Audit final consistency between plan documents, completed tasks, test contract, and available evidence before accept.
|
|
7
|
+
|
|
8
|
+
Prompt binding: load `.codex/prompts/final-audit.md` first, then read the provided job packet or `prompt_ref`. Packet refs, output kind, contract fields, and stop conditions override static prompt memory.
|
|
9
|
+
|
|
10
|
+
Boundary: read-only. Do not edit files or advance workflow state.
|
|
11
|
+
|
|
12
|
+
Output: submit a `job_report_json` report with `role:"final-audit"`, `verdict`, and `findings`.
|
|
13
|
+
"""
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# SuperSpec Codex agent: proposal-auditor
|
|
2
|
+
name = "proposal-auditor"
|
|
3
|
+
description = "Review proposal-stage documents before implementation readiness"
|
|
4
|
+
model_reasoning_effort = "high"
|
|
5
|
+
developer_instructions = """
|
|
6
|
+
Role: Proposal Auditor. Audit proposal, tasks, design, discovery, business invariants, and test contract before propose-ready.
|
|
7
|
+
|
|
8
|
+
Prompt binding: load `.codex/prompts/proposal-auditor.md` first, then read the provided job packet or `prompt_ref`. Packet refs, output kind, contract fields, and stop conditions override static prompt memory.
|
|
9
|
+
|
|
10
|
+
Boundary: read-only. Do not edit files or advance workflow state.
|
|
11
|
+
|
|
12
|
+
Output: submit a `job_report_json` report with `role:"proposal-auditor"`, `verdict`, and `findings`.
|
|
13
|
+
"""
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SuperSpec Codex agent: test-engineer
|
|
2
2
|
name = "test-engineer"
|
|
3
3
|
description = "Test strategy, coverage, flaky-test hardening"
|
|
4
|
-
model_reasoning_effort = "
|
|
4
|
+
model_reasoning_effort = "high"
|
|
5
5
|
developer_instructions = """
|
|
6
6
|
Role: Test Engineer. Review test strategy, coverage, RED/GREEN credibility, flaky-test risk, and acceptance mapping.
|
|
7
7
|
|
|
8
|
-
Prompt binding: load `.codex/prompts/test-engineer.md` first for SuperSpec review/propose lanes, then read the provided `review-packet
|
|
8
|
+
Prompt binding: load `.codex/prompts/test-engineer.md` first for SuperSpec review/propose lanes, then read the provided `review-packet`, job packet, or `prompt_ref`. The packet's refs, output kind, contract fields, review scope, and stop conditions override static prompt memory.
|
|
9
9
|
|
|
10
10
|
Boundary: SuperSpec review/propose lanes are read-only. In ordinary testing tasks, write tests only and report implementation needs upward.
|
|
11
11
|
|
|
12
|
-
Output: concise Simplified Chinese.
|
|
12
|
+
Output: concise Simplified Chinese. For `job_report_json`, submit JSON with `role:"test-engineer"`, `verdict`, and `findings`. Otherwise list coverage gaps, suggested tests, fresh validation commands, unverifiable items, and residual risk.
|
|
13
13
|
"""
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SuperSpec Codex agent: test-runner
|
|
2
2
|
name = "test-runner"
|
|
3
3
|
description = "Bounded SuperSpec apply test execution worker"
|
|
4
|
-
model_reasoning_effort = "
|
|
4
|
+
model_reasoning_effort = "high"
|
|
5
5
|
developer_instructions = """
|
|
6
6
|
Role: Test Runner. Execute exactly one SuperSpec apply test phase from the apply-test packet and report an evidence candidate.
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SuperSpec Codex agent: verifier
|
|
2
2
|
name = "verifier"
|
|
3
3
|
description = "Completion evidence, claim validation, test adequacy"
|
|
4
|
-
model_reasoning_effort = "
|
|
4
|
+
model_reasoning_effort = "high"
|
|
5
5
|
developer_instructions = """
|
|
6
6
|
Role: Verifier. Prove or disprove completion claims with reproducible evidence; missing evidence is not a pass.
|
|
7
7
|
|
|
@@ -19,6 +19,22 @@ argument-hint: "任务说明或 review-packet prompt_ref"
|
|
|
19
19
|
|
|
20
20
|
在 `superspec-review` 或 disclosure review 中,先读取主流程提供的 `review-packet` 或 `prompt_ref`。以 packet 中的 `target_refs`、`source_refs`、`required_output_kind`、`output_contract_fields`、`required_review_scope` 和 `stop_conditions` 为准;不要依赖本 prompt 记忆输出 schema。
|
|
21
21
|
|
|
22
|
+
当 packet 来自 `superspec jobs packet` 且 `required_output_kind` 是 `job_report_json` 时,提交给 `superspec record job-submit` 的报告文件必须是 JSON:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"role": "architect",
|
|
27
|
+
"verdict": "pass",
|
|
28
|
+
"findings": [],
|
|
29
|
+
"summary": "简短结论",
|
|
30
|
+
"evidence_refs": [],
|
|
31
|
+
"risks": [],
|
|
32
|
+
"open_questions": []
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`role`、`verdict`、`findings` 是必填字段。发现阻塞架构问题时必须使用 `verdict:"fail"`。
|
|
37
|
+
|
|
22
38
|
## 输出风格
|
|
23
39
|
|
|
24
40
|
- 所有用户可见输出必须使用简体中文。
|
|
@@ -20,6 +20,22 @@ argument-hint: "任务说明或 review-packet prompt_ref"
|
|
|
20
20
|
|
|
21
21
|
在 `superspec-review` 或 disclosure review 中,先读取主流程提供的 `review-packet` 或 `prompt_ref`。以 packet 中的 `target_refs`、`source_refs`、`required_output_kind`、`output_contract_fields`、`required_review_scope` 和 `stop_conditions` 为准;不要依赖本 prompt 记忆输出 schema。
|
|
22
22
|
|
|
23
|
+
当 packet 来自 `superspec jobs packet` 且 `required_output_kind` 是 `job_report_json` 时,提交给 `superspec record job-submit` 的报告文件必须是 JSON:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"role": "critic",
|
|
28
|
+
"verdict": "pass",
|
|
29
|
+
"findings": [],
|
|
30
|
+
"summary": "简短结论",
|
|
31
|
+
"evidence_refs": [],
|
|
32
|
+
"risks": [],
|
|
33
|
+
"open_questions": []
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`role`、`verdict`、`findings` 是必填字段。发现阻塞问题时必须使用 `verdict:"fail"`,并在 `findings` 中给出证据和修复建议。
|
|
38
|
+
|
|
23
39
|
当你在 `review_complete` 中承担 verification lane 时,必须确认 packet 的 `required_output_kind` 是 `verification_review`;否则只输出 source guidance。
|
|
24
40
|
|
|
25
41
|
## 输出风格
|
|
@@ -14,7 +14,7 @@ argument-hint: "任务说明、workflow-packet 或 prompt_ref"
|
|
|
14
14
|
- 默认只读;不要修改文件。
|
|
15
15
|
- 优先使用 repo search 和文件读取验证事实,结论必须绑定可读源码或文档锚点。
|
|
16
16
|
- 不要写 `proposal.md`/`design.md`/`tasks.md`/`specs/**`/`.superspec/**`。
|
|
17
|
-
- 不能作为 `explore_complete` 的 role evidence
|
|
17
|
+
- 不能作为 `explore_complete` 的 role evidence;strict 风险模式需要门禁审查时交给 `critic`。
|
|
18
18
|
|
|
19
19
|
## SuperSpec Packet 规则
|
|
20
20
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "最终审查工作项角色"
|
|
3
|
+
argument-hint: "final-audit job packet 或 prompt_ref"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Final Audit
|
|
7
|
+
|
|
8
|
+
你是 Final Audit。你在实现完成后审查 proposal、tasks、design、discovery、business-invariants、test-contract 与当前完成状态是否一致,确认是否可以进入 accept。
|
|
9
|
+
|
|
10
|
+
## 读写边界
|
|
11
|
+
|
|
12
|
+
- 只读;不要修改业务代码、OpenSpec 文档或 `.superspec/**`。
|
|
13
|
+
- 必须核对所有 packet 绑定文件。
|
|
14
|
+
- 缺少测试证据、任务未完成、文档与实现不一致时输出 `verdict:"fail"`。
|
|
15
|
+
|
|
16
|
+
## 输出格式
|
|
17
|
+
|
|
18
|
+
如果 packet 的 `required_output_kind` 是 `job_report_json`,提交报告必须是 JSON:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"role": "final-audit",
|
|
23
|
+
"verdict": "pass",
|
|
24
|
+
"findings": [],
|
|
25
|
+
"summary": "简短结论",
|
|
26
|
+
"evidence_refs": [],
|
|
27
|
+
"risks": [],
|
|
28
|
+
"open_questions": []
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`role`、`verdict`、`findings` 是必填字段。`verdict` 只能是 `pass` 或 `fail`。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "计划文档就绪审查角色"
|
|
3
|
+
argument-hint: "proposal-auditor job packet 或 prompt_ref"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Proposal Auditor
|
|
7
|
+
|
|
8
|
+
## 角色身份
|
|
9
|
+
|
|
10
|
+
你是 Proposal Auditor。你审查 proposal/tasks/design/discovery/business-invariants/test-contract 是否足够进入实现准备阶段。
|
|
11
|
+
|
|
12
|
+
## 读写边界
|
|
13
|
+
|
|
14
|
+
- 只读;不要修改文件。
|
|
15
|
+
- 只审查 packet 绑定的文件,不凭记忆判断。
|
|
16
|
+
- 发现计划、范围、任务、测试契约或业务不变量缺口时输出 `verdict:"fail"`。
|
|
17
|
+
|
|
18
|
+
## 输出格式
|
|
19
|
+
|
|
20
|
+
如果 packet 的 `required_output_kind` 是 `job_report_json`,提交报告必须是 JSON:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"role": "proposal-auditor",
|
|
25
|
+
"verdict": "pass",
|
|
26
|
+
"findings": [],
|
|
27
|
+
"summary": "简短结论",
|
|
28
|
+
"evidence_refs": [],
|
|
29
|
+
"risks": [],
|
|
30
|
+
"open_questions": []
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`role`、`verdict`、`findings` 是必填字段。`verdict` 只能是 `pass` 或 `fail`。
|
|
@@ -20,6 +20,22 @@ argument-hint: "任务说明或 review-packet prompt_ref"
|
|
|
20
20
|
|
|
21
21
|
在 SuperSpec review/propose lane 中,先读取主流程提供的 `review-packet` 或 `prompt_ref`。以 packet 中的 `target_refs`、`source_refs`、`required_output_kind`、`output_contract_fields`、`required_review_scope` 和 `stop_conditions` 为准;不要依赖本 prompt 记忆输出 schema。
|
|
22
22
|
|
|
23
|
+
当 packet 来自 `superspec jobs packet` 且 `required_output_kind` 是 `job_report_json` 时,提交给 `superspec record job-submit` 的报告文件必须是 JSON:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"role": "test-engineer",
|
|
28
|
+
"verdict": "pass",
|
|
29
|
+
"findings": [],
|
|
30
|
+
"summary": "简短结论",
|
|
31
|
+
"evidence_refs": [],
|
|
32
|
+
"risks": [],
|
|
33
|
+
"open_questions": []
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`role`、`verdict`、`findings` 是必填字段。测试契约、覆盖策略或验证路径不足时必须使用 `verdict:"fail"`。
|
|
38
|
+
|
|
23
39
|
## 输出风格
|
|
24
40
|
|
|
25
41
|
- 所有用户可见输出必须使用简体中文。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: superspec-apply
|
|
3
|
-
description: "
|
|
3
|
+
description: "按 tasks.md 逐任务实现代码,记录 RED/GREEN 证据,推进 task-complete。"
|
|
4
4
|
metadata:
|
|
5
5
|
author: SuperSpec
|
|
6
6
|
source: SuperSpec
|
|
@@ -8,136 +8,54 @@ metadata:
|
|
|
8
8
|
|
|
9
9
|
# SuperSpec Apply
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
你是执行阶段。职责:按 tasks.md 的任务逐个实现——先 RED(测试会失败),再 GREEN(实现到测试通过),然后 task-complete 勾选。
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- 用户可见文案不得使用“裁决”描述用户动作;统一说“确认”“范围取舍”“处理方式选择”或“用户确认记录”。
|
|
15
|
-
- 不把内部证据种类、reason code、JSON 字段大全直接转述给用户;需要诊断时才引用原文。
|
|
16
|
-
- 普通 workflow 命令使用 `--format agent`;`--format json` 只用于诊断,不作为默认上下文。
|
|
13
|
+
## 驱动方式
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
所有状态由 transition engine 管理。循环:
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
1. `superspec transition next --change "<change>"` 获取下一步
|
|
18
|
+
2. 执行返回的命令
|
|
19
|
+
3. 登记结果
|
|
20
|
+
4. 回到 1
|
|
22
21
|
|
|
23
|
-
##
|
|
22
|
+
## 本阶段做什么
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
每个任务的循环:
|
|
26
25
|
|
|
27
|
-
|
|
26
|
+
1. **task-start**:`superspec transition task-start --change "<change>" --task TASK-XXX`
|
|
27
|
+
2. **拿到 attempt_id**:从 task-start 的返回结果或 `superspec status` 中读取当前活跃 attempt 的 `attempt_id`
|
|
28
|
+
3. **RED**:写测试,跑测试确认失败,`superspec record test-run --change "<change>" --input <FILE>`
|
|
29
|
+
4. **实现**:写代码让测试通过
|
|
30
|
+
5. **GREEN**:跑测试确认通过,`superspec record test-run --change "<change>" --input <FILE>`
|
|
31
|
+
6. **task-complete**:`superspec transition task-complete --change "<change>" --task TASK-XXX`
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
superspec check workflow-packet --change "<change>" --gate apply_ready --format agent
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
遇到任何返回状态为 `block` 就停止;未 allowed 前不要编辑实现。
|
|
34
|
-
|
|
35
|
-
## OpenSpec 边界
|
|
36
|
-
|
|
37
|
-
- 直接使用 OpenSpec CLI surface,不读取 repo-local `openspec-*` skill 文本。
|
|
38
|
-
- task list、`contextFiles`、progress、dynamic instruction 来自:
|
|
39
|
-
|
|
40
|
-
```text
|
|
41
|
-
openspec instructions apply --change "<change>" --json
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
不要发明 task list,也不要跳过 OpenSpec 返回的 context files。
|
|
45
|
-
|
|
46
|
-
## Task Guard 边界
|
|
47
|
-
|
|
48
|
-
实现编辑前读取 `task_edit` 检查结果;勾选 task 前读取 `task_complete` 检查结果:
|
|
49
|
-
|
|
50
|
-
```text
|
|
51
|
-
superspec check workflow-packet --change "<change>" --gate task_edit --task-id "<task-id>" --format agent
|
|
52
|
-
superspec check workflow-packet --change "<change>" --gate task_complete --task-id "<task-id>" --format agent
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
`task_edit` 未 allowed 不得编辑实现;`task_complete` 未 allowed 不得把 checkbox 改成 done。
|
|
56
|
-
|
|
57
|
-
## Reopen 边界
|
|
33
|
+
no-TDD 任务(tdd_required:false + no_tdd_reason)跳过 RED/GREEN。
|
|
58
34
|
|
|
59
|
-
|
|
35
|
+
## test-run 输入格式
|
|
60
36
|
|
|
61
|
-
```
|
|
62
|
-
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"test_id": "TEST-XXX",
|
|
40
|
+
"attempt_id": "ATT-TASK-XXX-...",
|
|
41
|
+
"task_structure_digest": "<从 tasks.md 派生的结构指纹>",
|
|
42
|
+
"command": "npm test",
|
|
43
|
+
"cwd": "<工作目录>",
|
|
44
|
+
"exit_code": 1,
|
|
45
|
+
"semantic_status": "expected_failure",
|
|
46
|
+
"target_fingerprint": "<被测文件的 sha256>"
|
|
47
|
+
}
|
|
63
48
|
```
|
|
64
49
|
|
|
65
|
-
|
|
50
|
+
- `attempt_id`:从 task-start 结果获取,确保 RED/GREEN 绑定到正确的执行尝试
|
|
51
|
+
- `semantic_status`:`expected_failure`(RED)/ `expected_success`(GREEN)/ `characterization_pass`
|
|
52
|
+
- `task_structure_digest`:tasks.md 复选框归一化后的 sha256(引擎计算,你不需要手动算)
|
|
66
53
|
|
|
67
|
-
##
|
|
68
|
-
|
|
69
|
-
- apply isolation 和 execution mode 必须等待明确选择。
|
|
70
|
-
- 分支状态、dirty worktree、scope expands 或需要改变 task scope 时必须停止并确认。
|
|
71
|
-
- 不要使用默认值、历史偏好或沉默作为确认。
|
|
72
|
-
|
|
73
|
-
## 专用代理边界
|
|
74
|
-
|
|
75
|
-
主线程只负责用检查命令生成各角色提示、分派专用代理、审核代理报告、登记证据、推进任务勾选。专用代理来自 `.codex/agents/*.toml` 与 `.codex/prompts/*.md`,不能由主线程自审替代。代理报告只是候选材料,通过检查的才是正式证据。当前 CLI 没有登记证据的命令;代理报告返回后,由主线程按检查命令的 output contract 字段手动写入 `.superspec/evidence/` 对应目录。
|
|
76
|
-
|
|
77
|
-
RED/characterization/GREEN 测试必须由 `.codex/agents/test-runner.toml` + `.codex/prompts/test-runner.md` 执行;主线程不得代跑或伪造 formal `test_run` evidence。新增或修改测试文件时用 `test-engineer` 专用代理。
|
|
78
|
-
|
|
79
|
-
```text
|
|
80
|
-
superspec check apply-test-packet --change "<change>" --task-id "<task-id>" --test-id "<test-id>" --phase red --format prompt
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
用 test-runner 执行检查命令指定的测试命令;主线程审核报告/原始日志并登记为证据后,才写正式 `test_run` 证据。
|
|
84
|
-
|
|
85
|
-
测试证据语义(框架无关,审核 worker report 时用):只有 `target test identity executed` 才算有效运行;`command exit code alone is not proof`,退出码 0 不证明目标测试真正跑过/通过;命令在到达测试 runner 之前失败属于 `blocked before the target test runner`,不算 RED/GREEN;`do not classify environment/build failures as RED or GREEN`。
|
|
86
|
-
|
|
87
|
-
`apply_execution_surface`:缺省有 `write_scope` 为 `implementation`,无 `write_scope` 为 `no_code`;显式允许 `implementation`、`runtime_config`、`docs_generated`、`no_code`。`implementation` / `runtime_config` 必须走 executor-worker chain;`tdd_required:false` 也只能用 closed `apply_worker_chain` 的 `completion_proof_kind:"alternative_verification"` 完成。`docs_generated` / `no_code` 可用 direct alternative/manual verification。
|
|
88
|
-
|
|
89
|
-
编码实现必须由 `.codex/agents/executor.toml` + `.codex/prompts/executor.md` 执行,并通过 active -> closed `apply_worker_chain` 收敛;主线程不得直接改实现代码来完成 task。
|
|
90
|
-
|
|
91
|
-
```text
|
|
92
|
-
superspec check apply-executor-packet --change "<change>" --task-id "<task-id>" --apply-worker-chain-ref "<active-chain-ref>" --format prompt
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
使用 `.codex/agents/executor.toml` / `.codex/prompts/executor.md`。先把检查命令给出的激活模板登记为工作链证据;缺激活标记不能启动 executor。TDD 与 no-TDD 的激活标记不同(具体字段以检查命令输出为准)。executor 只能改检查命令声明的实现写范围(implementation/runtime_config write scope),不能写正式 evidence,不能改 task checkbox,不能做 review/verification。
|
|
96
|
-
|
|
97
|
-
executor 返回后把报告登记为证据,再生成任务级审查:
|
|
98
|
-
|
|
99
|
-
```text
|
|
100
|
-
superspec check apply-code-review-packet --change "<change>" --task-id "<task-id>" --executor-report-ref "<ref>" --format prompt
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
用 `.codex/agents/code-reviewer.toml` 检查 scope/protected paths、executor report 与 diff、test/invariant mapping 和 suggested GREEN checks。
|
|
104
|
-
|
|
105
|
-
code-review 通过后,GREEN 只走同一 executor-worker chain:
|
|
106
|
-
|
|
107
|
-
```text
|
|
108
|
-
superspec check apply-test-packet --change "<change>" --task-id "<task-id>" --test-id "<test-id>" --phase green --task-code-review-report-ref "<ref>" --format prompt
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
GREEN report 审核并登记为 evidence 后,生成 GREEN verification:
|
|
112
|
-
|
|
113
|
-
```text
|
|
114
|
-
superspec check apply-verify-packet --change "<change>" --task-id "<task-id>" --executor-report-ref "<ref>" --task-code-review-report-ref "<ref>" --green-test-run-evidence-ref "<ref>" --red-test-run-evidence-ref "<ref>" --format prompt
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
no-TDD implementation/runtime_config 先登记 live/pass `alternative_verification` 或 `manual_verification`,再生成 alternative verification:
|
|
118
|
-
|
|
119
|
-
```text
|
|
120
|
-
superspec check apply-verify-packet --change "<change>" --task-id "<task-id>" --executor-report-ref "<ref>" --task-code-review-report-ref "<ref>" --alternative-verification-evidence-ref "<ref>" --format prompt
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
用 `.codex/agents/verifier.toml` 检查完成方式分支:GREEN 绑定 RED/characterization、GREEN 和当前工作区;alternative 绑定 no-TDD 激活标记、实际替代/人工验证引用、surface/no-TDD 元数据和当前工作区。审核 verifier 报告后写关闭的工作链证据,再跑 `task_complete`。异常终止只取消旧工作链,不授权完成。
|
|
124
|
-
|
|
125
|
-
## 完成检查
|
|
126
|
-
|
|
127
|
-
每个 task 的证据链(RED/characterization → executor → code-review → GREEN 或替代验证 → verifier)齐全后,运行任务完成检查:
|
|
128
|
-
|
|
129
|
-
```text
|
|
130
|
-
superspec check workflow-packet --change "<change>" --gate task_complete --task-id "<task-id>" --format agent
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
只有检查结果显示通过后,才把该 task 的 checkbox 改为 done。所有 task 完成后进入 `superspec-review`。
|
|
134
|
-
|
|
135
|
-
## 异常恢复
|
|
136
|
-
|
|
137
|
-
状态文件损坏时重建:
|
|
138
|
-
|
|
139
|
-
```text
|
|
140
|
-
superspec check recompute --change "<change>" --rebuild-corrupt
|
|
141
|
-
```
|
|
54
|
+
## Guardrails
|
|
142
55
|
|
|
143
|
-
|
|
56
|
+
- 只改 tasks.md 里本任务范围相关的文件
|
|
57
|
+
- 不跳过 RED 直接写 GREEN
|
|
58
|
+
- 退出码 0 ≠ 测试通过——semantic_status 才是证据
|
|
59
|
+
- 环境错误 / 构建失败不算 RED 或 GREEN
|
|
60
|
+
- 不手改 tasks.md 复选框——task-complete 会自动补丁
|
|
61
|
+
- 不跳过 transition
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: superspec-archive
|
|
3
|
-
description: "
|
|
3
|
+
description: "归档保全:验证文档完整性,提交 archive。"
|
|
4
4
|
metadata:
|
|
5
5
|
author: SuperSpec
|
|
6
6
|
source: SuperSpec
|
|
@@ -8,58 +8,26 @@ metadata:
|
|
|
8
8
|
|
|
9
9
|
# SuperSpec Archive
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
你是归档阶段。职责:确认审查通过后,执行归档——保全清单记录当前文档指纹。
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- 用户可见文案不得使用“裁决”描述用户动作;统一说“确认”“范围取舍”“处理方式选择”或“用户确认记录”。
|
|
15
|
-
- 不把内部证据种类、reason code、JSON 字段大全直接转述给用户;需要诊断时才引用原文。
|
|
16
|
-
- 普通 workflow 命令使用 `--format agent`;`--format json` 只用于诊断,不作为默认上下文。
|
|
13
|
+
## 驱动方式
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
所有状态由 transition engine 管理。循环:
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
1. `superspec transition next --change "<change>"` 获取下一步
|
|
18
|
+
2. 执行返回的命令
|
|
19
|
+
3. 回到 1
|
|
22
20
|
|
|
23
|
-
##
|
|
21
|
+
## 本阶段做什么
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
1. **确认状态为 accepted**:next 会检查
|
|
24
|
+
2. **archive**:`superspec transition archive --change "<change>"`
|
|
25
|
+
- 引擎记录当前文档指纹(proposal/tasks/design/discovery/bi/test-contract/specs)作为保全清单
|
|
26
|
+
- 状态推进到 archive(终态)
|
|
26
27
|
|
|
27
|
-
##
|
|
28
|
+
## Guardrails
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
遇到 `block` 就停止,不归档。
|
|
34
|
-
|
|
35
|
-
## OpenSpec 边界
|
|
36
|
-
|
|
37
|
-
- 直接使用 OpenSpec CLI surface,不读取 repo-local `openspec-*` skill 文本。
|
|
38
|
-
- 归档动作使用 native OpenSpec CLI;SuperSpec 不重新实现移动、spec sync 或 validation。
|
|
39
|
-
- 当前 v1 固定使用 `openspec archive -y "<change>"`,不暴露 `--no-validate` 或 skip-specs 分支。
|
|
40
|
-
|
|
41
|
-
## 用户确认边界
|
|
42
|
-
|
|
43
|
-
`archive_ready` 最终确认必须等待明确选择。若 change 不应同步 specs,先回 propose/change update 调整方案,不在 archive 阶段跳过。
|
|
44
|
-
|
|
45
|
-
## 执行步骤
|
|
46
|
-
|
|
47
|
-
确认后运行会写 preservation manifest 的 readiness check:
|
|
48
|
-
|
|
49
|
-
```text
|
|
50
|
-
superspec check check-archive-ready --change "<change>" --format agent
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
然后运行 OpenSpec archive:
|
|
54
|
-
|
|
55
|
-
```text
|
|
56
|
-
openspec archive -y "<change>"
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
最后验证 archived sidecar preservation:
|
|
60
|
-
|
|
61
|
-
```text
|
|
62
|
-
superspec check check-archived --change "<change>" --format agent
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
`.superspec/artifacts/business-invariants.md`、`.superspec/artifacts/test-contract.md`、review/verification evidence、RED/GREEN evidence 和 archive evidence 必须能从 preservation manifest 追溯。
|
|
30
|
+
- 不改文档内容(归档前应已定稿)
|
|
31
|
+
- 不跳过 accept 直接 archive
|
|
32
|
+
- archive 后不可逆——确认无误再提交
|
|
33
|
+
- 不跳过 transition
|