@codyswann/lisa 2.222.3 → 2.223.1

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.
Files changed (179) hide show
  1. package/package.json +1 -1
  2. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  3. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  4. package/plugins/lisa/.codex-plugin/skills/lisa-github-add-journey/SKILL.md +9 -7
  5. package/plugins/lisa/.codex-plugin/skills/lisa-github-create/SKILL.md +2 -0
  6. package/plugins/lisa/.codex-plugin/skills/lisa-github-journey/SKILL.md +2 -0
  7. package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/SKILL.md +3 -1
  8. package/plugins/lisa/.codex-plugin/skills/lisa-github-write-issue/SKILL.md +3 -1
  9. package/plugins/lisa/.codex-plugin/skills/lisa-jira-add-journey/SKILL.md +8 -5
  10. package/plugins/lisa/.codex-plugin/skills/lisa-jira-create/SKILL.md +1 -0
  11. package/plugins/lisa/.codex-plugin/skills/lisa-jira-journey/SKILL.md +2 -0
  12. package/plugins/lisa/.codex-plugin/skills/lisa-jira-journey/scripts/generate-templates.py +8 -2
  13. package/plugins/lisa/.codex-plugin/skills/lisa-jira-journey/scripts/parse-plan.py +9 -3
  14. package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/SKILL.md +3 -1
  15. package/plugins/lisa/.codex-plugin/skills/lisa-jira-write-ticket/SKILL.md +3 -1
  16. package/plugins/lisa/.codex-plugin/skills/lisa-linear-add-journey/SKILL.md +7 -6
  17. package/plugins/lisa/.codex-plugin/skills/lisa-linear-create/SKILL.md +2 -0
  18. package/plugins/lisa/.codex-plugin/skills/lisa-linear-journey/SKILL.md +2 -0
  19. package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/SKILL.md +3 -1
  20. package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/SKILL.md +3 -1
  21. package/plugins/lisa/.codex-plugin/skills/lisa-tracker-add-journey/SKILL.md +2 -1
  22. package/plugins/lisa/.codex-plugin/skills/lisa-tracker-evidence/SKILL.md +1 -0
  23. package/plugins/lisa/.codex-plugin/skills/lisa-verification-lifecycle/SKILL.md +2 -0
  24. package/plugins/lisa/rules/eager/verification.md +1 -1
  25. package/plugins/lisa/rules/reference/verification.md +12 -0
  26. package/plugins/lisa/skills/lisa-github-add-journey/SKILL.md +9 -7
  27. package/plugins/lisa/skills/lisa-github-create/SKILL.md +2 -0
  28. package/plugins/lisa/skills/lisa-github-journey/SKILL.md +2 -0
  29. package/plugins/lisa/skills/lisa-github-validate-issue/SKILL.md +3 -1
  30. package/plugins/lisa/skills/lisa-github-write-issue/SKILL.md +3 -1
  31. package/plugins/lisa/skills/lisa-jira-add-journey/SKILL.md +8 -5
  32. package/plugins/lisa/skills/lisa-jira-create/SKILL.md +1 -0
  33. package/plugins/lisa/skills/lisa-jira-journey/SKILL.md +2 -0
  34. package/plugins/lisa/skills/lisa-jira-journey/scripts/generate-templates.py +8 -2
  35. package/plugins/lisa/skills/lisa-jira-journey/scripts/parse-plan.py +9 -3
  36. package/plugins/lisa/skills/lisa-jira-validate-ticket/SKILL.md +3 -1
  37. package/plugins/lisa/skills/lisa-jira-write-ticket/SKILL.md +3 -1
  38. package/plugins/lisa/skills/lisa-linear-add-journey/SKILL.md +7 -6
  39. package/plugins/lisa/skills/lisa-linear-create/SKILL.md +2 -0
  40. package/plugins/lisa/skills/lisa-linear-journey/SKILL.md +2 -0
  41. package/plugins/lisa/skills/lisa-linear-validate-issue/SKILL.md +3 -1
  42. package/plugins/lisa/skills/lisa-linear-write-issue/SKILL.md +3 -1
  43. package/plugins/lisa/skills/lisa-tracker-add-journey/SKILL.md +2 -1
  44. package/plugins/lisa/skills/lisa-tracker-evidence/SKILL.md +1 -0
  45. package/plugins/lisa/skills/lisa-verification-lifecycle/SKILL.md +2 -0
  46. package/plugins/lisa-agy/plugin.json +1 -1
  47. package/plugins/lisa-agy/skills/lisa-github-add-journey/SKILL.md +9 -7
  48. package/plugins/lisa-agy/skills/lisa-github-create/SKILL.md +2 -0
  49. package/plugins/lisa-agy/skills/lisa-github-journey/SKILL.md +2 -0
  50. package/plugins/lisa-agy/skills/lisa-github-validate-issue/SKILL.md +3 -1
  51. package/plugins/lisa-agy/skills/lisa-github-write-issue/SKILL.md +3 -1
  52. package/plugins/lisa-agy/skills/lisa-jira-add-journey/SKILL.md +8 -5
  53. package/plugins/lisa-agy/skills/lisa-jira-create/SKILL.md +1 -0
  54. package/plugins/lisa-agy/skills/lisa-jira-journey/SKILL.md +2 -0
  55. package/plugins/lisa-agy/skills/lisa-jira-journey/scripts/generate-templates.py +8 -2
  56. package/plugins/lisa-agy/skills/lisa-jira-journey/scripts/parse-plan.py +9 -3
  57. package/plugins/lisa-agy/skills/lisa-jira-validate-ticket/SKILL.md +3 -1
  58. package/plugins/lisa-agy/skills/lisa-jira-write-ticket/SKILL.md +3 -1
  59. package/plugins/lisa-agy/skills/lisa-linear-add-journey/SKILL.md +7 -6
  60. package/plugins/lisa-agy/skills/lisa-linear-create/SKILL.md +2 -0
  61. package/plugins/lisa-agy/skills/lisa-linear-journey/SKILL.md +2 -0
  62. package/plugins/lisa-agy/skills/lisa-linear-validate-issue/SKILL.md +3 -1
  63. package/plugins/lisa-agy/skills/lisa-linear-write-issue/SKILL.md +3 -1
  64. package/plugins/lisa-agy/skills/lisa-tracker-add-journey/SKILL.md +2 -1
  65. package/plugins/lisa-agy/skills/lisa-tracker-evidence/SKILL.md +1 -0
  66. package/plugins/lisa-agy/skills/lisa-verification-lifecycle/SKILL.md +2 -0
  67. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  69. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  70. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-copilot/rules/eager/verification.md +1 -1
  74. package/plugins/lisa-copilot/rules/reference/verification.md +12 -0
  75. package/plugins/lisa-copilot/skills/lisa-github-add-journey/SKILL.md +9 -7
  76. package/plugins/lisa-copilot/skills/lisa-github-create/SKILL.md +2 -0
  77. package/plugins/lisa-copilot/skills/lisa-github-journey/SKILL.md +2 -0
  78. package/plugins/lisa-copilot/skills/lisa-github-validate-issue/SKILL.md +3 -1
  79. package/plugins/lisa-copilot/skills/lisa-github-write-issue/SKILL.md +3 -1
  80. package/plugins/lisa-copilot/skills/lisa-jira-add-journey/SKILL.md +8 -5
  81. package/plugins/lisa-copilot/skills/lisa-jira-create/SKILL.md +1 -0
  82. package/plugins/lisa-copilot/skills/lisa-jira-journey/SKILL.md +2 -0
  83. package/plugins/lisa-copilot/skills/lisa-jira-journey/scripts/generate-templates.py +8 -2
  84. package/plugins/lisa-copilot/skills/lisa-jira-journey/scripts/parse-plan.py +9 -3
  85. package/plugins/lisa-copilot/skills/lisa-jira-validate-ticket/SKILL.md +3 -1
  86. package/plugins/lisa-copilot/skills/lisa-jira-write-ticket/SKILL.md +3 -1
  87. package/plugins/lisa-copilot/skills/lisa-linear-add-journey/SKILL.md +7 -6
  88. package/plugins/lisa-copilot/skills/lisa-linear-create/SKILL.md +2 -0
  89. package/plugins/lisa-copilot/skills/lisa-linear-journey/SKILL.md +2 -0
  90. package/plugins/lisa-copilot/skills/lisa-linear-validate-issue/SKILL.md +3 -1
  91. package/plugins/lisa-copilot/skills/lisa-linear-write-issue/SKILL.md +3 -1
  92. package/plugins/lisa-copilot/skills/lisa-tracker-add-journey/SKILL.md +2 -1
  93. package/plugins/lisa-copilot/skills/lisa-tracker-evidence/SKILL.md +1 -0
  94. package/plugins/lisa-copilot/skills/lisa-verification-lifecycle/SKILL.md +2 -0
  95. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-cursor/rules/verification-reference.mdc +12 -0
  97. package/plugins/lisa-cursor/rules/verification.mdc +1 -1
  98. package/plugins/lisa-cursor/skills/lisa-github-add-journey/SKILL.md +9 -7
  99. package/plugins/lisa-cursor/skills/lisa-github-create/SKILL.md +2 -0
  100. package/plugins/lisa-cursor/skills/lisa-github-journey/SKILL.md +2 -0
  101. package/plugins/lisa-cursor/skills/lisa-github-validate-issue/SKILL.md +3 -1
  102. package/plugins/lisa-cursor/skills/lisa-github-write-issue/SKILL.md +3 -1
  103. package/plugins/lisa-cursor/skills/lisa-jira-add-journey/SKILL.md +8 -5
  104. package/plugins/lisa-cursor/skills/lisa-jira-create/SKILL.md +1 -0
  105. package/plugins/lisa-cursor/skills/lisa-jira-journey/SKILL.md +2 -0
  106. package/plugins/lisa-cursor/skills/lisa-jira-journey/scripts/generate-templates.py +8 -2
  107. package/plugins/lisa-cursor/skills/lisa-jira-journey/scripts/parse-plan.py +9 -3
  108. package/plugins/lisa-cursor/skills/lisa-jira-validate-ticket/SKILL.md +3 -1
  109. package/plugins/lisa-cursor/skills/lisa-jira-write-ticket/SKILL.md +3 -1
  110. package/plugins/lisa-cursor/skills/lisa-linear-add-journey/SKILL.md +7 -6
  111. package/plugins/lisa-cursor/skills/lisa-linear-create/SKILL.md +2 -0
  112. package/plugins/lisa-cursor/skills/lisa-linear-journey/SKILL.md +2 -0
  113. package/plugins/lisa-cursor/skills/lisa-linear-validate-issue/SKILL.md +3 -1
  114. package/plugins/lisa-cursor/skills/lisa-linear-write-issue/SKILL.md +3 -1
  115. package/plugins/lisa-cursor/skills/lisa-tracker-add-journey/SKILL.md +2 -1
  116. package/plugins/lisa-cursor/skills/lisa-tracker-evidence/SKILL.md +1 -0
  117. package/plugins/lisa-cursor/skills/lisa-verification-lifecycle/SKILL.md +2 -0
  118. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  119. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  120. package/plugins/lisa-expo-agy/plugin.json +1 -1
  121. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  122. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  123. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  124. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  125. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  126. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  127. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  128. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  129. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  130. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  131. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  132. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  133. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  134. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  135. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  136. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  137. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  138. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  139. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  140. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  141. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  142. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  143. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  144. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  145. package/plugins/lisa-rails-agy/plugin.json +1 -1
  146. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  147. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  148. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  149. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  150. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  151. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  152. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  153. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  154. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  155. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  156. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  157. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  158. package/plugins/src/base/rules/eager/verification.md +1 -1
  159. package/plugins/src/base/rules/reference/verification.md +12 -0
  160. package/plugins/src/base/skills/lisa-github-add-journey/SKILL.md +9 -7
  161. package/plugins/src/base/skills/lisa-github-create/SKILL.md +2 -0
  162. package/plugins/src/base/skills/lisa-github-journey/SKILL.md +2 -0
  163. package/plugins/src/base/skills/lisa-github-validate-issue/SKILL.md +3 -1
  164. package/plugins/src/base/skills/lisa-github-write-issue/SKILL.md +3 -1
  165. package/plugins/src/base/skills/lisa-jira-add-journey/SKILL.md +8 -5
  166. package/plugins/src/base/skills/lisa-jira-create/SKILL.md +1 -0
  167. package/plugins/src/base/skills/lisa-jira-journey/SKILL.md +2 -0
  168. package/plugins/src/base/skills/lisa-jira-journey/scripts/generate-templates.py +8 -2
  169. package/plugins/src/base/skills/lisa-jira-journey/scripts/parse-plan.py +9 -3
  170. package/plugins/src/base/skills/lisa-jira-validate-ticket/SKILL.md +3 -1
  171. package/plugins/src/base/skills/lisa-jira-write-ticket/SKILL.md +3 -1
  172. package/plugins/src/base/skills/lisa-linear-add-journey/SKILL.md +7 -6
  173. package/plugins/src/base/skills/lisa-linear-create/SKILL.md +2 -0
  174. package/plugins/src/base/skills/lisa-linear-journey/SKILL.md +2 -0
  175. package/plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md +3 -1
  176. package/plugins/src/base/skills/lisa-linear-write-issue/SKILL.md +3 -1
  177. package/plugins/src/base/skills/lisa-tracker-add-journey/SKILL.md +2 -1
  178. package/plugins/src/base/skills/lisa-tracker-evidence/SKILL.md +1 -0
  179. package/plugins/src/base/skills/lisa-verification-lifecycle/SKILL.md +2 -0
