@tea-agent/loop-agent 0.35.0-beta.2 → 0.35.1-beta.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/AGENTS.md +108 -108
- package/CHANGELOG.md +55 -4
- package/README.md +165 -165
- package/bin/agent-worker.js +0 -0
- package/bin/loop-agent.js +21 -21
- package/dist/application/task-lifecycle/advance.js +1 -0
- package/dist/commands/cursor-prompt.js +6 -6
- package/dist/commands/init-upgrade.js +351 -19
- package/dist/commands/init.js +14 -67
- package/dist/commands/loop-benchmark.js +11 -11
- package/dist/commands/pi-reuse-benchmark.js +16 -16
- package/dist/commands/run-dag-progress.js +14 -0
- package/dist/commands/task-advance.js +33 -3
- package/dist/shared/operator/capabilities.js +38 -1
- package/dist/sidecars/cursor-prompt/executor.js +1 -1
- package/dist/worker/console/chat/pi-runtime.js +41 -25
- package/dist/worker/console/chat/routes.js +27 -4
- package/dist/worker/console/operation-runner.js +24 -0
- package/dist/worker/console/operation-wait.js +241 -0
- package/dist/worker/console/operator-actions.js +58 -0
- package/dist/worker/console/static/assets/{index-hJqCPs_g.css → index-Dups4sSM.css} +1 -1
- package/dist/worker/console/static/assets/index-SjjjZnV3.js +56 -0
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/operator-chat/slash-palette-nav.js +141 -0
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +13 -2
- package/dist/worker/console/static-src/operator-chat/useComposer.js +30 -7
- package/dist/worker/observe/static/copy.js +67 -67
- package/dist/worker/observe/static/dag-layout.d.ts +36 -36
- package/dist/worker/observe/static/dom.js +220 -220
- package/dist/worker/observe/static/relations.js +133 -133
- package/dist/worker/observe/static/run-processing.js +148 -148
- package/dist/worker/observe/static/views/batch.js +227 -227
- package/dist/worker/observe/static/views/failures.js +143 -143
- package/dist/worker/observe/static/views/feature.js +492 -492
- package/dist/worker/observe/static/views/run.js +453 -453
- package/dist/worker/observe/static/views/shell.js +7 -7
- package/dist/worker/observe/static/views/timeline.js +163 -163
- package/dist/workflows/dag/canvas-observer.js +275 -275
- package/dist/workflows/dag/frontend-prewrite-gate.js +9 -1
- package/dist/workflows/dag/init-hybrid.js +2 -0
- package/docs/architecture/evolution.md +73 -73
- package/docs/architecture/system-overview.md +100 -100
- package/docs/architecture/worker-and-feature.md +122 -122
- package/docs/skills/README.md +7 -7
- package/docs/templates/adr.md +60 -60
- package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -94
- package/docs/templates/agent-dag-decision-envelope.schema.json +213 -213
- package/docs/templates/agent-dag-decision-gate.prompt.md +246 -246
- package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
- package/docs/templates/agent-dag-report.schema.json +473 -473
- package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
- package/docs/templates/backend-test-result.schema.json +99 -99
- package/docs/templates/evaluation/agents-map-slim-v1.md +87 -87
- package/docs/templates/evaluation/agents-map-verbose-v0.md +153 -153
- package/docs/templates/feature-spec.md +53 -53
- package/docs/templates/frontend-design-contract.md +42 -42
- package/docs/templates/frontend-eval/fixtures/failures/01-type-build-error.md +17 -17
- package/docs/templates/frontend-eval/fixtures/failures/02-unit-component-test-fail.md +16 -16
- package/docs/templates/frontend-eval/fixtures/failures/03-fixture-schema-drift.md +16 -16
- package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md +16 -16
- package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md +16 -16
- package/docs/templates/frontend-eval/fixtures/failures/06-unapproved-dependency-add.md +16 -16
- package/docs/templates/frontend-eval/fixtures/failures/07-mock-production-on.md +21 -21
- package/docs/templates/frontend-eval/fixtures/functional/01-simple-component-style.md +29 -29
- package/docs/templates/frontend-eval/fixtures/functional/02-form-validation.md +28 -28
- package/docs/templates/frontend-eval/fixtures/functional/03-list-detail-page.md +28 -28
- package/docs/templates/frontend-eval/fixtures/functional/04-api-mock.md +29 -29
- package/docs/templates/frontend-eval/fixtures/functional/05-permission-auth-gated-ui.md +27 -27
- package/docs/templates/frontend-eval/fixtures/functional/06-ssr-server-client-boundary.md +28 -28
- package/docs/templates/frontend-eval/fixtures/functional/07-shared-public-component-api.md +28 -28
- package/docs/templates/frontend-eval/fixtures/functional/08-pure-local-no-remote.md +27 -27
- package/docs/templates/frontend-eval/metrics.md +138 -138
- package/docs/templates/frontend-eval/smoke-targets.md +53 -53
- package/docs/templates/frontend-task-constraints.md +35 -35
- package/docs/templates/frontend-task-requirement.md +70 -70
- package/docs/templates/init-evolution-review.md +35 -35
- package/docs/templates/init-managed-agents.md +156 -154
- package/docs/templates/interactive-ui-round2-experiment.md +66 -66
- package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -118
- package/docs/templates/knowledge-sync-dag.json +178 -178
- package/docs/templates/knowledge-sync-draft.schema.json +71 -71
- package/docs/templates/product-line/closeout.yaml +9 -9
- package/docs/templates/product-line/design.md +13 -13
- package/docs/templates/product-line/links.md +10 -10
- package/docs/templates/product-line/requirement.md +17 -17
- package/docs/templates/product-line/test-plan.md +7 -7
- package/docs/templates/project-start-checklist.md +9 -9
- package/docs/templates/qa-report.md +48 -48
- package/docs/templates/sprint-contract.md +29 -29
- package/docs/templates/worker-dogfood-evidence.md +80 -80
- package/docs/templates/worker-dogfood-setup.md +68 -68
- package/harness.json +5 -2
- package/package.json +1 -1
- package/scripts/kb-bootstrap-init-skeleton.sh +0 -0
- package/scripts/kb-graph-incremental-prepare.mjs +0 -0
- package/scripts/kb-graph-materialize.mjs +105 -105
- package/scripts/kb-graph-promote.mjs +164 -164
- package/scripts/kb-query.mjs +554 -554
- package/skills/agent-worker/SKILL.md +48 -48
- package/skills/agent-worker/references/agent-worker-operator.md +159 -159
- package/skills/ai-engineering-context/SKILL.md +48 -48
- package/skills/analyze-product-dependencies/scripts/test-validators.mjs +0 -0
- package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +0 -0
- package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +0 -0
- package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +0 -0
- package/skills/analyze-product-requirements/scripts/compute-source-identity.mjs +0 -0
- package/skills/analyze-product-requirements/scripts/test-validators.mjs +0 -0
- package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +0 -0
- package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +0 -0
- package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +0 -0
- package/skills/browser-tools/browser-content.js +103 -103
- package/skills/browser-tools/browser-cookies.js +35 -35
- package/skills/browser-tools/browser-eval.js +53 -53
- package/skills/browser-tools/browser-hn-scraper.js +108 -108
- package/skills/browser-tools/browser-nav.js +44 -44
- package/skills/browser-tools/browser-pick.js +162 -162
- package/skills/browser-tools/browser-screenshot.js +34 -34
- package/skills/browser-tools/browser-start.js +86 -86
- package/skills/browser-tools/package-lock.json +2556 -2556
- package/skills/browser-tools/package.json +19 -19
- package/skills/code-review-core/SKILL.md +20 -20
- package/skills/codebase-scout/SKILL.md +19 -19
- package/skills/grill-me/SKILL.md +10 -10
- package/skills/local-jacoco-coverage/scripts/run-coverage-analysis.sh +0 -0
- package/skills/local-jacoco-coverage/scripts/start-jacoco-agent.sh +0 -0
- package/skills/loop-agent/SKILL.md +1 -0
- package/skills/loop-agent/references/command-reference.md +641 -639
- package/skills/loop-agent/references/docs-converge.md +126 -126
- package/skills/loop-agent/references/learned/README.md +21 -21
- package/skills/loop-agent/references/pi-prompt.md +23 -23
- package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -84
- package/skills/playwright-cli/references/element-attributes.md +23 -23
- package/skills/playwright-cli/references/playwright-tests.md +39 -39
- package/skills/playwright-cli/references/request-mocking.md +87 -87
- package/skills/playwright-cli/references/running-code.md +241 -241
- package/skills/playwright-cli/references/session-management.md +225 -225
- package/skills/playwright-cli/references/storage-state.md +275 -275
- package/skills/playwright-cli/references/test-generation.md +433 -433
- package/skills/requesting-code-review/SKILL.md +101 -101
- package/skills/requesting-code-review/code-reviewer.md +168 -168
- package/skills/systematic-debugging/CREATION-LOG.md +119 -119
- package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
- package/skills/systematic-debugging/condition-based-waiting.md +115 -115
- package/skills/systematic-debugging/defense-in-depth.md +122 -122
- package/skills/systematic-debugging/find-polluter.sh +63 -63
- package/skills/systematic-debugging/root-cause-tracing.md +169 -169
- package/skills/systematic-debugging/test-academic.md +14 -14
- package/skills/systematic-debugging/test-pressure-1.md +58 -58
- package/skills/systematic-debugging/test-pressure-2.md +68 -68
- package/skills/systematic-debugging/test-pressure-3.md +69 -69
- package/skills/using-git-worktrees/SKILL.md +215 -215
- package/skills/verification-before-completion/SKILL.md +154 -154
- package/skills/webapp-testing/SKILL.md +19 -19
- package/dist/worker/console/static/assets/index-fsjzREob.js +0 -56
package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# Failure fixture: missing loading/empty/error state
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-fail-missing-ui-states`
|
|
4
|
-
- **triggerSignal**: plan/design 或 review 发现 applicable 异步列表缺少 loading/empty/error
|
|
5
|
-
- **expectedGateBehavior**: first/final design 应 request-revision;若漏到实现则 review request-revision
|
|
6
|
-
- **repairable (M3 预标注)**: `repairable`(补状态 UI + 测试)
|
|
7
|
-
- **Browser**: not-run
|
|
8
|
-
|
|
9
|
-
## 场景
|
|
10
|
-
|
|
11
|
-
仅实现 success 列表渲染。
|
|
12
|
-
|
|
13
|
-
## 期望
|
|
14
|
-
|
|
15
|
-
- design checklist 含 UI States
|
|
16
|
-
- M1 合同将强制 applicable states 映射
|
|
1
|
+
# Failure fixture: missing loading/empty/error state
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-fail-missing-ui-states`
|
|
4
|
+
- **triggerSignal**: plan/design 或 review 发现 applicable 异步列表缺少 loading/empty/error
|
|
5
|
+
- **expectedGateBehavior**: first/final design 应 request-revision;若漏到实现则 review request-revision
|
|
6
|
+
- **repairable (M3 预标注)**: `repairable`(补状态 UI + 测试)
|
|
7
|
+
- **Browser**: not-run
|
|
8
|
+
|
|
9
|
+
## 场景
|
|
10
|
+
|
|
11
|
+
仅实现 success 列表渲染。
|
|
12
|
+
|
|
13
|
+
## 期望
|
|
14
|
+
|
|
15
|
+
- design checklist 含 UI States
|
|
16
|
+
- M1 合同将强制 applicable states 映射
|
package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# Failure fixture: forbidden write / writeSet expansion attempt
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-fail-forbidden-write`
|
|
4
|
-
- **triggerSignal**: writer 试图修改 writeSet 外路径或 forbiddenPaths(如 `src/**` 任务写入 `package.json`)
|
|
5
|
-
- **expectedGateBehavior**: write-guard 拒绝;run 失败或 NeedsAction;不得当成功 closeout
|
|
6
|
-
- **repairable (M3 预标注)**: `non-repairable`(路径/authority;不得靠 repair 扩大 writeSet)
|
|
7
|
-
- **Browser**: not-run
|
|
8
|
-
|
|
9
|
-
## 场景
|
|
10
|
-
|
|
11
|
-
实现中「顺手」改根配置或越界文档。
|
|
12
|
-
|
|
13
|
-
## 期望
|
|
14
|
-
|
|
15
|
-
- exclusive writeSet 强制
|
|
16
|
-
- M0 eval 计入 `forbidden_write_count`
|
|
1
|
+
# Failure fixture: forbidden write / writeSet expansion attempt
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-fail-forbidden-write`
|
|
4
|
+
- **triggerSignal**: writer 试图修改 writeSet 外路径或 forbiddenPaths(如 `src/**` 任务写入 `package.json`)
|
|
5
|
+
- **expectedGateBehavior**: write-guard 拒绝;run 失败或 NeedsAction;不得当成功 closeout
|
|
6
|
+
- **repairable (M3 预标注)**: `non-repairable`(路径/authority;不得靠 repair 扩大 writeSet)
|
|
7
|
+
- **Browser**: not-run
|
|
8
|
+
|
|
9
|
+
## 场景
|
|
10
|
+
|
|
11
|
+
实现中「顺手」改根配置或越界文档。
|
|
12
|
+
|
|
13
|
+
## 期望
|
|
14
|
+
|
|
15
|
+
- exclusive writeSet 强制
|
|
16
|
+
- M0 eval 计入 `forbidden_write_count`
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# Failure fixture: unapproved dependency add
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-fail-unapproved-dependency`
|
|
4
|
-
- **triggerSignal**: diff 出现未授权 `package.json` / lockfile 依赖新增
|
|
5
|
-
- **expectedGateBehavior**: design 应预先拒绝;若发生则 review Important + request-revision;任务 forbidden 含 package 时 write-guard 阻断
|
|
6
|
-
- **repairable (M3 预标注)**: `non-repairable`(依赖策略/人工批准)
|
|
7
|
-
- **Browser**: not-run
|
|
8
|
-
|
|
9
|
-
## 场景
|
|
10
|
-
|
|
11
|
-
为方便引入大型 UI 库未在计划 Dependency Policy 批准。
|
|
12
|
-
|
|
13
|
-
## 期望
|
|
14
|
-
|
|
15
|
-
- 计入 `unapproved_dependency_count`
|
|
16
|
-
- 不得以 build 通过单独放行
|
|
1
|
+
# Failure fixture: unapproved dependency add
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-fail-unapproved-dependency`
|
|
4
|
+
- **triggerSignal**: diff 出现未授权 `package.json` / lockfile 依赖新增
|
|
5
|
+
- **expectedGateBehavior**: design 应预先拒绝;若发生则 review Important + request-revision;任务 forbidden 含 package 时 write-guard 阻断
|
|
6
|
+
- **repairable (M3 预标注)**: `non-repairable`(依赖策略/人工批准)
|
|
7
|
+
- **Browser**: not-run
|
|
8
|
+
|
|
9
|
+
## 场景
|
|
10
|
+
|
|
11
|
+
为方便引入大型 UI 库未在计划 Dependency Policy 批准。
|
|
12
|
+
|
|
13
|
+
## 期望
|
|
14
|
+
|
|
15
|
+
- 计入 `unapproved_dependency_count`
|
|
16
|
+
- 不得以 build 通过单独放行
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
# Failure fixture: Mock production-on / real-request commented out
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-fail-mock-production-on`
|
|
4
|
-
- **triggerSignal**: 生产入口默认启用 Mock、注释真实请求、或 production import test mocks
|
|
5
|
-
- **expectedGateBehavior**: design/review 至少 Important → request-revision;static production/default-real-path 检查应失败或 review 阻断
|
|
6
|
-
- **repairable (M3 预标注)**: `repairable` 若仅激活边界错误;`non-repairable` 若故意绕过合同
|
|
7
|
-
- **Browser**: not-run;Mock UI 观感不得当真实联调
|
|
8
|
-
|
|
9
|
-
## 场景
|
|
10
|
-
|
|
11
|
-
```ts
|
|
12
|
-
// fetch('/api/users')
|
|
13
|
-
return mockUsers;
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
或 `mock.enable()` 无 dev/test 守卫。
|
|
17
|
-
|
|
18
|
-
## 期望
|
|
19
|
-
|
|
20
|
-
- 计入潜在 `mock_real_integration_false_claim` 若 closeout 美化
|
|
21
|
-
- 与 mock workflow 生产默认真实路径规则一致
|
|
1
|
+
# Failure fixture: Mock production-on / real-request commented out
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-fail-mock-production-on`
|
|
4
|
+
- **triggerSignal**: 生产入口默认启用 Mock、注释真实请求、或 production import test mocks
|
|
5
|
+
- **expectedGateBehavior**: design/review 至少 Important → request-revision;static production/default-real-path 检查应失败或 review 阻断
|
|
6
|
+
- **repairable (M3 预标注)**: `repairable` 若仅激活边界错误;`non-repairable` 若故意绕过合同
|
|
7
|
+
- **Browser**: not-run;Mock UI 观感不得当真实联调
|
|
8
|
+
|
|
9
|
+
## 场景
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
// fetch('/api/users')
|
|
13
|
+
return mockUsers;
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
或 `mock.enable()` 无 dev/test 守卫。
|
|
17
|
+
|
|
18
|
+
## 期望
|
|
19
|
+
|
|
20
|
+
- 计入潜在 `mock_real_integration_false_claim` 若 closeout 美化
|
|
21
|
+
- 与 mock workflow 生产默认真实路径规则一致
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
# Functional fixture: simple component / style
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-func-simple-component-style`
|
|
4
|
-
- **taskTitle**: 调整 Button 次要样式以匹配设计 token
|
|
5
|
-
- **expectedRoute**: `frontend-implementation`
|
|
6
|
-
- **expectedRiskLevel**: `small`(M4 前仅标注)
|
|
7
|
-
- **expectedGateIntensity**: standard dual design + mock assess;无 API 时倾向 `not-needed`
|
|
8
|
-
- **expectedMockStrategy**: `not-needed`(无远程数据)
|
|
9
|
-
- **Browser**: **out-of-scope / not-run**
|
|
10
|
-
|
|
11
|
-
## 需求要点
|
|
12
|
-
|
|
13
|
-
- 修改既有展示型组件 className / CSS module / token 引用。
|
|
14
|
-
- 不改变公共 props API。
|
|
15
|
-
- 覆盖 hover/disabled 若设计要求;无 loading/empty 则 N/A 并说明。
|
|
16
|
-
|
|
17
|
-
## allowedPaths 建议
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
src/components/Button/**
|
|
21
|
-
src/styles/**
|
|
22
|
-
test/components/Button/**
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## expected verification 形态
|
|
26
|
-
|
|
27
|
-
- Static: `typecheck` + `build`(fallback 可接受)
|
|
28
|
-
- Behavior: 组件单测或 style snapshot 类 vitest(无浏览器)
|
|
29
|
-
- 无 `frontend-mock-verify-shell`
|
|
1
|
+
# Functional fixture: simple component / style
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-func-simple-component-style`
|
|
4
|
+
- **taskTitle**: 调整 Button 次要样式以匹配设计 token
|
|
5
|
+
- **expectedRoute**: `frontend-implementation`
|
|
6
|
+
- **expectedRiskLevel**: `small`(M4 前仅标注)
|
|
7
|
+
- **expectedGateIntensity**: standard dual design + mock assess;无 API 时倾向 `not-needed`
|
|
8
|
+
- **expectedMockStrategy**: `not-needed`(无远程数据)
|
|
9
|
+
- **Browser**: **out-of-scope / not-run**
|
|
10
|
+
|
|
11
|
+
## 需求要点
|
|
12
|
+
|
|
13
|
+
- 修改既有展示型组件 className / CSS module / token 引用。
|
|
14
|
+
- 不改变公共 props API。
|
|
15
|
+
- 覆盖 hover/disabled 若设计要求;无 loading/empty 则 N/A 并说明。
|
|
16
|
+
|
|
17
|
+
## allowedPaths 建议
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
src/components/Button/**
|
|
21
|
+
src/styles/**
|
|
22
|
+
test/components/Button/**
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## expected verification 形态
|
|
26
|
+
|
|
27
|
+
- Static: `typecheck` + `build`(fallback 可接受)
|
|
28
|
+
- Behavior: 组件单测或 style snapshot 类 vitest(无浏览器)
|
|
29
|
+
- 无 `frontend-mock-verify-shell`
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
# Functional fixture: form validation
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-func-form-validation`
|
|
4
|
-
- **taskTitle**: 实现登录表单客户端校验与错误提示
|
|
5
|
-
- **expectedRoute**: `frontend-implementation`
|
|
6
|
-
- **expectedRiskLevel**: `standard`
|
|
7
|
-
- **expectedGateIntensity**: dual design;UI states 含 error/empty 输入
|
|
8
|
-
- **expectedMockStrategy**: `not-needed` 若仅客户端校验;若提交到 API 则为 native/request-adapter
|
|
9
|
-
- **Browser**: **out-of-scope / not-run**
|
|
10
|
-
|
|
11
|
-
## 需求要点
|
|
12
|
-
|
|
13
|
-
- 必填、格式、确认字段一致性。
|
|
14
|
-
- 提交中 loading、校验失败 error message、成功 success 反馈。
|
|
15
|
-
- 不得默认 Mock 掉真实提交路径。
|
|
16
|
-
|
|
17
|
-
## allowedPaths 建议
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
src/components/LoginForm/**
|
|
21
|
-
src/pages/login/**
|
|
22
|
-
test/components/LoginForm/**
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## expected verification 形态
|
|
26
|
-
|
|
27
|
-
- Static: typecheck/build
|
|
28
|
-
- Behavior: 组件/单元测试覆盖 invalid/valid 路径
|
|
1
|
+
# Functional fixture: form validation
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-func-form-validation`
|
|
4
|
+
- **taskTitle**: 实现登录表单客户端校验与错误提示
|
|
5
|
+
- **expectedRoute**: `frontend-implementation`
|
|
6
|
+
- **expectedRiskLevel**: `standard`
|
|
7
|
+
- **expectedGateIntensity**: dual design;UI states 含 error/empty 输入
|
|
8
|
+
- **expectedMockStrategy**: `not-needed` 若仅客户端校验;若提交到 API 则为 native/request-adapter
|
|
9
|
+
- **Browser**: **out-of-scope / not-run**
|
|
10
|
+
|
|
11
|
+
## 需求要点
|
|
12
|
+
|
|
13
|
+
- 必填、格式、确认字段一致性。
|
|
14
|
+
- 提交中 loading、校验失败 error message、成功 success 反馈。
|
|
15
|
+
- 不得默认 Mock 掉真实提交路径。
|
|
16
|
+
|
|
17
|
+
## allowedPaths 建议
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
src/components/LoginForm/**
|
|
21
|
+
src/pages/login/**
|
|
22
|
+
test/components/LoginForm/**
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## expected verification 形态
|
|
26
|
+
|
|
27
|
+
- Static: typecheck/build
|
|
28
|
+
- Behavior: 组件/单元测试覆盖 invalid/valid 路径
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
# Functional fixture: list/detail page
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-func-list-detail-page`
|
|
4
|
-
- **taskTitle**: 实现订单列表与详情路由页面
|
|
5
|
-
- **expectedRoute**: `frontend-implementation`
|
|
6
|
-
- **expectedRiskLevel**: `standard`
|
|
7
|
-
- **expectedGateIntensity**: dual design + 状态覆盖(loading/empty/error/success)
|
|
8
|
-
- **expectedMockStrategy**: 有 API 时 `native` 或 `request-adapter`;policy=auto
|
|
9
|
-
- **Browser**: **out-of-scope / not-run**
|
|
10
|
-
|
|
11
|
-
## 需求要点
|
|
12
|
-
|
|
13
|
-
- 列表分页或筛选;详情根据 id 加载。
|
|
14
|
-
- loading / empty / error / success 四态可测。
|
|
15
|
-
- Real Integration Gap 在 closeout 保留(若仅 Mock)。
|
|
16
|
-
|
|
17
|
-
## allowedPaths 建议
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
src/pages/orders/**
|
|
21
|
-
src/components/orders/**
|
|
22
|
-
src/api/orders/**
|
|
23
|
-
test/pages/orders/**
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## expected verification 形态
|
|
27
|
-
|
|
28
|
-
- Static + behavior(路由/组件测试,非 e2e 浏览器)
|
|
1
|
+
# Functional fixture: list/detail page
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-func-list-detail-page`
|
|
4
|
+
- **taskTitle**: 实现订单列表与详情路由页面
|
|
5
|
+
- **expectedRoute**: `frontend-implementation`
|
|
6
|
+
- **expectedRiskLevel**: `standard`
|
|
7
|
+
- **expectedGateIntensity**: dual design + 状态覆盖(loading/empty/error/success)
|
|
8
|
+
- **expectedMockStrategy**: 有 API 时 `native` 或 `request-adapter`;policy=auto
|
|
9
|
+
- **Browser**: **out-of-scope / not-run**
|
|
10
|
+
|
|
11
|
+
## 需求要点
|
|
12
|
+
|
|
13
|
+
- 列表分页或筛选;详情根据 id 加载。
|
|
14
|
+
- loading / empty / error / success 四态可测。
|
|
15
|
+
- Real Integration Gap 在 closeout 保留(若仅 Mock)。
|
|
16
|
+
|
|
17
|
+
## allowedPaths 建议
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
src/pages/orders/**
|
|
21
|
+
src/components/orders/**
|
|
22
|
+
src/api/orders/**
|
|
23
|
+
test/pages/orders/**
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## expected verification 形态
|
|
27
|
+
|
|
28
|
+
- Static + behavior(路由/组件测试,非 e2e 浏览器)
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
# Functional fixture: API + Mock
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-func-api-mock`
|
|
4
|
-
- **taskTitle**: 接入用户列表 API 并在本地用既有 MSW Mock 验证
|
|
5
|
-
- **expectedRoute**: `frontend-implementation`
|
|
6
|
-
- **expectedRiskLevel**: `standard`
|
|
7
|
-
- **expectedGateIntensity**: mock assess + mock contract gate;required 时可能含 mock-verify
|
|
8
|
-
- **expectedMockStrategy**: `native`(既有 MSW)优先
|
|
9
|
-
- **Browser**: **out-of-scope / not-run**
|
|
10
|
-
|
|
11
|
-
## 需求要点
|
|
12
|
-
|
|
13
|
-
- Fixture 字段对齐接口文档;禁止发明字段。
|
|
14
|
-
- 生产默认真实请求;Mock 仅 test/dev 显式激活。
|
|
15
|
-
- closeout:`Frontend status: mock-validated`,`Real integration: pending`。
|
|
16
|
-
|
|
17
|
-
## allowedPaths 建议
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
src/features/users/**
|
|
21
|
-
src/mocks/**
|
|
22
|
-
test/features/users/**
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## expected verification 形态
|
|
26
|
-
|
|
27
|
-
- Static(含 production/default-real-path 构建)
|
|
28
|
-
- Behavior(Mock 激活下状态)
|
|
29
|
-
- 可选 `npm run test:mock` → `frontend-mock-verify-shell`
|
|
1
|
+
# Functional fixture: API + Mock
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-func-api-mock`
|
|
4
|
+
- **taskTitle**: 接入用户列表 API 并在本地用既有 MSW Mock 验证
|
|
5
|
+
- **expectedRoute**: `frontend-implementation`
|
|
6
|
+
- **expectedRiskLevel**: `standard`
|
|
7
|
+
- **expectedGateIntensity**: mock assess + mock contract gate;required 时可能含 mock-verify
|
|
8
|
+
- **expectedMockStrategy**: `native`(既有 MSW)优先
|
|
9
|
+
- **Browser**: **out-of-scope / not-run**
|
|
10
|
+
|
|
11
|
+
## 需求要点
|
|
12
|
+
|
|
13
|
+
- Fixture 字段对齐接口文档;禁止发明字段。
|
|
14
|
+
- 生产默认真实请求;Mock 仅 test/dev 显式激活。
|
|
15
|
+
- closeout:`Frontend status: mock-validated`,`Real integration: pending`。
|
|
16
|
+
|
|
17
|
+
## allowedPaths 建议
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
src/features/users/**
|
|
21
|
+
src/mocks/**
|
|
22
|
+
test/features/users/**
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## expected verification 形态
|
|
26
|
+
|
|
27
|
+
- Static(含 production/default-real-path 构建)
|
|
28
|
+
- Behavior(Mock 激活下状态)
|
|
29
|
+
- 可选 `npm run test:mock` → `frontend-mock-verify-shell`
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
# Functional fixture: permission / auth-gated UI
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-func-permission-auth-ui`
|
|
4
|
-
- **taskTitle**: 管理后台菜单按角色隐藏未授权入口
|
|
5
|
-
- **expectedRoute**: `frontend-implementation`
|
|
6
|
-
- **expectedRiskLevel**: `high-risk`(M4 前仅标注)
|
|
7
|
-
- **expectedGateIntensity**: dual design 保留;权限矩阵进 plan
|
|
8
|
-
- **expectedMockStrategy**: 若角色来自 API 则 Mock/adapter;纯 prop 驱动可为 not-needed
|
|
9
|
-
- **Browser**: **out-of-scope / not-run**
|
|
10
|
-
|
|
11
|
-
## 需求要点
|
|
12
|
-
|
|
13
|
-
- 未授权不渲染危险操作;无权限 empty/forbidden 态。
|
|
14
|
-
- 不得在客户端硬编码绕过鉴权当作完成。
|
|
15
|
-
- 安全相关不得扩大 writeSet 到服务端密钥配置。
|
|
16
|
-
|
|
17
|
-
## allowedPaths 建议
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
src/features/admin/nav/**
|
|
21
|
-
src/hooks/usePermission/**
|
|
22
|
-
test/features/admin/**
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## expected verification 形态
|
|
26
|
-
|
|
27
|
-
- Static + 权限矩阵单测/组件测
|
|
1
|
+
# Functional fixture: permission / auth-gated UI
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-func-permission-auth-ui`
|
|
4
|
+
- **taskTitle**: 管理后台菜单按角色隐藏未授权入口
|
|
5
|
+
- **expectedRoute**: `frontend-implementation`
|
|
6
|
+
- **expectedRiskLevel**: `high-risk`(M4 前仅标注)
|
|
7
|
+
- **expectedGateIntensity**: dual design 保留;权限矩阵进 plan
|
|
8
|
+
- **expectedMockStrategy**: 若角色来自 API 则 Mock/adapter;纯 prop 驱动可为 not-needed
|
|
9
|
+
- **Browser**: **out-of-scope / not-run**
|
|
10
|
+
|
|
11
|
+
## 需求要点
|
|
12
|
+
|
|
13
|
+
- 未授权不渲染危险操作;无权限 empty/forbidden 态。
|
|
14
|
+
- 不得在客户端硬编码绕过鉴权当作完成。
|
|
15
|
+
- 安全相关不得扩大 writeSet 到服务端密钥配置。
|
|
16
|
+
|
|
17
|
+
## allowedPaths 建议
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
src/features/admin/nav/**
|
|
21
|
+
src/hooks/usePermission/**
|
|
22
|
+
test/features/admin/**
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## expected verification 形态
|
|
26
|
+
|
|
27
|
+
- Static + 权限矩阵单测/组件测
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
# Functional fixture: SSR / server-client boundary (Next 风格)
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-func-ssr-server-client-boundary`
|
|
4
|
-
- **taskTitle**: 在 Next App Router 中拆分服务端数据区与客户端交互岛
|
|
5
|
-
- **expectedRoute**: `frontend-implementation`
|
|
6
|
-
- **expectedRiskLevel**: `high-risk`(M4 前仅标注)
|
|
7
|
-
- **expectedGateIntensity**: dual design;明确 server/client 边界与禁止事项
|
|
8
|
-
- **expectedMockStrategy**: server fetch 真实或 adapter;client 交互本地;禁止生产默认 Mock
|
|
9
|
-
- **Browser**: **out-of-scope / not-run**
|
|
10
|
-
|
|
11
|
-
## 需求要点
|
|
12
|
-
|
|
13
|
-
- `"use client"` 边界正确;不把仅服务端 API 密钥导入 client bundle。
|
|
14
|
-
- loading/error 在允许的边界内处理。
|
|
15
|
-
- smoke target 优先 `nextjs-min`(temp dir)。
|
|
16
|
-
|
|
17
|
-
## allowedPaths 建议
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
app/dashboard/**
|
|
21
|
-
src/components/dashboard/**
|
|
22
|
-
test/dashboard/**
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## expected verification 形态
|
|
26
|
-
|
|
27
|
-
- Static: typecheck / next build(temp)
|
|
28
|
-
- Behavior: 单元/组件测试;**不**将 `next start` 浏览器访问作为完成证据
|
|
1
|
+
# Functional fixture: SSR / server-client boundary (Next 风格)
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-func-ssr-server-client-boundary`
|
|
4
|
+
- **taskTitle**: 在 Next App Router 中拆分服务端数据区与客户端交互岛
|
|
5
|
+
- **expectedRoute**: `frontend-implementation`
|
|
6
|
+
- **expectedRiskLevel**: `high-risk`(M4 前仅标注)
|
|
7
|
+
- **expectedGateIntensity**: dual design;明确 server/client 边界与禁止事项
|
|
8
|
+
- **expectedMockStrategy**: server fetch 真实或 adapter;client 交互本地;禁止生产默认 Mock
|
|
9
|
+
- **Browser**: **out-of-scope / not-run**
|
|
10
|
+
|
|
11
|
+
## 需求要点
|
|
12
|
+
|
|
13
|
+
- `"use client"` 边界正确;不把仅服务端 API 密钥导入 client bundle。
|
|
14
|
+
- loading/error 在允许的边界内处理。
|
|
15
|
+
- smoke target 优先 `nextjs-min`(temp dir)。
|
|
16
|
+
|
|
17
|
+
## allowedPaths 建议
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
app/dashboard/**
|
|
21
|
+
src/components/dashboard/**
|
|
22
|
+
test/dashboard/**
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## expected verification 形态
|
|
26
|
+
|
|
27
|
+
- Static: typecheck / next build(temp)
|
|
28
|
+
- Behavior: 单元/组件测试;**不**将 `next start` 浏览器访问作为完成证据
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
# Functional fixture: shared / public component API change
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-func-shared-public-component-api`
|
|
4
|
-
- **taskTitle**: 为设计系统 Input 增加 `size` prop 并更新导出类型
|
|
5
|
-
- **expectedRoute**: `frontend-implementation`
|
|
6
|
-
- **expectedRiskLevel**: `high-risk`(公共 API;M4 前仅标注)
|
|
7
|
-
- **expectedGateIntensity**: dual design;依赖与 breaking change 审查
|
|
8
|
-
- **expectedMockStrategy**: `not-needed`
|
|
9
|
-
- **Browser**: **out-of-scope / not-run**
|
|
10
|
-
|
|
11
|
-
## 需求要点
|
|
12
|
-
|
|
13
|
-
- 公共 props/类型变更需兼容策略(可选 prop 默认值或变更说明)。
|
|
14
|
-
- 更新导出与既有测试;不得静默删测试。
|
|
15
|
-
- writeSet 限于组件包约定路径。
|
|
16
|
-
|
|
17
|
-
## allowedPaths 建议
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
packages/ui/src/Input/**
|
|
21
|
-
packages/ui/src/index.ts
|
|
22
|
-
packages/ui/src/Input/*.test.*
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## expected verification 形态
|
|
26
|
-
|
|
27
|
-
- Static: typecheck/build
|
|
28
|
-
- Behavior: 组件 API 单测
|
|
1
|
+
# Functional fixture: shared / public component API change
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-func-shared-public-component-api`
|
|
4
|
+
- **taskTitle**: 为设计系统 Input 增加 `size` prop 并更新导出类型
|
|
5
|
+
- **expectedRoute**: `frontend-implementation`
|
|
6
|
+
- **expectedRiskLevel**: `high-risk`(公共 API;M4 前仅标注)
|
|
7
|
+
- **expectedGateIntensity**: dual design;依赖与 breaking change 审查
|
|
8
|
+
- **expectedMockStrategy**: `not-needed`
|
|
9
|
+
- **Browser**: **out-of-scope / not-run**
|
|
10
|
+
|
|
11
|
+
## 需求要点
|
|
12
|
+
|
|
13
|
+
- 公共 props/类型变更需兼容策略(可选 prop 默认值或变更说明)。
|
|
14
|
+
- 更新导出与既有测试;不得静默删测试。
|
|
15
|
+
- writeSet 限于组件包约定路径。
|
|
16
|
+
|
|
17
|
+
## allowedPaths 建议
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
packages/ui/src/Input/**
|
|
21
|
+
packages/ui/src/index.ts
|
|
22
|
+
packages/ui/src/Input/*.test.*
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## expected verification 形态
|
|
26
|
+
|
|
27
|
+
- Static: typecheck/build
|
|
28
|
+
- Behavior: 组件 API 单测
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
# Functional fixture: pure local no-remote interaction
|
|
2
|
-
|
|
3
|
-
- **fixtureId**: `fe-func-pure-local-no-remote`
|
|
4
|
-
- **taskTitle**: 实现纯前端计数器与本地 localStorage 偏好
|
|
5
|
-
- **expectedRoute**: `frontend-implementation`
|
|
6
|
-
- **expectedRiskLevel**: `small`(M4 前仅标注)
|
|
7
|
-
- **expectedGateIntensity**: mock assess 仍存在但策略应为 not-needed
|
|
8
|
-
- **expectedMockStrategy**: `not-needed`(正证据:无远程 API)
|
|
9
|
-
- **Browser**: **out-of-scope / not-run**
|
|
10
|
-
|
|
11
|
-
## 需求要点
|
|
12
|
-
|
|
13
|
-
- 状态仅存组件 state / localStorage。
|
|
14
|
-
- 不添加 Mock 框架或 API client。
|
|
15
|
-
- 交互可用 vitest + testing-library 验证。
|
|
16
|
-
|
|
17
|
-
## allowedPaths 建议
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
src/widgets/Counter/**
|
|
21
|
-
test/widgets/Counter/**
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## expected verification 形态
|
|
25
|
-
|
|
26
|
-
- Static + behavior(本地交互)
|
|
27
|
-
- 无 mock-verify 节点
|
|
1
|
+
# Functional fixture: pure local no-remote interaction
|
|
2
|
+
|
|
3
|
+
- **fixtureId**: `fe-func-pure-local-no-remote`
|
|
4
|
+
- **taskTitle**: 实现纯前端计数器与本地 localStorage 偏好
|
|
5
|
+
- **expectedRoute**: `frontend-implementation`
|
|
6
|
+
- **expectedRiskLevel**: `small`(M4 前仅标注)
|
|
7
|
+
- **expectedGateIntensity**: mock assess 仍存在但策略应为 not-needed
|
|
8
|
+
- **expectedMockStrategy**: `not-needed`(正证据:无远程 API)
|
|
9
|
+
- **Browser**: **out-of-scope / not-run**
|
|
10
|
+
|
|
11
|
+
## 需求要点
|
|
12
|
+
|
|
13
|
+
- 状态仅存组件 state / localStorage。
|
|
14
|
+
- 不添加 Mock 框架或 API client。
|
|
15
|
+
- 交互可用 vitest + testing-library 验证。
|
|
16
|
+
|
|
17
|
+
## allowedPaths 建议
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
src/widgets/Counter/**
|
|
21
|
+
test/widgets/Counter/**
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## expected verification 形态
|
|
25
|
+
|
|
26
|
+
- Static + behavior(本地交互)
|
|
27
|
+
- 无 mock-verify 节点
|