This commit is contained in:
王性驊 2026-04-10 16:08:37 +08:00
parent 878a45109d
commit 6fc1c557af
3 changed files with 17 additions and 4 deletions

View File

@ -71,12 +71,14 @@ The PM must not:
- Choose technology or framework - Choose technology or framework
- Propose implementation details - Propose implementation details
- Break down engineering tasks - Break down engineering tasks
- Analyze the codebase for implementation design - Prescribe implementation design from internal code structure
- Perform technical reverse engineering of competitor systems - Perform technical reverse engineering of competitor systems
- Design testing strategy, test harnesses, or automation structure - Design testing strategy, test harnesses, or automation structure
- Write pseudocode - Write pseudocode
- Write code - Write code
The PM may inspect existing product behavior, exposed interfaces, docs, and current-state constraints to keep requirements grounded, but must not derive or prescribe implementation design from internal code structure.
PM defines WHAT. PM defines WHAT.
Engineering defines HOW. Engineering defines HOW.
@ -162,9 +164,11 @@ Bad example:
- `The system should work correctly` - `The system should work correctly`
Good examples: Good examples:
- `Given a valid create-job request, when the request is submitted, then the system returns a success response` - `Given a valid create-job request, when the request is submitted, then the system returns HTTP 201`
- `Given a successful job creation, when the response is returned, then it contains a job identifier` - `Given a successful job creation, when the response is returned, then the response contains job_id`
- `Given a duplicate request under retry conditions, when the same request is repeated, then the system does not create a duplicate job` - `Given a successful job creation, when the response is returned, then job_id is a valid UUID v7`
- `Given a successful job creation, when the job is queried, then it is queryable within 1 second`
- `Given the same payload and the same idempotency key, when the request is repeated, then the system does not create a duplicate record`
## Context-Driven Coverage Rules ## Context-Driven Coverage Rules
The PM must decide which requirement categories are necessary for the feature. Do not force irrelevant categories, but do not omit categories that are materially required by the user context. The PM must decide which requirement categories are necessary for the feature. Do not force irrelevant categories, but do not omit categories that are materially required by the user context.

View File

@ -44,6 +44,13 @@
- 只寫使用者可觀察或可依賴的行為 - 只寫使用者可觀察或可依賴的行為
- 不得寫 architecture、module、schema、database、API path、技術選型、工程拆工 - 不得寫 architecture、module、schema、database、API path、技術選型、工程拆工
## 驗收標準示例
- `Given 有效的 create-job 請求, when 請求送出, then 系統回傳 HTTP 201`
- `Given 建立成功的 job, when 回應返回, then response 包含 job_id`
- `Given 建立成功的 job, when 回應返回, then job_id 必須是有效的 UUID v7`
- `Given 建立成功的 job, when 查詢該 job, then 1 秒內可被查到`
- `Given 相同 payload 與相同 idempotency key, when 重送請求, then 系統不得建立重複紀錄`
## 最低完整性檢查 ## 最低完整性檢查
- 必須包含Problem、Goals、Non Goals、Scope、Success Metrics、User Stories、Functional Requirements、Acceptance Criteria、Edge Cases、Non Functional Requirements、Risks - 必須包含Problem、Goals、Non Goals、Scope、Success Metrics、User Stories、Functional Requirements、Acceptance Criteria、Edge Cases、Non Functional Requirements、Risks
- 視情況補上Research Inputs、Assumptions、Dependencies、Open Questions、Error Handling、Idempotency、Observability - 視情況補上Research Inputs、Assumptions、Dependencies、Open Questions、Error Handling、Idempotency、Observability

View File

@ -157,6 +157,8 @@ Do not:
- Break work into engineering tasks - Break work into engineering tasks
- Write pseudocode or code - Write pseudocode or code
The PM may inspect existing product behavior, exposed interfaces, docs, and current-state constraints to keep requirements grounded, but must not derive or prescribe implementation design from internal code structure.
## Minimum Completeness Gate ## Minimum Completeness Gate
The PRD must contain: The PRD must contain: