@codyswann/lisa 3.55.0 → 3.58.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-overwrite/scripts/lib/gate-failure-diagnosis.mjs +92 -5
- package/all/copy-overwrite/scripts/lisa-gates.mjs +121 -0
- package/all/copy-overwrite/scripts/lisa-reconcile-policy.mjs +4 -4
- package/all/copy-overwrite/scripts/lisa-run-gates.mjs +12 -2
- package/dist/cli/ui-ci-quality-jobs-compute.js +2 -2
- package/dist/cli/ui-ci-quality-jobs-compute.js.map +1 -1
- package/dist/cli/ui-github-repo-expected.js +1 -1
- package/dist/cli/ui-github-repo-expected.js.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +11 -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 +15 -12
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/expo/copy-overwrite/scripts/bdd/baseline.mjs +36 -45
- package/expo/copy-overwrite/scripts/bdd/render.mjs +1 -1
- package/expo/copy-overwrite/scripts/check-bdd-coverage.mjs +0 -6
- 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-setup-sonar/SKILL.md +1 -1
- package/plugins/lisa/rules/reference/bdd-e2e-coverage.md +3 -3
- package/plugins/lisa/skills/lisa-setup-sonar/SKILL.md +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-setup-sonar/SKILL.md +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-copilot/rules/reference/bdd-e2e-coverage.md +3 -3
- package/plugins/lisa-copilot/skills/lisa-setup-sonar/SKILL.md +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/rules/bdd-e2e-coverage-reference.mdc +3 -3
- package/plugins/lisa-cursor/skills/lisa-setup-sonar/SKILL.md +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/plugins/src/base/rules/reference/bdd-e2e-coverage.md +3 -3
- package/plugins/src/base/skills/lisa-setup-sonar/SKILL.md +1 -1
- package/typescript/copy-overwrite/scripts/check-skipped-required-checks.mjs +13 -6
- package/typescript/create-only/.github/required-checks.json +1 -1
- package/ui/index.html +2 -2
|
@@ -145,9 +145,9 @@ forces it upward, and lowering it needs no ceremony.
|
|
|
145
145
|
|
|
146
146
|
What stops coverage sliding backwards is checked directly, per obligation, against the base
|
|
147
147
|
revision — **an obligation that was mapped may not stop being mapped, and new behavior arrives
|
|
148
|
-
mapped or waived**. Giving coverage back is legitimate but takes
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
mapped or waived**. Giving coverage back is legitimate but takes a recorded route: a complete `retirements`
|
|
149
|
+
record (for a behavior the product no longer has) or a `platformWaivers` entry (for a runner
|
|
150
|
+
that cannot decide it). Gaps that predate the change are burndown, never a
|
|
151
151
|
gate failure — which is what lets a brownfield project adopt `enforced` without first backfilling
|
|
152
152
|
its whole history.
|
|
153
153
|
|
|
@@ -12,7 +12,7 @@ unattended factories run. It replaces Lisa's former hand-rolled SonarCloud REST
|
|
|
12
12
|
access with the vendor's official token-authed MCP, which is Lisa's single Sonar
|
|
13
13
|
substrate on both developer machines and headless cloud routines.
|
|
14
14
|
|
|
15
|
-
This does **not** touch the CI
|
|
15
|
+
This does **not** touch the CI static-security job in `quality.yml` or its
|
|
16
16
|
`SONAR_TOKEN` secret — that enforcement gate is separate and stays as-is.
|
|
17
17
|
|
|
18
18
|
## Supported agents
|
|
@@ -170,12 +170,19 @@
|
|
|
170
170
|
* ## Exact string equality, everywhere
|
|
171
171
|
*
|
|
172
172
|
* Every comparison here is `===`. Repos routinely carry confusable pairs — an
|
|
173
|
-
* external app's
|
|
174
|
-
*
|
|
175
|
-
* `🐢 Slow Lint Rules`, whose skip tokens `lint`
|
|
176
|
-
* prefix pair. A `includes` / `startsWith` /
|
|
177
|
-
* false positive on a legitimate skip, and the
|
|
178
|
-
* to delete the guard.
|
|
173
|
+
* external app's REQUIRED `GitGuardian Security Checks` beside a skippable,
|
|
174
|
+
* not-required in-workflow `🔐 Credential Leakage` that proves the same
|
|
175
|
+
* property; `🧹 Lint` beside `🐢 Slow Lint Rules`, whose skip tokens `lint`
|
|
176
|
+
* and `lint_slow` are a strict prefix pair. A `includes` / `startsWith` /
|
|
177
|
+
* case-folded match would report a false positive on a legitimate skip, and the
|
|
178
|
+
* natural fix for a false alarm is to delete the guard.
|
|
179
|
+
*
|
|
180
|
+
* The example this used to give — `SonarCloud Code Analysis` beside
|
|
181
|
+
* `🔍 SonarCloud SAST` — stopped being confusable when that job was renamed
|
|
182
|
+
* to `🔍 Static Security Analysis`. Two strings colliding because both named
|
|
183
|
+
* the same vendor is the failure mode the naming ruling removes; two strings
|
|
184
|
+
* colliding because one is a prefix of the other is not, which is why the
|
|
185
|
+
* remaining examples are the ones kept.
|
|
179
186
|
*
|
|
180
187
|
* Lisa's `quality.yml` used to carry the worst pair of all — a NOT-required
|
|
181
188
|
* `🧪 Run Tests` beside the required `🧪 Run Unit Tests` — and it merged red on
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"Why it matters: GitHub counts a SKIPPED required status check as SATISFIED. A job named in `skip_jobs` still reports green against its required context having run zero steps, so the merge gate can never be red and therefore can never block anything.",
|
|
6
6
|
"⚠️ `required_contexts` SHIPS EMPTY AND UNSTAMPED ON PURPOSE. Lisa cannot know what YOUR ruleset requires, and an earlier version of this seed shipped a guess that was measured WRONG (#2476): it claimed `🔗 Work-Item Traceability` was required when no ruleset required it, and omitted six contexts that were. Until `ruleset.baseline_fetched_at` carries the date you transcribed the real list, the guard reports NOT CHECKED rather than answering from fiction.",
|
|
7
7
|
"To arm it: gh api repos/OWNER/NAME/rulesets --jq '.[] | \"\\(.id) \\(.name)\"' to find the ids, then gh api repos/OWNER/NAME/rulesets/ID --jq '.rules[] | select(.type==\"required_status_checks\") | .parameters.required_status_checks[].context' for the contexts. Paste them into `required_contexts` BYTE FOR BYTE (emoji and the ' / ' separator included), fill in `ruleset.repo` / `ruleset.ids`, and set `baseline_fetched_at` to today.",
|
|
8
|
-
"The guard compares with exact string equality on purpose: a repo routinely carries confusable pairs (an external app's required `
|
|
8
|
+
"The guard compares with exact string equality on purpose: a repo routinely carries confusable pairs (an external app's required `GitGuardian Security Checks` beside a skippable, not-required `🔐 Credential Leakage` proving the same property; `🧹 Lint` beside `🐢 Slow Lint Rules`, whose skip tokens `lint` and `lint_slow` are a strict prefix pair), and a fuzzy match would raise a false alarm whose obvious fix is to delete the guard.",
|
|
9
9
|
"The worst confusable pair Lisa ever shipped was a NOT-required `🧪 Run Tests` beside the required `🧪 Run Unit Tests` — it merged red on two PRs because 'Run Tests failed' reads like the required test gate failing. It was DELETED in #2485, not renamed, because it only re-ran what the two coverage-carrying required contexts already run. If you find a near-duplicate advisory check in your own roster, prefer deleting it over trusting a reader to tell three similar names apart.",
|
|
10
10
|
"A transcription expires after 90 days, because a ruleset can be edited with no signal in this repository. The shipped `.github/workflows/required-checks-drift.yml` runs `--remote` weekly to catch that; `--remote` reads the ruleset live and so answers even when the cache is untrusted.",
|
|
11
11
|
"Lisa's quality.yml runs the offline arm on every pull request. This seed ships `\"enforcement\": \"warn\"`, which downgrades findings AND the NOT-CHECKED refusal to reports so a fresh install does not go red on arrival. Delete the key once you have transcribed the list — then it blocks.",
|
package/ui/index.html
CHANGED
|
@@ -9790,7 +9790,7 @@
|
|
|
9790
9790
|
},
|
|
9791
9791
|
],
|
|
9792
9792
|
[
|
|
9793
|
-
{ t: "mono", v: "🔍
|
|
9793
|
+
{ t: "mono", v: "🔍 Static Security Analysis" },
|
|
9794
9794
|
{ t: "text", v: "Static analysis via SonarCloud" },
|
|
9795
9795
|
{
|
|
9796
9796
|
t: "status",
|
|
@@ -10178,7 +10178,7 @@
|
|
|
10178
10178
|
],
|
|
10179
10179
|
[
|
|
10180
10180
|
{ t: "mono", v: "SONAR_TOKEN" },
|
|
10181
|
-
{ t: "text", v: "
|
|
10181
|
+
{ t: "text", v: "Static Security Analysis" },
|
|
10182
10182
|
{ t: "badge", v: "set", cls: "on" },
|
|
10183
10183
|
],
|
|
10184
10184
|
[
|