@@ -74,6 +74,8 @@ At each typed `[EVIDENCE: <artifact-type>: <name>]` marker, capture an artifact
74
74
 
75
75
  A prose claim ("the error state rendered gracefully") satisfies no marker. Legacy untyped markers: infer the type from the step's action, capture accordingly, and note the inference. Write each artifact to a numbered file:
76
76
 
77
+ Treat only exact `[EVIDENCE: ...]` markers (plus the legacy local `[SCREENSHOT: ...]` form) as capture instructions. `[EVIDENCE-REF: <work-item-ref> | <artifact-type>: <kebab-case-name>]` points to another work item's artifact: preserve it as explanatory text, but do not capture it, assign it a sequence number, include it in duplicate-name checks, or count it as a local manifest entry. If a runtime-changing leaf has references but no local claiming marker, stop because S14 is unsatisfied.
78
+
77
79
  #### Evidence Naming Convention
78
80
 
79
81
  `{NN}-{evidence-name}.{ext}`
@@ -211,7 +211,9 @@ Each marker must satisfy ALL of:
211
211
 
212
212
  **A marker names an artifact, not an assertion.** An untyped marker (`[EVIDENCE: load-failure-handled-gracefully]`) is an assertion label with nothing to capture and must FAIL, with a remediation that shows the typed transformation (e.g. → `[EVIDENCE: screenshot: load-failure-error-state]`, `[EVIDENCE: perf-trace: pipeline-load-tti]`).
