@codyswann/lisa 2.180.0 → 2.181.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/all/copy-contents/gitignore +206 -0
- package/dist/strategies/copy-contents.d.ts.map +1 -1
- package/dist/strategies/copy-contents.js +27 -8
- package/dist/strategies/copy-contents.js.map +1 -1
- package/harper-fabric/copy-contents/gitignore +8 -0
- package/package.json +1 -1
- package/phaser/copy-contents/gitignore +5 -0
- package/phaser/package-lisa/package.lisa.json +8 -2
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/rules/eager/verification.md +6 -0
- package/plugins/lisa/rules/reference/verification.md +47 -0
- package/plugins/lisa/skills/codify-verification/SKILL.md +10 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/codify-verification/SKILL.md +10 -0
- 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/verification.md +6 -0
- package/plugins/lisa-copilot/rules/reference/verification.md +47 -0
- package/plugins/lisa-copilot/skills/codify-verification/SKILL.md +10 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/rules/verification-reference.mdc +47 -0
- package/plugins/lisa-cursor/rules/verification.mdc +6 -0
- package/plugins/lisa-cursor/skills/codify-verification/SKILL.md +10 -0
- 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/verification.md +6 -0
- package/plugins/src/base/rules/reference/verification.md +47 -0
- package/plugins/src/base/skills/codify-verification/SKILL.md +10 -0
- package/typescript/copy-overwrite/scripts/check-verification-coverage.mjs +159 -0
|
@@ -140,4 +140,51 @@ Evidence and summaries must explicitly distinguish `verified empirically` from `
|
|
|
140
140
|
|
|
141
141
|
---
|
|
142
142
|
|
|
143
|
+
## Making verification concrete (UAT)
|
|
144
|
+
|
|
145
|
+
Verification **is** UAT — one gate, not two. This section makes the single
|
|
146
|
+
verification process concrete so "an agent actually exercised the running
|
|
147
|
+
software against the acceptance criteria" is durable and re-checkable, not a
|
|
148
|
+
one-off claim. It builds on the **Per-Work-Unit Evidence Contract** above (the
|
|
149
|
+
`[EVIDENCE: name]` manifest), adding three concrete requirements:
|
|
150
|
+
|
|
151
|
+
**1. The codified proof re-runs in CI.** After local verification passes,
|
|
152
|
+
`codify-verification` encodes it where the project's e2e/Playwright tests live
|
|
153
|
+
(`tests/e2e/**`). That suite runs in CI (the existing e2e/Playwright job); for a
|
|
154
|
+
project type with verification **enforced**, it is a required check — so the proof
|
|
155
|
+
re-runs on every PR instead of being proven once by hand.
|
|
156
|
+
|
|
157
|
+
**2. Evidence is committed to the repo.** The named artifacts from the work
|
|
158
|
+
unit's evidence manifest are committed under `evidence/<ticket>/` (in addition to
|
|
159
|
+
any tracker attachment), so the proof lives with the code and is reviewable in the
|
|
160
|
+
PR:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
evidence/<ticket>/
|
|
164
|
+
verdict.json # acceptance criteria + per-criterion pass/fail + note,
|
|
165
|
+
# overall verdict, ticket, commit, lisaVersion, agent, stampedAt
|
|
166
|
+
state.json # observed runtime state asserted against
|
|
167
|
+
screenshots/*.png # downscaled, capped; key frames of the playthrough
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
`evidence/**` is ignored by lint/format/knip/coverage — it is proof, not source.
|
|
171
|
+
|
|
172
|
+
**3. Per-change verification is enforced.** Every `feat`/`fix` adds or extends a
|
|
173
|
+
verification (e2e) spec mapped to its acceptance criteria. CI's
|
|
174
|
+
`verification-coverage` check requires that delta. The sole exception is a
|
|
175
|
+
genuinely non-behavioral change carrying the **logged** `verification-exempt`
|
|
176
|
+
label — the check prints why it was exempted; it is never a silent skip.
|
|
177
|
+
|
|
178
|
+
**Playthrough driver.** `/lisa:product-walkthrough` is the shared driver (it walks
|
|
179
|
+
the live product through a real browser). Each project type supplies its own drive
|
|
180
|
+
mechanism: a Phaser game is driven through Playwright + an in-game verification
|
|
181
|
+
test bridge (seed RNG, read state, inject semantic input, step frames); API types
|
|
182
|
+
drive HTTP against a running service; etc.
|
|
183
|
+
|
|
184
|
+
**Rollout.** Enforcement is per-type and flag-gated (the `verify_enforced`
|
|
185
|
+
workflow input, default off) so a type without a drive mechanism is never wedged.
|
|
186
|
+
Phaser is the first enforced type.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
143
190
|
For the full verification lifecycle (classify, check tooling, plan, execute, loop), surfaces, escalation protocol, and proof artifact requirements, see the `verification-lifecycle` skill loaded by the `verification-specialist` agent.
|
|
@@ -9,12 +9,18 @@ alwaysApply: true
|
|
|
9
9
|
|
|
10
10
|
**Verification is using the resulting software the way a user would** — interacting with the UI, calling the API, running the CLI, observing behavior. Tests pass in isolation; verification proves the system works as a whole.
|
|
11
11
|
|
|
12
|
+
**Verification IS UAT** (User Acceptance Testing) — the same single gate, not two concepts. "Use the software as a user, against the acceptance criteria" *is* UAT. Everything below makes that one process concrete: a committed evidence artifact, a codified check that re-runs in CI, and a per-change requirement.
|
|
13
|
+
|
|
12
14
|
## Mandatory
|
|
13
15
|
|
|
14
16
|
- **Never claim success without runtime evidence.** "The code looks correct" is not evidence.
|
|
15
17
|
- **If all you did was run tests, typecheck, and lint — you have NOT verified.**
|
|
16
18
|
- **Before starting implementation, state your verification plan** — how you will USE the resulting software to prove it works. A plan that only lists `test`/`typecheck`/`lint` commands is not a plan. Do not begin until confirmed.
|
|
17
19
|
- **After verifying empirically, codify it as a regression test** via the `codify-verification` skill — Playwright for UI, integration test for API/DB/auth, benchmark for performance. Codification is mandatory for every verification type except PR/Documentation/Deploy and Investigate-Only spikes.
|
|
20
|
+
- **The codified proof re-runs in CI.** Codified runtime verification lives where the project's e2e/Playwright tests live (`tests/e2e/**`) and runs as a required CI check for types with verification enforced — so the proof re-runs on every PR, not once by hand.
|
|
21
|
+
- **Commit the evidence.** Write a durable artifact to `evidence/<ticket>/` — the acceptance criteria with per-criterion pass/fail + note, the observed state, screenshots/recording, and a `verdict.json`. The transient `.lisa/verification-status.json` is the session gate; `evidence/<ticket>/` is the committed proof.
|
|
22
|
+
- **Per-change verification is mandatory.** Every `feat`/`fix` adds or extends a verification (e2e) spec mapped to its acceptance criteria. The only exception is a genuinely non-behavioral change explicitly marked with the **logged** `verification-exempt` label — never a silent skip.
|
|
23
|
+
- **Drive the playthrough with `/lisa:product-walkthrough`** (it walks the live product through a real browser); each project type plugs in its own drive mechanism (e.g. a Phaser game is driven through Playwright + an in-game verification test bridge that seeds RNG, reads state, injects input, and steps frames).
|
|
18
24
|
- **Every PR must include reviewer replay steps** — the exact human steps to use the software and confirm the change works. Not test commands. If a reviewer can't reproduce from the PR description alone, the PR is incomplete.
|
|
19
25
|
- **Exhaust credential sources before deferring runtime verification** — check project e2e / Playwright config and fixtures first, then `.lisa.config.local.json` / environment variables, then documented ticket credentials such as `Sign-in Required`.
|
|
20
26
|
- **Never mark required runtime verification done on artifact-only evidence** — if credentials are genuinely unavailable after all sources are checked, post the blocker, transition the item to the configured blocked state, apply the configured `needs-human` / `human-review` label, and label the evidence as `artifact-only / verification deferred`.
|
|
@@ -88,6 +88,16 @@ For Playwright UI tests specifically:
|
|
|
88
88
|
- Capture a trace or screenshot only if the project's existing tests do; do not invent a new artifact convention
|
|
89
89
|
- Mirror the project's existing config for base URL, retries, and test isolation
|
|
90
90
|
|
|
91
|
+
**Concrete verification (UAT) contract.** Verification *is* UAT — codifying it is
|
|
92
|
+
how the playthrough becomes durable. For a runtime/behavioral `feat`/`fix`: place
|
|
93
|
+
the codified test where the project's e2e/Playwright tests live (`tests/e2e/**`)
|
|
94
|
+
so CI re-runs it, and commit the evidence artifact to `evidence/<ticket>/`
|
|
95
|
+
(`verdict.json` + state + screenshots). For a Phaser game, drive the canvas
|
|
96
|
+
through the in-game verification test bridge (seed RNG, read state, inject input,
|
|
97
|
+
step frames) with deterministic rendering. CI's `verification-coverage` check
|
|
98
|
+
requires a verification-spec delta on every behavioral change. See the
|
|
99
|
+
`reference/verification.md` "Making verification concrete (UAT)" section.
|
|
100
|
+
|
|
91
101
|
### 4. Run the test in isolation
|
|
92
102
|
|
|
93
103
|
Run only the new test, using whatever per-test invocation the project supports:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.181.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.181.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.181.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.181.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.181.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -4,12 +4,18 @@
|
|
|
4
4
|
|
|
5
5
|
**Verification is using the resulting software the way a user would** — interacting with the UI, calling the API, running the CLI, observing behavior. Tests pass in isolation; verification proves the system works as a whole.
|
|
6
6
|
|
|
7
|
+
**Verification IS UAT** (User Acceptance Testing) — the same single gate, not two concepts. "Use the software as a user, against the acceptance criteria" *is* UAT. Everything below makes that one process concrete: a committed evidence artifact, a codified check that re-runs in CI, and a per-change requirement.
|
|
8
|
+
|
|
7
9
|
## Mandatory
|
|
8
10
|
|
|
9
11
|
- **Never claim success without runtime evidence.** "The code looks correct" is not evidence.
|
|
10
12
|
- **If all you did was run tests, typecheck, and lint — you have NOT verified.**
|
|
11
13
|
- **Before starting implementation, state your verification plan** — how you will USE the resulting software to prove it works. A plan that only lists `test`/`typecheck`/`lint` commands is not a plan. Do not begin until confirmed.
|
|
12
14
|
- **After verifying empirically, codify it as a regression test** via the `codify-verification` skill — Playwright for UI, integration test for API/DB/auth, benchmark for performance. Codification is mandatory for every verification type except PR/Documentation/Deploy and Investigate-Only spikes.
|
|
15
|
+
- **The codified proof re-runs in CI.** Codified runtime verification lives where the project's e2e/Playwright tests live (`tests/e2e/**`) and runs as a required CI check for types with verification enforced — so the proof re-runs on every PR, not once by hand.
|
|
16
|
+
- **Commit the evidence.** Write a durable artifact to `evidence/<ticket>/` — the acceptance criteria with per-criterion pass/fail + note, the observed state, screenshots/recording, and a `verdict.json`. The transient `.lisa/verification-status.json` is the session gate; `evidence/<ticket>/` is the committed proof.
|
|
17
|
+
- **Per-change verification is mandatory.** Every `feat`/`fix` adds or extends a verification (e2e) spec mapped to its acceptance criteria. The only exception is a genuinely non-behavioral change explicitly marked with the **logged** `verification-exempt` label — never a silent skip.
|
|
18
|
+
- **Drive the playthrough with `/lisa:product-walkthrough`** (it walks the live product through a real browser); each project type plugs in its own drive mechanism (e.g. a Phaser game is driven through Playwright + an in-game verification test bridge that seeds RNG, reads state, injects input, and steps frames).
|
|
13
19
|
- **Every PR must include reviewer replay steps** — the exact human steps to use the software and confirm the change works. Not test commands. If a reviewer can't reproduce from the PR description alone, the PR is incomplete.
|
|
14
20
|
- **Exhaust credential sources before deferring runtime verification** — check project e2e / Playwright config and fixtures first, then `.lisa.config.local.json` / environment variables, then documented ticket credentials such as `Sign-in Required`.
|
|
15
21
|
- **Never mark required runtime verification done on artifact-only evidence** — if credentials are genuinely unavailable after all sources are checked, post the blocker, transition the item to the configured blocked state, apply the configured `needs-human` / `human-review` label, and label the evidence as `artifact-only / verification deferred`.
|
|
@@ -135,4 +135,51 @@ Evidence and summaries must explicitly distinguish `verified empirically` from `
|
|
|
135
135
|
|
|
136
136
|
---
|
|
137
137
|
|
|
138
|
+
## Making verification concrete (UAT)
|
|
139
|
+
|
|
140
|
+
Verification **is** UAT — one gate, not two. This section makes the single
|
|
141
|
+
verification process concrete so "an agent actually exercised the running
|
|
142
|
+
software against the acceptance criteria" is durable and re-checkable, not a
|
|
143
|
+
one-off claim. It builds on the **Per-Work-Unit Evidence Contract** above (the
|
|
144
|
+
`[EVIDENCE: name]` manifest), adding three concrete requirements:
|
|
145
|
+
|
|
146
|
+
**1. The codified proof re-runs in CI.** After local verification passes,
|
|
147
|
+
`codify-verification` encodes it where the project's e2e/Playwright tests live
|
|
148
|
+
(`tests/e2e/**`). That suite runs in CI (the existing e2e/Playwright job); for a
|
|
149
|
+
project type with verification **enforced**, it is a required check — so the proof
|
|
150
|
+
re-runs on every PR instead of being proven once by hand.
|
|
151
|
+
|
|
152
|
+
**2. Evidence is committed to the repo.** The named artifacts from the work
|
|
153
|
+
unit's evidence manifest are committed under `evidence/<ticket>/` (in addition to
|
|
154
|
+
any tracker attachment), so the proof lives with the code and is reviewable in the
|
|
155
|
+
PR:
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
evidence/<ticket>/
|
|
159
|
+
verdict.json # acceptance criteria + per-criterion pass/fail + note,
|
|
160
|
+
# overall verdict, ticket, commit, lisaVersion, agent, stampedAt
|
|
161
|
+
state.json # observed runtime state asserted against
|
|
162
|
+
screenshots/*.png # downscaled, capped; key frames of the playthrough
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
`evidence/**` is ignored by lint/format/knip/coverage — it is proof, not source.
|
|
166
|
+
|
|
167
|
+
**3. Per-change verification is enforced.** Every `feat`/`fix` adds or extends a
|
|
168
|
+
verification (e2e) spec mapped to its acceptance criteria. CI's
|
|
169
|
+
`verification-coverage` check requires that delta. The sole exception is a
|
|
170
|
+
genuinely non-behavioral change carrying the **logged** `verification-exempt`
|
|
171
|
+
label — the check prints why it was exempted; it is never a silent skip.
|
|
172
|
+
|
|
173
|
+
**Playthrough driver.** `/lisa:product-walkthrough` is the shared driver (it walks
|
|
174
|
+
the live product through a real browser). Each project type supplies its own drive
|
|
175
|
+
mechanism: a Phaser game is driven through Playwright + an in-game verification
|
|
176
|
+
test bridge (seed RNG, read state, inject semantic input, step frames); API types
|
|
177
|
+
drive HTTP against a running service; etc.
|
|
178
|
+
|
|
179
|
+
**Rollout.** Enforcement is per-type and flag-gated (the `verify_enforced`
|
|
180
|
+
workflow input, default off) so a type without a drive mechanism is never wedged.
|
|
181
|
+
Phaser is the first enforced type.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
138
185
|
For the full verification lifecycle (classify, check tooling, plan, execute, loop), surfaces, escalation protocol, and proof artifact requirements, see the `verification-lifecycle` skill loaded by the `verification-specialist` agent.
|
|
@@ -88,6 +88,16 @@ For Playwright UI tests specifically:
|
|
|
88
88
|
- Capture a trace or screenshot only if the project's existing tests do; do not invent a new artifact convention
|
|
89
89
|
- Mirror the project's existing config for base URL, retries, and test isolation
|
|
90
90
|
|
|
91
|
+
**Concrete verification (UAT) contract.** Verification *is* UAT — codifying it is
|
|
92
|
+
how the playthrough becomes durable. For a runtime/behavioral `feat`/`fix`: place
|
|
93
|
+
the codified test where the project's e2e/Playwright tests live (`tests/e2e/**`)
|
|
94
|
+
so CI re-runs it, and commit the evidence artifact to `evidence/<ticket>/`
|
|
95
|
+
(`verdict.json` + state + screenshots). For a Phaser game, drive the canvas
|
|
96
|
+
through the in-game verification test bridge (seed RNG, read state, inject input,
|
|
97
|
+
step frames) with deterministic rendering. CI's `verification-coverage` check
|
|
98
|
+
requires a verification-spec delta on every behavioral change. See the
|
|
99
|
+
`reference/verification.md` "Making verification concrete (UAT)" section.
|
|
100
|
+
|
|
91
101
|
### 4. Run the test in isolation
|
|
92
102
|
|
|
93
103
|
Run only the new test, using whatever per-test invocation the project supports:
|