@codyswann/lisa 3.54.0 โ 3.54.2
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-overwrite/scripts/lisa-gates.mjs +12 -1
- package/dist/cli/ui-ci-quality-jobs-compute.d.ts.map +1 -1
- package/dist/cli/ui-ci-quality-jobs-compute.js +0 -1
- package/dist/cli/ui-ci-quality-jobs-compute.js.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +4 -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 +9 -8
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/expo/create-only/.github/required-checks.json +1 -1
- package/expo/create-only/stryker.conf.json +5 -0
- package/nestjs/create-only/.github/required-checks.json +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-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-contents/.husky/pre-push +4 -1
- package/typescript/copy-overwrite/scripts/lisa-mutation.mjs +431 -20
- package/typescript/create-only/stryker.conf.json +5 -0
- package/ui/index.html +0 -13
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"๐ Quality Checks / ๐งช Run E2E Tests"
|
|
43
43
|
],
|
|
44
44
|
"ruleset_required": false,
|
|
45
|
-
"reason": "
|
|
45
|
+
"reason": "Inert since the `test_e2e` job was deleted from Lisa's quality callee โ the browser suite lives in `playwright-e2e.yml`, governed by the `e2e-browser` gate, and no job posts this context any more. The token stays in `skip_jobs` and stays declared here because a token with no declaration is reported as `undeclared_skip_token`. If your ruleset still requires \"๐ Quality Checks / ๐งช Run E2E Tests\", DE-REQUIRE IT: a required context that never reports is pending forever and blocks every open pull request."
|
|
46
46
|
},
|
|
47
47
|
"playwright_e2e": {
|
|
48
48
|
"suppressed_contexts": [
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
"coverageAnalysis": "perTest",
|
|
11
11
|
"ignoreStatic": true,
|
|
12
12
|
"incremental": true,
|
|
13
|
+
"_timeoutsComment": "Both budgets below are LIVENESS bounds: they exist to end a run that is wedged, not to assert how fast your machine is. Left unset, Stryker supplies 5000ms per mutant and a 5-minute dry run โ numbers nobody here chose, and on a machine slower than the one they were picked on they behave as performance assertions. Worse, they fail as a mutation SCORE, so a developer on smaller hardware is told their tests are weak when the truth is the run never finished. Stated explicitly so the values are a decision, not an inheritance.",
|
|
14
|
+
"_timeoutMSComment": "Per-mutant slack. Stryker's per-mutant budget is `netTime * timeoutFactor + timeoutMS`, so this is added ON TOP of each mutant's own measured runtime โ raising it gives a slow machine room without slowing a fast one, because a fast machine's mutants finish long before their own netTime elapses again. At 60000 a mutant is only killed by the clock when it runs a full minute beyond what the same test took in the dry run, which is an infinite loop rather than a busy laptop. A timed-out mutant is scored as KILLED, so a tight value here silently turns machine speed into mutation score. Absolute BY DESIGN, not by omission: Stryker's budget is `netTime * timeoutFactor + timeoutMS`, and the SCALING term already exists โ `timeoutFactor` (default 1.5) multiplies each mutant's own runtime as measured on the machine actually running it, so machine speed is adapted to before this constant is added. Stryker's own schema calls timeoutMS \"an absolute timeout deviation. Tweak this if you run Stryker on a busy machine and you need to wait longer to make sure that the code indeed entered an infinite loop.\" That is exactly the use here.",
|
|
15
|
+
"timeoutMS": 60000,
|
|
16
|
+
"_dryRunTimeoutMinutesComment": "Whole-suite liveness bound, set by dryRunTimeoutMinutes, for the single un-mutated run that measures every test before any mutant is generated. Longer than the TypeScript template's 20 because this stack is the slowest runner shipped here: jest, a React Native transform on every file, and a cold Babel cache on the first run of the day. Stryker's 5-minute default cannot survive that on modest hardware, and when it blows there is no score to report โ the gate simply dies. A genuinely hung dry run still fails, just later, and CI's own job timeout still caps it. Absolute BY NECESSITY: this bounds the run that PRODUCES the timing measurement, so there is nothing yet measured to scale it against. It cannot be made adaptive the way a per-mutant budget can. The claim it makes is deliberately weak โ not \"your dry run finishes in this long\" but \"a dry run still going at this point is wedged rather than slow\" โ which is what lets one number hold across hardware nobody here has seen. It fails only where a HEALTHY dry run genuinely exceeds it, which takes a pathological environment rather than a slow one (a saturated temp directory can make a single mkdtemp cost seconds). In that case the environment is the bug and raising this number hides it โ which is why the gate now reports a blown budget as `dry-run-timeout` naming this value, rather than as a mutation score. The 30 is reasoned from this stack's shape โ jest, a React Native transform on every file, a cold Babel cache โ not measured against a reference Expo project, so treat it as a ceiling chosen to be safely loose rather than as a calibration.",
|
|
17
|
+
"dryRunTimeoutMinutes": 30,
|
|
13
18
|
"mutate": [
|
|
14
19
|
"src/**/*.ts",
|
|
15
20
|
"src/**/*.tsx",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"๐ Quality Checks / ๐งช Run E2E Tests"
|
|
42
42
|
],
|
|
43
43
|
"ruleset_required": false,
|
|
44
|
-
"reason": "
|
|
44
|
+
"reason": "Inert since the `test_e2e` job was deleted from Lisa's quality callee โ the browser suite lives in `playwright-e2e.yml`, governed by the `e2e-browser` gate, and no job posts this context any more. The token stays in `skip_jobs` and stays declared here because a token with no declaration is reported as `undeclared_skip_token`. If your ruleset still requires \"๐ Quality Checks / ๐งช Run E2E Tests\", DE-REQUIRE IT: a required context that never reports is pending forever and blocks every open pull request."
|
|
45
45
|
},
|
|
46
46
|
"playwright_e2e": {
|
|
47
47
|
"suppressed_contexts": [
|
package/package.json
CHANGED
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
"zod-validation-error": "^4.0.0"
|
|
142
142
|
},
|
|
143
143
|
"name": "@codyswann/lisa",
|
|
144
|
-
"version": "3.54.
|
|
144
|
+
"version": "3.54.2",
|
|
145
145
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
146
146
|
"main": "dist/index.js",
|
|
147
147
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "3.54.
|
|
3
|
+
"version": "3.54.2",
|
|
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.54.
|
|
3
|
+
"version": "3.54.2",
|
|
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.54.
|
|
3
|
+
"version": "3.54.2",
|
|
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.54.
|
|
3
|
+
"version": "3.54.2",
|
|
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.54.
|
|
3
|
+
"version": "3.54.2",
|
|
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"
|
|
@@ -556,7 +556,10 @@ fi
|
|
|
556
556
|
# The test:mutation script self-skips instantly when the gate is disabled
|
|
557
557
|
# (mutation.gate.json: "enabled": false), so this adds no cost to projects that
|
|
558
558
|
# have not opted in. When enabled, it runs Stryker diff-only on changed files
|
|
559
|
-
# and fails the push when
|
|
559
|
+
# and fails the push when Stryker does. Which failure that was - a dry run out
|
|
560
|
+
# of wall clock, a score under thresholds.break, or neither - is named by the
|
|
561
|
+
# gate itself on the 'mutation-gate:' line it prints; a score is only ever
|
|
562
|
+
# claimed where one was actually computed.
|
|
560
563
|
if lisa_gate_covers test-meaningfulness; then
|
|
561
564
|
echo "โน๏ธ Covered by the test-meaningfulness gate; the built-in run stands down."
|
|
562
565
|
elif jq -e '.scripts["test:mutation"]' package.json >/dev/null 2>&1; then
|