213
213
 
214
- FAIL when the Validation Journey is present but declares zero markers, when any marker is untyped or uses a type outside the taxonomy, or when any name is empty, duplicated, or not kebab-case. A behavior-changing work unit SHOULD declare both a success marker and an error/edge marker; a journey with only one marker passes but the remediation should recommend adding the error/edge case.
214
+ FAIL when the Validation Journey is present but declares zero binding `[EVIDENCE: ...]` markers, when any binding marker is untyped or uses a type outside the taxonomy, or when any binding name is empty, duplicated, or not kebab-case. A behavior-changing work unit SHOULD declare both a success marker and an error/edge marker; a journey with only one binding marker passes but the remediation should recommend adding the error/edge case.
215
+
216
+ Parse claiming markers by the exact `[EVIDENCE:` prefix. A cross-work-item pointer in the exact form `[EVIDENCE-REF: <work-item-ref> | <artifact-type>: <kebab-case-name>]` is non-claiming: exclude it from the manifest, S14's minimum-marker count, local marker type/name validation, and duplicate-name checks. Independently validate every `EVIDENCE-REF`: the native work-item reference must be non-empty and unambiguous, the artifact type must use the fixed taxonomy, and the name must be non-empty kebab-case. A malformed reference FAILs S14 as an invalid pointer but never becomes a local evidence obligation. A valid reference may point to a sibling's artifact, but it never satisfies S14 for this item. Therefore a runtime-changing leaf whose journey contains only `EVIDENCE-REF` entries FAILs S14. Quoting or code-formatting another item's `[EVIDENCE: ...]` marker does not make it a reference; writers must convert it to `EVIDENCE-REF`.
215
217
 
