@codyswann/lisa 3.37.0 → 3.38.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.
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +1 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +5 -1
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/expo/create-only/.github/workflows/playwright-e2e.yml +151 -0
- 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-agy/plugin.json +1 -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-cursor/.claude-plugin/plugin.json +1 -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/typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs +27 -3
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Seeded by Lisa on first setup — this file is YOURS.
|
|
2
|
+
# Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
|
|
3
|
+
|
|
4
|
+
name: 🎭 Playwright Web E2E
|
|
5
|
+
|
|
6
|
+
# Standalone Playwright suite — the web counterpart to maestro-e2e.yml.
|
|
7
|
+
#
|
|
8
|
+
# WHY THIS EXISTS. Playwright used to ride inside ci.yml as the
|
|
9
|
+
# `playwright_e2e` job of Lisa's reusable quality.yml. That coupled the
|
|
10
|
+
# heaviest and flakiest suite in the project to the lint/typecheck/unit gate:
|
|
11
|
+
# one workflow, one concurrency group, one cadence, and a red Playwright shard
|
|
12
|
+
# blocking a pull request that only changed a type. Splitting it out gives it
|
|
13
|
+
# its own cadence, its own concurrency, one target environment, and a
|
|
14
|
+
# dedicated red/green signal a nightly gate can read.
|
|
15
|
+
#
|
|
16
|
+
# ── BEFORE THIS FILE DOES ANYTHING, DECLARE THE GATE ───────────────────────
|
|
17
|
+
#
|
|
18
|
+
# This workflow resolves the `e2e-browser` gate at the `continuous:development`
|
|
19
|
+
# moment. Until `.lisa.config.json` declares it, quality.yml runs its BUILT-IN
|
|
20
|
+
# Playwright path here (sharded `npx playwright test`), which is a reasonable
|
|
21
|
+
# default but is not a decision anybody recorded. To make it one:
|
|
22
|
+
#
|
|
23
|
+
# {
|
|
24
|
+
# "gates": {
|
|
25
|
+
# "runner": "bun run",
|
|
26
|
+
# "e2e-browser": { "continuous:development": "required" }
|
|
27
|
+
# }
|
|
28
|
+
# }
|
|
29
|
+
#
|
|
30
|
+
# `runner` is optional and defaults to `<package_manager> run`. The gate's task
|
|
31
|
+
# is `test:e2e`, so the project needs that script in package.json — Lisa
|
|
32
|
+
# resolves the PROPERTY ("browser journeys pass end to end"), never the tool.
|
|
33
|
+
#
|
|
34
|
+
# TWO THINGS THAT ARE NOT INTERCHANGEABLE:
|
|
35
|
+
#
|
|
36
|
+
# * OMITTING the declaration and declaring it `off` are different. `off` is a
|
|
37
|
+
# recorded decision and drops the required context. Omitting it leaves
|
|
38
|
+
# Lisa's built-in path running. Neither is "no gate".
|
|
39
|
+
# * DECLARING IT WITH NO SUITE is refused, not greened. quality.yml fails the
|
|
40
|
+
# job when `e2e-browser` resolves and there is no playwright.config.ts,
|
|
41
|
+
# because a browser gate over an absent suite reports green having run
|
|
42
|
+
# nothing and is indistinguishable on the pull-request page from one that
|
|
43
|
+
# ran. If this project has no Playwright specs, DELETE THIS FILE rather
|
|
44
|
+
# than declaring the gate against it.
|
|
45
|
+
#
|
|
46
|
+
# ── SHARDING ───────────────────────────────────────────────────────────────
|
|
47
|
+
#
|
|
48
|
+
# `playwright_shards` splits Lisa's BUILT-IN invocation across N runners. It
|
|
49
|
+
# does not apply once `e2e-browser` resolves to a task: Lisa cannot append
|
|
50
|
+
# `--shard` to a command whose shape it does not know, and the `--` passthrough
|
|
51
|
+
# differs between npm, yarn and bun. A declared gate runs on one runner. Shard
|
|
52
|
+
# inside the project's own `test:e2e` script if the suite needs it.
|
|
53
|
+
|
|
54
|
+
on:
|
|
55
|
+
schedule:
|
|
56
|
+
# Nightly against the default branch. Offset from the Maestro nightly
|
|
57
|
+
# (maestro-e2e.yml, 09:00 UTC) so two heavy suites do not start together.
|
|
58
|
+
# The stagger is a COURTESY, not the mechanism — a run first waits for a
|
|
59
|
+
# hosted runner, and that wait has been measured in hours, far past any
|
|
60
|
+
# offset. `concurrency_group` below is what actually keeps them apart.
|
|
61
|
+
- cron: '0 7 * * *'
|
|
62
|
+
workflow_dispatch:
|
|
63
|
+
|
|
64
|
+
# Deliberately no `pull_request` trigger. This suite is too slow to gate a
|
|
65
|
+
# pull request, and adding one here would also collide with ci.yml: two
|
|
66
|
+
# workflows must not report the same check name, and the identity is the
|
|
67
|
+
# JOB name, not the workflow's. A reusable call reports as
|
|
68
|
+
# `<caller job name> / <callee job name>`, so the job below reports as
|
|
69
|
+
# `🎭 Playwright Web E2E / 🎭 Playwright E2E Tests`. Keep ci.yml's
|
|
70
|
+
# `skip_jobs` naming `playwright_e2e` so this workflow is the only place the
|
|
71
|
+
# suite runs.
|
|
72
|
+
|
|
73
|
+
permissions:
|
|
74
|
+
contents: read
|
|
75
|
+
|
|
76
|
+
# Keyed on the ENVIRONMENT, not the ref. Every run of this workflow hits the
|
|
77
|
+
# same backend no matter which branch dispatched it, so `${{ github.ref }}`
|
|
78
|
+
# would hand two branches two different groups over one database and one set of
|
|
79
|
+
# shared test users, and they would not exclude each other.
|
|
80
|
+
#
|
|
81
|
+
# CAVEAT — a displaced run reads as a flaky scheduler. GitHub keeps only ONE
|
|
82
|
+
# pending run per concurrency group: queue a third while one runs and one is
|
|
83
|
+
# pending and the PENDING one is cancelled rather than queued behind it. Not a
|
|
84
|
+
# safety problem (a dropped run tests nothing and stomps nothing), but a run
|
|
85
|
+
# that disappears without a red is worth recognising rather than re-diagnosing.
|
|
86
|
+
concurrency:
|
|
87
|
+
group: playwright-e2e-development
|
|
88
|
+
# Queue, never cancel. A suite that drives shared test accounts and mutates
|
|
89
|
+
# their server-side state leaves that state wrong when killed mid-run, and
|
|
90
|
+
# poisons the next run rather than just losing this one.
|
|
91
|
+
cancel-in-progress: false
|
|
92
|
+
|
|
93
|
+
jobs:
|
|
94
|
+
playwright:
|
|
95
|
+
name: 🎭 Playwright Web E2E
|
|
96
|
+
uses: CodySwannGT/lisa/.github/workflows/quality.yml@main
|
|
97
|
+
with:
|
|
98
|
+
node_version: '22.21.1'
|
|
99
|
+
package_manager: 'bun'
|
|
100
|
+
# The moment this workflow's cadence corresponds to. It is what makes
|
|
101
|
+
# the `.lisa.config.json` declaration above readable from here — a gate
|
|
102
|
+
# declared at `pull-request` is invisible at this moment, and vice
|
|
103
|
+
# versa, so a nightly suite and a per-change suite cannot be turned on
|
|
104
|
+
# by the same line of config by accident.
|
|
105
|
+
moment: 'continuous:development'
|
|
106
|
+
# Everything except `playwright_e2e`.
|
|
107
|
+
#
|
|
108
|
+
# THIS INVERSION IS A KNOWN-BAD SHAPE, carried because it is currently
|
|
109
|
+
# the only one that works. quality.yml gates most jobs on `skip_jobs`
|
|
110
|
+
# rather than on the moment, so a single-suite caller has to name the
|
|
111
|
+
# two dozen jobs it does NOT want. It is exact-token matched against
|
|
112
|
+
# `,{0},` — comma-delimited with NO SPACES, so `lint, lint_slow`
|
|
113
|
+
# silently skips nothing beyond `lint`.
|
|
114
|
+
#
|
|
115
|
+
# IT GOES STALE SILENTLY, and that is the cost. A job added to
|
|
116
|
+
# quality.yml is absent from this list and therefore RUNS here, on a
|
|
117
|
+
# nightly whose whole point is that it runs one suite. Measured while
|
|
118
|
+
# writing this file: the hand-maintained list in the first project to
|
|
119
|
+
# adopt this shape was already missing five keys that exist today
|
|
120
|
+
# (`bdd_coverage`, `state_classification`, `environment_reset`,
|
|
121
|
+
# `environment_reseed`, `skipped_required_checks`). Re-derive it from
|
|
122
|
+
# quality.yml when adding a suite, do not extend it from memory.
|
|
123
|
+
skip_jobs: 'bdd_coverage,build,dead_code,e2e_coverage,environment_reseed,environment_reset,floor_collisions,format,learnings_budget,license_compliance,lint,lint_slow,maestro_e2e,npm_security_scan,secret_scanning,sg_scan,skipped_required_checks,snyk,sonarcloud,state_classification,test:e2e,test:integration,test:mutation,test:unit,test_node_suites,threshold_ratchet,typecheck,work_item_traceability,zap_baseline'
|
|
124
|
+
# Cross-run mutex on whatever this suite shares with the OTHER suites
|
|
125
|
+
# that touch the same backend. Deliberately DISTINCT from this
|
|
126
|
+
# workflow's own top-level `concurrency` group above — a shared group
|
|
127
|
+
# between a parent run and the child run it is waiting on deadlocks.
|
|
128
|
+
# Join maestro-e2e.yml to the same group if the two suites share test
|
|
129
|
+
# accounts or fixtures.
|
|
130
|
+
concurrency_group: 'e2e-shared-development'
|
|
131
|
+
# Applies only while `e2e-browser` is undeclared — see the SHARDING note
|
|
132
|
+
# at the top of this file.
|
|
133
|
+
playwright_shards: 2
|
|
134
|
+
# Leave false unless the cache key has been checked against this
|
|
135
|
+
# project's layout. Lisa's key is a fingerprint of build inputs, and a
|
|
136
|
+
# key that misses the project's source directories freezes: `expo export`
|
|
137
|
+
# then serves stale transforms and every source change silently tests old
|
|
138
|
+
# code. A green suite over the previous commit is the worst failure this
|
|
139
|
+
# workflow has.
|
|
140
|
+
cache_build: false
|
|
141
|
+
# Runs before the web export, in the job that runs the suite. Bake the
|
|
142
|
+
# target environment in here — the export reads EXPO_PUBLIC_* from
|
|
143
|
+
# .env.local at BUILD time, so anything set after it is invisible to the
|
|
144
|
+
# running app.
|
|
145
|
+
#
|
|
146
|
+
# Use `printf '\n%s\n'` rather than `echo >>`: the committed .env.<mode>
|
|
147
|
+
# files do not end in a trailing newline, so a bare append concatenates
|
|
148
|
+
# onto the last variable's value — corrupting it AND silently dropping
|
|
149
|
+
# the line being added.
|
|
150
|
+
playwright_setup_command: |
|
|
151
|
+
cp .env.development .env.local
|
package/package.json
CHANGED
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
"ws": ">=8.21.0"
|
|
134
134
|
},
|
|
135
135
|
"name": "@codyswann/lisa",
|
|
136
|
-
"version": "3.
|
|
136
|
+
"version": "3.38.1",
|
|
137
137
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
138
138
|
"main": "dist/index.js",
|
|
139
139
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.38.1",
|
|
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": "3.
|
|
3
|
+
"version": "3.38.1",
|
|
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": "3.
|
|
3
|
+
"version": "3.38.1",
|
|
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": "3.
|
|
3
|
+
"version": "3.38.1",
|
|
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": "3.
|
|
3
|
+
"version": "3.38.1",
|
|
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"
|