@codyswann/lisa 2.303.0 → 2.304.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/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +33 -13
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-confluence-to-tracker/SKILL.md +24 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-confluence-write-prd/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-to-tracker/SKILL.md +24 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/SKILL.md +39 -7
- package/plugins/lisa/.codex-plugin/skills/lisa-github-write-prd/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/SKILL.md +41 -7
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-to-tracker/SKILL.md +24 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/SKILL.md +40 -6
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-prd/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-to-tracker/SKILL.md +24 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-write-prd/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-research/SKILL.md +3 -1
- package/plugins/lisa/rules/eager/prd-definition-of-ready.md +32 -0
- package/plugins/lisa/rules/eager/work-item-definition-of-ready.md +27 -0
- package/plugins/lisa/rules/reference/prd-definition-of-ready.md +81 -0
- package/plugins/lisa/rules/reference/work-item-definition-of-ready.md +145 -0
- package/plugins/lisa/skills/lisa-confluence-to-tracker/SKILL.md +24 -0
- package/plugins/lisa/skills/lisa-confluence-write-prd/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-github-to-tracker/SKILL.md +24 -0
- package/plugins/lisa/skills/lisa-github-validate-issue/SKILL.md +39 -7
- package/plugins/lisa/skills/lisa-github-write-prd/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-jira-validate-ticket/SKILL.md +41 -7
- package/plugins/lisa/skills/lisa-linear-to-tracker/SKILL.md +24 -0
- package/plugins/lisa/skills/lisa-linear-validate-issue/SKILL.md +40 -6
- package/plugins/lisa/skills/lisa-linear-write-prd/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-notion-to-tracker/SKILL.md +24 -0
- package/plugins/lisa/skills/lisa-notion-write-prd/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-research/SKILL.md +3 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-confluence-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-agy/skills/lisa-confluence-write-prd/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-github-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-agy/skills/lisa-github-validate-issue/SKILL.md +39 -7
- package/plugins/lisa-agy/skills/lisa-github-write-prd/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-jira-validate-ticket/SKILL.md +41 -7
- package/plugins/lisa-agy/skills/lisa-linear-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-agy/skills/lisa-linear-validate-issue/SKILL.md +40 -6
- package/plugins/lisa-agy/skills/lisa-linear-write-prd/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-notion-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-agy/skills/lisa-notion-write-prd/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-research/SKILL.md +3 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/rules/eager/prd-definition-of-ready.md +32 -0
- package/plugins/lisa-copilot/rules/eager/work-item-definition-of-ready.md +27 -0
- package/plugins/lisa-copilot/rules/reference/prd-definition-of-ready.md +81 -0
- package/plugins/lisa-copilot/rules/reference/work-item-definition-of-ready.md +145 -0
- package/plugins/lisa-copilot/skills/lisa-confluence-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-copilot/skills/lisa-confluence-write-prd/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-github-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-copilot/skills/lisa-github-validate-issue/SKILL.md +39 -7
- package/plugins/lisa-copilot/skills/lisa-github-write-prd/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-jira-validate-ticket/SKILL.md +41 -7
- package/plugins/lisa-copilot/skills/lisa-linear-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-copilot/skills/lisa-linear-validate-issue/SKILL.md +40 -6
- package/plugins/lisa-copilot/skills/lisa-linear-write-prd/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-notion-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-copilot/skills/lisa-notion-write-prd/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-research/SKILL.md +3 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/rules/prd-definition-of-ready-reference.mdc +86 -0
- package/plugins/lisa-cursor/rules/prd-definition-of-ready.mdc +37 -0
- package/plugins/lisa-cursor/rules/work-item-definition-of-ready-reference.mdc +150 -0
- package/plugins/lisa-cursor/rules/work-item-definition-of-ready.mdc +32 -0
- package/plugins/lisa-cursor/skills/lisa-confluence-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-cursor/skills/lisa-confluence-write-prd/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-github-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-cursor/skills/lisa-github-validate-issue/SKILL.md +39 -7
- package/plugins/lisa-cursor/skills/lisa-github-write-prd/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-jira-validate-ticket/SKILL.md +41 -7
- package/plugins/lisa-cursor/skills/lisa-linear-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-cursor/skills/lisa-linear-validate-issue/SKILL.md +40 -6
- package/plugins/lisa-cursor/skills/lisa-linear-write-prd/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-notion-to-tracker/SKILL.md +24 -0
- package/plugins/lisa-cursor/skills/lisa-notion-write-prd/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-research/SKILL.md +3 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/rules/eager/prd-definition-of-ready.md +32 -0
- package/plugins/src/base/rules/eager/work-item-definition-of-ready.md +27 -0
- package/plugins/src/base/rules/reference/prd-definition-of-ready.md +81 -0
- package/plugins/src/base/rules/reference/work-item-definition-of-ready.md +145 -0
- package/plugins/src/base/skills/lisa-confluence-to-tracker/SKILL.md +24 -0
- package/plugins/src/base/skills/lisa-confluence-write-prd/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-github-to-tracker/SKILL.md +24 -0
- package/plugins/src/base/skills/lisa-github-validate-issue/SKILL.md +39 -7
- package/plugins/src/base/skills/lisa-github-write-prd/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-jira-validate-ticket/SKILL.md +41 -7
- package/plugins/src/base/skills/lisa-linear-to-tracker/SKILL.md +24 -0
- package/plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md +40 -6
- package/plugins/src/base/skills/lisa-linear-write-prd/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-notion-to-tracker/SKILL.md +24 -0
- package/plugins/src/base/skills/lisa-notion-write-prd/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-research/SKILL.md +3 -1
- package/ui/index.html +37 -2
|
@@ -74,6 +74,8 @@ Gates are grouped into **Specification** (spec-only checks, no Linear lookups) a
|
|
|
74
74
|
|
|
75
75
|
Each gate is tagged with a fixed `category` and a `product_relevant` boolean. Categories drive how downstream callers (notably `lisa-linear-prd-intake`) translate failures into product-facing comments; `product_relevant=false` failures indicate internal data-quality problems the agent should fix itself rather than ask product to clarify.
|
|
76
76
|
|
|
77
|
+
Per-type content requirements are defined once in the vendor-neutral `work-item-definition-of-ready` rule (eager + reference); gates S4–S6 and S17 enforce them, and S18 enforces the stateless-pickup property directly.
|
|
78
|
+
|
|
77
79
|
| Gate | Category | Product-relevant |
|
|
78
80
|
|------|----------|------------------|
|
|
79
81
|
| S1 Required core fields | `structural` | false |
|
|
@@ -92,6 +94,8 @@ Each gate is tagged with a fixed `category` and a `product_relevant` boolean. Ca
|
|
|
92
94
|
| S14 Evidence manifest binding (leaf work units) | `acceptance-criteria` | true |
|
|
93
95
|
| S15 Leaf-only build-ready | `structural` | false |
|
|
94
96
|
| S16 Source Requirement traceability | `product-clarity` | true |
|
|
97
|
+
| S17 Improvement measurability | `acceptance-criteria` | true |
|
|
98
|
+
| S18 Stateless-pickup dry-run | `product-clarity` | true |
|
|
95
99
|
| F1 Issue type valid in team | `structural` | false |
|
|
96
100
|
| F2 Project parent exists and is in same team | `structural` | false |
|
|
97
101
|
| F3 Linked items exist | `structural` | false |
|
|
@@ -139,16 +143,26 @@ The `Acceptance Criteria` section must contain at least one criterion in `Given
|
|
|
139
143
|
|
|
140
144
|
#### S5 — Bug-specific content
|
|
141
145
|
|
|
142
|
-
When `issue_type = Bug`, description must additionally include:
|
|
143
|
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
+
When `issue_type = Bug`, description must additionally include the full bug anatomy from the `work-item-definition-of-ready` rule:
|
|
147
|
+
|
|
148
|
+
- **Agent-executable reproduction** — numbered steps a stateless agent can run mechanically: exact entry point, named account/role (consistent with Sign-in Required when authenticated), concrete data state, exact actions. Human-followable-only prose ("click around until it breaks") FAILs. A linked failing test satisfies this outright and is the preferred form.
|
|
149
|
+
- **Expected vs. actual behavior**, naming or linking the *source* of "expected" (spec, PRD requirement, prior release behavior) — a fix target is a fact, not an opinion.
|
|
150
|
+
- **Environment + version** — where reproduced and the build/commit observed; last-known-good when known (`unknown` must be stated, not omitted).
|
|
151
|
+
- **Reproducibility rate** — always, or intermittent with observed frequency; intermittent invalidates run-once verification.
|
|
152
|
+
- **Occurrence evidence** — at least one link/attachment: error-tracker issue, log excerpt, stack trace, screenshot/recording.
|
|
153
|
+
|
|
154
|
+
A Bug's terminal state is its reproduction: the same steps (or test) fail before the fix and pass after — capture both as evidence: under the S14 manifest when `runtime_behavior_change = true`, or attached directly to the item for non-runtime Bugs (doc/config fixes), where S14 is N/A.
|
|
146
155
|
|
|
147
156
|
#### S6 — Spike-specific content
|
|
148
157
|
|
|
149
158
|
When `issue_type = Spike`, description must include:
|
|
150
|
-
|
|
151
|
-
-
|
|
159
|
+
|
|
160
|
+
- The **question** being answered
|
|
161
|
+
- The **decision** the answer enables, and the options being weighed
|
|
162
|
+
- A **timebox**
|
|
163
|
+
- **Deliverable format and location** — decision doc / prototype / findings page, and where it will live, so the terminal state — a deliverable at that location that actually answers the question, with findings, decision and options — is checkable
|
|
164
|
+
|
|
165
|
+
Gherkin AC is intentionally N/A for Spikes (S4).
|
|
152
166
|
|
|
153
167
|
#### S7 — Project parent declared
|
|
154
168
|
|
|
@@ -194,6 +208,8 @@ Accept either placement:
|
|
|
194
208
|
|
|
195
209
|
Detect by scanning for the phrase `Source Precedence` (case-insensitive) anywhere in the description AND verifying the four axes are each named. Missing the phrase OR any axis: FAIL with remediation naming the missing axes.
|
|
196
210
|
|
|
211
|
+
If the spec doesn't set `artifacts_attached`, infer it the same way S9 infers sign-in: scan the description for design/mock/prototype/data-artifact references (design-tool links, "mock", "prototype", spreadsheet or API artifacts). If such artifacts are referenced and no source-precedence guidance exists: FAIL.
|
|
212
|
+
|
|
197
213
|
#### S13 — Relationship Search documented
|
|
198
214
|
|
|
199
215
|
The item must EITHER have at least one entry in `relations`, OR the description / a comment must contain a `## Relationship Search` block listing the git history queries and Linear MCP queries that were run with their outcomes.
|
|
@@ -271,6 +287,22 @@ R-id with no quote: FAIL with remediation
|
|
|
271
287
|
`product_relevant: true` — a issue whose requirement cannot be traced is
|
|
272
288
|
a product-clarity problem: nobody can tell why the work exists.
|
|
273
289
|
|
|
290
|
+
#### S17 — Improvement measurability
|
|
291
|
+
|
|
292
|
+
When `issue_type = Improvement`, the description must define the improvement as a measured delta per `work-item-definition-of-ready`:
|
|
293
|
+
|
|
294
|
+
- **Metric + measurement method** the agent can run (command, query, dashboard export)
|
|
295
|
+
- **Baseline** — the current measured value (a number, not an adjective)
|
|
296
|
+
- **Target** — the numeric value or bound that defines done
|
|
297
|
+
|
|
298
|
+
Without a baseline and a target an Improvement has no verifiable terminal state and can never be autonomously closed. FAIL names the missing pieces; when no baseline exists yet, the remediation is to file measuring it as the first step. `N/A` for every other type.
|
|
299
|
+
|
|
300
|
+
#### S18 — Stateless-pickup dry-run
|
|
301
|
+
|
|
302
|
+
The autonomy gate, run last, on every build-ready leaf (use the S15 classification; `N/A` for containers and non-build-ready items). Simulate a stateless agent reading only this item and the links it can resolve — session knowledge about the codebase does not count, because the next claimant will not have it. List every question that agent would have to ask a human before starting work, before choosing between materially different implementations, or before declaring the work done.
|
|
303
|
+
|
|
304
|
+
Zero questions → PASS. Any question → FAIL, with each question listed verbatim as its own remediation line — these are exactly the clarifying comments the caller posts to the source. The structure gates are proxies; this gate checks the readiness property itself: `ready` means a stateless agent can drive this item to its terminal state with zero human clarification (see `work-item-definition-of-ready`).
|
|
305
|
+
|
|
274
306
|
### Feasibility Gates (require Linear lookups; skip in dry-run if requested)
|
|
275
307
|
|
|
276
308
|
#### F1 — Issue type valid in team
|
|
@@ -360,6 +392,8 @@ Output is a single fenced text block. Callers parse it; do not add free-form pro
|
|
|
360
392
|
- [PASS|FAIL|N/A] S14 Evidence manifest binding — <one-line reason>
|
|
361
393
|
- [PASS|FAIL|N/A] S15 Leaf-only build-ready — <one-line reason>
|
|
362
394
|
- [PASS|FAIL|N/A] S16 Source Requirement traceability — <one-line reason>
|
|
395
|
+
- [PASS|FAIL|N/A] S17 Improvement measurability — <one-line reason>
|
|
396
|
+
- [PASS|FAIL|N/A] S18 Stateless-pickup dry-run — <one-line reason>
|
|
363
397
|
|
|
364
398
|
### Feasibility Gates (omit when --spec-only)
|
|
365
399
|
- [PASS|FAIL|N/A] F1 Issue type valid in team — <one-line reason>
|
|
@@ -86,6 +86,8 @@ outcome: created | reused
|
|
|
86
86
|
|
|
87
87
|
## Rules
|
|
88
88
|
|
|
89
|
+
- The PRD body's requirements MUST conform to `prd-definition-of-ready`: identified atoms (`R1`, `R2`, …), one behavior each in an EARS-pattern shape, each with a measurable fit criterion, plus the non-functional checklist. This governs factory-authored bodies; human-authored PRDs are validated at intake instead (`*-to-tracker` Phase 1.45).
|
|
90
|
+
|
|
89
91
|
- Exactly one PRD lifecycle project-label at all times.
|
|
90
92
|
- Match dedupe by marker, never by project name.
|
|
91
93
|
- Preserve an existing canonical `## Lisa Usage` section on update; never append a second usage
|
|
@@ -190,6 +190,30 @@ The register feeds three consumers: the `## Source Requirement` section on
|
|
|
190
190
|
every created ticket (Phases 3–5), the dry-run report (above), and the
|
|
191
191
|
requirement tokens in the PRD back-link (Phase 7).
|
|
192
192
|
|
|
193
|
+
### Phase 1.45: Requirement Quality Gates (prd-definition-of-ready)
|
|
194
|
+
|
|
195
|
+
Validate every Phase 1.4 register entry against the `prd-definition-of-ready` rule before
|
|
196
|
+
planning proceeds. Per atom:
|
|
197
|
+
|
|
198
|
+
- **Singular** — one behavior per entry. An entry welding multiple shall/when clauses together is
|
|
199
|
+
split in the register (R4 → R4a/R4b) when the split is mechanical and meaning-preserving; when
|
|
200
|
+
the split would change meaning, it is a product question, not a repair.
|
|
201
|
+
- **Unambiguous** — FAIL on the vagueness lexicon ("as appropriate", "user-friendly", "fast",
|
|
202
|
+
"handle gracefully", "etc.", "and/or", unbounded "optimize"/"support"): phrasing no test can
|
|
203
|
+
check. The full lexicon lives in the rule's reference body.
|
|
204
|
+
- **Verifiable** — a fit criterion (the measurable test of satisfaction) is present or
|
|
205
|
+
mechanically derivable from the text; a requirement no test could check is not admitted as a
|
|
206
|
+
requirement.
|
|
207
|
+
- **Pattern shape (SHOULD)** — an EARS pattern (ubiquitous / When / While / If-then / Where) or an
|
|
208
|
+
equivalent single-behavior sentence; conforming shapes decompose into Gherkin mechanically.
|
|
209
|
+
|
|
210
|
+
Failures here are **requirement-level product clarifications**, not internal errors: report each in
|
|
211
|
+
the dry-run report as a `product-clarity` item quoting the atom verbatim, naming the defect, and
|
|
212
|
+
offering 1–3 candidate rewrites (an EARS-shaped rewrite is the default recommendation). In intake
|
|
213
|
+
flows these route to the PRD's `blocked` role with comments, exactly like ticket-validator
|
|
214
|
+
failures. Mechanical splits and derived fit criteria are repaired in-register and recorded in the
|
|
215
|
+
report — never silently.
|
|
216
|
+
|
|
193
217
|
### Phase 1.5: Extract Source Artifacts
|
|
194
218
|
|
|
195
219
|
PRDs typically reference external design, UX, and data artifacts (Figma files, Lovable prototypes, Loom walkthroughs, screenshots, example payloads, Confluence pages). These MUST be preserved onto the resulting tickets — otherwise developers picking up a ticket lose the source of truth. This is the failure mode this step exists to prevent.
|
|
@@ -100,6 +100,8 @@ outcome: created | reused
|
|
|
100
100
|
|
|
101
101
|
## Rules
|
|
102
102
|
|
|
103
|
+
- The PRD body's requirements MUST conform to `prd-definition-of-ready`: identified atoms (`R1`, `R2`, …), one behavior each in an EARS-pattern shape, each with a measurable fit criterion, plus the non-functional checklist. This governs factory-authored bodies; human-authored PRDs are validated at intake instead (`*-to-tracker` Phase 1.45).
|
|
104
|
+
|
|
103
105
|
- All access via `lisa-notion-access`; never touch the Notion API/MCP directly.
|
|
104
106
|
- Match dedupe by marker, never by title.
|
|
105
107
|
- Preserve an existing canonical `## Lisa Usage` section on update; never append a second usage
|
|
@@ -56,7 +56,9 @@ A PRD **created in the configured PRD source** (per the intent-routing rule's Re
|
|
|
56
56
|
definition) structured as: problem statement, high-level solution description, links (if needed),
|
|
57
57
|
user stories (each with its own functional/non-functional requirements and, only for stories with
|
|
58
58
|
new UI/visual work, a design-file pointer), overall acceptance criteria, open questions, and the
|
|
59
|
-
"Recommended Tooling for Plan Phase" section.
|
|
59
|
+
"Recommended Tooling for Plan Phase" section. Requirements MUST conform to the
|
|
60
|
+
`prd-definition-of-ready` rule: identified atoms (`R1`, `R2`, …), one behavior each in an
|
|
61
|
+
EARS-pattern shape, each with a measurable fit criterion, plus the non-functional checklist. The final
|
|
60
62
|
flow step invokes `lisa-prd-source-write`, which creates the PRD in the configured `source` (Notion
|
|
61
63
|
page in the PRD database, Confluence page under the lifecycle parent, GitHub issue, or Linear
|
|
62
64
|
project) in the `draft` role by default or `ready` when `prd_ready=true`. **The PRD lives in the
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "PRD Definition of Ready — Reference"
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PRD Definition of Ready — Reference
|
|
7
|
+
|
|
8
|
+
The eager head carries the atom definition and enforcement points; this
|
|
9
|
+
reference carries the rationale, the full vagueness lexicon, and worked
|
|
10
|
+
rewrites. The companion rule `work-item-definition-of-ready` governs the next
|
|
11
|
+
stage down (tickets); this rule governs what the Plan factory decomposes from.
|
|
12
|
+
|
|
13
|
+
## Why requirement shape is the whole game
|
|
14
|
+
|
|
15
|
+
The pipeline consumes requirements three times, and each consumer needs a
|
|
16
|
+
different property that only shaped atoms provide:
|
|
17
|
+
|
|
18
|
+
1. **Plan decomposes** — an EARS-shaped atom (*When X, the system shall Y*)
|
|
19
|
+
maps to a Gherkin scenario (*When X / Then Y*) nearly mechanically. Prose
|
|
20
|
+
paragraphs force the planner to invent the split, which is where scope
|
|
21
|
+
quietly drifts between the PRD and the backlog.
|
|
22
|
+
2. **Tickets trace** — gate S16 quotes the requirement verbatim on every leaf.
|
|
23
|
+
A verbatim quote of a paragraph containing three requirements is an
|
|
24
|
+
ambiguous trace: which of the three does this ticket satisfy?
|
|
25
|
+
3. **Verification checks conformance** — spec-conformance and `verify-prd`
|
|
26
|
+
read the PRD back against the shipped result. A fit criterion is a
|
|
27
|
+
conformance check waiting to run; an adjective is not.
|
|
28
|
+
|
|
29
|
+
The standards being distilled: **ISO/IEC/IEEE 29148** (successor to IEEE 830)
|
|
30
|
+
supplies the per-requirement quality characteristics — necessary, appropriate,
|
|
31
|
+
unambiguous, complete, singular, feasible, verifiable, correct — and the
|
|
32
|
+
practice of banning untestable phrasing. **EARS** (Mavin et al.) supplies the
|
|
33
|
+
five sentence patterns. **Volere** supplies the fit criterion. **ISO 25010**
|
|
34
|
+
supplies the non-functional axes for the completeness walk. None of these are
|
|
35
|
+
imported wholesale; this rule takes exactly the parts a machine planner and a
|
|
36
|
+
machine verifier consume.
|
|
37
|
+
|
|
38
|
+
## The vagueness lexicon
|
|
39
|
+
|
|
40
|
+
Presence of these (and their kin) in a requirement atom FAILs it as
|
|
41
|
+
unverifiable — each is a phrase no test can check:
|
|
42
|
+
|
|
43
|
+
> as appropriate · as needed · if necessary · user-friendly · intuitive ·
|
|
44
|
+
> seamless · robust · flexible · fast · quickly · efficient · optimize ·
|
|
45
|
+
> minimize / maximize (unbounded) · handle gracefully · support (unbounded) ·
|
|
46
|
+
> etc. · and/or · TBD inside an atom (TBD belongs in Open Questions)
|
|
47
|
+
|
|
48
|
+
The lexicon is a floor, not a ceiling — validators should flag any phrasing
|
|
49
|
+
they cannot turn into a check.
|
|
50
|
+
|
|
51
|
+
## Worked rewrites
|
|
52
|
+
|
|
53
|
+
| Before (fails) | After (passes) |
|
|
54
|
+
|---|---|
|
|
55
|
+
| "Uploads should be fast and handle errors gracefully." | R4: *When a user uploads a file ≤ 25 MB, the system shall complete the upload within 4s at p95.* Fit: perf-trace on staging. R5: *If an upload fails, then the system shall show a retryable error naming the cause.* Fit: screenshot of the error state per failure class. |
|
|
56
|
+
| "The dashboard should be user-friendly and support filtering, sorting, etc." | R7: *The dashboard shall filter by status, owner, and date range.* R8: *The dashboard shall sort by any visible column.* Fit: each verb exercised in an E2E journey. ("etc." is deleted — unnamed features are unbuilt features.) |
|
|
57
|
+
| "Optimize the pipeline." | R2: *The nightly pipeline shall complete within 30 minutes for a 10k-item batch* (baseline: 47m measured 2026-07-01). Fit: pipeline duration metric. — note this is Improvement-shaped: baseline + target, per `work-item-definition-of-ready`. |
|
|
58
|
+
|
|
59
|
+
## Singularity repair
|
|
60
|
+
|
|
61
|
+
When an atom contains multiple behaviors, the register splits it (`R4` →
|
|
62
|
+
`R4a`, `R4b`) — **mechanically when the split preserves meaning**, as a
|
|
63
|
+
product clarification when it does not. The split is recorded in the dry-run
|
|
64
|
+
report; it is never silent, because the PRD author's numbering is part of the
|
|
65
|
+
traceability contract.
|
|
66
|
+
|
|
67
|
+
## The non-functional walk
|
|
68
|
+
|
|
69
|
+
A PRD is complete only when the ISO 25010 axes were each considered:
|
|
70
|
+
performance, security, reliability, usability, compatibility,
|
|
71
|
+
maintainability/operability. The required artifact is one line per axis —
|
|
72
|
+
either an atom or an explicit "no requirement." The point is not ceremony; it
|
|
73
|
+
is that **silence and "no requirement" are different facts**, and only one of
|
|
74
|
+
them is a decision a verifier can hold the product to.
|
|
75
|
+
|
|
76
|
+
## Relationship to the lifecycle
|
|
77
|
+
|
|
78
|
+
- **Write** — `lisa-research` authors atoms; `*-write-prd` carries the body
|
|
79
|
+
rule. Factory-authored PRDs are born conforming.
|
|
80
|
+
- **Intake** — `*-to-tracker` Phase 1.45 is the universal gate (human-authored
|
|
81
|
+
PRDs arrive here without passing any write path). Failures quote the atom
|
|
82
|
+
verbatim, name the defect, and offer 1–3 candidate rewrites — the
|
|
83
|
+
EARS-shaped rewrite is the default recommendation. Routed like every other
|
|
84
|
+
intake failure: PRD to `blocked`, product-readable comments.
|
|
85
|
+
- **Verify** — fit criteria become the spec-conformance checks; the
|
|
86
|
+
requirement register ids appear in the PRD backlink and the coverage audit.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "PRD Definition of Ready (requirement atoms)"
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PRD Definition of Ready (requirement atoms)
|
|
7
|
+
|
|
8
|
+
**A requirements document is ready when a planner can decompose it mechanically and a verifier can check the result against it.** Both properties come from the shape of the requirements, not the prose around them. Modeled on ISO/IEC/IEEE 29148's requirement quality characteristics and the EARS sentence patterns; the fit criterion is Volere's.
|
|
9
|
+
|
|
10
|
+
## The atom
|
|
11
|
+
|
|
12
|
+
Every requirement is an **identified atom**:
|
|
13
|
+
|
|
14
|
+
- **Identified** — carries an id (`R1`, `R2`, …). Ids are per-generation; the verbatim text is the durable anchor (same convention as the `*-to-tracker` Requirement Register).
|
|
15
|
+
- **Singular** — one behavior per atom. "The system shall X and Y when Z" is two atoms.
|
|
16
|
+
- **Unambiguous** — no vagueness lexicon: *as appropriate, user-friendly, fast, robust, handle gracefully, etc., and/or, optimize, seamless, intuitive, support* (unbounded). Each is a word no test can check.
|
|
17
|
+
- **Verifiable** — carries a **fit criterion**: the measurable test of satisfaction ("p95 upload completes < 4s for files ≤ 25 MB"). A requirement no test could check is a wish.
|
|
18
|
+
- **Pattern-shaped (SHOULD)** — one of the EARS patterns, which decompose into Gherkin mechanically:
|
|
19
|
+
- Ubiquitous: *The `<system>` shall `<response>`*
|
|
20
|
+
- Event-driven: *When `<trigger>`, the `<system>` shall `<response>`*
|
|
21
|
+
- State-driven: *While `<state>`, the `<system>` shall `<response>`*
|
|
22
|
+
- Unwanted behavior: *If `<condition>`, then the `<system>` shall `<response>`*
|
|
23
|
+
- Optional feature: *Where `<feature>` is present, the `<system>` shall `<response>`*
|
|
24
|
+
|
|
25
|
+
## The document
|
|
26
|
+
|
|
27
|
+
Beyond the atoms, a ready PRD carries: problem statement · solution outline · user stories grouping their atoms · an explicit **non-functional checklist** (walk the ISO 25010 axes — performance, security, reliability, usability, compatibility, maintainability — and either state the requirement as an atom or state "no requirement"; silence is not a decision) · out of scope · open questions (the honest home for what is NOT ready).
|
|
28
|
+
|
|
29
|
+
## Enforcement points
|
|
30
|
+
|
|
31
|
+
- **Write time** — `lisa-research` authors to this shape; `*-write-prd` skills carry it as a body rule.
|
|
32
|
+
- **Intake time (the universal gate)** — `*-to-tracker` Phase 1.45 validates every register atom, because human-authored PRDs never pass through the write path. Failures are product clarifications quoting the atom verbatim with candidate rewrites.
|
|
33
|
+
- **Verify time** — `verify-prd` / spec-conformance consume the atoms; fit criteria become the conformance checks.
|
|
34
|
+
|
|
35
|
+
Downstream, ticket gate S16 quotes these atoms verbatim and `prd-ticket-coverage` audits atom→ticket coverage — both degrade when "one requirement" is secretly three welded together.
|
|
36
|
+
|
|
37
|
+
Full rationale, the vagueness lexicon, and worked rewrites: [the reference body of this rule](prd-definition-of-ready-reference.mdc).
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Work-Item Definition of Ready — Reference"
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Work-Item Definition of Ready — Reference
|
|
7
|
+
|
|
8
|
+
The eager head carries the table; this reference carries the reasoning, the
|
|
9
|
+
failure modes each requirement prevents, and worked examples. The enforcing
|
|
10
|
+
gates live in the three tracker validators (`lisa-jira-validate-ticket`,
|
|
11
|
+
`lisa-github-validate-issue`, `lisa-linear-validate-issue`), which cite this
|
|
12
|
+
rule so the bar cannot drift per vendor.
|
|
13
|
+
|
|
14
|
+
## The design principle
|
|
15
|
+
|
|
16
|
+
A readiness gate is justified by exactly one thing: **its absence forces a
|
|
17
|
+
human question.** The goal state is that a stateless agent — fresh session, no
|
|
18
|
+
memory of any prior conversation — claims any ready item and drives it to its
|
|
19
|
+
terminal state with zero human clarification. Every requirement below is an
|
|
20
|
+
answer to a question agents otherwise ask mid-flight, which is the most
|
|
21
|
+
expensive time to ask it: the item is claimed, the human is absent, and the
|
|
22
|
+
choice is stall (blocked, human round-trip) or guess (rework when wrong).
|
|
23
|
+
|
|
24
|
+
The bar is **type-keyed** because work types break autonomy differently. A
|
|
25
|
+
Story with perfect Gherkin but no design source makes the agent guess visuals.
|
|
26
|
+
A Bug with perfect prose but no executable repro makes the agent guess whether
|
|
27
|
+
it even fixed anything. One generic checklist over-asks some types (Gherkin on
|
|
28
|
+
a Spike is noise) and under-asks others (three bullets on a Bug).
|
|
29
|
+
|
|
30
|
+
## Bug — the defect anatomy
|
|
31
|
+
|
|
32
|
+
Modeled on the ISTQB defect-report content list, IEEE 1044, and
|
|
33
|
+
minimal-reproducible-example practice, tightened for a machine executor:
|
|
34
|
+
|
|
35
|
+
1. **Agent-executable reproduction.** Numbered steps a stateless agent can run
|
|
36
|
+
mechanically: exact entry point, named account/role (consistent with the
|
|
37
|
+
Sign-in Required section when authenticated), concrete data state, exact
|
|
38
|
+
actions. "Open the dashboard and click around until it breaks" is
|
|
39
|
+
human-followable, not agent-executable — it FAILs. A linked failing test
|
|
40
|
+
satisfies this requirement outright and is the preferred form.
|
|
41
|
+
2. **Expected vs. actual, with the source of "expected."** Name or link where
|
|
42
|
+
the expected behavior comes from — spec, PRD requirement, prior release. A
|
|
43
|
+
fix target must be a fact, not an opinion, or the agent can confidently fix
|
|
44
|
+
to the wrong behavior.
|
|
45
|
+
3. **Environment and version.** Where reproduced, and the build/commit
|
|
46
|
+
observed. Include last-known-good when known — that regression window is
|
|
47
|
+
what makes bisection possible. `unknown` is acceptable but must be stated.
|
|
48
|
+
4. **Reproducibility rate.** Always vs. intermittent (with observed
|
|
49
|
+
frequency). An intermittent bug invalidates run-the-repro-once as a
|
|
50
|
+
verification plan; the verifier needs to know to run it N times or
|
|
51
|
+
instrument instead.
|
|
52
|
+
5. **Occurrence evidence.** At least one link or attachment proving the bug
|
|
53
|
+
happened: error-tracker issue, log excerpt, stack trace, screenshot or
|
|
54
|
+
recording. Input evidence, distinct from the output evidence manifest.
|
|
55
|
+
|
|
56
|
+
**Terminal state:** the reproduction (or failing test) fails before the fix
|
|
57
|
+
and passes after — both runs captured under the evidence manifest. This is
|
|
58
|
+
what makes a Bug autonomously closable: done-ness is a mechanical check, not a
|
|
59
|
+
judgment.
|
|
60
|
+
|
|
61
|
+
## Story
|
|
62
|
+
|
|
63
|
+
The generic gates (three audiences, Gherkin, Out of Scope, source precedence)
|
|
64
|
+
were designed around Stories, so Stories are the best-covered type already.
|
|
65
|
+
The additional expectations:
|
|
66
|
+
|
|
67
|
+
- UI-touching stories SHOULD name the non-happy-path states — error, empty,
|
|
68
|
+
loading — in the AC. These are the states product-walkthroughs flag as
|
|
69
|
+
missing after the fact; naming them up front converts a review finding into
|
|
70
|
+
a requirement.
|
|
71
|
+
- Keep stories INVEST-small: a story too large to hold in one session is the
|
|
72
|
+
leading cause of mid-flight questions. Prefer decomposition over heroics.
|
|
73
|
+
|
|
74
|
+
**Terminal state:** every AC scenario exercised against the running product.
|
|
75
|
+
|
|
76
|
+
## Task
|
|
77
|
+
|
|
78
|
+
A Task is "do this specific thing" — its risk is a fuzzy finish line, not a
|
|
79
|
+
fuzzy user. It must carry an observable done-state and the command or check
|
|
80
|
+
that proves it ("`bun run verify:x` exits 0", "the workflow file validates and
|
|
81
|
+
the job appears in CI"). **Terminal state:** that check passes.
|
|
82
|
+
|
|
83
|
+
## Improvement — the measured delta
|
|
84
|
+
|
|
85
|
+
An Improvement without numbers has no verifiable terminal state by
|
|
86
|
+
construction: "make it faster" can never be autonomously closed. Required:
|
|
87
|
+
|
|
88
|
+
1. **Metric + measurement method** the agent can run (command, query,
|
|
89
|
+
dashboard export — something mechanical).
|
|
90
|
+
2. **Baseline** — the current measured value. A number, not an adjective.
|
|
91
|
+
3. **Target** — the numeric value or bound that defines done.
|
|
92
|
+
|
|
93
|
+
If no baseline exists yet, measuring it is the first task — file it as such.
|
|
94
|
+
**Terminal state:** the measurement method reports a value meeting the target.
|
|
95
|
+
|
|
96
|
+
## Spike — the investigation contract
|
|
97
|
+
|
|
98
|
+
A Spike's output is knowledge, so its readiness is about making knowledge
|
|
99
|
+
checkable:
|
|
100
|
+
|
|
101
|
+
1. **The question** being answered.
|
|
102
|
+
2. **The decision it enables**, and the options being weighed — so the answer
|
|
103
|
+
is written to be decidable against, not merely interesting.
|
|
104
|
+
3. **A timebox** — spikes without one become open-ended research.
|
|
105
|
+
4. **Deliverable format and location** — decision doc, prototype, findings
|
|
106
|
+
page, and *where it will live* (wiki page, decision record, attachment).
|
|
107
|
+
|
|
108
|
+
Gherkin AC is intentionally N/A for Spikes (S4 already exempts them).
|
|
109
|
+
**Terminal state:** a deliverable exists at the named location **and answers the
|
|
110
|
+
question** — it records the findings, the recommended decision, and the
|
|
111
|
+
options weighed. An empty or placeholder document at the right path is not
|
|
112
|
+
terminal.
|
|
113
|
+
|
|
114
|
+
## Sub-task
|
|
115
|
+
|
|
116
|
+
Always has a parent (no stranded-leaf exception), and otherwise carries the
|
|
117
|
+
bar of its own nature — a bug-shaped sub-task carries the bug anatomy.
|
|
118
|
+
|
|
119
|
+
## Epic and containers
|
|
120
|
+
|
|
121
|
+
Containers are never build-ready (`leaf-only-lifecycle`); their readiness
|
|
122
|
+
question is decomposition completeness — does every PRD requirement trace to a
|
|
123
|
+
leaf (`prd-ticket-coverage`) — not buildability.
|
|
124
|
+
|
|
125
|
+
## The stateless-pickup dry-run (gate S18)
|
|
126
|
+
|
|
127
|
+
Structure gates are proxies; this gate checks the property directly. The
|
|
128
|
+
validator simulates a stateless read of the item plus its resolvable links —
|
|
129
|
+
session knowledge deliberately excluded, because the next claimant will not
|
|
130
|
+
have it — and lists every question it would need answered before starting,
|
|
131
|
+
before choosing between materially different implementations, or before
|
|
132
|
+
declaring done. Zero questions = PASS. Each question found is emitted verbatim
|
|
133
|
+
as its own remediation line; those lines are exactly the clarifying comments
|
|
134
|
+
the caller posts to the source. This is the enforcement of the intake
|
|
135
|
+
contract's core promise, and of TASC AC8.6: *ready means zero-clarification
|
|
136
|
+
executable.*
|
|
137
|
+
|
|
138
|
+
## Relationship to the lifecycle
|
|
139
|
+
|
|
140
|
+
- **Write time** — `*-write-*` runs the applicable pre-write gates; a spec
|
|
141
|
+
failing the type-keyed bar is repaired or rejected before it exists. S18 is
|
|
142
|
+
not a write-time gate — most specs are not yet build-ready when written.
|
|
143
|
+
- **Ready time** — the bar is what the build-ready role asserts, and S18 runs
|
|
144
|
+
here, on build-ready leaves only, making the assertion checked rather than
|
|
145
|
+
hoped.
|
|
146
|
+
- **Claim time** — `ticket-triage` remains the analytical deep-check against
|
|
147
|
+
the codebase (edge cases, duplicate work, rework classification). With this
|
|
148
|
+
bar enforced upstream, triage's ambiguity phase should find nothing a
|
|
149
|
+
validator could have caught — its findings become a monitoring signal for
|
|
150
|
+
gaps in this rule.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Work-Item Definition of Ready (type-keyed)"
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Work-Item Definition of Ready (type-keyed)
|
|
7
|
+
|
|
8
|
+
**`ready` means: a stateless agent can claim this item and drive it to its terminal state with zero human clarification.** Every readiness gate exists because its absence forces a question; the bar is type-keyed because different work types break autonomy differently.
|
|
9
|
+
|
|
10
|
+
## Shared core (every leaf, enforced by `*-validate-*` S1–S16)
|
|
11
|
+
|
|
12
|
+
Three-audience description · Gherkin acceptance criteria (except Spike) · Out of Scope · single-repo scope · relationship search · typed evidence manifest on runtime changes · Source Requirement traceability when PRD-sourced · provable read access to every named external surface.
|
|
13
|
+
|
|
14
|
+
## Per-type additions
|
|
15
|
+
|
|
16
|
+
| Type | Must additionally carry | Terminal state is |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| **Bug** | agent-executable reproduction (or a failing test) · expected-vs-actual with the *source* of "expected" · environment + version observed, last-known-good when known · reproducibility rate (always / intermittent + frequency) · at least one occurrence evidence link | the same repro/test fails before the fix and passes after |
|
|
19
|
+
| **Story** | user-visible AC; SHOULD name non-happy-path states (error / empty / loading) for UI stories · design source precedence when artifacts exist | every AC exercised on the running product |
|
|
20
|
+
| **Task** | an observable done-state and the command/check that proves it | the verification check passes |
|
|
21
|
+
| **Improvement** | metric + measurement method the agent can run · measured baseline value · numeric target | measured value meets the target |
|
|
22
|
+
| **Spike** | the question · the decision it enables + options weighed · a timebox · deliverable format **and location** | a deliverable at the named location that answers the question — findings, decision, options weighed |
|
|
23
|
+
| **Sub-task** | a parent, always · otherwise the bar of its own type | per its type |
|
|
24
|
+
| **Epic / container** | never build-ready (`leaf-only-lifecycle`) · judged on decomposition completeness, not buildability | all required children terminal |
|
|
25
|
+
|
|
26
|
+
## The stateless-pickup test (S18)
|
|
27
|
+
|
|
28
|
+
The final gate checks the property itself instead of proxies for it: read the item as a fresh agent with no session context, using only the item and what it links to. List every question you would have to ask a human before starting, choosing between materially different implementations, or declaring done. **Ready = zero questions.** Each question found is the FAIL remediation, verbatim.
|
|
29
|
+
|
|
30
|
+
Sources this bar distills: INVEST (stories) · ISTQB / IEEE 1044 defect anatomy and minimal-reproducible-example practice (bugs) · SMART (improvements) · Scrum's Definition of Ready (the framing) · TASC AC8.6 (the normative criterion).
|
|
31
|
+
|
|
32
|
+
Full rationale and worked examples: [the reference body of this rule](work-item-definition-of-ready-reference.mdc).
|
|
@@ -224,6 +224,30 @@ The register feeds three consumers: the `## Source Requirement` section on
|
|
|
224
224
|
every created ticket (Phases 3–5), the dry-run report (above), and the
|
|
225
225
|
requirement tokens in the PRD back-link (Phase 7).
|
|
226
226
|
|
|
227
|
+
### Phase 1.45: Requirement Quality Gates (prd-definition-of-ready)
|
|
228
|
+
|
|
229
|
+
Validate every Phase 1.4 register entry against the `prd-definition-of-ready` rule before
|
|
230
|
+
planning proceeds. Per atom:
|
|
231
|
+
|
|
232
|
+
- **Singular** — one behavior per entry. An entry welding multiple shall/when clauses together is
|
|
233
|
+
split in the register (R4 → R4a/R4b) when the split is mechanical and meaning-preserving; when
|
|
234
|
+
the split would change meaning, it is a product question, not a repair.
|
|
235
|
+
- **Unambiguous** — FAIL on the vagueness lexicon ("as appropriate", "user-friendly", "fast",
|
|
236
|
+
"handle gracefully", "etc.", "and/or", unbounded "optimize"/"support"): phrasing no test can
|
|
237
|
+
check. The full lexicon lives in the rule's reference body.
|
|
238
|
+
- **Verifiable** — a fit criterion (the measurable test of satisfaction) is present or
|
|
239
|
+
mechanically derivable from the text; a requirement no test could check is not admitted as a
|
|
240
|
+
requirement.
|
|
241
|
+
- **Pattern shape (SHOULD)** — an EARS pattern (ubiquitous / When / While / If-then / Where) or an
|
|
242
|
+
equivalent single-behavior sentence; conforming shapes decompose into Gherkin mechanically.
|
|
243
|
+
|
|
244
|
+
Failures here are **requirement-level product clarifications**, not internal errors: report each in
|
|
245
|
+
the dry-run report as a `product-clarity` item quoting the atom verbatim, naming the defect, and
|
|
246
|
+
offering 1–3 candidate rewrites (an EARS-shaped rewrite is the default recommendation). In intake
|
|
247
|
+
flows these route to the PRD's `blocked` role with comments, exactly like ticket-validator
|
|
248
|
+
failures. Mechanical splits and derived fit criteria are repaired in-register and recorded in the
|
|
249
|
+
report — never silently.
|
|
250
|
+
|
|
227
251
|
### Phase 1.5: Extract Source Artifacts
|
|
228
252
|
|
|
229
253
|
PRDs typically reference external design, UX, and data artifacts (Figma files, Lovable prototypes, Loom walkthroughs, screenshots, example payloads, peer Confluence pages). These MUST be preserved onto the resulting tickets — otherwise developers picking up a ticket lose the source of truth. This is the failure mode this step exists to prevent.
|
|
@@ -99,6 +99,8 @@ outcome: created | reused
|
|
|
99
99
|
|
|
100
100
|
## Rules
|
|
101
101
|
|
|
102
|
+
- The PRD body's requirements MUST conform to `prd-definition-of-ready`: identified atoms (`R1`, `R2`, …), one behavior each in an EARS-pattern shape, each with a measurable fit criterion, plus the non-functional checklist. This governs factory-authored bodies; human-authored PRDs are validated at intake instead (`*-to-tracker` Phase 1.45).
|
|
103
|
+
|
|
102
104
|
- All access via `lisa-atlassian-access`; never call Atlassian directly.
|
|
103
105
|
- State is the parent page, not a label — never attempt Confluence label writes (they 401 on scoped
|
|
104
106
|
tokens; see `config-resolution`).
|
|
@@ -211,6 +211,30 @@ The register feeds three consumers: the `## Source Requirement` section on
|
|
|
211
211
|
every created ticket (Phases 3–5), the dry-run report (above), and the
|
|
212
212
|
requirement tokens in the PRD back-link (Phase 7).
|
|
213
213
|
|
|
214
|
+
### Phase 1.45: Requirement Quality Gates (prd-definition-of-ready)
|
|
215
|
+
|
|
216
|
+
Validate every Phase 1.4 register entry against the `prd-definition-of-ready` rule before
|
|
217
|
+
planning proceeds. Per atom:
|
|
218
|
+
|
|
219
|
+
- **Singular** — one behavior per entry. An entry welding multiple shall/when clauses together is
|
|
220
|
+
split in the register (R4 → R4a/R4b) when the split is mechanical and meaning-preserving; when
|
|
221
|
+
the split would change meaning, it is a product question, not a repair.
|
|
222
|
+
- **Unambiguous** — FAIL on the vagueness lexicon ("as appropriate", "user-friendly", "fast",
|
|
223
|
+
"handle gracefully", "etc.", "and/or", unbounded "optimize"/"support"): phrasing no test can
|
|
224
|
+
check. The full lexicon lives in the rule's reference body.
|
|
225
|
+
- **Verifiable** — a fit criterion (the measurable test of satisfaction) is present or
|
|
226
|
+
mechanically derivable from the text; a requirement no test could check is not admitted as a
|
|
227
|
+
requirement.
|
|
228
|
+
- **Pattern shape (SHOULD)** — an EARS pattern (ubiquitous / When / While / If-then / Where) or an
|
|
229
|
+
equivalent single-behavior sentence; conforming shapes decompose into Gherkin mechanically.
|
|
230
|
+
|
|
231
|
+
Failures here are **requirement-level product clarifications**, not internal errors: report each in
|
|
232
|
+
the dry-run report as a `product-clarity` item quoting the atom verbatim, naming the defect, and
|
|
233
|
+
offering 1–3 candidate rewrites (an EARS-shaped rewrite is the default recommendation). In intake
|
|
234
|
+
flows these route to the PRD's `blocked` role with comments, exactly like ticket-validator
|
|
235
|
+
failures. Mechanical splits and derived fit criteria are repaired in-register and recorded in the
|
|
236
|
+
report — never silently.
|
|
237
|
+
|
|
214
238
|
### Phase 1.5: Extract Source Artifacts
|
|
215
239
|
|
|
216
240
|
PRDs typically reference external design, UX, and data artifacts (Figma files, Lovable prototypes, Loom walkthroughs, screenshots, example payloads, peer Notion / Confluence / Linear pages). These MUST be preserved onto the resulting tickets — otherwise developers picking up a ticket lose the source of truth. This is the failure mode this step exists to prevent.
|