216
218
  This gate depends on S11. It is `N/A` for containers — a **Project** (the Epic equivalent), or any item with open child work (coordination containers, not work units) — and for leaf units with `runtime_behavior_change = false` (doc-only / config-only / type-only). If S11 fails because the Validation Journey is absent, S14 also FAILs (there is no manifest to bind) with remediation pointing back to `lisa-linear-add-journey`.
217
219
 
@@ -119,7 +119,9 @@ Linear descriptions are markdown (NOT Jira wiki markup — no `h2.` headings, us
119
119
 
120
120
  ## Validation Journey
121
121
  [Delegate to /linear-add-journey if the item changes runtime behavior.
122
- Skip only for doc-only, config-only, or type-only items.]
122
+ Skip only for doc-only, config-only, or type-only items. Cross-work-item
123
+ evidence pointers use `[EVIDENCE-REF: <work-item-ref> | <artifact-type>: <kebab-case-name>]`;
124
+ they never replace this item's local S14 marker.]
123
125
  ```
124
126
 
125
127
  Rules:
@@ -24,4 +24,5 @@ See the `config-resolution` rule for configuration and dispatch table.
24
24
  ## Rules
25
25
 
26
26
  - The Validation Journey content format is identical across all vendors (markdown sections with typed `[EVIDENCE: <artifact-type>: <name>]` markers per the `verification` rule taxonomy). The only difference is how the section is appended — JIRA via `editJiraIssue` (Jira wiki markup), GitHub via `gh issue edit --body-file` (markdown), Linear via `save_issue` (markdown).
27
- - If the ticket already has a Validation Journey, the vendor skill reports it and stops. This shim does not retry.
27
+ - A cross-work-item pointer uses `[EVIDENCE-REF: <work-item-ref> | <artifact-type>: <kebab-case-name>]`. It is non-claiming and never replaces a runtime-changing leaf's local S14 marker.
28
+ - If the ticket already has a Validation Journey with at least one local typed `[EVIDENCE: ...]` marker, the vendor skill reports it and stops. A reference-only journey is incomplete; the vendor skill preserves its prose and appends the missing local evidence. This shim does not retry.
@@ -28,6 +28,7 @@ See the `config-resolution` rule for configuration and dispatch table.
28
28
  - Never post evidence to a different ticket than the one named — `$ARGUMENTS` is the source of truth.
29
29
  - Never invent a verify-specific usage footer. Evidence artifact usage must flow through `lisa-usage-accounting`, preserve the canonical `## Lisa Usage` section, and surface `source: unavailable` explicitly when the runtime cannot provide trustworthy numbers.
30
30
  - **Evidence-manifest gate (leaf work units).** Before dispatching to a vendor skill that transitions the ticket, confirm `EVIDENCE_DIR` contains a non-empty artifact **of the declared type** for every typed `[EVIDENCE: <artifact-type>: <name>]` marker declared in the ticket's Validation Journey — a `screenshot` marker needs an actual image, an `http-transcript` marker needs the request + response text, a `perf-trace` marker needs measured numbers; a prose claim satisfies nothing. If any declared marker has no captured artifact, an empty one, or one whose content/extension does not match its declared type, stop and report the offending markers by name instead of posting — a leaf work unit (Bug / Task / Sub-task / Improvement) may not advance to its review/Done state with an unsatisfied manifest (see the "Per-Work-Unit Evidence Contract" in the `verification` rule). Epics / Stories / Spikes, and leaf units without a Validation Journey, are exempt.
31
+ - **Evidence references are not manifest entries.** Extract obligations using the exact `[EVIDENCE:` prefix (and the legacy local `[SCREENSHOT:` form). Exclude every exact `[EVIDENCE-REF: <work-item-ref> | <artifact-type>: <kebab-case-name>]` from artifact lookup, missing-artifact reporting, and duplicate-name checks: it belongs to another work item and cannot satisfy this item's S14 gate. A runtime-changing leaf with references but no local claiming marker must be rejected before dispatch.
31
32
 
32
33
  ## UI Evidence Checklist (when work is UI-visible)
33
34
 
@@ -253,6 +253,7 @@ Agents must follow this sequence unless explicitly instructed otherwise:
253
253
  4. **If verification blocked** (missing tools, services, etc.): Mark as blocked, not complete
254
254
  5. **Must not be dependent on CI/CD** if necessary, you may use local deploy methods found in the project manifest, but the verification methods must be listed in the pull request and therefore cannot be dependent on CI/CD completing
255
255
  6. **Evidence manifest satisfied (leaf work units)**: For a leaf work unit (Bug / Task / Sub-task / Improvement) whose ticket carries a Validation Journey, do not mark the ticket complete or transition it out of in-progress until every typed `[EVIDENCE: <artifact-type>: <name>]` marker declared on the ticket has a corresponding captured, non-empty artifact **of the declared type** attached to the ticket (an image for `screenshot`, request + response for `http-transcript`, measured output for `perf-trace`, …). A missing, empty, or wrong-type artifact for any declared marker blocks completion exactly like a failed verification — fix and re-capture, or escalate; never close with an unsatisfied manifest. Epics / Stories / Spikes are exempt (coordination containers, not work units).
256
+ - Extract local obligations using the exact `[EVIDENCE:` prefix (plus legacy local `[SCREENSHOT:`). An exact `[EVIDENCE-REF: <work-item-ref> | <artifact-type>: <kebab-case-name>]` is a non-claiming pointer to another work item: never capture it, match it to a local artifact, include it in duplicates, or count it toward S14. A reference-only runtime-changing leaf remains incomplete.
256
257
  7. **No artifact-only completion for required runtime verification**: If empirical verification is required and cannot run because credentials are missing, do not mark the item done on artifact-only evidence. Exhaust the credential lookup order first; if still blocked, post the blocker comment, move the item to the configured blocked state, and apply the configured `needs-human` / `human-review` label.
257
258
 
258
259
  ---
@@ -360,6 +361,7 @@ A task is done only when:
360
361
  - Proof artifacts are captured
361
362
  - Every passing empirical verification is codified as a regression test (or has an explicit, documented skip reason from the allowed set)
362
363
  - For a leaf work unit, every typed `[EVIDENCE: <artifact-type>: <name>]` marker declared in its Validation Journey has a captured, non-empty artifact of the declared type attached to the ticket (the evidence manifest is fully satisfied)
364
+ - Cross-work-item `EVIDENCE-REF` pointers were excluded from the local manifest and did not satisfy S14 or completion; a runtime-changing leaf has at least one local claiming marker
363
365
  - Spec conformance verdict is `CONFORMS` (not `PARTIAL`, not `DIVERGES`)
364
366
  - Verification level is declared
365
367
  - Risks and gaps are documented