@codyswann/lisa 4.4.15 → 4.4.17
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 +2 -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 +18 -14
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +2 -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-improve-test-coverage/SKILL.md +4 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-tests/SKILL.md +4 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-nightly-lower-code-complexity/SKILL.md +10 -2
- package/plugins/lisa/hooks/threshold-ratchet-compare.mjs +7 -0
- package/plugins/lisa/hooks/threshold-ratchet-families.mjs +53 -0
- package/plugins/lisa/rules/eager/falsifiable-checks.md +16 -1
- package/plugins/lisa/rules/reference/falsifiable-checks.md +74 -1
- package/plugins/lisa/skills/lisa-improve-test-coverage/SKILL.md +4 -1
- package/plugins/lisa/skills/lisa-improve-tests/SKILL.md +4 -1
- package/plugins/lisa/skills/lisa-nightly-lower-code-complexity/SKILL.md +10 -2
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-improve-test-coverage/SKILL.md +4 -1
- package/plugins/lisa-agy/skills/lisa-improve-tests/SKILL.md +4 -1
- package/plugins/lisa-agy/skills/lisa-nightly-lower-code-complexity/SKILL.md +10 -2
- 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/hooks/threshold-ratchet-compare.mjs +7 -0
- package/plugins/lisa-copilot/hooks/threshold-ratchet-families.mjs +53 -0
- package/plugins/lisa-copilot/rules/eager/falsifiable-checks.md +16 -1
- package/plugins/lisa-copilot/rules/reference/falsifiable-checks.md +74 -1
- package/plugins/lisa-copilot/skills/lisa-improve-test-coverage/SKILL.md +4 -1
- package/plugins/lisa-copilot/skills/lisa-improve-tests/SKILL.md +4 -1
- package/plugins/lisa-copilot/skills/lisa-nightly-lower-code-complexity/SKILL.md +10 -2
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/threshold-ratchet-compare.mjs +7 -0
- package/plugins/lisa-cursor/hooks/threshold-ratchet-families.mjs +53 -0
- package/plugins/lisa-cursor/rules/falsifiable-checks-reference.mdc +74 -1
- package/plugins/lisa-cursor/rules/falsifiable-checks.mdc +16 -1
- package/plugins/lisa-cursor/skills/lisa-improve-test-coverage/SKILL.md +4 -1
- package/plugins/lisa-cursor/skills/lisa-improve-tests/SKILL.md +4 -1
- package/plugins/lisa-cursor/skills/lisa-nightly-lower-code-complexity/SKILL.md +10 -2
- 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/.codex-plugin/skills/improve-code-complexity/SKILL.md +4 -1
- package/plugins/lisa-rails/.codex-plugin/skills/improve-test-coverage/SKILL.md +4 -1
- package/plugins/lisa-rails/.codex-plugin/skills/ops-verify-telemetry/SKILL.md +30 -1
- package/plugins/lisa-rails/skills/improve-code-complexity/SKILL.md +4 -1
- package/plugins/lisa-rails/skills/improve-test-coverage/SKILL.md +4 -1
- package/plugins/lisa-rails/skills/ops-verify-telemetry/SKILL.md +30 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-agy/skills/improve-code-complexity/SKILL.md +4 -1
- package/plugins/lisa-rails-agy/skills/improve-test-coverage/SKILL.md +4 -1
- package/plugins/lisa-rails-agy/skills/ops-verify-telemetry/SKILL.md +30 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/skills/improve-code-complexity/SKILL.md +4 -1
- package/plugins/lisa-rails-copilot/skills/improve-test-coverage/SKILL.md +4 -1
- package/plugins/lisa-rails-copilot/skills/ops-verify-telemetry/SKILL.md +30 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/skills/improve-code-complexity/SKILL.md +4 -1
- package/plugins/lisa-rails-cursor/skills/improve-test-coverage/SKILL.md +4 -1
- package/plugins/lisa-rails-cursor/skills/ops-verify-telemetry/SKILL.md +30 -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/hooks/threshold-ratchet-compare.mjs +7 -0
- package/plugins/src/base/hooks/threshold-ratchet-families.mjs +53 -0
- package/plugins/src/base/rules/eager/falsifiable-checks.md +16 -1
- package/plugins/src/base/rules/reference/falsifiable-checks.md +74 -1
- package/plugins/src/base/skills/lisa-improve-test-coverage/SKILL.md +4 -1
- package/plugins/src/base/skills/lisa-improve-tests/SKILL.md +4 -1
- package/plugins/src/base/skills/lisa-nightly-lower-code-complexity/SKILL.md +10 -2
- package/plugins/src/rails/skills/improve-code-complexity/SKILL.md +4 -1
- package/plugins/src/rails/skills/improve-test-coverage/SKILL.md +4 -1
- package/plugins/src/rails/skills/ops-verify-telemetry/SKILL.md +30 -1
- package/rails/copy-overwrite/scripts/threshold-ratchet-compare.mjs +7 -0
- package/rails/copy-overwrite/scripts/threshold-ratchet-families.mjs +53 -0
- package/scripts/check-pipeline-status-reads.mjs +684 -0
- package/typescript/copy-overwrite/scripts/threshold-ratchet-compare.mjs +7 -0
- package/typescript/copy-overwrite/scripts/threshold-ratchet-families.mjs +53 -0
|
@@ -80,8 +80,61 @@ export const FAMILIES = [
|
|
|
80
80
|
match: /(^|\/)\.lisa\.config\.json$/,
|
|
81
81
|
kind: "allow-list",
|
|
82
82
|
},
|
|
83
|
+
{
|
|
84
|
+
id: "lighthouse",
|
|
85
|
+
match: /(^|\/)lighthouserc-config\.json$/,
|
|
86
|
+
kind: "lighthouse",
|
|
87
|
+
},
|
|
83
88
|
];
|
|
84
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Which way each Lighthouse assertion key ratchets.
|
|
92
|
+
*
|
|
93
|
+
* Lighthouse mixes floors and ceilings in one file, so assigning one direction
|
|
94
|
+
* to the whole family would silently approve half of the possible weakenings.
|
|
95
|
+
* Unknown keys stay unwatched until their direction is explicit here.
|
|
96
|
+
* @type {Readonly<Record<string, "min"|"max">>}
|
|
97
|
+
*/
|
|
98
|
+
export const LIGHTHOUSE_ASSERTION_DIRECTIONS = {
|
|
99
|
+
minScore: "min",
|
|
100
|
+
maxNumericValue: "max",
|
|
101
|
+
maxLength: "max",
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Extract numeric Lighthouse assertions with a direction chosen per key.
|
|
106
|
+
*
|
|
107
|
+
* A malformed array is deliberately ignored instead of being walked as an
|
|
108
|
+
* object whose numeric indices look like audit names.
|
|
109
|
+
* @param {unknown} conf Parsed lighthouserc-config.json
|
|
110
|
+
* @returns {Map<string, { value: number, direction: "min"|"max" }>} Dotted
|
|
111
|
+
* `assertion.key` path to numeric constraint
|
|
112
|
+
*/
|
|
113
|
+
export function extractLighthouseAssertions(conf) {
|
|
114
|
+
const out = new Map();
|
|
115
|
+
const assertions =
|
|
116
|
+
conf && typeof conf === "object" && !Array.isArray(conf)
|
|
117
|
+
? /** @type {Record<string, unknown>} */ (conf).assertions
|
|
118
|
+
: undefined;
|
|
119
|
+
if (
|
|
120
|
+
!assertions ||
|
|
121
|
+
typeof assertions !== "object" ||
|
|
122
|
+
Array.isArray(assertions)
|
|
123
|
+
) {
|
|
124
|
+
return out;
|
|
125
|
+
}
|
|
126
|
+
for (const [audit, spec] of Object.entries(assertions)) {
|
|
127
|
+
if (!spec || typeof spec !== "object" || Array.isArray(spec)) continue;
|
|
128
|
+
for (const [key, value] of Object.entries(spec)) {
|
|
129
|
+
const direction = LIGHTHOUSE_ASSERTION_DIRECTIONS[key];
|
|
130
|
+
if (direction && typeof value === "number" && Number.isFinite(value)) {
|
|
131
|
+
out.set(`${audit}.${key}`, { value, direction });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return out;
|
|
136
|
+
}
|
|
137
|
+
|
|
85
138
|
/**
|
|
86
139
|
* Find the family a repo-relative path belongs to.
|
|
87
140
|
* @param {string} relPath Repo-relative path (forward slashes)
|